projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
At last, a fix for `large-clipboard-crash'.
[u/mdw/putty]
/
mkfiles.pl
diff --git
a/mkfiles.pl
b/mkfiles.pl
index
ff468b5
..
76e8e8a
100755
(executable)
--- a/
mkfiles.pl
+++ b/
mkfiles.pl
@@
-12,6
+12,8
@@
# are hardwired, and also the libraries are fixed. This is
# mainly because I was too scared to go anywhere near it.
# - sbcsgen.pl is still run at startup.
# are hardwired, and also the libraries are fixed. This is
# mainly because I was too scared to go anywhere near it.
# - sbcsgen.pl is still run at startup.
+#
+# FIXME: no attempt made to handle !forceobj in the project files.
use FileHandle;
use Cwd;
use FileHandle;
use Cwd;
@@
-52,6
+54,7
@@
while (<IN>) {
if ($_[0] eq "!srcdir") { push @srcdirs, $_[1]; next; }
if ($_[0] eq "!makefile" and &mfval($_[1])) { $makefiles{$_[1]}=$_[2]; next;}
if ($_[0] eq "!specialobj" and &mfval($_[1])) { $specialobj{$_[1]}->{$_[2]} = 1; next;}
if ($_[0] eq "!srcdir") { push @srcdirs, $_[1]; next; }
if ($_[0] eq "!makefile" and &mfval($_[1])) { $makefiles{$_[1]}=$_[2]; next;}
if ($_[0] eq "!specialobj" and &mfval($_[1])) { $specialobj{$_[1]}->{$_[2]} = 1; next;}
+ if ($_[0] eq "!forceobj") { $forceobj{$_[1]} = 1; next; }
if ($_[0] eq "!begin") {
if (&mfval($_[1])) {
$sect = $_[2] ? $_[2] : "end";
if ($_[0] eq "!begin") {
if (&mfval($_[1])) {
$sect = $_[2] ? $_[2] : "end";
@@
-325,7
+328,7
@@
sub deps {
s/\//$dirsep/g;
$_ = $prefix . $_;
} @deps;
s/\//$dirsep/g;
$_ = $prefix . $_;
} @deps;
- push @ret, {obj => $x, deps => [@deps]};
+ push @ret, {obj => $x,
obj_orig => $i,
deps => [@deps]};
}
return @ret;
}
}
return @ret;
}
@@
-376,7
+379,7
@@
if (defined $makefiles{'cygwin'}) {
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
- ($_ = $help) =~ s/
=\/D/=
-D/gs;
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-D/gs;
print $_;
print
"\n".
print $_;
print
"\n".
@@
-416,8
+419,12
@@
if (defined $makefiles{'cygwin'}) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", "X.res.o", $dirpfx, "/", "cygwin")) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", "X.res.o", $dirpfx, "/", "cygwin")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ if ($forceobj{$d->{obj_orig}}) {
+ printf ("%s: FORCE\n", $d->{obj});
+ } else {
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @{$d->{deps}})), "\n";
+ }
if ($d->{obj} =~ /\.res\.o$/) {
print "\t\$(RC) \$(RCFL) \$(RCFLAGS) ".$d->{deps}->[0]." ".$d->{obj}."\n\n";
} else {
if ($d->{obj} =~ /\.res\.o$/) {
print "\t\$(RC) \$(RCFL) \$(RCFLAGS) ".$d->{deps}->[0]." ".$d->{obj}."\n\n";
} else {
@@
-428,7
+435,8
@@
if (defined $makefiles{'cygwin'}) {
print $makefile_extra{'cygwin'}->{'end'};
print "\nclean:\n".
"\trm -f *.o *.exe *.res.o *.map\n".
print $makefile_extra{'cygwin'}->{'end'};
print "\nclean:\n".
"\trm -f *.o *.exe *.res.o *.map\n".
- "\n";
+ "\n".
+ "FORCE:\n";
select STDOUT; close OUT;
}
select STDOUT; close OUT;
}
@@
-455,7
+463,7
@@
if (defined $makefiles{'borland'}) {
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# bcc32 command line option is -D not /D
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# bcc32 command line option is -D not /D
- ($_ = $help) =~ s/
=\/D/=
-D/gs;
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-D/gs;
print $_;
print
"\n".
print $_;
print
"\n".
@@
-465,6
+473,8
@@
if (defined $makefiles{'borland'}) {
"\n".
"# C compilation flags\n".
"CFLAGS = -D_WINDOWS -DWINVER=0x0401\n".
"\n".
"# C compilation flags\n".
"CFLAGS = -D_WINDOWS -DWINVER=0x0401\n".
+ "# Resource compilation flags\n".
+ "RCFLAGS = -DNO_WINRESRC_H -DWIN32 -D_WIN32 -DWINVER=0x0401\n".
"\n".
"# Get include directory for resource compiler\n".
"!if !\$d(BCB)\n".
"\n".
"# Get include directory for resource compiler\n".
"!if !\$d(BCB)\n".
@@
-480,7
+490,7
@@
if (defined $makefiles{'borland'}) {
" /c \$*.c",69)."\n".
".rc.res:\n".
&splitline("\tbrcc32 \$(RCFL) -i \$(BCB)\\include -r".
" /c \$*.c",69)."\n".
".rc.res:\n".
&splitline("\tbrcc32 \$(RCFL) -i \$(BCB)\\include -r".
- "
-DNO_WINRESRC_H -DWIN32 -D_WIN32 -DWINVER=0x0401
\$*.rc",69)."\n".
+ "
\$(RCFLAGS)
\$*.rc",69)."\n".
"\n";
print &splitline("all:" . join "", map { " $_.exe" } &progrealnames("G:C"));
print "\n\n";
"\n";
print &splitline("all:" . join "", map { " $_.exe" } &progrealnames("G:C"));
print "\n\n";
@@
-520,8
+530,12
@@
if (defined $makefiles{'borland'}) {
print "\n";
}
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\", "borland")) {
print "\n";
}
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\", "borland")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ if ($forceobj{$d->{obj_orig}}) {
+ printf("%s: FORCE\n", $d->{obj});
+ } else {
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @{$d->{deps}})), "\n";
+ }
}
print "\n";
print $makefile_extra{'borland'}->{'end'};
}
print "\n";
print $makefile_extra{'borland'}->{'end'};
@@
-535,7
+549,10
@@
if (defined $makefiles{'borland'}) {
"\t-del *.pdb\n".
"\t-del *.rsp\n".
"\t-del *.tds\n".
"\t-del *.pdb\n".
"\t-del *.rsp\n".
"\t-del *.tds\n".
- "\t-del *.\$\$\$\$\$\$\n";
+ "\t-del *.\$\$\$\$\$\$\n".
+ "\n".
+ "FORCE:\n".
+ "\t-rem dummy command\n";
select STDOUT; close OUT;
}
select STDOUT; close OUT;
}
@@
-560,6
+577,7
@@
if (defined $makefiles{'vc'}) {
(join " ", map {"-I$dirpfx$_"} @srcdirs) .
" /D_WINDOWS /D_WIN32_WINDOWS=0x401 /DWINVER=0x401\n".
"LFLAGS = /incremental:no /fixed\n".
(join " ", map {"-I$dirpfx$_"} @srcdirs) .
" /D_WINDOWS /D_WIN32_WINDOWS=0x401 /DWINVER=0x401\n".
"LFLAGS = /incremental:no /fixed\n".
+ "RCFLAGS = -DWIN32 -D_WIN32 -DWINVER=0x0400\n".
"\n".
$makefile_extra{'vc'}->{'vars'} .
"\n".
"\n".
$makefile_extra{'vc'}->{'vars'} .
"\n".
@@
-592,12
+610,13
@@
if (defined $makefiles{'vc'}) {
print "\n";
}
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\", "vc")) {
print "\n";
}
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\", "vc")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ $extradeps = $forceobj{$d->{obj_orig}} ? ["*.c","*.h","*.rc"] : [];
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @$extradeps, @{$d->{deps}})), "\n";
if ($d->{obj} =~ /.obj$/) {
print "\tcl \$(COMPAT) \$(XFLAGS) \$(CFLAGS) /c ".$d->{deps}->[0],"\n\n";
} else {
if ($d->{obj} =~ /.obj$/) {
print "\tcl \$(COMPAT) \$(XFLAGS) \$(CFLAGS) /c ".$d->{deps}->[0],"\n\n";
} else {
- print "\trc \$(RCFL) -r
-DWIN32 -D_WIN32 -DWINVER=0x0400
".$d->{deps}->[0],"\n\n";
+ print "\trc \$(RCFL) -r
\$(RCFLAGS)
".$d->{deps}->[0],"\n\n";
}
}
print "\n";
}
}
print "\n";
@@
-897,7
+916,7
@@
if (defined $makefiles{'gtk'}) {
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
- ($_ = $help) =~ s/
=\/D/=
-D/gs;
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-D/gs;
print $_;
print
"\n".
print $_;
print
"\n".
@@
-935,14
+954,19
@@
if (defined $makefiles{'gtk'}) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", undef, $dirpfx, "/", "gtk")) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", undef, $dirpfx, "/", "gtk")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ if ($forceobj{$d->{obj_orig}}) {
+ printf("%s: FORCE\n", $d->{obj});
+ } else {
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @{$d->{deps}})), "\n";
+ }
print &splitline("\t\$(CC) \$(COMPAT) \$(XFLAGS) \$(CFLAGS) -c $d->{deps}->[0]\n");
}
print "\n";
print $makefile_extra{'gtk'}->{'end'};
print "\nclean:\n".
"\trm -f *.o". (join "", map { " $_" } &progrealnames("X:U")) . "\n";
print &splitline("\t\$(CC) \$(COMPAT) \$(XFLAGS) \$(CFLAGS) -c $d->{deps}->[0]\n");
}
print "\n";
print $makefile_extra{'gtk'}->{'end'};
print "\nclean:\n".
"\trm -f *.o". (join "", map { " $_" } &progrealnames("X:U")) . "\n";
+ print "\nFORCE:\n";
select STDOUT; close OUT;
}
select STDOUT; close OUT;
}
@@
-956,7
+980,7
@@
if (defined $makefiles{'ac'}) {
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
- ($_ = $help) =~ s/
=\/D/=
-D/gs;
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-D/gs;
print $_;
print
"\n".
print $_;
print
"\n".
@@
-993,14
+1017,19
@@
if (defined $makefiles{'ac'}) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", undef, $dirpfx, "/", "gtk")) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", undef, $dirpfx, "/", "gtk")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ if ($forceobj{$d->{obj_orig}}) {
+ printf("%s: FORCE\n", $d->{obj});
+ } else {
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @{$d->{deps}})), "\n";
+ }
print &splitline("\t\$(CC) \$(COMPAT) \$(XFLAGS) \$(CFLAGS) -c $d->{deps}->[0]\n");
}
print "\n";
print $makefile_extra{'gtk'}->{'end'};
print "\nclean:\n".
"\trm -f *.o". (join "", map { " $_" } &progrealnames("X:U")) . "\n";
print &splitline("\t\$(CC) \$(COMPAT) \$(XFLAGS) \$(CFLAGS) -c $d->{deps}->[0]\n");
}
print "\n";
print $makefile_extra{'gtk'}->{'end'};
print "\nclean:\n".
"\trm -f *.o". (join "", map { " $_" } &progrealnames("X:U")) . "\n";
+ print "\nFORCE:\n";
select STDOUT; close OUT;
}
select STDOUT; close OUT;
}
@@
-1011,8
+1040,8
@@
if (defined $makefiles{'mpw'}) {
"# Makefile for $project_name under MPW.\n#\n".
"# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
"# Makefile for $project_name under MPW.\n#\n".
"# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
- # MPW command line option is -d not /D
- ($_ = $help) =~ s/
=\/D/=
-d /gs;
+ # MPW command line option is -d not /D
(FIXME further massaging?)
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-d /gs;
print $_;
print "\n\n".
"ROptions = `Echo \"{VER}\" | StreamEdit -e \"1,\$ replace /=(\xc5)\xa81\xb0/ 'STR=\xb6\xb6\xb6\xb6\xb6\"' \xa81 '\xb6\xb6\xb6\xb6\xb6\"'\"`".
print $_;
print "\n\n".
"ROptions = `Echo \"{VER}\" | StreamEdit -e \"1,\$ replace /=(\xc5)\xa81\xb0/ 'STR=\xb6\xb6\xb6\xb6\xb6\"' \xa81 '\xb6\xb6\xb6\xb6\xb6\"'\"`".
@@
-1154,7
+1183,7
@@
if (defined $makefiles{'lcc'}) {
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# lcc command line option is -D not /D
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# lcc command line option is -D not /D
- ($_ = $help) =~ s/
=\/D/=
-D/gs;
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-D/gs;
print $_;
print
"\n".
print $_;
print
"\n".
@@
-1166,6
+1195,8
@@
if (defined $makefiles{'lcc'}) {
"CFLAGS = -D_WINDOWS " .
(join " ", map {"-I$dirpfx$_"} @srcdirs) .
"\n".
"CFLAGS = -D_WINDOWS " .
(join " ", map {"-I$dirpfx$_"} @srcdirs) .
"\n".
+ "# Resource compilation flags\n".
+ "RCFLAGS = \n".
"\n".
"# Get include directory for resource compiler\n".
"\n".
"\n".
"# Get include directory for resource compiler\n".
"\n".
@@
-1185,13
+1216,18
@@
if (defined $makefiles{'lcc'}) {
}
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\", "lcc")) {
}
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\", "lcc")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ if ($forceobj{$d->{obj_orig}}) {
+ printf("%s: FORCE\n", $d->{obj});
+ } else {
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @{$d->{deps}})), "\n";
+ }
if ($d->{obj} =~ /\.obj$/) {
print &splitline("\tlcc -O -p6 \$(COMPAT)".
" \$(XFLAGS) \$(CFLAGS) ".$d->{deps}->[0],69)."\n";
} else {
if ($d->{obj} =~ /\.obj$/) {
print &splitline("\tlcc -O -p6 \$(COMPAT)".
" \$(XFLAGS) \$(CFLAGS) ".$d->{deps}->[0],69)."\n";
} else {
- print &splitline("\tlrc \$(RCFL) -r ".$d->{deps}->[0],69)."\n";
+ print &splitline("\tlrc \$(RCFL) -r \$(RCFLAGS) ".
+ $d->{deps}->[0],69)."\n";
}
}
print "\n";
}
}
print "\n";
@@
-1199,7
+1235,9
@@
if (defined $makefiles{'lcc'}) {
print "\nclean:\n".
"\t-del *.obj\n".
"\t-del *.exe\n".
print "\nclean:\n".
"\t-del *.obj\n".
"\t-del *.exe\n".
- "\t-del *.res\n";
+ "\t-del *.res\n".
+ "\n".
+ "FORCE:\n";
select STDOUT; close OUT;
}
select STDOUT; close OUT;
}
@@
-1214,7
+1252,7
@@
if (defined $makefiles{'osx'}) {
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
"#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
"# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
# gcc command line option is -D not /D
- ($_ = $help) =~ s/
=\/D/=
-D/gs;
+ ($_ = $help) =~ s/
([=" ])\/D/\1
-D/gs;
print $_;
print
"CC = \$(TOOLPATH)gcc\n".
print $_;
print
"CC = \$(TOOLPATH)gcc\n".
@@
-1263,8
+1301,12
@@
if (defined $makefiles{'osx'}) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", undef, $dirpfx, "/")) {
$objstr . " $libstr", 69), "\n\n";
}
foreach $d (&deps("X.o", undef, $dirpfx, "/")) {
- print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
- "\n";
+ if ($forceobj{$d->{obj_orig}}) {
+ printf("%s: FORCE\n", $d->{obj});
+ } else {
+ print &splitline(sprintf("%s: %s", $d->{obj},
+ join " ", @{$d->{deps}})), "\n";
+ }
$firstdep = $d->{deps}->[0];
if ($firstdep =~ /\.c$/) {
print "\t\$(CC) \$(COMPAT) \$(FWHACK) \$(XFLAGS) \$(CFLAGS) -c \$<\n";
$firstdep = $d->{deps}->[0];
if ($firstdep =~ /\.c$/) {
print "\t\$(CC) \$(COMPAT) \$(FWHACK) \$(XFLAGS) \$(CFLAGS) -c \$<\n";
@@
-1274,8
+1316,10
@@
if (defined $makefiles{'osx'}) {
}
print "\n".$makefile_extra{'osx'}->{'end'};
print "\nclean:\n".
}
print "\n".$makefile_extra{'osx'}->{'end'};
print "\nclean:\n".
- "\trm -f *.o *.dmg". (join "", map { " $_" } &progrealnames("U")) . "\n"
;
+ "\trm -f *.o *.dmg". (join "", map { " $_" } &progrealnames("U")) . "\n"
.
"\trm -rf *.app\n";
"\trm -rf *.app\n";
+ "\n".
+ "FORCE:\n";
select STDOUT; close OUT;
}
select STDOUT; close OUT;
}