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:
Simon Tatham
2007-02-26 20:35:47 +00:00
parent 3bfe0fb32e
commit 15f70f527a
24 changed files with 928 additions and 105 deletions

View File

@ -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';