+ foreach $d (&deps("X.o", undef, $dirpfx, "/")) {
+ print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
+ "\n";
+ }
+ print "\n";
+ print $makefile_extra{'gtk'};
+ print "\nclean:\n".
+ "\trm -f *.o". (join "", map { " $_" } &progrealnames("XU")) . "\n";
+ select STDOUT; close OUT;
+}
+
+if (defined $makefiles{'mpw'}) {
+ ##-- MPW Makefile
+ open OUT, ">$makefiles{'mpw'}"; select OUT;
+ print
+ "# 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;
+ 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".
+ "C_68K = {C}\n".
+ "C_CFM68K = {C}\n".
+ "C_PPC = {PPCC}\n".
+ "C_Carbon = {PPCC}\n".
+ "\n".
+ "# -w 35 disables \"unused parameter\" warnings\n".
+ "COptions = -i : -i :: -i ::charset -w 35 -w err -proto strict -ansi on \xb6\n".
+ " -notOnce\n".
+ "COptions_68K = {COptions} -model far -opt time\n".
+ "# Enabling \"-opt space\" for CFM-68K gives me undefined references to\n".
+ "# _\$LDIVT and _\$LMODT.\n".
+ "COptions_CFM68K = {COptions} -model cfmSeg -opt time\n".
+ "COptions_PPC = {COptions} -opt size -traceback\n".
+ "COptions_Carbon = {COptions} -opt size -traceback -d TARGET_API_MAC_CARBON\n".
+ "\n".
+ "Link_68K = ILink\n".
+ "Link_CFM68K = ILink\n".
+ "Link_PPC = PPCLink\n".
+ "Link_Carbon = PPCLink\n".
+ "\n".
+ "LinkOptions = -c 'pTTY'\n".
+ "LinkOptions_68K = {LinkOptions} -br 68k -model far -compact\n".
+ "LinkOptions_CFM68K = {LinkOptions} -br 020 -model cfmseg -compact\n".
+ "LinkOptions_PPC = {LinkOptions}\n".
+ "LinkOptions_Carbon = -m __appstart -w {LinkOptions}\n".
+ "\n".
+ "Libs_68K = \"{CLibraries}StdCLib.far.o\" \xb6\n".
+ " \"{Libraries}MacRuntime.o\" \xb6\n".
+ " \"{Libraries}MathLib.far.o\" \xb6\n".
+ " \"{Libraries}IntEnv.far.o\" \xb6\n".
+ " \"{Libraries}Interface.o\" \xb6\n".
+ " \"{Libraries}Navigation.far.o\" \xb6\n".
+ " \"{Libraries}OpenTransport.o\" \xb6\n".
+ " \"{Libraries}OpenTransportApp.o\" \xb6\n".
+ " \"{Libraries}OpenTptInet.o\" \xb6\n".
+ " \"{Libraries}UnicodeConverterLib.far.o\"\n".
+ "\n".
+ "Libs_CFM = \"{SharedLibraries}InterfaceLib\" \xb6\n".
+ " \"{SharedLibraries}StdCLib\" \xb6\n".
+ " \"{SharedLibraries}AppearanceLib\" \xb6\n".
+ " -weaklib AppearanceLib \xb6\n".
+ " \"{SharedLibraries}NavigationLib\" \xb6\n".
+ " -weaklib NavigationLib \xb6\n".
+ " \"{SharedLibraries}TextCommon\" \xb6\n".
+ " -weaklib TextCommon \xb6\n".
+ " \"{SharedLibraries}UnicodeConverter\" \xb6\n".
+ " -weaklib UnicodeConverter\n".
+ "\n".
+ "Libs_CFM68K = {Libs_CFM} \xb6\n".
+ " \"{CFM68KLibraries}NuMacRuntime.o\"\n".
+ "\n".
+ "Libs_PPC = {Libs_CFM} \xb6\n".
+ " \"{SharedLibraries}ControlsLib\" \xb6\n".
+ " -weaklib ControlsLib \xb6\n".
+ " \"{SharedLibraries}WindowsLib\" \xb6\n".
+ " -weaklib WindowsLib \xb6\n".
+ " \"{SharedLibraries}OpenTransportLib\" \xb6\n".
+ " -weaklib OTClientLib \xb6\n".
+ " -weaklib OTClientUtilLib \xb6\n".
+ " \"{SharedLibraries}OpenTptInternetLib\" \xb6\n".
+ " -weaklib OTInetClientLib \xb6\n".
+ " \"{PPCLibraries}StdCRuntime.o\" \xb6\n".
+ " \"{PPCLibraries}PPCCRuntime.o\" \xb6\n".
+ " \"{PPCLibraries}CarbonAccessors.o\" \xb6\n".
+ " \"{PPCLibraries}OpenTransportAppPPC.o\" \xb6\n".
+ " \"{PPCLibraries}OpenTptInetPPC.o\"\n".
+ "\n".
+ "Libs_Carbon = \"{PPCLibraries}CarbonStdCLib.o\" \xb6\n".
+ " \"{PPCLibraries}StdCRuntime.o\" \xb6\n".
+ " \"{PPCLibraries}PPCCRuntime.o\" \xb6\n".
+ " \"{SharedLibraries}CarbonLib\" \xb6\n".
+ " \"{SharedLibraries}StdCLib\"\n".
+ "\n";
+ print &splitline("all \xc4 " . join(" ", &progrealnames("M")), undef, "\xb6");
+ print "\n\n";
+ foreach $p (&prognames("M")) {
+ ($prog, $type) = split ",", $p;
+
+ print &splitline("$prog \xc4 $prog.68k $prog.ppc $prog.carbon",
+ undef, "\xb6"), "\n\n";
+
+ $rsrc = &objects($p, "", "X.rsrc", undef);
+
+ foreach $arch (qw(68K CFM68K PPC Carbon)) {
+ $objstr = &objects($p, "X.\L$arch\E.o", "", undef);
+ print &splitline("$prog.\L$arch\E \xc4 $objstr $rsrc", undef, "\xb6");
+ print "\n";
+ print &splitline("\tDuplicate -y $rsrc {Targ}", 69, "\xb6"), "\n";
+ print &splitline("\t{Link_$arch} -o {Targ} -fragname $prog " .
+ "{LinkOptions_$arch} " .
+ $objstr . " {Libs_$arch}", 69, "\xb6"), "\n";
+ print &splitline("\tSetFile -a BMi {Targ}", 69, "\xb6"), "\n\n";
+ }
+
+ }
+ foreach $d (&deps("", "X.rsrc", "::", ":")) {
+ next unless $d->{obj};
+ print &splitline(sprintf("%s \xc4 %s", $d->{obj}, join " ", @{$d->{deps}}),
+ undef, "\xb6"), "\n";
+ print "\tRez ", $d->{deps}->[0], " -o {Targ} {ROptions}\n\n";
+ }
+ foreach $arch (qw(68K CFM68K)) {
+ foreach $d (&deps("X.\L$arch\E.o", "", "::", ":")) {
+ next unless $d->{obj};
+ print &splitline(sprintf("%s \xc4 %s", $d->{obj},
+ join " ", @{$d->{deps}}),
+ undef, "\xb6"), "\n";
+ print "\t{C_$arch} ", $d->{deps}->[0],
+ " -o {Targ} {COptions_$arch}\n\n";
+ }
+ }
+ foreach $arch (qw(PPC Carbon)) {
+ foreach $d (&deps("X.\L$arch\E.o", "", "::", ":")) {
+ next unless $d->{obj};
+ print &splitline(sprintf("%s \xc4 %s", $d->{obj},
+ join " ", @{$d->{deps}}),
+ undef, "\xb6"), "\n";
+ # The odd stuff here seems to stop afpd getting confused.
+ print "\techo -n > {Targ}\n";
+ print "\tsetfile -t XCOF {Targ}\n";
+ print "\t{C_$arch} ", $d->{deps}->[0],
+ " -o {Targ} {COptions_$arch}\n\n";
+ }
+ }
+ select STDOUT; close OUT;
+}
+
+if (defined $makefiles{'lcc'}) {
+ $dirpfx = &dirpfx($makefiles{'lcc'}, "\\");
+
+ ##-- lcc makefile
+ open OUT, ">$makefiles{'lcc'}"; select OUT;
+ print
+ "# Makefile for $project_name under lcc.\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";
+ # lcc command line option is -D not /D
+ ($_ = $help) =~ s/=\/D/=-D/gs;
+ print $_;
+ print
+ "\n".
+ "# If you rename this file to `Makefile', you should change this line,\n".
+ "# so that the .rsp files still depend on the correct makefile.\n".
+ "MAKEFILE = Makefile.lcc\n".
+ "\n".
+ "# C compilation flags\n".
+ "CFLAGS = -D_WINDOWS " .
+ (join " ", map {"-I$dirpfx$_"} @srcdirs) .
+ "\n".
+ "\n".
+ "# Get include directory for resource compiler\n".
+ "\n".
+ ".c.obj:\n".
+ &splitline("\tlcc -O -p6 \$(COMPAT) \$(FWHACK)".
+ " \$(XFLAGS) \$(CFLAGS) \$*.c",69)."\n".
+ ".rc.res:\n".
+ &splitline("\tlrc \$(FWHACK) \$(RCFL) -r \$*.rc",69)."\n".
+ "\n";
+ print &splitline("all:" . join "", map { " $_.exe" } &progrealnames("GC"));
+ print "\n\n";
+ foreach $p (&prognames("GC")) {
+ ($prog, $type) = split ",", $p;
+ $objstr = &objects($p, "X.obj", "X.res", undef);
+ print &splitline("$prog.exe: " . $objstr ), "\n";
+ $subsystemtype = undef;
+ if ($type eq "G") { $subsystemtype = "-subsystem windows"; }
+ my $libss = "shell32.lib wsock32.lib ws2_32.lib winspool.lib winmm.lib imm32.lib";
+ print &splitline("\tlcclnk $subsystemtype -o $prog.exe $objstr $libss");
+ print "\n\n";
+ }
+
+ foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\")) {
+ print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
+ "\n";
+ }
+ print "\n";
+ print $makefile_extra{'lcc'};
+ print "\nclean:\n".
+ "\t-del *.obj\n".
+ "\t-del *.exe\n".
+ "\t-del *.res\n";
+
+ select STDOUT; close OUT;