From c15493932bd57ae7abf7897d7b0ed6a7bd7a8e85 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 6 May 2007 09:54:34 +0000 Subject: [PATCH] I still haven't managed to get the WinCE port building via bob, but I should at least check in what I've got. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@7542 cda61777-01e9-0310-a592-d414129be87e --- Buildscr | 38 +++++++++++++++++++++++++++++++++++++ wceinf.pl | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 wceinf.pl diff --git a/Buildscr b/Buildscr index 951795b..b4995ed 100644 --- a/Buildscr +++ b/Buildscr @@ -43,6 +43,41 @@ delegate windows 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.hlp $@ 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 $@ diff --git a/wceinf.pl b/wceinf.pl new file mode 100644 index 0000000..8bfc117 --- /dev/null +++ b/wceinf.pl @@ -0,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 () { + 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 " "'."\n"; +print 'CESignature = "$Windows CE$" ; required as-is'."\n"; +print ''."\n"; +print '[CEStrings]'."\n"; +print 'AppName = "Puzzle Collection" ; full app name will be " "'."\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"; +} -- 2.11.0