# 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;
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";
s/\//$dirsep/g;
$_ = $prefix . $_;
} @deps;
- push @ret, {obj => $x, deps => [@deps]};
+ push @ret, {obj => $x, obj_orig => $i, deps => [@deps]};
}
return @ret;
}
"#\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".
$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 {
print $makefile_extra{'cygwin'}->{'end'};
print "\nclean:\n".
"\trm -f *.o *.exe *.res.o *.map\n".
- "\n";
+ "\n".
+ "FORCE:\n";
select STDOUT; close OUT;
}
"#\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".
"\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".
" /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";
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'};
"\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;
}
(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".
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 {
- 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";
"#\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".
$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 "\nFORCE:\n";
select STDOUT; close OUT;
}
"#\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".
$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 "\nFORCE:\n";
select STDOUT; close OUT;
}
"# 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\"'\"`".
"#\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".
"CFLAGS = -D_WINDOWS " .
(join " ", map {"-I$dirpfx$_"} @srcdirs) .
"\n".
+ "# Resource compilation flags\n".
+ "RCFLAGS = \n".
"\n".
"# Get include directory for resource compiler\n".
"\n".
}
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 {
- print &splitline("\tlrc \$(RCFL) -r ".$d->{deps}->[0],69)."\n";
+ print &splitline("\tlrc \$(RCFL) -r \$(RCFLAGS) ".
+ $d->{deps}->[0],69)."\n";
}
}
print "\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;
}
"#\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".
$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";
}
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";
+ "\n".
+ "FORCE:\n";
select STDOUT; close OUT;
}