-print
-"\n".
-"version.o: FORCE;\n".
-"# Hack to force version.o to be rebuilt always\n".
-"FORCE:\n".
-"\t\$(CC) \$(COMPAT) \$(FWHACK) \$(XFLAGS) \$(CFLAGS) \$(VER) -c ../version.c\n".
-"clean:\n".
-"\trm -f *.o". (join "", map { " $_" } &progrealnames("XU")) . "\n".
-"\n",
-"install:\n",
-map("\t\$(INSTALL_PROGRAM) -m 755 $_ \$(bindir)/$_\n", &progrealnames("XU")),
-map("\t\$(INSTALL_DATA) -m 644 $_ \$(man1dir)/$_\n", &manpages("XU", "1")),
-"\n",
-"install-strip:\n",
-"\t\$(MAKE) install INSTALL_PROGRAM=\"\$(INSTALL_PROGRAM) -s\"\n",
-"\n";
-select STDOUT; close OUT;
-
-##-- MPW Makefile
-open OUT, ">mac/Makefile.mpw"; select OUT;
-print <<END;
-# Makefile for PuTTY under MPW.
-#
-# This file was created by `mkfiles.pl' from the `Recipe' file.
-# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
-END
-# MPW command line option is -d not /D
-($_ = $help) =~ s/=\/D/=-d /gs;
-print $_;
-print <<END;
-
-ROptions = `Echo "{VER}" | StreamEdit -e "1,\$ replace /=(\xc5)\xa81\xb0/ 'STR=\xb6\xb6\xb6\xb6\xb6"' \xa81 '\xb6\xb6\xb6\xb6\xb6"'"`
-
-# -w 35 disables "unused parameter" warnings
-COptions = -i : -i :: -w 35 -w err -proto strict
-COptions_68K = {COptions} -model far -opt space
-# Enabling "-opt space" for CFM-68K gives me undefined references to
-# _$LDIVT and _$LMODT.
-COptions_CFM68K = {COptions} -model cfmSeg -opt time
-COptions_PPC = {COptions} -opt size
-
-LinkOptions = -c 'pTTY' -fragname PuTTY
-LinkOptions_68K = {LinkOptions} -br 68k -model far -compact
-LinkOptions_CFM68K = {LinkOptions} -br 020 -model cfmseg -compact
-LinkOptions_PPC = {LinkOptions}
-
-Libs_68K = "{CLibraries}StdCLib.far.o" \xb6
- "{Libraries}MacRuntime.o" \xb6
- "{Libraries}MathLib.far.o" \xb6
- "{Libraries}IntEnv.far.o" \xb6
- "{Libraries}Interface.o" \xb6
- "{Libraries}UnicodeConverterLib.far.o"
-
-Libs_CFM = "{SharedLibraries}InterfaceLib" \xb6
- "{SharedLibraries}StdCLib" \xb6
- "{SharedLibraries}AppearanceLib" \xb6
- -weaklib AppearanceLib \xb6
- "{SharedLibraries}TextCommon" \xb6
- -weaklib TextCommon \xb6
- "{SharedLibraries}UnicodeConverter" \xb6
- -weaklib UnicodeConverter
-
-Libs_CFM68K = {Libs_CFM} \xb6
- "{CFM68KLibraries}NuMacRuntime.o"
-
-Libs_PPC = {Libs_CFM} \xb6
- "{PPCLibraries}StdCRuntime.o" \xb6
- "{PPCLibraries}PPCCRuntime.o" \xb6
- "{PPCLibraries}CarbonAccessors.o"
-
-END
-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.cfm68k $prog.ppc",
- undef, "\xb6"), "\n\n";
-
- $rsrc = &objects($p, "", "X.rsrc", undef);
-
- $objstr = &objects($p, "X.68k.o", "", undef);
- print &splitline("$prog.68k \xc4 $objstr $rsrc", undef, "\xb6"), "\n";
- print &splitline("\tDuplicate -y $rsrc {Targ}", 69, "\xb6"), "\n";
- print &splitline("\tILink -o {Targ} {LinkOptions_68K} " .
- $objstr . " {Libs_68K}", 69, "\xb6"), "\n";
- print &splitline("\tSetFile -a BM {Targ}", 69, "\xb6"), "\n\n";
-
- $objstr = &objects($p, "X.cfm68k.o", "", undef);
- print &splitline("$prog.cfm68k \xc4 $objstr $rsrc", undef, "\xb6"), "\n";
- print &splitline("\tDuplicate -y $rsrc {Targ}", 69, "\xb6"), "\n";
- print &splitline("\tILink -o {Targ} {LinkOptions_CFM68K} " .
- $objstr . " {Libs_CFM68K}", 69, "\xb6"), "\n";
- print &splitline("\tSetFile -a BM {Targ}", 69, "\xb6"), "\n\n";
-
- $objstr = &objects($p, "X.ppc.o", "", undef);
- print &splitline("$prog.ppc \xc4 $objstr $rsrc", undef, "\xb6"), "\n";
- print &splitline("\tDuplicate -y $rsrc {Targ}", 69, "\xb6"), "\n";
- print &splitline("\tPPCLink -o {Targ} {LinkOptions_PPC} " .
- $objstr . " {Libs_PPC}", 69, "\xb6"), "\n";
- print &splitline("\tSetFile -a BM {Targ}", 69, "\xb6"), "\n\n";
+
+if (defined $makefiles{'ac'}) {
+ $dirpfx = &dirpfx($makefiles{'ac'}, "/");
+
+ ##-- Unix/autoconf makefile
+ open OUT, ">$makefiles{'ac'}"; select OUT;
+ print
+ "# Makefile.in for $project_name under Unix with Autoconf.\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/\1-D/gs;
+ print $_;
+ print
+ "\n".
+ "CC = \@CC\@\n".
+ "\n".
+ &splitline("CFLAGS = \@CFLAGS\@ \@CPPFLAGS\@ \@DEFS\@ \@GTK_CFLAGS\@ " .
+ (join " ", map {"-I$dirpfx$_"} @srcdirs))."\n".
+ "XLDFLAGS = \@LDFLAGS\@ \@LIBS\@ \@GTK_LIBS\@\n".
+ "ULDFLAGS = \@LDFLAGS\@ \@LIBS\@\n".
+ "INSTALL=\@INSTALL\@\n",
+ "INSTALL_PROGRAM=\$(INSTALL)\n",
+ "INSTALL_DATA=\$(INSTALL)\n",
+ "prefix=\@prefix\@\n",
+ "exec_prefix=\@exec_prefix\@\n",
+ "bindir=\@bindir\@\n",
+ "mandir=\@mandir\@\n",
+ "man1dir=\$(mandir)/man1\n",
+ "\n".
+ $makefile_extra{'gtk'}->{'vars'} .
+ "\n".
+ ".SUFFIXES:\n".
+ "\n".
+ "\n".
+ "all: \@all_targets\@\n".
+ &splitline("all-cli:" . join "", map { " $_" } &progrealnames("U"))."\n".
+ &splitline("all-gtk:" . join "", map { " $_" } &progrealnames("X"))."\n";
+ print "\n";
+ foreach $p (&prognames("X:U")) {
+ ($prog, $type) = split ",", $p;
+ $objstr = &objects($p, "X.o", undef, undef);
+ print &splitline($prog . ": " . $objstr), "\n";
+ $libstr = &objects($p, undef, undef, "-lX");
+ print &splitline("\t\$(CC)" . $mw . " -o \$@ " .
+ $objstr . " \$(${type}LDFLAGS) $libstr", 69), "\n\n";
+ }
+ foreach $d (&deps("X.o", undef, $dirpfx, "/", "gtk")) {
+ 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) \$(CFLAGS) \$(XFLAGS) -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;
+}
+
+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 (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".
+ "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", "::", ":", "mpw")) {
+ 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", "", "::", ":", "mpw")) {
+ 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", "", "::", ":", "mpw")) {
+ 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;