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