ref: 6da884911025f5bfe78ffbf5389725e2b487bb5d
parent: 61395a5141e590f4fcf0964c4a6a3d2ef55d1ed9
author: Simon Tatham <anakin@pobox.com>
date: Sun May 6 05:54:34 EDT 2007
I still haven't managed to get the WinCE port building via bob, but I should at least check in what I've got. [originally from svn r7542]
--- a/Buildscr
+++ b/Buildscr
@@ -43,6 +43,41 @@
return puzzles/Output/setup.exe
enddelegate
+# Build the Pocket PC binaries and CAB.
+#
+# NOTE: This part of the build script requires the Windows delegate
+# server to have the cabwiz program on its PATH. This will
+# typically be at
+#
+# C:\Program Files\Windows CE Tools\WCE420\POCKET PC 2003\Tools
+#
+# but it might not be if you've installed it somewhere else, or
+# have a different version.
+#
+# NOTE ALSO: This part of the build is commented out, for the
+# moment, because cabwiz does unhelpful things when run from within
+# a bob delegate process (or, more generally, when run from any
+# terminal-based remote login to a Windows machine, including
+# Cygwin opensshd and Windows Telnet). The symptom is that cabwiz
+# just beeps and sits there. Until I figure out how to build the
+# .cab from an automated process (and I'm willing to consider silly
+# approaches such as a third-party CAB generator), I don't think I
+# can sensibly enable this build.
+
+#in puzzles do perl wceinf.pl wingames.lst > puzzles.inf
+#delegate windows
+# in puzzles do cmd /c 'wcearmv4 & nmake -f Makefile.wce clean'
+# in puzzles do cmd /c 'wcearmv4 & nmake -f Makefile.wce VER=-DREVISION=$(revision)'
+# # Nasty piece of sh here which saves the return code from cabwiz,
+# # outputs its errors and/or warnings, and then propagates the
+# # return code back to bob. If only cabwiz could output to
+# # standard error LIKE EVERY OTHER COMMAND-LINE UTILITY IN THE
+# # WORLD, I wouldn't have to do this.
+# in puzzles do cat puzzles.inf
+# in puzzles do cmd /c 'wcearmv4 & bash -c cabwiz puzzles.inf /err cabwiz.err /cpu ARMV4'; a=$$?; cat cabwiz.err; exit $$a
+# return puzzles/puzzles.armv4.cab
+#enddelegate
+
# Build the help file and the HTML docs.
in puzzles do make -f Makefile.doc clean # remove CHM-target HTML
in puzzles do make -f Makefile.doc # and rebuild help file...
@@ -84,6 +119,9 @@
deliver puzzles/puzzles.cnt $@
deliver puzzles/puzzles.zip $@
deliver puzzles/Output/setup.exe puzzles-r$(revision)-installer.exe
+
+# deliver puzzles/puzzles.armv4.cab $@ # (not built at the moment)
+
# This one isn't in the puzzles subdir, because makedist.sh left it
# one level up.
deliver puzzles*.tar.gz $@
--- /dev/null
+++ b/wceinf.pl
@@ -1,0 +1,65 @@
+#!/usr/bin/perl
+
+# Perl script to generate a .INF file for building a Pocket PC .CAB
+# archive of Puzzles. This has to be scripted so that it can read
+# wingames.lst and automatically adjust to the current available
+# set of puzzles.
+
+# Usage:
+#
+# $ ./wceinf.pl wingames.lst > puzzles.inf
+
+$lst = shift @ARGV;
+open LST, "<", $lst;
+while (<LST>) {
+ chomp;
+ split /:/;
+ push @exes, $_[0];
+ $names{$_[0]} = $_[1];
+}
+close LST;
+
+print '[Version]'."\n";
+print 'Signature = "$Windows NT$" ; required as-is'."\n";
+print 'Provider = "Simon Tatham" ; full app name will be "<Provider> <AppName>"'."\n";
+print 'CESignature = "$Windows CE$" ; required as-is'."\n";
+print ''."\n";
+print '[CEStrings]'."\n";
+print 'AppName = "Puzzle Collection" ; full app name will be "<Provider> <AppName>"'."\n";
+print 'InstallDir = %CE8%\%AppName% ; "\Program Files\Games\Puzzle Collection" (default install directory)'."\n";
+print ''."\n";
+print '[CEDevice.x86]'."\n";
+print 'ProcessorType = 686'."\n";
+print ''."\n";
+print '[CEDevice.ARM]'."\n";
+print 'ProcessorType = 2577'."\n";
+print ''."\n";
+print '[SourceDisksNames.x86] ; CPU-dependent files'."\n";
+print '2 = ,"x86 Files",,.'."\n";
+print ''."\n";
+print '[SourceDisksNames.ARMV4] ; CPU-dependent files'."\n";
+print '2 = ,"ARM Files",,.'."\n";
+print ''."\n";
+print '[SourceDisksFiles]'."\n";
+for $exe (@exes) {
+ print $exe.' = 2'."\n";
+}
+print ''."\n";
+print '[DefaultInstall]'."\n";
+print 'CopyFiles = PuzzleFiles'."\n";
+print 'CEShortcuts = Links'."\n";
+print ''."\n";
+print '[DestinationDirs]'."\n";
+print 'PuzzleFiles = 0, %InstallDir%'."\n";
+print 'Links = 0, %CE14%\Puzzles'."\n";
+print ''."\n";
+print ';File copy list.'."\n";
+print '[PuzzleFiles]'."\n";
+for $exe (@exes) {
+ print $exe."\n";
+}
+print ''."\n";
+print '[Links]'."\n";
+for $exe (@exes) {
+ print '"'.$names{$exe}.'",0,'.$exe."\n";
+}