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 | |
821ab2c6 |
16 | WINDOWS = windows printing |
17 | + user32.lib gdi32.lib comctl32.lib comdlg32.lib winspool.lib |
dafd6cf6 |
18 | COMMON = midend drawing misc malloc random version |
f1010613 |
19 | NET = net tree234 dsf |
7bed19e1 |
20 | NETSLIDE = netslide tree234 |
7959b517 |
21 | MINES = mines tree234 |
f4afe206 |
22 | FLIP = flip tree234 |
32ee875d |
23 | PEGS = pegs tree234 |
9d6c3859 |
24 | UNTANGLE = untangle tree234 |
f1010613 |
25 | SLANT = slant dsf |
c51c7de6 |
26 | MAP = map dsf |
6193da8d |
27 | LOOPY = loopy tree234 dsf |
9b265feb |
28 | LIGHTUP = lightup combi |
86e60e3d |
29 | TENTS = tents maxflow |
720a8fb7 |
30 | |
9038fd11 |
31 | ALL = list NET NETSLIDE cube fifteen sixteen rect pattern solo twiddle |
f1010613 |
32 | + MINES samegame FLIP guess PEGS dominosa UNTANGLE blackbox SLANT |
86e60e3d |
33 | + LIGHTUP MAP LOOPY inertia TENTS |
9494d866 |
34 | |
dafd6cf6 |
35 | GTK = gtk printing ps |
36 | |
37 | net : [X] GTK COMMON NET |
38 | netslide : [X] GTK COMMON NETSLIDE |
39 | cube : [X] GTK COMMON cube |
40 | fifteen : [X] GTK COMMON fifteen |
41 | sixteen : [X] GTK COMMON sixteen |
42 | rect : [X] GTK COMMON rect |
43 | pattern : [X] GTK COMMON pattern |
44 | solo : [X] GTK COMMON solo |
45 | twiddle : [X] GTK COMMON twiddle |
46 | mines : [X] GTK COMMON MINES |
47 | samegame : [X] GTK COMMON samegame |
48 | flip : [X] GTK COMMON FLIP |
49 | guess : [X] GTK COMMON guess |
50 | pegs : [X] GTK COMMON PEGS |
51 | dominosa : [X] GTK COMMON dominosa |
52 | untangle : [X] GTK COMMON UNTANGLE |
53 | blackbox : [X] GTK COMMON blackbox |
54 | slant : [X] GTK COMMON SLANT |
9b265feb |
55 | lightup : [X] GTK COMMON LIGHTUP |
dafd6cf6 |
56 | map : [X] GTK COMMON MAP |
6193da8d |
57 | loopy : [X] GTK COMMON LOOPY |
81eef9aa |
58 | inertia : [X] GTK COMMON inertia |
86e60e3d |
59 | tents : [X] GTK COMMON TENTS |
720a8fb7 |
60 | |
8317499a |
61 | # Auxiliary command-line programs. |
9b265feb |
62 | STANDALONE = nullfe random misc malloc |
8317499a |
63 | |
9b265feb |
64 | solosolver : [U] solo[STANDALONE_SOLVER] STANDALONE |
65 | patternsolver : [U] pattern[STANDALONE_SOLVER] STANDALONE |
66 | mineobfusc : [U] mines[STANDALONE_OBFUSCATOR] tree234 STANDALONE |
67 | slantsolver : [U] slant[STANDALONE_SOLVER] dsf STANDALONE |
68 | mapsolver : [U] map[STANDALONE_SOLVER] dsf STANDALONE m.lib |
69 | lightupsolver : [U] lightup[STANDALONE_SOLVER] combi STANDALONE |
86e60e3d |
70 | tentssolver : [U] tents[STANDALONE_SOLVER] maxflow STANDALONE |
9b265feb |
71 | |
72 | solosolver : [C] solo[STANDALONE_SOLVER] STANDALONE |
73 | patternsolver : [C] pattern[STANDALONE_SOLVER] STANDALONE |
74 | mineobfusc : [C] mines[STANDALONE_OBFUSCATOR] tree234 STANDALONE |
75 | slantsolver : [C] slant[STANDALONE_SOLVER] dsf STANDALONE |
76 | mapsolver : [C] map[STANDALONE_SOLVER] dsf STANDALONE |
77 | lightupsolver : [C] lightup[STANDALONE_SOLVER] combi STANDALONE |
86e60e3d |
78 | tentssolver : [C] tents[STANDALONE_SOLVER] maxflow STANDALONE |
8317499a |
79 | |
da72b383 |
80 | # The Windows Net shouldn't be called `net.exe' since Windows |
81 | # already has a reasonably important utility program by that name! |
82 | netgame : [G] WINDOWS COMMON NET |
7bed19e1 |
83 | netslide : [G] WINDOWS COMMON NETSLIDE |
4e7ef6e6 |
84 | cube : [G] WINDOWS COMMON cube |
4efb3868 |
85 | fifteen : [G] WINDOWS COMMON fifteen |
86 | sixteen : [G] WINDOWS COMMON sixteen |
3870c4d8 |
87 | rect : [G] WINDOWS COMMON rect |
b6b0369e |
88 | pattern : [G] WINDOWS COMMON pattern |
1d8e8ad8 |
89 | solo : [G] WINDOWS COMMON solo |
9038fd11 |
90 | twiddle : [G] WINDOWS COMMON twiddle |
7959b517 |
91 | mines : [G] WINDOWS COMMON MINES |
6bbab0fe |
92 | samegame : [G] WINDOWS COMMON samegame |
f4afe206 |
93 | flip : [G] WINDOWS COMMON FLIP |
74476385 |
94 | guess : [G] WINDOWS COMMON guess |
32ee875d |
95 | pegs : [G] WINDOWS COMMON PEGS |
6c04c334 |
96 | dominosa : [G] WINDOWS COMMON dominosa |
9d6c3859 |
97 | untangle : [G] WINDOWS COMMON UNTANGLE |
bf7ebf5a |
98 | blackbox : [G] WINDOWS COMMON blackbox |
f1010613 |
99 | slant : [G] WINDOWS COMMON SLANT |
9b265feb |
100 | lightup : [G] WINDOWS COMMON LIGHTUP |
c51c7de6 |
101 | map : [G] WINDOWS COMMON MAP |
6193da8d |
102 | loopy : [G] WINDOWS COMMON LOOPY |
81eef9aa |
103 | inertia : [G] WINDOWS COMMON inertia |
86e60e3d |
104 | tents : [G] WINDOWS COMMON TENTS |
699b896a |
105 | |
9494d866 |
106 | # Mac OS X unified application containing all the puzzles. |
a96edf8a |
107 | Puzzles : [MX] osx osx.icns osx-info.plist COMMON ALL |
fccfd04d |
108 | # For OS X, we must create the online help and include it in the |
08f7c1b2 |
109 | # application bundle.) Also we add -DCOMBINED to the compiler flags |
110 | # so as to inform the code that we're building a single binary for |
c4a7369d |
111 | # all the puzzles. Then I've also got some code in here to build a |
112 | # distributable .dmg disk image. |
fccfd04d |
113 | !begin osx |
08f7c1b2 |
114 | CFLAGS += -DCOMBINED |
fccfd04d |
115 | Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html |
116 | Puzzles.app/Contents/Resources/Help/index.html: \ |
8709d5d9 |
117 | Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but |
118 | cd Puzzles.app/Contents/Resources/Help; \ |
119 | halibut --html ../../../../osx-help.but ../../../../puzzles.but |
fccfd04d |
120 | Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources |
121 | mkdir -p Puzzles.app/Contents/Resources/Help |
c4a7369d |
122 | |
123 | release: Puzzles.dmg |
124 | Puzzles.dmg: Puzzles |
125 | rm -f raw.dmg |
126 | hdiutil create -megabytes 5 -layout NONE raw.dmg |
127 | hdid -nomount raw.dmg > devicename |
128 | newfs_hfs -v "Simon Tatham's Puzzle Collection" `cat devicename` |
129 | hdiutil eject `cat devicename` |
130 | hdid raw.dmg | cut -f1 -d' ' > devicename |
131 | cp -R Puzzles.app /Volumes/"Simon Tatham's Puzzle Collection" |
132 | hdiutil eject `cat devicename` |
133 | rm -f Puzzles.dmg |
134 | hdiutil convert -format UDCO raw.dmg -o Puzzles.dmg |
135 | rm -f raw.dmg devicename |
fccfd04d |
136 | !end |
9494d866 |
137 | |
699b896a |
138 | # The `nullgame' source file is a largely blank one, which contains |
139 | # all the correct function definitions to compile and link, but |
140 | # which defines the null game in which nothing is ever drawn and |
141 | # there are no valid moves. Its main purpose is to act as a |
142 | # template for writing new game definition source files. I include |
143 | # it in the Makefile because it will be worse than useless if it |
144 | # ever fails to compile, so it's important that it should actually |
145 | # be built on a regular basis. |
dafd6cf6 |
146 | nullgame : [X] GTK COMMON nullgame |
699b896a |
147 | nullgame : [G] WINDOWS COMMON nullgame |
97098757 |
148 | |
149 | # Version management. |
150 | !begin vc |
151 | version.obj: *.c *.h |
152 | cl $(VER) $(CFLAGS) /c version.c |
153 | !end |
154 | !specialobj vc version |
155 | !begin cygwin |
36d01ffa |
156 | version.o: FORCE; |
97098757 |
157 | FORCE: |
158 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c |
159 | !end |
160 | !specialobj cygwin version |
161 | # For Unix, we also need the gross MD5 hack that causes automatic |
162 | # version number selection in release source archives. |
163 | !begin gtk |
164 | version.o: FORCE; |
165 | FORCE: |
118fcd8b |
166 | if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ |
97098757 |
167 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c; \ |
eb935f91 |
168 | elif test -z "$(VER)" && test -d .svn && svnversion . >&/dev/null; then \ |
118fcd8b |
169 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c; \ |
97098757 |
170 | else \ |
171 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ |
172 | fi |
173 | !end |
174 | !specialobj gtk version |
175 | # For OS X, this is made more fiddly by the fact that we don't have |
176 | # md5sum readily available. We do, however, have `md5 -r' which |
177 | # generates _nearly_ the same output, but it has no check function. |
178 | !begin osx |
179 | version.o: FORCE; |
180 | FORCE: |
181 | if test -z "$(VER)" && test -f manifest && (md5 -r `awk '{print $$2}' manifest` | diff -w manifest -); then \ |
182 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) `cat version.def` -c version.c; \ |
eb935f91 |
183 | elif test -z "$(VER)" && test -d .svn && svnversion . >&/dev/null; then \ |
118fcd8b |
184 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) "-DREVISION=`svnversion .`" -c version.c; \ |
97098757 |
185 | else \ |
186 | $(CC) $(COMPAT) $(XFLAGS) $(CFLAGS) $(VER) -c version.c; \ |
187 | fi |
188 | !end |
189 | !specialobj osx version |
fd38f463 |
190 | |
191 | # make install for Unix. |
192 | !begin gtk |
193 | install: |
194 | for i in cube net netslide fifteen sixteen twiddle \ |
fad9cc36 |
195 | pattern rect solo mines samegame flip guess \ |
c51c7de6 |
196 | pegs dominosa untangle blackbox slant lightup \ |
86e60e3d |
197 | map loopy inertia tents; do \ |
0d336b11 |
198 | $(INSTALL_PROGRAM) -m 755 $$i $(DESTDIR)$(gamesdir)/$$i \ |
199 | || exit 1; \ |
fd38f463 |
200 | done |
201 | !end |