mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-22 08:25:45 -07:00
Dariusz Olszewski's changes to support compiling for PocketPC. This
is mostly done with ifdefs in windows.c; so mkfiles.pl generates a new makefile (Makefile.wce) and Recipe enables it, but it's hardly any different from Makefile.vc apart from a few definitions at the top of the files. Currently the PocketPC build is not enabled in the build script, but with any luck I'll be able to do so reasonably soon. [originally from svn r7337]
This commit is contained in:
110
mkfiles.pl
110
mkfiles.pl
@ -284,7 +284,7 @@ sub mfval($) {
|
||||
# Returns true if the argument is a known makefile type. Otherwise,
|
||||
# prints a warning and returns false;
|
||||
if (grep { $type eq $_ }
|
||||
("vc","vcproj","cygwin","borland","lcc","gtk","mpw","osx")) {
|
||||
("vc","vcproj","cygwin","borland","lcc","gtk","mpw","osx","wce")) {
|
||||
return 1;
|
||||
}
|
||||
warn "$.:unknown makefile type '$type'\n";
|
||||
@ -719,6 +719,114 @@ if (defined $makefiles{'vc'}) {
|
||||
select STDOUT; close OUT;
|
||||
}
|
||||
|
||||
if (defined $makefiles{'wce'}) {
|
||||
$mftyp = 'wce';
|
||||
$dirpfx = &dirpfx($makefiles{'wce'}, "\\");
|
||||
|
||||
##-- eMbedded Visual C PocketPC makefile
|
||||
open OUT, ">$makefiles{'wce'}"; select OUT;
|
||||
print
|
||||
"# Makefile for $project_name on PocketPC using eMbedded Visual C.\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";
|
||||
print $help;
|
||||
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.wce\n".
|
||||
"\n".
|
||||
"# This makefile expects the environment to have been set up by one\n".
|
||||
"# of the PocketPC batch files wcearmv4.bat and wceemulator.bat. No\n".
|
||||
"# other build targets are currently supported, because they would\n".
|
||||
"# need a section in this if statement.\n".
|
||||
"!if \"\$(TARGETCPU)\" == \"emulator\"\n".
|
||||
"PLATFORM_DEFS=/D \"_i386_\" /D \"i_386_\" /D \"_X86_\" /D \"x86\"\n".
|
||||
"CC=cl\n".
|
||||
"BASELIBS=commctrl.lib coredll.lib corelibc.lib aygshell.lib\n".
|
||||
"MACHINE=IX86\n".
|
||||
"!else\n".
|
||||
"PLATFORM_DEFS=/D \"ARM\" /D \"_ARM_\" /D \"ARMV4\"\n".
|
||||
"CC=clarm\n".
|
||||
"BASELIBS=commctrl.lib coredll.lib aygshell.lib\n".
|
||||
"MACHINE=ARM\n".
|
||||
"!endif\n".
|
||||
"\n".
|
||||
"# C compilation flags\n".
|
||||
"CFLAGS = /nologo /W3 /O1 /MC /D _WIN32_WCE=420 /D \"WIN32_PLATFORM_PSPC=400\" /D UNDER_CE=420 \\\n".
|
||||
" \$(PLATFORM_DEFS) \\\n".
|
||||
" /D \"UNICODE\" /D \"_UNICODE\" /D \"NDEBUG\" /D \"NO_HTMLHELP\"\n".
|
||||
"\n".
|
||||
"LFLAGS = /nologo /incremental:no \\\n".
|
||||
" /base:0x00010000 /stack:0x10000,0x1000 /entry:WinMainCRTStartup \\\n".
|
||||
" /nodefaultlib:libc.lib /nodefaultlib:libcmt.lib /nodefaultlib:msvcrt.lib /nodefaultlib:OLDNAMES.lib \\\n".
|
||||
" /subsystem:windowsce,4.20 /align:4096 /MACHINE:\$(MACHINE)\n".
|
||||
"\n".
|
||||
"RCFL = /d UNDER_CE=420 /d _WIN32_WCE=420 /d \"WIN32_PLATFORM_PSPC=400\" \\\n".
|
||||
" \$(PLATFORM_DEFS) \\\n".
|
||||
" /d \"NDEBUG\" /d \"UNICODE\" /d \"_UNICODE\"\n".
|
||||
"\n";
|
||||
print &splitline("all:" . join "", map { " $_.exe" } &progrealnames("G"));
|
||||
print "\n\n";
|
||||
foreach $p (&prognames("G")) {
|
||||
($prog, $type) = split ",", $p;
|
||||
$objstr = &objects($p, "X.obj", "X.res", undef);
|
||||
print &splitline("$prog.exe: " . $objstr . " $prog.rsp"), "\n";
|
||||
print "\tlink \$(LFLAGS) -out:$prog.exe -map:$prog.map \@$prog.rsp\n\n";
|
||||
}
|
||||
foreach $p (&prognames("G")) {
|
||||
($prog, $type) = split ",", $p;
|
||||
print $prog, ".rsp: \$(MAKEFILE)\n";
|
||||
$objstr = &objects($p, "X.obj", "X.res", undef);
|
||||
@objlist = split " ", $objstr;
|
||||
@objlines = ("");
|
||||
foreach $i (@objlist) {
|
||||
if (length($objlines[$#objlines] . " $i") > 50) {
|
||||
push @objlines, "";
|
||||
}
|
||||
$objlines[$#objlines] .= " $i";
|
||||
}
|
||||
print "\techo \$(BASELIBS) > $prog.rsp\n";
|
||||
for ($i=0; $i<=$#objlines; $i++) {
|
||||
print "\techo$objlines[$i] >> $prog.rsp\n";
|
||||
}
|
||||
print "\n";
|
||||
}
|
||||
foreach $d (&deps("X.obj", "X.res", $dirpfx, "\\")) {
|
||||
print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
|
||||
"\n";
|
||||
if ($d->{obj} =~ /\.res$/) {
|
||||
print "\trc \$(FWHACK) \$(RCFL) -r -fo".
|
||||
$d->{obj}." ".$d->{deps}->[0]."\n";
|
||||
} else {
|
||||
$deflist = join "", map { " /D$_" } @{$d->{defs}};
|
||||
print "\t\$(CC) \$(COMPAT) \$(FWHACK) \$(CFLAGS) \$(XFLAGS)$deflist".
|
||||
" /c ".$d->{deps}->[0]." /Fo$d->{obj}\n";
|
||||
}
|
||||
}
|
||||
print "\n";
|
||||
print $makefile_extra{'wce'};
|
||||
print "\nclean: tidy\n".
|
||||
"\t-del *.exe\n\n".
|
||||
"tidy:\n".
|
||||
"\t-del *.obj\n".
|
||||
"\t-del *.res\n".
|
||||
"\t-del *.pch\n".
|
||||
"\t-del *.aps\n".
|
||||
"\t-del *.ilk\n".
|
||||
"\t-del *.pdb\n".
|
||||
"\t-del *.rsp\n".
|
||||
"\t-del *.dsp\n".
|
||||
"\t-del *.dsw\n".
|
||||
"\t-del *.ncb\n".
|
||||
"\t-del *.opt\n".
|
||||
"\t-del *.plg\n".
|
||||
"\t-del *.map\n".
|
||||
"\t-del *.idb\n".
|
||||
"\t-del debug.log\n";
|
||||
select STDOUT; close OUT;
|
||||
}
|
||||
|
||||
if (defined $makefiles{'vcproj'}) {
|
||||
$mftyp = 'vcproj';
|
||||
|
||||
|
Reference in New Issue
Block a user