3 # This file describes which puzzle binaries are made up from which
4 # object and resource files. It is processed into the various
5 # Makefiles by means of a Perl script. Makefile changes should
6 # really be made by editing this file and/or the Perl script, not
7 # by editing the actual Makefiles.
11 !makefile gtk Makefile
12 !makefile vc Makefile.vc
13 !makefile wce Makefile.wce
14 !makefile cygwin Makefile.cyg
15 !makefile osx Makefile.osx
16 !makefile nestedvm Makefile.nestedvm
17 !makefile qt Makefile.qt
21 WINDOWS_COMMON = printing
22 + user32.lib gdi32.lib comctl32.lib comdlg32.lib winspool.lib
23 WINDOWS = windows WINDOWS_COMMON
24 COMMON = midend drawing misc malloc random version
27 # Objects needed for auxiliary command-line programs.
28 STANDALONE = nullfe random misc malloc
32 # First half of list.c.
35 * list.c: List of pointers to puzzle structures, for monolithic
38 * This file is automatically generated by mkfiles.pl. Do not edit
39 * it directly, or the changes will be lost next time mkfiles.pl runs.
40 * Instead, edit Recipe and/or its *.R subfiles.
46 # Now each .R file adds part of the macro definition of GAMELIST to list.c.
49 # Then we finish up list.c as follows:
52 #define DECL(x) extern const game x;
55 const game *gamelist[] = { GAMELIST(REF) };
56 const int gamecount = lenof(gamelist);
59 # Unix standalone application for special-purpose obfuscation.
60 obfusc : [U] obfusc STANDALONE
62 puzzles : [G] windows[COMBINED] WINDOWS_COMMON COMMON ALL noicon.res
64 # Mac OS X unified application containing all the puzzles.
65 Puzzles : [MX] osx osx.icns osx-info.plist COMMON ALL
66 # For OS X, we must create the online help and include it in the
67 # application bundle.) Also we add -DCOMBINED to the compiler flags
68 # so as to inform the code that we're building a single binary for
69 # all the puzzles. Then I've also got some code in here to build a
70 # distributable .dmg disk image.
72 Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html
73 Puzzles.app/Contents/Resources/Help/index.html: \
74 Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but
75 cd Puzzles.app/Contents/Resources/Help; \
76 halibut --html ../../../../osx-help.but ../../../../puzzles.but
77 Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources
78 mkdir -p Puzzles.app/Contents/Resources/Help
83 hdiutil create -megabytes 5 -layout NONE raw.dmg
84 hdid -nomount raw.dmg > devicename
85 newfs_hfs -v "Simon Tatham's Puzzle Collection" `cat devicename`
86 hdiutil eject `cat devicename`
87 hdid raw.dmg | cut -f1 -d' ' > devicename
88 cp -R Puzzles.app /Volumes/"Simon Tatham's Puzzle Collection"
89 hdiutil eject `cat devicename`
91 hdiutil convert -format UDCO raw.dmg -o Puzzles.dmg
92 rm -f raw.dmg devicename
98 cl $(VER) $(CFLAGS) /c version.c
100 !specialobj vc version
103 $(CC) $(VER) $(CFLAGS) /c version.c
105 !specialobj wce version
109 $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c
111 !specialobj cygwin version
112 # For Unix, we also need the gross MD5 hack that causes automatic
113 # version number selection in release source archives.
115 version.o: version.c version2.def
116 $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c
118 if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \
119 cat version.def > version2.def.new; \
120 elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \
121 echo "-DREVISION=`svnversion .`" >version2.def.new; \
123 echo "$(VER)" >version2.def.new; \
125 if diff -q version2.def.new version2.def; then \
126 rm version2.def.new; \
128 mv version2.def.new version2.def; \
132 !specialobj gtk version
134 version.o: version.c version2.def
135 $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c
137 if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \
138 cat version.def > version2.def.new; \
139 elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \
140 echo "-DREVISION=`svnversion .`" >version2.def.new; \
142 echo "$(VER)" >version2.def.new; \
144 if diff -q version2.def.new version2.def; then \
145 rm version2.def.new; \
147 mv version2.def.new version2.def; \
151 $(CXX) $(XFLAGS) $(CFLAGS) -c qt.cxx
153 $(CXX) $(XFLAGS) $(CFLAGS) -c qt_moc.cxx
155 moc qt.h -o qt_moc.cxx
157 !specialobj qt version
159 version.o: version.c version2.def
160 $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c
162 if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \
163 cat version.def > version2.def.new; \
164 elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \
165 echo "-DREVISION=`svnversion .`" >version2.def.new; \
167 echo "$(VER)" >version2.def.new; \
169 if diff -q version2.def.new version2.def; then \
170 rm version2.def.new; \
172 mv version2.def.new version2.def; \
176 !specialobj nestedvm version
177 # For OS X, this is made more fiddly by the fact that we don't have
178 # md5sum readily available. We do, however, have `md5 -r' which
179 # generates _nearly_ the same output, but it has no check function.
181 version.ppc.o: version.c version2.def
182 $(CC) -arch ppc $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c -o $@
183 version.i386.o: version.c version2.def
184 $(CC) -arch i386 $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version2.def` -c version.c -o $@
186 if test -z "$(VER)" && test -f manifest && (md5 -r `awk '{print $$2}' manifest` | diff -w manifest -); then \
187 cat version.def > version2.def.new; \
188 elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \
189 echo "-DREVISION=`svnversion .`" >version2.def.new; \
191 echo "$(VER)" >version2.def.new; \
193 if diff -q version2.def.new version2.def; then \
194 rm version2.def.new; \
196 mv version2.def.new version2.def; \
200 !specialobj osx version
202 # make install for Unix.
205 for i in $(GAMES); do \
206 $(INSTALL_PROGRAM) -m 755 $$i $(DESTDIR)$(gamesdir)/$$i \
212 for i in $(GAMES); do \
213 $(INSTALL_PROGRAM) -m 755 $$i $(DESTDIR)$(gamesdir)/$$i \
220 java -cp $(NESTEDVM)/build:$(NESTEDVM)/upstream/build/classgen/build \
221 org.ibex.nestedvm.Compiler -outformat class -d . \
223 mv PuzzleEngine.class $@
226 mkdir -p org/ibex/nestedvm/util
227 cp $(NESTEDVM)/build/org/ibex/nestedvm/{Registers,UsermodeConstants,Runtime*}.class org/ibex/nestedvm
228 cp $(NESTEDVM)/build/org/ibex/nestedvm/util/{Platform*,Seekable*}.class org/ibex/nestedvm/util
229 echo "Main-Class: PuzzleApplet" >applet.manifest
231 PuzzleApplet.class: PuzzleApplet.java org
232 javac -source 1.3 -target 1.3 PuzzleApplet.java
234 %.jar: %.class PuzzleApplet.class org
235 mv $< PuzzleEngine.class
236 jar cfm $@ applet.manifest PuzzleEngine.class PuzzleApplet*.class org
237 echo '<applet archive="'$@'" code="PuzzleApplet" width="700" height="500"></applet>' >$*.html
238 mv PuzzleEngine.class $<