shithub: puzzles

Download patch

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";
+}