# 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";
($x = $otmpl) =~ s/X/$i/;
}
@deps = @{$depends{$ii}};
+ # Skip things which are their own dependency.
+ next if grep { $_ eq $i } @deps;
@deps = map {
$_ = &findfile($_);
s/\//$dirsep/g;
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';