mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
Add support for generating project files for use with Dev-C++, contributed
by Florian Gaab. [originally from svn r6201]
This commit is contained in:
parent
575fa173d8
commit
c1c27e9fb8
3
README
3
README
@ -43,6 +43,9 @@ For building on Windows:
|
|||||||
Makefile.lcc' while in the `windows' subdirectory. (You will
|
Makefile.lcc' while in the `windows' subdirectory. (You will
|
||||||
probably need to specify COMPAT=-DNO_MULTIMON.)
|
probably need to specify COMPAT=-DNO_MULTIMON.)
|
||||||
|
|
||||||
|
- Inside the windows/DEVCPP subdirectory are Dev-C++ project
|
||||||
|
files for doing GUI-based builds of the various PuTTY utilities.
|
||||||
|
|
||||||
For building on Unix:
|
For building on Unix:
|
||||||
|
|
||||||
- unix/configure is for Unix and GTK. If you don't have GTK, you
|
- unix/configure is for Unix and GTK. If you don't have GTK, you
|
||||||
|
1
Recipe
1
Recipe
@ -21,6 +21,7 @@
|
|||||||
!makefile ac unix/Makefile.in
|
!makefile ac unix/Makefile.in
|
||||||
!makefile mpw mac/Makefile.mpw
|
!makefile mpw mac/Makefile.mpw
|
||||||
!makefile osx macosx/Makefile
|
!makefile osx macosx/Makefile
|
||||||
|
!makefile devcppproj windows/DEVCPP
|
||||||
# Source directories.
|
# Source directories.
|
||||||
!srcdir charset/
|
!srcdir charset/
|
||||||
!srcdir windows/
|
!srcdir windows/
|
||||||
|
197
mkfiles.pl
197
mkfiles.pl
@ -212,7 +212,8 @@ sub mfval($) {
|
|||||||
# Returns true if the argument is a known makefile type. Otherwise,
|
# Returns true if the argument is a known makefile type. Otherwise,
|
||||||
# prints a warning and returns false;
|
# prints a warning and returns false;
|
||||||
if (grep { $type eq $_ }
|
if (grep { $type eq $_ }
|
||||||
("vc","vcproj","cygwin","borland","lcc","gtk","ac","mpw","osx")) {
|
("vc","vcproj","cygwin","borland","lcc","devcppproj","gtk","ac","mpw",
|
||||||
|
"osx",)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
warn "$.:unknown makefile type '$type'\n";
|
warn "$.:unknown makefile type '$type'\n";
|
||||||
@ -646,7 +647,7 @@ if (defined $makefiles{'vcproj'}) {
|
|||||||
# Get names of all Windows projects (GUI and console)
|
# Get names of all Windows projects (GUI and console)
|
||||||
my @prognames = &prognames("G:C");
|
my @prognames = &prognames("G:C");
|
||||||
foreach $progname (@prognames) {
|
foreach $progname (@prognames) {
|
||||||
create_project(\%all_object_deps, $progname);
|
create_vc_project(\%all_object_deps, $progname);
|
||||||
}
|
}
|
||||||
# Create the workspace file
|
# Create the workspace file
|
||||||
open OUT, ">$project_name.dsw"; binmode OUT; select OUT;
|
open OUT, ">$project_name.dsw"; binmode OUT; select OUT;
|
||||||
@ -688,7 +689,7 @@ if (defined $makefiles{'vcproj'}) {
|
|||||||
select STDOUT; close OUT;
|
select STDOUT; close OUT;
|
||||||
chdir $orig_dir;
|
chdir $orig_dir;
|
||||||
|
|
||||||
sub create_project {
|
sub create_vc_project {
|
||||||
my ($all_object_deps, $progname) = @_;
|
my ($all_object_deps, $progname) = @_;
|
||||||
# Construct program's dependency info
|
# Construct program's dependency info
|
||||||
%seen_objects = ();
|
%seen_objects = ();
|
||||||
@ -1277,3 +1278,193 @@ if (defined $makefiles{'osx'}) {
|
|||||||
"\trm -rf *.app\n";
|
"\trm -rf *.app\n";
|
||||||
select STDOUT; close OUT;
|
select STDOUT; close OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (defined $makefiles{'devcppproj'}) {
|
||||||
|
$dirpfx = &dirpfx($makefiles{'devcppproj'}, "\\");
|
||||||
|
$orig_dir = cwd;
|
||||||
|
|
||||||
|
##-- Dev-C++ 5 projects
|
||||||
|
#
|
||||||
|
# Note: All files created in this section are written in binary
|
||||||
|
# mode to prevent any posibility of misinterpreted line endings.
|
||||||
|
# I don't know if Dev-C++ is as touchy as MSVC with LF-only line
|
||||||
|
# endings. But however, CRLF line endings are the common way on
|
||||||
|
# Win32 machines where Dev-C++ is running.
|
||||||
|
# Hence, in order for mkfiles.pl to generate CRLF project files
|
||||||
|
# even when run from Unix, I make sure all files are binary and
|
||||||
|
# explicitly write the CRLFs.
|
||||||
|
#
|
||||||
|
# Create directories if necessary
|
||||||
|
mkdir $makefiles{'devcppproj'}
|
||||||
|
if(! -d $makefiles{'devcppproj'});
|
||||||
|
chdir $makefiles{'devcppproj'};
|
||||||
|
@deps = &deps("X.obj", "X.res", $dirpfx, "\\", "devcppproj");
|
||||||
|
%all_object_deps = map {$_->{obj} => $_->{deps}} @deps;
|
||||||
|
# Make dir names FAT/NTFS compatible
|
||||||
|
my @srcdirs = @srcdirs;
|
||||||
|
for ($i=0; $i<@srcdirs; $i++) {
|
||||||
|
$srcdirs[$i] =~ s/\//\\/g;
|
||||||
|
$srcdirs[$i] =~ s/\\$//;
|
||||||
|
}
|
||||||
|
# Create the project files
|
||||||
|
# Get names of all Windows projects (GUI and console)
|
||||||
|
my @prognames = &prognames("G:C");
|
||||||
|
foreach $progname (@prognames) {
|
||||||
|
create_devcpp_project(\%all_object_deps, $progname);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub create_devcpp_project {
|
||||||
|
my ($all_object_deps, $progname) = @_;
|
||||||
|
# Construct program's dependency info (Taken from 'vcproj', seems to work right here, too.)
|
||||||
|
%seen_objects = ();
|
||||||
|
%lib_files = ();
|
||||||
|
%source_files = ();
|
||||||
|
%header_files = ();
|
||||||
|
%resource_files = ();
|
||||||
|
@object_files = split " ", &objects($progname, "X.obj", "X.res", "X.lib");
|
||||||
|
foreach $object_file (@object_files) {
|
||||||
|
next if defined $seen_objects{$object_file};
|
||||||
|
$seen_objects{$object_file} = 1;
|
||||||
|
if($object_file =~ /\.lib$/io) {
|
||||||
|
$lib_files{$object_file} = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$object_deps = $all_object_deps{$object_file};
|
||||||
|
foreach $object_dep (@$object_deps) {
|
||||||
|
if($object_dep =~ /\.c$/io) {
|
||||||
|
$source_files{$object_dep} = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if($object_dep =~ /\.h$/io) {
|
||||||
|
$header_files{$object_dep} = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if($object_dep =~ /\.(rc|ico)$/io) {
|
||||||
|
$resource_files{$object_dep} = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$libs = join " ", sort keys %lib_files;
|
||||||
|
@source_files = sort keys %source_files;
|
||||||
|
@header_files = sort keys %header_files;
|
||||||
|
@resources = sort keys %resource_files;
|
||||||
|
($windows_project, $type) = split ",", $progname;
|
||||||
|
mkdir $windows_project
|
||||||
|
if(! -d $windows_project);
|
||||||
|
chdir $windows_project;
|
||||||
|
|
||||||
|
$subsys = ($type eq "G") ? "0" : "1"; # 0 = Win32 GUI, 1 = Win32 Console
|
||||||
|
open OUT, ">$windows_project.dev"; binmode OUT; select OUT;
|
||||||
|
print
|
||||||
|
"# DEV-C++ 5 Project File - $windows_project.dev\r\n".
|
||||||
|
"# ** DO NOT EDIT **\r\n".
|
||||||
|
"\r\n".
|
||||||
|
# No difference between DEBUG and RELEASE here as in 'vcproj', because
|
||||||
|
# Dev-C++ does not support mutiple compilation profiles in one single project.
|
||||||
|
# (At least I can say this for Dev-C++ 5 Beta)
|
||||||
|
"[Project]\r\n".
|
||||||
|
"FileName=$windows_project.dev\r\n".
|
||||||
|
"Name=$windows_project\r\n".
|
||||||
|
"Ver=1\r\n".
|
||||||
|
"IsCpp=1\r\n".
|
||||||
|
"Type=$subsys\r\n".
|
||||||
|
# Multimon is disabled here, as Dev-C++ (Version 5 Beta) does not have multimon.h
|
||||||
|
"Compiler=-W -D__GNUWIN32__ -DWIN32 -DNDEBUG -D_WINDOWS -DNO_MULTIMON -D_MBCS_\@\@_\r\n".
|
||||||
|
"CppCompiler=-W -D__GNUWIN32__ -DWIN32 -DNDEBUG -D_WINDOWS -DNO_MULTIMON -D_MBCS_\@\@_\r\n".
|
||||||
|
"Includes=" . (join ";", map {"..\\..\\$dirpfx$_"} @srcdirs) . "\r\n".
|
||||||
|
"Linker=-ladvapi32 -lcomctl32 -lcomdlg32 -lgdi32 -limm32 -lshell32 -luser32 -lwinmm -lwinspool_\@\@_\r\n".
|
||||||
|
"Libs=\r\n".
|
||||||
|
"UnitCount=" . (@source_files + @header_files + @resources) . "\r\n".
|
||||||
|
"Folders=\"Header Files\",\"Resource Files\",\"Source Files\"\r\n".
|
||||||
|
"ObjFiles=\r\n".
|
||||||
|
"PrivateResource=${windows_project}_private.rc\r\n".
|
||||||
|
"ResourceIncludes=..\\..\\..\\WINDOWS\r\n".
|
||||||
|
"MakeIncludes=\r\n".
|
||||||
|
"Icon=\r\n". # It's ok to leave this blank.
|
||||||
|
"ExeOutput=\r\n".
|
||||||
|
"ObjectOutput=\r\n".
|
||||||
|
"OverrideOutput=0\r\n".
|
||||||
|
"OverrideOutputName=$windows_project.exe\r\n".
|
||||||
|
"HostApplication=\r\n".
|
||||||
|
"CommandLine=\r\n".
|
||||||
|
"UseCustomMakefile=0\r\n".
|
||||||
|
"CustomMakefile=\r\n".
|
||||||
|
"IncludeVersionInfo=0\r\n".
|
||||||
|
"SupportXPThemes=0\r\n".
|
||||||
|
"CompilerSet=0\r\n".
|
||||||
|
"CompilerSettings=0000000000000000000000\r\n".
|
||||||
|
"\r\n";
|
||||||
|
$unit_count = 1;
|
||||||
|
foreach $source_file (@source_files) {
|
||||||
|
print
|
||||||
|
"[Unit$unit_count]\r\n".
|
||||||
|
"FileName=..\\..\\$source_file\r\n".
|
||||||
|
"Folder=Source Files\r\n".
|
||||||
|
"Compile=1\r\n".
|
||||||
|
"CompileCpp=0\r\n".
|
||||||
|
"Link=1\r\n".
|
||||||
|
"Priority=1000\r\n".
|
||||||
|
"OverrideBuildCmd=0\r\n".
|
||||||
|
"BuildCmd=\r\n".
|
||||||
|
"\r\n";
|
||||||
|
$unit_count++;
|
||||||
|
}
|
||||||
|
foreach $header_file (@header_files) {
|
||||||
|
print
|
||||||
|
"[Unit$unit_count]\r\n".
|
||||||
|
"FileName=..\\..\\$header_file\r\n".
|
||||||
|
"Folder=Header Files\r\n".
|
||||||
|
"Compile=1\r\n".
|
||||||
|
"CompileCpp=1\r\n". # Dev-C++ want's to compile all header files with both compilers C and C++. It does not hurt.
|
||||||
|
"Link=1\r\n".
|
||||||
|
"Priority=1000\r\n".
|
||||||
|
"OverrideBuildCmd=0\r\n".
|
||||||
|
"BuildCmd=\r\n".
|
||||||
|
"\r\n";
|
||||||
|
$unit_count++;
|
||||||
|
}
|
||||||
|
foreach $resource_file (@resources) {
|
||||||
|
if ($resource_file =~ /.*\.(ico|cur|bmp|dlg|rc2|rct|bin|rgs|gif|jpg|jpeg|jpe)/io) { # Default filter as in 'vcproj'
|
||||||
|
$Compile = "0"; # Don't compile images and other binary resource files
|
||||||
|
$CompileCpp = "0";
|
||||||
|
} else {
|
||||||
|
$Compile = "1";
|
||||||
|
$CompileCpp = "1"; # Dev-C++ want's to compile all .rc files with both compilers C and C++. It does not hurt.
|
||||||
|
}
|
||||||
|
print
|
||||||
|
"[Unit$unit_count]\r\n".
|
||||||
|
"FileName=..\\..\\$resource_file\r\n".
|
||||||
|
"Folder=Resource Files\r\n".
|
||||||
|
"Compile=$Compile\r\n".
|
||||||
|
"CompileCpp=$CompileCpp\r\n".
|
||||||
|
"Link=0\r\n".
|
||||||
|
"Priority=1000\r\n".
|
||||||
|
"OverrideBuildCmd=0\r\n".
|
||||||
|
"BuildCmd=\r\n".
|
||||||
|
"\r\n";
|
||||||
|
$unit_count++;
|
||||||
|
}
|
||||||
|
#Note: By default, [VersionInfo] is not used.
|
||||||
|
print
|
||||||
|
"[VersionInfo]\r\n".
|
||||||
|
"Major=0\r\n".
|
||||||
|
"Minor=0\r\n".
|
||||||
|
"Release=1\r\n".
|
||||||
|
"Build=1\r\n".
|
||||||
|
"LanguageID=1033\r\n".
|
||||||
|
"CharsetID=1252\r\n".
|
||||||
|
"CompanyName=\r\n".
|
||||||
|
"FileVersion=0.1\r\n".
|
||||||
|
"FileDescription=\r\n".
|
||||||
|
"InternalName=\r\n".
|
||||||
|
"LegalCopyright=\r\n".
|
||||||
|
"LegalTrademarks=\r\n".
|
||||||
|
"OriginalFilename=$windows_project.exe\r\n".
|
||||||
|
"ProductName=$windows_project\r\n".
|
||||||
|
"ProductVersion=0.1\r\n".
|
||||||
|
"AutoIncBuildNr=0\r\n";
|
||||||
|
select STDOUT; close OUT;
|
||||||
|
chdir "..";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user