720a8fb7 |
1 | # -*- makefile -*- |
2 | # |
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. |
8 | |
9 | !name puzzles |
10 | |
11 | !makefile gtk Makefile |
4e7ef6e6 |
12 | !makefile vc Makefile.vc |
eb2ad6f1 |
13 | !makefile cygwin Makefile.cyg |
9494d866 |
14 | !makefile osx Makefile.osx |
720a8fb7 |
15 | |
fd1a1a2b |
16 | WINDOWS = windows user32.lib gdi32.lib comctl32.lib |
97098757 |
17 | COMMON = midend misc malloc random version |
48d70ca9 |
18 | NET = net tree234 |
7bed19e1 |
19 | NETSLIDE = netslide tree234 |
7959b517 |
20 | MINES = mines tree234 |
720a8fb7 |
21 | |
9038fd11 |
22 | ALL = list NET NETSLIDE cube fifteen sixteen rect pattern solo twiddle |
6bbab0fe |
23 | + MINES samegame |
9494d866 |
24 | |
720a8fb7 |
25 | net : [X] gtk COMMON NET |
7bed19e1 |
26 | netslide : [X] gtk COMMON NETSLIDE |
1482ee76 |
27 | cube : [X] gtk COMMON cube |
4efb3868 |
28 | fifteen : [X] gtk COMMON fifteen |
29 | sixteen : [X] gtk COMMON sixteen |
3870c4d8 |
30 | rect : [X] gtk COMMON rect |
b6b0369e |
31 | pattern : [X] gtk COMMON pattern |
1d8e8ad8 |
32 | solo : [X] gtk COMMON solo |
9038fd11 |
33 | twiddle : [X] gtk COMMON twiddle |
7959b517 |
34 | mines : [X] gtk COMMON MINES |
6bbab0fe |
35 | samegame : [X] gtk COMMON samegame |
720a8fb7 |
36 | |
da72b383 |
37 | # The Windows Net shouldn't be called `net.exe' since Windows |
38 | # already has a reasonably important utility program by that name! |
39 | netgame : [G] WINDOWS COMMON NET |
7bed19e1 |
40 | netslide : [G] WINDOWS COMMON NETSLIDE |
4e7ef6e6 |
41 | cube : [G] WINDOWS COMMON cube |
4efb3868 |
42 | fifteen : [G] WINDOWS COMMON fifteen |
43 | sixteen : [G] WINDOWS COMMON sixteen |
3870c4d8 |
44 | rect : [G] WINDOWS COMMON rect |
b6b0369e |
45 | pattern : [G] WINDOWS COMMON pattern |
1d8e8ad8 |
46 | solo : [G] WINDOWS COMMON solo |
9038fd11 |
47 | twiddle : [G] WINDOWS COMMON twiddle |
7959b517 |
48 | mines : [G] WINDOWS COMMON MINES |
6bbab0fe |
49 | samegame : [G] WINDOWS COMMON samegame |
699b896a |
50 | |
9494d866 |
51 | # Mac OS X unified application containing all the puzzles. |
a96edf8a |
52 | Puzzles : [MX] osx osx.icns osx-info.plist COMMON ALL |
fccfd04d |
53 | # For OS X, we must create the online help and include it in the |
08f7c1b2 |
54 | # application bundle.) Also we add -DCOMBINED to the compiler flags |
55 | # so as to inform the code that we're building a single binary for |
c4a7369d |
56 | # all the puzzles. Then I've also got some code in here to build a |
57 | # distributable .dmg disk image. |
fccfd04d |
58 | !begin osx |
08f7c1b2 |
59 | CFLAGS += -DCOMBINED |
fccfd04d |
60 | Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html |
61 | Puzzles.app/Contents/Resources/Help/index.html: \ |
8709d5d9 |
62 | Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but |
63 | cd Puzzles.app/Contents/Resources/Help; \ |
64 | halibut --html ../../../../osx-help.but ../../../../puzzles.but |
fccfd04d |
65 | Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources |
66 | mkdir -p Puzzles.app/Contents/Resources/Help |
c4a7369d |
67 | |
68 | release: Puzzles.dmg |
69 | Puzzles.dmg: Puzzles |
70 | rm -f raw.dmg |
71 | hdiutil create -megabytes 5 -layout NONE raw.dmg |
72 | hdid -nomount raw.dmg > devicename |
73 | newfs_hfs -v "Simon Tatham's Puzzle Collection" `cat devicename` |
74 | hdiutil eject `cat devicename` |
75 | hdid raw.dmg | cut -f1 -d' ' > devicename |
76 | cp -R Puzzles.app /Volumes/"Simon Tatham's Puzzle Collection" |
77 | hdiutil eject `cat devicename` |
78 | rm -f Puzzles.dmg |
79 | hdiutil convert -format UDCO raw.dmg -o Puzzles.dmg |
80 | rm -f raw.dmg devicename |
fccfd04d |
81 | !end |
9494d866 |
82 | |
699b896a |
83 | # The `nullgame' source file is a largely blank one, which contains |
84 | # all the correct function definitions to compile and link, but |
85 | # which defines the null game in which nothing is ever drawn and |
86 | # there are no valid moves. Its main purpose is to act as a |
87 | # template for writing new game definition source files. I include |
88 | # it in the Makefile because it will be worse than useless if it |
89 | # ever fails to compile, so it's important that it should actually |
90 | # be built on a regular basis. |
91 | nullgame : [X] gtk COMMON nullgame |
92 | nullgame : [G] WINDOWS COMMON nullgame |
97098757 |
93 | |
94 | # Version management. |
95 | !begin vc |
96 | version.obj: *.c *.h |
97 | cl $(VER) $(CFLAGS) /c version.c |
98 | !end |
99 | !specialobj vc version |
100 | !begin cygwin |
36d01ffa |
101 | version.o: FORCE; |
97098757 |
102 | FORCE: |
103 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c |
104 | !end |
105 | !specialobj cygwin version |
106 | # For Unix, we also need the gross MD5 hack that causes automatic |
107 | # version number selection in release source archives. |
108 | !begin gtk |
109 | version.o: FORCE; |
110 | FORCE: |
118fcd8b |
111 | if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ |
97098757 |
112 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c; \ |
eb935f91 |
113 | elif test -z "$(VER)" && test -d .svn && svnversion . >&/dev/null; then \ |
118fcd8b |
114 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c; \ |
97098757 |
115 | else \ |
116 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ |
117 | fi |
118 | !end |
119 | !specialobj gtk version |
120 | # For OS X, this is made more fiddly by the fact that we don't have |
121 | # md5sum readily available. We do, however, have `md5 -r' which |
122 | # generates _nearly_ the same output, but it has no check function. |
123 | !begin osx |
124 | version.o: FORCE; |
125 | FORCE: |
126 | if test -z "$(VER)" && test -f manifest && (md5 -r `awk '{print $$2}' manifest` | diff -w manifest -); then \ |
127 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c; \ |
eb935f91 |
128 | elif test -z "$(VER)" && test -d .svn && svnversion . >&/dev/null; then \ |
118fcd8b |
129 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c; \ |
97098757 |
130 | else \ |
131 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ |
132 | fi |
133 | !end |
134 | !specialobj osx version |