📄 mkfiles.pl
字号:
"CFG=$windows_project - Win32 Debug\r\n".
"!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r\n".
"!MESSAGE use the Export Makefile command and run\r\n".
"!MESSAGE \r\n".
"!MESSAGE NMAKE /f \"$windows_project.mak\".\r\n".
"!MESSAGE \r\n".
"!MESSAGE You can specify a configuration when running NMAKE\r\n".
"!MESSAGE by defining the macro CFG on the command line. For example:\r\n".
"!MESSAGE \r\n".
"!MESSAGE NMAKE /f \"$windows_project.mak\" CFG=\"$windows_project - Win32 Debug\"\r\n".
"!MESSAGE \r\n".
"!MESSAGE Possible choices for configuration are:\r\n".
"!MESSAGE \r\n".
"!MESSAGE \"$windows_project - Win32 Release\" (based on \"Win32 (x86) Application\")\r\n".
"!MESSAGE \"$windows_project - Win32 Debug\" (based on \"Win32 (x86) Application\")\r\n".
"!MESSAGE \r\n".
"\r\n".
"# Begin Project\r\n".
"# PROP AllowPerConfigDependencies 0\r\n".
"# PROP Scc_ProjName \"\"\r\n".
"# PROP Scc_LocalPath \"\"\r\n".
"CPP=cl.exe\r\n".
"MTL=midl.exe\r\n".
"RSC=rc.exe\r\n".
"\r\n".
"!IF \"\$(CFG)\" == \"$windows_project - Win32 Release\"\r\n".
"\r\n".
"# PROP BASE Use_MFC 0\r\n".
"# PROP BASE Use_Debug_Libraries 0\r\n".
"# PROP BASE Output_Dir \"Release\"\r\n".
"# PROP BASE Intermediate_Dir \"Release\"\r\n".
"# 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 ".
(join " ", map {"/I \"..\\..\\$dirpfx$_\""} @srcdirs) .
" /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" /YX /FD /c\r\n".
"# ADD CPP /nologo /W3 /GX /O2 ".
(join " ", map {"/I \"..\\..\\$dirpfx$_\""} @srcdirs) .
" /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 ".
(join " ", map {"/I \"..\\..\\$dirpfx$_\""} @srcdirs) .
" /D \"WIN32\" /D \"_DEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" /YX /FD /GZ /c\r\n".
"# ADD CPP /nologo /W3 /Gm /GX /ZI /Od ".
(join " ", map {"/I \"..\\..\\$dirpfx$_\""} @srcdirs) .
" /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/\1-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`").
" -D _FILE_OFFSET_BITS=64\n".
"XLDFLAGS = \$(LDFLAGS) `gtk-config --libs`\n".
"ULDFLAGS = \$(LDFLAGS)\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".
$makefile_extra{'gtk'}->{'vars'} .
"\n".
".SUFFIXES:\n".
"\n".
"\n";
print &splitline("all:" . join "", map { " $_" } &progrealnames("X:U"));
print "\n\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{'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} " .
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -