📄 mkfiles.pl
字号:
"# PROP BASE Target_Dir \"\"\r\n".
"# PROP Use_MFC 0\r\n".
"# PROP Use_Debug_Libraries 0\r\n".
"# PROP Output_Dir \"Release\"\r\n".
"# PROP Intermediate_Dir \"Release\"\r\n".
"# PROP Ignore_Export_Lib 0\r\n".
"# PROP Target_Dir \"\"\r\n".
"# ADD BASE CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" /YX /FD /c\r\n".
"# ADD CPP /nologo /W3 /GX /O2 /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" /YX /FD /c\r\n".
"# ADD BASE MTL /nologo /D \"NDEBUG\" /mktyplib203 /win32\r\n".
"# ADD MTL /nologo /D \"NDEBUG\" /mktyplib203 /win32\r\n".
"# ADD BASE RSC /l 0x809 /d \"NDEBUG\"\r\n".
"# ADD RSC /l 0x809 /d \"NDEBUG\"\r\n".
"BSC32=bscmake.exe\r\n".
"# ADD BASE BSC32 /nologo\r\n".
"# ADD BSC32 /nologo\r\n".
"LINK32=link.exe\r\n".
"# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:$subsys /machine:I386\r\n".
"# ADD LINK32 $libs /nologo /subsystem:$subsys /machine:I386\r\n".
"# SUBTRACT LINK32 /pdb:none\r\n".
"\r\n".
"!ELSEIF \"\$(CFG)\" == \"$windows_project - Win32 Debug\"\r\n".
"\r\n".
"# PROP BASE Use_MFC 0\r\n".
"# PROP BASE Use_Debug_Libraries 1\r\n".
"# PROP BASE Output_Dir \"Debug\"\r\n".
"# PROP BASE Intermediate_Dir \"Debug\"\r\n".
"# PROP BASE Target_Dir \"\"\r\n".
"# PROP Use_MFC 0\r\n".
"# PROP Use_Debug_Libraries 1\r\n".
"# PROP Output_Dir \"Debug\"\r\n".
"# PROP Intermediate_Dir \"Debug\"\r\n".
"# PROP Ignore_Export_Lib 0\r\n".
"# PROP Target_Dir \"\"\r\n".
"# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" /YX /FD /GZ /c\r\n".
"# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" /YX /FD /GZ /c\r\n".
"# ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32\r\n".
"# ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32\r\n".
"# ADD BASE RSC /l 0x809 /d \"_DEBUG\"\r\n".
"# ADD RSC /l 0x809 /d \"_DEBUG\"\r\n".
"BSC32=bscmake.exe\r\n".
"# ADD BASE BSC32 /nologo\r\n".
"# ADD BSC32 /nologo\r\n".
"LINK32=link.exe\r\n".
"# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:$subsys /debug /machine:I386 /pdbtype:sept\r\n".
"# ADD LINK32 $libs /nologo /subsystem:$subsys /debug /machine:I386 /pdbtype:sept\r\n".
"# SUBTRACT LINK32 /pdb:none\r\n".
"\r\n".
"!ENDIF \r\n".
"\r\n".
"# Begin Target\r\n".
"\r\n".
"# Name \"$windows_project - Win32 Release\"\r\n".
"# Name \"$windows_project - Win32 Debug\"\r\n".
"# Begin Group \"Source Files\"\r\n".
"\r\n".
"# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;idl;hpj;bat\"\r\n";
foreach $source_file (@source_files) {
print
"# Begin Source File\r\n".
"\r\n".
"SOURCE=..\\..\\$source_file\r\n";
if($source_file =~ /ssh\.c/io) {
# Disable 'Edit and continue' as Visual Studio can't handle the macros
print
"\r\n".
"!IF \"\$(CFG)\" == \"$windows_project - Win32 Release\"\r\n".
"\r\n".
"!ELSEIF \"\$(CFG)\" == \"$windows_project - Win32 Debug\"\r\n".
"\r\n".
"# ADD CPP /Zi\r\n".
"\r\n".
"!ENDIF \r\n".
"\r\n";
}
print "# End Source File\r\n";
}
print
"# End Group\r\n".
"# Begin Group \"Header Files\"\r\n".
"\r\n".
"# PROP Default_Filter \"h;hpp;hxx;hm;inl\"\r\n";
foreach $header_file (@header_files) {
print
"# Begin Source File\r\n".
"\r\n".
"SOURCE=..\\..\\$header_file\r\n".
"# End Source File\r\n";
}
print
"# End Group\r\n".
"# Begin Group \"Resource Files\"\r\n".
"\r\n".
"# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe\"\r\n";
foreach $resource_file (@resources) {
print
"# Begin Source File\r\n".
"\r\n".
"SOURCE=..\\..\\$resource_file\r\n".
"# End Source File\r\n";
}
print
"# End Group\r\n".
"# End Target\r\n".
"# End Project\r\n";
select STDOUT; close OUT;
chdir "..";
}
}
if (defined $makefiles{'gtk'}) {
$dirpfx = &dirpfx($makefiles{'gtk'}, "/");
##-- X/GTK/Unix makefile
open OUT, ">$makefiles{'gtk'}"; select OUT;
print
"# Makefile for $project_name under X/GTK and Unix.\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;
print $_;
print
"\n".
"# You can define this path to point at your tools if you need to\n".
"# TOOLPATH = /opt/gcc/bin\n".
"CC = \$(TOOLPATH)cc\n".
"\n".
&splitline("CFLAGS = -O2 -Wall -Werror -g " .
(join " ", map {"-I$dirpfx$_"} @srcdirs) .
" `gtk-config --cflags`")."\n".
"XLDFLAGS = `gtk-config --libs`\n".
"ULDFLAGS =#\n".
"INSTALL=install\n",
"INSTALL_PROGRAM=\$(INSTALL)\n",
"INSTALL_DATA=\$(INSTALL)\n",
"prefix=/usr/local\n",
"exec_prefix=\$(prefix)\n",
"bindir=\$(exec_prefix)/bin\n",
"mandir=\$(prefix)/man\n",
"man1dir=\$(mandir)/man1\n",
"\n".
".SUFFIXES:\n".
"\n".
"%.o:\n".
"\t\$(CC) \$(COMPAT) \$(FWHACK) \$(XFLAGS) \$(CFLAGS) -c \$<\n".
"\n";
print &splitline("all:" . join "", map { " $_" } &progrealnames("XU"));
print "\n\n";
foreach $p (&prognames("XU")) {
($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 . " \$(${type}LDFLAGS) -o \$@ " .
$objstr . " $libstr", 69), "\n\n";
}
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -