summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2018-04-24 18:06:44 -0400
committerFranklin Wei <git@fwei.tk>2018-04-24 19:06:30 -0400
commit8f23493e08febc09c370b1d90d891953fa43ddf7 (patch)
tree99fcf3e896c96c969bf2b424af8e327a3cf74787
parentef0fb52113447c15f97eb8c707f56db4074eb578 (diff)
downloadrockbox-8f23493e08febc09c370b1d90d891953fa43ddf7.tar.gz
rockbox-8f23493e08febc09c370b1d90d891953fa43ddf7.zip
puzzles: resync with upstream
This brings the upstream version to b3da238 (though some of my own changes are included on top of that). Change-Id: Ida73e8cd86765413147ce891af3cc2b7aeda2b2a
-rw-r--r--apps/plugins/puzzles/src/Buildscr32
-rw-r--r--apps/plugins/puzzles/src/HACKING4661
-rw-r--r--apps/plugins/puzzles/src/Makefile2611
-rw-r--r--apps/plugins/puzzles/src/Makefile.am446
-rw-r--r--apps/plugins/puzzles/src/Makefile.clangcl1415
-rw-r--r--apps/plugins/puzzles/src/Makefile.cyg718
-rw-r--r--apps/plugins/puzzles/src/Makefile.emcc497
-rw-r--r--apps/plugins/puzzles/src/Makefile.gnustep412
-rw-r--r--apps/plugins/puzzles/src/Makefile.gtk727
-rw-r--r--apps/plugins/puzzles/src/Makefile.in2611
-rw-r--r--apps/plugins/puzzles/src/Makefile.nestedvm556
-rw-r--r--apps/plugins/puzzles/src/Makefile.osx574
-rw-r--r--apps/plugins/puzzles/src/Makefile.vc1040
-rw-r--r--apps/plugins/puzzles/src/Makefile.wce808
-rw-r--r--apps/plugins/puzzles/src/Recipe12
-rw-r--r--apps/plugins/puzzles/src/aclocal.m41832
-rwxr-xr-xapps/plugins/puzzles/src/compile348
-rw-r--r--apps/plugins/puzzles/src/config.log445
-rwxr-xr-xapps/plugins/puzzles/src/config.status1059
-rwxr-xr-xapps/plugins/puzzles/src/configure5739
-rwxr-xr-xapps/plugins/puzzles/src/depcomp791
-rw-r--r--apps/plugins/puzzles/src/devel.but65
-rw-r--r--apps/plugins/puzzles/src/filling.c17
-rw-r--r--apps/plugins/puzzles/src/gamedesc.txt39
-rw-r--r--apps/plugins/puzzles/src/gtk.c19
-rw-r--r--apps/plugins/puzzles/src/html/galaxies.html10
-rw-r--r--apps/plugins/puzzles/src/icons/Makefile17
-rwxr-xr-xapps/plugins/puzzles/src/install-sh501
-rw-r--r--apps/plugins/puzzles/src/keen.R8
-rw-r--r--apps/plugins/puzzles/src/keen.c21
-rw-r--r--apps/plugins/puzzles/src/latin.c135
-rw-r--r--apps/plugins/puzzles/src/list.c55
-rw-r--r--apps/plugins/puzzles/src/matching.c753
-rw-r--r--apps/plugins/puzzles/src/matching.h80
-rw-r--r--apps/plugins/puzzles/src/maxflow.c461
-rw-r--r--apps/plugins/puzzles/src/maxflow.h95
-rw-r--r--apps/plugins/puzzles/src/midend.c21
-rw-r--r--apps/plugins/puzzles/src/misc.c66
-rwxr-xr-xapps/plugins/puzzles/src/missing215
-rwxr-xr-xapps/plugins/puzzles/src/mkfiles.pl2
-rw-r--r--apps/plugins/puzzles/src/puzzles.but23
-rw-r--r--apps/plugins/puzzles/src/puzzles.cnt167
-rw-r--r--apps/plugins/puzzles/src/puzzles.h28
-rw-r--r--apps/plugins/puzzles/src/puzzles.hlpbin0 -> 201514 bytes
-rw-r--r--apps/plugins/puzzles/src/puzzles.txt3120
-rw-r--r--apps/plugins/puzzles/src/singles.R2
-rw-r--r--apps/plugins/puzzles/src/solo.c18
-rw-r--r--apps/plugins/puzzles/src/tents.R2
-rw-r--r--apps/plugins/puzzles/src/tents.c241
-rw-r--r--apps/plugins/puzzles/src/towers.R8
-rw-r--r--apps/plugins/puzzles/src/towers.c20
-rw-r--r--apps/plugins/puzzles/src/undead.c19
-rw-r--r--apps/plugins/puzzles/src/unequal.R10
-rw-r--r--apps/plugins/puzzles/src/unequal.c18
-rw-r--r--apps/plugins/puzzles/src/unfinished/group.R8
-rw-r--r--apps/plugins/puzzles/src/unfinished/group.c1
-rw-r--r--apps/plugins/puzzles/src/unfinished/separate.c1
-rw-r--r--apps/plugins/puzzles/src/unfinished/slide.c1
-rw-r--r--apps/plugins/puzzles/src/unfinished/sokoban.c1
-rw-r--r--apps/plugins/puzzles/src/unruly.c2
-rw-r--r--apps/plugins/puzzles/src/winwix.mc20
61 files changed, 32740 insertions, 884 deletions
diff --git a/apps/plugins/puzzles/src/Buildscr b/apps/plugins/puzzles/src/Buildscr
index 4a54d277ff..1cc65fd732 100644
--- a/apps/plugins/puzzles/src/Buildscr
+++ b/apps/plugins/puzzles/src/Buildscr
@@ -55,30 +55,31 @@ in puzzles do make -f Makefile.doc # build help files for installer
55in puzzles do mason.pl --args '{"version":"$(Version)","descfile":"gamedesc.txt"}' winwix.mc > puzzles.wxs 55in puzzles do mason.pl --args '{"version":"$(Version)","descfile":"gamedesc.txt"}' winwix.mc > puzzles.wxs
56in puzzles do perl winiss.pl $(Version) gamedesc.txt > puzzles.iss 56in puzzles do perl winiss.pl $(Version) gamedesc.txt > puzzles.iss
57ifneq "$(VISUAL_STUDIO)" "yes" then 57ifneq "$(VISUAL_STUDIO)" "yes" then
58 in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl clean 58 in puzzles with clangcl64 do mkdir win64 && Platform=x64 make -f Makefile.clangcl BUILDDIR=win64/ VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
59 in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror' 59 in puzzles with clangcl32 do mkdir win32 && Platform=x86 make -f Makefile.clangcl BUILDDIR=win32/ SUBSYSVER=,5.01 VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
60 # Code-sign the binaries, if the local bob config provides a script 60 # Code-sign the binaries, if the local bob config provides a script
61 # to do so. We assume here that the script accepts an -i option to 61 # to do so. We assume here that the script accepts an -i option to
62 # provide a 'more info' URL, and an optional -n option to provide a 62 # provide a 'more info' URL, and an optional -n option to provide a
63 # program name, and that it can take multiple .exe filename 63 # program name, and that it can take multiple .exe filename
64 # arguments and sign them all in place. 64 # arguments and sign them all in place.
65 ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ *.exe 65 ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ win64/*.exe win32/*.exe
66 # Build installers. 66 # Build installers.
67 in puzzles with wixonlinux do candle -arch x64 puzzles.wxs && light -ext WixUIExtension -sval puzzles.wixobj 67 in puzzles with wixonlinux do candle -arch x64 puzzles.wxs -dWin64=yes -dBindir=win64/ && light -ext WixUIExtension -sval puzzles.wixobj
68 ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ -n "Simon Tatham's Portable Puzzle Collection Installer" puzzles.msi 68 in puzzles with wixonlinux do candle -arch x86 puzzles.wxs -dWin64=no -dBindir=win32/ && light -ext WixUIExtension -sval puzzles.wixobj -o puzzles32.msi
69 ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ -n "Simon Tatham's Portable Puzzle Collection Installer" puzzles.msi puzzles32.msi
69else 70else
70 delegate windows 71 delegate windows
71 in puzzles with visualstudio do/win nmake -f Makefile.vc clean 72 in puzzles with visualstudio do/win nmake -f Makefile.vc clean
72 in puzzles with visualstudio do/win nmake -f Makefile.vc VER=-DVER=$(Version) 73 in puzzles with visualstudio do/win nmake -f Makefile.vc VER=-DVER=$(Version)
73 ifneq "$(winsigncode)" "" in puzzles do $(winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ *.exe 74 ifneq "$(winsigncode)" "" in puzzles do $(winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ win64/*.exe
74 # Build installers. 75 # Build installers.
75 in puzzles with wix do/win candle puzzles.wxs && light -ext WixUIExtension -sval puzzles.wixobj 76 in puzzles with wix do/win candle puzzles.wxs -dWin64=yes -dBindir=win64/ && light -ext WixUIExtension -sval puzzles.wixobj
76 in puzzles with innosetup do/win iscc puzzles.iss 77 in puzzles with innosetup do/win iscc puzzles.iss
77 return puzzles/*.exe 78 return puzzles/win64/*.exe
78 return puzzles/puzzles.msi 79 return puzzles/puzzles.msi
79 enddelegate 80 enddelegate
80endif 81endif
81in puzzles do chmod +x *.exe 82in puzzles do chmod +x win32/*.exe win64/*.exe
82 83
83# Build the Pocket PC binaries and CAB. 84# Build the Pocket PC binaries and CAB.
84# 85#
@@ -125,11 +126,13 @@ in puzzles/devel do halibut --html -Chtml-contents-filename:index.html -Chtml-in
125# gamedesc.txt, which is generated by mkfiles.pl and helpfully 126# gamedesc.txt, which is generated by mkfiles.pl and helpfully
126# excludes the command-line auxiliary utilities such as solosolver, 127# excludes the command-line auxiliary utilities such as solosolver,
127# and nullgame.exe) into a subdirectory for easy access. 128# and nullgame.exe) into a subdirectory for easy access.
128in puzzles do mkdir winbin 129in puzzles do mkdir winbin64 winbin32
129in puzzles do mv `cut -f2 -d: gamedesc.txt` winbin 130in puzzles/win64 do mv `cut -f2 -d: ../gamedesc.txt` ../winbin64
131in puzzles/win32 do mv `cut -f2 -d: ../gamedesc.txt` ../winbin32
130 132
131# Make a zip file of the Windows binaries and help files. 133# Make a zip file of the Windows binaries and help files.
132in puzzles do zip -j puzzles.zip winbin/*.exe puzzles.chm puzzles.hlp puzzles.cnt 134in puzzles do zip -j puzzles.zip winbin64/*.exe puzzles.chm puzzles.hlp puzzles.cnt
135in puzzles do zip -j puzzles32.zip winbin32/*.exe puzzles.chm puzzles.hlp puzzles.cnt
133 136
134# Create the source archive. (That writes the archive into the 137# Create the source archive. (That writes the archive into the
135# _parent_ directory, so be careful when we deliver it.) 138# _parent_ directory, so be careful when we deliver it.)
@@ -177,7 +180,8 @@ in puzzles do echo RedirectMatch temp '(.*/)'puzzles-installer.msi '$$1'puzzles-
177 180
178# Phew, we're done. Deliver everything! 181# Phew, we're done. Deliver everything!
179deliver puzzles/icons/*-web.png $@ 182deliver puzzles/icons/*-web.png $@
180deliver puzzles/winbin/*.exe $@ 183deliver puzzles/winbin64/*.exe $@
184deliver puzzles/winbin32/*.exe w32/$@
181deliver puzzles/.htaccess $@ 185deliver puzzles/.htaccess $@
182deliver puzzles/doc/*.html doc/$@ 186deliver puzzles/doc/*.html doc/$@
183deliver puzzles/devel/*.html devel/$@ 187deliver puzzles/devel/*.html devel/$@
@@ -186,7 +190,9 @@ deliver puzzles/puzzles.chm $@
186deliver puzzles/puzzles.hlp $@ 190deliver puzzles/puzzles.hlp $@
187deliver puzzles/puzzles.cnt $@ 191deliver puzzles/puzzles.cnt $@
188deliver puzzles/puzzles.zip $@ 192deliver puzzles/puzzles.zip $@
193deliver puzzles/puzzles32.zip w32/$@
189deliver puzzles/puzzles.msi puzzles-$(Version)-installer.msi 194deliver puzzles/puzzles.msi puzzles-$(Version)-installer.msi
195deliver puzzles/puzzles32.msi w32/puzzles-$(Version)-32bit-installer.msi
190deliver puzzles/*.jar java/$@ 196deliver puzzles/*.jar java/$@
191deliver puzzles/js/*.js js/$@ 197deliver puzzles/js/*.js js/$@
192deliver puzzles/jstest/*.html jstest/$@ 198deliver puzzles/jstest/*.html jstest/$@
diff --git a/apps/plugins/puzzles/src/HACKING b/apps/plugins/puzzles/src/HACKING
new file mode 100644
index 0000000000..e877280e1c
--- /dev/null
+++ b/apps/plugins/puzzles/src/HACKING
@@ -0,0 +1,4661 @@
1#Developer documentation for Simon Tatham's puzzle collection
2
3This is a guide to the internal structure of Simon Tatham's Portable
4Puzzle Collection (henceforth referred to simply as `Puzzles'), for
5use by anyone attempting to implement a new puzzle or port to a new
6platform.
7
8This guide is believed correct as of r6190. Hopefully it will be updated
9along with the code in future, but if not, I've at least left this
10version number in here so you can figure out what's changed by tracking
11commit comments from there onwards.
12
13#1. Introduction
14
15The Puzzles code base is divided into four parts: a set of
16interchangeable front ends, a set of interchangeable back ends, a
17universal `middle end' which acts as a buffer between the two, and a
18bunch of miscellaneous utility functions. In the following sections I
19give some general discussion of each of these parts.
20
21#1.1. Front end
22
23The front end is the non-portable part of the code: it's the bit that
24you replace completely when you port to a different platform. So it's
25responsible for all system calls, all GUI interaction, and anything else
26platform-specific.
27
28The current front ends in the main code base are for Windows, GTK and
29MacOS X; I also know of a third-party front end for PalmOS.
30
31The front end contains main() or the local platform's equivalent. Top-
32level control over the application's execution flow belongs to the front
33end (it isn't, for example, a set of functions called by a universal
34main() somewhere else).
35
36The front end has complete freedom to design the GUI for any given
37port of Puzzles. There is no centralised mechanism for maintaining the
38menu layout, for example. This has a cost in consistency (when I _do_
39want the same menu layout on more than one platform, I have to edit
40two pieces of code in parallel every time I make a change), but the
41advantage is that local GUI conventions can be conformed to and local
42constraints adapted to. For example, MacOS X has strict human interface
43guidelines which specify a different menu layout from the one I've used
44on Windows and GTK; there's nothing stopping the OS X front end from
45providing a menu layout consistent with those guidelines.
46
47Although the front end is mostly caller rather than the callee in its
48interactions with other parts of the code, it is required to implement
49a small API for other modules to call, mostly of drawing functions for
50games to use when drawing their graphics. The drawing API is documented
51in chapter 3; the other miscellaneous front end API functions are
52documented in section 4.34.
53
54#1.2. Back end
55
56A `back end', in this collection, is synonymous with a `puzzle'. Each
57back end implements a different game.
58
59At the top level, a back end is simply a data structure, containing a
60few constants (flag words, preferred pixel size) and a large number of
61function pointers. Back ends are almost invariably callee rather than
62caller, which means there's a limitation on what a back end can do on
63its own initiative.
64
65The persistent state in a back end is divided into a number of data
66structures, which are used for different purposes and therefore likely
67to be switched around, changed without notice, and otherwise updated by
68the rest of the code. It is important when designing a back end to put
69the right pieces of data into the right structures, or standard midend-
70provided features (such as Undo) may fail to work.
71
72The functions and variables provided in the back end data structure are
73documented in chapter 2.
74
75#1.3. Middle end
76
77Puzzles has a single and universal `middle end'. This code is common to
78all platforms and all games; it sits in between the front end and the
79back end and provides standard functionality everywhere.
80
81People adding new back ends or new front ends should generally not need
82to edit the middle end. On rare occasions there might be a change that
83can be made to the middle end to permit a new game to do something not
84currently anticipated by the middle end's present design; however, this
85is terribly easy to get wrong and should probably not be undertaken
86without consulting the primary maintainer (me). Patch submissions
87containing unannounced mid-end changes will be treated on their merits
88like any other patch; this is just a friendly warning that mid-end
89changes will need quite a lot of merits to make them acceptable.
90
91Functionality provided by the mid-end includes:
92
93 - Maintaining a list of game state structures and moving back and
94 forth along that list to provide Undo and Redo.
95
96 - Handling timers (for move animations, flashes on completion, and in
97 some cases actually timing the game).
98
99 - Handling the container format of game IDs: receiving them, picking
100 them apart into parameters, description and/or random seed, and
101 so on. The game back end need only handle the individual parts
102 of a game ID (encoded parameters and encoded game description);
103 everything else is handled centrally by the mid-end.
104
105 - Handling standard keystrokes and menu commands, such as `New Game',
106 `Restart Game' and `Quit'.
107
108 - Pre-processing mouse events so that the game back ends can rely on
109 them arriving in a sensible order (no missing button-release events,
110 no sudden changes of which button is currently pressed, etc).
111
112 - Handling the dialog boxes which ask the user for a game ID.
113
114 - Handling serialisation of entire games (for loading and saving a
115 half-finished game to a disk file, or for handling application
116 shutdown and restart on platforms such as PalmOS where state is
117 expected to be saved).
118
119Thus, there's a lot of work done once by the mid-end so that individual
120back ends don't have to worry about it. All the back end has to do is
121cooperate in ensuring the mid-end can do its work properly.
122
123The API of functions provided by the mid-end to be called by the front
124end is documented in chapter 4.
125
126#1.4. Miscellaneous utilities
127
128In addition to these three major structural components, the Puzzles code
129also contains a variety of utility modules usable by all of the above
130components. There is a set of functions to provide platform-independent
131random number generation; functions to make memory allocation easier;
132functions which implement a balanced tree structure to be used as
133necessary in complex algorithms; and a few other miscellaneous
134functions. All of these are documented in chapter 5.
135
136#1.5. Structure of this guide
137
138There are a number of function call interfaces within Puzzles, and this
139guide will discuss each one in a chapter of its own. After that, chapter
1406 discusses how to design new games, with some general design thoughts
141and tips.
142
143#2. Interface to the back end
144
145This chapter gives a detailed discussion of the interface that each back
146end must implement.
147
148At the top level, each back end source file exports a single global
149symbol, which is a `const struct game' containing a large number of
150function pointers and a small amount of constant data. This structure is
151called by different names depending on what kind of platform the puzzle
152set is being compiled on:
153
154 - On platforms such as Windows and GTK, which build a separate binary
155 for each puzzle, the game structure in every back end has the same
156 name, `thegame'; the front end refers directly to this name, so that
157 compiling the same front end module against a different back end
158 module builds a different puzzle.
159
160 - On platforms such as MacOS X and PalmOS, which build all the puzzles
161 into a single monolithic binary, the game structure in each back end
162 must have a different name, and there's a helper module `list.c'
163 (constructed automatically by the same Perl script that builds the
164 Makefiles) which contains a complete list of those game structures.
165
166On the latter type of platform, source files may assume that the
167preprocessor symbol `COMBINED' has been defined. Thus, the usual code to
168declare the game structure looks something like this:
169
170 #ifdef COMBINED
171 #define thegame net /* or whatever this game is called */
172 #endif
173
174 const struct game thegame = {
175 /* lots of structure initialisation in here */
176 };
177
178Game back ends must also internally define a number of data structures,
179for storing their various persistent state. This chapter will first
180discuss the nature and use of those structures, and then go on to give
181details of every element of the game structure.
182
183#2.1. Data structures
184
185Each game is required to define four separate data structures. This
186section discusses each one and suggests what sorts of things need to be
187put in it.
188
189#2.1.1. `game_params'
190
191The `game_params' structure contains anything which affects the
192automatic generation of new puzzles. So if puzzle generation is
193parametrised in any way, those parameters need to be stored in
194`game_params'.
195
196Most puzzles currently in this collection are played on a grid of
197squares, meaning that the most obvious parameter is the grid size. Many
198puzzles have additional parameters; for example, Mines allows you to
199control the number of mines in the grid independently of its size, Net
200can be wrapping or non-wrapping, Solo has difficulty levels and symmetry
201settings, and so on.
202
203A simple rule for deciding whether a data item needs to go in
204`game_params' is: would the user expect to be able to control this data
205item from either the preset-game-types menu or the `Custom' game type
206configuration? If so, it's part of `game_params'.
207
208`game_params' structures are permitted to contain pointers to subsidiary
209data if they need to. The back end is required to provide functions to
210create and destroy `game_params', and those functions can allocate and
211free additional memory if necessary. (It has not yet been necessary to
212do this in any puzzle so far, but the capability is there just in case.)
213
214`game_params' is also the only structure which the game's compute_size()
215function may refer to; this means that any aspect of the game which
216affects the size of the window it needs to be drawn in must be stored in
217`game_params'. In particular, this imposes the fundamental limitation
218that random game generation may not have a random effect on the window
219size: game generation algorithms are constrained to work by starting
220from the grid size rather than generating it as an emergent phenomenon.
221(Although this is a restriction in theory, it has not yet seemed to be a
222problem.)
223
224#2.1.2. `game_state'
225
226While the user is actually playing a puzzle, the `game_state' structure
227stores all the data corresponding to the current state of play.
228
229The mid-end keeps `game_state's in a list, and adds to the list every
230time the player makes a move; the Undo and Redo functions step back and
231forth through that list.
232
233Therefore, a good means of deciding whether a data item needs to go in
234`game_state' is: would a player expect that data item to be restored on
235undo? If so, put it in `game_state', and this will automatically happen
236without you having to lift a finger. If not - for example, the deaths
237counter in Mines is precisely something that does _not_ want to be reset
238to its previous state on an undo - then you might have found a data item
239that needs to go in `game_ui' instead.
240
241During play, `game_state's are often passed around without an
242accompanying `game_params' structure. Therefore, any information in
243`game_params' which is important during play (such as the grid size)
244must be duplicated within the `game_state'. One simple method of doing
245this is to have the `game_state' structure _contain_ a `game_params'
246structure as one of its members, although this isn't obligatory if you
247prefer to do it another way.
248
249#2.1.3. `game_drawstate'
250
251`game_drawstate' carries persistent state relating to the current
252graphical contents of the puzzle window. The same `game_drawstate'
253is passed to every call to the game redraw function, so that it can
254remember what it has already drawn and what needs redrawing.
255
256A typical use for a `game_drawstate' is to have an array mirroring the
257array of grid squares in the `game_state'; then every time the redraw
258function was passed a `game_state', it would loop over all the squares,
259and physically redraw any whose description in the `game_state' (i.e.
260what the square needs to look like when the redraw is completed) did
261not match its description in the `game_drawstate' (i.e. what the square
262currently looks like).
263
264`game_drawstate' is occasionally completely torn down and reconstructed
265by the mid-end, if the user somehow forces a full redraw. Therefore, no
266data should be stored in `game_drawstate' which is _not_ related to the
267state of the puzzle window, because it might be unexpectedly destroyed.
268
269The back end provides functions to create and destroy `game_drawstate',
270which means it can contain pointers to subsidiary allocated data if it
271needs to. A common thing to want to allocate in a `game_drawstate' is a
272`blitter'; see section 3.1.13 for more on this subject.
273
274#2.1.4. `game_ui'
275
276`game_ui' contains whatever doesn't fit into the above three structures!
277
278A new `game_ui' is created when the user begins playing a new instance
279of a puzzle (i.e. during `New Game' or after entering a game ID etc). It
280persists until the user finishes playing that game and begins another
281one (or closes the window); in particular, `Restart Game' does _not_
282destroy the `game_ui'.
283
284`game_ui' is useful for implementing user-interface state which is not
285part of `game_state'. Common examples are keyboard control (you wouldn't
286want to have to separately Undo through every cursor motion) and mouse
287dragging. See section 6.3.2 and section 6.3.3, respectively, for more
288details.
289
290Another use for `game_ui' is to store highly persistent data such as
291the Mines death counter. This is conceptually rather different: where
292the Net cursor position was _not important enough_ to preserve for the
293player to restore by Undo, the Mines death counter is _too important_ to
294permit the player to revert by Undo!
295
296A final use for `game_ui' is to pass information to the redraw function
297about recent changes to the game state. This is used in Mines, for
298example, to indicate whether a requested `flash' should be a white flash
299for victory or a red flash for defeat; see section 6.3.5.
300
301#2.2. Simple data in the back end
302
303In this section I begin to discuss each individual element in the back
304end structure. To begin with, here are some simple self-contained data
305elements.
306
307#2.2.1. `name'
308
309 const char *name;
310
311This is a simple ASCII string giving the name of the puzzle. This name
312will be used in window titles, in game selection menus on monolithic
313platforms, and anywhere else that the front end needs to know the name
314of a game.
315
316#2.2.2. `winhelp_topic'
317
318 const char *winhelp_topic;
319
320This member is used on Windows only, to provide online help. Although
321the Windows front end provides a separate binary for each puzzle, it has
322a single monolithic help file; so when a user selects `Help' from the
323menu, the program needs to open the help file and jump to the chapter
324describing that particular puzzle.
325
326Therefore, each chapter in `puzzles.but' is labelled with a _help topic_
327name, similar to this:
328
329 \cfg{winhelp-topic}{games.net}
330
331And then the corresponding game back end encodes the topic string (here
332`games.net') in the `winhelp_topic' element of the game structure.
333
334#2.3. Handling game parameter sets
335
336In this section I present the various functions which handle the
337`game_params' structure.
338
339#2.3.1. default_params()
340
341 game_params *(*default_params)(void);
342
343This function allocates a new `game_params' structure, fills it with the
344default values, and returns a pointer to it.
345
346#2.3.2. fetch_preset()
347
348 int (*fetch_preset)(int i, char **name, game_params **params);
349
350This function is one of the two APIs a back end can provide to populate
351the `Type' menu, which provides a list of conveniently accessible preset
352parameters for most games.
353
354The function is called with `i' equal to the index of the preset
355required (numbering from zero). It returns FALSE if that preset does
356not exist (if `i' is less than zero or greater than the largest preset
357index). Otherwise, it sets `*params' to point at a newly allocated
358`game_params' structure containing the preset information, sets `*name'
359to point at a newly allocated C string containing the preset title (to
360go on the `Type' menu), and returns TRUE.
361
362If the game does not wish to support any presets at all, this function
363is permitted to return FALSE always.
364
365If the game wants to return presets in the form of a hierarchical menu
366instead of a flat list (and, indeed, even if it doesn't), then it may
367set this function pointer to NULL, and instead fill in the alternative
368function pointer preset_menu (section 2.3.3).
369
370#2.3.3. preset_menu()
371
372 struct preset_menu *(*preset_menu)(void);
373
374This function is the more flexible of the two APIs by which a back end
375can define a collection of preset game parameters.
376
377This function simply returns a complete menu hierarchy, in the form
378of a `struct preset_menu' (see section 4.15) and further submenus (if
379it wishes) dangling off it. There are utility functions described in
380section 5.2 to make it easy for the back end to construct this menu.
381
382If the game has no need to return a hierarchy of menus, it may instead
383opt to implement the fetch_preset() function (see section 2.3.2).
384
385The game need not fill in the `id' fields in the preset menu structures.
386The mid-end will do that after it receives the structure from the game,
387and before passing it on to the front end.
388
389#2.3.4. encode_params()
390
391 char *(*encode_params)(const game_params *params, int full);
392
393The job of this function is to take a `game_params', and encode it in
394a string form for use in game IDs. The return value must be a newly
395allocated C string, and _must_ not contain a colon or a hash (since
396those characters are used to mark the end of the parameter section in a
397game ID).
398
399Ideally, it should also not contain any other potentially controversial
400punctuation; bear in mind when designing a string parameter format
401that it will probably be used on both Windows and Unix command lines
402under a variety of exciting shell quoting and metacharacter rules.
403Sticking entirely to alphanumerics is the safest thing; if you really
404need punctuation, you can probably get away with commas, periods or
405underscores without causing anybody any major inconvenience. If you
406venture far beyond that, you're likely to irritate _somebody_.
407
408(At the time of writing this, all existing games have purely
409alphanumeric string parameter formats. Usually these involve a letter
410denoting a parameter, followed optionally by a number giving the value
411of that parameter, with a few mandatory parts at the beginning such as
412numeric width and height separated by `x'.)
413
414If the `full' parameter is TRUE, this function should encode absolutely
415everything in the `game_params', such that a subsequent call to
416decode_params() (section 2.3.5) will yield an identical structure.
417If `full' is FALSE, however, you should leave out anything which
418is not necessary to describe a _specific puzzle instance_, i.e.
419anything which only takes effect when a new puzzle is _generated_.
420For example, the Solo `game_params' includes a difficulty rating used
421when constructing new puzzles; but a Solo game ID need not explicitly
422include the difficulty, since to describe a puzzle once generated it's
423sufficient to give the grid dimensions and the location and contents
424of the clue squares. (Indeed, one might very easily type in a puzzle
425out of a newspaper without _knowing_ what its difficulty level is in
426Solo's terminology.) Therefore, Solo's encode_params() only encodes the
427difficulty level if `full' is set.
428
429#2.3.5. decode_params()
430
431 void (*decode_params)(game_params *params, char const *string);
432
433This function is the inverse of encode_params() (section 2.3.4). It
434parses the supplied string and fills in the supplied `game_params'
435structure. Note that the structure will _already_ have been allocated:
436this function is not expected to create a _new_ `game_params', but to
437modify an existing one.
438
439This function can receive a string which only encodes a subset of the
440parameters. The most obvious way in which this can happen is if the
441string was constructed by encode_params() with its `full' parameter set
442to FALSE; however, it could also happen if the user typed in a parameter
443set manually and missed something out. Be prepared to deal with a wide
444range of possibilities.
445
446When dealing with a parameter which is not specified in the input
447string, what to do requires a judgment call on the part of the
448programmer. Sometimes it makes sense to adjust other parameters to bring
449them into line with the new ones. In Mines, for example, you would
450probably not want to keep the same mine count if the user dropped the
451grid size and didn't specify one, since you might easily end up with
452more mines than would actually fit in the grid! On the other hand,
453sometimes it makes sense to leave the parameter alone: a Solo player
454might reasonably expect to be able to configure size and difficulty
455independently of one another.
456
457This function currently has no direct means of returning an error if the
458string cannot be parsed at all. However, the returned `game_params' is
459almost always subsequently passed to validate_params() (section 2.3.11),
460so if you really want to signal parse errors, you could always have a
461`char *' in your parameters structure which stored an error message, and
462have validate_params() return it if it is non-NULL.
463
464#2.3.6. free_params()
465
466 void (*free_params)(game_params *params);
467
468This function frees a `game_params' structure, and any subsidiary
469allocations contained within it.
470
471#2.3.7. dup_params()
472
473 game_params *(*dup_params)(const game_params *params);
474
475This function allocates a new `game_params' structure and initialises it
476with an exact copy of the information in the one provided as input. It
477returns a pointer to the new duplicate.
478
479#2.3.8. `can_configure'
480
481 int can_configure;
482
483This boolean data element is set to TRUE if the back end supports
484custom parameter configuration via a dialog box. If it is TRUE, then
485the functions configure() and custom_params() are expected to work. See
486section 2.3.9 and section 2.3.10 for more details.
487
488#2.3.9. configure()
489
490 config_item *(*configure)(const game_params *params);
491
492This function is called when the user requests a dialog box for
493custom parameter configuration. It returns a newly allocated array of
494config_item structures, describing the GUI elements required in the
495dialog box. The array should have one more element than the number of
496controls, since it is terminated with a C_END marker (see below). Each
497array element describes the control together with its initial value; the
498front end will modify the value fields and return the updated array to
499custom_params() (see section 2.3.10).
500
501The config_item structure contains the following elements:
502
503 char *name;
504 int type;
505 union { /* type-specific fields */ } u;
506
507`name' is an ASCII string giving the textual label for a GUI control. It
508is _not_ expected to be dynamically allocated.
509
510`type' contains one of a small number of `enum' values defining what
511type of control is being described. The usable member of the union field
512`u' depends on `type'. The valid type values are:
513
514`C_STRING'
515
516 Describes a text input box. (This is also used for numeric input.
517 The back end does not bother informing the front end that the box is
518 numeric rather than textual; some front ends do have the capacity
519 to take this into account, but I decided it wasn't worth the extra
520 complexity in the interface.)
521
522 For controls of this type, `u.string' contains a single field
523
524 char *sval;
525
526 which stores a dynamically allocated string representing the
527 contents of the input box.
528
529`C_BOOLEAN'
530
531 Describes a simple checkbox.
532
533 For controls of this type, `u.boolean' contains a single field
534
535 int bval;
536
537 which is either TRUE or FALSE.
538
539`C_CHOICES'
540
541 Describes a drop-down list presenting one of a small number of fixed
542 choices.
543
544 For controls of this type, `u.choices' contains two fields:
545
546 const char *choicenames;
547 int selected;
548
549 `choicenames' contains a list of strings describing the choices.
550 The very first character of `sval' is used as a delimiter when
551 processing the rest (so that the strings `:zero:one:two',
552 `!zero!one!two' and `xzeroxonextwo' all define a three-element list
553 containing `zero', `one' and `two').
554
555 `selected' contains the index of the currently selected element,
556 numbering from zero (so that in the above example, 0 would mean
557 `zero' and 2 would mean `two').
558
559 Note that `u.choices.choicenames' is _not_ dynamically allocated,
560 unlike `u.string.sval'.
561
562`C_END'
563
564 Marks the end of the array of `config_item's. There is no associated
565 member of the union field `u' for this type.
566
567The array returned from this function is expected to have filled in the
568initial values of all the controls according to the input `game_params'
569structure.
570
571If the game's `can_configure' flag is set to FALSE, this function is
572never called and need not do anything at all.
573
574#2.3.10. custom_params()
575
576 game_params *(*custom_params)(const config_item *cfg);
577
578This function is the counterpart to configure() (section 2.3.9). It
579receives as input an array of `config_item's which was originally
580created by configure(), but in which the control values have since been
581changed in accordance with user input. Its function is to read the new
582values out of the controls and return a newly allocated `game_params'
583structure representing the user's chosen parameter set.
584
585(The front end will have modified the controls' _values_, but there will
586still always be the same set of controls, in the same order, as provided
587by configure(). It is not necessary to check the `name' and `type'
588fields, although you could use assert() if you were feeling energetic.)
589
590This function is not expected to (and indeed _must not_) free the input
591`config_item' array. (If the parameters fail to validate, the dialog box
592will stay open.)
593
594If the game's `can_configure' flag is set to FALSE, this function is
595never called and need not do anything at all.
596
597#2.3.11. validate_params()
598
599 const char *(*validate_params)(const game_params *params,
600 int full);
601
602This function takes a `game_params' structure as input, and checks that
603the parameters described in it fall within sensible limits. (At the very
604least, grid dimensions should almost certainly be strictly positive, for
605example.)
606
607Return value is NULL if no problems were found, or alternatively a (non-
608dynamically-allocated) ASCII string describing the error in human-
609readable form.
610
611If the `full' parameter is set, full validation should be performed: any
612set of parameters which would not permit generation of a sensible puzzle
613should be faulted. If `full' is _not_ set, the implication is that
614these parameters are not going to be used for _generating_ a puzzle; so
615parameters which can't even sensibly _describe_ a valid puzzle should
616still be faulted, but parameters which only affect puzzle generation
617should not be.
618
619(The `full' option makes a difference when parameter combinations are
620non-orthogonal. For example, Net has a boolean option controlling
621whether it enforces a unique solution; it turns out that it's impossible
622to generate a uniquely soluble puzzle with wrapping walls and width
6232, so validate_params() will complain if you ask for one. However,
624if the user had just been playing a unique wrapping puzzle of a more
625sensible width, and then pastes in a game ID acquired from somebody else
626which happens to describe a _non_-unique wrapping width-2 puzzle, then
627validate_params() will be passed a `game_params' containing the width
628and wrapping settings from the new game ID and the uniqueness setting
629from the old one. This would be faulted, if it weren't for the fact that
630`full' is not set during this call, so Net ignores the inconsistency.
631The resulting `game_params' is never subsequently used to generate a
632puzzle; this is a promise made by the mid-end when it asks for a non-
633full validation.)
634
635#2.4. Handling game descriptions
636
637In this section I present the functions that deal with a textual
638description of a puzzle, i.e. the part that comes after the colon in a
639descriptive-format game ID.
640
641#2.4.1. new_desc()
642
643 char *(*new_desc)(const game_params *params, random_state *rs,
644 char **aux, int interactive);
645
646This function is where all the really hard work gets done. This is
647the function whose job is to randomly generate a new puzzle, ensuring
648solubility and uniqueness as appropriate.
649
650As input it is given a `game_params' structure and a random state
651(see section 5.1 for the random number API). It must invent a puzzle
652instance, encode it in string form, and return a dynamically allocated C
653string containing that encoding.
654
655Additionally, it may return a second dynamically allocated string
656in `*aux'. (If it doesn't want to, then it can leave that parameter
657completely alone; it isn't required to set it to NULL, although doing
658so is harmless.) That string, if present, will be passed to solve()
659(section 2.7.4) later on; so if the puzzle is generated in such a way
660that a solution is known, then information about that solution can be
661saved in `*aux' for solve() to use.
662
663The `interactive' parameter should be ignored by almost all puzzles.
664Its purpose is to distinguish between generating a puzzle within a GUI
665context for immediate play, and generating a puzzle in a command-line
666context for saving to be played later. The only puzzle that currently
667uses this distinction (and, I fervently hope, the only one which will
668_ever_ need to use it) is Mines, which chooses a random first-click
669location when generating puzzles non-interactively, but which waits
670for the user to place the first click when interactive. If you think
671you have come up with another puzzle which needs to make use of this
672parameter, please think for at least ten minutes about whether there is
673_any_ alternative!
674
675Note that game description strings are not required to contain an
676encoding of parameters such as grid size; a game description is
677never separated from the `game_params' it was generated with, so any
678information contained in that structure need not be encoded again in the
679game description.
680
681#2.4.2. validate_desc()
682
683 const char *(*validate_desc)(const game_params *params,
684 const char *desc);
685
686This function is given a game description, and its job is to validate
687that it describes a puzzle which makes sense.
688
689To some extent it's up to the user exactly how far they take the phrase
690`makes sense'; there are no particularly strict rules about how hard the
691user is permitted to shoot themself in the foot when typing in a bogus
692game description by hand. (For example, Rectangles will not verify that
693the sum of all the numbers in the grid equals the grid's area. So a user
694could enter a puzzle which was provably not soluble, and the program
695wouldn't complain; there just wouldn't happen to be any sequence of
696moves which solved it.)
697
698The one non-negotiable criterion is that any game description which
699makes it through validate_desc() _must not_ subsequently cause a crash
700or an assertion failure when fed to new_game() and thence to the rest of
701the back end.
702
703The return value is NULL on success, or a non-dynamically-allocated C
704string containing an error message.
705
706#2.4.3. new_game()
707
708 game_state *(*new_game)(midend *me, const game_params *params,
709 const char *desc);
710
711This function takes a game description as input, together with its
712accompanying `game_params', and constructs a `game_state' describing the
713initial state of the puzzle. It returns a newly allocated `game_state'
714structure.
715
716Almost all puzzles should ignore the `me' parameter. It is required by
717Mines, which needs it for later passing to midend_supersede_game_desc()
718(see section 2.11.2) once the user has placed the first click. I
719fervently hope that no other puzzle will be awkward enough to require
720it, so everybody else should ignore it. As with the `interactive'
721parameter in new_desc() (section 2.4.1), if you think you have a reason
722to need this parameter, please try very hard to think of an alternative
723approach!
724
725#2.5. Handling game states
726
727This section describes the functions which create and destroy
728`game_state' structures.
729
730(Well, except new_game(), which is in section 2.4.3 instead of under
731here; but it deals with game descriptions _and_ game states and it had
732to go in one section or the other.)
733
734#2.5.1. dup_game()
735
736 game_state *(*dup_game)(const game_state *state);
737
738This function allocates a new `game_state' structure and initialises it
739with an exact copy of the information in the one provided as input. It
740returns a pointer to the new duplicate.
741
742#2.5.2. free_game()
743
744 void (*free_game)(game_state *state);
745
746This function frees a `game_state' structure, and any subsidiary
747allocations contained within it.
748
749#2.6. Handling `game_ui'
750
751#2.6.1. new_ui()
752
753 game_ui *(*new_ui)(const game_state *state);
754
755This function allocates and returns a new `game_ui' structure for
756playing a particular puzzle. It is passed a pointer to the initial
757`game_state', in case it needs to refer to that when setting up the
758initial values for the new game.
759
760#2.6.2. free_ui()
761
762 void (*free_ui)(game_ui *ui);
763
764This function frees a `game_ui' structure, and any subsidiary
765allocations contained within it.
766
767#2.6.3. encode_ui()
768
769 char *(*encode_ui)(const game_ui *ui);
770
771This function encodes any _important_ data in a `game_ui' structure in
772string form. It is only called when saving a half-finished game to a
773file.
774
775It should be used sparingly. Almost all data in a `game_ui' is not
776important enough to save. The location of the keyboard-controlled
777cursor, for example, can be reset to a default position on reloading
778the game without impacting the user experience. If the user should
779somehow manage to save a game while a mouse drag was in progress, then
780discarding that mouse drag would be an outright _feature_.
781
782A typical thing that _would_ be worth encoding in this function is the
783Mines death counter: it's in the `game_ui' rather than the `game_state'
784because it's too important to allow the user to revert it by using Undo,
785and therefore it's also too important to allow the user to revert it by
786saving and reloading. (Of course, the user could edit the save file by
787hand... But if the user is _that_ determined to cheat, they could just
788as easily modify the game's source.)
789
790#2.6.4. decode_ui()
791
792 void (*decode_ui)(game_ui *ui, const char *encoding);
793
794This function parses a string previously output by encode_ui(), and
795writes the decoded data back into the provided `game_ui' structure.
796
797#2.6.5. changed_state()
798
799 void (*changed_state)(game_ui *ui, const game_state *oldstate,
800 const game_state *newstate);
801
802This function is called by the mid-end whenever the current game state
803changes, for any reason. Those reasons include:
804
805 - a fresh move being made by interpret_move() and execute_move()
806
807 - a solve operation being performed by solve() and execute_move()
808
809 - the user moving back and forth along the undo list by means of the
810 Undo and Redo operations
811
812 - the user selecting Restart to go back to the initial game state.
813
814The job of changed_state() is to update the `game_ui' for consistency
815with the new game state, if any update is necessary. For example,
816Same Game stores data about the currently selected tile group in its
817`game_ui', and this data is intrinsically related to the game state it
818was derived from. So it's very likely to become invalid when the game
819state changes; thus, Same Game's changed_state() function clears the
820current selection whenever it is called.
821
822When anim_length() or flash_length() are called, you can be sure that
823there has been a previous call to changed_state(). So changed_state()
824can set up data in the `game_ui' which will be read by anim_length() and
825flash_length(), and those functions will not have to worry about being
826called without the data having been initialised.
827
828#2.7. Making moves
829
830This section describes the functions which actually make moves in
831the game: that is, the functions which process user input and end up
832producing new `game_state's.
833
834#2.7.1. interpret_move()
835
836 char *(*interpret_move)(const game_state *state, game_ui *ui,
837 const game_drawstate *ds,
838 int x, int y, int button);
839
840This function receives user input and processes it. Its input parameters
841are the current `game_state', the current `game_ui' and the current
842`game_drawstate', plus details of the input event. `button' is either
843an ASCII value or a special code (listed below) indicating an arrow or
844function key or a mouse event; when `button' is a mouse event, `x' and
845`y' contain the pixel coordinates of the mouse pointer relative to the
846top left of the puzzle's drawing area.
847
848(The pointer to the `game_drawstate' is marked `const', because
849`interpret_move' should not write to it. The normal use of that pointer
850will be to read the game's tile size parameter in order to divide mouse
851coordinates by it.)
852
853interpret_move() may return in three different ways:
854
855 - Returning NULL indicates that no action whatsoever occurred in
856 response to the input event; the puzzle was not interested in it at
857 all.
858
859 - Returning the special value UI_UPDATE indicates that the input event
860 has resulted in a change being made to the `game_ui' which will
861 require a redraw of the game window, but that no actual _move_ was
862 made (i.e. no new `game_state' needs to be created).
863
864 - Returning anything else indicates that a move was made and that
865 a new `game_state' must be created. However, instead of actually
866 constructing a new `game_state' itself, this function is required to
867 return a string description of the details of the move. This string
868 will be passed to execute_move() (section 2.7.2) to actually create
869 the new `game_state'. (Encoding moves as strings in this way means
870 that the mid-end can keep the strings as well as the game states,
871 and the strings can be written to disk when saving the game and fed
872 to execute_move() again on reloading.)
873
874The return value from interpret_move() is expected to be dynamically
875allocated if and only if it is not either NULL _or_ the special string
876constant `UI_UPDATE'.
877
878After this function is called, the back end is permitted to rely on some
879subsequent operations happening in sequence:
880
881 - execute_move() will be called to convert this move description into
882 a new `game_state'
883
884 - changed_state() will be called with the new `game_state'.
885
886This means that if interpret_move() needs to do updates to the `game_ui'
887which are easier to perform by referring to the new `game_state', it can
888safely leave them to be done in changed_state() and not worry about them
889failing to happen.
890
891(Note, however, that execute_move() may _also_ be called in other
892circumstances. It is only interpret_move() which can rely on a
893subsequent call to changed_state().)
894
895The special key codes supported by this function are:
896
897LEFT_BUTTON, MIDDLE_BUTTON, RIGHT_BUTTON
898
899 Indicate that one of the mouse buttons was pressed down.
900
901LEFT_DRAG, MIDDLE_DRAG, RIGHT_DRAG
902
903 Indicate that the mouse was moved while one of the mouse buttons was
904 still down. The mid-end guarantees that when one of these events is
905 received, it will always have been preceded by a button-down event
906 (and possibly other drag events) for the same mouse button, and no
907 event involving another mouse button will have appeared in between.
908
909LEFT_RELEASE, MIDDLE_RELEASE, RIGHT_RELEASE
910
911 Indicate that a mouse button was released. The mid-end guarantees
912 that when one of these events is received, it will always have been
913 preceded by a button-down event (and possibly some drag events) for
914 the same mouse button, and no event involving another mouse button
915 will have appeared in between.
916
917CURSOR_UP, CURSOR_DOWN, CURSOR_LEFT, CURSOR_RIGHT
918
919 Indicate that an arrow key was pressed.
920
921CURSOR_SELECT
922
923 On platforms which have a prominent `select' button alongside their
924 cursor keys, indicates that that button was pressed.
925
926In addition, there are some modifiers which can be bitwise-ORed into the
927`button' parameter:
928
929MOD_CTRL, MOD_SHFT
930
931 These indicate that the Control or Shift key was pressed alongside
932 the key. They only apply to the cursor keys, not to mouse buttons or
933 anything else.
934
935MOD_NUM_KEYPAD
936
937 This applies to some ASCII values, and indicates that the key code
938 was input via the numeric keypad rather than the main keyboard. Some
939 puzzles may wish to treat this differently (for example, a puzzle
940 might want to use the numeric keypad as an eight-way directional
941 pad), whereas others might not (a game involving numeric input
942 probably just wants to treat the numeric keypad as numbers).
943
944MOD_MASK
945
946 This mask is the bitwise OR of all the available modifiers; you can
947 bitwise-AND with ~MOD_MASK to strip all the modifiers off any input
948 value.
949
950#2.7.2. execute_move()
951
952 game_state *(*execute_move)(const game_state *state, char *move);
953
954This function takes an input `game_state' and a move string as output
955from interpret_move(). It returns a newly allocated `game_state' which
956contains the result of applying the specified move to the input game
957state.
958
959This function may return NULL if it cannot parse the move string (and
960this is definitely preferable to crashing or failing an assertion, since
961one way this can happen is if loading a corrupt save file). However, it
962must not return NULL for any move string that really was output from
963interpret_move(): this is punishable by assertion failure in the mid-
964end.
965
966#2.7.3. `can_solve'
967
968 int can_solve;
969
970This boolean field is set to TRUE if the game's solve() function does
971something. If it's set to FALSE, the game will not even offer the
972`Solve' menu option.
973
974#2.7.4. solve()
975
976 char *(*solve)(const game_state *orig, const game_state *curr,
977 const char *aux, const char **error);
978
979This function is called when the user selects the `Solve' option from
980the menu.
981
982It is passed two input game states: `orig' is the game state from the
983very start of the puzzle, and `curr' is the current one. (Different
984games find one or other or both of these convenient.) It is also passed
985the `aux' string saved by new_desc() (section 2.4.1), in case that
986encodes important information needed to provide the solution.
987
988If this function is unable to produce a solution (perhaps, for example,
989the game has no in-built solver so it can only solve puzzles it invented
990internally and has an `aux' string for) then it may return NULL. If it
991does this, it must also set `*error' to an error message to be presented
992to the user (such as `Solution not known for this puzzle'); that error
993message is not expected to be dynamically allocated.
994
995If this function _does_ produce a solution, it returns a move string
996suitable for feeding to execute_move() (section 2.7.2). Like a (non-
997empty) string returned from interpret_move(), the returned string should
998be dynamically allocated.
999
1000#2.8. Drawing the game graphics
1001
1002This section discusses the back end functions that deal with drawing.
1003
1004#2.8.1. new_drawstate()
1005
1006 game_drawstate *(*new_drawstate)(drawing *dr,
1007 const game_state *state);
1008
1009This function allocates and returns a new `game_drawstate' structure for
1010drawing a particular puzzle. It is passed a pointer to a `game_state',
1011in case it needs to refer to that when setting up any initial data.
1012
1013This function may not rely on the puzzle having been newly started; a
1014new draw state can be constructed at any time if the front end requests
1015a forced redraw. For games like Pattern, in which initial game states
1016are much simpler than general ones, this might be important to keep in
1017mind.
1018
1019The parameter `dr' is a drawing object (see chapter 3) which the
1020function might need to use to allocate blitters. (However, this isn't
1021recommended; it's usually more sensible to wait to allocate a blitter
1022until set_size() is called, because that way you can tailor it to the
1023scale at which the puzzle is being drawn.)
1024
1025#2.8.2. free_drawstate()
1026
1027 void (*free_drawstate)(drawing *dr, game_drawstate *ds);
1028
1029This function frees a `game_drawstate' structure, and any subsidiary
1030allocations contained within it.
1031
1032The parameter `dr' is a drawing object (see chapter 3), which might be
1033required if you are freeing a blitter.
1034
1035#2.8.3. `preferred_tilesize'
1036
1037 int preferred_tilesize;
1038
1039Each game is required to define a single integer parameter which
1040expresses, in some sense, the scale at which it is drawn. This is
1041described in the APIs as `tilesize', since most puzzles are on a
1042square (or possibly triangular or hexagonal) grid and hence a sensible
1043interpretation of this parameter is to define it as the size of one grid
1044tile in pixels; however, there's no actual requirement that the `tile
1045size' be proportional to the game window size. Window size is required
1046to increase monotonically with `tile size', however.
1047
1048The data element `preferred_tilesize' indicates the tile size which
1049should be used in the absence of a good reason to do otherwise (such as
1050the screen being too small, or the user explicitly requesting a resize
1051if that ever gets implemented).
1052
1053#2.8.4. compute_size()
1054
1055 void (*compute_size)(const game_params *params, int tilesize,
1056 int *x, int *y);
1057
1058This function is passed a `game_params' structure and a tile size. It
1059returns, in `*x' and `*y', the size in pixels of the drawing area that
1060would be required to render a puzzle with those parameters at that tile
1061size.
1062
1063#2.8.5. set_size()
1064
1065 void (*set_size)(drawing *dr, game_drawstate *ds,
1066 const game_params *params, int tilesize);
1067
1068This function is responsible for setting up a `game_drawstate' to draw
1069at a given tile size. Typically this will simply involve copying the
1070supplied `tilesize' parameter into a `tilesize' field inside the draw
1071state; for some more complex games it might also involve setting up
1072other dimension fields, or possibly allocating a blitter (see section
10733.1.13).
1074
1075The parameter `dr' is a drawing object (see chapter 3), which is
1076required if a blitter needs to be allocated.
1077
1078Back ends may assume (and may enforce by assertion) that this function
1079will be called at most once for any `game_drawstate'. If a puzzle needs
1080to be redrawn at a different size, the mid-end will create a fresh
1081drawstate.
1082
1083#2.8.6. colours()
1084
1085 float *(*colours)(frontend *fe, int *ncolours);
1086
1087This function is responsible for telling the front end what colours the
1088puzzle will need to draw itself.
1089
1090It returns the number of colours required in `*ncolours', and the return
1091value from the function itself is a dynamically allocated array of three
1092times that many `float's, containing the red, green and blue components
1093of each colour respectively as numbers in the range [0,1].
1094
1095The second parameter passed to this function is a front end handle.
1096The only things it is permitted to do with this handle are to call the
1097front-end function called frontend_default_colour() (see section 4.39)
1098or the utility function called game_mkhighlight() (see section 5.5.7).
1099(The latter is a wrapper on the former, so front end implementors only
1100need to provide frontend_default_colour().) This allows colours() to
1101take local configuration into account when deciding on its own colour
1102allocations. Most games use the front end's default colour as their
1103background, apart from a few which depend on drawing relief highlights
1104so they adjust the background colour if it's too light for highlights to
1105show up against it.
1106
1107Note that the colours returned from this function are for _drawing_,
1108not for printing. Printing has an entirely different colour allocation
1109policy.
1110
1111#2.8.7. anim_length()
1112
1113 float (*anim_length)(const game_state *oldstate,
1114 const game_state *newstate,
1115 int dir, game_ui *ui);
1116
1117This function is called when a move is made, undone or redone. It is
1118given the old and the new `game_state', and its job is to decide whether
1119the transition between the two needs to be animated or can be instant.
1120
1121`oldstate' is the state that was current until this call; `newstate'
1122is the state that will be current after it. `dir' specifies the
1123chronological order of those states: if it is positive, then the
1124transition is the result of a move or a redo (and so `newstate' is the
1125later of the two moves), whereas if it is negative then the transition
1126is the result of an undo (so that `newstate' is the _earlier_ move).
1127
1128If this function decides the transition should be animated, it returns
1129the desired length of the animation in seconds. If not, it returns zero.
1130
1131State changes as a result of a Restart operation are never animated; the
1132mid-end will handle them internally and never consult this function at
1133all. State changes as a result of Solve operations are also not animated
1134by default, although you can change this for a particular game by
1135setting a flag in `flags' (section 2.10.7).
1136
1137The function is also passed a pointer to the local `game_ui'. It may
1138refer to information in here to help with its decision (see section
11396.3.7 for an example of this), and/or it may _write_ information about
1140the nature of the animation which will be read later by redraw().
1141
1142When this function is called, it may rely on changed_state() having been
1143called previously, so if anim_length() needs to refer to information in
1144the `game_ui', then changed_state() is a reliable place to have set that
1145information up.
1146
1147Move animations do not inhibit further input events. If the user
1148continues playing before a move animation is complete, the animation
1149will be abandoned and the display will jump straight to the final state.
1150
1151#2.8.8. flash_length()
1152
1153 float (*flash_length)(const game_state *oldstate,
1154 const game_state *newstate,
1155 int dir, game_ui *ui);
1156
1157This function is called when a move is completed. (`Completed'
1158means that not only has the move been made, but any animation which
1159accompanied it has finished.) It decides whether the transition from
1160`oldstate' to `newstate' merits a `flash'.
1161
1162A flash is much like a move animation, but it is _not_ interrupted by
1163further user interface activity; it runs to completion in parallel with
1164whatever else might be going on on the display. The only thing which
1165will rush a flash to completion is another flash.
1166
1167The purpose of flashes is to indicate that the game has been completed.
1168They were introduced as a separate concept from move animations because
1169of Net: the habit of most Net players (and certainly me) is to rotate a
1170tile into place and immediately lock it, then move on to another tile.
1171When you make your last move, at the instant the final tile is rotated
1172into place the screen starts to flash to indicate victory - but if you
1173then press the lock button out of habit, then the move animation is
1174cancelled, and the victory flash does not complete. (And if you _don't_
1175press the lock button, the completed grid will look untidy because there
1176will be one unlocked square.) Therefore, I introduced a specific concept
1177of a `flash' which is separate from a move animation and can proceed in
1178parallel with move animations and any other display activity, so that
1179the victory flash in Net is not cancelled by that final locking move.
1180
1181The input parameters to flash_length() are exactly the same as the ones
1182to anim_length().
1183
1184Just like anim_length(), when this function is called, it may rely on
1185changed_state() having been called previously, so if it needs to refer
1186to information in the `game_ui' then changed_state() is a reliable place
1187to have set that information up.
1188
1189(Some games use flashes to indicate defeat as well as victory; Mines,
1190for example, flashes in a different colour when you tread on a mine from
1191the colour it uses when you complete the game. In order to achieve this,
1192its flash_length() function has to store a flag in the `game_ui' to
1193indicate which flash type is required.)
1194
1195#2.8.9. status()
1196
1197 int (*status)(const game_state *state);
1198
1199This function returns a status value indicating whether the current game
1200is still in play, or has been won, or has been conclusively lost. The
1201mid-end uses this to implement midend_status() (section 4.26).
1202
1203The return value should be +1 if the game has been successfully solved.
1204If the game has been lost in a situation where further play is unlikely,
1205the return value should be -1. If neither is true (so play is still
1206ongoing), return zero.
1207
1208Front ends may wish to use a non-zero status as a cue to proactively
1209offer the option of starting a new game. Therefore, back ends should
1210not return -1 if the game has been _technically_ lost but undoing and
1211continuing is still a realistic possibility.
1212
1213(For instance, games with hidden information such as Guess or Mines
1214might well return a non-zero status whenever they reveal the solution,
1215whether or not the player guessed it correctly, on the grounds that a
1216player would be unlikely to hide the solution and continue playing after
1217the answer was spoiled. On the other hand, games where you can merely
1218get into a dead end such as Same Game or Inertia might choose to return
12190 in that situation, on the grounds that the player would quite likely
1220press Undo and carry on playing.)
1221
1222#2.8.10. redraw()
1223
1224 void (*redraw)(drawing *dr, game_drawstate *ds,
1225 const game_state *oldstate,
1226 const game_state *newstate,
1227 int dir, const game_ui *ui,
1228 float anim_time, float flash_time);
1229
1230This function is responsible for actually drawing the contents of
1231the game window, and for redrawing every time the game state or the
1232`game_ui' changes.
1233
1234The parameter `dr' is a drawing object which may be passed to the
1235drawing API functions (see chapter 3 for documentation of the drawing
1236API). This function may not save `dr' and use it elsewhere; it must only
1237use it for calling back to the drawing API functions within its own
1238lifetime.
1239
1240`ds' is the local `game_drawstate', of course, and `ui' is the local
1241`game_ui'.
1242
1243`newstate' is the semantically-current game state, and is always non-
1244NULL. If `oldstate' is also non-NULL, it means that a move has recently
1245been made and the game is still in the process of displaying an
1246animation linking the old and new states; in this situation, `anim_time'
1247will give the length of time (in seconds) that the animation has already
1248been running. If `oldstate' is NULL, then `anim_time' is unused (and
1249will hopefully be set to zero to avoid confusion).
1250
1251`flash_time', if it is is non-zero, denotes that the game is in the
1252middle of a flash, and gives the time since the start of the flash. See
1253section 2.8.8 for general discussion of flashes.
1254
1255The very first time this function is called for a new `game_drawstate',
1256it is expected to redraw the _entire_ drawing area. Since this often
1257involves drawing visual furniture which is never subsequently altered,
1258it is often simplest to arrange this by having a special `first time'
1259flag in the draw state, and resetting it after the first redraw.
1260
1261When this function (or any subfunction) calls the drawing API, it is
1262expected to pass colour indices which were previously defined by the
1263colours() function.
1264
1265#2.9. Printing functions
1266
1267This section discusses the back end functions that deal with printing
1268puzzles out on paper.
1269
1270#2.9.1. `can_print'
1271
1272 int can_print;
1273
1274This flag is set to TRUE if the puzzle is capable of printing itself
1275on paper. (This makes sense for some puzzles, such as Solo, which can
1276be filled in with a pencil. Other puzzles, such as Twiddle, inherently
1277involve moving things around and so would not make sense to print.)
1278
1279If this flag is FALSE, then the functions print_size() and print() will
1280never be called.
1281
1282#2.9.2. `can_print_in_colour'
1283
1284 int can_print_in_colour;
1285
1286This flag is set to TRUE if the puzzle is capable of printing itself
1287differently when colour is available. For example, Map can actually
1288print coloured regions in different _colours_ rather than resorting to
1289cross-hatching.
1290
1291If the `can_print' flag is FALSE, then this flag will be ignored.
1292
1293#2.9.3. print_size()
1294
1295 void (*print_size)(const game_params *params, float *x, float *y);
1296
1297This function is passed a `game_params' structure and a tile size. It
1298returns, in `*x' and `*y', the preferred size in _millimetres_ of that
1299puzzle if it were to be printed out on paper.
1300
1301If the `can_print' flag is FALSE, this function will never be called.
1302
1303#2.9.4. print()
1304
1305 void (*print)(drawing *dr, const game_state *state, int tilesize);
1306
1307This function is called when a puzzle is to be printed out on paper. It
1308should use the drawing API functions (see chapter 3) to print itself.
1309
1310This function is separate from redraw() because it is often very
1311different:
1312
1313 - The printing function may not depend on pixel accuracy, since
1314 printer resolution is variable. Draw as if your canvas had infinite
1315 resolution.
1316
1317 - The printing function sometimes needs to display things in a
1318 completely different style. Net, for example, is very different as
1319 an on-screen puzzle and as a printed one.
1320
1321 - The printing function is often much simpler since it has no need to
1322 deal with repeated partial redraws.
1323
1324However, there's no reason the printing and redraw functions can't share
1325some code if they want to.
1326
1327When this function (or any subfunction) calls the drawing API, the
1328colour indices it passes should be colours which have been allocated by
1329the print_*_colour() functions within this execution of print(). This is
1330very different from the fixed small number of colours used in redraw(),
1331because printers do not have a limitation on the total number of colours
1332that may be used. Some puzzles' printing functions might wish to
1333allocate only one `ink' colour and use it for all drawing; others might
1334wish to allocate _more_ colours than are used on screen.
1335
1336One possible colour policy worth mentioning specifically is that a
1337puzzle's printing function might want to allocate the _same_ colour
1338indices as are used by the redraw function, so that code shared between
1339drawing and printing does not have to keep switching its colour indices.
1340In order to do this, the simplest thing is to make use of the fact that
1341colour indices returned from print_*_colour() are guaranteed to be in
1342increasing order from zero. So if you have declared an `enum' defining
1343three colours COL_BACKGROUND, COL_THIS and COL_THAT, you might then
1344write
1345
1346 int c;
1347 c = print_mono_colour(dr, 1); assert(c == COL_BACKGROUND);
1348 c = print_mono_colour(dr, 0); assert(c == COL_THIS);
1349 c = print_mono_colour(dr, 0); assert(c == COL_THAT);
1350
1351If the `can_print' flag is FALSE, this function will never be called.
1352
1353#2.10. Miscellaneous
1354
1355#2.10.1. `can_format_as_text_ever'
1356
1357 int can_format_as_text_ever;
1358
1359This boolean field is TRUE if the game supports formatting a game state
1360as ASCII text (typically ASCII art) for copying to the clipboard and
1361pasting into other applications. If it is FALSE, front ends will not
1362offer the `Copy' command at all.
1363
1364If this field is TRUE, the game does not necessarily have to support
1365text formatting for _all_ games: e.g. a game which can be played on
1366a square grid or a triangular one might only support copy and paste
1367for the former, because triangular grids in ASCII art are just too
1368difficult.
1369
1370If this field is FALSE, the functions can_format_as_text_now() (section
13712.10.2) and text_format() (section 2.10.3) are never called.
1372
1373#2.10.2. `can_format_as_text_now()'
1374
1375 int (*can_format_as_text_now)(const game_params *params);
1376
1377This function is passed a `game_params' and returns a boolean, which is
1378TRUE if the game can support ASCII text output for this particular game
1379type. If it returns FALSE, front ends will grey out or otherwise disable
1380the `Copy' command.
1381
1382Games may enable and disable the copy-and-paste function for different
1383game _parameters_, but are currently constrained to return the same
1384answer from this function for all game _states_ sharing the same
1385parameters. In other words, the `Copy' function may enable or disable
1386itself when the player changes game preset, but will never change during
1387play of a single game or when another game of exactly the same type is
1388generated.
1389
1390This function should not take into account aspects of the game
1391parameters which are not encoded by encode_params() (section 2.3.4)
1392when the `full' parameter is set to FALSE. Such parameters will not
1393necessarily match up between a call to this function and a subsequent
1394call to text_format() itself. (For instance, game _difficulty_ should
1395not affect whether the game can be copied to the clipboard. Only the
1396actual visible _shape_ of the game can affect that.)
1397
1398#2.10.3. text_format()
1399
1400 char *(*text_format)(const game_state *state);
1401
1402This function is passed a `game_state', and returns a newly allocated C
1403string containing an ASCII representation of that game state. It is used
1404to implement the `Copy' operation in many front ends.
1405
1406This function will only ever be called if the back end field
1407`can_format_as_text_ever' (section 2.10.1) is TRUE _and_ the function
1408can_format_as_text_now() (section 2.10.2) has returned TRUE for the
1409currently selected game parameters.
1410
1411The returned string may contain line endings (and will probably want
1412to), using the normal C internal `\n' convention. For consistency
1413between puzzles, all multi-line textual puzzle representations should
1414_end_ with a newline as well as containing them internally. (There are
1415currently no puzzles which have a one-line ASCII representation, so
1416there's no precedent yet for whether that should come with a newline or
1417not.)
1418
1419#2.10.4. wants_statusbar
1420
1421 int wants_statusbar;
1422
1423This boolean field is set to TRUE if the puzzle has a use for a textual
1424status line (to display score, completion status, currently active
1425tiles, etc).
1426
1427#2.10.5. `is_timed'
1428
1429 int is_timed;
1430
1431This boolean field is TRUE if the puzzle is time-critical. If so, the
1432mid-end will maintain a game timer while the user plays.
1433
1434If this field is FALSE, then timing_state() will never be called and
1435need not do anything.
1436
1437#2.10.6. timing_state()
1438
1439 int (*timing_state)(const game_state *state, game_ui *ui);
1440
1441This function is passed the current `game_state' and the local
1442`game_ui'; it returns TRUE if the game timer should currently be
1443running.
1444
1445A typical use for the `game_ui' in this function is to note when the
1446game was first completed (by setting a flag in changed_state() - see
1447section 2.6.5), and freeze the timer thereafter so that the user can
1448undo back through their solution process without altering their time.
1449
1450#2.10.7. `flags'
1451
1452 int flags;
1453
1454This field contains miscellaneous per-backend flags. It consists of the
1455bitwise OR of some combination of the following:
1456
1457BUTTON_BEATS(x,y)
1458
1459 Given any x and y from the set {LEFT_BUTTON, MIDDLE_BUTTON,
1460 RIGHT_BUTTON}, this macro evaluates to a bit flag which indicates
1461 that when buttons x and y are both pressed simultaneously, the mid-
1462 end should consider x to have priority. (In the absence of any such
1463 flags, the mid-end will always consider the most recently pressed
1464 button to have priority.)
1465
1466SOLVE_ANIMATES
1467
1468 This flag indicates that moves generated by solve() (section 2.7.4)
1469 are candidates for animation just like any other move. For most
1470 games, solve moves should not be animated, so the mid-end doesn't
1471 even bother calling anim_length() (section 2.8.7), thus saving some
1472 special-case code in each game. On the rare occasion that animated
1473 solve moves are actually required, you can set this flag.
1474
1475REQUIRE_RBUTTON
1476
1477 This flag indicates that the puzzle cannot be usefully played
1478 without the use of mouse buttons other than the left one. On some
1479 PDA platforms, this flag is used by the front end to enable right-
1480 button emulation through an appropriate gesture. Note that a puzzle
1481 is not required to set this just because it _uses_ the right button,
1482 but only if its use of the right button is critical to playing the
1483 game. (Slant, for example, uses the right button to cycle through
1484 the three square states in the opposite order from the left button,
1485 and hence can manage fine without it.)
1486
1487REQUIRE_NUMPAD
1488
1489 This flag indicates that the puzzle cannot be usefully played
1490 without the use of number-key input. On some PDA platforms it
1491 causes an emulated number pad to appear on the screen. Similarly to
1492 REQUIRE_RBUTTON, a puzzle need not specify this simply if its use of
1493 the number keys is not critical.
1494
1495#2.11. Things a back end may do on its own initiative
1496
1497This section describes a couple of things that a back end may choose
1498to do by calling functions elsewhere in the program, which would not
1499otherwise be obvious.
1500
1501#2.11.1. Create a random state
1502
1503If a back end needs random numbers at some point during normal play, it
1504can create a fresh `random_state' by first calling `get_random_seed'
1505(section 4.35) and then passing the returned seed data to random_new().
1506
1507This is likely not to be what you want. If a puzzle needs randomness in
1508the middle of play, it's likely to be more sensible to store some sort
1509of random state within the `game_state', so that the random numbers are
1510tied to the particular game state and hence the player can't simply keep
1511undoing their move until they get numbers they like better.
1512
1513This facility is currently used only in Net, to implement the `jumble'
1514command, which sets every unlocked tile to a new random orientation.
1515This randomness _is_ a reasonable use of the feature, because it's non-
1516adversarial - there's no advantage to the user in getting different
1517random numbers.
1518
1519#2.11.2. Supersede its own game description
1520
1521In response to a move, a back end is (reluctantly) permitted to call
1522midend_supersede_game_desc():
1523
1524 void midend_supersede_game_desc(midend *me,
1525 char *desc, char *privdesc);
1526
1527When the user selects `New Game', the mid-end calls new_desc()
1528(section 2.4.1) to get a new game description, and (as well as using
1529that to generate an initial game state) stores it for the save file
1530and for telling to the user. The function above overwrites that
1531game description, and also splits it in two. `desc' becomes the new
1532game description which is provided to the user on request, and is
1533also the one used to construct a new initial game state if the user
1534selects `Restart'. `privdesc' is a `private' game description, used to
1535reconstruct the game's initial state when reloading.
1536
1537The distinction between the two, as well as the need for this function
1538at all, comes from Mines. Mines begins with a blank grid and no
1539idea of where the mines actually are; new_desc() does almost no
1540work in interactive mode, and simply returns a string encoding the
1541`random_state'. When the user first clicks to open a tile, _then_ Mines
1542generates the mine positions, in such a way that the game is soluble
1543from that starting point. Then it uses this function to supersede the
1544random-state game description with a proper one. But it needs two: one
1545containing the initial click location (because that's what you want to
1546happen if you restart the game, and also what you want to send to a
1547friend so that they play _the same game_ as you), and one without the
1548initial click location (because when you save and reload the game, you
1549expect to see the same blank initial state as you had before saving).
1550
1551I should stress again that this function is a horrid hack. Nobody should
1552use it if they're not Mines; if you think you need to use it, think
1553again repeatedly in the hope of finding a better way to do whatever it
1554was you needed to do.
1555
1556#3. The drawing API
1557
1558The back end function redraw() (section 2.8.10) is required to draw
1559the puzzle's graphics on the window's drawing area, or on paper if the
1560puzzle is printable. To do this portably, it is provided with a drawing
1561API allowing it to talk directly to the front end. In this chapter I
1562document that API, both for the benefit of back end authors trying to
1563use it and for front end authors trying to implement it.
1564
1565The drawing API as seen by the back end is a collection of global
1566functions, each of which takes a pointer to a `drawing' structure (a
1567`drawing object'). These objects are supplied as parameters to the back
1568end's redraw() and print() functions.
1569
1570In fact these global functions are not implemented directly by the front
1571end; instead, they are implemented centrally in `drawing.c' and form a
1572small piece of middleware. The drawing API as supplied by the front end
1573is a structure containing a set of function pointers, plus a `void *'
1574handle which is passed to each of those functions. This enables a single
1575front end to switch between multiple implementations of the drawing API
1576if necessary. For example, the Windows API supplies a printing mechanism
1577integrated into the same GDI which deals with drawing in windows, and
1578therefore the same API implementation can handle both drawing and
1579printing; but on Unix, the most common way for applications to print
1580is by producing PostScript output directly, and although it would be
1581_possible_ to write a single (say) draw_rect() function which checked
1582a global flag to decide whether to do GTK drawing operations or output
1583PostScript to a file, it's much nicer to have two separate functions and
1584switch between them as appropriate.
1585
1586When drawing, the puzzle window is indexed by pixel coordinates, with
1587the top left pixel defined as (0,0) and the bottom right pixel (w-1,h-
15881), where `w' and `h' are the width and height values returned by the
1589back end function compute_size() (section 2.8.4).
1590
1591When printing, the puzzle's print area is indexed in exactly the same
1592way (with an arbitrary tile size provided by the printing module
1593`printing.c'), to facilitate sharing of code between the drawing and
1594printing routines. However, when printing, puzzles may no longer assume
1595that the coordinate unit has any relationship to a pixel; the printer's
1596actual resolution might very well not even be known at print time, so
1597the coordinate unit might be smaller or larger than a pixel. Puzzles'
1598print functions should restrict themselves to drawing geometric shapes
1599rather than fiddly pixel manipulation.
1600
1601_Puzzles' redraw functions may assume that the surface they draw on is
1602persistent_. It is the responsibility of every front end to preserve
1603the puzzle's window contents in the face of GUI window expose issues
1604and similar. It is not permissible to request that the back end redraw
1605any part of a window that it has already drawn, unless something has
1606actually changed as a result of making moves in the puzzle.
1607
1608Most front ends accomplish this by having the drawing routines draw on a
1609stored bitmap rather than directly on the window, and copying the bitmap
1610to the window every time a part of the window needs to be redrawn.
1611Therefore, it is vitally important that whenever the back end does any
1612drawing it informs the front end of which parts of the window it has
1613accessed, and hence which parts need repainting. This is done by calling
1614draw_update() (section 3.1.11).
1615
1616Persistence of old drawing is convenient. However, a puzzle should be
1617very careful about how it updates its drawing area. The problem is that
1618some front ends do anti-aliased drawing: rather than simply choosing
1619between leaving each pixel untouched or painting it a specified colour,
1620an antialiased drawing function will _blend_ the original and new
1621colours in pixels at a figure's boundary according to the proportion of
1622the pixel occupied by the figure (probably modified by some heuristic
1623fudge factors). All of this produces a smoother appearance for curves
1624and diagonal lines.
1625
1626An unfortunate effect of drawing an anti-aliased figure repeatedly
1627is that the pixels around the figure's boundary come steadily more
1628saturated with `ink' and the boundary appears to `spread out'. Worse,
1629redrawing a figure in a different colour won't fully paint over the old
1630boundary pixels, so the end result is a rather ugly smudge.
1631
1632A good strategy to avoid unpleasant anti-aliasing artifacts is to
1633identify a number of rectangular areas which need to be redrawn, clear
1634them to the background colour, and then redraw their contents from
1635scratch, being careful all the while not to stray beyond the boundaries
1636of the original rectangles. The clip() function (section 3.1.9) comes in
1637very handy here. Games based on a square grid can often do this fairly
1638easily. Other games may need to be somewhat more careful. For example,
1639Loopy's redraw function first identifies portions of the display which
1640need to be updated. Then, if the changes are fairly well localised, it
1641clears and redraws a rectangle containing each changed area. Otherwise,
1642it gives up and redraws the entire grid from scratch.
1643
1644It is possible to avoid clearing to background and redrawing from
1645scratch if one is very careful about which drawing functions one
1646uses: if a function is documented as not anti-aliasing under some
1647circumstances, you can rely on each pixel in a drawing either being left
1648entirely alone or being set to the requested colour, with no blending
1649being performed.
1650
1651In the following sections I first discuss the drawing API as seen by the
1652back end, and then the _almost_ identical function-pointer form seen by
1653the front end.
1654
1655#3.1. Drawing API as seen by the back end
1656
1657This section documents the back-end drawing API, in the form of
1658functions which take a `drawing' object as an argument.
1659
1660#3.1.1. draw_rect()
1661
1662 void draw_rect(drawing *dr, int x, int y, int w, int h,
1663 int colour);
1664
1665Draws a filled rectangle in the puzzle window.
1666
1667`x' and `y' give the coordinates of the top left pixel of the rectangle.
1668`w' and `h' give its width and height. Thus, the horizontal extent of
1669the rectangle runs from `x' to `x+w-1' inclusive, and the vertical
1670extent from `y' to `y+h-1' inclusive.
1671
1672`colour' is an integer index into the colours array returned by the back
1673end function colours() (section 2.8.6).
1674
1675There is no separate pixel-plotting function. If you want to plot a
1676single pixel, the approved method is to use draw_rect() with width and
1677height set to 1.
1678
1679Unlike many of the other drawing functions, this function is guaranteed
1680to be pixel-perfect: the rectangle will be sharply defined and not anti-
1681aliased or anything like that.
1682
1683This function may be used for both drawing and printing.
1684
1685#3.1.2. draw_rect_outline()
1686
1687 void draw_rect_outline(drawing *dr, int x, int y, int w, int h,
1688 int colour);
1689
1690Draws an outline rectangle in the puzzle window.
1691
1692`x' and `y' give the coordinates of the top left pixel of the rectangle.
1693`w' and `h' give its width and height. Thus, the horizontal extent of
1694the rectangle runs from `x' to `x+w-1' inclusive, and the vertical
1695extent from `y' to `y+h-1' inclusive.
1696
1697`colour' is an integer index into the colours array returned by the back
1698end function colours() (section 2.8.6).
1699
1700From a back end perspective, this function may be considered to be part
1701of the drawing API. However, front ends are not required to implement
1702it, since it is actually implemented centrally (in misc.c) as a wrapper
1703on draw_polygon().
1704
1705This function may be used for both drawing and printing.
1706
1707#3.1.3. draw_line()
1708
1709 void draw_line(drawing *dr, int x1, int y1, int x2, int y2,
1710 int colour);
1711
1712Draws a straight line in the puzzle window.
1713
1714`x1' and `y1' give the coordinates of one end of the line. `x2' and `y2'
1715give the coordinates of the other end. The line drawn includes both
1716those points.
1717
1718`colour' is an integer index into the colours array returned by the back
1719end function colours() (section 2.8.6).
1720
1721Some platforms may perform anti-aliasing on this function. Therefore,
1722do not assume that you can erase a line by drawing the same line over
1723it in the background colour; anti-aliasing might lead to perceptible
1724ghost artefacts around the vanished line. Horizontal and vertical lines,
1725however, are pixel-perfect and not anti-aliased.
1726
1727This function may be used for both drawing and printing.
1728
1729#3.1.4. draw_polygon()
1730
1731 void draw_polygon(drawing *dr, int *coords, int npoints,
1732 int fillcolour, int outlinecolour);
1733
1734Draws an outlined or filled polygon in the puzzle window.
1735
1736`coords' is an array of (2*npoints) integers, containing the `x' and `y'
1737coordinates of `npoints' vertices.
1738
1739`fillcolour' and `outlinecolour' are integer indices into the colours
1740array returned by the back end function colours() (section 2.8.6).
1741`fillcolour' may also be -1 to indicate that the polygon should be
1742outlined only.
1743
1744The polygon defined by the specified list of vertices is first filled in
1745`fillcolour', if specified, and then outlined in `outlinecolour'.
1746
1747`outlinecolour' may _not_ be -1; it must be a valid colour (and front
1748ends are permitted to enforce this by assertion). This is because
1749different platforms disagree on whether a filled polygon should include
1750its boundary line or not, so drawing _only_ a filled polygon would
1751have non-portable effects. If you want your filled polygon not to
1752have a visible outline, you must set `outlinecolour' to the same as
1753`fillcolour'.
1754
1755Some platforms may perform anti-aliasing on this function. Therefore, do
1756not assume that you can erase a polygon by drawing the same polygon over
1757it in the background colour. Also, be prepared for the polygon to extend
1758a pixel beyond its obvious bounding box as a result of this; if you
1759really need it not to do this to avoid interfering with other delicate
1760graphics, you should probably use clip() (section 3.1.9). You can rely
1761on horizontal and vertical lines not being anti-aliased.
1762
1763This function may be used for both drawing and printing.
1764
1765#3.1.5. draw_circle()
1766
1767 void draw_circle(drawing *dr, int cx, int cy, int radius,
1768 int fillcolour, int outlinecolour);
1769
1770Draws an outlined or filled circle in the puzzle window.
1771
1772`cx' and `cy' give the coordinates of the centre of the circle. `radius'
1773gives its radius. The total horizontal pixel extent of the circle is
1774from `cx-radius+1' to `cx+radius-1' inclusive, and the vertical extent
1775similarly around `cy'.
1776
1777`fillcolour' and `outlinecolour' are integer indices into the colours
1778array returned by the back end function colours() (section 2.8.6).
1779`fillcolour' may also be -1 to indicate that the circle should be
1780outlined only.
1781
1782The circle is first filled in `fillcolour', if specified, and then
1783outlined in `outlinecolour'.
1784
1785`outlinecolour' may _not_ be -1; it must be a valid colour (and front
1786ends are permitted to enforce this by assertion). This is because
1787different platforms disagree on whether a filled circle should include
1788its boundary line or not, so drawing _only_ a filled circle would
1789have non-portable effects. If you want your filled circle not to
1790have a visible outline, you must set `outlinecolour' to the same as
1791`fillcolour'.
1792
1793Some platforms may perform anti-aliasing on this function. Therefore, do
1794not assume that you can erase a circle by drawing the same circle over
1795it in the background colour. Also, be prepared for the circle to extend
1796a pixel beyond its obvious bounding box as a result of this; if you
1797really need it not to do this to avoid interfering with other delicate
1798graphics, you should probably use clip() (section 3.1.9).
1799
1800This function may be used for both drawing and printing.
1801
1802#3.1.6. draw_thick_line()
1803
1804 void draw_thick_line(drawing *dr, float thickness,
1805 float x1, float y1, float x2, float y2,
1806 int colour)
1807
1808Draws a line in the puzzle window, giving control over the line's
1809thickness.
1810
1811`x1' and `y1' give the coordinates of one end of the line. `x2' and `y2'
1812give the coordinates of the other end. `thickness' gives the thickness
1813of the line, in pixels.
1814
1815Note that the coordinates and thickness are floating-point: the
1816continuous coordinate system is in effect here. It's important to be
1817able to address points with better-than-pixel precision in this case,
1818because one can't otherwise properly express the endpoints of lines with
1819both odd and even thicknesses.
1820
1821Some platforms may perform anti-aliasing on this function. The precise
1822pixels affected by a thick-line drawing operation may vary between
1823platforms, and no particular guarantees are provided. Indeed, even
1824horizontal or vertical lines may be anti-aliased.
1825
1826This function may be used for both drawing and printing.
1827
1828If the specified thickness is less than 1.0, 1.0 is used. This ensures
1829that thin lines are visible even at small scales.
1830
1831#3.1.7. draw_text()
1832
1833 void draw_text(drawing *dr, int x, int y, int fonttype,
1834 int fontsize, int align, int colour,
1835 const char *text);
1836
1837Draws text in the puzzle window.
1838
1839`x' and `y' give the coordinates of a point. The relation of this point
1840to the location of the text is specified by `align', which is a bitwise
1841OR of horizontal and vertical alignment flags:
1842
1843ALIGN_VNORMAL
1844
1845 Indicates that `y' is aligned with the baseline of the text.
1846
1847ALIGN_VCENTRE
1848
1849 Indicates that `y' is aligned with the vertical centre of the
1850 text. (In fact, it's aligned with the vertical centre of normal
1851 _capitalised_ text: displaying two pieces of text with ALIGN_VCENTRE
1852 at the same y-coordinate will cause their baselines to be aligned
1853 with one another, even if one is an ascender and the other a
1854 descender.)
1855
1856ALIGN_HLEFT
1857
1858 Indicates that `x' is aligned with the left-hand end of the text.
1859
1860ALIGN_HCENTRE
1861
1862 Indicates that `x' is aligned with the horizontal centre of the
1863 text.
1864
1865ALIGN_HRIGHT
1866
1867 Indicates that `x' is aligned with the right-hand end of the text.
1868
1869`fonttype' is either FONT_FIXED or FONT_VARIABLE, for a monospaced
1870or proportional font respectively. (No more detail than that may be
1871specified; it would only lead to portability issues between different
1872platforms.)
1873
1874`fontsize' is the desired size, in pixels, of the text. This size
1875corresponds to the overall point size of the text, not to any internal
1876dimension such as the cap-height.
1877
1878`colour' is an integer index into the colours array returned by the back
1879end function colours() (section 2.8.6).
1880
1881This function may be used for both drawing and printing.
1882
1883The character set used to encode the text passed to this function is
1884specified _by the drawing object_, although it must be a superset of
1885ASCII. If a puzzle wants to display text that is not contained in ASCII,
1886it should use the text_fallback() function (section 3.1.8) to query the
1887drawing object for an appropriate representation of the characters it
1888wants.
1889
1890#3.1.8. text_fallback()
1891
1892 char *text_fallback(drawing *dr, const char *const *strings,
1893 int nstrings);
1894
1895This function is used to request a translation of UTF-8 text into
1896whatever character encoding is expected by the drawing object's
1897implementation of draw_text().
1898
1899The input is a list of strings encoded in UTF-8: nstrings gives the
1900number of strings in the list, and strings[0], strings[1], ...,
1901strings[nstrings-1] are the strings themselves.
1902
1903The returned string (which is dynamically allocated and must be freed
1904when finished with) is derived from the first string in the list that
1905the drawing object expects to be able to display reliably; it will
1906consist of that string translated into the character set expected by
1907draw_text().
1908
1909Drawing implementations are not required to handle anything outside
1910ASCII, but are permitted to assume that _some_ string will be
1911successfully translated. So every call to this function must include
1912a string somewhere in the list (presumably the last element) which
1913consists of nothing but ASCII, to be used by any front end which cannot
1914handle anything else.
1915
1916For example, if a puzzle wished to display a string including a
1917multiplication sign (U+00D7 in Unicode, represented by the bytes C3 97
1918in UTF-8), it might do something like this:
1919
1920 static const char *const times_signs[] = { "\xC3\x97", "x" };
1921 char *times_sign = text_fallback(dr, times_signs, 2);
1922 sprintf(buffer, "%d%s%d", width, times_sign, height);
1923 draw_text(dr, x, y, font, size, align, colour, buffer);
1924 sfree(buffer);
1925
1926which would draw a string with a times sign in the middle on platforms
1927that support it, and fall back to a simple ASCII `x' where there was no
1928alternative.
1929
1930#3.1.9. clip()
1931
1932 void clip(drawing *dr, int x, int y, int w, int h);
1933
1934Establishes a clipping rectangle in the puzzle window.
1935
1936`x' and `y' give the coordinates of the top left pixel of the clipping
1937rectangle. `w' and `h' give its width and height. Thus, the horizontal
1938extent of the rectangle runs from `x' to `x+w-1' inclusive, and the
1939vertical extent from `y' to `y+h-1' inclusive. (These are exactly the
1940same semantics as draw_rect().)
1941
1942After this call, no drawing operation will affect anything outside the
1943specified rectangle. The effect can be reversed by calling unclip()
1944(section 3.1.10). The clipping rectangle is pixel-perfect: pixels within
1945the rectangle are affected as usual by drawing functions; pixels outside
1946are completely untouched.
1947
1948Back ends should not assume that a clipping rectangle will be
1949automatically cleared up by the front end if it's left lying around;
1950that might work on current front ends, but shouldn't be relied upon.
1951Always explicitly call unclip().
1952
1953This function may be used for both drawing and printing.
1954
1955#3.1.10. unclip()
1956
1957 void unclip(drawing *dr);
1958
1959Reverts the effect of a previous call to clip(). After this call, all
1960drawing operations will be able to affect the entire puzzle window
1961again.
1962
1963This function may be used for both drawing and printing.
1964
1965#3.1.11. draw_update()
1966
1967 void draw_update(drawing *dr, int x, int y, int w, int h);
1968
1969Informs the front end that a rectangular portion of the puzzle window
1970has been drawn on and needs to be updated.
1971
1972`x' and `y' give the coordinates of the top left pixel of the update
1973rectangle. `w' and `h' give its width and height. Thus, the horizontal
1974extent of the rectangle runs from `x' to `x+w-1' inclusive, and the
1975vertical extent from `y' to `y+h-1' inclusive. (These are exactly the
1976same semantics as draw_rect().)
1977
1978The back end redraw function _must_ call this function to report any
1979changes it has made to the window. Otherwise, those changes may not
1980become immediately visible, and may then appear at an unpredictable
1981subsequent time such as the next time the window is covered and re-
1982exposed.
1983
1984This function is only important when drawing. It may be called when
1985printing as well, but doing so is not compulsory, and has no effect.
1986(So if you have a shared piece of code between the drawing and printing
1987routines, that code may safely call draw_update().)
1988
1989#3.1.12. status_bar()
1990
1991 void status_bar(drawing *dr, const char *text);
1992
1993Sets the text in the game's status bar to `text'. The text is copied
1994from the supplied buffer, so the caller is free to deallocate or modify
1995the buffer after use.
1996
1997(This function is not exactly a _drawing_ function, but it shares with
1998the drawing API the property that it may only be called from within the
1999back end redraw function, so this is as good a place as any to document
2000it.)
2001
2002The supplied text is filtered through the mid-end for optional rewriting
2003before being passed on to the front end; the mid-end will prepend the
2004current game time if the game is timed (and may in future perform other
2005rewriting if it seems like a good idea).
2006
2007This function is for drawing only; it must never be called during
2008printing.
2009
2010#3.1.13. Blitter functions
2011
2012This section describes a group of related functions which save and
2013restore a section of the puzzle window. This is most commonly used to
2014implement user interfaces involving dragging a puzzle element around the
2015window: at the end of each call to redraw(), if an object is currently
2016being dragged, the back end saves the window contents under that
2017location and then draws the dragged object, and at the start of the next
2018redraw() the first thing it does is to restore the background.
2019
2020The front end defines an opaque type called a `blitter', which is
2021capable of storing a rectangular area of a specified size.
2022
2023Blitter functions are for drawing only; they must never be called during
2024printing.
2025
2026#3.1.13.1. blitter_new()
2027
2028 blitter *blitter_new(drawing *dr, int w, int h);
2029
2030Creates a new blitter object which stores a rectangle of size `w' by `h'
2031pixels. Returns a pointer to the blitter object.
2032
2033Blitter objects are best stored in the `game_drawstate'. A good time to
2034create them is in the set_size() function (section 2.8.5), since it is
2035at this point that you first know how big a rectangle they will need to
2036save.
2037
2038#3.1.13.2. blitter_free()
2039
2040 void blitter_free(drawing *dr, blitter *bl);
2041
2042Disposes of a blitter object. Best called in free_drawstate(). (However,
2043check that the blitter object is not NULL before attempting to free it;
2044it is possible that a draw state might be created and freed without ever
2045having set_size() called on it in between.)
2046
2047#3.1.13.3. blitter_save()
2048
2049 void blitter_save(drawing *dr, blitter *bl, int x, int y);
2050
2051This is a true drawing API function, in that it may only be called from
2052within the game redraw routine. It saves a rectangular portion of the
2053puzzle window into the specified blitter object.
2054
2055`x' and `y' give the coordinates of the top left corner of the saved
2056rectangle. The rectangle's width and height are the ones specified when
2057the blitter object was created.
2058
2059This function is required to cope and do the right thing if `x' and `y'
2060are out of range. (The right thing probably means saving whatever part
2061of the blitter rectangle overlaps with the visible area of the puzzle
2062window.)
2063
2064#3.1.13.4. blitter_load()
2065
2066 void blitter_load(drawing *dr, blitter *bl, int x, int y);
2067
2068This is a true drawing API function, in that it may only be called from
2069within the game redraw routine. It restores a rectangular portion of the
2070puzzle window from the specified blitter object.
2071
2072`x' and `y' give the coordinates of the top left corner of the rectangle
2073to be restored. The rectangle's width and height are the ones specified
2074when the blitter object was created.
2075
2076Alternatively, you can specify both `x' and `y' as the special value
2077BLITTER_FROMSAVED, in which case the rectangle will be restored to
2078exactly where it was saved from. (This is probably what you want to do
2079almost all the time, if you're using blitters to implement draggable
2080puzzle elements.)
2081
2082This function is required to cope and do the right thing if `x' and
2083`y' (or the equivalent ones saved in the blitter) are out of range.
2084(The right thing probably means restoring whatever part of the blitter
2085rectangle overlaps with the visible area of the puzzle window.)
2086
2087If this function is called on a blitter which had previously been saved
2088from a partially out-of-range rectangle, then the parts of the saved
2089bitmap which were not visible at save time are undefined. If the blitter
2090is restored to a different position so as to make those parts visible,
2091the effect on the drawing area is undefined.
2092
2093#3.1.14. print_mono_colour()
2094
2095 int print_mono_colour(drawing *dr, int grey);
2096
2097This function allocates a colour index for a simple monochrome colour
2098during printing.
2099
2100`grey' must be 0 or 1. If `grey' is 0, the colour returned is black; if
2101`grey' is 1, the colour is white.
2102
2103#3.1.15. print_grey_colour()
2104
2105 int print_grey_colour(drawing *dr, float grey);
2106
2107This function allocates a colour index for a grey-scale colour during
2108printing.
2109
2110`grey' may be any number between 0 (black) and 1 (white); for example,
21110.5 indicates a medium grey.
2112
2113The chosen colour will be rendered to the limits of the printer's
2114halftoning capability.
2115
2116#3.1.16. print_hatched_colour()
2117
2118 int print_hatched_colour(drawing *dr, int hatch);
2119
2120This function allocates a colour index which does not represent a
2121literal _colour_. Instead, regions shaded in this colour will be hatched
2122with parallel lines. The `hatch' parameter defines what type of hatching
2123should be used in place of this colour:
2124
2125HATCH_SLASH
2126
2127 This colour will be hatched by lines slanting to the right at 45
2128 degrees.
2129
2130HATCH_BACKSLASH
2131
2132 This colour will be hatched by lines slanting to the left at 45
2133 degrees.
2134
2135HATCH_HORIZ
2136
2137 This colour will be hatched by horizontal lines.
2138
2139HATCH_VERT
2140
2141 This colour will be hatched by vertical lines.
2142
2143HATCH_PLUS
2144
2145 This colour will be hatched by criss-crossing horizontal and
2146 vertical lines.
2147
2148HATCH_X
2149
2150 This colour will be hatched by criss-crossing diagonal lines.
2151
2152Colours defined to use hatching may not be used for drawing lines or
2153text; they may only be used for filling areas. That is, they may be
2154used as the `fillcolour' parameter to draw_circle() and draw_polygon(),
2155and as the colour parameter to draw_rect(), but may not be used as the
2156`outlinecolour' parameter to draw_circle() or draw_polygon(), or with
2157draw_line() or draw_text().
2158
2159#3.1.17. print_rgb_mono_colour()
2160
2161 int print_rgb_mono_colour(drawing *dr, float r, float g,
2162 float b, float grey);
2163
2164This function allocates a colour index for a fully specified RGB colour
2165during printing.
2166
2167`r', `g' and `b' may each be anywhere in the range from 0 to 1.
2168
2169If printing in black and white only, these values will be ignored, and
2170either pure black or pure white will be used instead, according to the
2171`grey' parameter. (The fallback colour is the same as the one which
2172would be allocated by print_mono_colour(grey).)
2173
2174#3.1.18. print_rgb_grey_colour()
2175
2176 int print_rgb_grey_colour(drawing *dr, float r, float g,
2177 float b, float grey);
2178
2179This function allocates a colour index for a fully specified RGB colour
2180during printing.
2181
2182`r', `g' and `b' may each be anywhere in the range from 0 to 1.
2183
2184If printing in black and white only, these values will be ignored, and
2185a shade of grey given by the `grey' parameter will be used instead.
2186(The fallback colour is the same as the one which would be allocated by
2187print_grey_colour(grey).)
2188
2189#3.1.19. print_rgb_hatched_colour()
2190
2191 int print_rgb_hatched_colour(drawing *dr, float r, float g,
2192 float b, float hatched);
2193
2194This function allocates a colour index for a fully specified RGB colour
2195during printing.
2196
2197`r', `g' and `b' may each be anywhere in the range from 0 to 1.
2198
2199If printing in black and white only, these values will be ignored, and
2200a form of cross-hatching given by the `hatch' parameter will be used
2201instead; see section 3.1.16 for the possible values of this parameter.
2202(The fallback colour is the same as the one which would be allocated by
2203print_hatched_colour(hatch).)
2204
2205#3.1.20. print_line_width()
2206
2207 void print_line_width(drawing *dr, int width);
2208
2209This function is called to set the thickness of lines drawn during
2210printing. It is meaningless in drawing: all lines drawn by draw_line(),
2211draw_circle and draw_polygon() are one pixel in thickness. However, in
2212printing there is no clear definition of a pixel and so line widths must
2213be explicitly specified.
2214
2215The line width is specified in the usual coordinate system. Note,
2216however, that it is a hint only: the central printing system may choose
2217to vary line thicknesses at user request or due to printer capabilities.
2218
2219#3.1.21. print_line_dotted()
2220
2221 void print_line_dotted(drawing *dr, int dotted);
2222
2223This function is called to toggle the drawing of dotted lines during
2224printing. It is not supported during drawing.
2225
2226The parameter `dotted' is a boolean; TRUE means that future lines drawn
2227by draw_line(), draw_circle and draw_polygon() will be dotted, and FALSE
2228means that they will be solid.
2229
2230Some front ends may impose restrictions on the width of dotted lines.
2231Asking for a dotted line via this front end will override any line width
2232request if the front end requires it.
2233
2234#3.2. The drawing API as implemented by the front end
2235
2236This section describes the drawing API in the function-pointer form in
2237which it is implemented by a front end.
2238
2239(It isn't only platform-specific front ends which implement this API;
2240the platform-independent module `ps.c' also provides an implementation
2241of it which outputs PostScript. Thus, any platform which wants to do PS
2242printing can do so with minimum fuss.)
2243
2244The following entries all describe function pointer fields in a
2245structure called `drawing_api'. Each of the functions takes a `void *'
2246context pointer, which it should internally cast back to a more useful
2247type. Thus, a drawing _object_ (`drawing *)' suitable for passing to
2248the back end redraw or printing functions is constructed by passing a
2249`drawing_api' and a `void *' to the function drawing_new() (see section
22503.3.1).
2251
2252#3.2.1. draw_text()
2253
2254 void (*draw_text)(void *handle, int x, int y, int fonttype,
2255 int fontsize, int align, int colour,
2256 const char *text);
2257
2258This function behaves exactly like the back end draw_text() function;
2259see section 3.1.7.
2260
2261#3.2.2. draw_rect()
2262
2263 void (*draw_rect)(void *handle, int x, int y, int w, int h,
2264 int colour);
2265
2266This function behaves exactly like the back end draw_rect() function;
2267see section 3.1.1.
2268
2269#3.2.3. draw_line()
2270
2271 void (*draw_line)(void *handle, int x1, int y1, int x2, int y2,
2272 int colour);
2273
2274This function behaves exactly like the back end draw_line() function;
2275see section 3.1.3.
2276
2277#3.2.4. draw_polygon()
2278
2279 void (*draw_polygon)(void *handle, int *coords, int npoints,
2280 int fillcolour, int outlinecolour);
2281
2282This function behaves exactly like the back end draw_polygon() function;
2283see section 3.1.4.
2284
2285#3.2.5. draw_circle()
2286
2287 void (*draw_circle)(void *handle, int cx, int cy, int radius,
2288 int fillcolour, int outlinecolour);
2289
2290This function behaves exactly like the back end draw_circle() function;
2291see section 3.1.5.
2292
2293#3.2.6. draw_thick_line()
2294
2295 void draw_thick_line(drawing *dr, float thickness,
2296 float x1, float y1, float x2, float y2,
2297 int colour)
2298
2299This function behaves exactly like the back end draw_thick_line()
2300function; see section 3.1.6.
2301
2302An implementation of this API which doesn't provide high-quality
2303rendering of thick lines is permitted to define this function pointer
2304to be NULL. The middleware in drawing.c will notice and provide a low-
2305quality alternative using draw_polygon().
2306
2307#3.2.7. draw_update()
2308
2309 void (*draw_update)(void *handle, int x, int y, int w, int h);
2310
2311This function behaves exactly like the back end draw_update() function;
2312see section 3.1.11.
2313
2314An implementation of this API which only supports printing is permitted
2315to define this function pointer to be NULL rather than bothering to
2316define an empty function. The middleware in drawing.c will notice and
2317avoid calling it.
2318
2319#3.2.8. clip()
2320
2321 void (*clip)(void *handle, int x, int y, int w, int h);
2322
2323This function behaves exactly like the back end clip() function; see
2324section 3.1.9.
2325
2326#3.2.9. unclip()
2327
2328 void (*unclip)(void *handle);
2329
2330This function behaves exactly like the back end unclip() function; see
2331section 3.1.10.
2332
2333#3.2.10. start_draw()
2334
2335 void (*start_draw)(void *handle);
2336
2337This function is called at the start of drawing. It allows the front end
2338to initialise any temporary data required to draw with, such as device
2339contexts.
2340
2341Implementations of this API which do not provide drawing services may
2342define this function pointer to be NULL; it will never be called unless
2343drawing is attempted.
2344
2345#3.2.11. end_draw()
2346
2347 void (*end_draw)(void *handle);
2348
2349This function is called at the end of drawing. It allows the front end
2350to do cleanup tasks such as deallocating device contexts and scheduling
2351appropriate GUI redraw events.
2352
2353Implementations of this API which do not provide drawing services may
2354define this function pointer to be NULL; it will never be called unless
2355drawing is attempted.
2356
2357#3.2.12. status_bar()
2358
2359 void (*status_bar)(void *handle, const char *text);
2360
2361This function behaves exactly like the back end status_bar() function;
2362see section 3.1.12.
2363
2364Front ends implementing this function need not worry about it
2365being called repeatedly with the same text; the middleware code in
2366status_bar() will take care of this.
2367
2368Implementations of this API which do not provide drawing services may
2369define this function pointer to be NULL; it will never be called unless
2370drawing is attempted.
2371
2372#3.2.13. blitter_new()
2373
2374 blitter *(*blitter_new)(void *handle, int w, int h);
2375
2376This function behaves exactly like the back end blitter_new() function;
2377see section 3.1.13.1.
2378
2379Implementations of this API which do not provide drawing services may
2380define this function pointer to be NULL; it will never be called unless
2381drawing is attempted.
2382
2383#3.2.14. blitter_free()
2384
2385 void (*blitter_free)(void *handle, blitter *bl);
2386
2387This function behaves exactly like the back end blitter_free() function;
2388see section 3.1.13.2.
2389
2390Implementations of this API which do not provide drawing services may
2391define this function pointer to be NULL; it will never be called unless
2392drawing is attempted.
2393
2394#3.2.15. blitter_save()
2395
2396 void (*blitter_save)(void *handle, blitter *bl, int x, int y);
2397
2398This function behaves exactly like the back end blitter_save() function;
2399see section 3.1.13.3.
2400
2401Implementations of this API which do not provide drawing services may
2402define this function pointer to be NULL; it will never be called unless
2403drawing is attempted.
2404
2405#3.2.16. blitter_load()
2406
2407 void (*blitter_load)(void *handle, blitter *bl, int x, int y);
2408
2409This function behaves exactly like the back end blitter_load() function;
2410see section 3.1.13.4.
2411
2412Implementations of this API which do not provide drawing services may
2413define this function pointer to be NULL; it will never be called unless
2414drawing is attempted.
2415
2416#3.2.17. begin_doc()
2417
2418 void (*begin_doc)(void *handle, int pages);
2419
2420This function is called at the beginning of a printing run. It gives the
2421front end an opportunity to initialise any required printing subsystem.
2422It also provides the number of pages in advance.
2423
2424Implementations of this API which do not provide printing services may
2425define this function pointer to be NULL; it will never be called unless
2426printing is attempted.
2427
2428#3.2.18. begin_page()
2429
2430 void (*begin_page)(void *handle, int number);
2431
2432This function is called during printing, at the beginning of each page.
2433It gives the page number (numbered from 1 rather than 0, so suitable for
2434use in user-visible contexts).
2435
2436Implementations of this API which do not provide printing services may
2437define this function pointer to be NULL; it will never be called unless
2438printing is attempted.
2439
2440#3.2.19. begin_puzzle()
2441
2442 void (*begin_puzzle)(void *handle, float xm, float xc,
2443 float ym, float yc, int pw, int ph, float wmm);
2444
2445This function is called during printing, just before printing a single
2446puzzle on a page. It specifies the size and location of the puzzle on
2447the page.
2448
2449`xm' and `xc' specify the horizontal position of the puzzle on the page,
2450as a linear function of the page width. The front end is expected to
2451multiply the page width by `xm', add `xc' (measured in millimetres), and
2452use the resulting x-coordinate as the left edge of the puzzle.
2453
2454Similarly, `ym' and `yc' specify the vertical position of the puzzle as
2455a function of the page height: the page height times `ym', plus `yc'
2456millimetres, equals the desired distance from the top of the page to the
2457top of the puzzle.
2458
2459(This unwieldy mechanism is required because not all printing systems
2460can communicate the page size back to the software. The PostScript back
2461end, for example, writes out PS which determines the page size at print
2462time by means of calling `clippath', and centres the puzzles within
2463that. Thus, exactly the same PS file works on A4 or on US Letter paper
2464without needing local configuration, which simplifies matters.)
2465
2466pw and ph give the size of the puzzle in drawing API coordinates. The
2467printing system will subsequently call the puzzle's own print function,
2468which will in turn call drawing API functions in the expectation that an
2469area pw by ph units is available to draw the puzzle on.
2470
2471Finally, wmm gives the desired width of the puzzle in millimetres. (The
2472aspect ratio is expected to be preserved, so if the desired puzzle
2473height is also needed then it can be computed as wmm*ph/pw.)
2474
2475Implementations of this API which do not provide printing services may
2476define this function pointer to be NULL; it will never be called unless
2477printing is attempted.
2478
2479#3.2.20. end_puzzle()
2480
2481 void (*end_puzzle)(void *handle);
2482
2483This function is called after the printing of a specific puzzle is
2484complete.
2485
2486Implementations of this API which do not provide printing services may
2487define this function pointer to be NULL; it will never be called unless
2488printing is attempted.
2489
2490#3.2.21. end_page()
2491
2492 void (*end_page)(void *handle, int number);
2493
2494This function is called after the printing of a page is finished.
2495
2496Implementations of this API which do not provide printing services may
2497define this function pointer to be NULL; it will never be called unless
2498printing is attempted.
2499
2500#3.2.22. end_doc()
2501
2502 void (*end_doc)(void *handle);
2503
2504This function is called after the printing of the entire document is
2505finished. This is the moment to close files, send things to the print
2506spooler, or whatever the local convention is.
2507
2508Implementations of this API which do not provide printing services may
2509define this function pointer to be NULL; it will never be called unless
2510printing is attempted.
2511
2512#3.2.23. line_width()
2513
2514 void (*line_width)(void *handle, float width);
2515
2516This function is called to set the line thickness, during printing only.
2517Note that the width is a float here, where it was an int as seen by the
2518back end. This is because drawing.c may have scaled it on the way past.
2519
2520However, the width is still specified in the same coordinate system as
2521the rest of the drawing.
2522
2523Implementations of this API which do not provide printing services may
2524define this function pointer to be NULL; it will never be called unless
2525printing is attempted.
2526
2527#3.2.24. text_fallback()
2528
2529 char *(*text_fallback)(void *handle, const char *const *strings,
2530 int nstrings);
2531
2532This function behaves exactly like the back end text_fallback()
2533function; see section 3.1.8.
2534
2535Implementations of this API which do not support any characters outside
2536ASCII may define this function pointer to be NULL, in which case the
2537central code in drawing.c will provide a default implementation.
2538
2539#3.3. The drawing API as called by the front end
2540
2541There are a small number of functions provided in drawing.c which the
2542front end needs to _call_, rather than helping to implement. They are
2543described in this section.
2544
2545#3.3.1. drawing_new()
2546
2547 drawing *drawing_new(const drawing_api *api, midend *me,
2548 void *handle);
2549
2550This function creates a drawing object. It is passed a `drawing_api',
2551which is a structure containing nothing but function pointers; and also
2552a `void *' handle. The handle is passed back to each function pointer
2553when it is called.
2554
2555The `midend' parameter is used for rewriting the status bar contents:
2556status_bar() (see section 3.1.12) has to call a function in the mid-
2557end which might rewrite the status bar text. If the drawing object
2558is to be used only for printing, or if the game is known not to call
2559status_bar(), this parameter may be NULL.
2560
2561#3.3.2. drawing_free()
2562
2563 void drawing_free(drawing *dr);
2564
2565This function frees a drawing object. Note that the `void *' handle is
2566not freed; if that needs cleaning up it must be done by the front end.
2567
2568#3.3.3. print_get_colour()
2569
2570 void print_get_colour(drawing *dr, int colour, int printincolour,
2571 int *hatch, float *r, float *g, float *b)
2572
2573This function is called by the implementations of the drawing API
2574functions when they are called in a printing context. It takes a colour
2575index as input, and returns the description of the colour as requested
2576by the back end.
2577
2578`printincolour' is TRUE iff the implementation is printing in colour.
2579This will alter the results returned if the colour in question was
2580specified with a black-and-white fallback value.
2581
2582If the colour should be rendered by hatching, `*hatch' is filled with
2583the type of hatching desired. See section 3.1.15 for details of the
2584values this integer can take.
2585
2586If the colour should be rendered as solid colour, `*hatch' is given a
2587negative value, and `*r', `*g' and `*b' are filled with the RGB values
2588of the desired colour (if printing in colour), or all filled with the
2589grey-scale value (if printing in black and white).
2590
2591#4. The API provided by the mid-end
2592
2593This chapter documents the API provided by the mid-end to be called by
2594the front end. You probably only need to read this if you are a front
2595end implementor, i.e. you are porting Puzzles to a new platform. If
2596you're only interested in writing new puzzles, you can safely skip this
2597chapter.
2598
2599All the persistent state in the mid-end is encapsulated within a
2600`midend' structure, to facilitate having multiple mid-ends in any
2601port which supports multiple puzzle windows open simultaneously. Each
2602`midend' is intended to handle the contents of a single puzzle window.
2603
2604#4.1. midend_new()
2605
2606 midend *midend_new(frontend *fe, const game *ourgame,
2607 const drawing_api *drapi, void *drhandle)
2608
2609Allocates and returns a new mid-end structure.
2610
2611The `fe' argument is stored in the mid-end. It will be used when calling
2612back to functions such as activate_timer() (section 4.36), and will be
2613passed on to the back end function colours() (section 2.8.6).
2614
2615The parameters `drapi' and `drhandle' are passed to drawing_new()
2616(section 3.3.1) to construct a drawing object which will be passed to
2617the back end function redraw() (section 2.8.10). Hence, all drawing-
2618related function pointers defined in `drapi' can expect to be called
2619with `drhandle' as their first argument.
2620
2621The `ourgame' argument points to a container structure describing a game
2622back end. The mid-end thus created will only be capable of handling that
2623one game. (So even in a monolithic front end containing all the games,
2624this imposes the constraint that any individual puzzle window is tied to
2625a single game. Unless, of course, you feel brave enough to change the
2626mid-end for the window without closing the window...)
2627
2628#4.2. midend_free()
2629
2630 void midend_free(midend *me);
2631
2632Frees a mid-end structure and all its associated data.
2633
2634#4.3. midend_tilesize()
2635
2636 int midend_tilesize(midend *me);
2637
2638Returns the `tilesize' parameter being used to display the current
2639puzzle (section 2.8.3).
2640
2641#4.4. midend_set_params()
2642
2643 void midend_set_params(midend *me, game_params *params);
2644
2645Sets the current game parameters for a mid-end. Subsequent games
2646generated by midend_new_game() (section 4.8) will use these parameters
2647until further notice.
2648
2649The usual way in which the front end will have an actual `game_params'
2650structure to pass to this function is if it had previously got it from
2651midend_get_presets() (section 4.15). Thus, this function is usually
2652called in response to the user making a selection from the presets menu.
2653
2654#4.5. midend_get_params()
2655
2656 game_params *midend_get_params(midend *me);
2657
2658Returns the current game parameters stored in this mid-end.
2659
2660The returned value is dynamically allocated, and should be freed when
2661finished with by passing it to the game's own free_params() function
2662(see section 2.3.6).
2663
2664#4.6. midend_size()
2665
2666 void midend_size(midend *me, int *x, int *y, int user_size);
2667
2668Tells the mid-end to figure out its window size.
2669
2670On input, `*x' and `*y' should contain the maximum or requested size
2671for the window. (Typically this will be the size of the screen that the
2672window has to fit on, or similar.) The mid-end will repeatedly call the
2673back end function compute_size() (section 2.8.4), searching for a tile
2674size that best satisfies the requirements. On exit, `*x' and `*y' will
2675contain the size needed for the puzzle window's drawing area. (It is
2676of course up to the front end to adjust this for any additional window
2677furniture such as menu bars and window borders, if necessary. The status
2678bar is also not included in this size.)
2679
2680Use `user_size' to indicate whether `*x' and `*y' are a requested size,
2681or just a maximum size.
2682
2683If `user_size' is set to TRUE, the mid-end will treat the input size as
2684a request, and will pick a tile size which approximates it _as closely
2685as possible_, going over the game's preferred tile size if necessary to
2686achieve this. The mid-end will also use the resulting tile size as its
2687preferred one until further notice, on the assumption that this size was
2688explicitly requested by the user. Use this option if you want your front
2689end to support dynamic resizing of the puzzle window with automatic
2690scaling of the puzzle to fit.
2691
2692If `user_size' is set to FALSE, then the game's tile size will never go
2693over its preferred one, although it may go under in order to fit within
2694the maximum bounds specified by `*x' and `*y'. This is the recommended
2695approach when opening a new window at default size: the game will use
2696its preferred size unless it has to use a smaller one to fit on the
2697screen. If the tile size is shrunk for this reason, the change will not
2698persist; if a smaller grid is subsequently chosen, the tile size will
2699recover.
2700
2701The mid-end will try as hard as it can to return a size which is
2702less than or equal to the input size, in both dimensions. In extreme
2703circumstances it may fail (if even the lowest possible tile size gives
2704window dimensions greater than the input), in which case it will return
2705a size greater than the input size. Front ends should be prepared
2706for this to happen (i.e. don't crash or fail an assertion), but may
2707handle it in any way they see fit: by rejecting the game parameters
2708which caused the problem, by opening a window larger than the screen
2709regardless of inconvenience, by introducing scroll bars on the window,
2710by drawing on a large bitmap and scaling it into a smaller window, or by
2711any other means you can think of. It is likely that when the tile size
2712is that small the game will be unplayable anyway, so don't put _too_
2713much effort into handling it creatively.
2714
2715If your platform has no limit on window size (or if you're planning to
2716use scroll bars for large puzzles), you can pass dimensions of INT_MAX
2717as input to this function. You should probably not do that _and_ set the
2718`user_size' flag, though!
2719
2720The midend relies on the frontend calling midend_new_game() (section
27214.8) before calling midend_size().
2722
2723#4.7. midend_reset_tilesize()
2724
2725 void midend_reset_tilesize(midend *me);
2726
2727This function resets the midend's preferred tile size to that of the
2728standard puzzle.
2729
2730As discussed in section 4.6, puzzle resizes are typically 'sticky',
2731in that once the user has dragged the puzzle to a different window
2732size, the resulting tile size will be remembered and used when the
2733puzzle configuration changes. If you _don't_ want that, e.g. if you
2734want to provide a command to explicitly reset the puzzle size back to
2735its default, then you can call this just before calling midend_size()
2736(which, in turn, you would probably call with `user_size' set to FALSE).
2737
2738#4.8. midend_new_game()
2739
2740 void midend_new_game(midend *me);
2741
2742Causes the mid-end to begin a new game. Normally the game will be a
2743new randomly generated puzzle. However, if you have previously called
2744midend_game_id() or midend_set_config(), the game generated might be
2745dictated by the results of those functions. (In particular, you _must_
2746call midend_new_game() after calling either of those functions, or else
2747no immediate effect will be visible.)
2748
2749You will probably need to call midend_size() after calling this
2750function, because if the game parameters have been changed since the
2751last new game then the window size might need to change. (If you know
2752the parameters _haven't_ changed, you don't need to do this.)
2753
2754This function will create a new `game_drawstate', but does not actually
2755perform a redraw (since you often need to call midend_size() before
2756the redraw can be done). So after calling this function and after
2757calling midend_size(), you should then call midend_redraw(). (It is not
2758necessary to call midend_force_redraw(); that will discard the draw
2759state and create a fresh one, which is unnecessary in this case since
2760there's a fresh one already. It would work, but it's usually excessive.)
2761
2762#4.9. midend_restart_game()
2763
2764 void midend_restart_game(midend *me);
2765
2766This function causes the current game to be restarted. This is done by
2767placing a new copy of the original game state on the end of the undo
2768list (so that an accidental restart can be undone).
2769
2770This function automatically causes a redraw, i.e. the front end can
2771expect its drawing API to be called from _within_ a call to this
2772function. Some back ends require that midend_size() (section 4.6) is
2773called before midend_restart_game().
2774
2775#4.10. midend_force_redraw()
2776
2777 void midend_force_redraw(midend *me);
2778
2779Forces a complete redraw of the puzzle window, by means of discarding
2780the current `game_drawstate' and creating a new one from scratch before
2781calling the game's redraw() function.
2782
2783The front end can expect its drawing API to be called from within a call
2784to this function. Some back ends require that midend_size() (section
27854.6) is called before midend_force_redraw().
2786
2787#4.11. midend_redraw()
2788
2789 void midend_redraw(midend *me);
2790
2791Causes a partial redraw of the puzzle window, by means of simply calling
2792the game's redraw() function. (That is, the only things redrawn will be
2793things that have changed since the last redraw.)
2794
2795The front end can expect its drawing API to be called from within a call
2796to this function. Some back ends require that midend_size() (section
27974.6) is called before midend_redraw().
2798
2799#4.12. midend_process_key()
2800
2801 int midend_process_key(midend *me, int x, int y, int button);
2802
2803The front end calls this function to report a mouse or keyboard event.
2804The parameters `x', `y' and `button' are almost identical to the ones
2805passed to the back end function interpret_move() (section 2.7.1), except
2806that the front end is _not_ required to provide the guarantees about
2807mouse event ordering. The mid-end will sort out multiple simultaneous
2808button presses and changes of button; the front end's responsibility
2809is simply to pass on the mouse events it receives as accurately as
2810possible.
2811
2812(Some platforms may need to emulate absent mouse buttons by means of
2813using a modifier key such as Shift with another mouse button. This tends
2814to mean that if Shift is pressed or released in the middle of a mouse
2815drag, the mid-end will suddenly stop receiving, say, LEFT_DRAG events
2816and start receiving RIGHT_DRAGs, with no intervening button release or
2817press events. This too is something which the mid-end will sort out for
2818you; the front end has no obligation to maintain sanity in this area.)
2819
2820The front end _should_, however, always eventually send some kind of
2821button release. On some platforms this requires special effort: Windows,
2822for example, requires a call to the system API function SetCapture() in
2823order to ensure that your window receives a mouse-up event even if the
2824pointer has left the window by the time the mouse button is released.
2825On any platform that requires this sort of thing, the front end _is_
2826responsible for doing it.
2827
2828Calling this function is very likely to result in calls back to the
2829front end's drawing API and/or activate_timer() (section 4.36).
2830
2831The return value from midend_process_key() is non-zero, unless the
2832effect of the keypress was to request termination of the program. A
2833front end should shut down the puzzle in response to a zero return.
2834
2835#4.13. midend_colours()
2836
2837 float *midend_colours(midend *me, int *ncolours);
2838
2839Returns an array of the colours required by the game, in exactly
2840the same format as that returned by the back end function colours()
2841(section 2.8.6). Front ends should call this function rather than
2842calling the back end's version directly, since the mid-end adds standard
2843customisation facilities. (At the time of writing, those customisation
2844facilities are implemented hackily by means of environment variables,
2845but it's not impossible that they may become more full and formal in
2846future.)
2847
2848#4.14. midend_timer()
2849
2850 void midend_timer(midend *me, float tplus);
2851
2852If the mid-end has called activate_timer() (section 4.36) to request
2853regular callbacks for purposes of animation or timing, this is the
2854function the front end should call on a regular basis. The argument
2855`tplus' gives the time, in seconds, since the last time either this
2856function was called or activate_timer() was invoked.
2857
2858One of the major purposes of timing in the mid-end is to perform move
2859animation. Therefore, calling this function is very likely to result in
2860calls back to the front end's drawing API.
2861
2862#4.15. midend_get_presets()
2863
2864 struct preset_menu *midend_get_presets(midend *me, int *id_limit);
2865
2866Returns a data structure describing this game's collection of preset
2867game parameters, organised into a hierarchical structure of menus and
2868submenus.
2869
2870The return value is a pointer to a data structure containing the
2871following fields (among others, which are not intended for front end
2872use):
2873
2874 struct preset_menu {
2875 int n_entries;
2876 struct preset_menu_entry *entries;
2877 /* and other things */
2878 };
2879
2880Those fields describe the intended contents of one particular menu in
2881the hierarchy. `entries' points to an array of `n_entries' items, each
2882of which is a structure containing the following fields:
2883
2884 struct preset_menu_entry {
2885 char *title;
2886 game_params *params;
2887 struct preset_menu *submenu;
2888 int id;
2889 };
2890
2891Of these fields, `title' and `id' are present in every entry, giving
2892(respectively) the textual name of the menu item and an integer
2893identifier for it. The integer id will correspond to the one returned
2894by `midend_which_preset' (section 4.16), when that preset is the one
2895selected.
2896
2897The other two fields are mutually exclusive. Each
2898`struct preset_menu_entry' will have one of those fields NULL and the
2899other one non-null. If the menu item is an actual preset, then `params'
2900will point to the set of game parameters that go with the name; if it's
2901a submenu, then `submenu' instead will be non-null, and will point at a
2902subsidiary `struct preset_menu'.
2903
2904The complete hierarchy of these structures is owned by the mid-end,
2905and will be freed when the mid-end is freed. The front end should not
2906attempt to free any of it.
2907
2908The integer identifiers will be allocated densely from 0 upwards, so
2909that it's reasonable for the front end to allocate an array which uses
2910them as indices, if it needs to store information per preset menu item.
2911For this purpose, the front end may pass the second parameter `id_limit'
2912to midend_get_presets as the address of an `int' variable, into which
2913midend_get_presets will write an integer one larger than the largest id
2914number actually used (i.e. the number of elements the front end would
2915need in the array).
2916
2917Submenu-type entries also have integer identifiers.
2918
2919#4.16. midend_which_preset()
2920
2921 int midend_which_preset(midend *me);
2922
2923Returns the numeric index of the preset game parameter structure which
2924matches the current game parameters, or a negative number if no preset
2925matches. Front ends could use this to maintain a tick beside one of the
2926items in the menu (or tick the `Custom' option if the return value is
2927less than zero).
2928
2929The returned index value (if non-negative) will match the `id'
2930field of the corresponding struct preset_menu_entry returned by
2931`midend_get_presets()' (section 4.15).
2932
2933#4.17. midend_wants_statusbar()
2934
2935 int midend_wants_statusbar(midend *me);
2936
2937This function returns TRUE if the puzzle has a use for a textual status
2938line (to display score, completion status, currently active tiles, time,
2939or anything else).
2940
2941Front ends should call this function rather than talking directly to the
2942back end.
2943
2944#4.18. midend_get_config()
2945
2946 config_item *midend_get_config(midend *me, int which,
2947 char **wintitle);
2948
2949Returns a dialog box description for user configuration.
2950
2951On input, which should be set to one of three values, which select which
2952of the various dialog box descriptions is returned:
2953
2954CFG_SETTINGS
2955
2956 Requests the GUI parameter configuration box generated by the puzzle
2957 itself. This should be used when the user selects `Custom' from the
2958 game types menu (or equivalent). The mid-end passes this request on
2959 to the back end function configure() (section 2.3.9).
2960
2961CFG_DESC
2962
2963 Requests a box suitable for entering a descriptive game ID (and
2964 viewing the existing one). The mid-end generates this dialog box
2965 description itself. This should be used when the user selects
2966 `Specific' from the game menu (or equivalent).
2967
2968CFG_SEED
2969
2970 Requests a box suitable for entering a random-seed game ID (and
2971 viewing the existing one). The mid-end generates this dialog box
2972 description itself. This should be used when the user selects
2973 `Random Seed' from the game menu (or equivalent).
2974
2975The returned value is an array of config_items, exactly as described
2976in section 2.3.9. Another returned value is an ASCII string giving a
2977suitable title for the configuration window, in `*wintitle'.
2978
2979Both returned values are dynamically allocated and will need to be
2980freed. The window title can be freed in the obvious way; the config_item
2981array is a slightly complex structure, so a utility function free_cfg()
2982is provided to free it for you. See section 5.3.6.
2983
2984(Of course, you will probably not want to free the config_item array
2985until the dialog box is dismissed, because before then you will probably
2986need to pass it to midend_set_config.)
2987
2988#4.19. midend_set_config()
2989
2990 const char *midend_set_config(midend *me, int which,
2991 config_item *cfg);
2992
2993Passes the mid-end the results of a configuration dialog box. `which'
2994should have the same value which it had when midend_get_config() was
2995called; `cfg' should be the array of `config_item's returned from
2996midend_get_config(), modified to contain the results of the user's
2997editing operations.
2998
2999This function returns NULL on success, or otherwise (if the
3000configuration data was in some way invalid) an ASCII string containing
3001an error message suitable for showing to the user.
3002
3003If the function succeeds, it is likely that the game parameters will
3004have been changed and it is certain that a new game will be requested.
3005The front end should therefore call midend_new_game(), and probably also
3006re-think the window size using midend_size() and eventually perform a
3007refresh using midend_redraw().
3008
3009#4.20. midend_game_id()
3010
3011 const char *midend_game_id(midend *me, const char *id);
3012
3013Passes the mid-end a string game ID (of any of the valid forms `params',
3014`params:description' or `params#seed') which the mid-end will process
3015and use for the next generated game.
3016
3017This function returns NULL on success, or otherwise (if the
3018configuration data was in some way invalid) an ASCII string containing
3019an error message (not dynamically allocated) suitable for showing to the
3020user. In the event of an error, the mid-end's internal state will be
3021left exactly as it was before the call.
3022
3023If the function succeeds, it is likely that the game parameters will
3024have been changed and it is certain that a new game will be requested.
3025The front end should therefore call midend_new_game(), and probably
3026also re-think the window size using midend_size() and eventually case a
3027refresh using midend_redraw().
3028
3029#4.21. midend_get_game_id()
3030
3031 char *midend_get_game_id(midend *me)
3032
3033Returns a descriptive game ID (i.e. one in the form
3034`params:description') describing the game currently active in the mid-
3035end. The returned string is dynamically allocated.
3036
3037#4.22. midend_get_random_seed()
3038
3039 char *midend_get_random_seed(midend *me)
3040
3041Returns a random game ID (i.e. one in the form `params#seedstring')
3042describing the game currently active in the mid-end, if there is one.
3043If the game was created by entering a description, no random seed will
3044currently exist and this function will return NULL.
3045
3046The returned string, if it is non-NULL, is dynamically allocated.
3047
3048#4.23. midend_can_format_as_text_now()
3049
3050 int midend_can_format_as_text_now(midend *me);
3051
3052Returns TRUE if the game code is capable of formatting puzzles of the
3053currently selected game type as ASCII.
3054
3055If this returns FALSE, then midend_text_format() (section 4.24) will
3056return NULL.
3057
3058#4.24. midend_text_format()
3059
3060 char *midend_text_format(midend *me);
3061
3062Formats the current game's current state as ASCII text suitable for
3063copying to the clipboard. The returned string is dynamically allocated.
3064
3065If the game's `can_format_as_text_ever' flag is FALSE, or if its
3066can_format_as_text_now() function returns FALSE, then this function will
3067return NULL.
3068
3069If the returned string contains multiple lines (which is likely), it
3070will use the normal C line ending convention (\n only). On platforms
3071which use a different line ending convention for data in the clipboard,
3072it is the front end's responsibility to perform the conversion.
3073
3074#4.25. midend_solve()
3075
3076 const char *midend_solve(midend *me);
3077
3078Requests the mid-end to perform a Solve operation.
3079
3080On success, NULL is returned. On failure, an error message (not
3081dynamically allocated) is returned, suitable for showing to the user.
3082
3083The front end can expect its drawing API and/or activate_timer() to be
3084called from within a call to this function. Some back ends require that
3085midend_size() (section 4.6) is called before midend_solve().
3086
3087#4.26. midend_status()
3088
3089 int midend_status(midend *me);
3090
3091This function returns +1 if the midend is currently displaying a game
3092in a solved state, -1 if the game is in a permanently lost state, or 0
3093otherwise. This function just calls the back end's status() function.
3094Front ends may wish to use this as a cue to proactively offer the option
3095of starting a new game.
3096
3097(See section 2.8.9 for more detail about the back end's status()
3098function and discussion of what should count as which status code.)
3099
3100#4.27. midend_can_undo()
3101
3102 int midend_can_undo(midend *me);
3103
3104Returns TRUE if the midend is currently in a state where the undo
3105operation is meaningful (i.e. at least one position exists on the undo
3106chain before the present one). Front ends may wish to use this to
3107visually activate and deactivate an undo button.
3108
3109#4.28. midend_can_redo()
3110
3111 int midend_can_redo(midend *me);
3112
3113Returns TRUE if the midend is currently in a state where the redo
3114operation is meaningful (i.e. at least one position exists on the
3115redo chain after the present one). Front ends may wish to use this to
3116visually activate and deactivate a redo button.
3117
3118#4.29. midend_serialise()
3119
3120 void midend_serialise(midend *me,
3121 void (*write)(void *ctx, const void *buf, int len), void *wctx);
3122
3123Calling this function causes the mid-end to convert its entire internal
3124state into a long ASCII text string, and to pass that string (piece by
3125piece) to the supplied `write' function.
3126
3127Desktop implementations can use this function to save a game in any
3128state (including half-finished) to a disk file, by supplying a `write'
3129function which is a wrapper on fwrite() (or local equivalent). Other
3130implementations may find other uses for it, such as compressing the
3131large and sprawling mid-end state into a manageable amount of memory
3132when a palmtop application is suspended so that another one can run; in
3133this case write might want to write to a memory buffer rather than a
3134file. There may be other uses for it as well.
3135
3136This function will call back to the supplied `write' function a number
3137of times, with the first parameter (`ctx') equal to `wctx', and the
3138other two parameters pointing at a piece of the output string.
3139
3140#4.30. midend_deserialise()
3141
3142 const char *midend_deserialise(midend *me,
3143 int (*read)(void *ctx, void *buf, int len), void *rctx);
3144
3145This function is the counterpart to midend_serialise(). It calls the
3146supplied read function repeatedly to read a quantity of data, and
3147attempts to interpret that data as a serialised mid-end as output by
3148midend_serialise().
3149
3150The read function is called with the first parameter (`ctx') equal
3151to `rctx', and should attempt to read `len' bytes of data into the
3152buffer pointed to by `buf'. It should return FALSE on failure or TRUE
3153on success. It should not report success unless it has filled the
3154entire buffer; on platforms which might be reading from a pipe or other
3155blocking data source, `read' is responsible for looping until the whole
3156buffer has been filled.
3157
3158If the de-serialisation operation is successful, the mid-end's internal
3159data structures will be replaced by the results of the load, and NULL
3160will be returned. Otherwise, the mid-end's state will be completely
3161unchanged and an error message (typically some variation on `save file
3162is corrupt') will be returned. As usual, the error message string is not
3163dynamically allocated.
3164
3165If this function succeeds, it is likely that the game parameters will
3166have been changed. The front end should therefore probably re-think the
3167window size using midend_size(), and probably cause a refresh using
3168midend_redraw().
3169
3170Because each mid-end is tied to a specific game back end, this function
3171will fail if you attempt to read in a save file generated by a different
3172game from the one configured in this mid-end, even if your application
3173is a monolithic one containing all the puzzles. See section 4.31 for a
3174helper function which will allow you to identify a save file before you
3175instantiate your mid-end in the first place.
3176
3177#4.31. identify_game()
3178
3179 const char *identify_game(char **name,
3180 int (*read)(void *ctx, void *buf, int len), void *rctx);
3181
3182This function examines a serialised midend stream, of the same kind used
3183by midend_serialise() and midend_deserialise(), and returns the name
3184field of the game back end from which it was saved.
3185
3186You might want this if your front end was a monolithic one containing
3187all the puzzles, and you wanted to be able to load an arbitrary save
3188file and automatically switch to the right game. Probably your next step
3189would be to iterate through gamelist (section 4.33) looking for a game
3190structure whose name field matched the returned string, and give an
3191error if you didn't find one.
3192
3193On success, the return value of this function is NULL, and the game name
3194string is written into *name. The caller should free that string after
3195using it.
3196
3197On failure, *name is NULL, and the return value is an error message
3198(which does not need freeing at all).
3199
3200(This isn't strictly speaking a midend function, since it doesn't accept
3201or return a pointer to a midend. You'd probably call it just _before_
3202deciding what kind of midend you wanted to instantiate.)
3203
3204#4.32. midend_request_id_changes()
3205
3206 void midend_request_id_changes(midend *me,
3207 void (*notify)(void *), void *ctx);
3208
3209This function is called by the front end to request notification by the
3210mid-end when the current game IDs (either descriptive or random-seed)
3211change. This can occur as a result of keypresses ('n' for New Game, for
3212example) or when a puzzle supersedes its game description (see section
32132.11.2). After this function is called, any change of the game ids will
3214cause the mid-end to call notify(ctx) after the change.
3215
3216This is for use by puzzles which want to present the game description to
3217the user constantly (e.g. as an HTML hyperlink) instead of only showing
3218it when the user explicitly requests it.
3219
3220This is a function I anticipate few front ends needing to implement, so
3221I make it a callback rather than a static function in order to relieve
3222most front ends of the need to provide an empty implementation.
3223
3224#4.33. Direct reference to the back end structure by the front end
3225
3226Although _most_ things the front end needs done should be done by
3227calling the mid-end, there are a few situations in which the front end
3228needs to refer directly to the game back end structure.
3229
3230The most obvious of these is
3231
3232 - passing the game back end as a parameter to midend_new().
3233
3234There are a few other back end features which are not wrapped by the
3235mid-end because there didn't seem much point in doing so:
3236
3237 - fetching the `name' field to use in window titles and similar
3238
3239 - reading the `can_configure', `can_solve' and
3240 `can_format_as_text_ever' fields to decide whether to add those
3241 items to the menu bar or equivalent
3242
3243 - reading the `winhelp_topic' field (Windows only)
3244
3245 - the GTK front end provides a `--generate' command-line option which
3246 directly calls the back end to do most of its work. This is not
3247 really part of the main front end code, though, and I'm not sure it
3248 counts.
3249
3250In order to find the game back end structure, the front end does one of
3251two things:
3252
3253 - If the particular front end is compiling a separate binary per game,
3254 then the back end structure is a global variable with the standard
3255 name `thegame':
3256
3257 extern const game thegame;
3258
3259 - If the front end is compiled as a monolithic application containing
3260 all the puzzles together (in which case the preprocessor symbol
3261 COMBINED must be defined when compiling most of the code base), then
3262 there will be two global variables defined:
3263
3264 extern const game *gamelist[];
3265 extern const int gamecount;
3266
3267 `gamelist' will be an array of `gamecount' game structures, declared
3268 in the automatically constructed source module `list.c'. The
3269 application should search that array for the game it wants, probably
3270 by reaching into each game structure and looking at its `name'
3271 field.
3272
3273#4.34. Mid-end to front-end calls
3274
3275This section describes the small number of functions which a front end
3276must provide to be called by the mid-end or other standard utility
3277modules.
3278
3279#4.35. get_random_seed()
3280
3281 void get_random_seed(void **randseed, int *randseedsize);
3282
3283This function is called by a new mid-end, and also occasionally by game
3284back ends. Its job is to return a piece of data suitable for using as a
3285seed for initialisation of a new `random_state'.
3286
3287On exit, `*randseed' should be set to point at a newly allocated piece
3288of memory containing some seed data, and `*randseedsize' should be set
3289to the length of that data.
3290
3291A simple and entirely adequate implementation is to return a piece of
3292data containing the current system time at the highest conveniently
3293available resolution.
3294
3295#4.36. activate_timer()
3296
3297 void activate_timer(frontend *fe);
3298
3299This is called by the mid-end to request that the front end begin
3300calling it back at regular intervals.
3301
3302The timeout interval is left up to the front end; the finer it is, the
3303smoother move animations will be, but the more CPU time will be used.
3304Current front ends use values around 20ms (i.e. 50Hz).
3305
3306After this function is called, the mid-end will expect to receive calls
3307to midend_timer() on a regular basis.
3308
3309#4.37. deactivate_timer()
3310
3311 void deactivate_timer(frontend *fe);
3312
3313This is called by the mid-end to request that the front end stop calling
3314midend_timer().
3315
3316#4.38. fatal()
3317
3318 void fatal(const char *fmt, ...);
3319
3320This is called by some utility functions if they encounter a genuinely
3321fatal error such as running out of memory. It is a variadic function
3322in the style of printf(), and is expected to show the formatted error
3323message to the user any way it can and then terminate the application.
3324It must not return.
3325
3326#4.39. frontend_default_colour()
3327
3328 void frontend_default_colour(frontend *fe, float *output);
3329
3330This function expects to be passed a pointer to an array of three
3331floats. It returns the platform's local preferred background colour
3332in those three floats, as red, green and blue values (in that order)
3333ranging from 0.0 to 1.0.
3334
3335This function should only ever be called by the back end function
3336colours() (section 2.8.6). (Thus, it isn't a _midend_-to-frontend
3337function as such, but there didn't seem to be anywhere else particularly
3338good to put it. Sorry.)
3339
3340#5. Utility APIs
3341
3342This chapter documents a variety of utility APIs provided for the
3343general use of the rest of the Puzzles code.
3344
3345#5.1. Random number generation
3346
3347Platforms' local random number generators vary widely in quality and
3348seed size. Puzzles therefore supplies its own high-quality random number
3349generator, with the additional advantage of giving the same results if
3350fed the same seed data on different platforms. This allows game random
3351seeds to be exchanged between different ports of Puzzles and still
3352generate the same games.
3353
3354Unlike the ANSI C rand() function, the Puzzles random number generator
3355has an _explicit_ state object called a `random_state'. One of these
3356is managed by each mid-end, for example, and passed to the back end to
3357generate a game with.
3358
3359#5.1.1. random_new()
3360
3361 random_state *random_new(char *seed, int len);
3362
3363Allocates, initialises and returns a new `random_state'. The input data
3364is used as the seed for the random number stream (i.e. using the same
3365seed at a later time will generate the same stream).
3366
3367The seed data can be any data at all; there is no requirement to use
3368printable ASCII, or NUL-terminated strings, or anything like that.
3369
3370#5.1.2. random_copy()
3371
3372 random_state *random_copy(random_state *tocopy);
3373
3374Allocates a new `random_state', copies the contents of another
3375`random_state' into it, and returns the new state. If exactly the
3376same sequence of functions is subseqently called on both the copy and
3377the original, the results will be identical. This may be useful for
3378speculatively performing some operation using a given random state, and
3379later replaying that operation precisely.
3380
3381#5.1.3. random_free()
3382
3383 void random_free(random_state *state);
3384
3385Frees a `random_state'.
3386
3387#5.1.4. random_bits()
3388
3389 unsigned long random_bits(random_state *state, int bits);
3390
3391Returns a random number from 0 to 2^bits-1 inclusive. `bits' should be
3392between 1 and 32 inclusive.
3393
3394#5.1.5. random_upto()
3395
3396 unsigned long random_upto(random_state *state, unsigned long limit);
3397
3398Returns a random number from 0 to limit-1 inclusive.
3399
3400#5.1.6. random_state_encode()
3401
3402 char *random_state_encode(random_state *state);
3403
3404Encodes the entire contents of a `random_state' in printable ASCII.
3405Returns a dynamically allocated string containing that encoding. This
3406can subsequently be passed to random_state_decode() to reconstruct the
3407same `random_state'.
3408
3409#5.1.7. random_state_decode()
3410
3411 random_state *random_state_decode(char *input);
3412
3413Decodes a string generated by random_state_encode() and reconstructs an
3414equivalent `random_state' to the one encoded, i.e. it should produce the
3415same stream of random numbers.
3416
3417This function has no error reporting; if you pass it an invalid string
3418it will simply generate an arbitrary random state, which may turn out to
3419be noticeably non-random.
3420
3421#5.1.8. shuffle()
3422
3423 void shuffle(void *array, int nelts, int eltsize, random_state *rs);
3424
3425Shuffles an array into a random order. The interface is much like ANSI C
3426qsort(), except that there's no need for a compare function.
3427
3428`array' is a pointer to the first element of the array. `nelts' is the
3429number of elements in the array; `eltsize' is the size of a single
3430element (typically measured using `sizeof'). `rs' is a `random_state'
3431used to generate all the random numbers for the shuffling process.
3432
3433#5.2. Presets menu management
3434
3435The function `midend_get_presets()' (section 4.15) returns a data
3436structure describing a menu hierarchy. Back ends can also choose to
3437provide such a structure to the mid-end, if they want to group their
3438presets hierarchically. To make this easy, there are a few utility
3439functions to construct preset menu structures, and also one intended for
3440front-end use.
3441
3442#5.2.1. preset_menu_new()
3443
3444 struct preset_menu *preset_menu_new(void);
3445
3446Allocates a new `struct preset_menu', and initialises it to hold no menu
3447items.
3448
3449#5.2.2. preset_menu_add_submenu()
3450
3451 struct preset_menu *preset_menu_add_submenu
3452 (struct preset_menu *parent, char *title);
3453
3454Adds a new submenu to the end of an existing preset menu, and returns
3455a pointer to a newly allocated `struct preset_menu' describing the
3456submenu.
3457
3458The string parameter `title' must be dynamically allocated by the
3459caller. The preset-menu structure will take ownership of it, so the
3460caller must not free it.
3461
3462#5.2.3. preset_menu_add_preset()
3463
3464 void preset_menu_add_preset
3465 (struct preset_menu *menu, char *title, game_params *params);
3466
3467Adds a preset game configuration to the end of a preset menu.
3468
3469Both the string parameter `title' and the game parameter structure
3470`params' itself must be dynamically allocated by the caller. The preset-
3471menu structure will take ownership of it, so the caller must not free
3472it.
3473
3474#5.2.4. preset_menu_lookup_by_id()
3475
3476 game_params *preset_menu_lookup_by_id
3477 (struct preset_menu *menu, int id);
3478
3479Given a numeric index, searches recursively through a preset menu
3480hierarchy to find the corresponding menu entry, and returns a pointer to
3481its existing `game_params' structure.
3482
3483This function is intended for front end use (but front ends need not use
3484it if they prefer to do things another way). If a front end finds it
3485inconvenient to store anything more than a numeric index alongside each
3486menu item, then this function provides an easy way for the front end to
3487get back the actual game parameters corresponding to a menu item that
3488the user has selected.
3489
3490#5.3. Memory allocation
3491
3492Puzzles has some central wrappers on the standard memory allocation
3493functions, which provide compile-time type checking, and run-time error
3494checking by means of quitting the application if it runs out of memory.
3495This doesn't provide the best possible recovery from memory shortage,
3496but on the other hand it greatly simplifies the rest of the code,
3497because nothing else anywhere needs to worry about NULL returns from
3498allocation.
3499
3500#5.3.1. snew()
3501
3502 var = snew(type);
3503
3504This macro takes a single argument which is a _type name_. It allocates
3505space for one object of that type. If allocation fails it will call
3506fatal() and not return; so if it does return, you can be confident that
3507its return value is non-NULL.
3508
3509The return value is cast to the specified type, so that the compiler
3510will type-check it against the variable you assign it into. Thus, this
3511ensures you don't accidentally allocate memory the size of the wrong
3512type and assign it into a variable of the right one (or vice versa!).
3513
3514#5.3.2. snewn()
3515
3516 var = snewn(n, type);
3517
3518This macro is the array form of snew(). It takes two arguments; the
3519first is a number, and the second is a type name. It allocates space
3520for that many objects of that type, and returns a type-checked non-NULL
3521pointer just as snew() does.
3522
3523#5.3.3. sresize()
3524
3525 var = sresize(var, n, type);
3526
3527This macro is a type-checked form of realloc(). It takes three
3528arguments: an input memory block, a new size in elements, and a type.
3529It re-sizes the input memory block to a size sufficient to contain that
3530many elements of that type. It returns a type-checked non-NULL pointer,
3531like snew() and snewn().
3532
3533The input memory block can be NULL, in which case this function will
3534behave exactly like snewn(). (In principle any ANSI-compliant realloc()
3535implementation ought to cope with this, but I've never quite trusted it
3536to work everywhere.)
3537
3538#5.3.4. sfree()
3539
3540 void sfree(void *p);
3541
3542This function is pretty much equivalent to free(). It is provided with a
3543dynamically allocated block, and frees it.
3544
3545The input memory block can be NULL, in which case this function will do
3546nothing. (In principle any ANSI-compliant free() implementation ought to
3547cope with this, but I've never quite trusted it to work everywhere.)
3548
3549#5.3.5. dupstr()
3550
3551 char *dupstr(const char *s);
3552
3553This function dynamically allocates a duplicate of a C string. Like the
3554snew() functions, it guarantees to return non-NULL or not return at all.
3555
3556(Many platforms provide the function strdup(). As well as guaranteeing
3557never to return NULL, my version has the advantage of being defined
3558_everywhere_, rather than inconveniently not quite everywhere.)
3559
3560#5.3.6. free_cfg()
3561
3562 void free_cfg(config_item *cfg);
3563
3564This function correctly frees an array of `config_item's, including
3565walking the array until it gets to the end and freeing any subsidiary
3566data items in each `u' sub-union which are expected to be dynamically
3567allocated.
3568
3569(See section 2.3.9 for details of the `config_item' structure.)
3570
3571#5.4. Sorted and counted tree functions
3572
3573Many games require complex algorithms for generating random puzzles, and
3574some require moderately complex algorithms even during play. A common
3575requirement during these algorithms is for a means of maintaining sorted
3576or unsorted lists of items, such that items can be removed and added
3577conveniently.
3578
3579For general use, Puzzles provides the following set of functions which
3580maintain 2-3-4 trees in memory. (A 2-3-4 tree is a balanced tree
3581structure, with the property that all lookups, insertions, deletions,
3582splits and joins can be done in O(log N) time.)
3583
3584All these functions expect you to be storing a tree of `void *'
3585pointers. You can put anything you like in those pointers.
3586
3587By the use of per-node element counts, these tree structures have the
3588slightly unusual ability to look elements up by their numeric index
3589within the list represented by the tree. This means that they can be
3590used to store an unsorted list (in which case, every time you insert a
3591new element, you must explicitly specify the position where you wish to
3592insert it). They can also do numeric lookups in a sorted tree, which
3593might be useful for (for example) tracking the median of a changing data
3594set.
3595
3596As well as storing sorted lists, these functions can be used for storing
3597`maps' (associative arrays), by defining each element of a tree to be a
3598(key, value) pair.
3599
3600#5.4.1. newtree234()
3601
3602 tree234 *newtree234(cmpfn234 cmp);
3603
3604Creates a new empty tree, and returns a pointer to it.
3605
3606The parameter `cmp' determines the sorting criterion on the tree. Its
3607prototype is
3608
3609 typedef int (*cmpfn234)(void *, void *);
3610
3611If you want a sorted tree, you should provide a function matching this
3612prototype, which returns like strcmp() does (negative if the first
3613argument is smaller than the second, positive if it is bigger, zero if
3614they compare equal). In this case, the function addpos234() will not be
3615usable on your tree (because all insertions must respect the sorting
3616order).
3617
3618If you want an unsorted tree, pass NULL. In this case you will not be
3619able to use either add234() or del234(), or any other function such
3620as find234() which depends on a sorting order. Your tree will become
3621something more like an array, except that it will efficiently support
3622insertion and deletion as well as lookups by numeric index.
3623
3624#5.4.2. freetree234()
3625
3626 void freetree234(tree234 *t);
3627
3628Frees a tree. This function will not free the _elements_ of the tree
3629(because they might not be dynamically allocated, or you might be
3630storing the same set of elements in more than one tree); it will just
3631free the tree structure itself. If you want to free all the elements of
3632a tree, you should empty it before passing it to freetree234(), by means
3633of code along the lines of
3634
3635 while ((element = delpos234(tree, 0)) != NULL)
3636 sfree(element); /* or some more complicated free function */
3637
3638#5.4.3. add234()
3639
3640 void *add234(tree234 *t, void *e);
3641
3642Inserts a new element `e' into the tree `t'. This function expects the
3643tree to be sorted; the new element is inserted according to the sort
3644order.
3645
3646If an element comparing equal to `e' is already in the tree, then the
3647insertion will fail, and the return value will be the existing element.
3648Otherwise, the insertion succeeds, and `e' is returned.
3649
3650#5.4.4. addpos234()
3651
3652 void *addpos234(tree234 *t, void *e, int index);
3653
3654Inserts a new element into an unsorted tree. Since there is no sorting
3655order to dictate where the new element goes, you must specify where you
3656want it to go. Setting `index' to zero puts the new element right at the
3657start of the list; setting `index' to the current number of elements in
3658the tree puts the new element at the end.
3659
3660Return value is `e', in line with add234() (although this function
3661cannot fail except by running out of memory, in which case it will bomb
3662out and die rather than returning an error indication).
3663
3664#5.4.5. index234()
3665
3666 void *index234(tree234 *t, int index);
3667
3668Returns a pointer to the `index'th element of the tree, or NULL if
3669`index' is out of range. Elements of the tree are numbered from zero.
3670
3671#5.4.6. find234()
3672
3673 void *find234(tree234 *t, void *e, cmpfn234 cmp);
3674
3675Searches for an element comparing equal to `e' in a sorted tree.
3676
3677If `cmp' is NULL, the tree's ordinary comparison function will be used
3678to perform the search. However, sometimes you don't want that; suppose,
3679for example, each of your elements is a big structure containing a
3680`char *' name field, and you want to find the element with a given name.
3681You _could_ achieve this by constructing a fake element structure,
3682setting its name field appropriately, and passing it to find234(),
3683but you might find it more convenient to pass _just_ a name string to
3684find234(), supplying an alternative comparison function which expects
3685one of its arguments to be a bare name and the other to be a large
3686structure containing a name field.
3687
3688Therefore, if `cmp' is not NULL, then it will be used to compare `e' to
3689elements of the tree. The first argument passed to `cmp' will always be
3690`e'; the second will be an element of the tree.
3691
3692(See section 5.4.1 for the definition of the `cmpfn234' function pointer
3693type.)
3694
3695The returned value is the element found, or NULL if the search is
3696unsuccessful.
3697
3698#5.4.7. findrel234()
3699
3700 void *findrel234(tree234 *t, void *e, cmpfn234 cmp, int relation);
3701
3702This function is like find234(), but has the additional ability to do a
3703_relative_ search. The additional parameter `relation' can be one of the
3704following values:
3705
3706REL234_EQ
3707
3708 Find only an element that compares equal to `e'. This is exactly the
3709 behaviour of find234().
3710
3711REL234_LT
3712
3713 Find the greatest element that compares strictly less than `e'. `e'
3714 may be NULL, in which case it finds the greatest element in the
3715 whole tree (which could also be done by index234(t, count234(t)-1)).
3716
3717REL234_LE
3718
3719 Find the greatest element that compares less than or equal to `e'.
3720 (That is, find an element that compares equal to `e' if possible,
3721 but failing that settle for something just less than it.)
3722
3723REL234_GT
3724
3725 Find the smallest element that compares strictly greater than `e'.
3726 `e' may be NULL, in which case it finds the smallest element in the
3727 whole tree (which could also be done by index234(t, 0)).
3728
3729REL234_GE
3730
3731 Find the smallest element that compares greater than or equal
3732 to `e'. (That is, find an element that compares equal to `e' if
3733 possible, but failing that settle for something just bigger than
3734 it.)
3735
3736Return value, as before, is the element found or NULL if no element
3737satisfied the search criterion.
3738
3739#5.4.8. findpos234()
3740
3741 void *findpos234(tree234 *t, void *e, cmpfn234 cmp, int *index);
3742
3743This function is like find234(), but has the additional feature of
3744returning the index of the element found in the tree; that index is
3745written to `*index' in the event of a successful search (a non-NULL
3746return value).
3747
3748`index' may be NULL, in which case this function behaves exactly like
3749find234().
3750
3751#5.4.9. findrelpos234()
3752
3753 void *findrelpos234(tree234 *t, void *e, cmpfn234 cmp, int relation,
3754 int *index);
3755
3756This function combines all the features of findrel234() and
3757findpos234().
3758
3759#5.4.10. del234()
3760
3761 void *del234(tree234 *t, void *e);
3762
3763Finds an element comparing equal to `e' in the tree, deletes it, and
3764returns it.
3765
3766The input tree must be sorted.
3767
3768The element found might be `e' itself, or might merely compare equal to
3769it.
3770
3771Return value is NULL if no such element is found.
3772
3773#5.4.11. delpos234()
3774
3775 void *delpos234(tree234 *t, int index);
3776
3777Deletes the element at position `index' in the tree, and returns it.
3778
3779Return value is NULL if the index is out of range.
3780
3781#5.4.12. count234()
3782
3783 int count234(tree234 *t);
3784
3785Returns the number of elements currently in the tree.
3786
3787#5.4.13. splitpos234()
3788
3789 tree234 *splitpos234(tree234 *t, int index, int before);
3790
3791Splits the input tree into two pieces at a given position, and creates a
3792new tree containing all the elements on one side of that position.
3793
3794If `before' is TRUE, then all the items at or after position `index' are
3795left in the input tree, and the items before that point are returned in
3796the new tree. Otherwise, the reverse happens: all the items at or after
3797`index' are moved into the new tree, and those before that point are
3798left in the old one.
3799
3800If `index' is equal to 0 or to the number of elements in the input tree,
3801then one of the two trees will end up empty (and this is not an error
3802condition). If `index' is further out of range in either direction, the
3803operation will fail completely and return NULL.
3804
3805This operation completes in O(log N) time, no matter how large the tree
3806or how balanced or unbalanced the split.
3807
3808#5.4.14. split234()
3809
3810 tree234 *split234(tree234 *t, void *e, cmpfn234 cmp, int rel);
3811
3812Splits a sorted tree according to its sort order.
3813
3814`rel' can be any of the relation constants described in section 5.4.7,
3815_except_ for REL234_EQ. All the elements having that relation to `e'
3816will be transferred into the new tree; the rest will be left in the old
3817one.
3818
3819The parameter `cmp' has the same semantics as it does in find234(): if
3820it is not NULL, it will be used in place of the tree's own comparison
3821function when comparing elements to `e', in such a way that `e' itself
3822is always the first of its two operands.
3823
3824Again, this operation completes in O(log N) time, no matter how large
3825the tree or how balanced or unbalanced the split.
3826
3827#5.4.15. join234()
3828
3829 tree234 *join234(tree234 *t1, tree234 *t2);
3830
3831Joins two trees together by concatenating the lists they represent. All
3832the elements of `t2' are moved into `t1', in such a way that they appear
3833_after_ the elements of `t1'. The tree `t2' is freed; the return value
3834is `t1'.
3835
3836If you apply this function to a sorted tree and it violates the sort
3837order (i.e. the smallest element in `t2' is smaller than or equal to the
3838largest element in `t1'), the operation will fail and return NULL.
3839
3840This operation completes in O(log N) time, no matter how large the trees
3841being joined together.
3842
3843#5.4.16. join234r()
3844
3845 tree234 *join234r(tree234 *t1, tree234 *t2);
3846
3847Joins two trees together in exactly the same way as join234(), but this
3848time the combined tree is returned in `t2', and `t1' is destroyed. The
3849elements in `t1' still appear before those in `t2'.
3850
3851Again, this operation completes in O(log N) time, no matter how large
3852the trees being joined together.
3853
3854#5.4.17. copytree234()
3855
3856 tree234 *copytree234(tree234 *t, copyfn234 copyfn,
3857 void *copyfnstate);
3858
3859Makes a copy of an entire tree.
3860
3861If `copyfn' is NULL, the tree will be copied but the elements will not
3862be; i.e. the new tree will contain pointers to exactly the same physical
3863elements as the old one.
3864
3865If you want to copy each actual element during the operation, you can
3866instead pass a function in `copyfn' which makes a copy of each element.
3867That function has the prototype
3868
3869 typedef void *(*copyfn234)(void *state, void *element);
3870
3871and every time it is called, the `state' parameter will be set to the
3872value you passed in as `copyfnstate'.
3873
3874#5.5. Miscellaneous utility functions and macros
3875
3876This section contains all the utility functions which didn't sensibly
3877fit anywhere else.
3878
3879#5.5.1. TRUE and FALSE
3880
3881The main Puzzles header file defines the macros TRUE and FALSE, which
3882are used throughout the code in place of 1 and 0 (respectively) to
3883indicate that the values are in a boolean context. For code base
3884consistency, I'd prefer it if submissions of new code followed this
3885convention as well.
3886
3887#5.5.2. max() and min()
3888
3889The main Puzzles header file defines the pretty standard macros max()
3890and min(), each of which is given two arguments and returns the one
3891which compares greater or less respectively.
3892
3893These macros may evaluate their arguments multiple times. Avoid side
3894effects.
3895
3896#5.5.3. PI
3897
3898The main Puzzles header file defines a macro PI which expands to a
3899floating-point constant representing pi.
3900
3901(I've never understood why ANSI's <math.h> doesn't define this. It'd be
3902so useful!)
3903
3904#5.5.4. obfuscate_bitmap()
3905
3906 void obfuscate_bitmap(unsigned char *bmp, int bits, int decode);
3907
3908This function obscures the contents of a piece of data, by cryptographic
3909methods. It is useful for games of hidden information (such as Mines,
3910Guess or Black Box), in which the game ID theoretically reveals all the
3911information the player is supposed to be trying to guess. So in order
3912that players should be able to send game IDs to one another without
3913accidentally spoiling the resulting game by looking at them, these games
3914obfuscate their game IDs using this function.
3915
3916Although the obfuscation function is cryptographic, it cannot properly
3917be called encryption because it has no key. Therefore, anybody motivated
3918enough can re-implement it, or hack it out of the Puzzles source,
3919and strip the obfuscation off one of these game IDs to see what lies
3920beneath. (Indeed, they could usually do it much more easily than that,
3921by entering the game ID into their own copy of the puzzle and hitting
3922Solve.) The aim is not to protect against a determined attacker; the aim
3923is simply to protect people who wanted to play the game honestly from
3924_accidentally_ spoiling their own fun.
3925
3926The input argument `bmp' points at a piece of memory to be obfuscated.
3927`bits' gives the length of the data. Note that that length is in _bits_
3928rather than bytes: if you ask for obfuscation of a partial number of
3929bytes, then you will get it. Bytes are considered to be used from the
3930top down: thus, for example, setting `bits' to 10 will cover the whole
3931of bmp[0] and the _top two_ bits of bmp[1]. The remainder of a partially
3932used byte is undefined (i.e. it may be corrupted by the function).
3933
3934The parameter `decode' is FALSE for an encoding operation, and TRUE
3935for a decoding operation. Each is the inverse of the other. (There's
3936no particular reason you shouldn't obfuscate by decoding and restore
3937cleartext by encoding, if you really wanted to; it should still work.)
3938
3939The input bitmap is processed in place.
3940
3941#5.5.5. bin2hex()
3942
3943 char *bin2hex(const unsigned char *in, int inlen);
3944
3945This function takes an input byte array and converts it into an
3946ASCII string encoding those bytes in (lower-case) hex. It returns a
3947dynamically allocated string containing that encoding.
3948
3949This function is useful for encoding the result of obfuscate_bitmap() in
3950printable ASCII for use in game IDs.
3951
3952#5.5.6. hex2bin()
3953
3954 unsigned char *hex2bin(const char *in, int outlen);
3955
3956This function takes an ASCII string containing hex digits, and converts
3957it back into a byte array of length `outlen'. If there aren't enough
3958hex digits in the string, the contents of the resulting array will be
3959undefined.
3960
3961This function is the inverse of bin2hex().
3962
3963#5.5.7. game_mkhighlight()
3964
3965 void game_mkhighlight(frontend *fe, float *ret,
3966 int background, int highlight, int lowlight);
3967
3968It's reasonably common for a puzzle game's graphics to use highlights
3969and lowlights to indicate `raised' or `lowered' sections. Fifteen,
3970Sixteen and Twiddle are good examples of this.
3971
3972Puzzles using this graphical style are running a risk if they just use
3973whatever background colour is supplied to them by the front end, because
3974that background colour might be too light to see any highlights on at
3975all. (In particular, it's not unheard of for the front end to specify a
3976default background colour of white.)
3977
3978Therefore, such puzzles can call this utility function from their
3979colours() routine (section 2.8.6). You pass it your front end handle, a
3980pointer to the start of your return array, and three colour indices. It
3981will:
3982
3983 - call frontend_default_colour() (section 4.39) to fetch the front
3984 end's default background colour
3985
3986 - alter the brightness of that colour if it's unsuitable
3987
3988 - define brighter and darker variants of the colour to be used as
3989 highlights and lowlights
3990
3991 - write those results into the relevant positions in the `ret' array.
3992
3993Thus, ret[background*3] to ret[background*3+2] will be set to RGB values
3994defining a sensible background colour, and similary `highlight' and
3995`lowlight' will be set to sensible colours.
3996
3997#6. How to write a new puzzle
3998
3999This chapter gives a guide to how to actually write a new puzzle: where
4000to start, what to do first, how to solve common problems.
4001
4002The previous chapters have been largely composed of facts. This one is
4003mostly advice.
4004
4005#6.1. Choosing a puzzle
4006
4007Before you start writing a puzzle, you have to choose one. Your taste
4008in puzzle games is up to you, of course; and, in fact, you're probably
4009reading this guide because you've _already_ thought of a game you want
4010to write. But if you want to get it accepted into the official Puzzles
4011distribution, then there's a criterion it has to meet.
4012
4013The current Puzzles editorial policy is that all games should be _fair_.
4014A fair game is one which a player can only fail to complete through
4015demonstrable lack of skill - that is, such that a better player in the
4016same situation would have _known_ to do something different.
4017
4018For a start, that means every game presented to the user must have _at
4019least one solution_. Giving the unsuspecting user a puzzle which is
4020actually impossible is not acceptable. (There is an exception: if the
4021user has selected some non-default option which is clearly labelled as
4022potentially unfair, _then_ you're allowed to generate possibly insoluble
4023puzzles, because the user isn't unsuspecting any more. Same Game and
4024Mines both have options of this type.)
4025
4026Also, this actually _rules out_ games such as Klondike, or the normal
4027form of Mahjong Solitaire. Those games have the property that even if
4028there is a solution (i.e. some sequence of moves which will get from
4029the start state to the solved state), the player doesn't necessarily
4030have enough information to _find_ that solution. In both games, it is
4031possible to reach a dead end because you had an arbitrary choice to make
4032and made it the wrong way. This violates the fairness criterion, because
4033a better player couldn't have known they needed to make the other
4034choice.
4035
4036(GNOME has a variant on Mahjong Solitaire which makes it fair: there
4037is a Shuffle operation which randomly permutes all the remaining tiles
4038without changing their positions, which allows you to get out of a
4039sticky situation. Using this operation adds a 60-second penalty to your
4040solution time, so it's to the player's advantage to try to minimise
4041the chance of having to use it. It's still possible to render the game
4042uncompletable if you end up with only two tiles vertically stacked,
4043but that's easy to foresee and avoid using a shuffle operation. This
4044form of the game _is_ fair. Implementing it in Puzzles would require
4045an infrastructure change so that the back end could communicate time
4046penalties to the mid-end, but that would be easy enough.)
4047
4048Providing a _unique_ solution is a little more negotiable; it depends
4049on the puzzle. Solo would have been of unacceptably low quality if it
4050didn't always have a unique solution, whereas Twiddle inherently has
4051multiple solutions by its very nature and it would have been meaningless
4052to even _suggest_ making it uniquely soluble. Somewhere in between, Flip
4053could reasonably be made to have unique solutions (by enforcing a zero-
4054dimension kernel in every generated matrix) but it doesn't seem like a
4055serious quality problem that it doesn't.
4056
4057Of course, you don't _have_ to care about all this. There's nothing
4058stopping you implementing any puzzle you want to if you're happy to
4059maintain your puzzle yourself, distribute it from your own web site,
4060fork the Puzzles code completely, or anything like that. It's free
4061software; you can do what you like with it. But any game that you want
4062to be accepted into _my_ Puzzles code base has to satisfy the fairness
4063criterion, which means all randomly generated puzzles must have a
4064solution (unless the user has deliberately chosen otherwise) and it must
4065be possible _in theory_ to find that solution without having to guess.
4066
4067#6.2. Getting started
4068
4069The simplest way to start writing a new puzzle is to copy `nullgame.c'.
4070This is a template puzzle source file which does almost nothing, but
4071which contains all the back end function prototypes and declares the
4072back end data structure correctly. It is built every time the rest of
4073Puzzles is built, to ensure that it doesn't get out of sync with the
4074code and remains buildable.
4075
4076So start by copying `nullgame.c' into your new source file. Then you'll
4077gradually add functionality until the very boring Null Game turns into
4078your real game.
4079
4080Next you'll need to add your puzzle to the Makefiles, in order to
4081compile it conveniently. _Do not edit the Makefiles_: they are created
4082automatically by the script `mkfiles.pl', from the file called `Recipe'.
4083Edit `Recipe', and then re-run `mkfiles.pl'.
4084
4085Also, don't forget to add your puzzle to `list.c': if you don't, then it
4086will still run fine on platforms which build each puzzle separately, but
4087Mac OS X and other monolithic platforms will not include your new puzzle
4088in their single binary.
4089
4090Once your source file is building, you can move on to the fun bit.
4091
4092#6.2.1. Puzzle generation
4093
4094Randomly generating instances of your puzzle is almost certain to be
4095the most difficult part of the code, and also the task with the highest
4096chance of turning out to be completely infeasible. Therefore I strongly
4097recommend doing it _first_, so that if it all goes horribly wrong you
4098haven't wasted any more time than you absolutely had to. What I usually
4099do is to take an unmodified `nullgame.c', and start adding code to
4100new_game_desc() which tries to generate a puzzle instance and print it
4101out using printf(). Once that's working, _then_ I start connecting it up
4102to the return value of new_game_desc(), populating other structures like
4103`game_params', and generally writing the rest of the source file.
4104
4105There are many ways to generate a puzzle which is known to be soluble.
4106In this section I list all the methods I currently know of, in case any
4107of them can be applied to your puzzle. (Not all of these methods will
4108work, or in some cases even make sense, for all puzzles.)
4109
4110Some puzzles are mathematically tractable, meaning you can work out in
4111advance which instances are soluble. Sixteen, for example, has a parity
4112constraint in some settings which renders exactly half the game space
4113unreachable, but it can be mathematically proved that any position
4114not in that half _is_ reachable. Therefore, Sixteen's grid generation
4115simply consists of selecting at random from a well defined subset of the
4116game space. Cube in its default state is even easier: _every_ possible
4117arrangement of the blue squares and the cube's starting position is
4118soluble!
4119
4120Another option is to redefine what you mean by `soluble'. Black Box
4121takes this approach. There are layouts of balls in the box which are
4122completely indistinguishable from one another no matter how many beams
4123you fire into the box from which angles, which would normally be grounds
4124for declaring those layouts unfair; but fortunately, detecting that
4125indistinguishability is computationally easy. So Black Box doesn't
4126demand that your ball placements match its own; it merely demands
4127that your ball placements be _indistinguishable_ from the ones it was
4128thinking of. If you have an ambiguous puzzle, then any of the possible
4129answers is considered to be a solution. Having redefined the rules in
4130that way, any puzzle is soluble again.
4131
4132Those are the simple techniques. If they don't work, you have to get
4133cleverer.
4134
4135One way to generate a soluble puzzle is to start from the solved state
4136and make inverse moves until you reach a starting state. Then you know
4137there's a solution, because you can just list the inverse moves you made
4138and make them in the opposite order to return to the solved state.
4139
4140This method can be simple and effective for puzzles where you get to
4141decide what's a starting state and what's not. In Pegs, for example,
4142the generator begins with one peg in the centre of the board and makes
4143inverse moves until it gets bored; in this puzzle, valid inverse moves
4144are easy to detect, and _any_ state that's reachable from the solved
4145state by inverse moves is a reasonable starting position. So Pegs just
4146continues making inverse moves until the board satisfies some criteria
4147about extent and density, and then stops and declares itself done.
4148
4149For other puzzles, it can be a lot more difficult. Same Game uses
4150this strategy too, and it's lucky to get away with it at all: valid
4151inverse moves aren't easy to find (because although it's easy to insert
4152additional squares in a Same Game position, it's difficult to arrange
4153that _after_ the insertion they aren't adjacent to any other squares of
4154the same colour), so you're constantly at risk of running out of options
4155and having to backtrack or start again. Also, Same Game grids never
4156start off half-empty, which means you can't just stop when you run out
4157of moves - you have to find a way to fill the grid up _completely_.
4158
4159The other way to generate a puzzle that's soluble is to start from the
4160other end, and actually write a _solver_. This tends to ensure that a
4161puzzle has a _unique_ solution over and above having a solution at all,
4162so it's a good technique to apply to puzzles for which that's important.
4163
4164One theoretical drawback of generating soluble puzzles by using a solver
4165is that your puzzles are restricted in difficulty to those which the
4166solver can handle. (Most solvers are not fully general: many sets of
4167puzzle rules are NP-complete or otherwise nasty, so most solvers can
4168only handle a subset of the theoretically soluble puzzles.) It's been
4169my experience in practice, however, that this usually isn't a problem;
4170computers are good at very different things from humans, and what the
4171computer thinks is nice and easy might still be pleasantly challenging
4172for a human. For example, when solving Dominosa puzzles I frequently
4173find myself using a variety of reasoning techniques that my solver
4174doesn't know about; in principle, therefore, I should be able to solve
4175the puzzle using only those techniques it _does_ know about, but this
4176would involve repeatedly searching the entire grid for the one simple
4177deduction I can make. Computers are good at this sort of exhaustive
4178search, but it's been my experience that human solvers prefer to do more
4179complex deductions than to spend ages searching for simple ones. So in
4180many cases I don't find my own playing experience to be limited by the
4181restrictions on the solver.
4182
4183(This isn't _always_ the case. Solo is a counter-example; generating
4184Solo puzzles using a simple solver does lead to qualitatively easier
4185puzzles. Therefore I had to make the Solo solver rather more advanced
4186than most of them.)
4187
4188There are several different ways to apply a solver to the problem of
4189generating a soluble puzzle. I list a few of them below.
4190
4191The simplest approach is brute force: randomly generate a puzzle, use
4192the solver to see if it's soluble, and if not, throw it away and try
4193again until you get lucky. This is often a viable technique if all
4194else fails, but it tends not to scale well: for many puzzle types, the
4195probability of finding a uniquely soluble instance decreases sharply
4196as puzzle size goes up, so this technique might work reasonably fast
4197for small puzzles but take (almost) forever at larger sizes. Still, if
4198there's no other alternative it can be usable: Pattern and Dominosa
4199both use this technique. (However, Dominosa has a means of tweaking the
4200randomly generated grids to increase the _probability_ of them being
4201soluble, by ruling out one of the most common ambiguous cases. This
4202improved generation speed by over a factor of 10 on the highest preset!)
4203
4204An approach which can be more scalable involves generating a grid and
4205then tweaking it to make it soluble. This is the technique used by Mines
4206and also by Net: first a random puzzle is generated, and then the solver
4207is run to see how far it gets. Sometimes the solver will get stuck;
4208when that happens, examine the area it's having trouble with, and make
4209a small random change in that area to allow it to make more progress.
4210Continue solving (possibly even without restarting the solver), tweaking
4211as necessary, until the solver finishes. Then restart the solver from
4212the beginning to ensure that the tweaks haven't caused new problems in
4213the process of solving old ones (which can sometimes happen).
4214
4215This strategy works well in situations where the usual solver failure
4216mode is to get stuck in an easily localised spot. Thus it works well
4217for Net and Mines, whose most common failure mode tends to be that most
4218of the grid is fine but there are a few widely separated ambiguous
4219sections; but it would work less well for Dominosa, in which the way you
4220get stuck is to have scoured the whole grid and not found anything you
4221can deduce _anywhere_. Also, it relies on there being a low probability
4222that tweaking the grid introduces a new problem at the same time as
4223solving the old one; Mines and Net also have the property that most of
4224their deductions are local, so that it's very unlikely for a tweak to
4225affect something half way across the grid from the location where it was
4226applied. In Dominosa, by contrast, a lot of deductions use information
4227about half the grid (`out of all the sixes, only one is next to a
4228three', which can depend on the values of up to 32 of the 56 squares in
4229the default setting!), so this tweaking strategy would be rather less
4230likely to work well.
4231
4232A more specialised strategy is that used in Solo and Slant. These
4233puzzles have the property that they derive their difficulty from not
4234presenting all the available clues. (In Solo's case, if all the possible
4235clues were provided then the puzzle would already be solved; in Slant
4236it would still require user action to fill in the lines, but it would
4237present no challenge at all). Therefore, a simple generation technique
4238is to leave the decision of which clues to provide until the last
4239minute. In other words, first generate a random _filled_ grid with all
4240possible clues present, and then gradually remove clues for as long as
4241the solver reports that it's still soluble. Unlike the methods described
4242above, this technique _cannot_ fail - once you've got a filled grid,
4243nothing can stop you from being able to convert it into a viable puzzle.
4244However, it wouldn't even be meaningful to apply this technique to (say)
4245Pattern, in which clues can never be left out, so the only way to affect
4246the set of clues is by altering the solution.
4247
4248(Unfortunately, Solo is complicated by the need to provide puzzles at
4249varying difficulty levels. It's easy enough to generate a puzzle of
4250_at most_ a given level of difficulty; you just have a solver with
4251configurable intelligence, and you set it to a given level and apply the
4252above technique, thus guaranteeing that the resulting grid is solvable
4253by someone with at most that much intelligence. However, generating a
4254puzzle of _at least_ a given level of difficulty is rather harder; if
4255you go for _at most_ Intermediate level, you're likely to find that
4256you've accidentally generated a Trivial grid a lot of the time, because
4257removing just one number is sufficient to take the puzzle from Trivial
4258straight to Ambiguous. In that situation Solo has no remaining options
4259but to throw the puzzle away and start again.)
4260
4261A final strategy is to use the solver _during_ puzzle construction:
4262lay out a bit of the grid, run the solver to see what it allows you to
4263deduce, and then lay out a bit more to allow the solver to make more
4264progress. There are articles on the web that recommend constructing
4265Sudoku puzzles by this method (which is completely the opposite way
4266round to how Solo does it); for Sudoku it has the advantage that you
4267get to specify your clue squares in advance (so you can have them make
4268pretty patterns).
4269
4270Rectangles uses a strategy along these lines. First it generates a grid
4271by placing the actual rectangles; then it has to decide where in each
4272rectangle to place a number. It uses a solver to help it place the
4273numbers in such a way as to ensure a unique solution. It does this by
4274means of running a test solver, but it runs the solver _before_ it's
4275placed any of the numbers - which means the solver must be capable of
4276coping with uncertainty about exactly where the numbers are! It runs
4277the solver as far as it can until it gets stuck; then it narrows down
4278the possible positions of a number in order to allow the solver to make
4279more progress, and so on. Most of the time this process terminates with
4280the grid fully solved, at which point any remaining number-placement
4281decisions can be made at random from the options not so far ruled out.
4282Note that unlike the Net/Mines tweaking strategy described above, this
4283algorithm does not require a checking run after it completes: if it
4284finishes successfully at all, then it has definitely produced a uniquely
4285soluble puzzle.
4286
4287Most of the strategies described above are not 100% reliable. Each
4288one has a failure rate: every so often it has to throw out the whole
4289grid and generate a fresh one from scratch. (Solo's strategy would
4290be the exception, if it weren't for the need to provide configurable
4291difficulty levels.) Occasional failures are not a fundamental problem in
4292this sort of work, however: it's just a question of dividing the grid
4293generation time by the success rate (if it takes 10ms to generate a
4294candidate grid and 1/5 of them work, then it will take 50ms on average
4295to generate a viable one), and seeing whether the expected time taken
4296to _successfully_ generate a puzzle is unacceptably slow. Dominosa's
4297generator has a very low success rate (about 1 out of 20 candidate grids
4298turn out to be usable, and if you think _that's_ bad then go and look
4299at the source code and find the comment showing what the figures were
4300before the generation-time tweaks!), but the generator itself is very
4301fast so this doesn't matter. Rectangles has a slower generator, but
4302fails well under 50% of the time.
4303
4304So don't be discouraged if you have an algorithm that doesn't always
4305work: if it _nearly_ always works, that's probably good enough. The one
4306place where reliability is important is that your algorithm must never
4307produce false positives: it must not claim a puzzle is soluble when it
4308isn't. It can produce false negatives (failing to notice that a puzzle
4309is soluble), and it can fail to generate a puzzle at all, provided it
4310doesn't do either so often as to become slow.
4311
4312One last piece of advice: for grid-based puzzles, when writing and
4313testing your generation algorithm, it's almost always a good idea _not_
4314to test it initially on a grid that's square (i.e. w==h), because if the
4315grid is square then you won't notice if you mistakenly write `h' instead
4316of `w' (or vice versa) somewhere in the code. Use a rectangular grid for
4317testing, and any size of grid will be likely to work after that.
4318
4319#6.2.2. Designing textual description formats
4320
4321Another aspect of writing a puzzle which is worth putting some thought
4322into is the design of the various text description formats: the format
4323of the game parameter encoding, the game description encoding, and the
4324move encoding.
4325
4326The first two of these should be reasonably intuitive for a user to type
4327in; so provide some flexibility where possible. Suppose, for example,
4328your parameter format consists of two numbers separated by an `x' to
4329specify the grid dimensions (`10x10' or `20x15'), and then has some
4330suffixes to specify other aspects of the game type. It's almost always a
4331good idea in this situation to arrange that decode_params() can handle
4332the suffixes appearing in any order, even if encode_params() only ever
4333generates them in one order.
4334
4335These formats will also be expected to be reasonably stable: users will
4336expect to be able to exchange game IDs with other users who aren't
4337running exactly the same version of your game. So make them robust and
4338stable: don't build too many assumptions into the game ID format which
4339will have to be changed every time something subtle changes in the
4340puzzle code.
4341
4342#6.3. Common how-to questions
4343
4344This section lists some common things people want to do when writing a
4345puzzle, and describes how to achieve them within the Puzzles framework.
4346
4347#6.3.1. Drawing objects at only one position
4348
4349A common phenomenon is to have an object described in the `game_state'
4350or the `game_ui' which can only be at one position. A cursor - probably
4351specified in the `game_ui' - is a good example.
4352
4353In the `game_ui', it would _obviously_ be silly to have an array
4354covering the whole game grid with a boolean flag stating whether the
4355cursor was at each position. Doing that would waste space, would make
4356it difficult to find the cursor in order to do anything with it, and
4357would introduce the potential for synchronisation bugs in which you
4358ended up with two cursors or none. The obviously sensible way to store a
4359cursor in the `game_ui' is to have fields directly encoding the cursor's
4360coordinates.
4361
4362However, it is a mistake to assume that the same logic applies to the
4363`game_drawstate'. If you replicate the cursor position fields in the
4364draw state, the redraw code will get very complicated. In the draw
4365state, in fact, it _is_ probably the right thing to have a cursor flag
4366for every position in the grid. You probably have an array for the whole
4367grid in the drawstate already (stating what is currently displayed in
4368the window at each position); the sensible approach is to add a `cursor'
4369flag to each element of that array. Then the main redraw loop will look
4370something like this (pseudo-code):
4371
4372 for (y = 0; y < h; y++) {
4373 for (x = 0; x < w; x++) {
4374 int value = state->symbol_at_position[y][x];
4375 if (x == ui->cursor_x && y == ui->cursor_y)
4376 value |= CURSOR;
4377 if (ds->symbol_at_position[y][x] != value) {
4378 symbol_drawing_subroutine(dr, ds, x, y, value);
4379 ds->symbol_at_position[y][x] = value;
4380 }
4381 }
4382 }
4383
4384This loop is very simple, pretty hard to get wrong, and _automatically_
4385deals both with erasing the previous cursor and drawing the new one,
4386with no special case code required.
4387
4388This type of loop is generally a sensible way to write a redraw
4389function, in fact. The best thing is to ensure that the information
4390stored in the draw state for each position tells you _everything_ about
4391what was drawn there. A good way to ensure that is to pass precisely
4392the same information, and _only_ that information, to a subroutine that
4393does the actual drawing; then you know there's no additional information
4394which affects the drawing but which you don't notice changes in.
4395
4396#6.3.2. Implementing a keyboard-controlled cursor
4397
4398It is often useful to provide a keyboard control method in a basically
4399mouse-controlled game. A keyboard-controlled cursor is best implemented
4400by storing its location in the `game_ui' (since if it were in the
4401`game_state' then the user would have to separately undo every cursor
4402move operation). So the procedure would be:
4403
4404 - Put cursor position fields in the `game_ui'.
4405
4406 - interpret_move() responds to arrow keys by modifying the cursor
4407 position fields and returning "".
4408
4409 - interpret_move() responds to some sort of fire button by actually
4410 performing a move based on the current cursor location.
4411
4412 - You might want an additional `game_ui' field stating whether the
4413 cursor is currently visible, and having it disappear when a mouse
4414 action occurs (so that it doesn't clutter the display when not
4415 actually in use).
4416
4417 - You might also want to automatically hide the cursor in
4418 changed_state() when the current game state changes to one in
4419 which there is no move to make (which is the case in some types of
4420 completed game).
4421
4422 - redraw() draws the cursor using the technique described in section
4423 6.3.1.
4424
4425#6.3.3. Implementing draggable sprites
4426
4427Some games have a user interface which involves dragging some sort of
4428game element around using the mouse. If you need to show a graphic
4429moving smoothly over the top of other graphics, use a blitter (see
4430section 3.1.13 for the blitter API) to save the background underneath
4431it. The typical scenario goes:
4432
4433 - Have a blitter field in the `game_drawstate'.
4434
4435 - Set the blitter field to NULL in the game's new_drawstate()
4436 function, since you don't yet know how big the piece of saved
4437 background needs to be.
4438
4439 - In the game's set_size() function, once you know the size of the
4440 object you'll be dragging around the display and hence the required
4441 size of the blitter, actually allocate the blitter.
4442
4443 - In free_drawstate(), free the blitter if it's not NULL.
4444
4445 - In interpret_move(), respond to mouse-down and mouse-drag events by
4446 updating some fields in the game_ui which indicate that a drag is in
4447 progress.
4448
4449 - At the _very end_ of redraw(), after all other drawing has been
4450 done, draw the moving object if there is one. First save the
4451 background under the object in the blitter; then set a clip
4452 rectangle covering precisely the area you just saved (just in case
4453 anti-aliasing or some other error causes your drawing to go beyond
4454 the area you saved). Then draw the object, and call unclip().
4455 Finally, set a flag in the game_drawstate that indicates that the
4456 blitter needs restoring.
4457
4458 - At the very start of redraw(), before doing anything else at all,
4459 check the flag in the game_drawstate, and if it says the blitter
4460 needs restoring then restore it. (Then clear the flag, so that this
4461 won't happen again in the next redraw if no moving object is drawn
4462 this time.)
4463
4464This way, you will be able to write the rest of the redraw function
4465completely ignoring the dragged object, as if it were floating above
4466your bitmap and being completely separate.
4467
4468#6.3.4. Sharing large invariant data between all game states
4469
4470In some puzzles, there is a large amount of data which never changes
4471between game states. The array of numbers in Dominosa is a good example.
4472
4473You _could_ dynamically allocate a copy of that array in every
4474`game_state', and have dup_game() make a fresh copy of it for every new
4475`game_state'; but it would waste memory and time. A more efficient way
4476is to use a reference-counted structure.
4477
4478 - Define a structure type containing the data in question, and also
4479 containing an integer reference count.
4480
4481 - Have a field in `game_state' which is a pointer to this structure.
4482
4483 - In new_game(), when creating a fresh game state at the start of a
4484 new game, create an instance of this structure, initialise it with
4485 the invariant data, and set its reference count to 1.
4486
4487 - In dup_game(), rather than making a copy of the structure for the
4488 new game state, simply set the new game state to point at the same
4489 copy of the structure, and increment its reference count.
4490
4491 - In free_game(), decrement the reference count in the structure
4492 pointed to by the game state; if the count reaches zero, free the
4493 structure.
4494
4495This way, the invariant data will persist for only as long as it's
4496genuinely needed; _as soon_ as the last game state for a particular
4497puzzle instance is freed, the invariant data for that puzzle will
4498vanish as well. Reference counting is a very efficient form of garbage
4499collection, when it works at all. (Which it does in this instance, of
4500course, because there's no possibility of circular references.)
4501
4502#6.3.5. Implementing multiple types of flash
4503
4504In some games you need to flash in more than one different way. Mines,
4505for example, flashes white when you win, and flashes red when you tread
4506on a mine and die.
4507
4508The simple way to do this is:
4509
4510 - Have a field in the `game_ui' which describes the type of flash.
4511
4512 - In flash_length(), examine the old and new game states to decide
4513 whether a flash is required and what type. Write the type of flash
4514 to the `game_ui' field whenever you return non-zero.
4515
4516 - In redraw(), when you detect that `flash_time' is non-zero, examine
4517 the field in `game_ui' to decide which type of flash to draw.
4518
4519redraw() will never be called with `flash_time' non-zero unless
4520flash_length() was first called to tell the mid-end that a flash was
4521required; so whenever redraw() notices that `flash_time' is non-zero,
4522you can be sure that the field in `game_ui' is correctly set.
4523
4524#6.3.6. Animating game moves
4525
4526A number of puzzle types benefit from a quick animation of each move you
4527make.
4528
4529For some games, such as Fifteen, this is particularly easy. Whenever
4530redraw() is called with `oldstate' non-NULL, Fifteen simply compares the
4531position of each tile in the two game states, and if the tile is not in
4532the same place then it draws it some fraction of the way from its old
4533position to its new position. This method copes automatically with undo.
4534
4535Other games are less obvious. In Sixteen, for example, you can't just
4536draw each tile a fraction of the way from its old to its new position:
4537if you did that, the end tile would zip very rapidly past all the others
4538to get to the other end and that would look silly. (Worse, it would look
4539inconsistent if the end tile was drawn on top going one way and on the
4540bottom going the other way.)
4541
4542A useful trick here is to define a field or two in the game state that
4543indicates what the last move was.
4544
4545 - Add a `last move' field to the `game_state' (or two or more fields
4546 if the move is complex enough to need them).
4547
4548 - new_game() initialises this field to a null value for a new game
4549 state.
4550
4551 - execute_move() sets up the field to reflect the move it just
4552 performed.
4553
4554 - redraw() now needs to examine its `dir' parameter. If `dir' is
4555 positive, it determines the move being animated by looking at the
4556 last-move field in `newstate'; but if `dir' is negative, it has to
4557 look at the last-move field in `oldstate', and invert whatever move
4558 it finds there.
4559
4560Note also that Sixteen needs to store the _direction_ of the move,
4561because you can't quite determine it by examining the row or column in
4562question. You can in almost all cases, but when the row is precisely
4563two squares long it doesn't work since a move in either direction looks
4564the same. (You could argue that since moving a 2-element row left and
4565right has the same effect, it doesn't matter which one you animate; but
4566in fact it's very disorienting to click the arrow left and find the row
4567moving right, and almost as bad to undo a move to the right and find the
4568game animating _another_ move to the right.)
4569
4570#6.3.7. Animating drag operations
4571
4572In Untangle, moves are made by dragging a node from an old position to a
4573new position. Therefore, at the time when the move is initially made, it
4574should not be animated, because the node has already been dragged to the
4575right place and doesn't need moving there. However, it's nice to animate
4576the same move if it's later undone or redone. This requires a bit of
4577fiddling.
4578
4579The obvious approach is to have a flag in the `game_ui' which inhibits
4580move animation, and to set that flag in interpret_move(). The question
4581is, when would the flag be reset again? The obvious place to do so
4582is changed_state(), which will be called once per move. But it will
4583be called _before_ anim_length(), so if it resets the flag then
4584anim_length() will never see the flag set at all.
4585
4586The solution is to have _two_ flags in a queue.
4587
4588 - Define two flags in `game_ui'; let's call them `current' and `next'.
4589
4590 - Set both to FALSE in `new_ui()'.
4591
4592 - When a drag operation completes in interpret_move(), set the `next'
4593 flag to TRUE.
4594
4595 - Every time changed_state() is called, set the value of `current' to
4596 the value in `next', and then set the value of `next' to FALSE.
4597
4598 - That way, `current' will be TRUE _after_ a call to changed_state()
4599 if and only if that call to changed_state() was the result of a
4600 drag operation processed by interpret_move(). Any other call to
4601 changed_state(), due to an Undo or a Redo or a Restart or a Solve,
4602 will leave `current' FALSE.
4603
4604 - So now anim_length() can request a move animation if and only if the
4605 `current' flag is _not_ set.
4606
4607#6.3.8. Inhibiting the victory flash when Solve is used
4608
4609Many games flash when you complete them, as a visual congratulation for
4610having got to the end of the puzzle. It often seems like a good idea to
4611disable that flash when the puzzle is brought to a solved state by means
4612of the Solve operation.
4613
4614This is easily done:
4615
4616 - Add a `cheated' flag to the `game_state'.
4617
4618 - Set this flag to FALSE in new_game().
4619
4620 - Have solve() return a move description string which clearly
4621 identifies the move as a solve operation.
4622
4623 - Have execute_move() respond to that clear identification by setting
4624 the `cheated' flag in the returned `game_state'. The flag will
4625 then be propagated to all subsequent game states, even if the user
4626 continues fiddling with the game after it is solved.
4627
4628 - flash_length() now returns non-zero if `oldstate' is not completed
4629 and `newstate' is, _and_ neither state has the `cheated' flag set.
4630
4631#6.4. Things to test once your puzzle is written
4632
4633Puzzle implementations written in this framework are self-testing as far
4634as I could make them.
4635
4636Textual game and move descriptions, for example, are generated and
4637parsed as part of the normal process of play. Therefore, if you can make
4638moves in the game _at all_ you can be reasonably confident that the
4639mid-end serialisation interface will function correctly and you will
4640be able to save your game. (By contrast, if I'd stuck with a single
4641make_move() function performing the jobs of both interpret_move() and
4642execute_move(), and had separate functions to encode and decode a game
4643state in string form, then those functions would not be used during
4644normal play; so they could have been completely broken, and you'd never
4645know it until you tried to save the game - which would have meant you'd
4646have to test game saving _extensively_ and make sure to test every
4647possible type of game state. As an added bonus, doing it the way I did
4648leads to smaller save files.)
4649
4650There is one exception to this, which is the string encoding of the
4651`game_ui'. Most games do not store anything permanent in the `game_ui',
4652and hence do not need to put anything in its encode and decode
4653functions; but if there is anything in there, you do need to test game
4654loading and saving to ensure those functions work properly.
4655
4656It's also worth testing undo and redo of all operations, to ensure that
4657the redraw and the animations (if any) work properly. Failing to animate
4658undo properly seems to be a common error.
4659
4660Other than that, just use your common sense.
4661
diff --git a/apps/plugins/puzzles/src/Makefile b/apps/plugins/puzzles/src/Makefile
new file mode 100644
index 0000000000..a0fc6c5e74
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile
@@ -0,0 +1,2611 @@
1# Makefile.in generated by automake 1.15.1 from Makefile.am.
2# Makefile. Generated from Makefile.in by configure.
3
4# Copyright (C) 1994-2017 Free Software Foundation, Inc.
5
6# This Makefile.in is free software; the Free Software Foundation
7# gives unlimited permission to copy and/or distribute it,
8# with or without modifications, as long as this notice is preserved.
9
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
12# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13# PARTICULAR PURPOSE.
14
15
16
17# Makefile.am for puzzles under Unix with Autoconf/Automake.
18#
19# This file was created by `mkfiles.pl' from the `Recipe' file.
20# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
21
22
23
24am__is_gnu_make = { \
25 if test -z '$(MAKELEVEL)'; then \
26 false; \
27 elif test -n '$(MAKE_HOST)'; then \
28 true; \
29 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
30 true; \
31 else \
32 false; \
33 fi; \
34}
35am__make_running_with_option = \
36 case $${target_option-} in \
37 ?) ;; \
38 *) echo "am__make_running_with_option: internal error: invalid" \
39 "target option '$${target_option-}' specified" >&2; \
40 exit 1;; \
41 esac; \
42 has_opt=no; \
43 sane_makeflags=$$MAKEFLAGS; \
44 if $(am__is_gnu_make); then \
45 sane_makeflags=$$MFLAGS; \
46 else \
47 case $$MAKEFLAGS in \
48 *\\[\ \ ]*) \
49 bs=\\; \
50 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
51 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
52 esac; \
53 fi; \
54 skip_next=no; \
55 strip_trailopt () \
56 { \
57 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
58 }; \
59 for flg in $$sane_makeflags; do \
60 test $$skip_next = yes && { skip_next=no; continue; }; \
61 case $$flg in \
62 *=*|--*) continue;; \
63 -*I) strip_trailopt 'I'; skip_next=yes;; \
64 -*I?*) strip_trailopt 'I';; \
65 -*O) strip_trailopt 'O'; skip_next=yes;; \
66 -*O?*) strip_trailopt 'O';; \
67 -*l) strip_trailopt 'l'; skip_next=yes;; \
68 -*l?*) strip_trailopt 'l';; \
69 -[dEDm]) skip_next=yes;; \
70 -[JT]) skip_next=yes;; \
71 esac; \
72 case $$flg in \
73 *$$target_option*) has_opt=yes; break;; \
74 esac; \
75 done; \
76 test $$has_opt = yes
77am__make_dryrun = (target_option=n; $(am__make_running_with_option))
78am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
79pkgdatadir = $(datadir)/puzzles
80pkgincludedir = $(includedir)/puzzles
81pkglibdir = $(libdir)/puzzles
82pkglibexecdir = $(libexecdir)/puzzles
83am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
84install_sh_DATA = $(install_sh) -c -m 644
85install_sh_PROGRAM = $(install_sh) -c
86install_sh_SCRIPT = $(install_sh) -c
87INSTALL_HEADER = $(INSTALL_DATA)
88transform = $(program_transform_name)
89NORMAL_INSTALL = :
90PRE_INSTALL = :
91POST_INSTALL = :
92NORMAL_UNINSTALL = :
93PRE_UNINSTALL = :
94POST_UNINSTALL = :
95noinst_PROGRAMS = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
96 dominosa$(EXEEXT) fifteen$(EXEEXT) fifteensolver$(EXEEXT) \
97 filling$(EXEEXT) fillingsolver$(EXEEXT) flip$(EXEEXT) \
98 flood$(EXEEXT) galaxies$(EXEEXT) galaxiespicture$(EXEEXT) \
99 galaxiessolver$(EXEEXT) guess$(EXEEXT) inertia$(EXEEXT) \
100 keen$(EXEEXT) keensolver$(EXEEXT) latincheck$(EXEEXT) \
101 lightup$(EXEEXT) lightupsolver$(EXEEXT) loopy$(EXEEXT) \
102 loopysolver$(EXEEXT) magnets$(EXEEXT) magnetssolver$(EXEEXT) \
103 map$(EXEEXT) mapsolver$(EXEEXT) mineobfusc$(EXEEXT) \
104 mines$(EXEEXT) net$(EXEEXT) netslide$(EXEEXT) \
105 nullgame$(EXEEXT) obfusc$(EXEEXT) palisade$(EXEEXT) \
106 pattern$(EXEEXT) patternpicture$(EXEEXT) \
107 patternsolver$(EXEEXT) pearl$(EXEEXT) pearlbench$(EXEEXT) \
108 pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \
109 signpost$(EXEEXT) signpostsolver$(EXEEXT) singles$(EXEEXT) \
110 singlessolver$(EXEEXT) sixteen$(EXEEXT) slant$(EXEEXT) \
111 slantsolver$(EXEEXT) solo$(EXEEXT) solosolver$(EXEEXT) \
112 tents$(EXEEXT) tentssolver$(EXEEXT) towers$(EXEEXT) \
113 towerssolver$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
114 undead$(EXEEXT) unequal$(EXEEXT) unequalsolver$(EXEEXT) \
115 unruly$(EXEEXT) unrulysolver$(EXEEXT) untangle$(EXEEXT)
116bin_PROGRAMS = $(am__EXEEXT_1)
117subdir = .
118ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
119am__aclocal_m4_deps = $(top_srcdir)/configure.ac
120am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
121 $(ACLOCAL_M4)
122DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
123 $(am__configure_deps) $(am__DIST_COMMON)
124am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
125 configure.lineno config.status.lineno
126mkinstalldirs = $(install_sh) -d
127CONFIG_CLEAN_FILES =
128CONFIG_CLEAN_VPATH_FILES =
129LIBRARIES = $(noinst_LIBRARIES)
130AR = ar
131ARFLAGS = cru
132AM_V_AR = $(am__v_AR_$(V))
133am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
134am__v_AR_0 = @echo " AR " $@;
135am__v_AR_1 =
136libfifteen2_a_AR = $(AR) $(ARFLAGS)
137libfifteen2_a_LIBADD =
138am__dirstamp = $(am__leading_dot)dirstamp
139am_libfifteen2_a_OBJECTS = ./libfifteen2_a-fifteen.$(OBJEXT)
140libfifteen2_a_OBJECTS = $(am_libfifteen2_a_OBJECTS)
141libfilling2_a_AR = $(AR) $(ARFLAGS)
142libfilling2_a_LIBADD =
143am_libfilling2_a_OBJECTS = ./libfilling2_a-filling.$(OBJEXT)
144libfilling2_a_OBJECTS = $(am_libfilling2_a_OBJECTS)
145libgalaxie2_a_AR = $(AR) $(ARFLAGS)
146libgalaxie2_a_LIBADD =
147am_libgalaxie2_a_OBJECTS = ./libgalaxie2_a-galaxies.$(OBJEXT)
148libgalaxie2_a_OBJECTS = $(am_libgalaxie2_a_OBJECTS)
149libgalaxie4_a_AR = $(AR) $(ARFLAGS)
150libgalaxie4_a_LIBADD =
151am_libgalaxie4_a_OBJECTS = ./libgalaxie4_a-galaxies.$(OBJEXT)
152libgalaxie4_a_OBJECTS = $(am_libgalaxie4_a_OBJECTS)
153libkeen2_a_AR = $(AR) $(ARFLAGS)
154libkeen2_a_LIBADD =
155am_libkeen2_a_OBJECTS = ./libkeen2_a-keen.$(OBJEXT)
156libkeen2_a_OBJECTS = $(am_libkeen2_a_OBJECTS)
157liblatin6_a_AR = $(AR) $(ARFLAGS)
158liblatin6_a_LIBADD =
159am_liblatin6_a_OBJECTS = ./liblatin6_a-latin.$(OBJEXT)
160liblatin6_a_OBJECTS = $(am_liblatin6_a_OBJECTS)
161liblatin8_a_AR = $(AR) $(ARFLAGS)
162liblatin8_a_LIBADD =
163am_liblatin8_a_OBJECTS = ./liblatin8_a-latin.$(OBJEXT)
164liblatin8_a_OBJECTS = $(am_liblatin8_a_OBJECTS)
165liblightup2_a_AR = $(AR) $(ARFLAGS)
166liblightup2_a_LIBADD =
167am_liblightup2_a_OBJECTS = ./liblightup2_a-lightup.$(OBJEXT)
168liblightup2_a_OBJECTS = $(am_liblightup2_a_OBJECTS)
169libloopy2_a_AR = $(AR) $(ARFLAGS)
170libloopy2_a_LIBADD =
171am_libloopy2_a_OBJECTS = ./libloopy2_a-loopy.$(OBJEXT)
172libloopy2_a_OBJECTS = $(am_libloopy2_a_OBJECTS)
173libmagnets2_a_AR = $(AR) $(ARFLAGS)
174libmagnets2_a_LIBADD =
175am_libmagnets2_a_OBJECTS = ./libmagnets2_a-magnets.$(OBJEXT)
176libmagnets2_a_OBJECTS = $(am_libmagnets2_a_OBJECTS)
177libmap2_a_AR = $(AR) $(ARFLAGS)
178libmap2_a_LIBADD =
179am_libmap2_a_OBJECTS = ./libmap2_a-map.$(OBJEXT)
180libmap2_a_OBJECTS = $(am_libmap2_a_OBJECTS)
181libmines2_a_AR = $(AR) $(ARFLAGS)
182libmines2_a_LIBADD =
183am_libmines2_a_OBJECTS = ./libmines2_a-mines.$(OBJEXT)
184libmines2_a_OBJECTS = $(am_libmines2_a_OBJECTS)
185libpattern2_a_AR = $(AR) $(ARFLAGS)
186libpattern2_a_LIBADD =
187am_libpattern2_a_OBJECTS = ./libpattern2_a-pattern.$(OBJEXT)
188libpattern2_a_OBJECTS = $(am_libpattern2_a_OBJECTS)
189libpattern4_a_AR = $(AR) $(ARFLAGS)
190libpattern4_a_LIBADD =
191am_libpattern4_a_OBJECTS = ./libpattern4_a-pattern.$(OBJEXT)
192libpattern4_a_OBJECTS = $(am_libpattern4_a_OBJECTS)
193libpearl2_a_AR = $(AR) $(ARFLAGS)
194libpearl2_a_LIBADD =
195am_libpearl2_a_OBJECTS = ./libpearl2_a-pearl.$(OBJEXT)
196libpearl2_a_OBJECTS = $(am_libpearl2_a_OBJECTS)
197libsignpos2_a_AR = $(AR) $(ARFLAGS)
198libsignpos2_a_LIBADD =
199am_libsignpos2_a_OBJECTS = ./libsignpos2_a-signpost.$(OBJEXT)
200libsignpos2_a_OBJECTS = $(am_libsignpos2_a_OBJECTS)
201libsingles3_a_AR = $(AR) $(ARFLAGS)
202libsingles3_a_LIBADD =
203am_libsingles3_a_OBJECTS = ./libsingles3_a-singles.$(OBJEXT)
204libsingles3_a_OBJECTS = $(am_libsingles3_a_OBJECTS)
205libslant2_a_AR = $(AR) $(ARFLAGS)
206libslant2_a_LIBADD =
207am_libslant2_a_OBJECTS = ./libslant2_a-slant.$(OBJEXT)
208libslant2_a_OBJECTS = $(am_libslant2_a_OBJECTS)
209libsolo2_a_AR = $(AR) $(ARFLAGS)
210libsolo2_a_LIBADD =
211am_libsolo2_a_OBJECTS = ./libsolo2_a-solo.$(OBJEXT)
212libsolo2_a_OBJECTS = $(am_libsolo2_a_OBJECTS)
213libtents3_a_AR = $(AR) $(ARFLAGS)
214libtents3_a_LIBADD =
215am_libtents3_a_OBJECTS = ./libtents3_a-tents.$(OBJEXT)
216libtents3_a_OBJECTS = $(am_libtents3_a_OBJECTS)
217libtowers2_a_AR = $(AR) $(ARFLAGS)
218libtowers2_a_LIBADD =
219am_libtowers2_a_OBJECTS = ./libtowers2_a-towers.$(OBJEXT)
220libtowers2_a_OBJECTS = $(am_libtowers2_a_OBJECTS)
221libunequal2_a_AR = $(AR) $(ARFLAGS)
222libunequal2_a_LIBADD =
223am_libunequal2_a_OBJECTS = ./libunequal2_a-unequal.$(OBJEXT)
224libunequal2_a_OBJECTS = $(am_libunequal2_a_OBJECTS)
225libunruly2_a_AR = $(AR) $(ARFLAGS)
226libunruly2_a_LIBADD =
227am_libunruly2_a_OBJECTS = ./libunruly2_a-unruly.$(OBJEXT)
228libunruly2_a_OBJECTS = $(am_libunruly2_a_OBJECTS)
229am__EXEEXT_1 = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
230 dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \
231 flip$(EXEEXT) flood$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \
232 inertia$(EXEEXT) keen$(EXEEXT) lightup$(EXEEXT) loopy$(EXEEXT) \
233 magnets$(EXEEXT) map$(EXEEXT) mines$(EXEEXT) net$(EXEEXT) \
234 netslide$(EXEEXT) palisade$(EXEEXT) pattern$(EXEEXT) \
235 pearl$(EXEEXT) pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) \
236 samegame$(EXEEXT) signpost$(EXEEXT) singles$(EXEEXT) \
237 sixteen$(EXEEXT) slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) \
238 towers$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
239 undead$(EXEEXT) unequal$(EXEEXT) unruly$(EXEEXT) \
240 untangle$(EXEEXT)
241am__installdirs = "$(DESTDIR)$(bindir)"
242PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
243am_blackbox_OBJECTS = ./blackbox.$(OBJEXT) ./drawing.$(OBJEXT) \
244 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
245 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
246 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
247blackbox_OBJECTS = $(am_blackbox_OBJECTS)
248am__DEPENDENCIES_1 =
249blackbox_DEPENDENCIES = $(am__DEPENDENCIES_1)
250am_bridges_OBJECTS = ./bridges.$(OBJEXT) ./drawing.$(OBJEXT) \
251 ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) \
252 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
253 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
254 ./random.$(OBJEXT) ./version.$(OBJEXT)
255bridges_OBJECTS = $(am_bridges_OBJECTS)
256bridges_DEPENDENCIES = $(am__DEPENDENCIES_1)
257am_cube_OBJECTS = ./cube.$(OBJEXT) ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
258 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
259 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
260 ./random.$(OBJEXT) ./version.$(OBJEXT)
261cube_OBJECTS = $(am_cube_OBJECTS)
262cube_DEPENDENCIES = $(am__DEPENDENCIES_1)
263am_dominosa_OBJECTS = ./dominosa.$(OBJEXT) ./drawing.$(OBJEXT) \
264 ./gtk.$(OBJEXT) ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
265 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
266 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
267 ./version.$(OBJEXT)
268dominosa_OBJECTS = $(am_dominosa_OBJECTS)
269dominosa_DEPENDENCIES = $(am__DEPENDENCIES_1)
270am_fifteen_OBJECTS = ./drawing.$(OBJEXT) ./fifteen.$(OBJEXT) \
271 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
272 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
273 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
274fifteen_OBJECTS = $(am_fifteen_OBJECTS)
275fifteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
276am_fifteensolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
277 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
278fifteensolver_OBJECTS = $(am_fifteensolver_OBJECTS)
279fifteensolver_DEPENDENCIES = libfifteen2_a-fifteen.$(OBJEXT)
280am_filling_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
281 ./filling.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
282 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
283 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
284 ./version.$(OBJEXT)
285filling_OBJECTS = $(am_filling_OBJECTS)
286filling_DEPENDENCIES = $(am__DEPENDENCIES_1)
287am_fillingsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
288 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
289fillingsolver_OBJECTS = $(am_fillingsolver_OBJECTS)
290fillingsolver_DEPENDENCIES = libfilling2_a-filling.$(OBJEXT)
291am_flip_OBJECTS = ./drawing.$(OBJEXT) ./flip.$(OBJEXT) ./gtk.$(OBJEXT) \
292 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
293 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
294 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
295flip_OBJECTS = $(am_flip_OBJECTS)
296flip_DEPENDENCIES = $(am__DEPENDENCIES_1)
297am_flood_OBJECTS = ./drawing.$(OBJEXT) ./flood.$(OBJEXT) \
298 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
299 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
300 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
301flood_OBJECTS = $(am_flood_OBJECTS)
302flood_DEPENDENCIES = $(am__DEPENDENCIES_1)
303am_galaxies_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
304 ./galaxies.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
305 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
306 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
307 ./version.$(OBJEXT)
308galaxies_OBJECTS = $(am_galaxies_OBJECTS)
309galaxies_DEPENDENCIES = $(am__DEPENDENCIES_1)
310am_galaxiespicture_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
311 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
312galaxiespicture_OBJECTS = $(am_galaxiespicture_OBJECTS)
313galaxiespicture_DEPENDENCIES = libgalaxie4_a-galaxies.$(OBJEXT)
314am_galaxiessolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
315 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
316galaxiessolver_OBJECTS = $(am_galaxiessolver_OBJECTS)
317galaxiessolver_DEPENDENCIES = libgalaxie2_a-galaxies.$(OBJEXT)
318am_guess_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
319 ./guess.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
320 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
321 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
322guess_OBJECTS = $(am_guess_OBJECTS)
323guess_DEPENDENCIES = $(am__DEPENDENCIES_1)
324am_inertia_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
325 ./inertia.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
326 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
327 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
328inertia_OBJECTS = $(am_inertia_OBJECTS)
329inertia_DEPENDENCIES = $(am__DEPENDENCIES_1)
330am_keen_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
331 ./keen.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
332 ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
333 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
334 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
335keen_OBJECTS = $(am_keen_OBJECTS)
336keen_DEPENDENCIES = $(am__DEPENDENCIES_1)
337am_keensolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
338 ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
339 ./random.$(OBJEXT) ./tree234.$(OBJEXT)
340keensolver_OBJECTS = $(am_keensolver_OBJECTS)
341keensolver_DEPENDENCIES = libkeen2_a-keen.$(OBJEXT) \
342 liblatin6_a-latin.$(OBJEXT)
343am_latincheck_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
344 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
345 ./tree234.$(OBJEXT)
346latincheck_OBJECTS = $(am_latincheck_OBJECTS)
347latincheck_DEPENDENCIES = liblatin8_a-latin.$(OBJEXT)
348am_lightup_OBJECTS = ./combi.$(OBJEXT) ./drawing.$(OBJEXT) \
349 ./gtk.$(OBJEXT) ./lightup.$(OBJEXT) ./malloc.$(OBJEXT) \
350 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
351 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
352 ./version.$(OBJEXT)
353lightup_OBJECTS = $(am_lightup_OBJECTS)
354lightup_DEPENDENCIES = $(am__DEPENDENCIES_1)
355am_lightupsolver_OBJECTS = ./combi.$(OBJEXT) ./malloc.$(OBJEXT) \
356 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
357lightupsolver_OBJECTS = $(am_lightupsolver_OBJECTS)
358lightupsolver_DEPENDENCIES = liblightup2_a-lightup.$(OBJEXT)
359am_loopy_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
360 ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
361 ./loopy.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
362 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./penrose.$(OBJEXT) \
363 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
364 ./tree234.$(OBJEXT) ./version.$(OBJEXT)
365loopy_OBJECTS = $(am_loopy_OBJECTS)
366loopy_DEPENDENCIES = $(am__DEPENDENCIES_1)
367am_loopysolver_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
368 ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
369 ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
370 ./tree234.$(OBJEXT)
371loopysolver_OBJECTS = $(am_loopysolver_OBJECTS)
372loopysolver_DEPENDENCIES = libloopy2_a-loopy.$(OBJEXT)
373am_magnets_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
374 ./laydomino.$(OBJEXT) ./magnets.$(OBJEXT) ./malloc.$(OBJEXT) \
375 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
376 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
377 ./version.$(OBJEXT)
378magnets_OBJECTS = $(am_magnets_OBJECTS)
379magnets_DEPENDENCIES = $(am__DEPENDENCIES_1)
380am_magnetssolver_OBJECTS = ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
381 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
382magnetssolver_OBJECTS = $(am_magnetssolver_OBJECTS)
383magnetssolver_DEPENDENCIES = libmagnets2_a-magnets.$(OBJEXT)
384am_map_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
385 ./malloc.$(OBJEXT) ./map.$(OBJEXT) ./midend.$(OBJEXT) \
386 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
387 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
388map_OBJECTS = $(am_map_OBJECTS)
389map_DEPENDENCIES = $(am__DEPENDENCIES_1)
390am_mapsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
391 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
392mapsolver_OBJECTS = $(am_mapsolver_OBJECTS)
393mapsolver_DEPENDENCIES = libmap2_a-map.$(OBJEXT)
394am_mineobfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
395 ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
396mineobfusc_OBJECTS = $(am_mineobfusc_OBJECTS)
397mineobfusc_DEPENDENCIES = libmines2_a-mines.$(OBJEXT)
398am_mines_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
399 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./mines.$(OBJEXT) \
400 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
401 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
402 ./version.$(OBJEXT)
403mines_OBJECTS = $(am_mines_OBJECTS)
404mines_DEPENDENCIES = $(am__DEPENDENCIES_1)
405am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
406 ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
407 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./net.$(OBJEXT) \
408 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
409 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
410net_OBJECTS = $(am_net_OBJECTS)
411net_DEPENDENCIES = $(am__DEPENDENCIES_1)
412am_netslide_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
413 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
414 ./netslide.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
415 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
416 ./version.$(OBJEXT)
417netslide_OBJECTS = $(am_netslide_OBJECTS)
418netslide_DEPENDENCIES = $(am__DEPENDENCIES_1)
419am_nullgame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
420 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
421 ./no-icon.$(OBJEXT) ./nullgame.$(OBJEXT) ./printing.$(OBJEXT) \
422 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
423nullgame_OBJECTS = $(am_nullgame_OBJECTS)
424nullgame_DEPENDENCIES = $(am__DEPENDENCIES_1)
425am_obfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
426 ./nullfe.$(OBJEXT) ./obfusc.$(OBJEXT) ./random.$(OBJEXT)
427obfusc_OBJECTS = $(am_obfusc_OBJECTS)
428obfusc_DEPENDENCIES =
429am_palisade_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
430 ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
431 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
432 ./palisade.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
433 ./random.$(OBJEXT) ./version.$(OBJEXT)
434palisade_OBJECTS = $(am_palisade_OBJECTS)
435palisade_DEPENDENCIES = $(am__DEPENDENCIES_1)
436am_pattern_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
437 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
438 ./no-icon.$(OBJEXT) ./pattern.$(OBJEXT) ./printing.$(OBJEXT) \
439 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
440pattern_OBJECTS = $(am_pattern_OBJECTS)
441pattern_DEPENDENCIES = $(am__DEPENDENCIES_1)
442am_patternpicture_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
443 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
444patternpicture_OBJECTS = $(am_patternpicture_OBJECTS)
445patternpicture_DEPENDENCIES = libpattern4_a-pattern.$(OBJEXT)
446am_patternsolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
447 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
448patternsolver_OBJECTS = $(am_patternsolver_OBJECTS)
449patternsolver_DEPENDENCIES = libpattern2_a-pattern.$(OBJEXT)
450am_pearl_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
451 ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
452 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
453 ./no-icon.$(OBJEXT) ./pearl.$(OBJEXT) ./penrose.$(OBJEXT) \
454 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
455 ./tdq.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
456pearl_OBJECTS = $(am_pearl_OBJECTS)
457pearl_DEPENDENCIES = $(am__DEPENDENCIES_1)
458am_pearlbench_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
459 ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
460 ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
461 ./tdq.$(OBJEXT) ./tree234.$(OBJEXT)
462pearlbench_OBJECTS = $(am_pearlbench_OBJECTS)
463pearlbench_DEPENDENCIES = libpearl2_a-pearl.$(OBJEXT)
464am_pegs_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
465 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
466 ./no-icon.$(OBJEXT) ./pegs.$(OBJEXT) ./printing.$(OBJEXT) \
467 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
468 ./version.$(OBJEXT)
469pegs_OBJECTS = $(am_pegs_OBJECTS)
470pegs_DEPENDENCIES = $(am__DEPENDENCIES_1)
471am_range_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
472 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
473 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
474 ./random.$(OBJEXT) ./range.$(OBJEXT) ./version.$(OBJEXT)
475range_OBJECTS = $(am_range_OBJECTS)
476range_DEPENDENCIES = $(am__DEPENDENCIES_1)
477am_rect_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
478 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
479 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
480 ./random.$(OBJEXT) ./rect.$(OBJEXT) ./version.$(OBJEXT)
481rect_OBJECTS = $(am_rect_OBJECTS)
482rect_DEPENDENCIES = $(am__DEPENDENCIES_1)
483am_samegame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
484 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
485 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
486 ./random.$(OBJEXT) ./samegame.$(OBJEXT) ./version.$(OBJEXT)
487samegame_OBJECTS = $(am_samegame_OBJECTS)
488samegame_DEPENDENCIES = $(am__DEPENDENCIES_1)
489am_signpost_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
490 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
491 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
492 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./signpost.$(OBJEXT) \
493 ./version.$(OBJEXT)
494signpost_OBJECTS = $(am_signpost_OBJECTS)
495signpost_DEPENDENCIES = $(am__DEPENDENCIES_1)
496am_signpostsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
497 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
498signpostsolver_OBJECTS = $(am_signpostsolver_OBJECTS)
499signpostsolver_DEPENDENCIES = libsignpos2_a-signpost.$(OBJEXT)
500am_singles_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
501 ./gtk.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
502 ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
503 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
504 ./random.$(OBJEXT) ./singles.$(OBJEXT) ./tree234.$(OBJEXT) \
505 ./version.$(OBJEXT)
506singles_OBJECTS = $(am_singles_OBJECTS)
507singles_DEPENDENCIES = $(am__DEPENDENCIES_1)
508am_singlessolver_OBJECTS = ./dsf.$(OBJEXT) ./latin.$(OBJEXT) \
509 ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) \
510 ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
511singlessolver_OBJECTS = $(am_singlessolver_OBJECTS)
512singlessolver_DEPENDENCIES = libsingles3_a-singles.$(OBJEXT)
513am_sixteen_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
514 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
515 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
516 ./random.$(OBJEXT) ./sixteen.$(OBJEXT) ./version.$(OBJEXT)
517sixteen_OBJECTS = $(am_sixteen_OBJECTS)
518sixteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
519am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
520 ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
521 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
522 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
523 ./slant.$(OBJEXT) ./version.$(OBJEXT)
524slant_OBJECTS = $(am_slant_OBJECTS)
525slant_DEPENDENCIES = $(am__DEPENDENCIES_1)
526am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) \
527 ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
528 ./random.$(OBJEXT)
529slantsolver_OBJECTS = $(am_slantsolver_OBJECTS)
530slantsolver_DEPENDENCIES = libslant2_a-slant.$(OBJEXT)
531am_solo_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
532 ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
533 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
534 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
535 ./solo.$(OBJEXT) ./version.$(OBJEXT)
536solo_OBJECTS = $(am_solo_OBJECTS)
537solo_DEPENDENCIES = $(am__DEPENDENCIES_1)
538am_solosolver_OBJECTS = ./divvy.$(OBJEXT) ./dsf.$(OBJEXT) \
539 ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
540 ./random.$(OBJEXT)
541solosolver_OBJECTS = $(am_solosolver_OBJECTS)
542solosolver_DEPENDENCIES = libsolo2_a-solo.$(OBJEXT)
543am_tents_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
544 ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) \
545 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
546 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tents.$(OBJEXT) \
547 ./version.$(OBJEXT)
548tents_OBJECTS = $(am_tents_OBJECTS)
549tents_DEPENDENCIES = $(am__DEPENDENCIES_1)
550am_tentssolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
551 ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
552 ./random.$(OBJEXT)
553tentssolver_OBJECTS = $(am_tentssolver_OBJECTS)
554tentssolver_DEPENDENCIES = libtents3_a-tents.$(OBJEXT)
555am_towers_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
556 ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
557 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
558 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
559 ./towers.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
560towers_OBJECTS = $(am_towers_OBJECTS)
561towers_DEPENDENCIES = $(am__DEPENDENCIES_1)
562am_towerssolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
563 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
564 ./tree234.$(OBJEXT)
565towerssolver_OBJECTS = $(am_towerssolver_OBJECTS)
566towerssolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
567 libtowers2_a-towers.$(OBJEXT)
568am_tracks_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
569 ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
570 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
571 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
572 ./tracks.$(OBJEXT) ./version.$(OBJEXT)
573tracks_OBJECTS = $(am_tracks_OBJECTS)
574tracks_DEPENDENCIES = $(am__DEPENDENCIES_1)
575am_twiddle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
576 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
577 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
578 ./random.$(OBJEXT) ./twiddle.$(OBJEXT) ./version.$(OBJEXT)
579twiddle_OBJECTS = $(am_twiddle_OBJECTS)
580twiddle_DEPENDENCIES = $(am__DEPENDENCIES_1)
581am_undead_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
582 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
583 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
584 ./random.$(OBJEXT) ./undead.$(OBJEXT) ./version.$(OBJEXT)
585undead_OBJECTS = $(am_undead_OBJECTS)
586undead_DEPENDENCIES = $(am__DEPENDENCIES_1)
587am_unequal_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
588 ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
589 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
590 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
591 ./tree234.$(OBJEXT) ./unequal.$(OBJEXT) ./version.$(OBJEXT)
592unequal_OBJECTS = $(am_unequal_OBJECTS)
593unequal_DEPENDENCIES = $(am__DEPENDENCIES_1)
594am_unequalsolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
595 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
596 ./tree234.$(OBJEXT)
597unequalsolver_OBJECTS = $(am_unequalsolver_OBJECTS)
598unequalsolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
599 libunequal2_a-unequal.$(OBJEXT)
600am_unruly_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
601 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
602 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
603 ./random.$(OBJEXT) ./unruly.$(OBJEXT) ./version.$(OBJEXT)
604unruly_OBJECTS = $(am_unruly_OBJECTS)
605unruly_DEPENDENCIES = $(am__DEPENDENCIES_1)
606am_unrulysolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
607 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
608unrulysolver_OBJECTS = $(am_unrulysolver_OBJECTS)
609unrulysolver_DEPENDENCIES = libunruly2_a-unruly.$(OBJEXT)
610am_untangle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
611 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
612 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
613 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./untangle.$(OBJEXT) \
614 ./version.$(OBJEXT)
615untangle_OBJECTS = $(am_untangle_OBJECTS)
616untangle_DEPENDENCIES = $(am__DEPENDENCIES_1)
617AM_V_P = $(am__v_P_$(V))
618am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
619am__v_P_0 = false
620am__v_P_1 = :
621AM_V_GEN = $(am__v_GEN_$(V))
622am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
623am__v_GEN_0 = @echo " GEN " $@;
624am__v_GEN_1 =
625AM_V_at = $(am__v_at_$(V))
626am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
627am__v_at_0 = @
628am__v_at_1 =
629DEFAULT_INCLUDES = -I.
630depcomp = $(SHELL) $(top_srcdir)/depcomp
631am__depfiles_maybe = depfiles
632am__mv = mv -f
633AM_V_lt = $(am__v_lt_$(V))
634am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
635am__v_lt_0 = --silent
636am__v_lt_1 =
637COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
638 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
639AM_V_CC = $(am__v_CC_$(V))
640am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
641am__v_CC_0 = @echo " CC " $@;
642am__v_CC_1 =
643CCLD = $(CC)
644LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
645AM_V_CCLD = $(am__v_CCLD_$(V))
646am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
647am__v_CCLD_0 = @echo " CCLD " $@;
648am__v_CCLD_1 =
649SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
650 $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
651 $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
652 $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
653 $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
654 $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
655 $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
656 $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
657 $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
658 $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
659 $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
660 $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
661 $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
662 $(fifteensolver_SOURCES) $(filling_SOURCES) \
663 $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
664 $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
665 $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
666 $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
667 $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
668 $(loopysolver_SOURCES) $(magnets_SOURCES) \
669 $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
670 $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
671 $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
672 $(palisade_SOURCES) $(pattern_SOURCES) \
673 $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
674 $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
675 $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
676 $(signpost_SOURCES) $(signpostsolver_SOURCES) \
677 $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
678 $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
679 $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
680 $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
681 $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
682 $(unequalsolver_SOURCES) $(unruly_SOURCES) \
683 $(unrulysolver_SOURCES) $(untangle_SOURCES)
684DIST_SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
685 $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
686 $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
687 $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
688 $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
689 $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
690 $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
691 $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
692 $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
693 $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
694 $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
695 $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
696 $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
697 $(fifteensolver_SOURCES) $(filling_SOURCES) \
698 $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
699 $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
700 $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
701 $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
702 $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
703 $(loopysolver_SOURCES) $(magnets_SOURCES) \
704 $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
705 $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
706 $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
707 $(palisade_SOURCES) $(pattern_SOURCES) \
708 $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
709 $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
710 $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
711 $(signpost_SOURCES) $(signpostsolver_SOURCES) \
712 $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
713 $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
714 $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
715 $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
716 $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
717 $(unequalsolver_SOURCES) $(unruly_SOURCES) \
718 $(unrulysolver_SOURCES) $(untangle_SOURCES)
719am__can_run_installinfo = \
720 case $$AM_UPDATE_INFO_DIR in \
721 n|no|NO) false;; \
722 *) (install-info --version) >/dev/null 2>&1;; \
723 esac
724am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
725# Read a list of newline-separated strings from the standard input,
726# and print each of them once, without duplicates. Input order is
727# *not* preserved.
728am__uniquify_input = $(AWK) '\
729 BEGIN { nonempty = 0; } \
730 { items[$$0] = 1; nonempty = 1; } \
731 END { if (nonempty) { for (i in items) print i; }; } \
732'
733# Make sure the list of sources is unique. This is necessary because,
734# e.g., the same source file might be shared among _SOURCES variables
735# for different programs/libraries.
736am__define_uniq_tagged_files = \
737 list='$(am__tagged_files)'; \
738 unique=`for i in $$list; do \
739 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
740 done | $(am__uniquify_input)`
741ETAGS = etags
742CTAGS = ctags
743CSCOPE = cscope
744AM_RECURSIVE_TARGETS = cscope
745am__DIST_COMMON = $(srcdir)/Makefile.in README compile depcomp \
746 install-sh missing
747DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
748distdir = $(PACKAGE)-$(VERSION)
749top_distdir = $(distdir)
750am__remove_distdir = \
751 if test -d "$(distdir)"; then \
752 find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
753 && rm -rf "$(distdir)" \
754 || { sleep 5 && rm -rf "$(distdir)"; }; \
755 else :; fi
756am__post_remove_distdir = $(am__remove_distdir)
757DIST_ARCHIVES = $(distdir).tar.gz
758GZIP_ENV = --best
759DIST_TARGETS = dist-gzip
760distuninstallcheck_listfiles = find . -type f -print
761am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
762 | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
763distcleancheck_listfiles = find . -type f -print
764ACLOCAL = ${SHELL} /home/franklin/puzzles/missing aclocal-1.15
765AMTAR = $${TAR-tar}
766AM_DEFAULT_VERBOSITY = 1
767AUTOCONF = ${SHELL} /home/franklin/puzzles/missing autoconf
768AUTOHEADER = ${SHELL} /home/franklin/puzzles/missing autoheader
769AUTOMAKE = ${SHELL} /home/franklin/puzzles/missing automake-1.15
770AWK = gawk
771CC = gcc
772CCDEPMODE = depmode=gcc3
773CFLAGS = -g -O2 -Wall -Werror -std=c89
774CPPFLAGS =
775CYGPATH_W = echo
776DEFS = -DPACKAGE_NAME=\"puzzles\" -DPACKAGE_TARNAME=\"puzzles\" -DPACKAGE_VERSION=\"6.66\" -DPACKAGE_STRING=\"puzzles\ 6.66\" -DPACKAGE_BUGREPORT=\"anakin@pobox.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"puzzles\" -DVERSION=\"6.66\"
777DEPDIR = .deps
778ECHO_C =
779ECHO_N = -n
780ECHO_T =
781EXEEXT =
782GTK_CFLAGS = -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
783GTK_LIBS = -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
784INSTALL = /usr/bin/install -c
785INSTALL_DATA = ${INSTALL} -m 644
786INSTALL_PROGRAM = ${INSTALL}
787INSTALL_SCRIPT = ${INSTALL}
788INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
789LDFLAGS =
790LIBOBJS =
791LIBS =
792LTLIBOBJS =
793MAKEINFO = ${SHELL} /home/franklin/puzzles/missing makeinfo
794MKDIR_P = /usr/bin/mkdir -p
795OBJEXT = o
796PACKAGE = puzzles
797PACKAGE_BUGREPORT = anakin@pobox.com
798PACKAGE_NAME = puzzles
799PACKAGE_STRING = puzzles 6.66
800PACKAGE_TARNAME = puzzles
801PACKAGE_URL =
802PACKAGE_VERSION = 6.66
803PATH_SEPARATOR = :
804PKG_CONFIG = /usr/bin/pkg-config
805PKG_CONFIG_LIBDIR =
806PKG_CONFIG_PATH =
807RANLIB = ranlib
808SET_MAKE =
809SHELL = /bin/sh
810STRIP =
811VERSION = 6.66
812abs_builddir = /home/franklin/puzzles
813abs_srcdir = /home/franklin/puzzles
814abs_top_builddir = /home/franklin/puzzles
815abs_top_srcdir = /home/franklin/puzzles
816ac_ct_CC = gcc
817am__include = include
818am__leading_dot = .
819am__quote =
820am__tar = $${TAR-tar} chof - "$$tardir"
821am__untar = $${TAR-tar} xf -
822bindir = ${exec_prefix}/bin
823build_alias =
824builddir = .
825datadir = ${datarootdir}
826datarootdir = ${prefix}/share
827docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
828dvidir = ${docdir}
829exec_prefix = ${prefix}
830host_alias =
831htmldir = ${docdir}
832includedir = ${prefix}/include
833infodir = ${datarootdir}/info
834install_sh = ${SHELL} /home/franklin/puzzles/install-sh
835libdir = ${exec_prefix}/lib
836libexecdir = ${exec_prefix}/libexec
837localedir = ${datarootdir}/locale
838localstatedir = ${prefix}/var
839mandir = ${datarootdir}/man
840mkdir_p = $(MKDIR_P)
841oldincludedir = /usr/include
842pdfdir = ${docdir}
843prefix = /usr/local
844program_transform_name = s,x,x,
845psdir = ${docdir}
846sbindir = ${exec_prefix}/sbin
847sharedstatedir = ${prefix}/com
848srcdir = .
849sysconfdir = ${prefix}/etc
850target_alias =
851top_build_prefix =
852top_builddir = .
853top_srcdir = .
854GAMES = blackbox bridges cube dominosa fifteen filling flip flood \
855 galaxies guess inertia keen lightup loopy magnets map mines \
856 net netslide palisade pattern pearl pegs range rect samegame \
857 signpost singles sixteen slant solo tents towers tracks \
858 twiddle undead unequal unruly untangle
859AUTOMAKE_OPTIONS = subdir-objects
860allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \
861 ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \
862 ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \
863 ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \
864 ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \
865 ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \
866 ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \
867 ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \
868 ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \
869 ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
870 ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \
871 ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \
872 ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \
873 ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \
874 ./untangle.c ./version.c ./version.h ./windows.c
875
876AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/
877AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS)
878blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \
879 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
880 ./random.c ./version.c ./version.h
881
882blackbox_LDADD = $(GTK_LIBS) -lm
883bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \
884 ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \
885 ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
886
887bridges_LDADD = $(GTK_LIBS) -lm
888cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
889 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
890 ./version.c ./version.h
891
892cube_LDADD = $(GTK_LIBS) -lm
893dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \
894 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
895 ./puzzles.h ./random.c ./version.c ./version.h
896
897dominosa_LDADD = $(GTK_LIBS) -lm
898fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \
899 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
900 ./random.c ./version.c ./version.h
901
902fifteen_LDADD = $(GTK_LIBS) -lm
903fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
904 ./random.c
905
906fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm
907filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \
908 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
909 ./puzzles.h ./random.c ./version.c ./version.h
910
911filling_LDADD = $(GTK_LIBS) -lm
912fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
913 ./random.c
914
915fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm
916flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
917 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
918 ./tree234.c ./tree234.h ./version.c ./version.h
919
920flip_LDADD = $(GTK_LIBS) -lm
921flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
922 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
923 ./version.c ./version.h
924
925flood_LDADD = $(GTK_LIBS) -lm
926galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \
927 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
928 ./puzzles.h ./random.c ./version.c ./version.h
929
930galaxies_LDADD = $(GTK_LIBS) -lm
931galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
932 ./random.c
933
934galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm
935galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
936 ./random.c
937
938galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm
939guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \
940 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
941 ./version.c ./version.h
942
943guess_LDADD = $(GTK_LIBS) -lm
944inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \
945 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
946 ./random.c ./version.c ./version.h
947
948inertia_LDADD = $(GTK_LIBS) -lm
949keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \
950 ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \
951 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
952 ./tree234.c ./tree234.h ./version.c ./version.h
953
954keen_LDADD = $(GTK_LIBS) -lm
955keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
956 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
957
958keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm
959latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \
960 ./puzzles.h ./random.c ./tree234.c ./tree234.h
961
962latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm
963lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \
964 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
965 ./puzzles.h ./random.c ./version.c ./version.h
966
967lightup_LDADD = $(GTK_LIBS) -lm
968lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
969 ./random.c
970
971lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm
972loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
973 ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \
974 ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
975 ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \
976 ./version.h
977
978loopy_LDADD = $(GTK_LIBS) -lm
979loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
980 ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
981 ./puzzles.h ./random.c ./tree234.c ./tree234.h
982
983loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm
984magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \
985 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
986 ./puzzles.h ./random.c ./version.c ./version.h
987
988magnets_LDADD = $(GTK_LIBS) -lm
989magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \
990 ./puzzles.h ./random.c
991
992magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm
993map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \
994 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
995 ./random.c ./version.c ./version.h
996
997map_LDADD = $(GTK_LIBS) -lm
998mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
999 ./random.c
1000
1001mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm
1002mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \
1003 ./tree234.c ./tree234.h
1004
1005mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm
1006mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \
1007 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1008 ./tree234.c ./tree234.h ./version.c ./version.h
1009
1010mines_LDADD = $(GTK_LIBS) -lm
1011net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \
1012 ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1013 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
1014
1015net_LDADD = $(GTK_LIBS) -lm
1016netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1017 ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1018 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
1019
1020netslide_LDADD = $(GTK_LIBS) -lm
1021nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1022 ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \
1023 ./random.c ./version.c ./version.h
1024
1025nullgame_LDADD = $(GTK_LIBS) -lm
1026obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \
1027 ./random.c
1028
1029obfusc_LDADD = -lm
1030palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \
1031 ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \
1032 ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
1033
1034palisade_LDADD = $(GTK_LIBS) -lm
1035pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1036 ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \
1037 ./random.c ./version.c ./version.h
1038
1039pattern_LDADD = $(GTK_LIBS) -lm
1040patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
1041 ./random.c
1042
1043patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm
1044patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
1045 ./random.c
1046
1047patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm
1048pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
1049 ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \
1050 ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
1051 ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \
1052 ./version.c ./version.h
1053
1054pearl_LDADD = $(GTK_LIBS) -lm
1055pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
1056 ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
1057 ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h
1058
1059pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm
1060pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1061 ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \
1062 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
1063
1064pegs_LDADD = $(GTK_LIBS) -lm
1065range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1066 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1067 ./range.c ./version.c ./version.h
1068
1069range_LDADD = $(GTK_LIBS) -lm
1070rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1071 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1072 ./rect.c ./version.c ./version.h
1073
1074rect_LDADD = $(GTK_LIBS) -lm
1075samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1076 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1077 ./samegame.c ./version.c ./version.h
1078
1079samegame_LDADD = $(GTK_LIBS) -lm
1080signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
1081 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1082 ./random.c ./signpost.c ./version.c ./version.h
1083
1084signpost_LDADD = $(GTK_LIBS) -lm
1085signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
1086 ./random.c
1087
1088signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm
1089singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
1090 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
1091 ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \
1092 ./tree234.c ./tree234.h ./version.c ./version.h
1093
1094singles_LDADD = $(GTK_LIBS) -lm
1095singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \
1096 ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \
1097 ./tree234.c ./tree234.h
1098
1099singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm
1100sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1101 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1102 ./sixteen.c ./version.c ./version.h
1103
1104sixteen_LDADD = $(GTK_LIBS) -lm
1105slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
1106 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
1107 ./puzzles.h ./random.c ./slant.c ./version.c ./version.h
1108
1109slant_LDADD = $(GTK_LIBS) -lm
1110slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \
1111 ./puzzles.h ./random.c
1112
1113slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm
1114solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
1115 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1116 ./random.c ./solo.c ./version.c ./version.h
1117
1118solo_LDADD = $(GTK_LIBS) -lm
1119solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \
1120 ./puzzles.h ./random.c
1121
1122solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm
1123tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \
1124 ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \
1125 ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \
1126 ./version.h
1127
1128tents_LDADD = $(GTK_LIBS) -lm
1129tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
1130 ./nullfe.c ./puzzles.h ./random.c
1131
1132tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm
1133towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
1134 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
1135 ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \
1136 ./tree234.c ./tree234.h ./version.c ./version.h
1137
1138towers_LDADD = $(GTK_LIBS) -lm
1139towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
1140 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
1141
1142towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
1143 libtowers2_a-towers.$(OBJEXT) -lm
1144
1145tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
1146 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
1147 ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h
1148
1149tracks_LDADD = $(GTK_LIBS) -lm
1150twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1151 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1152 ./twiddle.c ./version.c ./version.h
1153
1154twiddle_LDADD = $(GTK_LIBS) -lm
1155undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1156 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1157 ./undead.c ./version.c ./version.h
1158
1159undead_LDADD = $(GTK_LIBS) -lm
1160unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
1161 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
1162 ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \
1163 ./tree234.h ./unequal.c ./version.c ./version.h
1164
1165unequal_LDADD = $(GTK_LIBS) -lm
1166unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
1167 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
1168
1169unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
1170 libunequal2_a-unequal.$(OBJEXT) -lm
1171
1172unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1173 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1174 ./unruly.c ./version.c ./version.h
1175
1176unruly_LDADD = $(GTK_LIBS) -lm
1177unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c
1178unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm
1179untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1180 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1181 ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h
1182
1183untangle_LDADD = $(GTK_LIBS) -lm
1184libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h
1185libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1186libfilling2_a_SOURCES = ./filling.c ./puzzles.h
1187libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1188libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h
1189libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1190libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h
1191libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
1192 -DSTANDALONE_PICTURE_GENERATOR
1193
1194libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h
1195libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1196liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1197 ./latin.h
1198
1199liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1200liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1201 ./latin.h
1202
1203liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST
1204liblightup2_a_SOURCES = ./lightup.c ./puzzles.h
1205liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1206libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
1207libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1208libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h
1209libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1210libmap2_a_SOURCES = ./map.c ./puzzles.h
1211libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1212libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h
1213libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR
1214libpattern2_a_SOURCES = ./pattern.c ./puzzles.h
1215libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1216libpattern4_a_SOURCES = ./pattern.c ./puzzles.h
1217libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
1218 -DSTANDALONE_PICTURE_GENERATOR
1219
1220libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
1221libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1222libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h
1223libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1224libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h
1225libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1226libslant2_a_SOURCES = ./slant.c ./puzzles.h
1227libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1228libsolo2_a_SOURCES = ./solo.c ./puzzles.h
1229libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1230libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h
1231libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1232libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h
1233libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1234libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h
1235libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1236libunruly2_a_SOURCES = ./unruly.c ./puzzles.h
1237libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1238noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \
1239 libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \
1240 libmagnets2.a libmap2.a libmines2.a libpattern2.a \
1241 libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \
1242 libslant2.a libsolo2.a libtents3.a libtowers2.a \
1243 libunequal2.a libunruly2.a
1244
1245all: all-am
1246
1247.SUFFIXES:
1248.SUFFIXES: .c .o .obj
1249am--refresh: Makefile
1250 @:
1251$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
1252 @for dep in $?; do \
1253 case '$(am__configure_deps)' in \
1254 *$$dep*) \
1255 echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
1256 $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
1257 && exit 0; \
1258 exit 1;; \
1259 esac; \
1260 done; \
1261 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
1262 $(am__cd) $(top_srcdir) && \
1263 $(AUTOMAKE) --foreign Makefile
1264Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
1265 @case '$?' in \
1266 *config.status*) \
1267 echo ' $(SHELL) ./config.status'; \
1268 $(SHELL) ./config.status;; \
1269 *) \
1270 echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
1271 cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
1272 esac;
1273
1274$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
1275 $(SHELL) ./config.status --recheck
1276
1277$(top_srcdir)/configure: $(am__configure_deps)
1278 $(am__cd) $(srcdir) && $(AUTOCONF)
1279$(ACLOCAL_M4): $(am__aclocal_m4_deps)
1280 $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
1281$(am__aclocal_m4_deps):
1282
1283clean-noinstLIBRARIES:
1284 -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
1285./$(am__dirstamp):
1286 @$(MKDIR_P) .
1287 @: > ./$(am__dirstamp)
1288$(DEPDIR)/$(am__dirstamp):
1289 @$(MKDIR_P) ./$(DEPDIR)
1290 @: > $(DEPDIR)/$(am__dirstamp)
1291./libfifteen2_a-fifteen.$(OBJEXT): ./$(am__dirstamp) \
1292 $(DEPDIR)/$(am__dirstamp)
1293
1294libfifteen2.a: $(libfifteen2_a_OBJECTS) $(libfifteen2_a_DEPENDENCIES) $(EXTRA_libfifteen2_a_DEPENDENCIES)
1295 $(AM_V_at)-rm -f libfifteen2.a
1296 $(AM_V_AR)$(libfifteen2_a_AR) libfifteen2.a $(libfifteen2_a_OBJECTS) $(libfifteen2_a_LIBADD)
1297 $(AM_V_at)$(RANLIB) libfifteen2.a
1298./libfilling2_a-filling.$(OBJEXT): ./$(am__dirstamp) \
1299 $(DEPDIR)/$(am__dirstamp)
1300
1301libfilling2.a: $(libfilling2_a_OBJECTS) $(libfilling2_a_DEPENDENCIES) $(EXTRA_libfilling2_a_DEPENDENCIES)
1302 $(AM_V_at)-rm -f libfilling2.a
1303 $(AM_V_AR)$(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD)
1304 $(AM_V_at)$(RANLIB) libfilling2.a
1305./libgalaxie2_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
1306 $(DEPDIR)/$(am__dirstamp)
1307
1308libgalaxie2.a: $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_DEPENDENCIES) $(EXTRA_libgalaxie2_a_DEPENDENCIES)
1309 $(AM_V_at)-rm -f libgalaxie2.a
1310 $(AM_V_AR)$(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD)
1311 $(AM_V_at)$(RANLIB) libgalaxie2.a
1312./libgalaxie4_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
1313 $(DEPDIR)/$(am__dirstamp)
1314
1315libgalaxie4.a: $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_DEPENDENCIES) $(EXTRA_libgalaxie4_a_DEPENDENCIES)
1316 $(AM_V_at)-rm -f libgalaxie4.a
1317 $(AM_V_AR)$(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD)
1318 $(AM_V_at)$(RANLIB) libgalaxie4.a
1319./libkeen2_a-keen.$(OBJEXT): ./$(am__dirstamp) \
1320 $(DEPDIR)/$(am__dirstamp)
1321
1322libkeen2.a: $(libkeen2_a_OBJECTS) $(libkeen2_a_DEPENDENCIES) $(EXTRA_libkeen2_a_DEPENDENCIES)
1323 $(AM_V_at)-rm -f libkeen2.a
1324 $(AM_V_AR)$(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD)
1325 $(AM_V_at)$(RANLIB) libkeen2.a
1326./liblatin6_a-latin.$(OBJEXT): ./$(am__dirstamp) \
1327 $(DEPDIR)/$(am__dirstamp)
1328
1329liblatin6.a: $(liblatin6_a_OBJECTS) $(liblatin6_a_DEPENDENCIES) $(EXTRA_liblatin6_a_DEPENDENCIES)
1330 $(AM_V_at)-rm -f liblatin6.a
1331 $(AM_V_AR)$(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD)
1332 $(AM_V_at)$(RANLIB) liblatin6.a
1333./liblatin8_a-latin.$(OBJEXT): ./$(am__dirstamp) \
1334 $(DEPDIR)/$(am__dirstamp)
1335
1336liblatin8.a: $(liblatin8_a_OBJECTS) $(liblatin8_a_DEPENDENCIES) $(EXTRA_liblatin8_a_DEPENDENCIES)
1337 $(AM_V_at)-rm -f liblatin8.a
1338 $(AM_V_AR)$(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD)
1339 $(AM_V_at)$(RANLIB) liblatin8.a
1340./liblightup2_a-lightup.$(OBJEXT): ./$(am__dirstamp) \
1341 $(DEPDIR)/$(am__dirstamp)
1342
1343liblightup2.a: $(liblightup2_a_OBJECTS) $(liblightup2_a_DEPENDENCIES) $(EXTRA_liblightup2_a_DEPENDENCIES)
1344 $(AM_V_at)-rm -f liblightup2.a
1345 $(AM_V_AR)$(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD)
1346 $(AM_V_at)$(RANLIB) liblightup2.a
1347./libloopy2_a-loopy.$(OBJEXT): ./$(am__dirstamp) \
1348 $(DEPDIR)/$(am__dirstamp)
1349
1350libloopy2.a: $(libloopy2_a_OBJECTS) $(libloopy2_a_DEPENDENCIES) $(EXTRA_libloopy2_a_DEPENDENCIES)
1351 $(AM_V_at)-rm -f libloopy2.a
1352 $(AM_V_AR)$(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD)
1353 $(AM_V_at)$(RANLIB) libloopy2.a
1354./libmagnets2_a-magnets.$(OBJEXT): ./$(am__dirstamp) \
1355 $(DEPDIR)/$(am__dirstamp)
1356
1357libmagnets2.a: $(libmagnets2_a_OBJECTS) $(libmagnets2_a_DEPENDENCIES) $(EXTRA_libmagnets2_a_DEPENDENCIES)
1358 $(AM_V_at)-rm -f libmagnets2.a
1359 $(AM_V_AR)$(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD)
1360 $(AM_V_at)$(RANLIB) libmagnets2.a
1361./libmap2_a-map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1362
1363libmap2.a: $(libmap2_a_OBJECTS) $(libmap2_a_DEPENDENCIES) $(EXTRA_libmap2_a_DEPENDENCIES)
1364 $(AM_V_at)-rm -f libmap2.a
1365 $(AM_V_AR)$(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD)
1366 $(AM_V_at)$(RANLIB) libmap2.a
1367./libmines2_a-mines.$(OBJEXT): ./$(am__dirstamp) \
1368 $(DEPDIR)/$(am__dirstamp)
1369
1370libmines2.a: $(libmines2_a_OBJECTS) $(libmines2_a_DEPENDENCIES) $(EXTRA_libmines2_a_DEPENDENCIES)
1371 $(AM_V_at)-rm -f libmines2.a
1372 $(AM_V_AR)$(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD)
1373 $(AM_V_at)$(RANLIB) libmines2.a
1374./libpattern2_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
1375 $(DEPDIR)/$(am__dirstamp)
1376
1377libpattern2.a: $(libpattern2_a_OBJECTS) $(libpattern2_a_DEPENDENCIES) $(EXTRA_libpattern2_a_DEPENDENCIES)
1378 $(AM_V_at)-rm -f libpattern2.a
1379 $(AM_V_AR)$(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD)
1380 $(AM_V_at)$(RANLIB) libpattern2.a
1381./libpattern4_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
1382 $(DEPDIR)/$(am__dirstamp)
1383
1384libpattern4.a: $(libpattern4_a_OBJECTS) $(libpattern4_a_DEPENDENCIES) $(EXTRA_libpattern4_a_DEPENDENCIES)
1385 $(AM_V_at)-rm -f libpattern4.a
1386 $(AM_V_AR)$(libpattern4_a_AR) libpattern4.a $(libpattern4_a_OBJECTS) $(libpattern4_a_LIBADD)
1387 $(AM_V_at)$(RANLIB) libpattern4.a
1388./libpearl2_a-pearl.$(OBJEXT): ./$(am__dirstamp) \
1389 $(DEPDIR)/$(am__dirstamp)
1390
1391libpearl2.a: $(libpearl2_a_OBJECTS) $(libpearl2_a_DEPENDENCIES) $(EXTRA_libpearl2_a_DEPENDENCIES)
1392 $(AM_V_at)-rm -f libpearl2.a
1393 $(AM_V_AR)$(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD)
1394 $(AM_V_at)$(RANLIB) libpearl2.a
1395./libsignpos2_a-signpost.$(OBJEXT): ./$(am__dirstamp) \
1396 $(DEPDIR)/$(am__dirstamp)
1397
1398libsignpos2.a: $(libsignpos2_a_OBJECTS) $(libsignpos2_a_DEPENDENCIES) $(EXTRA_libsignpos2_a_DEPENDENCIES)
1399 $(AM_V_at)-rm -f libsignpos2.a
1400 $(AM_V_AR)$(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD)
1401 $(AM_V_at)$(RANLIB) libsignpos2.a
1402./libsingles3_a-singles.$(OBJEXT): ./$(am__dirstamp) \
1403 $(DEPDIR)/$(am__dirstamp)
1404
1405libsingles3.a: $(libsingles3_a_OBJECTS) $(libsingles3_a_DEPENDENCIES) $(EXTRA_libsingles3_a_DEPENDENCIES)
1406 $(AM_V_at)-rm -f libsingles3.a
1407 $(AM_V_AR)$(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD)
1408 $(AM_V_at)$(RANLIB) libsingles3.a
1409./libslant2_a-slant.$(OBJEXT): ./$(am__dirstamp) \
1410 $(DEPDIR)/$(am__dirstamp)
1411
1412libslant2.a: $(libslant2_a_OBJECTS) $(libslant2_a_DEPENDENCIES) $(EXTRA_libslant2_a_DEPENDENCIES)
1413 $(AM_V_at)-rm -f libslant2.a
1414 $(AM_V_AR)$(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD)
1415 $(AM_V_at)$(RANLIB) libslant2.a
1416./libsolo2_a-solo.$(OBJEXT): ./$(am__dirstamp) \
1417 $(DEPDIR)/$(am__dirstamp)
1418
1419libsolo2.a: $(libsolo2_a_OBJECTS) $(libsolo2_a_DEPENDENCIES) $(EXTRA_libsolo2_a_DEPENDENCIES)
1420 $(AM_V_at)-rm -f libsolo2.a
1421 $(AM_V_AR)$(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD)
1422 $(AM_V_at)$(RANLIB) libsolo2.a
1423./libtents3_a-tents.$(OBJEXT): ./$(am__dirstamp) \
1424 $(DEPDIR)/$(am__dirstamp)
1425
1426libtents3.a: $(libtents3_a_OBJECTS) $(libtents3_a_DEPENDENCIES) $(EXTRA_libtents3_a_DEPENDENCIES)
1427 $(AM_V_at)-rm -f libtents3.a
1428 $(AM_V_AR)$(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD)
1429 $(AM_V_at)$(RANLIB) libtents3.a
1430./libtowers2_a-towers.$(OBJEXT): ./$(am__dirstamp) \
1431 $(DEPDIR)/$(am__dirstamp)
1432
1433libtowers2.a: $(libtowers2_a_OBJECTS) $(libtowers2_a_DEPENDENCIES) $(EXTRA_libtowers2_a_DEPENDENCIES)
1434 $(AM_V_at)-rm -f libtowers2.a
1435 $(AM_V_AR)$(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD)
1436 $(AM_V_at)$(RANLIB) libtowers2.a
1437./libunequal2_a-unequal.$(OBJEXT): ./$(am__dirstamp) \
1438 $(DEPDIR)/$(am__dirstamp)
1439
1440libunequal2.a: $(libunequal2_a_OBJECTS) $(libunequal2_a_DEPENDENCIES) $(EXTRA_libunequal2_a_DEPENDENCIES)
1441 $(AM_V_at)-rm -f libunequal2.a
1442 $(AM_V_AR)$(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD)
1443 $(AM_V_at)$(RANLIB) libunequal2.a
1444./libunruly2_a-unruly.$(OBJEXT): ./$(am__dirstamp) \
1445 $(DEPDIR)/$(am__dirstamp)
1446
1447libunruly2.a: $(libunruly2_a_OBJECTS) $(libunruly2_a_DEPENDENCIES) $(EXTRA_libunruly2_a_DEPENDENCIES)
1448 $(AM_V_at)-rm -f libunruly2.a
1449 $(AM_V_AR)$(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD)
1450 $(AM_V_at)$(RANLIB) libunruly2.a
1451install-binPROGRAMS: $(bin_PROGRAMS)
1452 @$(NORMAL_INSTALL)
1453 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
1454 if test -n "$$list"; then \
1455 echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
1456 $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
1457 fi; \
1458 for p in $$list; do echo "$$p $$p"; done | \
1459 sed 's/$(EXEEXT)$$//' | \
1460 while read p p1; do if test -f $$p \
1461 ; then echo "$$p"; echo "$$p"; else :; fi; \
1462 done | \
1463 sed -e 'p;s,.*/,,;n;h' \
1464 -e 's|.*|.|' \
1465 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
1466 sed 'N;N;N;s,\n, ,g' | \
1467 $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
1468 { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
1469 if ($$2 == $$4) files[d] = files[d] " " $$1; \
1470 else { print "f", $$3 "/" $$4, $$1; } } \
1471 END { for (d in files) print "f", d, files[d] }' | \
1472 while read type dir files; do \
1473 if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
1474 test -z "$$files" || { \
1475 echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
1476 $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
1477 } \
1478 ; done
1479
1480uninstall-binPROGRAMS:
1481 @$(NORMAL_UNINSTALL)
1482 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
1483 files=`for p in $$list; do echo "$$p"; done | \
1484 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
1485 -e 's/$$/$(EXEEXT)/' \
1486 `; \
1487 test -n "$$list" || exit 0; \
1488 echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
1489 cd "$(DESTDIR)$(bindir)" && rm -f $$files
1490
1491clean-binPROGRAMS:
1492 -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
1493
1494clean-noinstPROGRAMS:
1495 -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
1496./blackbox.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1497./drawing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1498./gtk.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1499./malloc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1500./midend.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1501./misc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1502./no-icon.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1503./printing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1504./ps.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1505./random.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1506./version.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1507
1508blackbox$(EXEEXT): $(blackbox_OBJECTS) $(blackbox_DEPENDENCIES) $(EXTRA_blackbox_DEPENDENCIES)
1509 @rm -f blackbox$(EXEEXT)
1510 $(AM_V_CCLD)$(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS)
1511./bridges.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1512./dsf.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1513./findloop.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1514
1515bridges$(EXEEXT): $(bridges_OBJECTS) $(bridges_DEPENDENCIES) $(EXTRA_bridges_DEPENDENCIES)
1516 @rm -f bridges$(EXEEXT)
1517 $(AM_V_CCLD)$(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS)
1518./cube.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1519
1520cube$(EXEEXT): $(cube_OBJECTS) $(cube_DEPENDENCIES) $(EXTRA_cube_DEPENDENCIES)
1521 @rm -f cube$(EXEEXT)
1522 $(AM_V_CCLD)$(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS)
1523./dominosa.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1524./laydomino.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1525
1526dominosa$(EXEEXT): $(dominosa_OBJECTS) $(dominosa_DEPENDENCIES) $(EXTRA_dominosa_DEPENDENCIES)
1527 @rm -f dominosa$(EXEEXT)
1528 $(AM_V_CCLD)$(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS)
1529./fifteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1530
1531fifteen$(EXEEXT): $(fifteen_OBJECTS) $(fifteen_DEPENDENCIES) $(EXTRA_fifteen_DEPENDENCIES)
1532 @rm -f fifteen$(EXEEXT)
1533 $(AM_V_CCLD)$(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS)
1534./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1535
1536fifteensolver$(EXEEXT): $(fifteensolver_OBJECTS) $(fifteensolver_DEPENDENCIES) $(EXTRA_fifteensolver_DEPENDENCIES)
1537 @rm -f fifteensolver$(EXEEXT)
1538 $(AM_V_CCLD)$(LINK) $(fifteensolver_OBJECTS) $(fifteensolver_LDADD) $(LIBS)
1539./filling.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1540
1541filling$(EXEEXT): $(filling_OBJECTS) $(filling_DEPENDENCIES) $(EXTRA_filling_DEPENDENCIES)
1542 @rm -f filling$(EXEEXT)
1543 $(AM_V_CCLD)$(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS)
1544
1545fillingsolver$(EXEEXT): $(fillingsolver_OBJECTS) $(fillingsolver_DEPENDENCIES) $(EXTRA_fillingsolver_DEPENDENCIES)
1546 @rm -f fillingsolver$(EXEEXT)
1547 $(AM_V_CCLD)$(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS)
1548./flip.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1549./tree234.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1550
1551flip$(EXEEXT): $(flip_OBJECTS) $(flip_DEPENDENCIES) $(EXTRA_flip_DEPENDENCIES)
1552 @rm -f flip$(EXEEXT)
1553 $(AM_V_CCLD)$(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS)
1554./flood.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1555
1556flood$(EXEEXT): $(flood_OBJECTS) $(flood_DEPENDENCIES) $(EXTRA_flood_DEPENDENCIES)
1557 @rm -f flood$(EXEEXT)
1558 $(AM_V_CCLD)$(LINK) $(flood_OBJECTS) $(flood_LDADD) $(LIBS)
1559./galaxies.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1560
1561galaxies$(EXEEXT): $(galaxies_OBJECTS) $(galaxies_DEPENDENCIES) $(EXTRA_galaxies_DEPENDENCIES)
1562 @rm -f galaxies$(EXEEXT)
1563 $(AM_V_CCLD)$(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS)
1564
1565galaxiespicture$(EXEEXT): $(galaxiespicture_OBJECTS) $(galaxiespicture_DEPENDENCIES) $(EXTRA_galaxiespicture_DEPENDENCIES)
1566 @rm -f galaxiespicture$(EXEEXT)
1567 $(AM_V_CCLD)$(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS)
1568
1569galaxiessolver$(EXEEXT): $(galaxiessolver_OBJECTS) $(galaxiessolver_DEPENDENCIES) $(EXTRA_galaxiessolver_DEPENDENCIES)
1570 @rm -f galaxiessolver$(EXEEXT)
1571 $(AM_V_CCLD)$(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS)
1572./guess.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1573
1574guess$(EXEEXT): $(guess_OBJECTS) $(guess_DEPENDENCIES) $(EXTRA_guess_DEPENDENCIES)
1575 @rm -f guess$(EXEEXT)
1576 $(AM_V_CCLD)$(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS)
1577./inertia.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1578
1579inertia$(EXEEXT): $(inertia_OBJECTS) $(inertia_DEPENDENCIES) $(EXTRA_inertia_DEPENDENCIES)
1580 @rm -f inertia$(EXEEXT)
1581 $(AM_V_CCLD)$(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS)
1582./keen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1583./latin.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1584./maxflow.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1585
1586keen$(EXEEXT): $(keen_OBJECTS) $(keen_DEPENDENCIES) $(EXTRA_keen_DEPENDENCIES)
1587 @rm -f keen$(EXEEXT)
1588 $(AM_V_CCLD)$(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS)
1589
1590keensolver$(EXEEXT): $(keensolver_OBJECTS) $(keensolver_DEPENDENCIES) $(EXTRA_keensolver_DEPENDENCIES)
1591 @rm -f keensolver$(EXEEXT)
1592 $(AM_V_CCLD)$(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS)
1593
1594latincheck$(EXEEXT): $(latincheck_OBJECTS) $(latincheck_DEPENDENCIES) $(EXTRA_latincheck_DEPENDENCIES)
1595 @rm -f latincheck$(EXEEXT)
1596 $(AM_V_CCLD)$(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS)
1597./combi.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1598./lightup.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1599
1600lightup$(EXEEXT): $(lightup_OBJECTS) $(lightup_DEPENDENCIES) $(EXTRA_lightup_DEPENDENCIES)
1601 @rm -f lightup$(EXEEXT)
1602 $(AM_V_CCLD)$(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS)
1603
1604lightupsolver$(EXEEXT): $(lightupsolver_OBJECTS) $(lightupsolver_DEPENDENCIES) $(EXTRA_lightupsolver_DEPENDENCIES)
1605 @rm -f lightupsolver$(EXEEXT)
1606 $(AM_V_CCLD)$(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS)
1607./grid.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1608./loopgen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1609./loopy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1610./penrose.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1611
1612loopy$(EXEEXT): $(loopy_OBJECTS) $(loopy_DEPENDENCIES) $(EXTRA_loopy_DEPENDENCIES)
1613 @rm -f loopy$(EXEEXT)
1614 $(AM_V_CCLD)$(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS)
1615
1616loopysolver$(EXEEXT): $(loopysolver_OBJECTS) $(loopysolver_DEPENDENCIES) $(EXTRA_loopysolver_DEPENDENCIES)
1617 @rm -f loopysolver$(EXEEXT)
1618 $(AM_V_CCLD)$(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS)
1619./magnets.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1620
1621magnets$(EXEEXT): $(magnets_OBJECTS) $(magnets_DEPENDENCIES) $(EXTRA_magnets_DEPENDENCIES)
1622 @rm -f magnets$(EXEEXT)
1623 $(AM_V_CCLD)$(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS)
1624
1625magnetssolver$(EXEEXT): $(magnetssolver_OBJECTS) $(magnetssolver_DEPENDENCIES) $(EXTRA_magnetssolver_DEPENDENCIES)
1626 @rm -f magnetssolver$(EXEEXT)
1627 $(AM_V_CCLD)$(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS)
1628./map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1629
1630map$(EXEEXT): $(map_OBJECTS) $(map_DEPENDENCIES) $(EXTRA_map_DEPENDENCIES)
1631 @rm -f map$(EXEEXT)
1632 $(AM_V_CCLD)$(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS)
1633
1634mapsolver$(EXEEXT): $(mapsolver_OBJECTS) $(mapsolver_DEPENDENCIES) $(EXTRA_mapsolver_DEPENDENCIES)
1635 @rm -f mapsolver$(EXEEXT)
1636 $(AM_V_CCLD)$(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS)
1637
1638mineobfusc$(EXEEXT): $(mineobfusc_OBJECTS) $(mineobfusc_DEPENDENCIES) $(EXTRA_mineobfusc_DEPENDENCIES)
1639 @rm -f mineobfusc$(EXEEXT)
1640 $(AM_V_CCLD)$(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS)
1641./mines.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1642
1643mines$(EXEEXT): $(mines_OBJECTS) $(mines_DEPENDENCIES) $(EXTRA_mines_DEPENDENCIES)
1644 @rm -f mines$(EXEEXT)
1645 $(AM_V_CCLD)$(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS)
1646./net.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1647
1648net$(EXEEXT): $(net_OBJECTS) $(net_DEPENDENCIES) $(EXTRA_net_DEPENDENCIES)
1649 @rm -f net$(EXEEXT)
1650 $(AM_V_CCLD)$(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS)
1651./netslide.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1652
1653netslide$(EXEEXT): $(netslide_OBJECTS) $(netslide_DEPENDENCIES) $(EXTRA_netslide_DEPENDENCIES)
1654 @rm -f netslide$(EXEEXT)
1655 $(AM_V_CCLD)$(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS)
1656./nullgame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1657
1658nullgame$(EXEEXT): $(nullgame_OBJECTS) $(nullgame_DEPENDENCIES) $(EXTRA_nullgame_DEPENDENCIES)
1659 @rm -f nullgame$(EXEEXT)
1660 $(AM_V_CCLD)$(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS)
1661./obfusc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1662
1663obfusc$(EXEEXT): $(obfusc_OBJECTS) $(obfusc_DEPENDENCIES) $(EXTRA_obfusc_DEPENDENCIES)
1664 @rm -f obfusc$(EXEEXT)
1665 $(AM_V_CCLD)$(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS)
1666./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1667./palisade.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1668
1669palisade$(EXEEXT): $(palisade_OBJECTS) $(palisade_DEPENDENCIES) $(EXTRA_palisade_DEPENDENCIES)
1670 @rm -f palisade$(EXEEXT)
1671 $(AM_V_CCLD)$(LINK) $(palisade_OBJECTS) $(palisade_LDADD) $(LIBS)
1672./pattern.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1673
1674pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES)
1675 @rm -f pattern$(EXEEXT)
1676 $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS)
1677
1678patternpicture$(EXEEXT): $(patternpicture_OBJECTS) $(patternpicture_DEPENDENCIES) $(EXTRA_patternpicture_DEPENDENCIES)
1679 @rm -f patternpicture$(EXEEXT)
1680 $(AM_V_CCLD)$(LINK) $(patternpicture_OBJECTS) $(patternpicture_LDADD) $(LIBS)
1681
1682patternsolver$(EXEEXT): $(patternsolver_OBJECTS) $(patternsolver_DEPENDENCIES) $(EXTRA_patternsolver_DEPENDENCIES)
1683 @rm -f patternsolver$(EXEEXT)
1684 $(AM_V_CCLD)$(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS)
1685./pearl.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1686./tdq.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1687
1688pearl$(EXEEXT): $(pearl_OBJECTS) $(pearl_DEPENDENCIES) $(EXTRA_pearl_DEPENDENCIES)
1689 @rm -f pearl$(EXEEXT)
1690 $(AM_V_CCLD)$(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS)
1691
1692pearlbench$(EXEEXT): $(pearlbench_OBJECTS) $(pearlbench_DEPENDENCIES) $(EXTRA_pearlbench_DEPENDENCIES)
1693 @rm -f pearlbench$(EXEEXT)
1694 $(AM_V_CCLD)$(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS)
1695./pegs.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1696
1697pegs$(EXEEXT): $(pegs_OBJECTS) $(pegs_DEPENDENCIES) $(EXTRA_pegs_DEPENDENCIES)
1698 @rm -f pegs$(EXEEXT)
1699 $(AM_V_CCLD)$(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS)
1700./range.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1701
1702range$(EXEEXT): $(range_OBJECTS) $(range_DEPENDENCIES) $(EXTRA_range_DEPENDENCIES)
1703 @rm -f range$(EXEEXT)
1704 $(AM_V_CCLD)$(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS)
1705./rect.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1706
1707rect$(EXEEXT): $(rect_OBJECTS) $(rect_DEPENDENCIES) $(EXTRA_rect_DEPENDENCIES)
1708 @rm -f rect$(EXEEXT)
1709 $(AM_V_CCLD)$(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS)
1710./samegame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1711
1712samegame$(EXEEXT): $(samegame_OBJECTS) $(samegame_DEPENDENCIES) $(EXTRA_samegame_DEPENDENCIES)
1713 @rm -f samegame$(EXEEXT)
1714 $(AM_V_CCLD)$(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS)
1715./signpost.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1716
1717signpost$(EXEEXT): $(signpost_OBJECTS) $(signpost_DEPENDENCIES) $(EXTRA_signpost_DEPENDENCIES)
1718 @rm -f signpost$(EXEEXT)
1719 $(AM_V_CCLD)$(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS)
1720
1721signpostsolver$(EXEEXT): $(signpostsolver_OBJECTS) $(signpostsolver_DEPENDENCIES) $(EXTRA_signpostsolver_DEPENDENCIES)
1722 @rm -f signpostsolver$(EXEEXT)
1723 $(AM_V_CCLD)$(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS)
1724./singles.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1725
1726singles$(EXEEXT): $(singles_OBJECTS) $(singles_DEPENDENCIES) $(EXTRA_singles_DEPENDENCIES)
1727 @rm -f singles$(EXEEXT)
1728 $(AM_V_CCLD)$(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS)
1729
1730singlessolver$(EXEEXT): $(singlessolver_OBJECTS) $(singlessolver_DEPENDENCIES) $(EXTRA_singlessolver_DEPENDENCIES)
1731 @rm -f singlessolver$(EXEEXT)
1732 $(AM_V_CCLD)$(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS)
1733./sixteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1734
1735sixteen$(EXEEXT): $(sixteen_OBJECTS) $(sixteen_DEPENDENCIES) $(EXTRA_sixteen_DEPENDENCIES)
1736 @rm -f sixteen$(EXEEXT)
1737 $(AM_V_CCLD)$(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS)
1738./slant.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1739
1740slant$(EXEEXT): $(slant_OBJECTS) $(slant_DEPENDENCIES) $(EXTRA_slant_DEPENDENCIES)
1741 @rm -f slant$(EXEEXT)
1742 $(AM_V_CCLD)$(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS)
1743
1744slantsolver$(EXEEXT): $(slantsolver_OBJECTS) $(slantsolver_DEPENDENCIES) $(EXTRA_slantsolver_DEPENDENCIES)
1745 @rm -f slantsolver$(EXEEXT)
1746 $(AM_V_CCLD)$(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS)
1747./solo.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1748
1749solo$(EXEEXT): $(solo_OBJECTS) $(solo_DEPENDENCIES) $(EXTRA_solo_DEPENDENCIES)
1750 @rm -f solo$(EXEEXT)
1751 $(AM_V_CCLD)$(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS)
1752
1753solosolver$(EXEEXT): $(solosolver_OBJECTS) $(solosolver_DEPENDENCIES) $(EXTRA_solosolver_DEPENDENCIES)
1754 @rm -f solosolver$(EXEEXT)
1755 $(AM_V_CCLD)$(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS)
1756./tents.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1757
1758tents$(EXEEXT): $(tents_OBJECTS) $(tents_DEPENDENCIES) $(EXTRA_tents_DEPENDENCIES)
1759 @rm -f tents$(EXEEXT)
1760 $(AM_V_CCLD)$(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS)
1761
1762tentssolver$(EXEEXT): $(tentssolver_OBJECTS) $(tentssolver_DEPENDENCIES) $(EXTRA_tentssolver_DEPENDENCIES)
1763 @rm -f tentssolver$(EXEEXT)
1764 $(AM_V_CCLD)$(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS)
1765./towers.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1766
1767towers$(EXEEXT): $(towers_OBJECTS) $(towers_DEPENDENCIES) $(EXTRA_towers_DEPENDENCIES)
1768 @rm -f towers$(EXEEXT)
1769 $(AM_V_CCLD)$(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS)
1770
1771towerssolver$(EXEEXT): $(towerssolver_OBJECTS) $(towerssolver_DEPENDENCIES) $(EXTRA_towerssolver_DEPENDENCIES)
1772 @rm -f towerssolver$(EXEEXT)
1773 $(AM_V_CCLD)$(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS)
1774./tracks.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1775
1776tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES) $(EXTRA_tracks_DEPENDENCIES)
1777 @rm -f tracks$(EXEEXT)
1778 $(AM_V_CCLD)$(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS)
1779./twiddle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1780
1781twiddle$(EXEEXT): $(twiddle_OBJECTS) $(twiddle_DEPENDENCIES) $(EXTRA_twiddle_DEPENDENCIES)
1782 @rm -f twiddle$(EXEEXT)
1783 $(AM_V_CCLD)$(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS)
1784./undead.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1785
1786undead$(EXEEXT): $(undead_OBJECTS) $(undead_DEPENDENCIES) $(EXTRA_undead_DEPENDENCIES)
1787 @rm -f undead$(EXEEXT)
1788 $(AM_V_CCLD)$(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS)
1789./unequal.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1790
1791unequal$(EXEEXT): $(unequal_OBJECTS) $(unequal_DEPENDENCIES) $(EXTRA_unequal_DEPENDENCIES)
1792 @rm -f unequal$(EXEEXT)
1793 $(AM_V_CCLD)$(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS)
1794
1795unequalsolver$(EXEEXT): $(unequalsolver_OBJECTS) $(unequalsolver_DEPENDENCIES) $(EXTRA_unequalsolver_DEPENDENCIES)
1796 @rm -f unequalsolver$(EXEEXT)
1797 $(AM_V_CCLD)$(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS)
1798./unruly.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1799
1800unruly$(EXEEXT): $(unruly_OBJECTS) $(unruly_DEPENDENCIES) $(EXTRA_unruly_DEPENDENCIES)
1801 @rm -f unruly$(EXEEXT)
1802 $(AM_V_CCLD)$(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS)
1803
1804unrulysolver$(EXEEXT): $(unrulysolver_OBJECTS) $(unrulysolver_DEPENDENCIES) $(EXTRA_unrulysolver_DEPENDENCIES)
1805 @rm -f unrulysolver$(EXEEXT)
1806 $(AM_V_CCLD)$(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS)
1807./untangle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1808
1809untangle$(EXEEXT): $(untangle_OBJECTS) $(untangle_DEPENDENCIES) $(EXTRA_untangle_DEPENDENCIES)
1810 @rm -f untangle$(EXEEXT)
1811 $(AM_V_CCLD)$(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS)
1812
1813mostlyclean-compile:
1814 -rm -f *.$(OBJEXT)
1815 -rm -f ./*.$(OBJEXT)
1816
1817distclean-compile:
1818 -rm -f *.tab.c
1819
1820include ./$(DEPDIR)/blackbox.Po
1821include ./$(DEPDIR)/bridges.Po
1822include ./$(DEPDIR)/combi.Po
1823include ./$(DEPDIR)/cube.Po
1824include ./$(DEPDIR)/divvy.Po
1825include ./$(DEPDIR)/dominosa.Po
1826include ./$(DEPDIR)/drawing.Po
1827include ./$(DEPDIR)/dsf.Po
1828include ./$(DEPDIR)/fifteen.Po
1829include ./$(DEPDIR)/filling.Po
1830include ./$(DEPDIR)/findloop.Po
1831include ./$(DEPDIR)/flip.Po
1832include ./$(DEPDIR)/flood.Po
1833include ./$(DEPDIR)/galaxies.Po
1834include ./$(DEPDIR)/grid.Po
1835include ./$(DEPDIR)/gtk.Po
1836include ./$(DEPDIR)/guess.Po
1837include ./$(DEPDIR)/inertia.Po
1838include ./$(DEPDIR)/keen.Po
1839include ./$(DEPDIR)/latin.Po
1840include ./$(DEPDIR)/laydomino.Po
1841include ./$(DEPDIR)/libfifteen2_a-fifteen.Po
1842include ./$(DEPDIR)/libfilling2_a-filling.Po
1843include ./$(DEPDIR)/libgalaxie2_a-galaxies.Po
1844include ./$(DEPDIR)/libgalaxie4_a-galaxies.Po
1845include ./$(DEPDIR)/libkeen2_a-keen.Po
1846include ./$(DEPDIR)/liblatin6_a-latin.Po
1847include ./$(DEPDIR)/liblatin8_a-latin.Po
1848include ./$(DEPDIR)/liblightup2_a-lightup.Po
1849include ./$(DEPDIR)/libloopy2_a-loopy.Po
1850include ./$(DEPDIR)/libmagnets2_a-magnets.Po
1851include ./$(DEPDIR)/libmap2_a-map.Po
1852include ./$(DEPDIR)/libmines2_a-mines.Po
1853include ./$(DEPDIR)/libpattern2_a-pattern.Po
1854include ./$(DEPDIR)/libpattern4_a-pattern.Po
1855include ./$(DEPDIR)/libpearl2_a-pearl.Po
1856include ./$(DEPDIR)/libsignpos2_a-signpost.Po
1857include ./$(DEPDIR)/libsingles3_a-singles.Po
1858include ./$(DEPDIR)/libslant2_a-slant.Po
1859include ./$(DEPDIR)/libsolo2_a-solo.Po
1860include ./$(DEPDIR)/libtents3_a-tents.Po
1861include ./$(DEPDIR)/libtowers2_a-towers.Po
1862include ./$(DEPDIR)/libunequal2_a-unequal.Po
1863include ./$(DEPDIR)/libunruly2_a-unruly.Po
1864include ./$(DEPDIR)/lightup.Po
1865include ./$(DEPDIR)/loopgen.Po
1866include ./$(DEPDIR)/loopy.Po
1867include ./$(DEPDIR)/magnets.Po
1868include ./$(DEPDIR)/malloc.Po
1869include ./$(DEPDIR)/map.Po
1870include ./$(DEPDIR)/maxflow.Po
1871include ./$(DEPDIR)/midend.Po
1872include ./$(DEPDIR)/mines.Po
1873include ./$(DEPDIR)/misc.Po
1874include ./$(DEPDIR)/net.Po
1875include ./$(DEPDIR)/netslide.Po
1876include ./$(DEPDIR)/no-icon.Po
1877include ./$(DEPDIR)/nullfe.Po
1878include ./$(DEPDIR)/nullgame.Po
1879include ./$(DEPDIR)/obfusc.Po
1880include ./$(DEPDIR)/palisade.Po
1881include ./$(DEPDIR)/pattern.Po
1882include ./$(DEPDIR)/pearl.Po
1883include ./$(DEPDIR)/pegs.Po
1884include ./$(DEPDIR)/penrose.Po
1885include ./$(DEPDIR)/printing.Po
1886include ./$(DEPDIR)/ps.Po
1887include ./$(DEPDIR)/random.Po
1888include ./$(DEPDIR)/range.Po
1889include ./$(DEPDIR)/rect.Po
1890include ./$(DEPDIR)/samegame.Po
1891include ./$(DEPDIR)/signpost.Po
1892include ./$(DEPDIR)/singles.Po
1893include ./$(DEPDIR)/sixteen.Po
1894include ./$(DEPDIR)/slant.Po
1895include ./$(DEPDIR)/solo.Po
1896include ./$(DEPDIR)/tdq.Po
1897include ./$(DEPDIR)/tents.Po
1898include ./$(DEPDIR)/towers.Po
1899include ./$(DEPDIR)/tracks.Po
1900include ./$(DEPDIR)/tree234.Po
1901include ./$(DEPDIR)/twiddle.Po
1902include ./$(DEPDIR)/undead.Po
1903include ./$(DEPDIR)/unequal.Po
1904include ./$(DEPDIR)/unruly.Po
1905include ./$(DEPDIR)/untangle.Po
1906include ./$(DEPDIR)/version.Po
1907
1908.c.o:
1909 $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
1910 $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
1911 $(am__mv) $$depbase.Tpo $$depbase.Po
1912# $(AM_V_CC)source='$<' object='$@' libtool=no \
1913# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1914# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
1915
1916.c.obj:
1917 $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
1918 $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
1919 $(am__mv) $$depbase.Tpo $$depbase.Po
1920# $(AM_V_CC)source='$<' object='$@' libtool=no \
1921# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1922# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
1923
1924./libfifteen2_a-fifteen.o: ./fifteen.c
1925 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.o -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c
1926 $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
1927# $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.o' libtool=no \
1928# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1929# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c
1930
1931./libfifteen2_a-fifteen.obj: ./fifteen.c
1932 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.obj -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi`
1933 $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
1934# $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.obj' libtool=no \
1935# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1936# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi`
1937
1938./libfilling2_a-filling.o: ./filling.c
1939 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.o -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c
1940 $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
1941# $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.o' libtool=no \
1942# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1943# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c
1944
1945./libfilling2_a-filling.obj: ./filling.c
1946 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.obj -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi`
1947 $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
1948# $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no \
1949# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1950# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi`
1951
1952./libgalaxie2_a-galaxies.o: ./galaxies.c
1953 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1954 $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
1955# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no \
1956# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1957# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1958
1959./libgalaxie2_a-galaxies.obj: ./galaxies.c
1960 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1961 $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
1962# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no \
1963# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1964# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1965
1966./libgalaxie4_a-galaxies.o: ./galaxies.c
1967 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1968 $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
1969# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no \
1970# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1971# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1972
1973./libgalaxie4_a-galaxies.obj: ./galaxies.c
1974 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1975 $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
1976# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no \
1977# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1978# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1979
1980./libkeen2_a-keen.o: ./keen.c
1981 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.o -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c
1982 $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
1983# $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.o' libtool=no \
1984# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1985# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c
1986
1987./libkeen2_a-keen.obj: ./keen.c
1988 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.obj -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi`
1989 $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
1990# $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no \
1991# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1992# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi`
1993
1994./liblatin6_a-latin.o: ./latin.c
1995 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
1996 $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
1997# $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.o' libtool=no \
1998# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
1999# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
2000
2001./liblatin6_a-latin.obj: ./latin.c
2002 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2003 $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
2004# $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no \
2005# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2006# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2007
2008./liblatin8_a-latin.o: ./latin.c
2009 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
2010 $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
2011# $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.o' libtool=no \
2012# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2013# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
2014
2015./liblatin8_a-latin.obj: ./latin.c
2016 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2017 $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
2018# $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no \
2019# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2020# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2021
2022./liblightup2_a-lightup.o: ./lightup.c
2023 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.o -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c
2024 $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
2025# $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no \
2026# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2027# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c
2028
2029./liblightup2_a-lightup.obj: ./lightup.c
2030 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.obj -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi`
2031 $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
2032# $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no \
2033# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2034# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi`
2035
2036./libloopy2_a-loopy.o: ./loopy.c
2037 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.o -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c
2038 $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
2039# $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no \
2040# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2041# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c
2042
2043./libloopy2_a-loopy.obj: ./loopy.c
2044 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.obj -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi`
2045 $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
2046# $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no \
2047# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2048# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi`
2049
2050./libmagnets2_a-magnets.o: ./magnets.c
2051 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.o -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c
2052 $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
2053# $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no \
2054# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2055# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c
2056
2057./libmagnets2_a-magnets.obj: ./magnets.c
2058 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.obj -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi`
2059 $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
2060# $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no \
2061# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2062# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi`
2063
2064./libmap2_a-map.o: ./map.c
2065 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.o -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c
2066 $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
2067# $(AM_V_CC)source='./map.c' object='./libmap2_a-map.o' libtool=no \
2068# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2069# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c
2070
2071./libmap2_a-map.obj: ./map.c
2072 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.obj -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi`
2073 $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
2074# $(AM_V_CC)source='./map.c' object='./libmap2_a-map.obj' libtool=no \
2075# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2076# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi`
2077
2078./libmines2_a-mines.o: ./mines.c
2079 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.o -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c
2080 $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
2081# $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.o' libtool=no \
2082# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2083# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c
2084
2085./libmines2_a-mines.obj: ./mines.c
2086 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.obj -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi`
2087 $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
2088# $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.obj' libtool=no \
2089# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2090# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi`
2091
2092./libpattern2_a-pattern.o: ./pattern.c
2093 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2094 $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
2095# $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no \
2096# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2097# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2098
2099./libpattern2_a-pattern.obj: ./pattern.c
2100 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2101 $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
2102# $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no \
2103# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2104# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2105
2106./libpattern4_a-pattern.o: ./pattern.c
2107 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2108 $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
2109# $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.o' libtool=no \
2110# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2111# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2112
2113./libpattern4_a-pattern.obj: ./pattern.c
2114 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2115 $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
2116# $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.obj' libtool=no \
2117# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2118# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2119
2120./libpearl2_a-pearl.o: ./pearl.c
2121 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.o -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c
2122 $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
2123# $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no \
2124# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2125# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c
2126
2127./libpearl2_a-pearl.obj: ./pearl.c
2128 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.obj -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi`
2129 $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
2130# $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no \
2131# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2132# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi`
2133
2134./libsignpos2_a-signpost.o: ./signpost.c
2135 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.o -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c
2136 $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
2137# $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no \
2138# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2139# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c
2140
2141./libsignpos2_a-signpost.obj: ./signpost.c
2142 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.obj -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi`
2143 $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
2144# $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no \
2145# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2146# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi`
2147
2148./libsingles3_a-singles.o: ./singles.c
2149 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.o -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c
2150 $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
2151# $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.o' libtool=no \
2152# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2153# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c
2154
2155./libsingles3_a-singles.obj: ./singles.c
2156 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.obj -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi`
2157 $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
2158# $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no \
2159# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2160# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi`
2161
2162./libslant2_a-slant.o: ./slant.c
2163 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.o -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c
2164 $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
2165# $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.o' libtool=no \
2166# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2167# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c
2168
2169./libslant2_a-slant.obj: ./slant.c
2170 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.obj -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi`
2171 $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
2172# $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.obj' libtool=no \
2173# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2174# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi`
2175
2176./libsolo2_a-solo.o: ./solo.c
2177 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.o -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c
2178 $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
2179# $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.o' libtool=no \
2180# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2181# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c
2182
2183./libsolo2_a-solo.obj: ./solo.c
2184 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.obj -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi`
2185 $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
2186# $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no \
2187# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2188# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi`
2189
2190./libtents3_a-tents.o: ./tents.c
2191 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.o -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c
2192 $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
2193# $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.o' libtool=no \
2194# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2195# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c
2196
2197./libtents3_a-tents.obj: ./tents.c
2198 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.obj -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi`
2199 $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
2200# $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.obj' libtool=no \
2201# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2202# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi`
2203
2204./libtowers2_a-towers.o: ./towers.c
2205 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.o -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c
2206 $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
2207# $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.o' libtool=no \
2208# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2209# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c
2210
2211./libtowers2_a-towers.obj: ./towers.c
2212 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.obj -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi`
2213 $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
2214# $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no \
2215# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2216# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi`
2217
2218./libunequal2_a-unequal.o: ./unequal.c
2219 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.o -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c
2220 $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
2221# $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no \
2222# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2223# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c
2224
2225./libunequal2_a-unequal.obj: ./unequal.c
2226 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.obj -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi`
2227 $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
2228# $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no \
2229# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2230# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi`
2231
2232./libunruly2_a-unruly.o: ./unruly.c
2233 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.o -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c
2234 $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
2235# $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no \
2236# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2237# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c
2238
2239./libunruly2_a-unruly.obj: ./unruly.c
2240 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.obj -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi`
2241 $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
2242# $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no \
2243# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
2244# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi`
2245
2246ID: $(am__tagged_files)
2247 $(am__define_uniq_tagged_files); mkid -fID $$unique
2248tags: tags-am
2249TAGS: tags
2250
2251tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
2252 set x; \
2253 here=`pwd`; \
2254 $(am__define_uniq_tagged_files); \
2255 shift; \
2256 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
2257 test -n "$$unique" || unique=$$empty_fix; \
2258 if test $$# -gt 0; then \
2259 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
2260 "$$@" $$unique; \
2261 else \
2262 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
2263 $$unique; \
2264 fi; \
2265 fi
2266ctags: ctags-am
2267
2268CTAGS: ctags
2269ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
2270 $(am__define_uniq_tagged_files); \
2271 test -z "$(CTAGS_ARGS)$$unique" \
2272 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
2273 $$unique
2274
2275GTAGS:
2276 here=`$(am__cd) $(top_builddir) && pwd` \
2277 && $(am__cd) $(top_srcdir) \
2278 && gtags -i $(GTAGS_ARGS) "$$here"
2279cscope: cscope.files
2280 test ! -s cscope.files \
2281 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
2282clean-cscope:
2283 -rm -f cscope.files
2284cscope.files: clean-cscope cscopelist
2285cscopelist: cscopelist-am
2286
2287cscopelist-am: $(am__tagged_files)
2288 list='$(am__tagged_files)'; \
2289 case "$(srcdir)" in \
2290 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
2291 *) sdir=$(subdir)/$(srcdir) ;; \
2292 esac; \
2293 for i in $$list; do \
2294 if test -f "$$i"; then \
2295 echo "$(subdir)/$$i"; \
2296 else \
2297 echo "$$sdir/$$i"; \
2298 fi; \
2299 done >> $(top_builddir)/cscope.files
2300
2301distclean-tags:
2302 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
2303 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
2304
2305distdir: $(DISTFILES)
2306 $(am__remove_distdir)
2307 test -d "$(distdir)" || mkdir "$(distdir)"
2308 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
2309 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
2310 list='$(DISTFILES)'; \
2311 dist_files=`for file in $$list; do echo $$file; done | \
2312 sed -e "s|^$$srcdirstrip/||;t" \
2313 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
2314 case $$dist_files in \
2315 */*) $(MKDIR_P) `echo "$$dist_files" | \
2316 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
2317 sort -u` ;; \
2318 esac; \
2319 for file in $$dist_files; do \
2320 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
2321 if test -d $$d/$$file; then \
2322 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
2323 if test -d "$(distdir)/$$file"; then \
2324 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
2325 fi; \
2326 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
2327 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
2328 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
2329 fi; \
2330 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
2331 else \
2332 test -f "$(distdir)/$$file" \
2333 || cp -p $$d/$$file "$(distdir)/$$file" \
2334 || exit 1; \
2335 fi; \
2336 done
2337 -test -n "$(am__skip_mode_fix)" \
2338 || find "$(distdir)" -type d ! -perm -755 \
2339 -exec chmod u+rwx,go+rx {} \; -o \
2340 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
2341 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
2342 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
2343 || chmod -R a+r "$(distdir)"
2344dist-gzip: distdir
2345 tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
2346 $(am__post_remove_distdir)
2347
2348dist-bzip2: distdir
2349 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
2350 $(am__post_remove_distdir)
2351
2352dist-lzip: distdir
2353 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
2354 $(am__post_remove_distdir)
2355
2356dist-xz: distdir
2357 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
2358 $(am__post_remove_distdir)
2359
2360dist-tarZ: distdir
2361 @echo WARNING: "Support for distribution archives compressed with" \
2362 "legacy program 'compress' is deprecated." >&2
2363 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
2364 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
2365 $(am__post_remove_distdir)
2366
2367dist-shar: distdir
2368 @echo WARNING: "Support for shar distribution archives is" \
2369 "deprecated." >&2
2370 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
2371 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
2372 $(am__post_remove_distdir)
2373
2374dist-zip: distdir
2375 -rm -f $(distdir).zip
2376 zip -rq $(distdir).zip $(distdir)
2377 $(am__post_remove_distdir)
2378
2379dist dist-all:
2380 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
2381 $(am__post_remove_distdir)
2382
2383# This target untars the dist file and tries a VPATH configuration. Then
2384# it guarantees that the distribution is self-contained by making another
2385# tarfile.
2386distcheck: dist
2387 case '$(DIST_ARCHIVES)' in \
2388 *.tar.gz*) \
2389 eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
2390 *.tar.bz2*) \
2391 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
2392 *.tar.lz*) \
2393 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
2394 *.tar.xz*) \
2395 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
2396 *.tar.Z*) \
2397 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
2398 *.shar.gz*) \
2399 eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
2400 *.zip*) \
2401 unzip $(distdir).zip ;;\
2402 esac
2403 chmod -R a-w $(distdir)
2404 chmod u+w $(distdir)
2405 mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
2406 chmod a-w $(distdir)
2407 test -d $(distdir)/_build || exit 0; \
2408 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
2409 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
2410 && am__cwd=`pwd` \
2411 && $(am__cd) $(distdir)/_build/sub \
2412 && ../../configure \
2413 $(AM_DISTCHECK_CONFIGURE_FLAGS) \
2414 $(DISTCHECK_CONFIGURE_FLAGS) \
2415 --srcdir=../.. --prefix="$$dc_install_base" \
2416 && $(MAKE) $(AM_MAKEFLAGS) \
2417 && $(MAKE) $(AM_MAKEFLAGS) dvi \
2418 && $(MAKE) $(AM_MAKEFLAGS) check \
2419 && $(MAKE) $(AM_MAKEFLAGS) install \
2420 && $(MAKE) $(AM_MAKEFLAGS) installcheck \
2421 && $(MAKE) $(AM_MAKEFLAGS) uninstall \
2422 && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
2423 distuninstallcheck \
2424 && chmod -R a-w "$$dc_install_base" \
2425 && ({ \
2426 (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
2427 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
2428 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
2429 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
2430 distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
2431 } || { rm -rf "$$dc_destdir"; exit 1; }) \
2432 && rm -rf "$$dc_destdir" \
2433 && $(MAKE) $(AM_MAKEFLAGS) dist \
2434 && rm -rf $(DIST_ARCHIVES) \
2435 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
2436 && cd "$$am__cwd" \
2437 || exit 1
2438 $(am__post_remove_distdir)
2439 @(echo "$(distdir) archives ready for distribution: "; \
2440 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
2441 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
2442distuninstallcheck:
2443 @test -n '$(distuninstallcheck_dir)' || { \
2444 echo 'ERROR: trying to run $@ with an empty' \
2445 '$$(distuninstallcheck_dir)' >&2; \
2446 exit 1; \
2447 }; \
2448 $(am__cd) '$(distuninstallcheck_dir)' || { \
2449 echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
2450 exit 1; \
2451 }; \
2452 test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
2453 || { echo "ERROR: files left after uninstall:" ; \
2454 if test -n "$(DESTDIR)"; then \
2455 echo " (check DESTDIR support)"; \
2456 fi ; \
2457 $(distuninstallcheck_listfiles) ; \
2458 exit 1; } >&2
2459distcleancheck: distclean
2460 @if test '$(srcdir)' = . ; then \
2461 echo "ERROR: distcleancheck can only run from a VPATH build" ; \
2462 exit 1 ; \
2463 fi
2464 @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
2465 || { echo "ERROR: files left in build directory after distclean:" ; \
2466 $(distcleancheck_listfiles) ; \
2467 exit 1; } >&2
2468check-am: all-am
2469check: check-am
2470all-am: Makefile $(LIBRARIES) $(PROGRAMS)
2471installdirs:
2472 for dir in "$(DESTDIR)$(bindir)"; do \
2473 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
2474 done
2475install: install-am
2476install-exec: install-exec-am
2477install-data: install-data-am
2478uninstall: uninstall-am
2479
2480install-am: all-am
2481 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
2482
2483installcheck: installcheck-am
2484install-strip:
2485 if test -z '$(STRIP)'; then \
2486 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
2487 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
2488 install; \
2489 else \
2490 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
2491 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
2492 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
2493 fi
2494mostlyclean-generic:
2495
2496clean-generic:
2497
2498distclean-generic:
2499 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
2500 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
2501 -rm -f ./$(am__dirstamp)
2502 -test -z "$(DEPDIR)/$(am__dirstamp)" || rm -f $(DEPDIR)/$(am__dirstamp)
2503
2504maintainer-clean-generic:
2505 @echo "This command is intended for maintainers to use"
2506 @echo "it deletes files that may require special tools to rebuild."
2507clean: clean-am
2508
2509clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
2510 clean-noinstPROGRAMS mostlyclean-am
2511
2512distclean: distclean-am
2513 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
2514 -rm -rf ./$(DEPDIR)
2515 -rm -f Makefile
2516distclean-am: clean-am distclean-compile distclean-generic \
2517 distclean-tags
2518
2519dvi: dvi-am
2520
2521dvi-am:
2522
2523html: html-am
2524
2525html-am:
2526
2527info: info-am
2528
2529info-am:
2530
2531install-data-am:
2532
2533install-dvi: install-dvi-am
2534
2535install-dvi-am:
2536
2537install-exec-am: install-binPROGRAMS
2538
2539install-html: install-html-am
2540
2541install-html-am:
2542
2543install-info: install-info-am
2544
2545install-info-am:
2546
2547install-man:
2548
2549install-pdf: install-pdf-am
2550
2551install-pdf-am:
2552
2553install-ps: install-ps-am
2554
2555install-ps-am:
2556
2557installcheck-am:
2558
2559maintainer-clean: maintainer-clean-am
2560 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
2561 -rm -rf $(top_srcdir)/autom4te.cache
2562 -rm -rf ./$(DEPDIR)
2563 -rm -f Makefile
2564maintainer-clean-am: distclean-am maintainer-clean-generic
2565
2566mostlyclean: mostlyclean-am
2567
2568mostlyclean-am: mostlyclean-compile mostlyclean-generic
2569
2570pdf: pdf-am
2571
2572pdf-am:
2573
2574ps: ps-am
2575
2576ps-am:
2577
2578uninstall-am: uninstall-binPROGRAMS
2579
2580.MAKE: install-am install-strip
2581
2582.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
2583 clean-binPROGRAMS clean-cscope clean-generic \
2584 clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
2585 cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
2586 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
2587 distcheck distclean distclean-compile distclean-generic \
2588 distclean-tags distcleancheck distdir distuninstallcheck dvi \
2589 dvi-am html html-am info info-am install install-am \
2590 install-binPROGRAMS install-data install-data-am install-dvi \
2591 install-dvi-am install-exec install-exec-am install-html \
2592 install-html-am install-info install-info-am install-man \
2593 install-pdf install-pdf-am install-ps install-ps-am \
2594 install-strip installcheck installcheck-am installdirs \
2595 maintainer-clean maintainer-clean-generic mostlyclean \
2596 mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
2597 tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
2598
2599.PRECIOUS: Makefile
2600
2601test: benchmark.html benchmark.txt
2602
2603benchmark.html: benchmark.txt benchmark.pl
2604 ./benchmark.pl benchmark.txt > $@
2605
2606benchmark.txt: benchmark.sh $(GAMES)
2607 ./benchmark.sh > $@
2608
2609# Tell versions [3.59,3.63) of GNU make to not export all variables.
2610# Otherwise a system limit (for SysV at least) may be exceeded.
2611.NOEXPORT:
diff --git a/apps/plugins/puzzles/src/Makefile.am b/apps/plugins/puzzles/src/Makefile.am
new file mode 100644
index 0000000000..6e03ed49a5
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.am
@@ -0,0 +1,446 @@
1# Makefile.am for puzzles under Unix with Autoconf/Automake.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6GAMES =
7noinst_PROGRAMS = blackbox bridges cube dominosa fifteen fifteensolver \
8 filling fillingsolver flip flood galaxies galaxiespicture \
9 galaxiessolver guess inertia keen keensolver latincheck \
10 lightup lightupsolver loopy loopysolver magnets \
11 magnetssolver map mapsolver mineobfusc mines net netslide \
12 nullgame obfusc palisade pattern patternpicture \
13 patternsolver pearl pearlbench pegs range rect samegame \
14 signpost signpostsolver singles singlessolver sixteen slant \
15 slantsolver solo solosolver tents tentssolver towers \
16 towerssolver tracks twiddle undead unequal unequalsolver \
17 unruly unrulysolver untangle
18AUTOMAKE_OPTIONS = subdir-objects
19
20allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \
21 ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \
22 ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \
23 ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \
24 ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \
25 ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \
26 ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \
27 ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \
28 ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \
29 ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
30 ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \
31 ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \
32 ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \
33 ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \
34 ./untangle.c ./version.c ./version.h ./windows.c
35
36AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/
37AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS)
38blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \
39 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
40 ./random.c ./version.c ./version.h
41blackbox_LDADD = $(GTK_LIBS) -lm
42
43bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \
44 ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \
45 ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
46bridges_LDADD = $(GTK_LIBS) -lm
47
48cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
49 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
50 ./version.c ./version.h
51cube_LDADD = $(GTK_LIBS) -lm
52
53dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \
54 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
55 ./puzzles.h ./random.c ./version.c ./version.h
56dominosa_LDADD = $(GTK_LIBS) -lm
57
58fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \
59 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
60 ./random.c ./version.c ./version.h
61fifteen_LDADD = $(GTK_LIBS) -lm
62
63fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
64 ./random.c
65fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm
66
67filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \
68 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
69 ./puzzles.h ./random.c ./version.c ./version.h
70filling_LDADD = $(GTK_LIBS) -lm
71
72fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
73 ./random.c
74fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm
75
76flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
77 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
78 ./tree234.c ./tree234.h ./version.c ./version.h
79flip_LDADD = $(GTK_LIBS) -lm
80
81flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
82 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
83 ./version.c ./version.h
84flood_LDADD = $(GTK_LIBS) -lm
85
86galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \
87 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
88 ./puzzles.h ./random.c ./version.c ./version.h
89galaxies_LDADD = $(GTK_LIBS) -lm
90
91galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
92 ./random.c
93galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm
94
95galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
96 ./random.c
97galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm
98
99guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \
100 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
101 ./version.c ./version.h
102guess_LDADD = $(GTK_LIBS) -lm
103
104inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \
105 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
106 ./random.c ./version.c ./version.h
107inertia_LDADD = $(GTK_LIBS) -lm
108
109keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \
110 ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \
111 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
112 ./tree234.c ./tree234.h ./version.c ./version.h
113keen_LDADD = $(GTK_LIBS) -lm
114
115keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
116 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
117keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm
118
119latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \
120 ./puzzles.h ./random.c ./tree234.c ./tree234.h
121latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm
122
123lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \
124 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
125 ./puzzles.h ./random.c ./version.c ./version.h
126lightup_LDADD = $(GTK_LIBS) -lm
127
128lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
129 ./random.c
130lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm
131
132loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
133 ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \
134 ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
135 ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \
136 ./version.h
137loopy_LDADD = $(GTK_LIBS) -lm
138
139loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
140 ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
141 ./puzzles.h ./random.c ./tree234.c ./tree234.h
142loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm
143
144magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \
145 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
146 ./puzzles.h ./random.c ./version.c ./version.h
147magnets_LDADD = $(GTK_LIBS) -lm
148
149magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \
150 ./puzzles.h ./random.c
151magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm
152
153map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \
154 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
155 ./random.c ./version.c ./version.h
156map_LDADD = $(GTK_LIBS) -lm
157
158mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
159 ./random.c
160mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm
161
162mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \
163 ./tree234.c ./tree234.h
164mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm
165
166mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \
167 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
168 ./tree234.c ./tree234.h ./version.c ./version.h
169mines_LDADD = $(GTK_LIBS) -lm
170
171net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \
172 ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
173 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
174net_LDADD = $(GTK_LIBS) -lm
175
176netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
177 ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
178 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
179netslide_LDADD = $(GTK_LIBS) -lm
180
181nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
182 ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \
183 ./random.c ./version.c ./version.h
184nullgame_LDADD = $(GTK_LIBS) -lm
185
186obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \
187 ./random.c
188obfusc_LDADD = -lm
189
190palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \
191 ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \
192 ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
193palisade_LDADD = $(GTK_LIBS) -lm
194
195pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
196 ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \
197 ./random.c ./version.c ./version.h
198pattern_LDADD = $(GTK_LIBS) -lm
199
200patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
201 ./random.c
202patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm
203
204patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
205 ./random.c
206patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm
207
208pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
209 ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \
210 ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
211 ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \
212 ./version.c ./version.h
213pearl_LDADD = $(GTK_LIBS) -lm
214
215pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
216 ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
217 ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h
218pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm
219
220pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
221 ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \
222 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
223pegs_LDADD = $(GTK_LIBS) -lm
224
225range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
226 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
227 ./range.c ./version.c ./version.h
228range_LDADD = $(GTK_LIBS) -lm
229
230rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
231 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
232 ./rect.c ./version.c ./version.h
233rect_LDADD = $(GTK_LIBS) -lm
234
235samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
236 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
237 ./samegame.c ./version.c ./version.h
238samegame_LDADD = $(GTK_LIBS) -lm
239
240signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
241 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
242 ./random.c ./signpost.c ./version.c ./version.h
243signpost_LDADD = $(GTK_LIBS) -lm
244
245signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
246 ./random.c
247signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm
248
249singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
250 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
251 ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \
252 ./tree234.c ./tree234.h ./version.c ./version.h
253singles_LDADD = $(GTK_LIBS) -lm
254
255singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \
256 ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \
257 ./tree234.c ./tree234.h
258singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm
259
260sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
261 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
262 ./sixteen.c ./version.c ./version.h
263sixteen_LDADD = $(GTK_LIBS) -lm
264
265slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
266 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
267 ./puzzles.h ./random.c ./slant.c ./version.c ./version.h
268slant_LDADD = $(GTK_LIBS) -lm
269
270slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \
271 ./puzzles.h ./random.c
272slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm
273
274solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
275 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
276 ./random.c ./solo.c ./version.c ./version.h
277solo_LDADD = $(GTK_LIBS) -lm
278
279solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \
280 ./puzzles.h ./random.c
281solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm
282
283tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \
284 ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \
285 ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \
286 ./version.h
287tents_LDADD = $(GTK_LIBS) -lm
288
289tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
290 ./nullfe.c ./puzzles.h ./random.c
291tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm
292
293towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
294 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
295 ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \
296 ./tree234.c ./tree234.h ./version.c ./version.h
297towers_LDADD = $(GTK_LIBS) -lm
298
299towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
300 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
301towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
302 libtowers2_a-towers.$(OBJEXT) -lm
303
304tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
305 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
306 ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h
307tracks_LDADD = $(GTK_LIBS) -lm
308
309twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
310 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
311 ./twiddle.c ./version.c ./version.h
312twiddle_LDADD = $(GTK_LIBS) -lm
313
314undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
315 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
316 ./undead.c ./version.c ./version.h
317undead_LDADD = $(GTK_LIBS) -lm
318
319unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
320 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
321 ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \
322 ./tree234.h ./unequal.c ./version.c ./version.h
323unequal_LDADD = $(GTK_LIBS) -lm
324
325unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
326 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
327unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
328 libunequal2_a-unequal.$(OBJEXT) -lm
329
330unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
331 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
332 ./unruly.c ./version.c ./version.h
333unruly_LDADD = $(GTK_LIBS) -lm
334
335unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c
336unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm
337
338untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
339 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
340 ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h
341untangle_LDADD = $(GTK_LIBS) -lm
342
343libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h
344libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
345libfilling2_a_SOURCES = ./filling.c ./puzzles.h
346libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
347libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h
348libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
349libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h
350libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
351 -DSTANDALONE_PICTURE_GENERATOR
352libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h
353libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
354liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
355 ./latin.h
356liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
357liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
358 ./latin.h
359liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST
360liblightup2_a_SOURCES = ./lightup.c ./puzzles.h
361liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
362libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
363libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
364libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h
365libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
366libmap2_a_SOURCES = ./map.c ./puzzles.h
367libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
368libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h
369libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR
370libpattern2_a_SOURCES = ./pattern.c ./puzzles.h
371libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
372libpattern4_a_SOURCES = ./pattern.c ./puzzles.h
373libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
374 -DSTANDALONE_PICTURE_GENERATOR
375libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
376libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
377libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h
378libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
379libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h
380libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
381libslant2_a_SOURCES = ./slant.c ./puzzles.h
382libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
383libsolo2_a_SOURCES = ./solo.c ./puzzles.h
384libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
385libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h
386libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
387libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h
388libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
389libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h
390libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
391libunruly2_a_SOURCES = ./unruly.c ./puzzles.h
392libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
393noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \
394 libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \
395 libmagnets2.a libmap2.a libmines2.a libpattern2.a \
396 libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \
397 libslant2.a libsolo2.a libtents3.a libtowers2.a \
398 libunequal2.a libunruly2.a
399
400GAMES += blackbox
401GAMES += bridges
402GAMES += cube
403GAMES += dominosa
404GAMES += fifteen
405GAMES += filling
406GAMES += flip
407GAMES += flood
408GAMES += galaxies
409GAMES += guess
410GAMES += inertia
411GAMES += keen
412GAMES += lightup
413GAMES += loopy
414GAMES += magnets
415GAMES += map
416GAMES += mines
417GAMES += net
418GAMES += netslide
419GAMES += palisade
420GAMES += pattern
421GAMES += pearl
422GAMES += pegs
423GAMES += range
424GAMES += rect
425GAMES += samegame
426GAMES += signpost
427GAMES += singles
428GAMES += sixteen
429GAMES += slant
430GAMES += solo
431GAMES += tents
432GAMES += towers
433GAMES += tracks
434GAMES += twiddle
435GAMES += undead
436GAMES += unequal
437GAMES += unruly
438GAMES += untangle
439bin_PROGRAMS = $(GAMES)
440test: benchmark.html benchmark.txt
441
442benchmark.html: benchmark.txt benchmark.pl
443 ./benchmark.pl benchmark.txt > $@
444
445benchmark.txt: benchmark.sh $(GAMES)
446 ./benchmark.sh > $@
diff --git a/apps/plugins/puzzles/src/Makefile.clangcl b/apps/plugins/puzzles/src/Makefile.clangcl
new file mode 100644
index 0000000000..bba00b4ab1
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.clangcl
@@ -0,0 +1,1415 @@
1# Makefile for cross-compiling puzzles using clang-cl, lld-link,
2# and MinGW's windres, using GNU make on Linux.
3#
4# This file was created by `mkfiles.pl' from the `Recipe' file.
5# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
6
7CCCMD = clang-cl
8ifeq ($(Platform),x64)
9CCTARGET = x86_64-pc-windows-msvc18.0.0
10RCCMD = x86_64-w64-mingw32-windres
11else
12CCTARGET = i386-pc-windows-msvc18.0.0
13RCCMD = i686-w64-mingw32-windres
14endif
15CC = $(CCCMD) --target=$(CCTARGET)
16RC = $(RCCMD) --preprocessor=$(CCCMD) --preprocessor-arg=/TC \
17 --preprocessor-arg=/E
18LD = lld-link
19
20# C compilation flags
21CFLAGS = /nologo /W3 /O1 -I./ -Iicons/ /D_WINDOWS /D_WIN32_WINDOWS=0x401 \
22 /DWINVER=0x401 /D_CRT_SECURE_NO_WARNINGS
23LFLAGS = /incremental:no /dynamicbase /nxcompat
24RCFLAGS = -I./ -Iicons/ -DWIN32 -D_WIN32 -DWINVER=0x0400 --define \
25 MINGW32_FIX=1
26
27
28all: $(BUILDDIR)blackbox.exe $(BUILDDIR)bridges.exe $(BUILDDIR)cube.exe \
29 $(BUILDDIR)dominosa.exe $(BUILDDIR)fifteen.exe \
30 $(BUILDDIR)fifteensolver.exe $(BUILDDIR)filling.exe \
31 $(BUILDDIR)fillingsolver.exe $(BUILDDIR)flip.exe \
32 $(BUILDDIR)flood.exe $(BUILDDIR)galaxies.exe \
33 $(BUILDDIR)galaxiespicture.exe $(BUILDDIR)galaxiessolver.exe \
34 $(BUILDDIR)guess.exe $(BUILDDIR)inertia.exe \
35 $(BUILDDIR)keen.exe $(BUILDDIR)keensolver.exe \
36 $(BUILDDIR)latincheck.exe $(BUILDDIR)lightup.exe \
37 $(BUILDDIR)lightupsolver.exe $(BUILDDIR)loopy.exe \
38 $(BUILDDIR)loopysolver.exe $(BUILDDIR)magnets.exe \
39 $(BUILDDIR)magnetssolver.exe $(BUILDDIR)map.exe \
40 $(BUILDDIR)mapsolver.exe $(BUILDDIR)mineobfusc.exe \
41 $(BUILDDIR)mines.exe $(BUILDDIR)netgame.exe \
42 $(BUILDDIR)netslide.exe $(BUILDDIR)nullgame.exe \
43 $(BUILDDIR)palisade.exe $(BUILDDIR)pattern.exe \
44 $(BUILDDIR)patternpicture.exe $(BUILDDIR)patternsolver.exe \
45 $(BUILDDIR)pearl.exe $(BUILDDIR)pearlbench.exe \
46 $(BUILDDIR)pegs.exe $(BUILDDIR)puzzles.exe \
47 $(BUILDDIR)range.exe $(BUILDDIR)rect.exe \
48 $(BUILDDIR)samegame.exe $(BUILDDIR)signpost.exe \
49 $(BUILDDIR)signpostsolver.exe $(BUILDDIR)singles.exe \
50 $(BUILDDIR)singlessolver.exe $(BUILDDIR)sixteen.exe \
51 $(BUILDDIR)slant.exe $(BUILDDIR)slantsolver.exe \
52 $(BUILDDIR)solo.exe $(BUILDDIR)solosolver.exe \
53 $(BUILDDIR)tents.exe $(BUILDDIR)tentssolver.exe \
54 $(BUILDDIR)towers.exe $(BUILDDIR)towerssolver.exe \
55 $(BUILDDIR)tracks.exe $(BUILDDIR)twiddle.exe \
56 $(BUILDDIR)undead.exe $(BUILDDIR)unequal.exe \
57 $(BUILDDIR)unequalsolver.exe $(BUILDDIR)unruly.exe \
58 $(BUILDDIR)unrulysolver.exe $(BUILDDIR)untangle.exe
59
60$(BUILDDIR)blackbox.exe: $(BUILDDIR)blackbox.obj $(BUILDDIR)drawing.obj \
61 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
62 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
63 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
64 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
65 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)blackbox.exe \
66 /lldmap:$(BUILDDIR)blackbox.map \
67 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
68 $(BUILDDIR)blackbox.obj comctl32.lib comdlg32.lib \
69 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
70 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
71 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
72 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
73 $(BUILDDIR)windows.obj winspool.lib
74
75$(BUILDDIR)bridges.exe: $(BUILDDIR)bridges.obj $(BUILDDIR)drawing.obj \
76 $(BUILDDIR)dsf.obj $(BUILDDIR)findloop.obj \
77 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
78 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
79 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
80 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
81 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)bridges.exe \
82 /lldmap:$(BUILDDIR)bridges.map \
83 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
84 $(BUILDDIR)bridges.obj comctl32.lib comdlg32.lib \
85 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
86 $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
87 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
88 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
89 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
90 $(BUILDDIR)windows.obj winspool.lib
91
92$(BUILDDIR)cube.exe: $(BUILDDIR)cube.obj $(BUILDDIR)drawing.obj \
93 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
94 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
95 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
96 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
97 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)cube.exe \
98 /lldmap:$(BUILDDIR)cube.map /subsystem:windows$(SUBSYSVER) \
99 $(EXTRA_windows) comctl32.lib comdlg32.lib \
100 $(BUILDDIR)cube.obj $(BUILDDIR)drawing.obj gdi32.lib \
101 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
102 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
103 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
104 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
105
106$(BUILDDIR)dominosa.exe: $(BUILDDIR)dominosa.obj $(BUILDDIR)drawing.obj \
107 $(BUILDDIR)laydomino.obj $(BUILDDIR)malloc.obj \
108 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
109 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
110 $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
111 $(BUILDDIR)windows.obj
112 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)dominosa.exe \
113 /lldmap:$(BUILDDIR)dominosa.map \
114 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
115 comdlg32.lib $(BUILDDIR)dominosa.obj $(BUILDDIR)drawing.obj \
116 gdi32.lib $(BUILDDIR)laydomino.obj $(BUILDDIR)malloc.obj \
117 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
118 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
119 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
120 $(BUILDDIR)windows.obj winspool.lib
121
122$(BUILDDIR)fifteen.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)fifteen.obj \
123 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
124 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
125 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
126 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
127 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)fifteen.exe \
128 /lldmap:$(BUILDDIR)fifteen.map \
129 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
130 comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)fifteen.obj \
131 gdi32.lib $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
132 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
133 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
134 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
135
136$(BUILDDIR)fifteensolver.exe: $(BUILDDIR)fifteen2.obj $(BUILDDIR)malloc.obj \
137 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
138 $(BUILDDIR)random.obj
139 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)fifteensolver.exe \
140 /lldmap:$(BUILDDIR)fifteensolver.map \
141 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
142 $(BUILDDIR)fifteen2.obj $(BUILDDIR)malloc.obj \
143 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
144 $(BUILDDIR)random.obj
145
146$(BUILDDIR)filling.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
147 $(BUILDDIR)filling.obj $(BUILDDIR)malloc.obj \
148 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
149 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
150 $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
151 $(BUILDDIR)windows.obj
152 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)filling.exe \
153 /lldmap:$(BUILDDIR)filling.map \
154 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
155 comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
156 $(BUILDDIR)filling.obj gdi32.lib $(BUILDDIR)malloc.obj \
157 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
158 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
159 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
160 $(BUILDDIR)windows.obj winspool.lib
161
162$(BUILDDIR)fillingsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)filling2.obj \
163 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
164 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
165 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)fillingsolver.exe \
166 /lldmap:$(BUILDDIR)fillingsolver.map \
167 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
168 $(BUILDDIR)dsf.obj $(BUILDDIR)filling2.obj \
169 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
170 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
171
172$(BUILDDIR)flip.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)flip.obj \
173 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
174 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
175 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
176 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
177 $(BUILDDIR)windows.obj
178 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)flip.exe \
179 /lldmap:$(BUILDDIR)flip.map /subsystem:windows$(SUBSYSVER) \
180 $(EXTRA_windows) comctl32.lib comdlg32.lib \
181 $(BUILDDIR)drawing.obj $(BUILDDIR)flip.obj gdi32.lib \
182 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
183 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
184 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
185 $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
186 $(BUILDDIR)windows.obj winspool.lib
187
188$(BUILDDIR)flood.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)flood.obj \
189 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
190 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
191 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
192 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
193 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)flood.exe \
194 /lldmap:$(BUILDDIR)flood.map /subsystem:windows$(SUBSYSVER) \
195 $(EXTRA_windows) comctl32.lib comdlg32.lib \
196 $(BUILDDIR)drawing.obj $(BUILDDIR)flood.obj gdi32.lib \
197 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
198 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
199 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
200 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
201
202$(BUILDDIR)galaxies.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
203 $(BUILDDIR)galaxies.obj $(BUILDDIR)malloc.obj \
204 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
205 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
206 $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
207 $(BUILDDIR)windows.obj
208 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)galaxies.exe \
209 /lldmap:$(BUILDDIR)galaxies.map \
210 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
211 comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
212 $(BUILDDIR)galaxies.obj gdi32.lib $(BUILDDIR)malloc.obj \
213 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
214 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
215 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
216 $(BUILDDIR)windows.obj winspool.lib
217
218$(BUILDDIR)galaxiespicture.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie4.obj \
219 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
220 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
221 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)galaxiespicture.exe \
222 /lldmap:$(BUILDDIR)galaxiespicture.map \
223 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
224 $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie4.obj \
225 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
226 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
227
228$(BUILDDIR)galaxiessolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie2.obj \
229 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
230 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
231 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)galaxiessolver.exe \
232 /lldmap:$(BUILDDIR)galaxiessolver.map \
233 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
234 $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie2.obj \
235 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
236 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
237
238$(BUILDDIR)guess.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)guess.obj \
239 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
240 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
241 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
242 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
243 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)guess.exe \
244 /lldmap:$(BUILDDIR)guess.map /subsystem:windows$(SUBSYSVER) \
245 $(EXTRA_windows) comctl32.lib comdlg32.lib \
246 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)guess.obj \
247 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
248 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
249 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
250 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
251
252$(BUILDDIR)inertia.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)inertia.obj \
253 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
254 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
255 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
256 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
257 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)inertia.exe \
258 /lldmap:$(BUILDDIR)inertia.map \
259 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
260 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
261 $(BUILDDIR)inertia.obj $(BUILDDIR)malloc.obj \
262 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
263 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
264 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
265 $(BUILDDIR)windows.obj winspool.lib
266
267$(BUILDDIR)keen.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
268 $(BUILDDIR)keen.obj $(BUILDDIR)latin.obj \
269 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
270 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
271 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
272 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
273 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
274 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)keen.exe \
275 /lldmap:$(BUILDDIR)keen.map /subsystem:windows$(SUBSYSVER) \
276 $(EXTRA_windows) comctl32.lib comdlg32.lib \
277 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
278 $(BUILDDIR)keen.obj $(BUILDDIR)latin.obj \
279 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
280 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
281 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
282 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj user32.lib \
283 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
284
285$(BUILDDIR)keensolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)keen2.obj \
286 $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
287 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
288 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
289 $(BUILDDIR)tree234.obj
290 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)keensolver.exe \
291 /lldmap:$(BUILDDIR)keensolver.map \
292 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
293 $(BUILDDIR)dsf.obj $(BUILDDIR)keen2.obj \
294 $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
295 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
296 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
297 $(BUILDDIR)tree234.obj
298
299$(BUILDDIR)latincheck.exe: $(BUILDDIR)latin8.obj $(BUILDDIR)malloc.obj \
300 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
301 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
302 $(BUILDDIR)tree234.obj
303 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)latincheck.exe \
304 /lldmap:$(BUILDDIR)latincheck.map \
305 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
306 $(BUILDDIR)latin8.obj $(BUILDDIR)malloc.obj \
307 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
308 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
309 $(BUILDDIR)tree234.obj
310
311$(BUILDDIR)lightup.exe: $(BUILDDIR)combi.obj $(BUILDDIR)drawing.obj \
312 $(BUILDDIR)lightup.obj $(BUILDDIR)malloc.obj \
313 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
314 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
315 $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
316 $(BUILDDIR)windows.obj
317 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)lightup.exe \
318 /lldmap:$(BUILDDIR)lightup.map \
319 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
320 $(BUILDDIR)combi.obj comctl32.lib comdlg32.lib \
321 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)lightup.obj \
322 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
323 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
324 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
325 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
326
327$(BUILDDIR)lightupsolver.exe: $(BUILDDIR)combi.obj $(BUILDDIR)lightup2.obj \
328 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
329 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
330 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)lightupsolver.exe \
331 /lldmap:$(BUILDDIR)lightupsolver.map \
332 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
333 $(BUILDDIR)combi.obj $(BUILDDIR)lightup2.obj \
334 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
335 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
336
337$(BUILDDIR)loopy.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
338 $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
339 $(BUILDDIR)loopy.obj $(BUILDDIR)malloc.obj \
340 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
341 $(BUILDDIR)noicon.res $(BUILDDIR)penrose.obj \
342 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
343 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
344 $(BUILDDIR)windows.obj
345 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)loopy.exe \
346 /lldmap:$(BUILDDIR)loopy.map /subsystem:windows$(SUBSYSVER) \
347 $(EXTRA_windows) comctl32.lib comdlg32.lib \
348 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
349 $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
350 $(BUILDDIR)loopy.obj $(BUILDDIR)malloc.obj \
351 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
352 $(BUILDDIR)noicon.res $(BUILDDIR)penrose.obj \
353 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
354 $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
355 $(BUILDDIR)windows.obj winspool.lib
356
357$(BUILDDIR)loopysolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
358 $(BUILDDIR)loopgen.obj $(BUILDDIR)loopy2.obj \
359 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
360 $(BUILDDIR)nullfe.obj $(BUILDDIR)penrose.obj \
361 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
362 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)loopysolver.exe \
363 /lldmap:$(BUILDDIR)loopysolver.map \
364 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
365 $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
366 $(BUILDDIR)loopgen.obj $(BUILDDIR)loopy2.obj \
367 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
368 $(BUILDDIR)nullfe.obj $(BUILDDIR)penrose.obj \
369 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
370
371$(BUILDDIR)magnets.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)laydomino.obj \
372 $(BUILDDIR)magnets.obj $(BUILDDIR)malloc.obj \
373 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
374 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
375 $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
376 $(BUILDDIR)windows.obj
377 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)magnets.exe \
378 /lldmap:$(BUILDDIR)magnets.map \
379 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
380 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
381 $(BUILDDIR)laydomino.obj $(BUILDDIR)magnets.obj \
382 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
383 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
384 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
385 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
386
387$(BUILDDIR)magnetssolver.exe: $(BUILDDIR)laydomino.obj \
388 $(BUILDDIR)magnets2.obj $(BUILDDIR)malloc.obj \
389 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
390 $(BUILDDIR)random.obj
391 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)magnetssolver.exe \
392 /lldmap:$(BUILDDIR)magnetssolver.map \
393 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
394 $(BUILDDIR)laydomino.obj $(BUILDDIR)magnets2.obj \
395 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
396 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
397
398$(BUILDDIR)map.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
399 $(BUILDDIR)malloc.obj $(BUILDDIR)map.obj \
400 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
401 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
402 $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
403 $(BUILDDIR)windows.obj
404 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)map.exe \
405 /lldmap:$(BUILDDIR)map.map /subsystem:windows$(SUBSYSVER) \
406 $(EXTRA_windows) comctl32.lib comdlg32.lib \
407 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
408 $(BUILDDIR)malloc.obj $(BUILDDIR)map.obj \
409 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
410 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
411 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
412 $(BUILDDIR)windows.obj winspool.lib
413
414$(BUILDDIR)mapsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
415 $(BUILDDIR)map2.obj $(BUILDDIR)misc.obj \
416 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
417 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)mapsolver.exe \
418 /lldmap:$(BUILDDIR)mapsolver.map \
419 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
420 $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj $(BUILDDIR)map2.obj \
421 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
422 $(BUILDDIR)random.obj
423
424$(BUILDDIR)mineobfusc.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)mines2.obj \
425 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
426 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
427 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)mineobfusc.exe \
428 /lldmap:$(BUILDDIR)mineobfusc.map \
429 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
430 $(BUILDDIR)malloc.obj $(BUILDDIR)mines2.obj \
431 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
432 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
433
434$(BUILDDIR)mines.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
435 $(BUILDDIR)midend.obj $(BUILDDIR)mines.obj \
436 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
437 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
438 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
439 $(BUILDDIR)windows.obj
440 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)mines.exe \
441 /lldmap:$(BUILDDIR)mines.map /subsystem:windows$(SUBSYSVER) \
442 $(EXTRA_windows) comctl32.lib comdlg32.lib \
443 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
444 $(BUILDDIR)midend.obj $(BUILDDIR)mines.obj \
445 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
446 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
447 $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
448 $(BUILDDIR)windows.obj winspool.lib
449
450$(BUILDDIR)netgame.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
451 $(BUILDDIR)findloop.obj $(BUILDDIR)malloc.obj \
452 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj $(BUILDDIR)net.obj \
453 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
454 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
455 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
456 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)netgame.exe \
457 /lldmap:$(BUILDDIR)netgame.map \
458 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
459 comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
460 $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
461 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj $(BUILDDIR)net.obj \
462 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
463 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj user32.lib \
464 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
465
466$(BUILDDIR)netslide.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
467 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
468 $(BUILDDIR)netslide.obj $(BUILDDIR)noicon.res \
469 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
470 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
471 $(BUILDDIR)windows.obj
472 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)netslide.exe \
473 /lldmap:$(BUILDDIR)netslide.map \
474 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
475 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
476 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
477 $(BUILDDIR)misc.obj $(BUILDDIR)netslide.obj \
478 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
479 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj user32.lib \
480 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
481
482$(BUILDDIR)nullgame.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
483 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
484 $(BUILDDIR)noicon.res $(BUILDDIR)nullgame.obj \
485 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
486 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
487 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)nullgame.exe \
488 /lldmap:$(BUILDDIR)nullgame.map \
489 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
490 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
491 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
492 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
493 $(BUILDDIR)nullgame.obj $(BUILDDIR)printing.obj \
494 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
495 $(BUILDDIR)windows.obj winspool.lib
496
497$(BUILDDIR)palisade.exe: $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
498 $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
499 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
500 $(BUILDDIR)noicon.res $(BUILDDIR)palisade.obj \
501 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
502 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
503 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)palisade.exe \
504 /lldmap:$(BUILDDIR)palisade.map \
505 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
506 comdlg32.lib $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
507 $(BUILDDIR)dsf.obj gdi32.lib $(BUILDDIR)malloc.obj \
508 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
509 $(BUILDDIR)noicon.res $(BUILDDIR)palisade.obj \
510 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
511 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
512
513$(BUILDDIR)pattern.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
514 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
515 $(BUILDDIR)noicon.res $(BUILDDIR)pattern.obj \
516 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
517 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
518 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pattern.exe \
519 /lldmap:$(BUILDDIR)pattern.map \
520 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
521 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
522 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
523 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
524 $(BUILDDIR)pattern.obj $(BUILDDIR)printing.obj \
525 $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
526 $(BUILDDIR)windows.obj winspool.lib
527
528$(BUILDDIR)patternpicture.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
529 $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern4.obj \
530 $(BUILDDIR)random.obj
531 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)patternpicture.exe \
532 /lldmap:$(BUILDDIR)patternpicture.map \
533 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
534 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
535 $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern4.obj \
536 $(BUILDDIR)random.obj
537
538$(BUILDDIR)patternsolver.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
539 $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern2.obj \
540 $(BUILDDIR)random.obj
541 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)patternsolver.exe \
542 /lldmap:$(BUILDDIR)patternsolver.map \
543 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
544 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
545 $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern2.obj \
546 $(BUILDDIR)random.obj
547
548$(BUILDDIR)pearl.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
549 $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
550 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
551 $(BUILDDIR)misc.obj $(BUILDDIR)pearl.obj \
552 $(BUILDDIR)penrose.obj $(BUILDDIR)printing.obj \
553 $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
554 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
555 $(BUILDDIR)windows.obj
556 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pearl.exe \
557 /lldmap:$(BUILDDIR)pearl.map /subsystem:windows$(SUBSYSVER) \
558 $(EXTRA_windows) comctl32.lib comdlg32.lib \
559 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
560 $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
561 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
562 $(BUILDDIR)misc.obj $(BUILDDIR)pearl.obj \
563 $(BUILDDIR)penrose.obj $(BUILDDIR)printing.obj \
564 $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
565 $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
566 $(BUILDDIR)windows.obj winspool.lib
567
568$(BUILDDIR)pearlbench.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
569 $(BUILDDIR)loopgen.obj $(BUILDDIR)malloc.obj \
570 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
571 $(BUILDDIR)pearl2.obj $(BUILDDIR)penrose.obj \
572 $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
573 $(BUILDDIR)tree234.obj
574 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pearlbench.exe \
575 /lldmap:$(BUILDDIR)pearlbench.map \
576 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
577 $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
578 $(BUILDDIR)loopgen.obj $(BUILDDIR)malloc.obj \
579 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
580 $(BUILDDIR)pearl2.obj $(BUILDDIR)penrose.obj \
581 $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
582 $(BUILDDIR)tree234.obj
583
584$(BUILDDIR)pegs.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
585 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
586 $(BUILDDIR)noicon.res $(BUILDDIR)pegs.obj \
587 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
588 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
589 $(BUILDDIR)windows.obj
590 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pegs.exe \
591 /lldmap:$(BUILDDIR)pegs.map /subsystem:windows$(SUBSYSVER) \
592 $(EXTRA_windows) comctl32.lib comdlg32.lib \
593 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
594 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
595 $(BUILDDIR)noicon.res $(BUILDDIR)pegs.obj \
596 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
597 $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
598 $(BUILDDIR)windows.obj winspool.lib
599
600$(BUILDDIR)puzzles.exe: $(BUILDDIR)blackbo3.obj $(BUILDDIR)bridges3.obj \
601 $(BUILDDIR)combi.obj $(BUILDDIR)cube3.obj \
602 $(BUILDDIR)divvy.obj $(BUILDDIR)dominos3.obj \
603 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
604 $(BUILDDIR)fifteen5.obj $(BUILDDIR)filling5.obj \
605 $(BUILDDIR)findloop.obj $(BUILDDIR)flip3.obj \
606 $(BUILDDIR)flood3.obj $(BUILDDIR)galaxie7.obj \
607 $(BUILDDIR)grid.obj $(BUILDDIR)guess3.obj \
608 $(BUILDDIR)inertia3.obj $(BUILDDIR)keen5.obj \
609 $(BUILDDIR)latin.obj $(BUILDDIR)laydomino.obj \
610 $(BUILDDIR)lightup5.obj $(BUILDDIR)list.obj \
611 $(BUILDDIR)loopgen.obj $(BUILDDIR)loopy5.obj \
612 $(BUILDDIR)magnets5.obj $(BUILDDIR)malloc.obj \
613 $(BUILDDIR)map5.obj $(BUILDDIR)maxflow.obj \
614 $(BUILDDIR)midend.obj $(BUILDDIR)mines5.obj \
615 $(BUILDDIR)misc.obj $(BUILDDIR)net3.obj \
616 $(BUILDDIR)netslid3.obj $(BUILDDIR)noicon.res \
617 $(BUILDDIR)palisad3.obj $(BUILDDIR)pattern7.obj \
618 $(BUILDDIR)pearl5.obj $(BUILDDIR)pegs3.obj \
619 $(BUILDDIR)penrose.obj $(BUILDDIR)printing.obj \
620 $(BUILDDIR)random.obj $(BUILDDIR)range3.obj \
621 $(BUILDDIR)rect3.obj $(BUILDDIR)samegam3.obj \
622 $(BUILDDIR)signpos5.obj $(BUILDDIR)singles5.obj \
623 $(BUILDDIR)sixteen3.obj $(BUILDDIR)slant5.obj \
624 $(BUILDDIR)solo5.obj $(BUILDDIR)tdq.obj \
625 $(BUILDDIR)tents5.obj $(BUILDDIR)towers5.obj \
626 $(BUILDDIR)tracks3.obj $(BUILDDIR)tree234.obj \
627 $(BUILDDIR)twiddle3.obj $(BUILDDIR)undead3.obj \
628 $(BUILDDIR)unequal5.obj $(BUILDDIR)unruly5.obj \
629 $(BUILDDIR)untangl3.obj $(BUILDDIR)version.obj \
630 $(BUILDDIR)windows1.obj
631 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)puzzles.exe \
632 /lldmap:$(BUILDDIR)puzzles.map \
633 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
634 $(BUILDDIR)blackbo3.obj $(BUILDDIR)bridges3.obj \
635 $(BUILDDIR)combi.obj comctl32.lib comdlg32.lib \
636 $(BUILDDIR)cube3.obj $(BUILDDIR)divvy.obj \
637 $(BUILDDIR)dominos3.obj $(BUILDDIR)drawing.obj \
638 $(BUILDDIR)dsf.obj $(BUILDDIR)fifteen5.obj \
639 $(BUILDDIR)filling5.obj $(BUILDDIR)findloop.obj \
640 $(BUILDDIR)flip3.obj $(BUILDDIR)flood3.obj \
641 $(BUILDDIR)galaxie7.obj gdi32.lib $(BUILDDIR)grid.obj \
642 $(BUILDDIR)guess3.obj $(BUILDDIR)inertia3.obj \
643 $(BUILDDIR)keen5.obj $(BUILDDIR)latin.obj \
644 $(BUILDDIR)laydomino.obj $(BUILDDIR)lightup5.obj \
645 $(BUILDDIR)list.obj $(BUILDDIR)loopgen.obj \
646 $(BUILDDIR)loopy5.obj $(BUILDDIR)magnets5.obj \
647 $(BUILDDIR)malloc.obj $(BUILDDIR)map5.obj \
648 $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
649 $(BUILDDIR)mines5.obj $(BUILDDIR)misc.obj \
650 $(BUILDDIR)net3.obj $(BUILDDIR)netslid3.obj \
651 $(BUILDDIR)noicon.res $(BUILDDIR)palisad3.obj \
652 $(BUILDDIR)pattern7.obj $(BUILDDIR)pearl5.obj \
653 $(BUILDDIR)pegs3.obj $(BUILDDIR)penrose.obj \
654 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
655 $(BUILDDIR)range3.obj $(BUILDDIR)rect3.obj \
656 $(BUILDDIR)samegam3.obj $(BUILDDIR)signpos5.obj \
657 $(BUILDDIR)singles5.obj $(BUILDDIR)sixteen3.obj \
658 $(BUILDDIR)slant5.obj $(BUILDDIR)solo5.obj \
659 $(BUILDDIR)tdq.obj $(BUILDDIR)tents5.obj \
660 $(BUILDDIR)towers5.obj $(BUILDDIR)tracks3.obj \
661 $(BUILDDIR)tree234.obj $(BUILDDIR)twiddle3.obj \
662 $(BUILDDIR)undead3.obj $(BUILDDIR)unequal5.obj \
663 $(BUILDDIR)unruly5.obj $(BUILDDIR)untangl3.obj user32.lib \
664 $(BUILDDIR)version.obj $(BUILDDIR)windows1.obj winspool.lib
665
666$(BUILDDIR)range.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
667 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
668 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
669 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
670 $(BUILDDIR)range.obj $(BUILDDIR)version.obj \
671 $(BUILDDIR)windows.obj
672 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)range.exe \
673 /lldmap:$(BUILDDIR)range.map /subsystem:windows$(SUBSYSVER) \
674 $(EXTRA_windows) comctl32.lib comdlg32.lib \
675 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
676 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
677 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
678 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
679 $(BUILDDIR)range.obj user32.lib $(BUILDDIR)version.obj \
680 $(BUILDDIR)windows.obj winspool.lib
681
682$(BUILDDIR)rect.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
683 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
684 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
685 $(BUILDDIR)random.obj $(BUILDDIR)rect.obj \
686 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
687 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)rect.exe \
688 /lldmap:$(BUILDDIR)rect.map /subsystem:windows$(SUBSYSVER) \
689 $(EXTRA_windows) comctl32.lib comdlg32.lib \
690 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
691 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
692 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
693 $(BUILDDIR)random.obj $(BUILDDIR)rect.obj user32.lib \
694 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
695
696$(BUILDDIR)samegame.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
697 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
698 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
699 $(BUILDDIR)random.obj $(BUILDDIR)samegame.obj \
700 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
701 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)samegame.exe \
702 /lldmap:$(BUILDDIR)samegame.map \
703 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
704 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
705 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
706 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
707 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
708 $(BUILDDIR)samegame.obj user32.lib $(BUILDDIR)version.obj \
709 $(BUILDDIR)windows.obj winspool.lib
710
711$(BUILDDIR)signpost.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
712 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
713 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
714 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
715 $(BUILDDIR)signpost.obj $(BUILDDIR)version.obj \
716 $(BUILDDIR)windows.obj
717 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)signpost.exe \
718 /lldmap:$(BUILDDIR)signpost.map \
719 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
720 comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
721 gdi32.lib $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
722 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
723 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
724 $(BUILDDIR)signpost.obj user32.lib $(BUILDDIR)version.obj \
725 $(BUILDDIR)windows.obj winspool.lib
726
727$(BUILDDIR)signpostsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
728 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
729 $(BUILDDIR)random.obj $(BUILDDIR)signpos2.obj
730 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)signpostsolver.exe \
731 /lldmap:$(BUILDDIR)signpostsolver.map \
732 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
733 $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
734 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
735 $(BUILDDIR)signpos2.obj
736
737$(BUILDDIR)singles.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
738 $(BUILDDIR)latin.obj $(BUILDDIR)malloc.obj \
739 $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
740 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
741 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
742 $(BUILDDIR)singles.obj $(BUILDDIR)tree234.obj \
743 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
744 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)singles.exe \
745 /lldmap:$(BUILDDIR)singles.map \
746 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
747 comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
748 gdi32.lib $(BUILDDIR)latin.obj $(BUILDDIR)malloc.obj \
749 $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
750 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
751 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
752 $(BUILDDIR)singles.obj $(BUILDDIR)tree234.obj user32.lib \
753 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
754
755$(BUILDDIR)singlessolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)latin.obj \
756 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
757 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
758 $(BUILDDIR)random.obj $(BUILDDIR)singles3.obj \
759 $(BUILDDIR)tree234.obj
760 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)singlessolver.exe \
761 /lldmap:$(BUILDDIR)singlessolver.map \
762 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
763 $(BUILDDIR)dsf.obj $(BUILDDIR)latin.obj \
764 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
765 $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
766 $(BUILDDIR)random.obj $(BUILDDIR)singles3.obj \
767 $(BUILDDIR)tree234.obj
768
769$(BUILDDIR)sixteen.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
770 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
771 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
772 $(BUILDDIR)random.obj $(BUILDDIR)sixteen.obj \
773 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
774 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)sixteen.exe \
775 /lldmap:$(BUILDDIR)sixteen.map \
776 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
777 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
778 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
779 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
780 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
781 $(BUILDDIR)sixteen.obj user32.lib $(BUILDDIR)version.obj \
782 $(BUILDDIR)windows.obj winspool.lib
783
784$(BUILDDIR)slant.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
785 $(BUILDDIR)findloop.obj $(BUILDDIR)malloc.obj \
786 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
787 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
788 $(BUILDDIR)random.obj $(BUILDDIR)slant.obj \
789 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
790 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)slant.exe \
791 /lldmap:$(BUILDDIR)slant.map /subsystem:windows$(SUBSYSVER) \
792 $(EXTRA_windows) comctl32.lib comdlg32.lib \
793 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
794 $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
795 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
796 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
797 $(BUILDDIR)random.obj $(BUILDDIR)slant.obj user32.lib \
798 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
799
800$(BUILDDIR)slantsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)findloop.obj \
801 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
802 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
803 $(BUILDDIR)slant2.obj
804 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)slantsolver.exe \
805 /lldmap:$(BUILDDIR)slantsolver.map \
806 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
807 $(BUILDDIR)dsf.obj $(BUILDDIR)findloop.obj \
808 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
809 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
810 $(BUILDDIR)slant2.obj
811
812$(BUILDDIR)solo.exe: $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
813 $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
814 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
815 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
816 $(BUILDDIR)random.obj $(BUILDDIR)solo.obj \
817 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
818 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)solo.exe \
819 /lldmap:$(BUILDDIR)solo.map /subsystem:windows$(SUBSYSVER) \
820 $(EXTRA_windows) comctl32.lib comdlg32.lib \
821 $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
822 $(BUILDDIR)dsf.obj gdi32.lib $(BUILDDIR)malloc.obj \
823 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
824 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
825 $(BUILDDIR)random.obj $(BUILDDIR)solo.obj user32.lib \
826 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
827
828$(BUILDDIR)solosolver.exe: $(BUILDDIR)divvy.obj $(BUILDDIR)dsf.obj \
829 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
830 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
831 $(BUILDDIR)solo2.obj
832 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)solosolver.exe \
833 /lldmap:$(BUILDDIR)solosolver.map \
834 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
835 $(BUILDDIR)divvy.obj $(BUILDDIR)dsf.obj \
836 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
837 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
838 $(BUILDDIR)solo2.obj
839
840$(BUILDDIR)tents.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
841 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
842 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
843 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
844 $(BUILDDIR)random.obj $(BUILDDIR)tents.obj \
845 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
846 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)tents.exe \
847 /lldmap:$(BUILDDIR)tents.map /subsystem:windows$(SUBSYSVER) \
848 $(EXTRA_windows) comctl32.lib comdlg32.lib \
849 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
850 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
851 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
852 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
853 $(BUILDDIR)random.obj $(BUILDDIR)tents.obj user32.lib \
854 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
855
856$(BUILDDIR)tentssolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
857 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
858 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
859 $(BUILDDIR)tents3.obj
860 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)tentssolver.exe \
861 /lldmap:$(BUILDDIR)tentssolver.map \
862 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
863 $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
864 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
865 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
866 $(BUILDDIR)tents3.obj
867
868$(BUILDDIR)towers.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)latin.obj \
869 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
870 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
871 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
872 $(BUILDDIR)random.obj $(BUILDDIR)towers.obj \
873 $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
874 $(BUILDDIR)windows.obj
875 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)towers.exe \
876 /lldmap:$(BUILDDIR)towers.map /subsystem:windows$(SUBSYSVER) \
877 $(EXTRA_windows) comctl32.lib comdlg32.lib \
878 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)latin.obj \
879 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
880 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
881 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
882 $(BUILDDIR)random.obj $(BUILDDIR)towers.obj \
883 $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
884 $(BUILDDIR)windows.obj winspool.lib
885
886$(BUILDDIR)towerssolver.exe: $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
887 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
888 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
889 $(BUILDDIR)towers2.obj $(BUILDDIR)tree234.obj
890 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)towerssolver.exe \
891 /lldmap:$(BUILDDIR)towerssolver.map \
892 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
893 $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
894 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
895 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
896 $(BUILDDIR)towers2.obj $(BUILDDIR)tree234.obj
897
898$(BUILDDIR)tracks.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
899 $(BUILDDIR)findloop.obj $(BUILDDIR)malloc.obj \
900 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
901 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
902 $(BUILDDIR)random.obj $(BUILDDIR)tracks.obj \
903 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
904 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)tracks.exe \
905 /lldmap:$(BUILDDIR)tracks.map /subsystem:windows$(SUBSYSVER) \
906 $(EXTRA_windows) comctl32.lib comdlg32.lib \
907 $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
908 $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
909 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
910 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
911 $(BUILDDIR)random.obj $(BUILDDIR)tracks.obj user32.lib \
912 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
913
914$(BUILDDIR)twiddle.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
915 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
916 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
917 $(BUILDDIR)random.obj $(BUILDDIR)twiddle.obj \
918 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
919 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)twiddle.exe \
920 /lldmap:$(BUILDDIR)twiddle.map \
921 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
922 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
923 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
924 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
925 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
926 $(BUILDDIR)twiddle.obj user32.lib $(BUILDDIR)version.obj \
927 $(BUILDDIR)windows.obj winspool.lib
928
929$(BUILDDIR)undead.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
930 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
931 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
932 $(BUILDDIR)random.obj $(BUILDDIR)undead.obj \
933 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
934 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)undead.exe \
935 /lldmap:$(BUILDDIR)undead.map /subsystem:windows$(SUBSYSVER) \
936 $(EXTRA_windows) comctl32.lib comdlg32.lib \
937 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
938 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
939 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
940 $(BUILDDIR)random.obj $(BUILDDIR)undead.obj user32.lib \
941 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
942
943$(BUILDDIR)unequal.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)latin.obj \
944 $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
945 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
946 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
947 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
948 $(BUILDDIR)unequal.obj $(BUILDDIR)version.obj \
949 $(BUILDDIR)windows.obj
950 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unequal.exe \
951 /lldmap:$(BUILDDIR)unequal.map \
952 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
953 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
954 $(BUILDDIR)latin.obj $(BUILDDIR)malloc.obj \
955 $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
956 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
957 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
958 $(BUILDDIR)tree234.obj $(BUILDDIR)unequal.obj user32.lib \
959 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
960
961$(BUILDDIR)unequalsolver.exe: $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
962 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
963 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
964 $(BUILDDIR)tree234.obj $(BUILDDIR)unequal2.obj
965 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unequalsolver.exe \
966 /lldmap:$(BUILDDIR)unequalsolver.map \
967 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
968 $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
969 $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
970 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
971 $(BUILDDIR)tree234.obj $(BUILDDIR)unequal2.obj
972
973$(BUILDDIR)unruly.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
974 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
975 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
976 $(BUILDDIR)random.obj $(BUILDDIR)unruly.obj \
977 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
978 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unruly.exe \
979 /lldmap:$(BUILDDIR)unruly.map /subsystem:windows$(SUBSYSVER) \
980 $(EXTRA_windows) comctl32.lib comdlg32.lib \
981 $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
982 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
983 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
984 $(BUILDDIR)random.obj $(BUILDDIR)unruly.obj user32.lib \
985 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
986
987$(BUILDDIR)unrulysolver.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
988 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
989 $(BUILDDIR)unruly2.obj
990 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unrulysolver.exe \
991 /lldmap:$(BUILDDIR)unrulysolver.map \
992 /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
993 $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
994 $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
995 $(BUILDDIR)unruly2.obj
996
997$(BUILDDIR)untangle.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
998 $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
999 $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
1000 $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
1001 $(BUILDDIR)untangle.obj $(BUILDDIR)version.obj \
1002 $(BUILDDIR)windows.obj
1003 $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)untangle.exe \
1004 /lldmap:$(BUILDDIR)untangle.map \
1005 /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
1006 comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
1007 $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
1008 $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
1009 $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
1010 $(BUILDDIR)tree234.obj $(BUILDDIR)untangle.obj user32.lib \
1011 $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
1012
1013$(BUILDDIR)blackbox.obj: ./blackbox.c ./puzzles.h
1014 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)blackbox.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1015
1016$(BUILDDIR)blackbo3.obj: ./blackbox.c ./puzzles.h
1017 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)blackbo3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1018
1019$(BUILDDIR)bridges.obj: ./bridges.c ./puzzles.h
1020 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)bridges.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1021
1022$(BUILDDIR)bridges3.obj: ./bridges.c ./puzzles.h
1023 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)bridges3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1024
1025$(BUILDDIR)combi.obj: ./combi.c ./puzzles.h
1026 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)combi.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1027
1028$(BUILDDIR)cube.obj: ./cube.c ./puzzles.h
1029 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)cube.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1030
1031$(BUILDDIR)cube3.obj: ./cube.c ./puzzles.h
1032 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)cube3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1033
1034$(BUILDDIR)divvy.obj: ./divvy.c ./puzzles.h
1035 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)divvy.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1036
1037$(BUILDDIR)dominosa.obj: ./dominosa.c ./puzzles.h
1038 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)dominosa.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1039
1040$(BUILDDIR)dominos3.obj: ./dominosa.c ./puzzles.h
1041 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)dominos3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1042
1043$(BUILDDIR)drawing.obj: ./drawing.c ./puzzles.h
1044 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)drawing.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1045
1046$(BUILDDIR)dsf.obj: ./dsf.c ./puzzles.h
1047 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)dsf.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1048
1049$(BUILDDIR)fifteen.obj: ./fifteen.c ./puzzles.h
1050 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)fifteen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1051
1052$(BUILDDIR)fifteen5.obj: ./fifteen.c ./puzzles.h
1053 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)fifteen5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1054
1055$(BUILDDIR)fifteen2.obj: ./fifteen.c ./puzzles.h
1056 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)fifteen2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1057
1058$(BUILDDIR)filling.obj: ./filling.c ./puzzles.h
1059 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)filling.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1060
1061$(BUILDDIR)filling5.obj: ./filling.c ./puzzles.h
1062 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)filling5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1063
1064$(BUILDDIR)filling2.obj: ./filling.c ./puzzles.h
1065 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)filling2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1066
1067$(BUILDDIR)findloop.obj: ./findloop.c ./puzzles.h
1068 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)findloop.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1069
1070$(BUILDDIR)flip.obj: ./flip.c ./puzzles.h ./tree234.h
1071 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flip.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1072
1073$(BUILDDIR)flip3.obj: ./flip.c ./puzzles.h ./tree234.h
1074 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flip3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1075
1076$(BUILDDIR)flood.obj: ./flood.c ./puzzles.h
1077 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flood.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1078
1079$(BUILDDIR)flood3.obj: ./flood.c ./puzzles.h
1080 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flood3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1081
1082$(BUILDDIR)galaxies.obj: ./galaxies.c ./puzzles.h
1083 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxies.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1084
1085$(BUILDDIR)galaxie7.obj: ./galaxies.c ./puzzles.h
1086 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxie7.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1087
1088$(BUILDDIR)galaxie4.obj: ./galaxies.c ./puzzles.h
1089 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxie4.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c $<
1090
1091$(BUILDDIR)galaxie2.obj: ./galaxies.c ./puzzles.h
1092 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxie2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1093
1094$(BUILDDIR)grid.obj: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
1095 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)grid.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1096
1097$(BUILDDIR)gtk.obj: ./gtk.c ./puzzles.h
1098 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)gtk.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1099
1100$(BUILDDIR)guess.obj: ./guess.c ./puzzles.h
1101 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)guess.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1102
1103$(BUILDDIR)guess3.obj: ./guess.c ./puzzles.h
1104 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)guess3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1105
1106$(BUILDDIR)inertia.obj: ./inertia.c ./puzzles.h
1107 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)inertia.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1108
1109$(BUILDDIR)inertia3.obj: ./inertia.c ./puzzles.h
1110 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)inertia3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1111
1112$(BUILDDIR)keen.obj: ./keen.c ./puzzles.h ./latin.h
1113 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)keen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1114
1115$(BUILDDIR)keen5.obj: ./keen.c ./puzzles.h ./latin.h
1116 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)keen5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1117
1118$(BUILDDIR)keen2.obj: ./keen.c ./puzzles.h ./latin.h
1119 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)keen2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1120
1121$(BUILDDIR)latin.obj: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1122 ./latin.h
1123 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)latin.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1124
1125$(BUILDDIR)latin8.obj: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1126 ./latin.h
1127 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)latin8.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_LATIN_TEST /c $<
1128
1129$(BUILDDIR)latin6.obj: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1130 ./latin.h
1131 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)latin6.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1132
1133$(BUILDDIR)laydomino.obj: ./laydomino.c ./puzzles.h
1134 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)laydomino.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1135
1136$(BUILDDIR)lightup.obj: ./lightup.c ./puzzles.h
1137 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)lightup.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1138
1139$(BUILDDIR)lightup5.obj: ./lightup.c ./puzzles.h
1140 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)lightup5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1141
1142$(BUILDDIR)lightup2.obj: ./lightup.c ./puzzles.h
1143 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)lightup2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1144
1145$(BUILDDIR)list.obj: ./list.c ./puzzles.h
1146 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)list.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1147
1148$(BUILDDIR)loopgen.obj: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h \
1149 ./loopgen.h
1150 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopgen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1151
1152$(BUILDDIR)loopy.obj: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
1153 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopy.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1154
1155$(BUILDDIR)loopy5.obj: ./loopy.c ./puzzles.h ./tree234.h ./grid.h \
1156 ./loopgen.h
1157 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopy5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1158
1159$(BUILDDIR)loopy2.obj: ./loopy.c ./puzzles.h ./tree234.h ./grid.h \
1160 ./loopgen.h
1161 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopy2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1162
1163$(BUILDDIR)magnets.obj: ./magnets.c ./puzzles.h
1164 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)magnets.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1165
1166$(BUILDDIR)magnets5.obj: ./magnets.c ./puzzles.h
1167 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)magnets5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1168
1169$(BUILDDIR)magnets2.obj: ./magnets.c ./puzzles.h
1170 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)magnets2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1171
1172$(BUILDDIR)malloc.obj: ./malloc.c ./puzzles.h
1173 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)malloc.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1174
1175$(BUILDDIR)map.obj: ./map.c ./puzzles.h
1176 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)map.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1177
1178$(BUILDDIR)map5.obj: ./map.c ./puzzles.h
1179 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)map5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1180
1181$(BUILDDIR)map2.obj: ./map.c ./puzzles.h
1182 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)map2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1183
1184$(BUILDDIR)maxflow.obj: ./maxflow.c ./maxflow.h ./puzzles.h
1185 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)maxflow.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1186
1187$(BUILDDIR)midend.obj: ./midend.c ./puzzles.h
1188 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)midend.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1189
1190$(BUILDDIR)mines.obj: ./mines.c ./tree234.h ./puzzles.h
1191 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)mines.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1192
1193$(BUILDDIR)mines5.obj: ./mines.c ./tree234.h ./puzzles.h
1194 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)mines5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1195
1196$(BUILDDIR)mines2.obj: ./mines.c ./tree234.h ./puzzles.h
1197 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)mines2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_OBFUSCATOR /c $<
1198
1199$(BUILDDIR)misc.obj: ./misc.c ./puzzles.h
1200 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)misc.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1201
1202$(BUILDDIR)net.obj: ./net.c ./puzzles.h ./tree234.h
1203 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)net.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1204
1205$(BUILDDIR)net3.obj: ./net.c ./puzzles.h ./tree234.h
1206 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)net3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1207
1208$(BUILDDIR)netslide.obj: ./netslide.c ./puzzles.h ./tree234.h
1209 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)netslide.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1210
1211$(BUILDDIR)netslid3.obj: ./netslide.c ./puzzles.h ./tree234.h
1212 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)netslid3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1213
1214$(BUILDDIR)no-icon.obj: ./no-icon.c
1215 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)no-icon.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1216
1217$(BUILDDIR)noicon.res: ./noicon.rc ./puzzles.rc2 ./resource.h
1218 $(RC) $(RCFLAGS) ./noicon.rc -o $(BUILDDIR)noicon.res
1219
1220$(BUILDDIR)nullfe.obj: ./nullfe.c ./puzzles.h
1221 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)nullfe.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1222
1223$(BUILDDIR)nullgame.obj: ./nullgame.c ./puzzles.h
1224 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)nullgame.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1225
1226$(BUILDDIR)obfusc.obj: ./obfusc.c ./puzzles.h
1227 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)obfusc.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1228
1229$(BUILDDIR)osx.obj: ./osx.m ./puzzles.h
1230 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)osx.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1231
1232$(BUILDDIR)palisade.obj: ./palisade.c ./puzzles.h
1233 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)palisade.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1234
1235$(BUILDDIR)palisad3.obj: ./palisade.c ./puzzles.h
1236 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)palisad3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1237
1238$(BUILDDIR)pattern.obj: ./pattern.c ./puzzles.h
1239 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1240
1241$(BUILDDIR)pattern7.obj: ./pattern.c ./puzzles.h
1242 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern7.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1243
1244$(BUILDDIR)pattern4.obj: ./pattern.c ./puzzles.h
1245 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern4.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c $<
1246
1247$(BUILDDIR)pattern2.obj: ./pattern.c ./puzzles.h
1248 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1249
1250$(BUILDDIR)pearl.obj: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
1251 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pearl.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1252
1253$(BUILDDIR)pearl5.obj: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
1254 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pearl5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1255
1256$(BUILDDIR)pearl2.obj: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
1257 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pearl2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1258
1259$(BUILDDIR)pegs.obj: ./pegs.c ./puzzles.h ./tree234.h
1260 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pegs.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1261
1262$(BUILDDIR)pegs3.obj: ./pegs.c ./puzzles.h ./tree234.h
1263 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pegs3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1264
1265$(BUILDDIR)penrose.obj: ./penrose.c ./puzzles.h ./penrose.h
1266 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)penrose.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1267
1268$(BUILDDIR)printing.obj: ./printing.c ./puzzles.h
1269 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)printing.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1270
1271$(BUILDDIR)ps.obj: ./ps.c ./puzzles.h
1272 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)ps.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1273
1274$(BUILDDIR)random.obj: ./random.c ./puzzles.h
1275 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)random.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1276
1277$(BUILDDIR)range.obj: ./range.c ./puzzles.h
1278 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)range.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1279
1280$(BUILDDIR)range3.obj: ./range.c ./puzzles.h
1281 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)range3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1282
1283$(BUILDDIR)rect.obj: ./rect.c ./puzzles.h
1284 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)rect.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1285
1286$(BUILDDIR)rect3.obj: ./rect.c ./puzzles.h
1287 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)rect3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1288
1289$(BUILDDIR)samegame.obj: ./samegame.c ./puzzles.h
1290 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)samegame.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1291
1292$(BUILDDIR)samegam3.obj: ./samegame.c ./puzzles.h
1293 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)samegam3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1294
1295$(BUILDDIR)signpost.obj: ./signpost.c ./puzzles.h
1296 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)signpost.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1297
1298$(BUILDDIR)signpos5.obj: ./signpost.c ./puzzles.h
1299 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)signpos5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1300
1301$(BUILDDIR)signpos2.obj: ./signpost.c ./puzzles.h
1302 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)signpos2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1303
1304$(BUILDDIR)singles.obj: ./singles.c ./puzzles.h ./latin.h
1305 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)singles.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1306
1307$(BUILDDIR)singles5.obj: ./singles.c ./puzzles.h ./latin.h
1308 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)singles5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1309
1310$(BUILDDIR)singles3.obj: ./singles.c ./puzzles.h ./latin.h
1311 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)singles3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1312
1313$(BUILDDIR)sixteen.obj: ./sixteen.c ./puzzles.h
1314 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)sixteen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1315
1316$(BUILDDIR)sixteen3.obj: ./sixteen.c ./puzzles.h
1317 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)sixteen3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1318
1319$(BUILDDIR)slant.obj: ./slant.c ./puzzles.h
1320 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)slant.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1321
1322$(BUILDDIR)slant5.obj: ./slant.c ./puzzles.h
1323 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)slant5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1324
1325$(BUILDDIR)slant2.obj: ./slant.c ./puzzles.h
1326 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)slant2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1327
1328$(BUILDDIR)solo.obj: ./solo.c ./puzzles.h
1329 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)solo.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1330
1331$(BUILDDIR)solo5.obj: ./solo.c ./puzzles.h
1332 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)solo5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1333
1334$(BUILDDIR)solo2.obj: ./solo.c ./puzzles.h
1335 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)solo2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1336
1337$(BUILDDIR)tdq.obj: ./tdq.c ./puzzles.h
1338 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tdq.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1339
1340$(BUILDDIR)tents.obj: ./tents.c ./puzzles.h ./maxflow.h
1341 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tents.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1342
1343$(BUILDDIR)tents5.obj: ./tents.c ./puzzles.h ./maxflow.h
1344 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tents5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1345
1346$(BUILDDIR)tents3.obj: ./tents.c ./puzzles.h ./maxflow.h
1347 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tents3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1348
1349$(BUILDDIR)towers.obj: ./towers.c ./puzzles.h ./latin.h
1350 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)towers.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1351
1352$(BUILDDIR)towers5.obj: ./towers.c ./puzzles.h ./latin.h
1353 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)towers5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1354
1355$(BUILDDIR)towers2.obj: ./towers.c ./puzzles.h ./latin.h
1356 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)towers2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1357
1358$(BUILDDIR)tracks.obj: ./tracks.c ./puzzles.h
1359 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tracks.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1360
1361$(BUILDDIR)tracks3.obj: ./tracks.c ./puzzles.h
1362 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tracks3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1363
1364$(BUILDDIR)tree234.obj: ./tree234.c ./tree234.h ./puzzles.h
1365 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tree234.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1366
1367$(BUILDDIR)twiddle.obj: ./twiddle.c ./puzzles.h
1368 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)twiddle.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1369
1370$(BUILDDIR)twiddle3.obj: ./twiddle.c ./puzzles.h
1371 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)twiddle3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1372
1373$(BUILDDIR)undead.obj: ./undead.c ./puzzles.h
1374 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)undead.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1375
1376$(BUILDDIR)undead3.obj: ./undead.c ./puzzles.h
1377 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)undead3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1378
1379$(BUILDDIR)unequal.obj: ./unequal.c ./puzzles.h ./latin.h
1380 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unequal.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1381
1382$(BUILDDIR)unequal5.obj: ./unequal.c ./puzzles.h ./latin.h
1383 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unequal5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1384
1385$(BUILDDIR)unequal2.obj: ./unequal.c ./puzzles.h ./latin.h
1386 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unequal2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1387
1388$(BUILDDIR)unruly.obj: ./unruly.c ./puzzles.h
1389 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unruly.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1390
1391$(BUILDDIR)unruly5.obj: ./unruly.c ./puzzles.h
1392 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unruly5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1393
1394$(BUILDDIR)unruly2.obj: ./unruly.c ./puzzles.h
1395 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unruly2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
1396
1397$(BUILDDIR)untangle.obj: ./untangle.c ./puzzles.h ./tree234.h
1398 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)untangle.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1399
1400$(BUILDDIR)untangl3.obj: ./untangle.c ./puzzles.h ./tree234.h
1401 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)untangl3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1402
1403$(BUILDDIR)version.obj: ./version.c ./version.h
1404 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)version.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1405
1406$(BUILDDIR)windows.obj: ./windows.c ./puzzles.h ./resource.h
1407 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)windows.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
1408
1409$(BUILDDIR)windows1.obj: ./windows.c ./puzzles.h ./resource.h
1410 $(CC) /Fo$(BUILDDIR)$(BUILDDIR)windows1.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
1411
1412
1413clean:
1414 rm -f $(BUILDDIR)*.obj $(BUILDDIR)*.exe $(BUILDDIR)*.res $(BUILDDIR)*.map \
1415 $(BUILDDIR)*.exe.manifest
diff --git a/apps/plugins/puzzles/src/Makefile.cyg b/apps/plugins/puzzles/src/Makefile.cyg
new file mode 100644
index 0000000000..4dcfd8ae2d
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.cyg
@@ -0,0 +1,718 @@
1# Makefile for puzzles under cygwin.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6# You can define this path to point at your tools if you need to
7# TOOLPATH = c:\cygwin\bin\ # or similar, if you're running Windows
8# TOOLPATH = /pkg/mingw32msvc/i386-mingw32msvc/bin/
9CC = $(TOOLPATH)gcc
10RC = $(TOOLPATH)windres
11# Uncomment the following two lines to compile under Winelib
12# CC = winegcc
13# RC = wrc
14# You may also need to tell windres where to find include files:
15# RCINC = --include-dir c:\cygwin\include\
16
17CFLAGS = -mno-cygwin -Wall -O2 -D_WINDOWS -DDEBUG -DWIN32S_COMPAT \
18 -D_NO_OLDNAMES -DNO_MULTIMON -DNO_HTMLHELP -I./ -Iicons/
19LDFLAGS = -mno-cygwin -s
20RCFLAGS = $(RCINC) --define WIN32=1 --define _WIN32=1 --define WINVER=0x0400 \
21 --define MINGW32_FIX=1 --include ./ --include icons/
22
23all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe \
24 fifteensolver.exe filling.exe fillingsolver.exe flip.exe \
25 flood.exe galaxies.exe galaxiespicture.exe \
26 galaxiessolver.exe guess.exe inertia.exe keen.exe \
27 keensolver.exe latincheck.exe lightup.exe lightupsolver.exe \
28 loopy.exe loopysolver.exe magnets.exe magnetssolver.exe \
29 map.exe mapsolver.exe mineobfusc.exe mines.exe netgame.exe \
30 netslide.exe nullgame.exe palisade.exe pattern.exe \
31 patternpicture.exe patternsolver.exe pearl.exe \
32 pearlbench.exe pegs.exe puzzles.exe range.exe rect.exe \
33 samegame.exe signpost.exe signpostsolver.exe singles.exe \
34 singlessolver.exe sixteen.exe slant.exe slantsolver.exe \
35 solo.exe solosolver.exe tents.exe tentssolver.exe towers.exe \
36 towerssolver.exe tracks.exe twiddle.exe undead.exe \
37 unequal.exe unequalsolver.exe unruly.exe unrulysolver.exe \
38 untangle.exe
39
40blackbox.exe: blackbox.o drawing.o malloc.o midend.o misc.o noicon.res.o \
41 printing.o random.o version.o windows.o
42 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,blackbox.map blackbox.o \
43 drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
44 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
45 -luser32 -lwinspool
46
47bridges.exe: bridges.o drawing.o dsf.o findloop.o malloc.o midend.o misc.o \
48 noicon.res.o printing.o random.o version.o windows.o
49 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,bridges.map bridges.o \
50 drawing.o dsf.o findloop.o malloc.o midend.o misc.o \
51 noicon.res.o printing.o random.o version.o windows.o \
52 -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
53
54cube.exe: cube.o drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
55 random.o version.o windows.o
56 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,cube.map cube.o drawing.o \
57 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
58 version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 \
59 -lwinspool
60
61dominosa.exe: dominosa.o drawing.o laydomino.o malloc.o midend.o misc.o \
62 noicon.res.o printing.o random.o version.o windows.o
63 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,dominosa.map dominosa.o \
64 drawing.o laydomino.o malloc.o midend.o misc.o noicon.res.o \
65 printing.o random.o version.o windows.o -lcomctl32 \
66 -lcomdlg32 -lgdi32 -luser32 -lwinspool
67
68fifteen.exe: drawing.o fifteen.o malloc.o midend.o misc.o noicon.res.o \
69 printing.o random.o version.o windows.o
70 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,fifteen.map drawing.o \
71 fifteen.o malloc.o midend.o misc.o noicon.res.o printing.o \
72 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
73 -luser32 -lwinspool
74
75fifteensolver.exe: fifteen2.o malloc.o misc.o nullfe.o random.o
76 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,fifteensolver.map fifteen2.o \
77 malloc.o misc.o nullfe.o random.o
78
79filling.exe: drawing.o dsf.o filling.o malloc.o midend.o misc.o noicon.res.o \
80 printing.o random.o version.o windows.o
81 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,filling.map drawing.o \
82 dsf.o filling.o malloc.o midend.o misc.o noicon.res.o \
83 printing.o random.o version.o windows.o -lcomctl32 \
84 -lcomdlg32 -lgdi32 -luser32 -lwinspool
85
86fillingsolver.exe: dsf.o filling2.o malloc.o misc.o nullfe.o random.o
87 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,fillingsolver.map dsf.o filling2.o \
88 malloc.o misc.o nullfe.o random.o
89
90flip.exe: drawing.o flip.o malloc.o midend.o misc.o noicon.res.o printing.o \
91 random.o tree234.o version.o windows.o
92 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,flip.map drawing.o flip.o \
93 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
94 tree234.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
95 -luser32 -lwinspool
96
97flood.exe: drawing.o flood.o malloc.o midend.o misc.o noicon.res.o \
98 printing.o random.o version.o windows.o
99 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,flood.map drawing.o \
100 flood.o malloc.o midend.o misc.o noicon.res.o printing.o \
101 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
102 -luser32 -lwinspool
103
104galaxies.exe: drawing.o dsf.o galaxies.o malloc.o midend.o misc.o \
105 noicon.res.o printing.o random.o version.o windows.o
106 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,galaxies.map drawing.o \
107 dsf.o galaxies.o malloc.o midend.o misc.o noicon.res.o \
108 printing.o random.o version.o windows.o -lcomctl32 \
109 -lcomdlg32 -lgdi32 -luser32 -lwinspool
110
111galaxiespicture.exe: dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o
112 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,galaxiespicture.map dsf.o galaxie4.o \
113 malloc.o misc.o nullfe.o random.o
114
115galaxiessolver.exe: dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o
116 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,galaxiessolver.map dsf.o galaxie2.o \
117 malloc.o misc.o nullfe.o random.o
118
119guess.exe: drawing.o guess.o malloc.o midend.o misc.o noicon.res.o \
120 printing.o random.o version.o windows.o
121 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,guess.map drawing.o \
122 guess.o malloc.o midend.o misc.o noicon.res.o printing.o \
123 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
124 -luser32 -lwinspool
125
126inertia.exe: drawing.o inertia.o malloc.o midend.o misc.o noicon.res.o \
127 printing.o random.o version.o windows.o
128 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,inertia.map drawing.o \
129 inertia.o malloc.o midend.o misc.o noicon.res.o printing.o \
130 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
131 -luser32 -lwinspool
132
133keen.exe: drawing.o dsf.o keen.o latin.o malloc.o maxflow.o midend.o misc.o \
134 noicon.res.o printing.o random.o tree234.o version.o \
135 windows.o
136 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,keen.map drawing.o dsf.o \
137 keen.o latin.o malloc.o maxflow.o midend.o misc.o \
138 noicon.res.o printing.o random.o tree234.o version.o \
139 windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
140
141keensolver.exe: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o nullfe.o \
142 random.o tree234.o
143 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,keensolver.map dsf.o keen2.o \
144 latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
145 tree234.o
146
147latincheck.exe: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \
148 tree234.o
149 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,latincheck.map latin8.o malloc.o \
150 maxflow.o misc.o nullfe.o random.o tree234.o
151
152lightup.exe: combi.o drawing.o lightup.o malloc.o midend.o misc.o \
153 noicon.res.o printing.o random.o version.o windows.o
154 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,lightup.map combi.o \
155 drawing.o lightup.o malloc.o midend.o misc.o noicon.res.o \
156 printing.o random.o version.o windows.o -lcomctl32 \
157 -lcomdlg32 -lgdi32 -luser32 -lwinspool
158
159lightupsolver.exe: combi.o lightup2.o malloc.o misc.o nullfe.o random.o
160 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,lightupsolver.map combi.o lightup2.o \
161 malloc.o misc.o nullfe.o random.o
162
163loopy.exe: drawing.o dsf.o grid.o loopgen.o loopy.o malloc.o midend.o misc.o \
164 noicon.res.o penrose.o printing.o random.o tree234.o \
165 version.o windows.o
166 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,loopy.map drawing.o dsf.o \
167 grid.o loopgen.o loopy.o malloc.o midend.o misc.o \
168 noicon.res.o penrose.o printing.o random.o tree234.o \
169 version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 \
170 -lwinspool
171
172loopysolver.exe: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \
173 penrose.o random.o tree234.o
174 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,loopysolver.map dsf.o grid.o \
175 loopgen.o loopy2.o malloc.o misc.o nullfe.o penrose.o \
176 random.o tree234.o
177
178magnets.exe: drawing.o laydomino.o magnets.o malloc.o midend.o misc.o \
179 noicon.res.o printing.o random.o version.o windows.o
180 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,magnets.map drawing.o \
181 laydomino.o magnets.o malloc.o midend.o misc.o noicon.res.o \
182 printing.o random.o version.o windows.o -lcomctl32 \
183 -lcomdlg32 -lgdi32 -luser32 -lwinspool
184
185magnetssolver.exe: laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o
186 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,magnetssolver.map laydomino.o \
187 magnets2.o malloc.o misc.o nullfe.o random.o
188
189map.exe: drawing.o dsf.o malloc.o map.o midend.o misc.o noicon.res.o \
190 printing.o random.o version.o windows.o
191 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,map.map drawing.o dsf.o \
192 malloc.o map.o midend.o misc.o noicon.res.o printing.o \
193 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
194 -luser32 -lwinspool
195
196mapsolver.exe: dsf.o malloc.o map2.o misc.o nullfe.o random.o
197 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,mapsolver.map dsf.o malloc.o map2.o \
198 misc.o nullfe.o random.o
199
200mineobfusc.exe: malloc.o mines2.o misc.o nullfe.o random.o tree234.o
201 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,mineobfusc.map malloc.o mines2.o \
202 misc.o nullfe.o random.o tree234.o
203
204mines.exe: drawing.o malloc.o midend.o mines.o misc.o noicon.res.o \
205 printing.o random.o tree234.o version.o windows.o
206 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,mines.map drawing.o \
207 malloc.o midend.o mines.o misc.o noicon.res.o printing.o \
208 random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \
209 -lgdi32 -luser32 -lwinspool
210
211netgame.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o net.o \
212 noicon.res.o printing.o random.o tree234.o version.o \
213 windows.o
214 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,netgame.map drawing.o \
215 dsf.o findloop.o malloc.o midend.o misc.o net.o noicon.res.o \
216 printing.o random.o tree234.o version.o windows.o -lcomctl32 \
217 -lcomdlg32 -lgdi32 -luser32 -lwinspool
218
219netslide.exe: drawing.o malloc.o midend.o misc.o netslide.o noicon.res.o \
220 printing.o random.o tree234.o version.o windows.o
221 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,netslide.map drawing.o \
222 malloc.o midend.o misc.o netslide.o noicon.res.o printing.o \
223 random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \
224 -lgdi32 -luser32 -lwinspool
225
226nullgame.exe: drawing.o malloc.o midend.o misc.o noicon.res.o nullgame.o \
227 printing.o random.o version.o windows.o
228 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,nullgame.map drawing.o \
229 malloc.o midend.o misc.o noicon.res.o nullgame.o printing.o \
230 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
231 -luser32 -lwinspool
232
233palisade.exe: divvy.o drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
234 palisade.o printing.o random.o version.o windows.o
235 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,palisade.map divvy.o \
236 drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
237 palisade.o printing.o random.o version.o windows.o \
238 -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
239
240pattern.exe: drawing.o malloc.o midend.o misc.o noicon.res.o pattern.o \
241 printing.o random.o version.o windows.o
242 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pattern.map drawing.o \
243 malloc.o midend.o misc.o noicon.res.o pattern.o printing.o \
244 random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
245 -luser32 -lwinspool
246
247patternpicture.exe: malloc.o misc.o nullfe.o pattern4.o random.o
248 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,patternpicture.map malloc.o misc.o \
249 nullfe.o pattern4.o random.o
250
251patternsolver.exe: malloc.o misc.o nullfe.o pattern2.o random.o
252 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,patternsolver.map malloc.o misc.o \
253 nullfe.o pattern2.o random.o
254
255pearl.exe: drawing.o dsf.o grid.o loopgen.o malloc.o midend.o misc.o pearl.o \
256 penrose.o printing.o random.o tdq.o tree234.o version.o \
257 windows.o
258 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pearl.map drawing.o dsf.o \
259 grid.o loopgen.o malloc.o midend.o misc.o pearl.o penrose.o \
260 printing.o random.o tdq.o tree234.o version.o windows.o \
261 -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
262
263pearlbench.exe: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \
264 penrose.o random.o tdq.o tree234.o
265 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,pearlbench.map dsf.o grid.o \
266 loopgen.o malloc.o misc.o nullfe.o pearl2.o penrose.o \
267 random.o tdq.o tree234.o
268
269pegs.exe: drawing.o malloc.o midend.o misc.o noicon.res.o pegs.o printing.o \
270 random.o tree234.o version.o windows.o
271 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pegs.map drawing.o \
272 malloc.o midend.o misc.o noicon.res.o pegs.o printing.o \
273 random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \
274 -lgdi32 -luser32 -lwinspool
275
276puzzles.exe: blackbo3.o bridges3.o combi.o cube3.o divvy.o dominos3.o \
277 drawing.o dsf.o fifteen5.o filling5.o findloop.o flip3.o \
278 flood3.o galaxie7.o grid.o guess3.o inertia3.o keen5.o \
279 latin.o laydomino.o lightup5.o list.o loopgen.o loopy5.o \
280 magnets5.o malloc.o map5.o maxflow.o midend.o mines5.o \
281 misc.o net3.o netslid3.o noicon.res.o palisad3.o pattern7.o \
282 pearl5.o pegs3.o penrose.o printing.o random.o range3.o \
283 rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \
284 solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \
285 twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \
286 version.o windows1.o
287 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,puzzles.map blackbo3.o \
288 bridges3.o combi.o cube3.o divvy.o dominos3.o drawing.o \
289 dsf.o fifteen5.o filling5.o findloop.o flip3.o flood3.o \
290 galaxie7.o grid.o guess3.o inertia3.o keen5.o latin.o \
291 laydomino.o lightup5.o list.o loopgen.o loopy5.o magnets5.o \
292 malloc.o map5.o maxflow.o midend.o mines5.o misc.o net3.o \
293 netslid3.o noicon.res.o palisad3.o pattern7.o pearl5.o \
294 pegs3.o penrose.o printing.o random.o range3.o rect3.o \
295 samegam3.o signpos5.o singles5.o sixteen3.o slant5.o solo5.o \
296 tdq.o tents5.o towers5.o tracks3.o tree234.o twiddle3.o \
297 undead3.o unequal5.o unruly5.o untangl3.o version.o \
298 windows1.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
299
300range.exe: drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o printing.o \
301 random.o range.o version.o windows.o
302 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,range.map drawing.o dsf.o \
303 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
304 range.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
305 -luser32 -lwinspool
306
307rect.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
308 random.o rect.o version.o windows.o
309 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,rect.map drawing.o \
310 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
311 rect.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
312 -luser32 -lwinspool
313
314samegame.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
315 random.o samegame.o version.o windows.o
316 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,samegame.map drawing.o \
317 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
318 samegame.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
319 -luser32 -lwinspool
320
321signpost.exe: drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
322 printing.o random.o signpost.o version.o windows.o
323 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,signpost.map drawing.o \
324 dsf.o malloc.o midend.o misc.o noicon.res.o printing.o \
325 random.o signpost.o version.o windows.o -lcomctl32 \
326 -lcomdlg32 -lgdi32 -luser32 -lwinspool
327
328signpostsolver.exe: dsf.o malloc.o misc.o nullfe.o random.o signpos2.o
329 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,signpostsolver.map dsf.o malloc.o \
330 misc.o nullfe.o random.o signpos2.o
331
332singles.exe: drawing.o dsf.o latin.o malloc.o maxflow.o midend.o misc.o \
333 noicon.res.o printing.o random.o singles.o tree234.o \
334 version.o windows.o
335 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,singles.map drawing.o \
336 dsf.o latin.o malloc.o maxflow.o midend.o misc.o \
337 noicon.res.o printing.o random.o singles.o tree234.o \
338 version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 \
339 -lwinspool
340
341singlessolver.exe: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o random.o \
342 singles3.o tree234.o
343 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,singlessolver.map dsf.o latin.o \
344 malloc.o maxflow.o misc.o nullfe.o random.o singles3.o \
345 tree234.o
346
347sixteen.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
348 random.o sixteen.o version.o windows.o
349 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,sixteen.map drawing.o \
350 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
351 sixteen.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
352 -luser32 -lwinspool
353
354slant.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o noicon.res.o \
355 printing.o random.o slant.o version.o windows.o
356 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,slant.map drawing.o dsf.o \
357 findloop.o malloc.o midend.o misc.o noicon.res.o printing.o \
358 random.o slant.o version.o windows.o -lcomctl32 -lcomdlg32 \
359 -lgdi32 -luser32 -lwinspool
360
361slantsolver.exe: dsf.o findloop.o malloc.o misc.o nullfe.o random.o slant2.o
362 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,slantsolver.map dsf.o findloop.o \
363 malloc.o misc.o nullfe.o random.o slant2.o
364
365solo.exe: divvy.o drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
366 printing.o random.o solo.o version.o windows.o
367 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,solo.map divvy.o drawing.o \
368 dsf.o malloc.o midend.o misc.o noicon.res.o printing.o \
369 random.o solo.o version.o windows.o -lcomctl32 -lcomdlg32 \
370 -lgdi32 -luser32 -lwinspool
371
372solosolver.exe: divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o
373 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,solosolver.map divvy.o dsf.o \
374 malloc.o misc.o nullfe.o random.o solo2.o
375
376tents.exe: drawing.o dsf.o malloc.o maxflow.o midend.o misc.o noicon.res.o \
377 printing.o random.o tents.o version.o windows.o
378 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,tents.map drawing.o dsf.o \
379 malloc.o maxflow.o midend.o misc.o noicon.res.o printing.o \
380 random.o tents.o version.o windows.o -lcomctl32 -lcomdlg32 \
381 -lgdi32 -luser32 -lwinspool
382
383tentssolver.exe: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o tents3.o
384 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,tentssolver.map dsf.o malloc.o \
385 maxflow.o misc.o nullfe.o random.o tents3.o
386
387towers.exe: drawing.o latin.o malloc.o maxflow.o midend.o misc.o \
388 noicon.res.o printing.o random.o towers.o tree234.o \
389 version.o windows.o
390 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,towers.map drawing.o \
391 latin.o malloc.o maxflow.o midend.o misc.o noicon.res.o \
392 printing.o random.o towers.o tree234.o version.o windows.o \
393 -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
394
395towerssolver.exe: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
396 towers2.o tree234.o
397 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,towerssolver.map latin6.o malloc.o \
398 maxflow.o misc.o nullfe.o random.o towers2.o tree234.o
399
400tracks.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o noicon.res.o \
401 printing.o random.o tracks.o version.o windows.o
402 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,tracks.map drawing.o dsf.o \
403 findloop.o malloc.o midend.o misc.o noicon.res.o printing.o \
404 random.o tracks.o version.o windows.o -lcomctl32 -lcomdlg32 \
405 -lgdi32 -luser32 -lwinspool
406
407twiddle.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
408 random.o twiddle.o version.o windows.o
409 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,twiddle.map drawing.o \
410 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
411 twiddle.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
412 -luser32 -lwinspool
413
414undead.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
415 random.o undead.o version.o windows.o
416 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,undead.map drawing.o \
417 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
418 undead.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
419 -luser32 -lwinspool
420
421unequal.exe: drawing.o latin.o malloc.o maxflow.o midend.o misc.o \
422 noicon.res.o printing.o random.o tree234.o unequal.o \
423 version.o windows.o
424 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,unequal.map drawing.o \
425 latin.o malloc.o maxflow.o midend.o misc.o noicon.res.o \
426 printing.o random.o tree234.o unequal.o version.o windows.o \
427 -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
428
429unequalsolver.exe: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
430 tree234.o unequal2.o
431 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,unequalsolver.map latin6.o malloc.o \
432 maxflow.o misc.o nullfe.o random.o tree234.o unequal2.o
433
434unruly.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
435 random.o unruly.o version.o windows.o
436 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,unruly.map drawing.o \
437 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
438 unruly.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
439 -luser32 -lwinspool
440
441unrulysolver.exe: malloc.o misc.o nullfe.o random.o unruly2.o
442 $(CC) $(LDFLAGS) -o $@ -Wl,-Map,unrulysolver.map malloc.o misc.o \
443 nullfe.o random.o unruly2.o
444
445untangle.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
446 random.o tree234.o untangle.o version.o windows.o
447 $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,untangle.map drawing.o \
448 malloc.o midend.o misc.o noicon.res.o printing.o random.o \
449 tree234.o untangle.o version.o windows.o -lcomctl32 \
450 -lcomdlg32 -lgdi32 -luser32 -lwinspool
451
452blackbox.o: ./blackbox.c ./puzzles.h
453 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
454blackbo3.o: ./blackbox.c ./puzzles.h
455 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
456bridges.o: ./bridges.c ./puzzles.h
457 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
458bridges3.o: ./bridges.c ./puzzles.h
459 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
460combi.o: ./combi.c ./puzzles.h
461 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
462cube.o: ./cube.c ./puzzles.h
463 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
464cube3.o: ./cube.c ./puzzles.h
465 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
466divvy.o: ./divvy.c ./puzzles.h
467 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
468dominosa.o: ./dominosa.c ./puzzles.h
469 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
470dominos3.o: ./dominosa.c ./puzzles.h
471 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
472drawing.o: ./drawing.c ./puzzles.h
473 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
474dsf.o: ./dsf.c ./puzzles.h
475 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
476fifteen.o: ./fifteen.c ./puzzles.h
477 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
478fifteen5.o: ./fifteen.c ./puzzles.h
479 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
480fifteen2.o: ./fifteen.c ./puzzles.h
481 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
482filling.o: ./filling.c ./puzzles.h
483 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
484filling5.o: ./filling.c ./puzzles.h
485 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
486filling2.o: ./filling.c ./puzzles.h
487 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
488findloop.o: ./findloop.c ./puzzles.h
489 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
490flip.o: ./flip.c ./puzzles.h ./tree234.h
491 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
492flip3.o: ./flip.c ./puzzles.h ./tree234.h
493 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
494flood.o: ./flood.c ./puzzles.h
495 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
496flood3.o: ./flood.c ./puzzles.h
497 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
498galaxies.o: ./galaxies.c ./puzzles.h
499 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
500galaxie7.o: ./galaxies.c ./puzzles.h
501 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
502galaxie4.o: ./galaxies.c ./puzzles.h
503 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
504galaxie2.o: ./galaxies.c ./puzzles.h
505 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
506grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
507 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
508gtk.o: ./gtk.c ./puzzles.h
509 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
510guess.o: ./guess.c ./puzzles.h
511 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
512guess3.o: ./guess.c ./puzzles.h
513 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
514inertia.o: ./inertia.c ./puzzles.h
515 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
516inertia3.o: ./inertia.c ./puzzles.h
517 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
518keen.o: ./keen.c ./puzzles.h ./latin.h
519 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
520keen5.o: ./keen.c ./puzzles.h ./latin.h
521 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
522keen2.o: ./keen.c ./puzzles.h ./latin.h
523 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
524latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
525 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
526latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
527 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
528latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
529 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
530laydomino.o: ./laydomino.c ./puzzles.h
531 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
532lightup.o: ./lightup.c ./puzzles.h
533 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
534lightup5.o: ./lightup.c ./puzzles.h
535 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
536lightup2.o: ./lightup.c ./puzzles.h
537 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
538list.o: ./list.c ./puzzles.h
539 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
540loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
541 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
542loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
543 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
544loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
545 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
546loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
547 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
548magnets.o: ./magnets.c ./puzzles.h
549 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
550magnets5.o: ./magnets.c ./puzzles.h
551 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
552magnets2.o: ./magnets.c ./puzzles.h
553 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
554malloc.o: ./malloc.c ./puzzles.h
555 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
556map.o: ./map.c ./puzzles.h
557 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
558map5.o: ./map.c ./puzzles.h
559 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
560map2.o: ./map.c ./puzzles.h
561 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
562maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
563 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
564midend.o: ./midend.c ./puzzles.h
565 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
566mines.o: ./mines.c ./tree234.h ./puzzles.h
567 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
568mines5.o: ./mines.c ./tree234.h ./puzzles.h
569 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
570mines2.o: ./mines.c ./tree234.h ./puzzles.h
571 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
572misc.o: ./misc.c ./puzzles.h
573 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
574net.o: ./net.c ./puzzles.h ./tree234.h
575 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
576net3.o: ./net.c ./puzzles.h ./tree234.h
577 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
578netslide.o: ./netslide.c ./puzzles.h ./tree234.h
579 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
580netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
581 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
582no-icon.o: ./no-icon.c
583 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
584noicon.res.o: ./noicon.rc ./puzzles.rc2 ./resource.h
585 $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@
586nullfe.o: ./nullfe.c ./puzzles.h
587 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
588nullgame.o: ./nullgame.c ./puzzles.h
589 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
590obfusc.o: ./obfusc.c ./puzzles.h
591 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
592osx.o: ./osx.m ./puzzles.h
593 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
594palisade.o: ./palisade.c ./puzzles.h
595 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
596palisad3.o: ./palisade.c ./puzzles.h
597 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
598pattern.o: ./pattern.c ./puzzles.h
599 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
600pattern7.o: ./pattern.c ./puzzles.h
601 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
602pattern4.o: ./pattern.c ./puzzles.h
603 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
604pattern2.o: ./pattern.c ./puzzles.h
605 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
606pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
607 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
608pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
609 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
610pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
611 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
612pegs.o: ./pegs.c ./puzzles.h ./tree234.h
613 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
614pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
615 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
616penrose.o: ./penrose.c ./puzzles.h ./penrose.h
617 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
618printing.o: ./printing.c ./puzzles.h
619 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
620ps.o: ./ps.c ./puzzles.h
621 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
622random.o: ./random.c ./puzzles.h
623 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
624range.o: ./range.c ./puzzles.h
625 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
626range3.o: ./range.c ./puzzles.h
627 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
628rect.o: ./rect.c ./puzzles.h
629 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
630rect3.o: ./rect.c ./puzzles.h
631 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
632samegame.o: ./samegame.c ./puzzles.h
633 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
634samegam3.o: ./samegame.c ./puzzles.h
635 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
636signpost.o: ./signpost.c ./puzzles.h
637 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
638signpos5.o: ./signpost.c ./puzzles.h
639 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
640signpos2.o: ./signpost.c ./puzzles.h
641 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
642singles.o: ./singles.c ./puzzles.h ./latin.h
643 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
644singles5.o: ./singles.c ./puzzles.h ./latin.h
645 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
646singles3.o: ./singles.c ./puzzles.h ./latin.h
647 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
648sixteen.o: ./sixteen.c ./puzzles.h
649 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
650sixteen3.o: ./sixteen.c ./puzzles.h
651 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
652slant.o: ./slant.c ./puzzles.h
653 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
654slant5.o: ./slant.c ./puzzles.h
655 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
656slant2.o: ./slant.c ./puzzles.h
657 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
658solo.o: ./solo.c ./puzzles.h
659 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
660solo5.o: ./solo.c ./puzzles.h
661 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
662solo2.o: ./solo.c ./puzzles.h
663 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
664tdq.o: ./tdq.c ./puzzles.h
665 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
666tents.o: ./tents.c ./puzzles.h ./maxflow.h
667 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
668tents5.o: ./tents.c ./puzzles.h ./maxflow.h
669 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
670tents3.o: ./tents.c ./puzzles.h ./maxflow.h
671 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
672towers.o: ./towers.c ./puzzles.h ./latin.h
673 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
674towers5.o: ./towers.c ./puzzles.h ./latin.h
675 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
676towers2.o: ./towers.c ./puzzles.h ./latin.h
677 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
678tracks.o: ./tracks.c ./puzzles.h
679 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
680tracks3.o: ./tracks.c ./puzzles.h
681 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
682tree234.o: ./tree234.c ./tree234.h ./puzzles.h
683 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
684twiddle.o: ./twiddle.c ./puzzles.h
685 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
686twiddle3.o: ./twiddle.c ./puzzles.h
687 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
688undead.o: ./undead.c ./puzzles.h
689 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
690undead3.o: ./undead.c ./puzzles.h
691 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
692unequal.o: ./unequal.c ./puzzles.h ./latin.h
693 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
694unequal5.o: ./unequal.c ./puzzles.h ./latin.h
695 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
696unequal2.o: ./unequal.c ./puzzles.h ./latin.h
697 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
698unruly.o: ./unruly.c ./puzzles.h
699 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
700unruly5.o: ./unruly.c ./puzzles.h
701 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
702unruly2.o: ./unruly.c ./puzzles.h
703 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
704untangle.o: ./untangle.c ./puzzles.h ./tree234.h
705 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
706untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
707 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
708version.o: ./version.c ./version.h
709 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
710windows.o: ./windows.c ./puzzles.h ./resource.h
711 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
712windows1.o: ./windows.c ./puzzles.h ./resource.h
713 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
714
715
716clean:
717 rm -f *.o *.exe *.res.o *.map
718
diff --git a/apps/plugins/puzzles/src/Makefile.emcc b/apps/plugins/puzzles/src/Makefile.emcc
new file mode 100644
index 0000000000..9677b2a1cf
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.emcc
@@ -0,0 +1,497 @@
1# Makefile for puzzles using Emscripten. Requires GNU make.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6# This can be set on the command line to point at the emcc command,
7# if it is not on your PATH.
8EMCC = emcc
9
10CFLAGS = -DSLOW_SYSTEM -I./ -Iicons/
11
12all: $(OUTPREFIX)blackbox.js $(OUTPREFIX)bridges.js $(OUTPREFIX)cube.js \
13 $(OUTPREFIX)dominosa.js $(OUTPREFIX)fifteen.js \
14 $(OUTPREFIX)filling.js $(OUTPREFIX)flip.js \
15 $(OUTPREFIX)flood.js $(OUTPREFIX)galaxies.js \
16 $(OUTPREFIX)guess.js $(OUTPREFIX)inertia.js \
17 $(OUTPREFIX)keen.js $(OUTPREFIX)lightup.js \
18 $(OUTPREFIX)loopy.js $(OUTPREFIX)magnets.js \
19 $(OUTPREFIX)map.js $(OUTPREFIX)mines.js $(OUTPREFIX)net.js \
20 $(OUTPREFIX)netslide.js $(OUTPREFIX)nullgame.js \
21 $(OUTPREFIX)palisade.js $(OUTPREFIX)pattern.js \
22 $(OUTPREFIX)pearl.js $(OUTPREFIX)pegs.js \
23 $(OUTPREFIX)range.js $(OUTPREFIX)rect.js \
24 $(OUTPREFIX)samegame.js $(OUTPREFIX)signpost.js \
25 $(OUTPREFIX)singles.js $(OUTPREFIX)sixteen.js \
26 $(OUTPREFIX)slant.js $(OUTPREFIX)solo.js \
27 $(OUTPREFIX)tents.js $(OUTPREFIX)towers.js \
28 $(OUTPREFIX)tracks.js $(OUTPREFIX)twiddle.js \
29 $(OUTPREFIX)undead.js $(OUTPREFIX)unequal.js \
30 $(OUTPREFIX)unruly.js $(OUTPREFIX)untangle.js
31
32$(OUTPREFIX)blackbox.js: blackbox.o drawing.o emcc.o malloc.o midend.o \
33 misc.o no-icon.o printing.o ps.o random.o version.o \
34 emccpre.js emcclib.js emccx.json
35 $(EMCC) -o $(OUTPREFIX)blackbox.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" blackbox.o drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
36
37$(OUTPREFIX)bridges.js: bridges.o drawing.o dsf.o findloop.o emcc.o malloc.o \
38 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
39 emccpre.js emcclib.js emccx.json
40 $(EMCC) -o $(OUTPREFIX)bridges.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" bridges.o drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
41
42$(OUTPREFIX)cube.js: cube.o drawing.o emcc.o malloc.o midend.o misc.o \
43 no-icon.o printing.o ps.o random.o version.o emccpre.js \
44 emcclib.js emccx.json
45 $(EMCC) -o $(OUTPREFIX)cube.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" cube.o drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
46
47$(OUTPREFIX)dominosa.js: dominosa.o drawing.o emcc.o laydomino.o malloc.o \
48 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
49 emccpre.js emcclib.js emccx.json
50 $(EMCC) -o $(OUTPREFIX)dominosa.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" dominosa.o drawing.o emcc.o laydomino.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
51
52$(OUTPREFIX)fifteen.js: drawing.o fifteen.o emcc.o malloc.o midend.o misc.o \
53 no-icon.o printing.o ps.o random.o version.o emccpre.js \
54 emcclib.js emccx.json
55 $(EMCC) -o $(OUTPREFIX)fifteen.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o fifteen.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
56
57$(OUTPREFIX)filling.js: drawing.o dsf.o filling.o emcc.o malloc.o midend.o \
58 misc.o no-icon.o printing.o ps.o random.o version.o \
59 emccpre.js emcclib.js emccx.json
60 $(EMCC) -o $(OUTPREFIX)filling.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o filling.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
61
62$(OUTPREFIX)flip.js: drawing.o flip.o emcc.o malloc.o midend.o misc.o \
63 no-icon.o printing.o ps.o random.o tree234.o version.o \
64 emccpre.js emcclib.js emccx.json
65 $(EMCC) -o $(OUTPREFIX)flip.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o flip.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o version.o
66
67$(OUTPREFIX)flood.js: drawing.o flood.o emcc.o malloc.o midend.o misc.o \
68 no-icon.o printing.o ps.o random.o version.o emccpre.js \
69 emcclib.js emccx.json
70 $(EMCC) -o $(OUTPREFIX)flood.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o flood.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
71
72$(OUTPREFIX)galaxies.js: drawing.o dsf.o galaxies.o emcc.o malloc.o midend.o \
73 misc.o no-icon.o printing.o ps.o random.o version.o \
74 emccpre.js emcclib.js emccx.json
75 $(EMCC) -o $(OUTPREFIX)galaxies.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o galaxies.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
76
77$(OUTPREFIX)guess.js: drawing.o emcc.o guess.o malloc.o midend.o misc.o \
78 no-icon.o printing.o ps.o random.o version.o emccpre.js \
79 emcclib.js emccx.json
80 $(EMCC) -o $(OUTPREFIX)guess.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o guess.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
81
82$(OUTPREFIX)inertia.js: drawing.o emcc.o inertia.o malloc.o midend.o misc.o \
83 no-icon.o printing.o ps.o random.o version.o emccpre.js \
84 emcclib.js emccx.json
85 $(EMCC) -o $(OUTPREFIX)inertia.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o inertia.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
86
87$(OUTPREFIX)keen.js: drawing.o dsf.o emcc.o keen.o latin.o malloc.o \
88 maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o \
89 tree234.o version.o emccpre.js emcclib.js emccx.json
90 $(EMCC) -o $(OUTPREFIX)keen.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o keen.o latin.o malloc.o maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o version.o
91
92$(OUTPREFIX)lightup.js: combi.o drawing.o emcc.o lightup.o malloc.o midend.o \
93 misc.o no-icon.o printing.o ps.o random.o version.o \
94 emccpre.js emcclib.js emccx.json
95 $(EMCC) -o $(OUTPREFIX)lightup.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" combi.o drawing.o emcc.o lightup.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
96
97$(OUTPREFIX)loopy.js: drawing.o dsf.o grid.o emcc.o loopgen.o loopy.o \
98 malloc.o midend.o misc.o no-icon.o penrose.o printing.o ps.o \
99 random.o tree234.o version.o emccpre.js emcclib.js \
100 emccx.json
101 $(EMCC) -o $(OUTPREFIX)loopy.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o grid.o emcc.o loopgen.o loopy.o malloc.o midend.o misc.o no-icon.o penrose.o printing.o ps.o random.o tree234.o version.o
102
103$(OUTPREFIX)magnets.js: drawing.o emcc.o laydomino.o magnets.o malloc.o \
104 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
105 emccpre.js emcclib.js emccx.json
106 $(EMCC) -o $(OUTPREFIX)magnets.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o laydomino.o magnets.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
107
108$(OUTPREFIX)map.js: drawing.o dsf.o emcc.o malloc.o map.o midend.o misc.o \
109 no-icon.o printing.o ps.o random.o version.o emccpre.js \
110 emcclib.js emccx.json
111 $(EMCC) -o $(OUTPREFIX)map.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o malloc.o map.o midend.o misc.o no-icon.o printing.o ps.o random.o version.o
112
113$(OUTPREFIX)mines.js: drawing.o emcc.o malloc.o midend.o mines.o misc.o \
114 no-icon.o printing.o ps.o random.o tree234.o version.o \
115 emccpre.js emcclib.js emccx.json
116 $(EMCC) -o $(OUTPREFIX)mines.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o mines.o misc.o no-icon.o printing.o ps.o random.o tree234.o version.o
117
118$(OUTPREFIX)net.js: drawing.o dsf.o findloop.o emcc.o malloc.o midend.o \
119 misc.o net.o no-icon.o printing.o ps.o random.o tree234.o \
120 version.o emccpre.js emcclib.js emccx.json
121 $(EMCC) -o $(OUTPREFIX)net.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o net.o no-icon.o printing.o ps.o random.o tree234.o version.o
122
123$(OUTPREFIX)netslide.js: drawing.o emcc.o malloc.o midend.o misc.o \
124 netslide.o no-icon.o printing.o ps.o random.o tree234.o \
125 version.o emccpre.js emcclib.js emccx.json
126 $(EMCC) -o $(OUTPREFIX)netslide.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o netslide.o no-icon.o printing.o ps.o random.o tree234.o version.o
127
128$(OUTPREFIX)nullgame.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
129 nullgame.o printing.o ps.o random.o version.o emccpre.js \
130 emcclib.js emccx.json
131 $(EMCC) -o $(OUTPREFIX)nullgame.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o nullgame.o printing.o ps.o random.o version.o
132
133$(OUTPREFIX)palisade.js: divvy.o drawing.o dsf.o emcc.o malloc.o midend.o \
134 misc.o no-icon.o palisade.o printing.o ps.o random.o \
135 version.o emccpre.js emcclib.js emccx.json
136 $(EMCC) -o $(OUTPREFIX)palisade.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" divvy.o drawing.o dsf.o emcc.o malloc.o midend.o misc.o no-icon.o palisade.o printing.o ps.o random.o version.o
137
138$(OUTPREFIX)pattern.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
139 pattern.o printing.o ps.o random.o version.o emccpre.js \
140 emcclib.js emccx.json
141 $(EMCC) -o $(OUTPREFIX)pattern.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o pattern.o printing.o ps.o random.o version.o
142
143$(OUTPREFIX)pearl.js: drawing.o dsf.o grid.o emcc.o loopgen.o malloc.o \
144 midend.o misc.o no-icon.o pearl.o penrose.o printing.o ps.o \
145 random.o tdq.o tree234.o version.o emccpre.js emcclib.js \
146 emccx.json
147 $(EMCC) -o $(OUTPREFIX)pearl.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o grid.o emcc.o loopgen.o malloc.o midend.o misc.o no-icon.o pearl.o penrose.o printing.o ps.o random.o tdq.o tree234.o version.o
148
149$(OUTPREFIX)pegs.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
150 pegs.o printing.o ps.o random.o tree234.o version.o \
151 emccpre.js emcclib.js emccx.json
152 $(EMCC) -o $(OUTPREFIX)pegs.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o pegs.o printing.o ps.o random.o tree234.o version.o
153
154$(OUTPREFIX)range.js: drawing.o dsf.o emcc.o malloc.o midend.o misc.o \
155 no-icon.o printing.o ps.o random.o range.o version.o \
156 emccpre.js emcclib.js emccx.json
157 $(EMCC) -o $(OUTPREFIX)range.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o range.o version.o
158
159$(OUTPREFIX)rect.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
160 printing.o ps.o random.o rect.o version.o emccpre.js \
161 emcclib.js emccx.json
162 $(EMCC) -o $(OUTPREFIX)rect.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o rect.o version.o
163
164$(OUTPREFIX)samegame.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
165 printing.o ps.o random.o samegame.o version.o emccpre.js \
166 emcclib.js emccx.json
167 $(EMCC) -o $(OUTPREFIX)samegame.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o samegame.o version.o
168
169$(OUTPREFIX)signpost.js: drawing.o dsf.o emcc.o malloc.o midend.o misc.o \
170 no-icon.o printing.o ps.o random.o signpost.o version.o \
171 emccpre.js emcclib.js emccx.json
172 $(EMCC) -o $(OUTPREFIX)signpost.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o signpost.o version.o
173
174$(OUTPREFIX)singles.js: drawing.o dsf.o emcc.o latin.o malloc.o maxflow.o \
175 midend.o misc.o no-icon.o printing.o ps.o random.o singles.o \
176 tree234.o version.o emccpre.js emcclib.js emccx.json
177 $(EMCC) -o $(OUTPREFIX)singles.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o latin.o malloc.o maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o singles.o tree234.o version.o
178
179$(OUTPREFIX)sixteen.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
180 printing.o ps.o random.o sixteen.o version.o emccpre.js \
181 emcclib.js emccx.json
182 $(EMCC) -o $(OUTPREFIX)sixteen.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o sixteen.o version.o
183
184$(OUTPREFIX)slant.js: drawing.o dsf.o findloop.o emcc.o malloc.o midend.o \
185 misc.o no-icon.o printing.o ps.o random.o slant.o version.o \
186 emccpre.js emcclib.js emccx.json
187 $(EMCC) -o $(OUTPREFIX)slant.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o slant.o version.o
188
189$(OUTPREFIX)solo.js: divvy.o drawing.o dsf.o emcc.o malloc.o midend.o misc.o \
190 no-icon.o printing.o ps.o random.o solo.o version.o \
191 emccpre.js emcclib.js emccx.json
192 $(EMCC) -o $(OUTPREFIX)solo.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" divvy.o drawing.o dsf.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o solo.o version.o
193
194$(OUTPREFIX)tents.js: drawing.o dsf.o emcc.o malloc.o maxflow.o midend.o \
195 misc.o no-icon.o printing.o ps.o random.o tents.o version.o \
196 emccpre.js emcclib.js emccx.json
197 $(EMCC) -o $(OUTPREFIX)tents.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o emcc.o malloc.o maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o tents.o version.o
198
199$(OUTPREFIX)towers.js: drawing.o emcc.o latin.o malloc.o maxflow.o midend.o \
200 misc.o no-icon.o printing.o ps.o random.o towers.o tree234.o \
201 version.o emccpre.js emcclib.js emccx.json
202 $(EMCC) -o $(OUTPREFIX)towers.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o latin.o malloc.o maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o towers.o tree234.o version.o
203
204$(OUTPREFIX)tracks.js: drawing.o dsf.o findloop.o emcc.o malloc.o midend.o \
205 misc.o no-icon.o printing.o ps.o random.o tracks.o version.o \
206 emccpre.js emcclib.js emccx.json
207 $(EMCC) -o $(OUTPREFIX)tracks.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o dsf.o findloop.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o tracks.o version.o
208
209$(OUTPREFIX)twiddle.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
210 printing.o ps.o random.o twiddle.o version.o emccpre.js \
211 emcclib.js emccx.json
212 $(EMCC) -o $(OUTPREFIX)twiddle.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o twiddle.o version.o
213
214$(OUTPREFIX)undead.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
215 printing.o ps.o random.o undead.o version.o emccpre.js \
216 emcclib.js emccx.json
217 $(EMCC) -o $(OUTPREFIX)undead.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o undead.o version.o
218
219$(OUTPREFIX)unequal.js: drawing.o emcc.o latin.o malloc.o maxflow.o midend.o \
220 misc.o no-icon.o printing.o ps.o random.o tree234.o \
221 unequal.o version.o emccpre.js emcclib.js emccx.json
222 $(EMCC) -o $(OUTPREFIX)unequal.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o latin.o malloc.o maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o unequal.o version.o
223
224$(OUTPREFIX)unruly.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
225 printing.o ps.o random.o unruly.o version.o emccpre.js \
226 emcclib.js emccx.json
227 $(EMCC) -o $(OUTPREFIX)unruly.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o unruly.o version.o
228
229$(OUTPREFIX)untangle.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
230 printing.o ps.o random.o tree234.o untangle.o version.o \
231 emccpre.js emcclib.js emccx.json
232 $(EMCC) -o $(OUTPREFIX)untangle.js -O2 -s ASM_JS=1 --pre-js emccpre.js --js-library emcclib.js -s EXPORTED_FUNCTIONS="`sed 's://.*::' emccx.json | tr -d ' \n'`" drawing.o emcc.o malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o untangle.o version.o
233
234blackbox.o: ./blackbox.c ./puzzles.h
235 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
236blackbo3.o: ./blackbox.c ./puzzles.h
237 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
238bridges.o: ./bridges.c ./puzzles.h
239 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
240bridges3.o: ./bridges.c ./puzzles.h
241 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
242combi.o: ./combi.c ./puzzles.h
243 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
244cube.o: ./cube.c ./puzzles.h
245 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
246cube3.o: ./cube.c ./puzzles.h
247 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
248divvy.o: ./divvy.c ./puzzles.h
249 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
250dominosa.o: ./dominosa.c ./puzzles.h
251 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
252dominos3.o: ./dominosa.c ./puzzles.h
253 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
254drawing.o: ./drawing.c ./puzzles.h
255 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
256dsf.o: ./dsf.c ./puzzles.h
257 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
258fifteen.o: ./fifteen.c ./puzzles.h
259 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
260fifteen5.o: ./fifteen.c ./puzzles.h
261 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
262fifteen2.o: ./fifteen.c ./puzzles.h
263 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
264filling.o: ./filling.c ./puzzles.h
265 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
266filling5.o: ./filling.c ./puzzles.h
267 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
268filling2.o: ./filling.c ./puzzles.h
269 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
270findloop.o: ./findloop.c ./puzzles.h
271 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
272flip.o: ./flip.c ./puzzles.h ./tree234.h
273 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
274flip3.o: ./flip.c ./puzzles.h ./tree234.h
275 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
276flood.o: ./flood.c ./puzzles.h
277 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
278flood3.o: ./flood.c ./puzzles.h
279 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
280galaxies.o: ./galaxies.c ./puzzles.h
281 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
282galaxie7.o: ./galaxies.c ./puzzles.h
283 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
284galaxie4.o: ./galaxies.c ./puzzles.h
285 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
286galaxie2.o: ./galaxies.c ./puzzles.h
287 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
288grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
289 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
290emcc.o: ./emcc.c ./puzzles.h
291 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
292guess.o: ./guess.c ./puzzles.h
293 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
294guess3.o: ./guess.c ./puzzles.h
295 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
296inertia.o: ./inertia.c ./puzzles.h
297 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
298inertia3.o: ./inertia.c ./puzzles.h
299 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
300keen.o: ./keen.c ./puzzles.h ./latin.h
301 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
302keen5.o: ./keen.c ./puzzles.h ./latin.h
303 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
304keen2.o: ./keen.c ./puzzles.h ./latin.h
305 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
306latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
307 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
308latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
309 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
310latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
311 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
312laydomino.o: ./laydomino.c ./puzzles.h
313 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
314lightup.o: ./lightup.c ./puzzles.h
315 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
316lightup5.o: ./lightup.c ./puzzles.h
317 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
318lightup2.o: ./lightup.c ./puzzles.h
319 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
320list.o: ./list.c ./puzzles.h
321 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
322loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
323 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
324loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
325 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
326loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
327 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
328loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
329 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
330magnets.o: ./magnets.c ./puzzles.h
331 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
332magnets5.o: ./magnets.c ./puzzles.h
333 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
334magnets2.o: ./magnets.c ./puzzles.h
335 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
336malloc.o: ./malloc.c ./puzzles.h
337 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
338map.o: ./map.c ./puzzles.h
339 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
340map5.o: ./map.c ./puzzles.h
341 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
342map2.o: ./map.c ./puzzles.h
343 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
344maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
345 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
346midend.o: ./midend.c ./puzzles.h
347 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
348mines.o: ./mines.c ./tree234.h ./puzzles.h
349 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
350mines5.o: ./mines.c ./tree234.h ./puzzles.h
351 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
352mines2.o: ./mines.c ./tree234.h ./puzzles.h
353 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
354misc.o: ./misc.c ./puzzles.h
355 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
356net.o: ./net.c ./puzzles.h ./tree234.h
357 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
358net3.o: ./net.c ./puzzles.h ./tree234.h
359 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
360netslide.o: ./netslide.c ./puzzles.h ./tree234.h
361 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
362netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
363 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
364no-icon.o: ./no-icon.c
365 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
366nullfe.o: ./nullfe.c ./puzzles.h
367 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
368nullgame.o: ./nullgame.c ./puzzles.h
369 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
370obfusc.o: ./obfusc.c ./puzzles.h
371 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
372osx.o: ./osx.m ./puzzles.h
373 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
374palisade.o: ./palisade.c ./puzzles.h
375 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
376palisad3.o: ./palisade.c ./puzzles.h
377 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
378pattern.o: ./pattern.c ./puzzles.h
379 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
380pattern7.o: ./pattern.c ./puzzles.h
381 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
382pattern4.o: ./pattern.c ./puzzles.h
383 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
384pattern2.o: ./pattern.c ./puzzles.h
385 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
386pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
387 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
388pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
389 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
390pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
391 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
392pegs.o: ./pegs.c ./puzzles.h ./tree234.h
393 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
394pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
395 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
396penrose.o: ./penrose.c ./puzzles.h ./penrose.h
397 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
398printing.o: ./printing.c ./puzzles.h
399 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
400ps.o: ./ps.c ./puzzles.h
401 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
402random.o: ./random.c ./puzzles.h
403 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
404range.o: ./range.c ./puzzles.h
405 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
406range3.o: ./range.c ./puzzles.h
407 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
408rect.o: ./rect.c ./puzzles.h
409 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
410rect3.o: ./rect.c ./puzzles.h
411 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
412samegame.o: ./samegame.c ./puzzles.h
413 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
414samegam3.o: ./samegame.c ./puzzles.h
415 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
416signpost.o: ./signpost.c ./puzzles.h
417 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
418signpos5.o: ./signpost.c ./puzzles.h
419 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
420signpos2.o: ./signpost.c ./puzzles.h
421 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
422singles.o: ./singles.c ./puzzles.h ./latin.h
423 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
424singles5.o: ./singles.c ./puzzles.h ./latin.h
425 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
426singles3.o: ./singles.c ./puzzles.h ./latin.h
427 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
428sixteen.o: ./sixteen.c ./puzzles.h
429 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
430sixteen3.o: ./sixteen.c ./puzzles.h
431 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
432slant.o: ./slant.c ./puzzles.h
433 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
434slant5.o: ./slant.c ./puzzles.h
435 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
436slant2.o: ./slant.c ./puzzles.h
437 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
438solo.o: ./solo.c ./puzzles.h
439 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
440solo5.o: ./solo.c ./puzzles.h
441 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
442solo2.o: ./solo.c ./puzzles.h
443 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
444tdq.o: ./tdq.c ./puzzles.h
445 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
446tents.o: ./tents.c ./puzzles.h ./maxflow.h
447 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
448tents5.o: ./tents.c ./puzzles.h ./maxflow.h
449 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
450tents3.o: ./tents.c ./puzzles.h ./maxflow.h
451 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
452towers.o: ./towers.c ./puzzles.h ./latin.h
453 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
454towers5.o: ./towers.c ./puzzles.h ./latin.h
455 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
456towers2.o: ./towers.c ./puzzles.h ./latin.h
457 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
458tracks.o: ./tracks.c ./puzzles.h
459 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
460tracks3.o: ./tracks.c ./puzzles.h
461 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
462tree234.o: ./tree234.c ./tree234.h ./puzzles.h
463 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
464twiddle.o: ./twiddle.c ./puzzles.h
465 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
466twiddle3.o: ./twiddle.c ./puzzles.h
467 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
468undead.o: ./undead.c ./puzzles.h
469 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
470undead3.o: ./undead.c ./puzzles.h
471 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
472unequal.o: ./unequal.c ./puzzles.h ./latin.h
473 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
474unequal5.o: ./unequal.c ./puzzles.h ./latin.h
475 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
476unequal2.o: ./unequal.c ./puzzles.h ./latin.h
477 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
478unruly.o: ./unruly.c ./puzzles.h
479 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
480unruly5.o: ./unruly.c ./puzzles.h
481 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
482unruly2.o: ./unruly.c ./puzzles.h
483 $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
484untangle.o: ./untangle.c ./puzzles.h ./tree234.h
485 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
486untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
487 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
488version.o: ./version.c ./version.h
489 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
490windows.o: ./windows.c ./puzzles.h ./resource.h
491 $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
492windows1.o: ./windows.c ./puzzles.h ./resource.h
493 $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
494
495
496clean:
497 rm -rf *.o $(OUTPREFIX)blackbox.js $(OUTPREFIX)bridges.js $(OUTPREFIX)cube.js $(OUTPREFIX)dominosa.js $(OUTPREFIX)fifteen.js $(OUTPREFIX)filling.js $(OUTPREFIX)flip.js $(OUTPREFIX)flood.js $(OUTPREFIX)galaxies.js $(OUTPREFIX)guess.js $(OUTPREFIX)inertia.js $(OUTPREFIX)keen.js $(OUTPREFIX)lightup.js $(OUTPREFIX)loopy.js $(OUTPREFIX)magnets.js $(OUTPREFIX)map.js $(OUTPREFIX)mines.js $(OUTPREFIX)net.js $(OUTPREFIX)netslide.js $(OUTPREFIX)nullgame.js $(OUTPREFIX)palisade.js $(OUTPREFIX)pattern.js $(OUTPREFIX)pearl.js $(OUTPREFIX)pegs.js $(OUTPREFIX)range.js $(OUTPREFIX)rect.js $(OUTPREFIX)samegame.js $(OUTPREFIX)signpost.js $(OUTPREFIX)singles.js $(OUTPREFIX)sixteen.js $(OUTPREFIX)slant.js $(OUTPREFIX)solo.js $(OUTPREFIX)tents.js $(OUTPREFIX)towers.js $(OUTPREFIX)tracks.js $(OUTPREFIX)twiddle.js $(OUTPREFIX)undead.js $(OUTPREFIX)unequal.js $(OUTPREFIX)unruly.js $(OUTPREFIX)untangle.js
diff --git a/apps/plugins/puzzles/src/Makefile.gnustep b/apps/plugins/puzzles/src/Makefile.gnustep
new file mode 100644
index 0000000000..79677f2728
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.gnustep
@@ -0,0 +1,412 @@
1# Makefile for puzzles under GNUstep.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5NEEDS_GUI=yes
6include $(GNUSTEP_MAKEFILES)/common.make
7include $(GNUSTEP_MAKEFILES)/rules.make
8include $(GNUSTEP_MAKEFILES)/Instance/rules.make
9
10all:: Puzzles fifteensolver fillingsolver galaxiespicture galaxiessolver \
11 keensolver latincheck lightupsolver loopysolver \
12 magnetssolver mapsolver mineobfusc obfusc patternpicture \
13 patternsolver pearlbench signpostsolver singlessolver \
14 slantsolver solosolver tentssolver towerssolver \
15 unequalsolver unrulysolver
16
17.SUFFIXES: .o .c .m
18
19
20
21Puzzles.app:
22 mkdir -p $@
23Puzzles.app/Resources: Puzzles.app
24 mkdir -p $@
25Puzzles.app/Resources/Puzzles.icns: Puzzles.app/Resources osx.icns
26 cp osx.icns $@
27Puzzles.app/Info.plist: Puzzles.app osx-info.plist
28 cp osx-info.plist $@
29Puzzles: Puzzles.app Puzzles.app/Puzzles \
30 Puzzles.app/Resources/Puzzles.icns Puzzles.app/Info.plist \
31 $(Puzzles_extra)
32
33Puzzles.app/Puzzles: blackbo3.o bridges3.o combi.o cube3.o divvy.o \
34 dominos3.o drawing.o dsf.o fifteen5.o filling5.o findloop.o \
35 flip3.o flood3.o galaxie7.o grid.o guess3.o inertia3.o \
36 keen5.o latin.o laydomino.o lightup5.o list.o loopgen.o \
37 loopy5.o magnets5.o malloc.o map5.o maxflow.o midend.o \
38 mines5.o misc.o net3.o netslid3.o osx.o palisad3.o \
39 pattern7.o pearl5.o pegs3.o penrose.o random.o range3.o \
40 rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \
41 solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \
42 twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \
43 version.o
44 $(CC) $(ALL_LDFLAGS) -o $@ blackbo3.o bridges3.o combi.o cube3.o \
45 divvy.o dominos3.o drawing.o dsf.o fifteen5.o filling5.o \
46 findloop.o flip3.o flood3.o galaxie7.o grid.o guess3.o \
47 inertia3.o keen5.o latin.o laydomino.o lightup5.o list.o \
48 loopgen.o loopy5.o magnets5.o malloc.o map5.o maxflow.o \
49 midend.o mines5.o misc.o net3.o netslid3.o osx.o palisad3.o \
50 pattern7.o pearl5.o pegs3.o penrose.o random.o range3.o \
51 rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \
52 solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \
53 twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \
54 version.o $(ALL_LIB_DIRS) $(ALL_LIBS)
55
56fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o
57 $(CC) $(ULDFLAGS) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o
58
59fillingsolver: dsf.o filling2.o malloc.o misc.o nullfe.o random.o
60 $(CC) $(ULDFLAGS) -o $@ dsf.o filling2.o malloc.o misc.o nullfe.o \
61 random.o
62
63galaxiespicture: dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o
64 $(CC) $(ULDFLAGS) -o $@ dsf.o galaxie4.o malloc.o misc.o nullfe.o \
65 random.o -lm
66
67galaxiessolver: dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o
68 $(CC) $(ULDFLAGS) -o $@ dsf.o galaxie2.o malloc.o misc.o nullfe.o \
69 random.o -lm
70
71keensolver: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o nullfe.o \
72 random.o tree234.o
73 $(CC) $(ULDFLAGS) -o $@ dsf.o keen2.o latin6.o malloc.o maxflow.o \
74 misc.o nullfe.o random.o tree234.o
75
76latincheck: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o tree234.o
77 $(CC) $(ULDFLAGS) -o $@ latin8.o malloc.o maxflow.o misc.o nullfe.o \
78 random.o tree234.o
79
80lightupsolver: combi.o lightup2.o malloc.o misc.o nullfe.o random.o
81 $(CC) $(ULDFLAGS) -o $@ combi.o lightup2.o malloc.o misc.o nullfe.o \
82 random.o
83
84loopysolver: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \
85 penrose.o random.o tree234.o
86 $(CC) $(ULDFLAGS) -o $@ dsf.o grid.o loopgen.o loopy2.o malloc.o \
87 misc.o nullfe.o penrose.o random.o tree234.o -lm
88
89magnetssolver: laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o
90 $(CC) $(ULDFLAGS) -o $@ laydomino.o magnets2.o malloc.o misc.o \
91 nullfe.o random.o -lm
92
93mapsolver: dsf.o malloc.o map2.o misc.o nullfe.o random.o
94 $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o map2.o misc.o nullfe.o \
95 random.o -lm
96
97mineobfusc: malloc.o mines2.o misc.o nullfe.o random.o tree234.o
98 $(CC) $(ULDFLAGS) -o $@ malloc.o mines2.o misc.o nullfe.o random.o \
99 tree234.o
100
101obfusc: malloc.o misc.o nullfe.o obfusc.o random.o
102 $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o
103
104patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o
105 $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o
106
107patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o
108 $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o
109
110pearlbench: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \
111 penrose.o random.o tdq.o tree234.o
112 $(CC) $(ULDFLAGS) -o $@ dsf.o grid.o loopgen.o malloc.o misc.o \
113 nullfe.o pearl2.o penrose.o random.o tdq.o tree234.o -lm
114
115signpostsolver: dsf.o malloc.o misc.o nullfe.o random.o signpos2.o
116 $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o misc.o nullfe.o random.o \
117 signpos2.o -lm
118
119singlessolver: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o random.o \
120 singles3.o tree234.o
121 $(CC) $(ULDFLAGS) -o $@ dsf.o latin.o malloc.o maxflow.o misc.o \
122 nullfe.o random.o singles3.o tree234.o
123
124slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o slant2.o
125 $(CC) $(ULDFLAGS) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o \
126 random.o slant2.o
127
128solosolver: divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o
129 $(CC) $(ULDFLAGS) -o $@ divvy.o dsf.o malloc.o misc.o nullfe.o \
130 random.o solo2.o
131
132tentssolver: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o tents3.o
133 $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o maxflow.o misc.o nullfe.o \
134 random.o tents3.o
135
136towerssolver: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o towers2.o \
137 tree234.o
138 $(CC) $(ULDFLAGS) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o \
139 random.o towers2.o tree234.o
140
141unequalsolver: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
142 tree234.o unequal2.o
143 $(CC) $(ULDFLAGS) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o \
144 random.o tree234.o unequal2.o
145
146unrulysolver: malloc.o misc.o nullfe.o random.o unruly2.o
147 $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o random.o unruly2.o
148
149blackbox.o: ./blackbox.c ./puzzles.h
150 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
151blackbo3.o: ./blackbox.c ./puzzles.h
152 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
153bridges.o: ./bridges.c ./puzzles.h
154 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
155bridges3.o: ./bridges.c ./puzzles.h
156 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
157combi.o: ./combi.c ./puzzles.h
158 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
159cube.o: ./cube.c ./puzzles.h
160 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
161cube3.o: ./cube.c ./puzzles.h
162 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
163divvy.o: ./divvy.c ./puzzles.h
164 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
165dominosa.o: ./dominosa.c ./puzzles.h
166 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
167dominos3.o: ./dominosa.c ./puzzles.h
168 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
169drawing.o: ./drawing.c ./puzzles.h
170 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
171dsf.o: ./dsf.c ./puzzles.h
172 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
173fifteen.o: ./fifteen.c ./puzzles.h
174 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
175fifteen5.o: ./fifteen.c ./puzzles.h
176 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
177fifteen2.o: ./fifteen.c ./puzzles.h
178 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
179filling.o: ./filling.c ./puzzles.h
180 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
181filling5.o: ./filling.c ./puzzles.h
182 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
183filling2.o: ./filling.c ./puzzles.h
184 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
185findloop.o: ./findloop.c ./puzzles.h
186 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
187flip.o: ./flip.c ./puzzles.h ./tree234.h
188 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
189flip3.o: ./flip.c ./puzzles.h ./tree234.h
190 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
191flood.o: ./flood.c ./puzzles.h
192 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
193flood3.o: ./flood.c ./puzzles.h
194 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
195galaxies.o: ./galaxies.c ./puzzles.h
196 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
197galaxie7.o: ./galaxies.c ./puzzles.h
198 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
199galaxie4.o: ./galaxies.c ./puzzles.h
200 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
201galaxie2.o: ./galaxies.c ./puzzles.h
202 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
203grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
204 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
205gtk.o: ./gtk.c ./puzzles.h
206 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
207guess.o: ./guess.c ./puzzles.h
208 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
209guess3.o: ./guess.c ./puzzles.h
210 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
211inertia.o: ./inertia.c ./puzzles.h
212 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
213inertia3.o: ./inertia.c ./puzzles.h
214 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
215keen.o: ./keen.c ./puzzles.h ./latin.h
216 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
217keen5.o: ./keen.c ./puzzles.h ./latin.h
218 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
219keen2.o: ./keen.c ./puzzles.h ./latin.h
220 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
221latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
222 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
223latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
224 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
225latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
226 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
227laydomino.o: ./laydomino.c ./puzzles.h
228 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
229lightup.o: ./lightup.c ./puzzles.h
230 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
231lightup5.o: ./lightup.c ./puzzles.h
232 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
233lightup2.o: ./lightup.c ./puzzles.h
234 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
235list.o: ./list.c ./puzzles.h
236 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
237loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
238 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
239loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
240 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
241loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
242 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
243loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
244 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
245magnets.o: ./magnets.c ./puzzles.h
246 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
247magnets5.o: ./magnets.c ./puzzles.h
248 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
249magnets2.o: ./magnets.c ./puzzles.h
250 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
251malloc.o: ./malloc.c ./puzzles.h
252 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
253map.o: ./map.c ./puzzles.h
254 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
255map5.o: ./map.c ./puzzles.h
256 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
257map2.o: ./map.c ./puzzles.h
258 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
259maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
260 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
261midend.o: ./midend.c ./puzzles.h
262 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
263mines.o: ./mines.c ./tree234.h ./puzzles.h
264 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
265mines5.o: ./mines.c ./tree234.h ./puzzles.h
266 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
267mines2.o: ./mines.c ./tree234.h ./puzzles.h
268 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
269misc.o: ./misc.c ./puzzles.h
270 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
271net.o: ./net.c ./puzzles.h ./tree234.h
272 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
273net3.o: ./net.c ./puzzles.h ./tree234.h
274 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
275netslide.o: ./netslide.c ./puzzles.h ./tree234.h
276 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
277netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
278 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
279no-icon.o: ./no-icon.c
280 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
281nullfe.o: ./nullfe.c ./puzzles.h
282 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
283nullgame.o: ./nullgame.c ./puzzles.h
284 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
285obfusc.o: ./obfusc.c ./puzzles.h
286 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
287osx.o: ./osx.m ./puzzles.h
288 $(CC) -DGNUSTEP $(ALL_OBJCFLAGS) $(COMPAT) $(FWHACK) $(OBJCFLAGS) $(XFLAGS) -c $< -o $@
289palisade.o: ./palisade.c ./puzzles.h
290 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
291palisad3.o: ./palisade.c ./puzzles.h
292 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
293pattern.o: ./pattern.c ./puzzles.h
294 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
295pattern7.o: ./pattern.c ./puzzles.h
296 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
297pattern4.o: ./pattern.c ./puzzles.h
298 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
299pattern2.o: ./pattern.c ./puzzles.h
300 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
301pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
302 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
303pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
304 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
305pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
306 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
307pegs.o: ./pegs.c ./puzzles.h ./tree234.h
308 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
309pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
310 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
311penrose.o: ./penrose.c ./puzzles.h ./penrose.h
312 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
313printing.o: ./printing.c ./puzzles.h
314 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
315ps.o: ./ps.c ./puzzles.h
316 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
317random.o: ./random.c ./puzzles.h
318 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
319range.o: ./range.c ./puzzles.h
320 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
321range3.o: ./range.c ./puzzles.h
322 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
323rect.o: ./rect.c ./puzzles.h
324 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
325rect3.o: ./rect.c ./puzzles.h
326 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
327samegame.o: ./samegame.c ./puzzles.h
328 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
329samegam3.o: ./samegame.c ./puzzles.h
330 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
331signpost.o: ./signpost.c ./puzzles.h
332 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
333signpos5.o: ./signpost.c ./puzzles.h
334 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
335signpos2.o: ./signpost.c ./puzzles.h
336 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
337singles.o: ./singles.c ./puzzles.h ./latin.h
338 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
339singles5.o: ./singles.c ./puzzles.h ./latin.h
340 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
341singles3.o: ./singles.c ./puzzles.h ./latin.h
342 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
343sixteen.o: ./sixteen.c ./puzzles.h
344 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
345sixteen3.o: ./sixteen.c ./puzzles.h
346 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
347slant.o: ./slant.c ./puzzles.h
348 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
349slant5.o: ./slant.c ./puzzles.h
350 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
351slant2.o: ./slant.c ./puzzles.h
352 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
353solo.o: ./solo.c ./puzzles.h
354 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
355solo5.o: ./solo.c ./puzzles.h
356 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
357solo2.o: ./solo.c ./puzzles.h
358 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
359tdq.o: ./tdq.c ./puzzles.h
360 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
361tents.o: ./tents.c ./puzzles.h ./maxflow.h
362 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
363tents5.o: ./tents.c ./puzzles.h ./maxflow.h
364 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
365tents3.o: ./tents.c ./puzzles.h ./maxflow.h
366 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
367towers.o: ./towers.c ./puzzles.h ./latin.h
368 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
369towers5.o: ./towers.c ./puzzles.h ./latin.h
370 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
371towers2.o: ./towers.c ./puzzles.h ./latin.h
372 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
373tracks.o: ./tracks.c ./puzzles.h
374 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
375tracks3.o: ./tracks.c ./puzzles.h
376 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
377tree234.o: ./tree234.c ./tree234.h ./puzzles.h
378 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
379twiddle.o: ./twiddle.c ./puzzles.h
380 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
381twiddle3.o: ./twiddle.c ./puzzles.h
382 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
383undead.o: ./undead.c ./puzzles.h
384 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
385undead3.o: ./undead.c ./puzzles.h
386 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
387unequal.o: ./unequal.c ./puzzles.h ./latin.h
388 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
389unequal5.o: ./unequal.c ./puzzles.h ./latin.h
390 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
391unequal2.o: ./unequal.c ./puzzles.h ./latin.h
392 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
393unruly.o: ./unruly.c ./puzzles.h
394 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
395unruly5.o: ./unruly.c ./puzzles.h
396 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
397unruly2.o: ./unruly.c ./puzzles.h
398 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
399untangle.o: ./untangle.c ./puzzles.h ./tree234.h
400 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
401untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
402 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
403version.o: ./version.c ./version.h
404 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
405windows.o: ./windows.c ./puzzles.h ./resource.h
406 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
407windows1.o: ./windows.c ./puzzles.h ./resource.h
408 $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
409
410clean::
411 rm -f *.o fifteensolver fillingsolver galaxiespicture galaxiessolver keensolver latincheck lightupsolver loopysolver magnetssolver mapsolver mineobfusc obfusc patternpicture patternsolver pearlbench signpostsolver singlessolver slantsolver solosolver tentssolver towerssolver unequalsolver unrulysolver
412 rm -rf *.app
diff --git a/apps/plugins/puzzles/src/Makefile.gtk b/apps/plugins/puzzles/src/Makefile.gtk
new file mode 100644
index 0000000000..e5c1d40b90
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.gtk
@@ -0,0 +1,727 @@
1# Makefile for puzzles under X/GTK and Unix.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6# You can define this path to point at your tools if you need to
7# TOOLPATH = /opt/gcc/bin
8CC := $(TOOLPATH)$(CC)
9# You can manually set this to `gtk-config' or `pkg-config gtk+-1.2'
10# (depending on what works on your system) if you want to enforce
11# building with GTK 1.2, or you can set it to `pkg-config gtk+-2.0'
12# if you want to enforce 2.0. The default is to try 2.0 and fall back
13# to 1.2 if it isn't found.
14GTK_CONFIG = sh -c 'pkg-config gtk+-2.0 $$0 2>/dev/null || gtk-config $$0'
15
16CFLAGS := -O2 -Wall -Werror -ansi -pedantic -g -I./ -Iicons/ `$(GTK_CONFIG) \
17 --cflags` $(CFLAGS)
18XLIBS = `$(GTK_CONFIG) --libs` -lm
19ULIBS = -lm#
20INSTALL=install
21INSTALL_PROGRAM=$(INSTALL)
22INSTALL_DATA=$(INSTALL)
23prefix=/usr/local
24exec_prefix=$(prefix)
25bindir=$(exec_prefix)/bin
26gamesdir=$(exec_prefix)/games
27mandir=$(prefix)/man
28man1dir=$(mandir)/man1
29
30all: $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube \
31 $(BINPREFIX)dominosa $(BINPREFIX)fifteen \
32 $(BINPREFIX)fifteensolver $(BINPREFIX)filling \
33 $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)flood \
34 $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture \
35 $(BINPREFIX)galaxiessolver $(BINPREFIX)guess \
36 $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver \
37 $(BINPREFIX)latincheck $(BINPREFIX)lightup \
38 $(BINPREFIX)lightupsolver $(BINPREFIX)loopy \
39 $(BINPREFIX)loopysolver $(BINPREFIX)magnets \
40 $(BINPREFIX)magnetssolver $(BINPREFIX)map \
41 $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc \
42 $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide \
43 $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)palisade \
44 $(BINPREFIX)pattern $(BINPREFIX)patternpicture \
45 $(BINPREFIX)patternsolver $(BINPREFIX)pearl \
46 $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range \
47 $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost \
48 $(BINPREFIX)signpostsolver $(BINPREFIX)singles \
49 $(BINPREFIX)singlessolver $(BINPREFIX)sixteen \
50 $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo \
51 $(BINPREFIX)solosolver $(BINPREFIX)tents \
52 $(BINPREFIX)tentssolver $(BINPREFIX)towers \
53 $(BINPREFIX)towerssolver $(BINPREFIX)tracks \
54 $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal \
55 $(BINPREFIX)unequalsolver $(BINPREFIX)unruly \
56 $(BINPREFIX)unrulysolver $(BINPREFIX)untangle
57
58$(BINPREFIX)blackbox: blackbox.o drawing.o gtk.o malloc.o midend.o misc.o \
59 no-icon.o printing.o ps.o random.o version.o
60 $(CC) -o $@ blackbox.o drawing.o gtk.o malloc.o midend.o misc.o \
61 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
62 $(XLIBS)
63
64$(BINPREFIX)bridges: bridges.o drawing.o dsf.o findloop.o gtk.o malloc.o \
65 midend.o misc.o no-icon.o printing.o ps.o random.o version.o
66 $(CC) -o $@ bridges.o drawing.o dsf.o findloop.o gtk.o malloc.o \
67 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
68 $(XLFLAGS) $(XLIBS)
69
70$(BINPREFIX)cube: cube.o drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
71 printing.o ps.o random.o version.o
72 $(CC) -o $@ cube.o drawing.o gtk.o malloc.o midend.o misc.o \
73 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
74 $(XLIBS)
75
76$(BINPREFIX)dominosa: dominosa.o drawing.o gtk.o laydomino.o malloc.o \
77 midend.o misc.o no-icon.o printing.o ps.o random.o version.o
78 $(CC) -o $@ dominosa.o drawing.o gtk.o laydomino.o malloc.o midend.o \
79 misc.o no-icon.o printing.o ps.o random.o version.o \
80 $(XLFLAGS) $(XLIBS)
81
82$(BINPREFIX)fifteen: drawing.o fifteen.o gtk.o malloc.o midend.o misc.o \
83 no-icon.o printing.o ps.o random.o version.o
84 $(CC) -o $@ drawing.o fifteen.o gtk.o malloc.o midend.o misc.o \
85 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
86 $(XLIBS)
87
88$(BINPREFIX)fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o
89 $(CC) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o $(XLFLAGS) \
90 $(ULIBS)
91
92$(BINPREFIX)filling: drawing.o dsf.o filling.o gtk.o malloc.o midend.o \
93 misc.o no-icon.o printing.o ps.o random.o version.o
94 $(CC) -o $@ drawing.o dsf.o filling.o gtk.o malloc.o midend.o misc.o \
95 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
96 $(XLIBS)
97
98$(BINPREFIX)fillingsolver: dsf.o filling2.o malloc.o misc.o nullfe.o \
99 random.o
100 $(CC) -o $@ dsf.o filling2.o malloc.o misc.o nullfe.o random.o \
101 $(XLFLAGS) $(ULIBS)
102
103$(BINPREFIX)flip: drawing.o flip.o gtk.o malloc.o midend.o misc.o no-icon.o \
104 printing.o ps.o random.o tree234.o version.o
105 $(CC) -o $@ drawing.o flip.o gtk.o malloc.o midend.o misc.o \
106 no-icon.o printing.o ps.o random.o tree234.o version.o \
107 $(XLFLAGS) $(XLIBS)
108
109$(BINPREFIX)flood: drawing.o flood.o gtk.o malloc.o midend.o misc.o \
110 no-icon.o printing.o ps.o random.o version.o
111 $(CC) -o $@ drawing.o flood.o gtk.o malloc.o midend.o misc.o \
112 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
113 $(XLIBS)
114
115$(BINPREFIX)galaxies: drawing.o dsf.o galaxies.o gtk.o malloc.o midend.o \
116 misc.o no-icon.o printing.o ps.o random.o version.o
117 $(CC) -o $@ drawing.o dsf.o galaxies.o gtk.o malloc.o midend.o \
118 misc.o no-icon.o printing.o ps.o random.o version.o \
119 $(XLFLAGS) $(XLIBS)
120
121$(BINPREFIX)galaxiespicture: dsf.o galaxie4.o malloc.o misc.o nullfe.o \
122 random.o
123 $(CC) -o $@ dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o -lm \
124 $(XLFLAGS) $(ULIBS)
125
126$(BINPREFIX)galaxiessolver: dsf.o galaxie2.o malloc.o misc.o nullfe.o \
127 random.o
128 $(CC) -o $@ dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o -lm \
129 $(XLFLAGS) $(ULIBS)
130
131$(BINPREFIX)guess: drawing.o gtk.o guess.o malloc.o midend.o misc.o \
132 no-icon.o printing.o ps.o random.o version.o
133 $(CC) -o $@ drawing.o gtk.o guess.o malloc.o midend.o misc.o \
134 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
135 $(XLIBS)
136
137$(BINPREFIX)inertia: drawing.o gtk.o inertia.o malloc.o midend.o misc.o \
138 no-icon.o printing.o ps.o random.o version.o
139 $(CC) -o $@ drawing.o gtk.o inertia.o malloc.o midend.o misc.o \
140 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
141 $(XLIBS)
142
143$(BINPREFIX)keen: drawing.o dsf.o gtk.o keen.o latin.o malloc.o maxflow.o \
144 midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \
145 version.o
146 $(CC) -o $@ drawing.o dsf.o gtk.o keen.o latin.o malloc.o maxflow.o \
147 midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \
148 version.o $(XLFLAGS) $(XLIBS)
149
150$(BINPREFIX)keensolver: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o \
151 nullfe.o random.o tree234.o
152 $(CC) -o $@ dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o \
153 nullfe.o random.o tree234.o $(XLFLAGS) $(ULIBS)
154
155$(BINPREFIX)latincheck: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \
156 tree234.o
157 $(CC) -o $@ latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \
158 tree234.o $(XLFLAGS) $(ULIBS)
159
160$(BINPREFIX)lightup: combi.o drawing.o gtk.o lightup.o malloc.o midend.o \
161 misc.o no-icon.o printing.o ps.o random.o version.o
162 $(CC) -o $@ combi.o drawing.o gtk.o lightup.o malloc.o midend.o \
163 misc.o no-icon.o printing.o ps.o random.o version.o \
164 $(XLFLAGS) $(XLIBS)
165
166$(BINPREFIX)lightupsolver: combi.o lightup2.o malloc.o misc.o nullfe.o \
167 random.o
168 $(CC) -o $@ combi.o lightup2.o malloc.o misc.o nullfe.o random.o \
169 $(XLFLAGS) $(ULIBS)
170
171$(BINPREFIX)loopy: drawing.o dsf.o grid.o gtk.o loopgen.o loopy.o malloc.o \
172 midend.o misc.o no-icon.o penrose.o printing.o ps.o random.o \
173 tree234.o version.o
174 $(CC) -o $@ drawing.o dsf.o grid.o gtk.o loopgen.o loopy.o malloc.o \
175 midend.o misc.o no-icon.o penrose.o printing.o ps.o random.o \
176 tree234.o version.o $(XLFLAGS) $(XLIBS)
177
178$(BINPREFIX)loopysolver: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o \
179 nullfe.o penrose.o random.o tree234.o
180 $(CC) -o $@ dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \
181 penrose.o random.o tree234.o -lm $(XLFLAGS) $(ULIBS)
182
183$(BINPREFIX)magnets: drawing.o gtk.o laydomino.o magnets.o malloc.o midend.o \
184 misc.o no-icon.o printing.o ps.o random.o version.o
185 $(CC) -o $@ drawing.o gtk.o laydomino.o magnets.o malloc.o midend.o \
186 misc.o no-icon.o printing.o ps.o random.o version.o \
187 $(XLFLAGS) $(XLIBS)
188
189$(BINPREFIX)magnetssolver: laydomino.o magnets2.o malloc.o misc.o nullfe.o \
190 random.o
191 $(CC) -o $@ laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o \
192 -lm $(XLFLAGS) $(ULIBS)
193
194$(BINPREFIX)map: drawing.o dsf.o gtk.o malloc.o map.o midend.o misc.o \
195 no-icon.o printing.o ps.o random.o version.o
196 $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o map.o midend.o misc.o \
197 no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
198 $(XLIBS)
199
200$(BINPREFIX)mapsolver: dsf.o malloc.o map2.o misc.o nullfe.o random.o
201 $(CC) -o $@ dsf.o malloc.o map2.o misc.o nullfe.o random.o -lm \
202 $(XLFLAGS) $(ULIBS)
203
204$(BINPREFIX)mineobfusc: malloc.o mines2.o misc.o nullfe.o random.o tree234.o
205 $(CC) -o $@ malloc.o mines2.o misc.o nullfe.o random.o tree234.o \
206 $(XLFLAGS) $(ULIBS)
207
208$(BINPREFIX)mines: drawing.o gtk.o malloc.o midend.o mines.o misc.o \
209 no-icon.o printing.o ps.o random.o tree234.o version.o
210 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o mines.o misc.o \
211 no-icon.o printing.o ps.o random.o tree234.o version.o \
212 $(XLFLAGS) $(XLIBS)
213
214$(BINPREFIX)net: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \
215 net.o no-icon.o printing.o ps.o random.o tree234.o version.o
216 $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
217 misc.o net.o no-icon.o printing.o ps.o random.o tree234.o \
218 version.o $(XLFLAGS) $(XLIBS)
219
220$(BINPREFIX)netslide: drawing.o gtk.o malloc.o midend.o misc.o netslide.o \
221 no-icon.o printing.o ps.o random.o tree234.o version.o
222 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o netslide.o \
223 no-icon.o printing.o ps.o random.o tree234.o version.o \
224 $(XLFLAGS) $(XLIBS)
225
226$(BINPREFIX)nullgame: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
227 nullgame.o printing.o ps.o random.o version.o
228 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
229 nullgame.o printing.o ps.o random.o version.o $(XLFLAGS) \
230 $(XLIBS)
231
232$(BINPREFIX)obfusc: malloc.o misc.o nullfe.o obfusc.o random.o
233 $(CC) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o $(XLFLAGS) \
234 $(ULIBS)
235
236$(BINPREFIX)palisade: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
237 no-icon.o palisade.o printing.o ps.o random.o version.o
238 $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
239 no-icon.o palisade.o printing.o ps.o random.o version.o \
240 $(XLFLAGS) $(XLIBS)
241
242$(BINPREFIX)pattern: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
243 pattern.o printing.o ps.o random.o version.o
244 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
245 pattern.o printing.o ps.o random.o version.o $(XLFLAGS) \
246 $(XLIBS)
247
248$(BINPREFIX)patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o
249 $(CC) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o $(XLFLAGS) \
250 $(ULIBS)
251
252$(BINPREFIX)patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o
253 $(CC) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o $(XLFLAGS) \
254 $(ULIBS)
255
256$(BINPREFIX)pearl: drawing.o dsf.o grid.o gtk.o loopgen.o malloc.o midend.o \
257 misc.o no-icon.o pearl.o penrose.o printing.o ps.o random.o \
258 tdq.o tree234.o version.o
259 $(CC) -o $@ drawing.o dsf.o grid.o gtk.o loopgen.o malloc.o midend.o \
260 misc.o no-icon.o pearl.o penrose.o printing.o ps.o random.o \
261 tdq.o tree234.o version.o $(XLFLAGS) $(XLIBS)
262
263$(BINPREFIX)pearlbench: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o \
264 pearl2.o penrose.o random.o tdq.o tree234.o
265 $(CC) -o $@ dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \
266 penrose.o random.o tdq.o tree234.o -lm $(XLFLAGS) $(ULIBS)
267
268$(BINPREFIX)pegs: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o pegs.o \
269 printing.o ps.o random.o tree234.o version.o
270 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
271 pegs.o printing.o ps.o random.o tree234.o version.o \
272 $(XLFLAGS) $(XLIBS)
273
274$(BINPREFIX)range: drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \
275 printing.o ps.o random.o range.o version.o
276 $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \
277 printing.o ps.o random.o range.o version.o $(XLFLAGS) \
278 $(XLIBS)
279
280$(BINPREFIX)rect: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
281 printing.o ps.o random.o rect.o version.o
282 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
283 printing.o ps.o random.o rect.o version.o $(XLFLAGS) \
284 $(XLIBS)
285
286$(BINPREFIX)samegame: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
287 printing.o ps.o random.o samegame.o version.o
288 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
289 printing.o ps.o random.o samegame.o version.o $(XLFLAGS) \
290 $(XLIBS)
291
292$(BINPREFIX)signpost: drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
293 no-icon.o printing.o ps.o random.o signpost.o version.o
294 $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \
295 printing.o ps.o random.o signpost.o version.o $(XLFLAGS) \
296 $(XLIBS)
297
298$(BINPREFIX)signpostsolver: dsf.o malloc.o misc.o nullfe.o random.o \
299 signpos2.o
300 $(CC) -o $@ dsf.o malloc.o misc.o nullfe.o random.o signpos2.o -lm \
301 $(XLFLAGS) $(ULIBS)
302
303$(BINPREFIX)singles: drawing.o dsf.o gtk.o latin.o malloc.o maxflow.o \
304 midend.o misc.o no-icon.o printing.o ps.o random.o singles.o \
305 tree234.o version.o
306 $(CC) -o $@ drawing.o dsf.o gtk.o latin.o malloc.o maxflow.o \
307 midend.o misc.o no-icon.o printing.o ps.o random.o singles.o \
308 tree234.o version.o $(XLFLAGS) $(XLIBS)
309
310$(BINPREFIX)singlessolver: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o \
311 random.o singles3.o tree234.o
312 $(CC) -o $@ dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o \
313 random.o singles3.o tree234.o $(XLFLAGS) $(ULIBS)
314
315$(BINPREFIX)sixteen: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
316 printing.o ps.o random.o sixteen.o version.o
317 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
318 printing.o ps.o random.o sixteen.o version.o $(XLFLAGS) \
319 $(XLIBS)
320
321$(BINPREFIX)slant: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \
322 no-icon.o printing.o ps.o random.o slant.o version.o
323 $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
324 misc.o no-icon.o printing.o ps.o random.o slant.o version.o \
325 $(XLFLAGS) $(XLIBS)
326
327$(BINPREFIX)slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o \
328 slant2.o
329 $(CC) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o random.o \
330 slant2.o $(XLFLAGS) $(ULIBS)
331
332$(BINPREFIX)solo: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
333 no-icon.o printing.o ps.o random.o solo.o version.o
334 $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
335 no-icon.o printing.o ps.o random.o solo.o version.o \
336 $(XLFLAGS) $(XLIBS)
337
338$(BINPREFIX)solosolver: divvy.o dsf.o malloc.o misc.o nullfe.o random.o \
339 solo2.o
340 $(CC) -o $@ divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o \
341 $(XLFLAGS) $(ULIBS)
342
343$(BINPREFIX)tents: drawing.o dsf.o gtk.o malloc.o maxflow.o midend.o misc.o \
344 no-icon.o printing.o ps.o random.o tents.o version.o
345 $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o maxflow.o midend.o misc.o \
346 no-icon.o printing.o ps.o random.o tents.o version.o \
347 $(XLFLAGS) $(XLIBS)
348
349$(BINPREFIX)tentssolver: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o \
350 tents3.o
351 $(CC) -o $@ dsf.o malloc.o maxflow.o misc.o nullfe.o random.o \
352 tents3.o $(XLFLAGS) $(ULIBS)
353
354$(BINPREFIX)towers: drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \
355 misc.o no-icon.o printing.o ps.o random.o towers.o tree234.o \
356 version.o
357 $(CC) -o $@ drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \
358 misc.o no-icon.o printing.o ps.o random.o towers.o tree234.o \
359 version.o $(XLFLAGS) $(XLIBS)
360
361$(BINPREFIX)towerssolver: latin6.o malloc.o maxflow.o misc.o nullfe.o \
362 random.o towers2.o tree234.o
363 $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
364 towers2.o tree234.o $(XLFLAGS) $(ULIBS)
365
366$(BINPREFIX)tracks: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
367 misc.o no-icon.o printing.o ps.o random.o tracks.o version.o
368 $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
369 misc.o no-icon.o printing.o ps.o random.o tracks.o version.o \
370 $(XLFLAGS) $(XLIBS)
371
372$(BINPREFIX)twiddle: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
373 printing.o ps.o random.o twiddle.o version.o
374 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
375 printing.o ps.o random.o twiddle.o version.o $(XLFLAGS) \
376 $(XLIBS)
377
378$(BINPREFIX)undead: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
379 printing.o ps.o random.o undead.o version.o
380 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
381 printing.o ps.o random.o undead.o version.o $(XLFLAGS) \
382 $(XLIBS)
383
384$(BINPREFIX)unequal: drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \
385 misc.o no-icon.o printing.o ps.o random.o tree234.o \
386 unequal.o version.o
387 $(CC) -o $@ drawing.o gtk.o latin.o malloc.o maxflow.o midend.o \
388 misc.o no-icon.o printing.o ps.o random.o tree234.o \
389 unequal.o version.o $(XLFLAGS) $(XLIBS)
390
391$(BINPREFIX)unequalsolver: latin6.o malloc.o maxflow.o misc.o nullfe.o \
392 random.o tree234.o unequal2.o
393 $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
394 tree234.o unequal2.o $(XLFLAGS) $(ULIBS)
395
396$(BINPREFIX)unruly: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
397 printing.o ps.o random.o unruly.o version.o
398 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
399 printing.o ps.o random.o unruly.o version.o $(XLFLAGS) \
400 $(XLIBS)
401
402$(BINPREFIX)unrulysolver: malloc.o misc.o nullfe.o random.o unruly2.o
403 $(CC) -o $@ malloc.o misc.o nullfe.o random.o unruly2.o $(XLFLAGS) \
404 $(ULIBS)
405
406$(BINPREFIX)untangle: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
407 printing.o ps.o random.o tree234.o untangle.o version.o
408 $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
409 printing.o ps.o random.o tree234.o untangle.o version.o \
410 $(XLFLAGS) $(XLIBS)
411
412blackbox.o: ./blackbox.c ./puzzles.h
413 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
414blackbo3.o: ./blackbox.c ./puzzles.h
415 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
416bridges.o: ./bridges.c ./puzzles.h
417 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
418bridges3.o: ./bridges.c ./puzzles.h
419 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
420combi.o: ./combi.c ./puzzles.h
421 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
422cube.o: ./cube.c ./puzzles.h
423 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
424cube3.o: ./cube.c ./puzzles.h
425 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
426divvy.o: ./divvy.c ./puzzles.h
427 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
428dominosa.o: ./dominosa.c ./puzzles.h
429 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
430dominos3.o: ./dominosa.c ./puzzles.h
431 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
432drawing.o: ./drawing.c ./puzzles.h
433 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
434dsf.o: ./dsf.c ./puzzles.h
435 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
436fifteen.o: ./fifteen.c ./puzzles.h
437 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
438fifteen5.o: ./fifteen.c ./puzzles.h
439 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
440fifteen2.o: ./fifteen.c ./puzzles.h
441 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
442filling.o: ./filling.c ./puzzles.h
443 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
444filling5.o: ./filling.c ./puzzles.h
445 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
446filling2.o: ./filling.c ./puzzles.h
447 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
448findloop.o: ./findloop.c ./puzzles.h
449 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
450flip.o: ./flip.c ./puzzles.h ./tree234.h
451 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
452flip3.o: ./flip.c ./puzzles.h ./tree234.h
453 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
454flood.o: ./flood.c ./puzzles.h
455 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
456flood3.o: ./flood.c ./puzzles.h
457 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
458galaxies.o: ./galaxies.c ./puzzles.h
459 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
460galaxie7.o: ./galaxies.c ./puzzles.h
461 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
462galaxie4.o: ./galaxies.c ./puzzles.h
463 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
464galaxie2.o: ./galaxies.c ./puzzles.h
465 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
466grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
467 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
468gtk.o: ./gtk.c ./puzzles.h
469 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
470guess.o: ./guess.c ./puzzles.h
471 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
472guess3.o: ./guess.c ./puzzles.h
473 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
474inertia.o: ./inertia.c ./puzzles.h
475 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
476inertia3.o: ./inertia.c ./puzzles.h
477 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
478keen.o: ./keen.c ./puzzles.h ./latin.h
479 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
480keen5.o: ./keen.c ./puzzles.h ./latin.h
481 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
482keen2.o: ./keen.c ./puzzles.h ./latin.h
483 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
484latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
485 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
486latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
487 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
488latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
489 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
490laydomino.o: ./laydomino.c ./puzzles.h
491 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
492lightup.o: ./lightup.c ./puzzles.h
493 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
494lightup5.o: ./lightup.c ./puzzles.h
495 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
496lightup2.o: ./lightup.c ./puzzles.h
497 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
498list.o: ./list.c ./puzzles.h
499 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
500loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
501 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
502loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
503 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
504loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
505 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
506loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
507 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
508magnets.o: ./magnets.c ./puzzles.h
509 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
510magnets5.o: ./magnets.c ./puzzles.h
511 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
512magnets2.o: ./magnets.c ./puzzles.h
513 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
514malloc.o: ./malloc.c ./puzzles.h
515 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
516map.o: ./map.c ./puzzles.h
517 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
518map5.o: ./map.c ./puzzles.h
519 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
520map2.o: ./map.c ./puzzles.h
521 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
522maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
523 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
524midend.o: ./midend.c ./puzzles.h
525 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
526mines.o: ./mines.c ./tree234.h ./puzzles.h
527 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
528mines5.o: ./mines.c ./tree234.h ./puzzles.h
529 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
530mines2.o: ./mines.c ./tree234.h ./puzzles.h
531 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
532misc.o: ./misc.c ./puzzles.h
533 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
534net.o: ./net.c ./puzzles.h ./tree234.h
535 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
536net3.o: ./net.c ./puzzles.h ./tree234.h
537 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
538netslide.o: ./netslide.c ./puzzles.h ./tree234.h
539 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
540netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
541 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
542no-icon.o: ./no-icon.c
543 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
544nullfe.o: ./nullfe.c ./puzzles.h
545 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
546nullgame.o: ./nullgame.c ./puzzles.h
547 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
548obfusc.o: ./obfusc.c ./puzzles.h
549 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
550osx.o: ./osx.m ./puzzles.h
551 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
552palisade.o: ./palisade.c ./puzzles.h
553 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
554palisad3.o: ./palisade.c ./puzzles.h
555 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
556pattern.o: ./pattern.c ./puzzles.h
557 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
558pattern7.o: ./pattern.c ./puzzles.h
559 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
560pattern4.o: ./pattern.c ./puzzles.h
561 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
562pattern2.o: ./pattern.c ./puzzles.h
563 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
564pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
565 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
566pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
567 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
568pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
569 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
570pegs.o: ./pegs.c ./puzzles.h ./tree234.h
571 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
572pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
573 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
574penrose.o: ./penrose.c ./puzzles.h ./penrose.h
575 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
576printing.o: ./printing.c ./puzzles.h
577 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
578ps.o: ./ps.c ./puzzles.h
579 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
580random.o: ./random.c ./puzzles.h
581 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
582range.o: ./range.c ./puzzles.h
583 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
584range3.o: ./range.c ./puzzles.h
585 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
586rect.o: ./rect.c ./puzzles.h
587 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
588rect3.o: ./rect.c ./puzzles.h
589 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
590samegame.o: ./samegame.c ./puzzles.h
591 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
592samegam3.o: ./samegame.c ./puzzles.h
593 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
594signpost.o: ./signpost.c ./puzzles.h
595 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
596signpos5.o: ./signpost.c ./puzzles.h
597 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
598signpos2.o: ./signpost.c ./puzzles.h
599 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
600singles.o: ./singles.c ./puzzles.h ./latin.h
601 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
602singles5.o: ./singles.c ./puzzles.h ./latin.h
603 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
604singles3.o: ./singles.c ./puzzles.h ./latin.h
605 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
606sixteen.o: ./sixteen.c ./puzzles.h
607 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
608sixteen3.o: ./sixteen.c ./puzzles.h
609 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
610slant.o: ./slant.c ./puzzles.h
611 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
612slant5.o: ./slant.c ./puzzles.h
613 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
614slant2.o: ./slant.c ./puzzles.h
615 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
616solo.o: ./solo.c ./puzzles.h
617 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
618solo5.o: ./solo.c ./puzzles.h
619 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
620solo2.o: ./solo.c ./puzzles.h
621 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
622tdq.o: ./tdq.c ./puzzles.h
623 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
624tents.o: ./tents.c ./puzzles.h ./maxflow.h
625 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
626tents5.o: ./tents.c ./puzzles.h ./maxflow.h
627 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
628tents3.o: ./tents.c ./puzzles.h ./maxflow.h
629 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
630towers.o: ./towers.c ./puzzles.h ./latin.h
631 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
632towers5.o: ./towers.c ./puzzles.h ./latin.h
633 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
634towers2.o: ./towers.c ./puzzles.h ./latin.h
635 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
636tracks.o: ./tracks.c ./puzzles.h
637 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
638tracks3.o: ./tracks.c ./puzzles.h
639 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
640tree234.o: ./tree234.c ./tree234.h ./puzzles.h
641 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
642twiddle.o: ./twiddle.c ./puzzles.h
643 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
644twiddle3.o: ./twiddle.c ./puzzles.h
645 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
646undead.o: ./undead.c ./puzzles.h
647 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
648undead3.o: ./undead.c ./puzzles.h
649 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
650unequal.o: ./unequal.c ./puzzles.h ./latin.h
651 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
652unequal5.o: ./unequal.c ./puzzles.h ./latin.h
653 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
654unequal2.o: ./unequal.c ./puzzles.h ./latin.h
655 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
656unruly.o: ./unruly.c ./puzzles.h
657 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
658unruly5.o: ./unruly.c ./puzzles.h
659 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
660unruly2.o: ./unruly.c ./puzzles.h
661 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
662untangle.o: ./untangle.c ./puzzles.h ./tree234.h
663 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
664untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
665 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
666version.o: ./version.c ./version.h
667 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
668windows.o: ./windows.c ./puzzles.h ./resource.h
669 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
670windows1.o: ./windows.c ./puzzles.h ./resource.h
671 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
672
673GAMES += blackbox
674GAMES += bridges
675GAMES += cube
676GAMES += dominosa
677GAMES += fifteen
678GAMES += filling
679GAMES += flip
680GAMES += flood
681GAMES += galaxies
682GAMES += guess
683GAMES += inertia
684GAMES += keen
685GAMES += lightup
686GAMES += loopy
687GAMES += magnets
688GAMES += map
689GAMES += mines
690GAMES += net
691GAMES += netslide
692GAMES += palisade
693GAMES += pattern
694GAMES += pearl
695GAMES += pegs
696GAMES += range
697GAMES += rect
698GAMES += samegame
699GAMES += signpost
700GAMES += singles
701GAMES += sixteen
702GAMES += slant
703GAMES += solo
704GAMES += tents
705GAMES += towers
706GAMES += tracks
707GAMES += twiddle
708GAMES += undead
709GAMES += unequal
710GAMES += unruly
711GAMES += untangle
712install:
713 for i in $(GAMES); do \
714 $(INSTALL_PROGRAM) -m 755 $(BINPREFIX)$$i $(DESTDIR)$(gamesdir)/$(BINPREFIX)$$i \
715 || exit 1; \
716 done
717test: benchmark.html benchmark.txt
718
719benchmark.html: benchmark.txt benchmark.pl
720 ./benchmark.pl benchmark.txt > $@
721
722benchmark.txt: benchmark.sh $(GAMES)
723 ./benchmark.sh > $@
724
725
726clean:
727 rm -f *.o $(BINPREFIX)blackbox $(BINPREFIX)bridges $(BINPREFIX)cube $(BINPREFIX)dominosa $(BINPREFIX)fifteen $(BINPREFIX)fifteensolver $(BINPREFIX)filling $(BINPREFIX)fillingsolver $(BINPREFIX)flip $(BINPREFIX)flood $(BINPREFIX)galaxies $(BINPREFIX)galaxiespicture $(BINPREFIX)galaxiessolver $(BINPREFIX)guess $(BINPREFIX)inertia $(BINPREFIX)keen $(BINPREFIX)keensolver $(BINPREFIX)latincheck $(BINPREFIX)lightup $(BINPREFIX)lightupsolver $(BINPREFIX)loopy $(BINPREFIX)loopysolver $(BINPREFIX)magnets $(BINPREFIX)magnetssolver $(BINPREFIX)map $(BINPREFIX)mapsolver $(BINPREFIX)mineobfusc $(BINPREFIX)mines $(BINPREFIX)net $(BINPREFIX)netslide $(BINPREFIX)nullgame $(BINPREFIX)obfusc $(BINPREFIX)palisade $(BINPREFIX)pattern $(BINPREFIX)patternpicture $(BINPREFIX)patternsolver $(BINPREFIX)pearl $(BINPREFIX)pearlbench $(BINPREFIX)pegs $(BINPREFIX)range $(BINPREFIX)rect $(BINPREFIX)samegame $(BINPREFIX)signpost $(BINPREFIX)signpostsolver $(BINPREFIX)singles $(BINPREFIX)singlessolver $(BINPREFIX)sixteen $(BINPREFIX)slant $(BINPREFIX)slantsolver $(BINPREFIX)solo $(BINPREFIX)solosolver $(BINPREFIX)tents $(BINPREFIX)tentssolver $(BINPREFIX)towers $(BINPREFIX)towerssolver $(BINPREFIX)tracks $(BINPREFIX)twiddle $(BINPREFIX)undead $(BINPREFIX)unequal $(BINPREFIX)unequalsolver $(BINPREFIX)unruly $(BINPREFIX)unrulysolver $(BINPREFIX)untangle
diff --git a/apps/plugins/puzzles/src/Makefile.in b/apps/plugins/puzzles/src/Makefile.in
new file mode 100644
index 0000000000..58154a8d74
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.in
@@ -0,0 +1,2611 @@
1# Makefile.in generated by automake 1.15.1 from Makefile.am.
2# @configure_input@
3
4# Copyright (C) 1994-2017 Free Software Foundation, Inc.
5
6# This Makefile.in is free software; the Free Software Foundation
7# gives unlimited permission to copy and/or distribute it,
8# with or without modifications, as long as this notice is preserved.
9
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
12# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13# PARTICULAR PURPOSE.
14
15@SET_MAKE@
16
17# Makefile.am for puzzles under Unix with Autoconf/Automake.
18#
19# This file was created by `mkfiles.pl' from the `Recipe' file.
20# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
21
22
23VPATH = @srcdir@
24am__is_gnu_make = { \
25 if test -z '$(MAKELEVEL)'; then \
26 false; \
27 elif test -n '$(MAKE_HOST)'; then \
28 true; \
29 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
30 true; \
31 else \
32 false; \
33 fi; \
34}
35am__make_running_with_option = \
36 case $${target_option-} in \
37 ?) ;; \
38 *) echo "am__make_running_with_option: internal error: invalid" \
39 "target option '$${target_option-}' specified" >&2; \
40 exit 1;; \
41 esac; \
42 has_opt=no; \
43 sane_makeflags=$$MAKEFLAGS; \
44 if $(am__is_gnu_make); then \
45 sane_makeflags=$$MFLAGS; \
46 else \
47 case $$MAKEFLAGS in \
48 *\\[\ \ ]*) \
49 bs=\\; \
50 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
51 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
52 esac; \
53 fi; \
54 skip_next=no; \
55 strip_trailopt () \
56 { \
57 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
58 }; \
59 for flg in $$sane_makeflags; do \
60 test $$skip_next = yes && { skip_next=no; continue; }; \
61 case $$flg in \
62 *=*|--*) continue;; \
63 -*I) strip_trailopt 'I'; skip_next=yes;; \
64 -*I?*) strip_trailopt 'I';; \
65 -*O) strip_trailopt 'O'; skip_next=yes;; \
66 -*O?*) strip_trailopt 'O';; \
67 -*l) strip_trailopt 'l'; skip_next=yes;; \
68 -*l?*) strip_trailopt 'l';; \
69 -[dEDm]) skip_next=yes;; \
70 -[JT]) skip_next=yes;; \
71 esac; \
72 case $$flg in \
73 *$$target_option*) has_opt=yes; break;; \
74 esac; \
75 done; \
76 test $$has_opt = yes
77am__make_dryrun = (target_option=n; $(am__make_running_with_option))
78am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
79pkgdatadir = $(datadir)/@PACKAGE@
80pkgincludedir = $(includedir)/@PACKAGE@
81pkglibdir = $(libdir)/@PACKAGE@
82pkglibexecdir = $(libexecdir)/@PACKAGE@
83am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
84install_sh_DATA = $(install_sh) -c -m 644
85install_sh_PROGRAM = $(install_sh) -c
86install_sh_SCRIPT = $(install_sh) -c
87INSTALL_HEADER = $(INSTALL_DATA)
88transform = $(program_transform_name)
89NORMAL_INSTALL = :
90PRE_INSTALL = :
91POST_INSTALL = :
92NORMAL_UNINSTALL = :
93PRE_UNINSTALL = :
94POST_UNINSTALL = :
95noinst_PROGRAMS = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
96 dominosa$(EXEEXT) fifteen$(EXEEXT) fifteensolver$(EXEEXT) \
97 filling$(EXEEXT) fillingsolver$(EXEEXT) flip$(EXEEXT) \
98 flood$(EXEEXT) galaxies$(EXEEXT) galaxiespicture$(EXEEXT) \
99 galaxiessolver$(EXEEXT) guess$(EXEEXT) inertia$(EXEEXT) \
100 keen$(EXEEXT) keensolver$(EXEEXT) latincheck$(EXEEXT) \
101 lightup$(EXEEXT) lightupsolver$(EXEEXT) loopy$(EXEEXT) \
102 loopysolver$(EXEEXT) magnets$(EXEEXT) magnetssolver$(EXEEXT) \
103 map$(EXEEXT) mapsolver$(EXEEXT) mineobfusc$(EXEEXT) \
104 mines$(EXEEXT) net$(EXEEXT) netslide$(EXEEXT) \
105 nullgame$(EXEEXT) obfusc$(EXEEXT) palisade$(EXEEXT) \
106 pattern$(EXEEXT) patternpicture$(EXEEXT) \
107 patternsolver$(EXEEXT) pearl$(EXEEXT) pearlbench$(EXEEXT) \
108 pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \
109 signpost$(EXEEXT) signpostsolver$(EXEEXT) singles$(EXEEXT) \
110 singlessolver$(EXEEXT) sixteen$(EXEEXT) slant$(EXEEXT) \
111 slantsolver$(EXEEXT) solo$(EXEEXT) solosolver$(EXEEXT) \
112 tents$(EXEEXT) tentssolver$(EXEEXT) towers$(EXEEXT) \
113 towerssolver$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
114 undead$(EXEEXT) unequal$(EXEEXT) unequalsolver$(EXEEXT) \
115 unruly$(EXEEXT) unrulysolver$(EXEEXT) untangle$(EXEEXT)
116bin_PROGRAMS = $(am__EXEEXT_1)
117subdir = .
118ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
119am__aclocal_m4_deps = $(top_srcdir)/configure.ac
120am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
121 $(ACLOCAL_M4)
122DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
123 $(am__configure_deps) $(am__DIST_COMMON)
124am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
125 configure.lineno config.status.lineno
126mkinstalldirs = $(install_sh) -d
127CONFIG_CLEAN_FILES =
128CONFIG_CLEAN_VPATH_FILES =
129LIBRARIES = $(noinst_LIBRARIES)
130AR = ar
131ARFLAGS = cru
132AM_V_AR = $(am__v_AR_@AM_V@)
133am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
134am__v_AR_0 = @echo " AR " $@;
135am__v_AR_1 =
136libfifteen2_a_AR = $(AR) $(ARFLAGS)
137libfifteen2_a_LIBADD =
138am__dirstamp = $(am__leading_dot)dirstamp
139am_libfifteen2_a_OBJECTS = ./libfifteen2_a-fifteen.$(OBJEXT)
140libfifteen2_a_OBJECTS = $(am_libfifteen2_a_OBJECTS)
141libfilling2_a_AR = $(AR) $(ARFLAGS)
142libfilling2_a_LIBADD =
143am_libfilling2_a_OBJECTS = ./libfilling2_a-filling.$(OBJEXT)
144libfilling2_a_OBJECTS = $(am_libfilling2_a_OBJECTS)
145libgalaxie2_a_AR = $(AR) $(ARFLAGS)
146libgalaxie2_a_LIBADD =
147am_libgalaxie2_a_OBJECTS = ./libgalaxie2_a-galaxies.$(OBJEXT)
148libgalaxie2_a_OBJECTS = $(am_libgalaxie2_a_OBJECTS)
149libgalaxie4_a_AR = $(AR) $(ARFLAGS)
150libgalaxie4_a_LIBADD =
151am_libgalaxie4_a_OBJECTS = ./libgalaxie4_a-galaxies.$(OBJEXT)
152libgalaxie4_a_OBJECTS = $(am_libgalaxie4_a_OBJECTS)
153libkeen2_a_AR = $(AR) $(ARFLAGS)
154libkeen2_a_LIBADD =
155am_libkeen2_a_OBJECTS = ./libkeen2_a-keen.$(OBJEXT)
156libkeen2_a_OBJECTS = $(am_libkeen2_a_OBJECTS)
157liblatin6_a_AR = $(AR) $(ARFLAGS)
158liblatin6_a_LIBADD =
159am_liblatin6_a_OBJECTS = ./liblatin6_a-latin.$(OBJEXT)
160liblatin6_a_OBJECTS = $(am_liblatin6_a_OBJECTS)
161liblatin8_a_AR = $(AR) $(ARFLAGS)
162liblatin8_a_LIBADD =
163am_liblatin8_a_OBJECTS = ./liblatin8_a-latin.$(OBJEXT)
164liblatin8_a_OBJECTS = $(am_liblatin8_a_OBJECTS)
165liblightup2_a_AR = $(AR) $(ARFLAGS)
166liblightup2_a_LIBADD =
167am_liblightup2_a_OBJECTS = ./liblightup2_a-lightup.$(OBJEXT)
168liblightup2_a_OBJECTS = $(am_liblightup2_a_OBJECTS)
169libloopy2_a_AR = $(AR) $(ARFLAGS)
170libloopy2_a_LIBADD =
171am_libloopy2_a_OBJECTS = ./libloopy2_a-loopy.$(OBJEXT)
172libloopy2_a_OBJECTS = $(am_libloopy2_a_OBJECTS)
173libmagnets2_a_AR = $(AR) $(ARFLAGS)
174libmagnets2_a_LIBADD =
175am_libmagnets2_a_OBJECTS = ./libmagnets2_a-magnets.$(OBJEXT)
176libmagnets2_a_OBJECTS = $(am_libmagnets2_a_OBJECTS)
177libmap2_a_AR = $(AR) $(ARFLAGS)
178libmap2_a_LIBADD =
179am_libmap2_a_OBJECTS = ./libmap2_a-map.$(OBJEXT)
180libmap2_a_OBJECTS = $(am_libmap2_a_OBJECTS)
181libmines2_a_AR = $(AR) $(ARFLAGS)
182libmines2_a_LIBADD =
183am_libmines2_a_OBJECTS = ./libmines2_a-mines.$(OBJEXT)
184libmines2_a_OBJECTS = $(am_libmines2_a_OBJECTS)
185libpattern2_a_AR = $(AR) $(ARFLAGS)
186libpattern2_a_LIBADD =
187am_libpattern2_a_OBJECTS = ./libpattern2_a-pattern.$(OBJEXT)
188libpattern2_a_OBJECTS = $(am_libpattern2_a_OBJECTS)
189libpattern4_a_AR = $(AR) $(ARFLAGS)
190libpattern4_a_LIBADD =
191am_libpattern4_a_OBJECTS = ./libpattern4_a-pattern.$(OBJEXT)
192libpattern4_a_OBJECTS = $(am_libpattern4_a_OBJECTS)
193libpearl2_a_AR = $(AR) $(ARFLAGS)
194libpearl2_a_LIBADD =
195am_libpearl2_a_OBJECTS = ./libpearl2_a-pearl.$(OBJEXT)
196libpearl2_a_OBJECTS = $(am_libpearl2_a_OBJECTS)
197libsignpos2_a_AR = $(AR) $(ARFLAGS)
198libsignpos2_a_LIBADD =
199am_libsignpos2_a_OBJECTS = ./libsignpos2_a-signpost.$(OBJEXT)
200libsignpos2_a_OBJECTS = $(am_libsignpos2_a_OBJECTS)
201libsingles3_a_AR = $(AR) $(ARFLAGS)
202libsingles3_a_LIBADD =
203am_libsingles3_a_OBJECTS = ./libsingles3_a-singles.$(OBJEXT)
204libsingles3_a_OBJECTS = $(am_libsingles3_a_OBJECTS)
205libslant2_a_AR = $(AR) $(ARFLAGS)
206libslant2_a_LIBADD =
207am_libslant2_a_OBJECTS = ./libslant2_a-slant.$(OBJEXT)
208libslant2_a_OBJECTS = $(am_libslant2_a_OBJECTS)
209libsolo2_a_AR = $(AR) $(ARFLAGS)
210libsolo2_a_LIBADD =
211am_libsolo2_a_OBJECTS = ./libsolo2_a-solo.$(OBJEXT)
212libsolo2_a_OBJECTS = $(am_libsolo2_a_OBJECTS)
213libtents3_a_AR = $(AR) $(ARFLAGS)
214libtents3_a_LIBADD =
215am_libtents3_a_OBJECTS = ./libtents3_a-tents.$(OBJEXT)
216libtents3_a_OBJECTS = $(am_libtents3_a_OBJECTS)
217libtowers2_a_AR = $(AR) $(ARFLAGS)
218libtowers2_a_LIBADD =
219am_libtowers2_a_OBJECTS = ./libtowers2_a-towers.$(OBJEXT)
220libtowers2_a_OBJECTS = $(am_libtowers2_a_OBJECTS)
221libunequal2_a_AR = $(AR) $(ARFLAGS)
222libunequal2_a_LIBADD =
223am_libunequal2_a_OBJECTS = ./libunequal2_a-unequal.$(OBJEXT)
224libunequal2_a_OBJECTS = $(am_libunequal2_a_OBJECTS)
225libunruly2_a_AR = $(AR) $(ARFLAGS)
226libunruly2_a_LIBADD =
227am_libunruly2_a_OBJECTS = ./libunruly2_a-unruly.$(OBJEXT)
228libunruly2_a_OBJECTS = $(am_libunruly2_a_OBJECTS)
229am__EXEEXT_1 = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
230 dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \
231 flip$(EXEEXT) flood$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \
232 inertia$(EXEEXT) keen$(EXEEXT) lightup$(EXEEXT) loopy$(EXEEXT) \
233 magnets$(EXEEXT) map$(EXEEXT) mines$(EXEEXT) net$(EXEEXT) \
234 netslide$(EXEEXT) palisade$(EXEEXT) pattern$(EXEEXT) \
235 pearl$(EXEEXT) pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) \
236 samegame$(EXEEXT) signpost$(EXEEXT) singles$(EXEEXT) \
237 sixteen$(EXEEXT) slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) \
238 towers$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
239 undead$(EXEEXT) unequal$(EXEEXT) unruly$(EXEEXT) \
240 untangle$(EXEEXT)
241am__installdirs = "$(DESTDIR)$(bindir)"
242PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
243am_blackbox_OBJECTS = ./blackbox.$(OBJEXT) ./drawing.$(OBJEXT) \
244 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
245 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
246 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
247blackbox_OBJECTS = $(am_blackbox_OBJECTS)
248am__DEPENDENCIES_1 =
249blackbox_DEPENDENCIES = $(am__DEPENDENCIES_1)
250am_bridges_OBJECTS = ./bridges.$(OBJEXT) ./drawing.$(OBJEXT) \
251 ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) \
252 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
253 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
254 ./random.$(OBJEXT) ./version.$(OBJEXT)
255bridges_OBJECTS = $(am_bridges_OBJECTS)
256bridges_DEPENDENCIES = $(am__DEPENDENCIES_1)
257am_cube_OBJECTS = ./cube.$(OBJEXT) ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
258 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
259 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
260 ./random.$(OBJEXT) ./version.$(OBJEXT)
261cube_OBJECTS = $(am_cube_OBJECTS)
262cube_DEPENDENCIES = $(am__DEPENDENCIES_1)
263am_dominosa_OBJECTS = ./dominosa.$(OBJEXT) ./drawing.$(OBJEXT) \
264 ./gtk.$(OBJEXT) ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
265 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
266 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
267 ./version.$(OBJEXT)
268dominosa_OBJECTS = $(am_dominosa_OBJECTS)
269dominosa_DEPENDENCIES = $(am__DEPENDENCIES_1)
270am_fifteen_OBJECTS = ./drawing.$(OBJEXT) ./fifteen.$(OBJEXT) \
271 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
272 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
273 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
274fifteen_OBJECTS = $(am_fifteen_OBJECTS)
275fifteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
276am_fifteensolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
277 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
278fifteensolver_OBJECTS = $(am_fifteensolver_OBJECTS)
279fifteensolver_DEPENDENCIES = libfifteen2_a-fifteen.$(OBJEXT)
280am_filling_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
281 ./filling.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
282 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
283 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
284 ./version.$(OBJEXT)
285filling_OBJECTS = $(am_filling_OBJECTS)
286filling_DEPENDENCIES = $(am__DEPENDENCIES_1)
287am_fillingsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
288 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
289fillingsolver_OBJECTS = $(am_fillingsolver_OBJECTS)
290fillingsolver_DEPENDENCIES = libfilling2_a-filling.$(OBJEXT)
291am_flip_OBJECTS = ./drawing.$(OBJEXT) ./flip.$(OBJEXT) ./gtk.$(OBJEXT) \
292 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
293 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
294 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
295flip_OBJECTS = $(am_flip_OBJECTS)
296flip_DEPENDENCIES = $(am__DEPENDENCIES_1)
297am_flood_OBJECTS = ./drawing.$(OBJEXT) ./flood.$(OBJEXT) \
298 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
299 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
300 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
301flood_OBJECTS = $(am_flood_OBJECTS)
302flood_DEPENDENCIES = $(am__DEPENDENCIES_1)
303am_galaxies_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
304 ./galaxies.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
305 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
306 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
307 ./version.$(OBJEXT)
308galaxies_OBJECTS = $(am_galaxies_OBJECTS)
309galaxies_DEPENDENCIES = $(am__DEPENDENCIES_1)
310am_galaxiespicture_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
311 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
312galaxiespicture_OBJECTS = $(am_galaxiespicture_OBJECTS)
313galaxiespicture_DEPENDENCIES = libgalaxie4_a-galaxies.$(OBJEXT)
314am_galaxiessolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
315 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
316galaxiessolver_OBJECTS = $(am_galaxiessolver_OBJECTS)
317galaxiessolver_DEPENDENCIES = libgalaxie2_a-galaxies.$(OBJEXT)
318am_guess_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
319 ./guess.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
320 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
321 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
322guess_OBJECTS = $(am_guess_OBJECTS)
323guess_DEPENDENCIES = $(am__DEPENDENCIES_1)
324am_inertia_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
325 ./inertia.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
326 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
327 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
328inertia_OBJECTS = $(am_inertia_OBJECTS)
329inertia_DEPENDENCIES = $(am__DEPENDENCIES_1)
330am_keen_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
331 ./keen.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
332 ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
333 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
334 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
335keen_OBJECTS = $(am_keen_OBJECTS)
336keen_DEPENDENCIES = $(am__DEPENDENCIES_1)
337am_keensolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
338 ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
339 ./random.$(OBJEXT) ./tree234.$(OBJEXT)
340keensolver_OBJECTS = $(am_keensolver_OBJECTS)
341keensolver_DEPENDENCIES = libkeen2_a-keen.$(OBJEXT) \
342 liblatin6_a-latin.$(OBJEXT)
343am_latincheck_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
344 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
345 ./tree234.$(OBJEXT)
346latincheck_OBJECTS = $(am_latincheck_OBJECTS)
347latincheck_DEPENDENCIES = liblatin8_a-latin.$(OBJEXT)
348am_lightup_OBJECTS = ./combi.$(OBJEXT) ./drawing.$(OBJEXT) \
349 ./gtk.$(OBJEXT) ./lightup.$(OBJEXT) ./malloc.$(OBJEXT) \
350 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
351 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
352 ./version.$(OBJEXT)
353lightup_OBJECTS = $(am_lightup_OBJECTS)
354lightup_DEPENDENCIES = $(am__DEPENDENCIES_1)
355am_lightupsolver_OBJECTS = ./combi.$(OBJEXT) ./malloc.$(OBJEXT) \
356 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
357lightupsolver_OBJECTS = $(am_lightupsolver_OBJECTS)
358lightupsolver_DEPENDENCIES = liblightup2_a-lightup.$(OBJEXT)
359am_loopy_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
360 ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
361 ./loopy.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
362 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./penrose.$(OBJEXT) \
363 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
364 ./tree234.$(OBJEXT) ./version.$(OBJEXT)
365loopy_OBJECTS = $(am_loopy_OBJECTS)
366loopy_DEPENDENCIES = $(am__DEPENDENCIES_1)
367am_loopysolver_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
368 ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
369 ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
370 ./tree234.$(OBJEXT)
371loopysolver_OBJECTS = $(am_loopysolver_OBJECTS)
372loopysolver_DEPENDENCIES = libloopy2_a-loopy.$(OBJEXT)
373am_magnets_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
374 ./laydomino.$(OBJEXT) ./magnets.$(OBJEXT) ./malloc.$(OBJEXT) \
375 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
376 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
377 ./version.$(OBJEXT)
378magnets_OBJECTS = $(am_magnets_OBJECTS)
379magnets_DEPENDENCIES = $(am__DEPENDENCIES_1)
380am_magnetssolver_OBJECTS = ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
381 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
382magnetssolver_OBJECTS = $(am_magnetssolver_OBJECTS)
383magnetssolver_DEPENDENCIES = libmagnets2_a-magnets.$(OBJEXT)
384am_map_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
385 ./malloc.$(OBJEXT) ./map.$(OBJEXT) ./midend.$(OBJEXT) \
386 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
387 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
388map_OBJECTS = $(am_map_OBJECTS)
389map_DEPENDENCIES = $(am__DEPENDENCIES_1)
390am_mapsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
391 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
392mapsolver_OBJECTS = $(am_mapsolver_OBJECTS)
393mapsolver_DEPENDENCIES = libmap2_a-map.$(OBJEXT)
394am_mineobfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
395 ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
396mineobfusc_OBJECTS = $(am_mineobfusc_OBJECTS)
397mineobfusc_DEPENDENCIES = libmines2_a-mines.$(OBJEXT)
398am_mines_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
399 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./mines.$(OBJEXT) \
400 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
401 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
402 ./version.$(OBJEXT)
403mines_OBJECTS = $(am_mines_OBJECTS)
404mines_DEPENDENCIES = $(am__DEPENDENCIES_1)
405am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
406 ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
407 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./net.$(OBJEXT) \
408 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
409 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
410net_OBJECTS = $(am_net_OBJECTS)
411net_DEPENDENCIES = $(am__DEPENDENCIES_1)
412am_netslide_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
413 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
414 ./netslide.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
415 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
416 ./version.$(OBJEXT)
417netslide_OBJECTS = $(am_netslide_OBJECTS)
418netslide_DEPENDENCIES = $(am__DEPENDENCIES_1)
419am_nullgame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
420 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
421 ./no-icon.$(OBJEXT) ./nullgame.$(OBJEXT) ./printing.$(OBJEXT) \
422 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
423nullgame_OBJECTS = $(am_nullgame_OBJECTS)
424nullgame_DEPENDENCIES = $(am__DEPENDENCIES_1)
425am_obfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
426 ./nullfe.$(OBJEXT) ./obfusc.$(OBJEXT) ./random.$(OBJEXT)
427obfusc_OBJECTS = $(am_obfusc_OBJECTS)
428obfusc_DEPENDENCIES =
429am_palisade_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
430 ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
431 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
432 ./palisade.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
433 ./random.$(OBJEXT) ./version.$(OBJEXT)
434palisade_OBJECTS = $(am_palisade_OBJECTS)
435palisade_DEPENDENCIES = $(am__DEPENDENCIES_1)
436am_pattern_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
437 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
438 ./no-icon.$(OBJEXT) ./pattern.$(OBJEXT) ./printing.$(OBJEXT) \
439 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
440pattern_OBJECTS = $(am_pattern_OBJECTS)
441pattern_DEPENDENCIES = $(am__DEPENDENCIES_1)
442am_patternpicture_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
443 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
444patternpicture_OBJECTS = $(am_patternpicture_OBJECTS)
445patternpicture_DEPENDENCIES = libpattern4_a-pattern.$(OBJEXT)
446am_patternsolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
447 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
448patternsolver_OBJECTS = $(am_patternsolver_OBJECTS)
449patternsolver_DEPENDENCIES = libpattern2_a-pattern.$(OBJEXT)
450am_pearl_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
451 ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
452 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
453 ./no-icon.$(OBJEXT) ./pearl.$(OBJEXT) ./penrose.$(OBJEXT) \
454 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
455 ./tdq.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
456pearl_OBJECTS = $(am_pearl_OBJECTS)
457pearl_DEPENDENCIES = $(am__DEPENDENCIES_1)
458am_pearlbench_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
459 ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
460 ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
461 ./tdq.$(OBJEXT) ./tree234.$(OBJEXT)
462pearlbench_OBJECTS = $(am_pearlbench_OBJECTS)
463pearlbench_DEPENDENCIES = libpearl2_a-pearl.$(OBJEXT)
464am_pegs_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
465 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
466 ./no-icon.$(OBJEXT) ./pegs.$(OBJEXT) ./printing.$(OBJEXT) \
467 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
468 ./version.$(OBJEXT)
469pegs_OBJECTS = $(am_pegs_OBJECTS)
470pegs_DEPENDENCIES = $(am__DEPENDENCIES_1)
471am_range_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
472 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
473 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
474 ./random.$(OBJEXT) ./range.$(OBJEXT) ./version.$(OBJEXT)
475range_OBJECTS = $(am_range_OBJECTS)
476range_DEPENDENCIES = $(am__DEPENDENCIES_1)
477am_rect_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
478 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
479 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
480 ./random.$(OBJEXT) ./rect.$(OBJEXT) ./version.$(OBJEXT)
481rect_OBJECTS = $(am_rect_OBJECTS)
482rect_DEPENDENCIES = $(am__DEPENDENCIES_1)
483am_samegame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
484 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
485 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
486 ./random.$(OBJEXT) ./samegame.$(OBJEXT) ./version.$(OBJEXT)
487samegame_OBJECTS = $(am_samegame_OBJECTS)
488samegame_DEPENDENCIES = $(am__DEPENDENCIES_1)
489am_signpost_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
490 ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
491 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
492 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./signpost.$(OBJEXT) \
493 ./version.$(OBJEXT)
494signpost_OBJECTS = $(am_signpost_OBJECTS)
495signpost_DEPENDENCIES = $(am__DEPENDENCIES_1)
496am_signpostsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
497 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
498signpostsolver_OBJECTS = $(am_signpostsolver_OBJECTS)
499signpostsolver_DEPENDENCIES = libsignpos2_a-signpost.$(OBJEXT)
500am_singles_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
501 ./gtk.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
502 ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
503 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
504 ./random.$(OBJEXT) ./singles.$(OBJEXT) ./tree234.$(OBJEXT) \
505 ./version.$(OBJEXT)
506singles_OBJECTS = $(am_singles_OBJECTS)
507singles_DEPENDENCIES = $(am__DEPENDENCIES_1)
508am_singlessolver_OBJECTS = ./dsf.$(OBJEXT) ./latin.$(OBJEXT) \
509 ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) \
510 ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
511singlessolver_OBJECTS = $(am_singlessolver_OBJECTS)
512singlessolver_DEPENDENCIES = libsingles3_a-singles.$(OBJEXT)
513am_sixteen_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
514 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
515 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
516 ./random.$(OBJEXT) ./sixteen.$(OBJEXT) ./version.$(OBJEXT)
517sixteen_OBJECTS = $(am_sixteen_OBJECTS)
518sixteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
519am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
520 ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
521 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
522 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
523 ./slant.$(OBJEXT) ./version.$(OBJEXT)
524slant_OBJECTS = $(am_slant_OBJECTS)
525slant_DEPENDENCIES = $(am__DEPENDENCIES_1)
526am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) \
527 ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
528 ./random.$(OBJEXT)
529slantsolver_OBJECTS = $(am_slantsolver_OBJECTS)
530slantsolver_DEPENDENCIES = libslant2_a-slant.$(OBJEXT)
531am_solo_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
532 ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
533 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
534 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
535 ./solo.$(OBJEXT) ./version.$(OBJEXT)
536solo_OBJECTS = $(am_solo_OBJECTS)
537solo_DEPENDENCIES = $(am__DEPENDENCIES_1)
538am_solosolver_OBJECTS = ./divvy.$(OBJEXT) ./dsf.$(OBJEXT) \
539 ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
540 ./random.$(OBJEXT)
541solosolver_OBJECTS = $(am_solosolver_OBJECTS)
542solosolver_DEPENDENCIES = libsolo2_a-solo.$(OBJEXT)
543am_tents_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
544 ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) \
545 ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
546 ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tents.$(OBJEXT) \
547 ./version.$(OBJEXT)
548tents_OBJECTS = $(am_tents_OBJECTS)
549tents_DEPENDENCIES = $(am__DEPENDENCIES_1)
550am_tentssolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
551 ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
552 ./random.$(OBJEXT)
553tentssolver_OBJECTS = $(am_tentssolver_OBJECTS)
554tentssolver_DEPENDENCIES = libtents3_a-tents.$(OBJEXT)
555am_towers_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
556 ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
557 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
558 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
559 ./towers.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
560towers_OBJECTS = $(am_towers_OBJECTS)
561towers_DEPENDENCIES = $(am__DEPENDENCIES_1)
562am_towerssolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
563 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
564 ./tree234.$(OBJEXT)
565towerssolver_OBJECTS = $(am_towerssolver_OBJECTS)
566towerssolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
567 libtowers2_a-towers.$(OBJEXT)
568am_tracks_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
569 ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
570 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
571 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
572 ./tracks.$(OBJEXT) ./version.$(OBJEXT)
573tracks_OBJECTS = $(am_tracks_OBJECTS)
574tracks_DEPENDENCIES = $(am__DEPENDENCIES_1)
575am_twiddle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
576 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
577 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
578 ./random.$(OBJEXT) ./twiddle.$(OBJEXT) ./version.$(OBJEXT)
579twiddle_OBJECTS = $(am_twiddle_OBJECTS)
580twiddle_DEPENDENCIES = $(am__DEPENDENCIES_1)
581am_undead_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
582 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
583 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
584 ./random.$(OBJEXT) ./undead.$(OBJEXT) ./version.$(OBJEXT)
585undead_OBJECTS = $(am_undead_OBJECTS)
586undead_DEPENDENCIES = $(am__DEPENDENCIES_1)
587am_unequal_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
588 ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
589 ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
590 ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
591 ./tree234.$(OBJEXT) ./unequal.$(OBJEXT) ./version.$(OBJEXT)
592unequal_OBJECTS = $(am_unequal_OBJECTS)
593unequal_DEPENDENCIES = $(am__DEPENDENCIES_1)
594am_unequalsolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
595 ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
596 ./tree234.$(OBJEXT)
597unequalsolver_OBJECTS = $(am_unequalsolver_OBJECTS)
598unequalsolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
599 libunequal2_a-unequal.$(OBJEXT)
600am_unruly_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
601 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
602 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
603 ./random.$(OBJEXT) ./unruly.$(OBJEXT) ./version.$(OBJEXT)
604unruly_OBJECTS = $(am_unruly_OBJECTS)
605unruly_DEPENDENCIES = $(am__DEPENDENCIES_1)
606am_unrulysolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
607 ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
608unrulysolver_OBJECTS = $(am_unrulysolver_OBJECTS)
609unrulysolver_DEPENDENCIES = libunruly2_a-unruly.$(OBJEXT)
610am_untangle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
611 ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
612 ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
613 ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./untangle.$(OBJEXT) \
614 ./version.$(OBJEXT)
615untangle_OBJECTS = $(am_untangle_OBJECTS)
616untangle_DEPENDENCIES = $(am__DEPENDENCIES_1)
617AM_V_P = $(am__v_P_@AM_V@)
618am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
619am__v_P_0 = false
620am__v_P_1 = :
621AM_V_GEN = $(am__v_GEN_@AM_V@)
622am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
623am__v_GEN_0 = @echo " GEN " $@;
624am__v_GEN_1 =
625AM_V_at = $(am__v_at_@AM_V@)
626am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
627am__v_at_0 = @
628am__v_at_1 =
629DEFAULT_INCLUDES = -I.@am__isrc@
630depcomp = $(SHELL) $(top_srcdir)/depcomp
631am__depfiles_maybe = depfiles
632am__mv = mv -f
633AM_V_lt = $(am__v_lt_@AM_V@)
634am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
635am__v_lt_0 = --silent
636am__v_lt_1 =
637COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
638 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
639AM_V_CC = $(am__v_CC_@AM_V@)
640am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
641am__v_CC_0 = @echo " CC " $@;
642am__v_CC_1 =
643CCLD = $(CC)
644LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
645AM_V_CCLD = $(am__v_CCLD_@AM_V@)
646am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
647am__v_CCLD_0 = @echo " CCLD " $@;
648am__v_CCLD_1 =
649SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
650 $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
651 $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
652 $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
653 $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
654 $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
655 $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
656 $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
657 $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
658 $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
659 $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
660 $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
661 $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
662 $(fifteensolver_SOURCES) $(filling_SOURCES) \
663 $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
664 $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
665 $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
666 $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
667 $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
668 $(loopysolver_SOURCES) $(magnets_SOURCES) \
669 $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
670 $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
671 $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
672 $(palisade_SOURCES) $(pattern_SOURCES) \
673 $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
674 $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
675 $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
676 $(signpost_SOURCES) $(signpostsolver_SOURCES) \
677 $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
678 $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
679 $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
680 $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
681 $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
682 $(unequalsolver_SOURCES) $(unruly_SOURCES) \
683 $(unrulysolver_SOURCES) $(untangle_SOURCES)
684DIST_SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
685 $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
686 $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
687 $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
688 $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
689 $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
690 $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
691 $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
692 $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
693 $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
694 $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
695 $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
696 $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
697 $(fifteensolver_SOURCES) $(filling_SOURCES) \
698 $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
699 $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
700 $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
701 $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
702 $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
703 $(loopysolver_SOURCES) $(magnets_SOURCES) \
704 $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
705 $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
706 $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
707 $(palisade_SOURCES) $(pattern_SOURCES) \
708 $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
709 $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
710 $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
711 $(signpost_SOURCES) $(signpostsolver_SOURCES) \
712 $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
713 $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
714 $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
715 $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
716 $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
717 $(unequalsolver_SOURCES) $(unruly_SOURCES) \
718 $(unrulysolver_SOURCES) $(untangle_SOURCES)
719am__can_run_installinfo = \
720 case $$AM_UPDATE_INFO_DIR in \
721 n|no|NO) false;; \
722 *) (install-info --version) >/dev/null 2>&1;; \
723 esac
724am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
725# Read a list of newline-separated strings from the standard input,
726# and print each of them once, without duplicates. Input order is
727# *not* preserved.
728am__uniquify_input = $(AWK) '\
729 BEGIN { nonempty = 0; } \
730 { items[$$0] = 1; nonempty = 1; } \
731 END { if (nonempty) { for (i in items) print i; }; } \
732'
733# Make sure the list of sources is unique. This is necessary because,
734# e.g., the same source file might be shared among _SOURCES variables
735# for different programs/libraries.
736am__define_uniq_tagged_files = \
737 list='$(am__tagged_files)'; \
738 unique=`for i in $$list; do \
739 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
740 done | $(am__uniquify_input)`
741ETAGS = etags
742CTAGS = ctags
743CSCOPE = cscope
744AM_RECURSIVE_TARGETS = cscope
745am__DIST_COMMON = $(srcdir)/Makefile.in README compile depcomp \
746 install-sh missing
747DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
748distdir = $(PACKAGE)-$(VERSION)
749top_distdir = $(distdir)
750am__remove_distdir = \
751 if test -d "$(distdir)"; then \
752 find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
753 && rm -rf "$(distdir)" \
754 || { sleep 5 && rm -rf "$(distdir)"; }; \
755 else :; fi
756am__post_remove_distdir = $(am__remove_distdir)
757DIST_ARCHIVES = $(distdir).tar.gz
758GZIP_ENV = --best
759DIST_TARGETS = dist-gzip
760distuninstallcheck_listfiles = find . -type f -print
761am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
762 | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
763distcleancheck_listfiles = find . -type f -print
764ACLOCAL = @ACLOCAL@
765AMTAR = @AMTAR@
766AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
767AUTOCONF = @AUTOCONF@
768AUTOHEADER = @AUTOHEADER@
769AUTOMAKE = @AUTOMAKE@
770AWK = @AWK@
771CC = @CC@
772CCDEPMODE = @CCDEPMODE@
773CFLAGS = @CFLAGS@
774CPPFLAGS = @CPPFLAGS@
775CYGPATH_W = @CYGPATH_W@
776DEFS = @DEFS@
777DEPDIR = @DEPDIR@
778ECHO_C = @ECHO_C@
779ECHO_N = @ECHO_N@
780ECHO_T = @ECHO_T@
781EXEEXT = @EXEEXT@
782GTK_CFLAGS = @GTK_CFLAGS@
783GTK_LIBS = @GTK_LIBS@
784INSTALL = @INSTALL@
785INSTALL_DATA = @INSTALL_DATA@
786INSTALL_PROGRAM = @INSTALL_PROGRAM@
787INSTALL_SCRIPT = @INSTALL_SCRIPT@
788INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
789LDFLAGS = @LDFLAGS@
790LIBOBJS = @LIBOBJS@
791LIBS = @LIBS@
792LTLIBOBJS = @LTLIBOBJS@
793MAKEINFO = @MAKEINFO@
794MKDIR_P = @MKDIR_P@
795OBJEXT = @OBJEXT@
796PACKAGE = @PACKAGE@
797PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
798PACKAGE_NAME = @PACKAGE_NAME@
799PACKAGE_STRING = @PACKAGE_STRING@
800PACKAGE_TARNAME = @PACKAGE_TARNAME@
801PACKAGE_URL = @PACKAGE_URL@
802PACKAGE_VERSION = @PACKAGE_VERSION@
803PATH_SEPARATOR = @PATH_SEPARATOR@
804PKG_CONFIG = @PKG_CONFIG@
805PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
806PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
807RANLIB = @RANLIB@
808SET_MAKE = @SET_MAKE@
809SHELL = @SHELL@
810STRIP = @STRIP@
811VERSION = @VERSION@
812abs_builddir = @abs_builddir@
813abs_srcdir = @abs_srcdir@
814abs_top_builddir = @abs_top_builddir@
815abs_top_srcdir = @abs_top_srcdir@
816ac_ct_CC = @ac_ct_CC@
817am__include = @am__include@
818am__leading_dot = @am__leading_dot@
819am__quote = @am__quote@
820am__tar = @am__tar@
821am__untar = @am__untar@
822bindir = @bindir@
823build_alias = @build_alias@
824builddir = @builddir@
825datadir = @datadir@
826datarootdir = @datarootdir@
827docdir = @docdir@
828dvidir = @dvidir@
829exec_prefix = @exec_prefix@
830host_alias = @host_alias@
831htmldir = @htmldir@
832includedir = @includedir@
833infodir = @infodir@
834install_sh = @install_sh@
835libdir = @libdir@
836libexecdir = @libexecdir@
837localedir = @localedir@
838localstatedir = @localstatedir@
839mandir = @mandir@
840mkdir_p = @mkdir_p@
841oldincludedir = @oldincludedir@
842pdfdir = @pdfdir@
843prefix = @prefix@
844program_transform_name = @program_transform_name@
845psdir = @psdir@
846sbindir = @sbindir@
847sharedstatedir = @sharedstatedir@
848srcdir = @srcdir@
849sysconfdir = @sysconfdir@
850target_alias = @target_alias@
851top_build_prefix = @top_build_prefix@
852top_builddir = @top_builddir@
853top_srcdir = @top_srcdir@
854GAMES = blackbox bridges cube dominosa fifteen filling flip flood \
855 galaxies guess inertia keen lightup loopy magnets map mines \
856 net netslide palisade pattern pearl pegs range rect samegame \
857 signpost singles sixteen slant solo tents towers tracks \
858 twiddle undead unequal unruly untangle
859AUTOMAKE_OPTIONS = subdir-objects
860allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \
861 ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \
862 ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \
863 ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \
864 ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \
865 ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \
866 ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \
867 ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \
868 ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \
869 ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
870 ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \
871 ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \
872 ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \
873 ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \
874 ./untangle.c ./version.c ./version.h ./windows.c
875
876AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/
877AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS)
878blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \
879 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
880 ./random.c ./version.c ./version.h
881
882blackbox_LDADD = $(GTK_LIBS) -lm
883bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \
884 ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \
885 ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
886
887bridges_LDADD = $(GTK_LIBS) -lm
888cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
889 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
890 ./version.c ./version.h
891
892cube_LDADD = $(GTK_LIBS) -lm
893dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \
894 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
895 ./puzzles.h ./random.c ./version.c ./version.h
896
897dominosa_LDADD = $(GTK_LIBS) -lm
898fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \
899 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
900 ./random.c ./version.c ./version.h
901
902fifteen_LDADD = $(GTK_LIBS) -lm
903fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
904 ./random.c
905
906fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm
907filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \
908 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
909 ./puzzles.h ./random.c ./version.c ./version.h
910
911filling_LDADD = $(GTK_LIBS) -lm
912fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
913 ./random.c
914
915fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm
916flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
917 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
918 ./tree234.c ./tree234.h ./version.c ./version.h
919
920flip_LDADD = $(GTK_LIBS) -lm
921flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
922 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
923 ./version.c ./version.h
924
925flood_LDADD = $(GTK_LIBS) -lm
926galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \
927 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
928 ./puzzles.h ./random.c ./version.c ./version.h
929
930galaxies_LDADD = $(GTK_LIBS) -lm
931galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
932 ./random.c
933
934galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm
935galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
936 ./random.c
937
938galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm
939guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \
940 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
941 ./version.c ./version.h
942
943guess_LDADD = $(GTK_LIBS) -lm
944inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \
945 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
946 ./random.c ./version.c ./version.h
947
948inertia_LDADD = $(GTK_LIBS) -lm
949keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \
950 ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \
951 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
952 ./tree234.c ./tree234.h ./version.c ./version.h
953
954keen_LDADD = $(GTK_LIBS) -lm
955keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
956 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
957
958keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm
959latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \
960 ./puzzles.h ./random.c ./tree234.c ./tree234.h
961
962latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm
963lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \
964 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
965 ./puzzles.h ./random.c ./version.c ./version.h
966
967lightup_LDADD = $(GTK_LIBS) -lm
968lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
969 ./random.c
970
971lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm
972loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
973 ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \
974 ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
975 ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \
976 ./version.h
977
978loopy_LDADD = $(GTK_LIBS) -lm
979loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
980 ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
981 ./puzzles.h ./random.c ./tree234.c ./tree234.h
982
983loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm
984magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \
985 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
986 ./puzzles.h ./random.c ./version.c ./version.h
987
988magnets_LDADD = $(GTK_LIBS) -lm
989magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \
990 ./puzzles.h ./random.c
991
992magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm
993map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \
994 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
995 ./random.c ./version.c ./version.h
996
997map_LDADD = $(GTK_LIBS) -lm
998mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
999 ./random.c
1000
1001mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm
1002mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \
1003 ./tree234.c ./tree234.h
1004
1005mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm
1006mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \
1007 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1008 ./tree234.c ./tree234.h ./version.c ./version.h
1009
1010mines_LDADD = $(GTK_LIBS) -lm
1011net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \
1012 ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1013 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
1014
1015net_LDADD = $(GTK_LIBS) -lm
1016netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1017 ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1018 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
1019
1020netslide_LDADD = $(GTK_LIBS) -lm
1021nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1022 ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \
1023 ./random.c ./version.c ./version.h
1024
1025nullgame_LDADD = $(GTK_LIBS) -lm
1026obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \
1027 ./random.c
1028
1029obfusc_LDADD = -lm
1030palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \
1031 ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \
1032 ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
1033
1034palisade_LDADD = $(GTK_LIBS) -lm
1035pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1036 ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \
1037 ./random.c ./version.c ./version.h
1038
1039pattern_LDADD = $(GTK_LIBS) -lm
1040patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
1041 ./random.c
1042
1043patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm
1044patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
1045 ./random.c
1046
1047patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm
1048pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
1049 ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \
1050 ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
1051 ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \
1052 ./version.c ./version.h
1053
1054pearl_LDADD = $(GTK_LIBS) -lm
1055pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
1056 ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
1057 ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h
1058
1059pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm
1060pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1061 ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \
1062 ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
1063
1064pegs_LDADD = $(GTK_LIBS) -lm
1065range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1066 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1067 ./range.c ./version.c ./version.h
1068
1069range_LDADD = $(GTK_LIBS) -lm
1070rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1071 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1072 ./rect.c ./version.c ./version.h
1073
1074rect_LDADD = $(GTK_LIBS) -lm
1075samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1076 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1077 ./samegame.c ./version.c ./version.h
1078
1079samegame_LDADD = $(GTK_LIBS) -lm
1080signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
1081 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1082 ./random.c ./signpost.c ./version.c ./version.h
1083
1084signpost_LDADD = $(GTK_LIBS) -lm
1085signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
1086 ./random.c
1087
1088signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm
1089singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
1090 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
1091 ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \
1092 ./tree234.c ./tree234.h ./version.c ./version.h
1093
1094singles_LDADD = $(GTK_LIBS) -lm
1095singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \
1096 ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \
1097 ./tree234.c ./tree234.h
1098
1099singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm
1100sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1101 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1102 ./sixteen.c ./version.c ./version.h
1103
1104sixteen_LDADD = $(GTK_LIBS) -lm
1105slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
1106 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
1107 ./puzzles.h ./random.c ./slant.c ./version.c ./version.h
1108
1109slant_LDADD = $(GTK_LIBS) -lm
1110slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \
1111 ./puzzles.h ./random.c
1112
1113slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm
1114solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
1115 ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
1116 ./random.c ./solo.c ./version.c ./version.h
1117
1118solo_LDADD = $(GTK_LIBS) -lm
1119solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \
1120 ./puzzles.h ./random.c
1121
1122solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm
1123tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \
1124 ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \
1125 ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \
1126 ./version.h
1127
1128tents_LDADD = $(GTK_LIBS) -lm
1129tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
1130 ./nullfe.c ./puzzles.h ./random.c
1131
1132tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm
1133towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
1134 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
1135 ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \
1136 ./tree234.c ./tree234.h ./version.c ./version.h
1137
1138towers_LDADD = $(GTK_LIBS) -lm
1139towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
1140 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
1141
1142towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
1143 libtowers2_a-towers.$(OBJEXT) -lm
1144
1145tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
1146 ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
1147 ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h
1148
1149tracks_LDADD = $(GTK_LIBS) -lm
1150twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1151 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1152 ./twiddle.c ./version.c ./version.h
1153
1154twiddle_LDADD = $(GTK_LIBS) -lm
1155undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1156 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1157 ./undead.c ./version.c ./version.h
1158
1159undead_LDADD = $(GTK_LIBS) -lm
1160unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
1161 ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
1162 ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \
1163 ./tree234.h ./unequal.c ./version.c ./version.h
1164
1165unequal_LDADD = $(GTK_LIBS) -lm
1166unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
1167 ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
1168
1169unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
1170 libunequal2_a-unequal.$(OBJEXT) -lm
1171
1172unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1173 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1174 ./unruly.c ./version.c ./version.h
1175
1176unruly_LDADD = $(GTK_LIBS) -lm
1177unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c
1178unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm
1179untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
1180 ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
1181 ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h
1182
1183untangle_LDADD = $(GTK_LIBS) -lm
1184libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h
1185libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1186libfilling2_a_SOURCES = ./filling.c ./puzzles.h
1187libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1188libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h
1189libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1190libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h
1191libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
1192 -DSTANDALONE_PICTURE_GENERATOR
1193
1194libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h
1195libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1196liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1197 ./latin.h
1198
1199liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1200liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
1201 ./latin.h
1202
1203liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST
1204liblightup2_a_SOURCES = ./lightup.c ./puzzles.h
1205liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1206libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
1207libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1208libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h
1209libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1210libmap2_a_SOURCES = ./map.c ./puzzles.h
1211libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1212libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h
1213libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR
1214libpattern2_a_SOURCES = ./pattern.c ./puzzles.h
1215libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1216libpattern4_a_SOURCES = ./pattern.c ./puzzles.h
1217libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
1218 -DSTANDALONE_PICTURE_GENERATOR
1219
1220libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
1221libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1222libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h
1223libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1224libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h
1225libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1226libslant2_a_SOURCES = ./slant.c ./puzzles.h
1227libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1228libsolo2_a_SOURCES = ./solo.c ./puzzles.h
1229libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1230libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h
1231libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1232libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h
1233libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1234libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h
1235libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1236libunruly2_a_SOURCES = ./unruly.c ./puzzles.h
1237libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
1238noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \
1239 libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \
1240 libmagnets2.a libmap2.a libmines2.a libpattern2.a \
1241 libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \
1242 libslant2.a libsolo2.a libtents3.a libtowers2.a \
1243 libunequal2.a libunruly2.a
1244
1245all: all-am
1246
1247.SUFFIXES:
1248.SUFFIXES: .c .o .obj
1249am--refresh: Makefile
1250 @:
1251$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
1252 @for dep in $?; do \
1253 case '$(am__configure_deps)' in \
1254 *$$dep*) \
1255 echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
1256 $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
1257 && exit 0; \
1258 exit 1;; \
1259 esac; \
1260 done; \
1261 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
1262 $(am__cd) $(top_srcdir) && \
1263 $(AUTOMAKE) --foreign Makefile
1264Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
1265 @case '$?' in \
1266 *config.status*) \
1267 echo ' $(SHELL) ./config.status'; \
1268 $(SHELL) ./config.status;; \
1269 *) \
1270 echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
1271 cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
1272 esac;
1273
1274$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
1275 $(SHELL) ./config.status --recheck
1276
1277$(top_srcdir)/configure: $(am__configure_deps)
1278 $(am__cd) $(srcdir) && $(AUTOCONF)
1279$(ACLOCAL_M4): $(am__aclocal_m4_deps)
1280 $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
1281$(am__aclocal_m4_deps):
1282
1283clean-noinstLIBRARIES:
1284 -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
1285./$(am__dirstamp):
1286 @$(MKDIR_P) .
1287 @: > ./$(am__dirstamp)
1288$(DEPDIR)/$(am__dirstamp):
1289 @$(MKDIR_P) ./$(DEPDIR)
1290 @: > $(DEPDIR)/$(am__dirstamp)
1291./libfifteen2_a-fifteen.$(OBJEXT): ./$(am__dirstamp) \
1292 $(DEPDIR)/$(am__dirstamp)
1293
1294libfifteen2.a: $(libfifteen2_a_OBJECTS) $(libfifteen2_a_DEPENDENCIES) $(EXTRA_libfifteen2_a_DEPENDENCIES)
1295 $(AM_V_at)-rm -f libfifteen2.a
1296 $(AM_V_AR)$(libfifteen2_a_AR) libfifteen2.a $(libfifteen2_a_OBJECTS) $(libfifteen2_a_LIBADD)
1297 $(AM_V_at)$(RANLIB) libfifteen2.a
1298./libfilling2_a-filling.$(OBJEXT): ./$(am__dirstamp) \
1299 $(DEPDIR)/$(am__dirstamp)
1300
1301libfilling2.a: $(libfilling2_a_OBJECTS) $(libfilling2_a_DEPENDENCIES) $(EXTRA_libfilling2_a_DEPENDENCIES)
1302 $(AM_V_at)-rm -f libfilling2.a
1303 $(AM_V_AR)$(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD)
1304 $(AM_V_at)$(RANLIB) libfilling2.a
1305./libgalaxie2_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
1306 $(DEPDIR)/$(am__dirstamp)
1307
1308libgalaxie2.a: $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_DEPENDENCIES) $(EXTRA_libgalaxie2_a_DEPENDENCIES)
1309 $(AM_V_at)-rm -f libgalaxie2.a
1310 $(AM_V_AR)$(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD)
1311 $(AM_V_at)$(RANLIB) libgalaxie2.a
1312./libgalaxie4_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
1313 $(DEPDIR)/$(am__dirstamp)
1314
1315libgalaxie4.a: $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_DEPENDENCIES) $(EXTRA_libgalaxie4_a_DEPENDENCIES)
1316 $(AM_V_at)-rm -f libgalaxie4.a
1317 $(AM_V_AR)$(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD)
1318 $(AM_V_at)$(RANLIB) libgalaxie4.a
1319./libkeen2_a-keen.$(OBJEXT): ./$(am__dirstamp) \
1320 $(DEPDIR)/$(am__dirstamp)
1321
1322libkeen2.a: $(libkeen2_a_OBJECTS) $(libkeen2_a_DEPENDENCIES) $(EXTRA_libkeen2_a_DEPENDENCIES)
1323 $(AM_V_at)-rm -f libkeen2.a
1324 $(AM_V_AR)$(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD)
1325 $(AM_V_at)$(RANLIB) libkeen2.a
1326./liblatin6_a-latin.$(OBJEXT): ./$(am__dirstamp) \
1327 $(DEPDIR)/$(am__dirstamp)
1328
1329liblatin6.a: $(liblatin6_a_OBJECTS) $(liblatin6_a_DEPENDENCIES) $(EXTRA_liblatin6_a_DEPENDENCIES)
1330 $(AM_V_at)-rm -f liblatin6.a
1331 $(AM_V_AR)$(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD)
1332 $(AM_V_at)$(RANLIB) liblatin6.a
1333./liblatin8_a-latin.$(OBJEXT): ./$(am__dirstamp) \
1334 $(DEPDIR)/$(am__dirstamp)
1335
1336liblatin8.a: $(liblatin8_a_OBJECTS) $(liblatin8_a_DEPENDENCIES) $(EXTRA_liblatin8_a_DEPENDENCIES)
1337 $(AM_V_at)-rm -f liblatin8.a
1338 $(AM_V_AR)$(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD)
1339 $(AM_V_at)$(RANLIB) liblatin8.a
1340./liblightup2_a-lightup.$(OBJEXT): ./$(am__dirstamp) \
1341 $(DEPDIR)/$(am__dirstamp)
1342
1343liblightup2.a: $(liblightup2_a_OBJECTS) $(liblightup2_a_DEPENDENCIES) $(EXTRA_liblightup2_a_DEPENDENCIES)
1344 $(AM_V_at)-rm -f liblightup2.a
1345 $(AM_V_AR)$(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD)
1346 $(AM_V_at)$(RANLIB) liblightup2.a
1347./libloopy2_a-loopy.$(OBJEXT): ./$(am__dirstamp) \
1348 $(DEPDIR)/$(am__dirstamp)
1349
1350libloopy2.a: $(libloopy2_a_OBJECTS) $(libloopy2_a_DEPENDENCIES) $(EXTRA_libloopy2_a_DEPENDENCIES)
1351 $(AM_V_at)-rm -f libloopy2.a
1352 $(AM_V_AR)$(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD)
1353 $(AM_V_at)$(RANLIB) libloopy2.a
1354./libmagnets2_a-magnets.$(OBJEXT): ./$(am__dirstamp) \
1355 $(DEPDIR)/$(am__dirstamp)
1356
1357libmagnets2.a: $(libmagnets2_a_OBJECTS) $(libmagnets2_a_DEPENDENCIES) $(EXTRA_libmagnets2_a_DEPENDENCIES)
1358 $(AM_V_at)-rm -f libmagnets2.a
1359 $(AM_V_AR)$(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD)
1360 $(AM_V_at)$(RANLIB) libmagnets2.a
1361./libmap2_a-map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1362
1363libmap2.a: $(libmap2_a_OBJECTS) $(libmap2_a_DEPENDENCIES) $(EXTRA_libmap2_a_DEPENDENCIES)
1364 $(AM_V_at)-rm -f libmap2.a
1365 $(AM_V_AR)$(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD)
1366 $(AM_V_at)$(RANLIB) libmap2.a
1367./libmines2_a-mines.$(OBJEXT): ./$(am__dirstamp) \
1368 $(DEPDIR)/$(am__dirstamp)
1369
1370libmines2.a: $(libmines2_a_OBJECTS) $(libmines2_a_DEPENDENCIES) $(EXTRA_libmines2_a_DEPENDENCIES)
1371 $(AM_V_at)-rm -f libmines2.a
1372 $(AM_V_AR)$(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD)
1373 $(AM_V_at)$(RANLIB) libmines2.a
1374./libpattern2_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
1375 $(DEPDIR)/$(am__dirstamp)
1376
1377libpattern2.a: $(libpattern2_a_OBJECTS) $(libpattern2_a_DEPENDENCIES) $(EXTRA_libpattern2_a_DEPENDENCIES)
1378 $(AM_V_at)-rm -f libpattern2.a
1379 $(AM_V_AR)$(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD)
1380 $(AM_V_at)$(RANLIB) libpattern2.a
1381./libpattern4_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
1382 $(DEPDIR)/$(am__dirstamp)
1383
1384libpattern4.a: $(libpattern4_a_OBJECTS) $(libpattern4_a_DEPENDENCIES) $(EXTRA_libpattern4_a_DEPENDENCIES)
1385 $(AM_V_at)-rm -f libpattern4.a
1386 $(AM_V_AR)$(libpattern4_a_AR) libpattern4.a $(libpattern4_a_OBJECTS) $(libpattern4_a_LIBADD)
1387 $(AM_V_at)$(RANLIB) libpattern4.a
1388./libpearl2_a-pearl.$(OBJEXT): ./$(am__dirstamp) \
1389 $(DEPDIR)/$(am__dirstamp)
1390
1391libpearl2.a: $(libpearl2_a_OBJECTS) $(libpearl2_a_DEPENDENCIES) $(EXTRA_libpearl2_a_DEPENDENCIES)
1392 $(AM_V_at)-rm -f libpearl2.a
1393 $(AM_V_AR)$(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD)
1394 $(AM_V_at)$(RANLIB) libpearl2.a
1395./libsignpos2_a-signpost.$(OBJEXT): ./$(am__dirstamp) \
1396 $(DEPDIR)/$(am__dirstamp)
1397
1398libsignpos2.a: $(libsignpos2_a_OBJECTS) $(libsignpos2_a_DEPENDENCIES) $(EXTRA_libsignpos2_a_DEPENDENCIES)
1399 $(AM_V_at)-rm -f libsignpos2.a
1400 $(AM_V_AR)$(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD)
1401 $(AM_V_at)$(RANLIB) libsignpos2.a
1402./libsingles3_a-singles.$(OBJEXT): ./$(am__dirstamp) \
1403 $(DEPDIR)/$(am__dirstamp)
1404
1405libsingles3.a: $(libsingles3_a_OBJECTS) $(libsingles3_a_DEPENDENCIES) $(EXTRA_libsingles3_a_DEPENDENCIES)
1406 $(AM_V_at)-rm -f libsingles3.a
1407 $(AM_V_AR)$(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD)
1408 $(AM_V_at)$(RANLIB) libsingles3.a
1409./libslant2_a-slant.$(OBJEXT): ./$(am__dirstamp) \
1410 $(DEPDIR)/$(am__dirstamp)
1411
1412libslant2.a: $(libslant2_a_OBJECTS) $(libslant2_a_DEPENDENCIES) $(EXTRA_libslant2_a_DEPENDENCIES)
1413 $(AM_V_at)-rm -f libslant2.a
1414 $(AM_V_AR)$(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD)
1415 $(AM_V_at)$(RANLIB) libslant2.a
1416./libsolo2_a-solo.$(OBJEXT): ./$(am__dirstamp) \
1417 $(DEPDIR)/$(am__dirstamp)
1418
1419libsolo2.a: $(libsolo2_a_OBJECTS) $(libsolo2_a_DEPENDENCIES) $(EXTRA_libsolo2_a_DEPENDENCIES)
1420 $(AM_V_at)-rm -f libsolo2.a
1421 $(AM_V_AR)$(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD)
1422 $(AM_V_at)$(RANLIB) libsolo2.a
1423./libtents3_a-tents.$(OBJEXT): ./$(am__dirstamp) \
1424 $(DEPDIR)/$(am__dirstamp)
1425
1426libtents3.a: $(libtents3_a_OBJECTS) $(libtents3_a_DEPENDENCIES) $(EXTRA_libtents3_a_DEPENDENCIES)
1427 $(AM_V_at)-rm -f libtents3.a
1428 $(AM_V_AR)$(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD)
1429 $(AM_V_at)$(RANLIB) libtents3.a
1430./libtowers2_a-towers.$(OBJEXT): ./$(am__dirstamp) \
1431 $(DEPDIR)/$(am__dirstamp)
1432
1433libtowers2.a: $(libtowers2_a_OBJECTS) $(libtowers2_a_DEPENDENCIES) $(EXTRA_libtowers2_a_DEPENDENCIES)
1434 $(AM_V_at)-rm -f libtowers2.a
1435 $(AM_V_AR)$(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD)
1436 $(AM_V_at)$(RANLIB) libtowers2.a
1437./libunequal2_a-unequal.$(OBJEXT): ./$(am__dirstamp) \
1438 $(DEPDIR)/$(am__dirstamp)
1439
1440libunequal2.a: $(libunequal2_a_OBJECTS) $(libunequal2_a_DEPENDENCIES) $(EXTRA_libunequal2_a_DEPENDENCIES)
1441 $(AM_V_at)-rm -f libunequal2.a
1442 $(AM_V_AR)$(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD)
1443 $(AM_V_at)$(RANLIB) libunequal2.a
1444./libunruly2_a-unruly.$(OBJEXT): ./$(am__dirstamp) \
1445 $(DEPDIR)/$(am__dirstamp)
1446
1447libunruly2.a: $(libunruly2_a_OBJECTS) $(libunruly2_a_DEPENDENCIES) $(EXTRA_libunruly2_a_DEPENDENCIES)
1448 $(AM_V_at)-rm -f libunruly2.a
1449 $(AM_V_AR)$(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD)
1450 $(AM_V_at)$(RANLIB) libunruly2.a
1451install-binPROGRAMS: $(bin_PROGRAMS)
1452 @$(NORMAL_INSTALL)
1453 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
1454 if test -n "$$list"; then \
1455 echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
1456 $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
1457 fi; \
1458 for p in $$list; do echo "$$p $$p"; done | \
1459 sed 's/$(EXEEXT)$$//' | \
1460 while read p p1; do if test -f $$p \
1461 ; then echo "$$p"; echo "$$p"; else :; fi; \
1462 done | \
1463 sed -e 'p;s,.*/,,;n;h' \
1464 -e 's|.*|.|' \
1465 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
1466 sed 'N;N;N;s,\n, ,g' | \
1467 $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
1468 { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
1469 if ($$2 == $$4) files[d] = files[d] " " $$1; \
1470 else { print "f", $$3 "/" $$4, $$1; } } \
1471 END { for (d in files) print "f", d, files[d] }' | \
1472 while read type dir files; do \
1473 if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
1474 test -z "$$files" || { \
1475 echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
1476 $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
1477 } \
1478 ; done
1479
1480uninstall-binPROGRAMS:
1481 @$(NORMAL_UNINSTALL)
1482 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
1483 files=`for p in $$list; do echo "$$p"; done | \
1484 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
1485 -e 's/$$/$(EXEEXT)/' \
1486 `; \
1487 test -n "$$list" || exit 0; \
1488 echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
1489 cd "$(DESTDIR)$(bindir)" && rm -f $$files
1490
1491clean-binPROGRAMS:
1492 -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
1493
1494clean-noinstPROGRAMS:
1495 -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
1496./blackbox.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1497./drawing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1498./gtk.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1499./malloc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1500./midend.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1501./misc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1502./no-icon.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1503./printing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1504./ps.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1505./random.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1506./version.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1507
1508blackbox$(EXEEXT): $(blackbox_OBJECTS) $(blackbox_DEPENDENCIES) $(EXTRA_blackbox_DEPENDENCIES)
1509 @rm -f blackbox$(EXEEXT)
1510 $(AM_V_CCLD)$(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS)
1511./bridges.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1512./dsf.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1513./findloop.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1514
1515bridges$(EXEEXT): $(bridges_OBJECTS) $(bridges_DEPENDENCIES) $(EXTRA_bridges_DEPENDENCIES)
1516 @rm -f bridges$(EXEEXT)
1517 $(AM_V_CCLD)$(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS)
1518./cube.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1519
1520cube$(EXEEXT): $(cube_OBJECTS) $(cube_DEPENDENCIES) $(EXTRA_cube_DEPENDENCIES)
1521 @rm -f cube$(EXEEXT)
1522 $(AM_V_CCLD)$(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS)
1523./dominosa.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1524./laydomino.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1525
1526dominosa$(EXEEXT): $(dominosa_OBJECTS) $(dominosa_DEPENDENCIES) $(EXTRA_dominosa_DEPENDENCIES)
1527 @rm -f dominosa$(EXEEXT)
1528 $(AM_V_CCLD)$(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS)
1529./fifteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1530
1531fifteen$(EXEEXT): $(fifteen_OBJECTS) $(fifteen_DEPENDENCIES) $(EXTRA_fifteen_DEPENDENCIES)
1532 @rm -f fifteen$(EXEEXT)
1533 $(AM_V_CCLD)$(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS)
1534./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1535
1536fifteensolver$(EXEEXT): $(fifteensolver_OBJECTS) $(fifteensolver_DEPENDENCIES) $(EXTRA_fifteensolver_DEPENDENCIES)
1537 @rm -f fifteensolver$(EXEEXT)
1538 $(AM_V_CCLD)$(LINK) $(fifteensolver_OBJECTS) $(fifteensolver_LDADD) $(LIBS)
1539./filling.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1540
1541filling$(EXEEXT): $(filling_OBJECTS) $(filling_DEPENDENCIES) $(EXTRA_filling_DEPENDENCIES)
1542 @rm -f filling$(EXEEXT)
1543 $(AM_V_CCLD)$(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS)
1544
1545fillingsolver$(EXEEXT): $(fillingsolver_OBJECTS) $(fillingsolver_DEPENDENCIES) $(EXTRA_fillingsolver_DEPENDENCIES)
1546 @rm -f fillingsolver$(EXEEXT)
1547 $(AM_V_CCLD)$(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS)
1548./flip.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1549./tree234.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1550
1551flip$(EXEEXT): $(flip_OBJECTS) $(flip_DEPENDENCIES) $(EXTRA_flip_DEPENDENCIES)
1552 @rm -f flip$(EXEEXT)
1553 $(AM_V_CCLD)$(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS)
1554./flood.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1555
1556flood$(EXEEXT): $(flood_OBJECTS) $(flood_DEPENDENCIES) $(EXTRA_flood_DEPENDENCIES)
1557 @rm -f flood$(EXEEXT)
1558 $(AM_V_CCLD)$(LINK) $(flood_OBJECTS) $(flood_LDADD) $(LIBS)
1559./galaxies.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1560
1561galaxies$(EXEEXT): $(galaxies_OBJECTS) $(galaxies_DEPENDENCIES) $(EXTRA_galaxies_DEPENDENCIES)
1562 @rm -f galaxies$(EXEEXT)
1563 $(AM_V_CCLD)$(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS)
1564
1565galaxiespicture$(EXEEXT): $(galaxiespicture_OBJECTS) $(galaxiespicture_DEPENDENCIES) $(EXTRA_galaxiespicture_DEPENDENCIES)
1566 @rm -f galaxiespicture$(EXEEXT)
1567 $(AM_V_CCLD)$(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS)
1568
1569galaxiessolver$(EXEEXT): $(galaxiessolver_OBJECTS) $(galaxiessolver_DEPENDENCIES) $(EXTRA_galaxiessolver_DEPENDENCIES)
1570 @rm -f galaxiessolver$(EXEEXT)
1571 $(AM_V_CCLD)$(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS)
1572./guess.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1573
1574guess$(EXEEXT): $(guess_OBJECTS) $(guess_DEPENDENCIES) $(EXTRA_guess_DEPENDENCIES)
1575 @rm -f guess$(EXEEXT)
1576 $(AM_V_CCLD)$(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS)
1577./inertia.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1578
1579inertia$(EXEEXT): $(inertia_OBJECTS) $(inertia_DEPENDENCIES) $(EXTRA_inertia_DEPENDENCIES)
1580 @rm -f inertia$(EXEEXT)
1581 $(AM_V_CCLD)$(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS)
1582./keen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1583./latin.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1584./maxflow.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1585
1586keen$(EXEEXT): $(keen_OBJECTS) $(keen_DEPENDENCIES) $(EXTRA_keen_DEPENDENCIES)
1587 @rm -f keen$(EXEEXT)
1588 $(AM_V_CCLD)$(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS)
1589
1590keensolver$(EXEEXT): $(keensolver_OBJECTS) $(keensolver_DEPENDENCIES) $(EXTRA_keensolver_DEPENDENCIES)
1591 @rm -f keensolver$(EXEEXT)
1592 $(AM_V_CCLD)$(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS)
1593
1594latincheck$(EXEEXT): $(latincheck_OBJECTS) $(latincheck_DEPENDENCIES) $(EXTRA_latincheck_DEPENDENCIES)
1595 @rm -f latincheck$(EXEEXT)
1596 $(AM_V_CCLD)$(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS)
1597./combi.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1598./lightup.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1599
1600lightup$(EXEEXT): $(lightup_OBJECTS) $(lightup_DEPENDENCIES) $(EXTRA_lightup_DEPENDENCIES)
1601 @rm -f lightup$(EXEEXT)
1602 $(AM_V_CCLD)$(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS)
1603
1604lightupsolver$(EXEEXT): $(lightupsolver_OBJECTS) $(lightupsolver_DEPENDENCIES) $(EXTRA_lightupsolver_DEPENDENCIES)
1605 @rm -f lightupsolver$(EXEEXT)
1606 $(AM_V_CCLD)$(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS)
1607./grid.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1608./loopgen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1609./loopy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1610./penrose.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1611
1612loopy$(EXEEXT): $(loopy_OBJECTS) $(loopy_DEPENDENCIES) $(EXTRA_loopy_DEPENDENCIES)
1613 @rm -f loopy$(EXEEXT)
1614 $(AM_V_CCLD)$(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS)
1615
1616loopysolver$(EXEEXT): $(loopysolver_OBJECTS) $(loopysolver_DEPENDENCIES) $(EXTRA_loopysolver_DEPENDENCIES)
1617 @rm -f loopysolver$(EXEEXT)
1618 $(AM_V_CCLD)$(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS)
1619./magnets.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1620
1621magnets$(EXEEXT): $(magnets_OBJECTS) $(magnets_DEPENDENCIES) $(EXTRA_magnets_DEPENDENCIES)
1622 @rm -f magnets$(EXEEXT)
1623 $(AM_V_CCLD)$(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS)
1624
1625magnetssolver$(EXEEXT): $(magnetssolver_OBJECTS) $(magnetssolver_DEPENDENCIES) $(EXTRA_magnetssolver_DEPENDENCIES)
1626 @rm -f magnetssolver$(EXEEXT)
1627 $(AM_V_CCLD)$(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS)
1628./map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1629
1630map$(EXEEXT): $(map_OBJECTS) $(map_DEPENDENCIES) $(EXTRA_map_DEPENDENCIES)
1631 @rm -f map$(EXEEXT)
1632 $(AM_V_CCLD)$(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS)
1633
1634mapsolver$(EXEEXT): $(mapsolver_OBJECTS) $(mapsolver_DEPENDENCIES) $(EXTRA_mapsolver_DEPENDENCIES)
1635 @rm -f mapsolver$(EXEEXT)
1636 $(AM_V_CCLD)$(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS)
1637
1638mineobfusc$(EXEEXT): $(mineobfusc_OBJECTS) $(mineobfusc_DEPENDENCIES) $(EXTRA_mineobfusc_DEPENDENCIES)
1639 @rm -f mineobfusc$(EXEEXT)
1640 $(AM_V_CCLD)$(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS)
1641./mines.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1642
1643mines$(EXEEXT): $(mines_OBJECTS) $(mines_DEPENDENCIES) $(EXTRA_mines_DEPENDENCIES)
1644 @rm -f mines$(EXEEXT)
1645 $(AM_V_CCLD)$(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS)
1646./net.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1647
1648net$(EXEEXT): $(net_OBJECTS) $(net_DEPENDENCIES) $(EXTRA_net_DEPENDENCIES)
1649 @rm -f net$(EXEEXT)
1650 $(AM_V_CCLD)$(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS)
1651./netslide.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1652
1653netslide$(EXEEXT): $(netslide_OBJECTS) $(netslide_DEPENDENCIES) $(EXTRA_netslide_DEPENDENCIES)
1654 @rm -f netslide$(EXEEXT)
1655 $(AM_V_CCLD)$(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS)
1656./nullgame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1657
1658nullgame$(EXEEXT): $(nullgame_OBJECTS) $(nullgame_DEPENDENCIES) $(EXTRA_nullgame_DEPENDENCIES)
1659 @rm -f nullgame$(EXEEXT)
1660 $(AM_V_CCLD)$(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS)
1661./obfusc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1662
1663obfusc$(EXEEXT): $(obfusc_OBJECTS) $(obfusc_DEPENDENCIES) $(EXTRA_obfusc_DEPENDENCIES)
1664 @rm -f obfusc$(EXEEXT)
1665 $(AM_V_CCLD)$(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS)
1666./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1667./palisade.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1668
1669palisade$(EXEEXT): $(palisade_OBJECTS) $(palisade_DEPENDENCIES) $(EXTRA_palisade_DEPENDENCIES)
1670 @rm -f palisade$(EXEEXT)
1671 $(AM_V_CCLD)$(LINK) $(palisade_OBJECTS) $(palisade_LDADD) $(LIBS)
1672./pattern.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1673
1674pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES)
1675 @rm -f pattern$(EXEEXT)
1676 $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS)
1677
1678patternpicture$(EXEEXT): $(patternpicture_OBJECTS) $(patternpicture_DEPENDENCIES) $(EXTRA_patternpicture_DEPENDENCIES)
1679 @rm -f patternpicture$(EXEEXT)
1680 $(AM_V_CCLD)$(LINK) $(patternpicture_OBJECTS) $(patternpicture_LDADD) $(LIBS)
1681
1682patternsolver$(EXEEXT): $(patternsolver_OBJECTS) $(patternsolver_DEPENDENCIES) $(EXTRA_patternsolver_DEPENDENCIES)
1683 @rm -f patternsolver$(EXEEXT)
1684 $(AM_V_CCLD)$(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS)
1685./pearl.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1686./tdq.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1687
1688pearl$(EXEEXT): $(pearl_OBJECTS) $(pearl_DEPENDENCIES) $(EXTRA_pearl_DEPENDENCIES)
1689 @rm -f pearl$(EXEEXT)
1690 $(AM_V_CCLD)$(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS)
1691
1692pearlbench$(EXEEXT): $(pearlbench_OBJECTS) $(pearlbench_DEPENDENCIES) $(EXTRA_pearlbench_DEPENDENCIES)
1693 @rm -f pearlbench$(EXEEXT)
1694 $(AM_V_CCLD)$(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS)
1695./pegs.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1696
1697pegs$(EXEEXT): $(pegs_OBJECTS) $(pegs_DEPENDENCIES) $(EXTRA_pegs_DEPENDENCIES)
1698 @rm -f pegs$(EXEEXT)
1699 $(AM_V_CCLD)$(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS)
1700./range.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1701
1702range$(EXEEXT): $(range_OBJECTS) $(range_DEPENDENCIES) $(EXTRA_range_DEPENDENCIES)
1703 @rm -f range$(EXEEXT)
1704 $(AM_V_CCLD)$(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS)
1705./rect.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1706
1707rect$(EXEEXT): $(rect_OBJECTS) $(rect_DEPENDENCIES) $(EXTRA_rect_DEPENDENCIES)
1708 @rm -f rect$(EXEEXT)
1709 $(AM_V_CCLD)$(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS)
1710./samegame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1711
1712samegame$(EXEEXT): $(samegame_OBJECTS) $(samegame_DEPENDENCIES) $(EXTRA_samegame_DEPENDENCIES)
1713 @rm -f samegame$(EXEEXT)
1714 $(AM_V_CCLD)$(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS)
1715./signpost.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1716
1717signpost$(EXEEXT): $(signpost_OBJECTS) $(signpost_DEPENDENCIES) $(EXTRA_signpost_DEPENDENCIES)
1718 @rm -f signpost$(EXEEXT)
1719 $(AM_V_CCLD)$(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS)
1720
1721signpostsolver$(EXEEXT): $(signpostsolver_OBJECTS) $(signpostsolver_DEPENDENCIES) $(EXTRA_signpostsolver_DEPENDENCIES)
1722 @rm -f signpostsolver$(EXEEXT)
1723 $(AM_V_CCLD)$(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS)
1724./singles.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1725
1726singles$(EXEEXT): $(singles_OBJECTS) $(singles_DEPENDENCIES) $(EXTRA_singles_DEPENDENCIES)
1727 @rm -f singles$(EXEEXT)
1728 $(AM_V_CCLD)$(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS)
1729
1730singlessolver$(EXEEXT): $(singlessolver_OBJECTS) $(singlessolver_DEPENDENCIES) $(EXTRA_singlessolver_DEPENDENCIES)
1731 @rm -f singlessolver$(EXEEXT)
1732 $(AM_V_CCLD)$(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS)
1733./sixteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1734
1735sixteen$(EXEEXT): $(sixteen_OBJECTS) $(sixteen_DEPENDENCIES) $(EXTRA_sixteen_DEPENDENCIES)
1736 @rm -f sixteen$(EXEEXT)
1737 $(AM_V_CCLD)$(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS)
1738./slant.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1739
1740slant$(EXEEXT): $(slant_OBJECTS) $(slant_DEPENDENCIES) $(EXTRA_slant_DEPENDENCIES)
1741 @rm -f slant$(EXEEXT)
1742 $(AM_V_CCLD)$(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS)
1743
1744slantsolver$(EXEEXT): $(slantsolver_OBJECTS) $(slantsolver_DEPENDENCIES) $(EXTRA_slantsolver_DEPENDENCIES)
1745 @rm -f slantsolver$(EXEEXT)
1746 $(AM_V_CCLD)$(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS)
1747./solo.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1748
1749solo$(EXEEXT): $(solo_OBJECTS) $(solo_DEPENDENCIES) $(EXTRA_solo_DEPENDENCIES)
1750 @rm -f solo$(EXEEXT)
1751 $(AM_V_CCLD)$(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS)
1752
1753solosolver$(EXEEXT): $(solosolver_OBJECTS) $(solosolver_DEPENDENCIES) $(EXTRA_solosolver_DEPENDENCIES)
1754 @rm -f solosolver$(EXEEXT)
1755 $(AM_V_CCLD)$(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS)
1756./tents.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1757
1758tents$(EXEEXT): $(tents_OBJECTS) $(tents_DEPENDENCIES) $(EXTRA_tents_DEPENDENCIES)
1759 @rm -f tents$(EXEEXT)
1760 $(AM_V_CCLD)$(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS)
1761
1762tentssolver$(EXEEXT): $(tentssolver_OBJECTS) $(tentssolver_DEPENDENCIES) $(EXTRA_tentssolver_DEPENDENCIES)
1763 @rm -f tentssolver$(EXEEXT)
1764 $(AM_V_CCLD)$(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS)
1765./towers.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1766
1767towers$(EXEEXT): $(towers_OBJECTS) $(towers_DEPENDENCIES) $(EXTRA_towers_DEPENDENCIES)
1768 @rm -f towers$(EXEEXT)
1769 $(AM_V_CCLD)$(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS)
1770
1771towerssolver$(EXEEXT): $(towerssolver_OBJECTS) $(towerssolver_DEPENDENCIES) $(EXTRA_towerssolver_DEPENDENCIES)
1772 @rm -f towerssolver$(EXEEXT)
1773 $(AM_V_CCLD)$(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS)
1774./tracks.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1775
1776tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES) $(EXTRA_tracks_DEPENDENCIES)
1777 @rm -f tracks$(EXEEXT)
1778 $(AM_V_CCLD)$(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS)
1779./twiddle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1780
1781twiddle$(EXEEXT): $(twiddle_OBJECTS) $(twiddle_DEPENDENCIES) $(EXTRA_twiddle_DEPENDENCIES)
1782 @rm -f twiddle$(EXEEXT)
1783 $(AM_V_CCLD)$(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS)
1784./undead.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1785
1786undead$(EXEEXT): $(undead_OBJECTS) $(undead_DEPENDENCIES) $(EXTRA_undead_DEPENDENCIES)
1787 @rm -f undead$(EXEEXT)
1788 $(AM_V_CCLD)$(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS)
1789./unequal.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1790
1791unequal$(EXEEXT): $(unequal_OBJECTS) $(unequal_DEPENDENCIES) $(EXTRA_unequal_DEPENDENCIES)
1792 @rm -f unequal$(EXEEXT)
1793 $(AM_V_CCLD)$(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS)
1794
1795unequalsolver$(EXEEXT): $(unequalsolver_OBJECTS) $(unequalsolver_DEPENDENCIES) $(EXTRA_unequalsolver_DEPENDENCIES)
1796 @rm -f unequalsolver$(EXEEXT)
1797 $(AM_V_CCLD)$(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS)
1798./unruly.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1799
1800unruly$(EXEEXT): $(unruly_OBJECTS) $(unruly_DEPENDENCIES) $(EXTRA_unruly_DEPENDENCIES)
1801 @rm -f unruly$(EXEEXT)
1802 $(AM_V_CCLD)$(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS)
1803
1804unrulysolver$(EXEEXT): $(unrulysolver_OBJECTS) $(unrulysolver_DEPENDENCIES) $(EXTRA_unrulysolver_DEPENDENCIES)
1805 @rm -f unrulysolver$(EXEEXT)
1806 $(AM_V_CCLD)$(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS)
1807./untangle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
1808
1809untangle$(EXEEXT): $(untangle_OBJECTS) $(untangle_DEPENDENCIES) $(EXTRA_untangle_DEPENDENCIES)
1810 @rm -f untangle$(EXEEXT)
1811 $(AM_V_CCLD)$(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS)
1812
1813mostlyclean-compile:
1814 -rm -f *.$(OBJEXT)
1815 -rm -f ./*.$(OBJEXT)
1816
1817distclean-compile:
1818 -rm -f *.tab.c
1819
1820@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blackbox.Po@am__quote@
1821@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bridges.Po@am__quote@
1822@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/combi.Po@am__quote@
1823@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cube.Po@am__quote@
1824@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/divvy.Po@am__quote@
1825@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dominosa.Po@am__quote@
1826@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drawing.Po@am__quote@
1827@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsf.Po@am__quote@
1828@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fifteen.Po@am__quote@
1829@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filling.Po@am__quote@
1830@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findloop.Po@am__quote@
1831@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flip.Po@am__quote@
1832@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flood.Po@am__quote@
1833@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/galaxies.Po@am__quote@
1834@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grid.Po@am__quote@
1835@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk.Po@am__quote@
1836@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guess.Po@am__quote@
1837@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inertia.Po@am__quote@
1838@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keen.Po@am__quote@
1839@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latin.Po@am__quote@
1840@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laydomino.Po@am__quote@
1841@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfifteen2_a-fifteen.Po@am__quote@
1842@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilling2_a-filling.Po@am__quote@
1843@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgalaxie2_a-galaxies.Po@am__quote@
1844@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgalaxie4_a-galaxies.Po@am__quote@
1845@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkeen2_a-keen.Po@am__quote@
1846@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblatin6_a-latin.Po@am__quote@
1847@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblatin8_a-latin.Po@am__quote@
1848@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightup2_a-lightup.Po@am__quote@
1849@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libloopy2_a-loopy.Po@am__quote@
1850@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmagnets2_a-magnets.Po@am__quote@
1851@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmap2_a-map.Po@am__quote@
1852@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmines2_a-mines.Po@am__quote@
1853@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpattern2_a-pattern.Po@am__quote@
1854@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpattern4_a-pattern.Po@am__quote@
1855@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpearl2_a-pearl.Po@am__quote@
1856@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsignpos2_a-signpost.Po@am__quote@
1857@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsingles3_a-singles.Po@am__quote@
1858@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libslant2_a-slant.Po@am__quote@
1859@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsolo2_a-solo.Po@am__quote@
1860@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtents3_a-tents.Po@am__quote@
1861@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtowers2_a-towers.Po@am__quote@
1862@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunequal2_a-unequal.Po@am__quote@
1863@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunruly2_a-unruly.Po@am__quote@
1864@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lightup.Po@am__quote@
1865@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loopgen.Po@am__quote@
1866@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loopy.Po@am__quote@
1867@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/magnets.Po@am__quote@
1868@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@
1869@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/map.Po@am__quote@
1870@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxflow.Po@am__quote@
1871@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midend.Po@am__quote@
1872@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mines.Po@am__quote@
1873@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@
1874@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net.Po@am__quote@
1875@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netslide.Po@am__quote@
1876@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/no-icon.Po@am__quote@
1877@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullfe.Po@am__quote@
1878@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullgame.Po@am__quote@
1879@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obfusc.Po@am__quote@
1880@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palisade.Po@am__quote@
1881@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern.Po@am__quote@
1882@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pearl.Po@am__quote@
1883@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pegs.Po@am__quote@
1884@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/penrose.Po@am__quote@
1885@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printing.Po@am__quote@
1886@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ps.Po@am__quote@
1887@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Po@am__quote@
1888@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/range.Po@am__quote@
1889@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rect.Po@am__quote@
1890@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/samegame.Po@am__quote@
1891@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signpost.Po@am__quote@
1892@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/singles.Po@am__quote@
1893@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sixteen.Po@am__quote@
1894@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slant.Po@am__quote@
1895@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/solo.Po@am__quote@
1896@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdq.Po@am__quote@
1897@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tents.Po@am__quote@
1898@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/towers.Po@am__quote@
1899@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracks.Po@am__quote@
1900@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree234.Po@am__quote@
1901@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twiddle.Po@am__quote@
1902@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/undead.Po@am__quote@
1903@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unequal.Po@am__quote@
1904@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unruly.Po@am__quote@
1905@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/untangle.Po@am__quote@
1906@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
1907
1908.c.o:
1909@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
1910@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
1911@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
1912@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
1913@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1914@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
1915
1916.c.obj:
1917@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
1918@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
1919@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
1920@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
1921@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1922@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
1923
1924./libfifteen2_a-fifteen.o: ./fifteen.c
1925@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.o -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c
1926@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
1927@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.o' libtool=no @AMDEPBACKSLASH@
1928@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1929@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.o `test -f './fifteen.c' || echo '$(srcdir)/'`./fifteen.c
1930
1931./libfifteen2_a-fifteen.obj: ./fifteen.c
1932@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfifteen2_a-fifteen.obj -MD -MP -MF $(DEPDIR)/libfifteen2_a-fifteen.Tpo -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi`
1933@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
1934@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.obj' libtool=no @AMDEPBACKSLASH@
1935@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1936@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfifteen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfifteen2_a-fifteen.obj `if test -f './fifteen.c'; then $(CYGPATH_W) './fifteen.c'; else $(CYGPATH_W) '$(srcdir)/./fifteen.c'; fi`
1937
1938./libfilling2_a-filling.o: ./filling.c
1939@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.o -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c
1940@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
1941@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.o' libtool=no @AMDEPBACKSLASH@
1942@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1943@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.o `test -f './filling.c' || echo '$(srcdir)/'`./filling.c
1944
1945./libfilling2_a-filling.obj: ./filling.c
1946@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libfilling2_a-filling.obj -MD -MP -MF $(DEPDIR)/libfilling2_a-filling.Tpo -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi`
1947@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
1948@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no @AMDEPBACKSLASH@
1949@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1950@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfilling2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libfilling2_a-filling.obj `if test -f './filling.c'; then $(CYGPATH_W) './filling.c'; else $(CYGPATH_W) '$(srcdir)/./filling.c'; fi`
1951
1952./libgalaxie2_a-galaxies.o: ./galaxies.c
1953@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1954@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
1955@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no @AMDEPBACKSLASH@
1956@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1957@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1958
1959./libgalaxie2_a-galaxies.obj: ./galaxies.c
1960@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie2_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie2_a-galaxies.Tpo -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1961@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
1962@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@
1963@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1964@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie2_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1965
1966./libgalaxie4_a-galaxies.o: ./galaxies.c
1967@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.o -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1968@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
1969@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no @AMDEPBACKSLASH@
1970@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1971@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.o `test -f './galaxies.c' || echo '$(srcdir)/'`./galaxies.c
1972
1973./libgalaxie4_a-galaxies.obj: ./galaxies.c
1974@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libgalaxie4_a-galaxies.obj -MD -MP -MF $(DEPDIR)/libgalaxie4_a-galaxies.Tpo -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1975@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
1976@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@
1977@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1978@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgalaxie4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libgalaxie4_a-galaxies.obj `if test -f './galaxies.c'; then $(CYGPATH_W) './galaxies.c'; else $(CYGPATH_W) '$(srcdir)/./galaxies.c'; fi`
1979
1980./libkeen2_a-keen.o: ./keen.c
1981@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.o -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c
1982@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
1983@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.o' libtool=no @AMDEPBACKSLASH@
1984@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1985@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.o `test -f './keen.c' || echo '$(srcdir)/'`./keen.c
1986
1987./libkeen2_a-keen.obj: ./keen.c
1988@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libkeen2_a-keen.obj -MD -MP -MF $(DEPDIR)/libkeen2_a-keen.Tpo -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi`
1989@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
1990@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no @AMDEPBACKSLASH@
1991@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1992@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkeen2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libkeen2_a-keen.obj `if test -f './keen.c'; then $(CYGPATH_W) './keen.c'; else $(CYGPATH_W) '$(srcdir)/./keen.c'; fi`
1993
1994./liblatin6_a-latin.o: ./latin.c
1995@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
1996@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
1997@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.o' libtool=no @AMDEPBACKSLASH@
1998@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1999@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
2000
2001./liblatin6_a-latin.obj: ./latin.c
2002@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin6_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin6_a-latin.Tpo -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2003@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
2004@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no @AMDEPBACKSLASH@
2005@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2006@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin6_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin6_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2007
2008./liblatin8_a-latin.o: ./latin.c
2009@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.o -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
2010@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
2011@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.o' libtool=no @AMDEPBACKSLASH@
2012@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2013@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.o `test -f './latin.c' || echo '$(srcdir)/'`./latin.c
2014
2015./liblatin8_a-latin.obj: ./latin.c
2016@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblatin8_a-latin.obj -MD -MP -MF $(DEPDIR)/liblatin8_a-latin.Tpo -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2017@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
2018@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no @AMDEPBACKSLASH@
2019@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2020@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblatin8_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblatin8_a-latin.obj `if test -f './latin.c'; then $(CYGPATH_W) './latin.c'; else $(CYGPATH_W) '$(srcdir)/./latin.c'; fi`
2021
2022./liblightup2_a-lightup.o: ./lightup.c
2023@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.o -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c
2024@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
2025@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no @AMDEPBACKSLASH@
2026@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2027@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.o `test -f './lightup.c' || echo '$(srcdir)/'`./lightup.c
2028
2029./liblightup2_a-lightup.obj: ./lightup.c
2030@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./liblightup2_a-lightup.obj -MD -MP -MF $(DEPDIR)/liblightup2_a-lightup.Tpo -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi`
2031@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
2032@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no @AMDEPBACKSLASH@
2033@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2034@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblightup2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./liblightup2_a-lightup.obj `if test -f './lightup.c'; then $(CYGPATH_W) './lightup.c'; else $(CYGPATH_W) '$(srcdir)/./lightup.c'; fi`
2035
2036./libloopy2_a-loopy.o: ./loopy.c
2037@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.o -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c
2038@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
2039@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no @AMDEPBACKSLASH@
2040@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2041@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.o `test -f './loopy.c' || echo '$(srcdir)/'`./loopy.c
2042
2043./libloopy2_a-loopy.obj: ./loopy.c
2044@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libloopy2_a-loopy.obj -MD -MP -MF $(DEPDIR)/libloopy2_a-loopy.Tpo -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi`
2045@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
2046@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no @AMDEPBACKSLASH@
2047@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2048@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libloopy2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libloopy2_a-loopy.obj `if test -f './loopy.c'; then $(CYGPATH_W) './loopy.c'; else $(CYGPATH_W) '$(srcdir)/./loopy.c'; fi`
2049
2050./libmagnets2_a-magnets.o: ./magnets.c
2051@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.o -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c
2052@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
2053@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no @AMDEPBACKSLASH@
2054@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2055@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.o `test -f './magnets.c' || echo '$(srcdir)/'`./magnets.c
2056
2057./libmagnets2_a-magnets.obj: ./magnets.c
2058@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmagnets2_a-magnets.obj -MD -MP -MF $(DEPDIR)/libmagnets2_a-magnets.Tpo -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi`
2059@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
2060@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no @AMDEPBACKSLASH@
2061@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2062@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagnets2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmagnets2_a-magnets.obj `if test -f './magnets.c'; then $(CYGPATH_W) './magnets.c'; else $(CYGPATH_W) '$(srcdir)/./magnets.c'; fi`
2063
2064./libmap2_a-map.o: ./map.c
2065@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.o -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c
2066@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
2067@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./map.c' object='./libmap2_a-map.o' libtool=no @AMDEPBACKSLASH@
2068@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2069@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.o `test -f './map.c' || echo '$(srcdir)/'`./map.c
2070
2071./libmap2_a-map.obj: ./map.c
2072@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmap2_a-map.obj -MD -MP -MF $(DEPDIR)/libmap2_a-map.Tpo -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi`
2073@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
2074@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./map.c' object='./libmap2_a-map.obj' libtool=no @AMDEPBACKSLASH@
2075@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2076@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmap2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmap2_a-map.obj `if test -f './map.c'; then $(CYGPATH_W) './map.c'; else $(CYGPATH_W) '$(srcdir)/./map.c'; fi`
2077
2078./libmines2_a-mines.o: ./mines.c
2079@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.o -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c
2080@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
2081@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.o' libtool=no @AMDEPBACKSLASH@
2082@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2083@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.o `test -f './mines.c' || echo '$(srcdir)/'`./mines.c
2084
2085./libmines2_a-mines.obj: ./mines.c
2086@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libmines2_a-mines.obj -MD -MP -MF $(DEPDIR)/libmines2_a-mines.Tpo -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi`
2087@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
2088@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.obj' libtool=no @AMDEPBACKSLASH@
2089@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2090@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmines2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libmines2_a-mines.obj `if test -f './mines.c'; then $(CYGPATH_W) './mines.c'; else $(CYGPATH_W) '$(srcdir)/./mines.c'; fi`
2091
2092./libpattern2_a-pattern.o: ./pattern.c
2093@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2094@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
2095@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no @AMDEPBACKSLASH@
2096@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2097@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2098
2099./libpattern2_a-pattern.obj: ./pattern.c
2100@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern2_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern2_a-pattern.Tpo -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2101@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
2102@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no @AMDEPBACKSLASH@
2103@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2104@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern2_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2105
2106./libpattern4_a-pattern.o: ./pattern.c
2107@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.o -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2108@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
2109@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.o' libtool=no @AMDEPBACKSLASH@
2110@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2111@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.o `test -f './pattern.c' || echo '$(srcdir)/'`./pattern.c
2112
2113./libpattern4_a-pattern.obj: ./pattern.c
2114@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpattern4_a-pattern.obj -MD -MP -MF $(DEPDIR)/libpattern4_a-pattern.Tpo -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2115@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
2116@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.obj' libtool=no @AMDEPBACKSLASH@
2117@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2118@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpattern4_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpattern4_a-pattern.obj `if test -f './pattern.c'; then $(CYGPATH_W) './pattern.c'; else $(CYGPATH_W) '$(srcdir)/./pattern.c'; fi`
2119
2120./libpearl2_a-pearl.o: ./pearl.c
2121@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.o -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c
2122@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
2123@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no @AMDEPBACKSLASH@
2124@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2125@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.o `test -f './pearl.c' || echo '$(srcdir)/'`./pearl.c
2126
2127./libpearl2_a-pearl.obj: ./pearl.c
2128@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libpearl2_a-pearl.obj -MD -MP -MF $(DEPDIR)/libpearl2_a-pearl.Tpo -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi`
2129@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
2130@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no @AMDEPBACKSLASH@
2131@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2132@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpearl2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libpearl2_a-pearl.obj `if test -f './pearl.c'; then $(CYGPATH_W) './pearl.c'; else $(CYGPATH_W) '$(srcdir)/./pearl.c'; fi`
2133
2134./libsignpos2_a-signpost.o: ./signpost.c
2135@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.o -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c
2136@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
2137@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no @AMDEPBACKSLASH@
2138@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2139@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.o `test -f './signpost.c' || echo '$(srcdir)/'`./signpost.c
2140
2141./libsignpos2_a-signpost.obj: ./signpost.c
2142@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsignpos2_a-signpost.obj -MD -MP -MF $(DEPDIR)/libsignpos2_a-signpost.Tpo -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi`
2143@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
2144@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no @AMDEPBACKSLASH@
2145@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2146@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsignpos2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsignpos2_a-signpost.obj `if test -f './signpost.c'; then $(CYGPATH_W) './signpost.c'; else $(CYGPATH_W) '$(srcdir)/./signpost.c'; fi`
2147
2148./libsingles3_a-singles.o: ./singles.c
2149@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.o -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c
2150@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
2151@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.o' libtool=no @AMDEPBACKSLASH@
2152@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2153@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.o `test -f './singles.c' || echo '$(srcdir)/'`./singles.c
2154
2155./libsingles3_a-singles.obj: ./singles.c
2156@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsingles3_a-singles.obj -MD -MP -MF $(DEPDIR)/libsingles3_a-singles.Tpo -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi`
2157@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
2158@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no @AMDEPBACKSLASH@
2159@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2160@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsingles3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsingles3_a-singles.obj `if test -f './singles.c'; then $(CYGPATH_W) './singles.c'; else $(CYGPATH_W) '$(srcdir)/./singles.c'; fi`
2161
2162./libslant2_a-slant.o: ./slant.c
2163@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.o -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c
2164@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
2165@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.o' libtool=no @AMDEPBACKSLASH@
2166@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2167@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.o `test -f './slant.c' || echo '$(srcdir)/'`./slant.c
2168
2169./libslant2_a-slant.obj: ./slant.c
2170@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libslant2_a-slant.obj -MD -MP -MF $(DEPDIR)/libslant2_a-slant.Tpo -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi`
2171@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
2172@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.obj' libtool=no @AMDEPBACKSLASH@
2173@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2174@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslant2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libslant2_a-slant.obj `if test -f './slant.c'; then $(CYGPATH_W) './slant.c'; else $(CYGPATH_W) '$(srcdir)/./slant.c'; fi`
2175
2176./libsolo2_a-solo.o: ./solo.c
2177@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.o -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c
2178@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
2179@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.o' libtool=no @AMDEPBACKSLASH@
2180@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2181@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.o `test -f './solo.c' || echo '$(srcdir)/'`./solo.c
2182
2183./libsolo2_a-solo.obj: ./solo.c
2184@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libsolo2_a-solo.obj -MD -MP -MF $(DEPDIR)/libsolo2_a-solo.Tpo -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi`
2185@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
2186@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no @AMDEPBACKSLASH@
2187@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2188@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsolo2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libsolo2_a-solo.obj `if test -f './solo.c'; then $(CYGPATH_W) './solo.c'; else $(CYGPATH_W) '$(srcdir)/./solo.c'; fi`
2189
2190./libtents3_a-tents.o: ./tents.c
2191@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.o -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c
2192@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
2193@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.o' libtool=no @AMDEPBACKSLASH@
2194@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2195@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.o `test -f './tents.c' || echo '$(srcdir)/'`./tents.c
2196
2197./libtents3_a-tents.obj: ./tents.c
2198@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtents3_a-tents.obj -MD -MP -MF $(DEPDIR)/libtents3_a-tents.Tpo -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi`
2199@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
2200@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.obj' libtool=no @AMDEPBACKSLASH@
2201@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2202@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtents3_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtents3_a-tents.obj `if test -f './tents.c'; then $(CYGPATH_W) './tents.c'; else $(CYGPATH_W) '$(srcdir)/./tents.c'; fi`
2203
2204./libtowers2_a-towers.o: ./towers.c
2205@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.o -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c
2206@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
2207@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.o' libtool=no @AMDEPBACKSLASH@
2208@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2209@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.o `test -f './towers.c' || echo '$(srcdir)/'`./towers.c
2210
2211./libtowers2_a-towers.obj: ./towers.c
2212@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libtowers2_a-towers.obj -MD -MP -MF $(DEPDIR)/libtowers2_a-towers.Tpo -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi`
2213@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
2214@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no @AMDEPBACKSLASH@
2215@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2216@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtowers2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libtowers2_a-towers.obj `if test -f './towers.c'; then $(CYGPATH_W) './towers.c'; else $(CYGPATH_W) '$(srcdir)/./towers.c'; fi`
2217
2218./libunequal2_a-unequal.o: ./unequal.c
2219@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.o -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c
2220@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
2221@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no @AMDEPBACKSLASH@
2222@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2223@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.o `test -f './unequal.c' || echo '$(srcdir)/'`./unequal.c
2224
2225./libunequal2_a-unequal.obj: ./unequal.c
2226@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunequal2_a-unequal.obj -MD -MP -MF $(DEPDIR)/libunequal2_a-unequal.Tpo -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi`
2227@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
2228@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no @AMDEPBACKSLASH@
2229@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2230@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunequal2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunequal2_a-unequal.obj `if test -f './unequal.c'; then $(CYGPATH_W) './unequal.c'; else $(CYGPATH_W) '$(srcdir)/./unequal.c'; fi`
2231
2232./libunruly2_a-unruly.o: ./unruly.c
2233@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.o -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c
2234@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
2235@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no @AMDEPBACKSLASH@
2236@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2237@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.o `test -f './unruly.c' || echo '$(srcdir)/'`./unruly.c
2238
2239./libunruly2_a-unruly.obj: ./unruly.c
2240@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ./libunruly2_a-unruly.obj -MD -MP -MF $(DEPDIR)/libunruly2_a-unruly.Tpo -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi`
2241@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
2242@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no @AMDEPBACKSLASH@
2243@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2244@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunruly2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ./libunruly2_a-unruly.obj `if test -f './unruly.c'; then $(CYGPATH_W) './unruly.c'; else $(CYGPATH_W) '$(srcdir)/./unruly.c'; fi`
2245
2246ID: $(am__tagged_files)
2247 $(am__define_uniq_tagged_files); mkid -fID $$unique
2248tags: tags-am
2249TAGS: tags
2250
2251tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
2252 set x; \
2253 here=`pwd`; \
2254 $(am__define_uniq_tagged_files); \
2255 shift; \
2256 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
2257 test -n "$$unique" || unique=$$empty_fix; \
2258 if test $$# -gt 0; then \
2259 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
2260 "$$@" $$unique; \
2261 else \
2262 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
2263 $$unique; \
2264 fi; \
2265 fi
2266ctags: ctags-am
2267
2268CTAGS: ctags
2269ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
2270 $(am__define_uniq_tagged_files); \
2271 test -z "$(CTAGS_ARGS)$$unique" \
2272 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
2273 $$unique
2274
2275GTAGS:
2276 here=`$(am__cd) $(top_builddir) && pwd` \
2277 && $(am__cd) $(top_srcdir) \
2278 && gtags -i $(GTAGS_ARGS) "$$here"
2279cscope: cscope.files
2280 test ! -s cscope.files \
2281 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
2282clean-cscope:
2283 -rm -f cscope.files
2284cscope.files: clean-cscope cscopelist
2285cscopelist: cscopelist-am
2286
2287cscopelist-am: $(am__tagged_files)
2288 list='$(am__tagged_files)'; \
2289 case "$(srcdir)" in \
2290 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
2291 *) sdir=$(subdir)/$(srcdir) ;; \
2292 esac; \
2293 for i in $$list; do \
2294 if test -f "$$i"; then \
2295 echo "$(subdir)/$$i"; \
2296 else \
2297 echo "$$sdir/$$i"; \
2298 fi; \
2299 done >> $(top_builddir)/cscope.files
2300
2301distclean-tags:
2302 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
2303 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
2304
2305distdir: $(DISTFILES)
2306 $(am__remove_distdir)
2307 test -d "$(distdir)" || mkdir "$(distdir)"
2308 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
2309 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
2310 list='$(DISTFILES)'; \
2311 dist_files=`for file in $$list; do echo $$file; done | \
2312 sed -e "s|^$$srcdirstrip/||;t" \
2313 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
2314 case $$dist_files in \
2315 */*) $(MKDIR_P) `echo "$$dist_files" | \
2316 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
2317 sort -u` ;; \
2318 esac; \
2319 for file in $$dist_files; do \
2320 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
2321 if test -d $$d/$$file; then \
2322 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
2323 if test -d "$(distdir)/$$file"; then \
2324 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
2325 fi; \
2326 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
2327 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
2328 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
2329 fi; \
2330 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
2331 else \
2332 test -f "$(distdir)/$$file" \
2333 || cp -p $$d/$$file "$(distdir)/$$file" \
2334 || exit 1; \
2335 fi; \
2336 done
2337 -test -n "$(am__skip_mode_fix)" \
2338 || find "$(distdir)" -type d ! -perm -755 \
2339 -exec chmod u+rwx,go+rx {} \; -o \
2340 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
2341 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
2342 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
2343 || chmod -R a+r "$(distdir)"
2344dist-gzip: distdir
2345 tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
2346 $(am__post_remove_distdir)
2347
2348dist-bzip2: distdir
2349 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
2350 $(am__post_remove_distdir)
2351
2352dist-lzip: distdir
2353 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
2354 $(am__post_remove_distdir)
2355
2356dist-xz: distdir
2357 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
2358 $(am__post_remove_distdir)
2359
2360dist-tarZ: distdir
2361 @echo WARNING: "Support for distribution archives compressed with" \
2362 "legacy program 'compress' is deprecated." >&2
2363 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
2364 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
2365 $(am__post_remove_distdir)
2366
2367dist-shar: distdir
2368 @echo WARNING: "Support for shar distribution archives is" \
2369 "deprecated." >&2
2370 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
2371 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
2372 $(am__post_remove_distdir)
2373
2374dist-zip: distdir
2375 -rm -f $(distdir).zip
2376 zip -rq $(distdir).zip $(distdir)
2377 $(am__post_remove_distdir)
2378
2379dist dist-all:
2380 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
2381 $(am__post_remove_distdir)
2382
2383# This target untars the dist file and tries a VPATH configuration. Then
2384# it guarantees that the distribution is self-contained by making another
2385# tarfile.
2386distcheck: dist
2387 case '$(DIST_ARCHIVES)' in \
2388 *.tar.gz*) \
2389 eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
2390 *.tar.bz2*) \
2391 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
2392 *.tar.lz*) \
2393 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
2394 *.tar.xz*) \
2395 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
2396 *.tar.Z*) \
2397 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
2398 *.shar.gz*) \
2399 eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
2400 *.zip*) \
2401 unzip $(distdir).zip ;;\
2402 esac
2403 chmod -R a-w $(distdir)
2404 chmod u+w $(distdir)
2405 mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
2406 chmod a-w $(distdir)
2407 test -d $(distdir)/_build || exit 0; \
2408 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
2409 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
2410 && am__cwd=`pwd` \
2411 && $(am__cd) $(distdir)/_build/sub \
2412 && ../../configure \
2413 $(AM_DISTCHECK_CONFIGURE_FLAGS) \
2414 $(DISTCHECK_CONFIGURE_FLAGS) \
2415 --srcdir=../.. --prefix="$$dc_install_base" \
2416 && $(MAKE) $(AM_MAKEFLAGS) \
2417 && $(MAKE) $(AM_MAKEFLAGS) dvi \
2418 && $(MAKE) $(AM_MAKEFLAGS) check \
2419 && $(MAKE) $(AM_MAKEFLAGS) install \
2420 && $(MAKE) $(AM_MAKEFLAGS) installcheck \
2421 && $(MAKE) $(AM_MAKEFLAGS) uninstall \
2422 && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
2423 distuninstallcheck \
2424 && chmod -R a-w "$$dc_install_base" \
2425 && ({ \
2426 (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
2427 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
2428 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
2429 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
2430 distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
2431 } || { rm -rf "$$dc_destdir"; exit 1; }) \
2432 && rm -rf "$$dc_destdir" \
2433 && $(MAKE) $(AM_MAKEFLAGS) dist \
2434 && rm -rf $(DIST_ARCHIVES) \
2435 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
2436 && cd "$$am__cwd" \
2437 || exit 1
2438 $(am__post_remove_distdir)
2439 @(echo "$(distdir) archives ready for distribution: "; \
2440 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
2441 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
2442distuninstallcheck:
2443 @test -n '$(distuninstallcheck_dir)' || { \
2444 echo 'ERROR: trying to run $@ with an empty' \
2445 '$$(distuninstallcheck_dir)' >&2; \
2446 exit 1; \
2447 }; \
2448 $(am__cd) '$(distuninstallcheck_dir)' || { \
2449 echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
2450 exit 1; \
2451 }; \
2452 test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
2453 || { echo "ERROR: files left after uninstall:" ; \
2454 if test -n "$(DESTDIR)"; then \
2455 echo " (check DESTDIR support)"; \
2456 fi ; \
2457 $(distuninstallcheck_listfiles) ; \
2458 exit 1; } >&2
2459distcleancheck: distclean
2460 @if test '$(srcdir)' = . ; then \
2461 echo "ERROR: distcleancheck can only run from a VPATH build" ; \
2462 exit 1 ; \
2463 fi
2464 @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
2465 || { echo "ERROR: files left in build directory after distclean:" ; \
2466 $(distcleancheck_listfiles) ; \
2467 exit 1; } >&2
2468check-am: all-am
2469check: check-am
2470all-am: Makefile $(LIBRARIES) $(PROGRAMS)
2471installdirs:
2472 for dir in "$(DESTDIR)$(bindir)"; do \
2473 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
2474 done
2475install: install-am
2476install-exec: install-exec-am
2477install-data: install-data-am
2478uninstall: uninstall-am
2479
2480install-am: all-am
2481 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
2482
2483installcheck: installcheck-am
2484install-strip:
2485 if test -z '$(STRIP)'; then \
2486 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
2487 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
2488 install; \
2489 else \
2490 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
2491 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
2492 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
2493 fi
2494mostlyclean-generic:
2495
2496clean-generic:
2497
2498distclean-generic:
2499 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
2500 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
2501 -rm -f ./$(am__dirstamp)
2502 -test -z "$(DEPDIR)/$(am__dirstamp)" || rm -f $(DEPDIR)/$(am__dirstamp)
2503
2504maintainer-clean-generic:
2505 @echo "This command is intended for maintainers to use"
2506 @echo "it deletes files that may require special tools to rebuild."
2507clean: clean-am
2508
2509clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
2510 clean-noinstPROGRAMS mostlyclean-am
2511
2512distclean: distclean-am
2513 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
2514 -rm -rf ./$(DEPDIR)
2515 -rm -f Makefile
2516distclean-am: clean-am distclean-compile distclean-generic \
2517 distclean-tags
2518
2519dvi: dvi-am
2520
2521dvi-am:
2522
2523html: html-am
2524
2525html-am:
2526
2527info: info-am
2528
2529info-am:
2530
2531install-data-am:
2532
2533install-dvi: install-dvi-am
2534
2535install-dvi-am:
2536
2537install-exec-am: install-binPROGRAMS
2538
2539install-html: install-html-am
2540
2541install-html-am:
2542
2543install-info: install-info-am
2544
2545install-info-am:
2546
2547install-man:
2548
2549install-pdf: install-pdf-am
2550
2551install-pdf-am:
2552
2553install-ps: install-ps-am
2554
2555install-ps-am:
2556
2557installcheck-am:
2558
2559maintainer-clean: maintainer-clean-am
2560 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
2561 -rm -rf $(top_srcdir)/autom4te.cache
2562 -rm -rf ./$(DEPDIR)
2563 -rm -f Makefile
2564maintainer-clean-am: distclean-am maintainer-clean-generic
2565
2566mostlyclean: mostlyclean-am
2567
2568mostlyclean-am: mostlyclean-compile mostlyclean-generic
2569
2570pdf: pdf-am
2571
2572pdf-am:
2573
2574ps: ps-am
2575
2576ps-am:
2577
2578uninstall-am: uninstall-binPROGRAMS
2579
2580.MAKE: install-am install-strip
2581
2582.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
2583 clean-binPROGRAMS clean-cscope clean-generic \
2584 clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
2585 cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
2586 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
2587 distcheck distclean distclean-compile distclean-generic \
2588 distclean-tags distcleancheck distdir distuninstallcheck dvi \
2589 dvi-am html html-am info info-am install install-am \
2590 install-binPROGRAMS install-data install-data-am install-dvi \
2591 install-dvi-am install-exec install-exec-am install-html \
2592 install-html-am install-info install-info-am install-man \
2593 install-pdf install-pdf-am install-ps install-ps-am \
2594 install-strip installcheck installcheck-am installdirs \
2595 maintainer-clean maintainer-clean-generic mostlyclean \
2596 mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
2597 tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
2598
2599.PRECIOUS: Makefile
2600
2601test: benchmark.html benchmark.txt
2602
2603benchmark.html: benchmark.txt benchmark.pl
2604 ./benchmark.pl benchmark.txt > $@
2605
2606benchmark.txt: benchmark.sh $(GAMES)
2607 ./benchmark.sh > $@
2608
2609# Tell versions [3.59,3.63) of GNU make to not export all variables.
2610# Otherwise a system limit (for SysV at least) may be exceeded.
2611.NOEXPORT:
diff --git a/apps/plugins/puzzles/src/Makefile.nestedvm b/apps/plugins/puzzles/src/Makefile.nestedvm
new file mode 100644
index 0000000000..cf91de2e53
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.nestedvm
@@ -0,0 +1,556 @@
1# Makefile for puzzles under NestedVM.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6# This path points at the nestedvm root directory
7NESTEDVM = /opt/nestedvm
8# You can define this path to point at your tools if you need to
9TOOLPATH = $(NESTEDVM)/upstream/install/bin
10CC = $(TOOLPATH)/mips-unknown-elf-gcc
11
12CFLAGS = -O2 -Wall -Werror -DSLOW_SYSTEM -g -I./ -Iicons/
13
14all: blackbox.jar bridges.jar cube.jar dominosa.jar fifteen.jar filling.jar \
15 flip.jar flood.jar galaxies.jar guess.jar inertia.jar \
16 keen.jar lightup.jar loopy.jar magnets.jar map.jar mines.jar \
17 net.jar netslide.jar nullgame.jar palisade.jar pattern.jar \
18 pearl.jar pegs.jar range.jar rect.jar samegame.jar \
19 signpost.jar singles.jar sixteen.jar slant.jar solo.jar \
20 tents.jar towers.jar tracks.jar twiddle.jar undead.jar \
21 unequal.jar unruly.jar untangle.jar
22
23blackbox.mips: blackbox.o drawing.o nestedvm.o malloc.o midend.o misc.o \
24 no-icon.o printing.o ps.o random.o version.o
25 $(CC) $(XLDFLAGS) -o $@ blackbox.o drawing.o nestedvm.o malloc.o \
26 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
27 -lm
28
29bridges.mips: bridges.o drawing.o dsf.o findloop.o nestedvm.o malloc.o \
30 midend.o misc.o no-icon.o printing.o ps.o random.o version.o
31 $(CC) $(XLDFLAGS) -o $@ bridges.o drawing.o dsf.o findloop.o \
32 nestedvm.o malloc.o midend.o misc.o no-icon.o printing.o \
33 ps.o random.o version.o -lm
34
35cube.mips: cube.o drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
36 printing.o ps.o random.o version.o
37 $(CC) $(XLDFLAGS) -o $@ cube.o drawing.o nestedvm.o malloc.o \
38 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
39 -lm
40
41dominosa.mips: dominosa.o drawing.o nestedvm.o laydomino.o malloc.o midend.o \
42 misc.o no-icon.o printing.o ps.o random.o version.o
43 $(CC) $(XLDFLAGS) -o $@ dominosa.o drawing.o nestedvm.o laydomino.o \
44 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
45 version.o -lm
46
47fifteen.mips: drawing.o fifteen.o nestedvm.o malloc.o midend.o misc.o \
48 no-icon.o printing.o ps.o random.o version.o
49 $(CC) $(XLDFLAGS) -o $@ drawing.o fifteen.o nestedvm.o malloc.o \
50 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
51 -lm
52
53filling.mips: drawing.o dsf.o filling.o nestedvm.o malloc.o midend.o misc.o \
54 no-icon.o printing.o ps.o random.o version.o
55 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o filling.o nestedvm.o \
56 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
57 version.o -lm
58
59flip.mips: drawing.o flip.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
60 printing.o ps.o random.o tree234.o version.o
61 $(CC) $(XLDFLAGS) -o $@ drawing.o flip.o nestedvm.o malloc.o \
62 midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \
63 version.o -lm
64
65flood.mips: drawing.o flood.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
66 printing.o ps.o random.o version.o
67 $(CC) $(XLDFLAGS) -o $@ drawing.o flood.o nestedvm.o malloc.o \
68 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
69 -lm
70
71galaxies.mips: drawing.o dsf.o galaxies.o nestedvm.o malloc.o midend.o \
72 misc.o no-icon.o printing.o ps.o random.o version.o
73 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o galaxies.o nestedvm.o \
74 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
75 version.o -lm
76
77guess.mips: drawing.o nestedvm.o guess.o malloc.o midend.o misc.o no-icon.o \
78 printing.o ps.o random.o version.o
79 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o guess.o malloc.o \
80 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
81 -lm
82
83inertia.mips: drawing.o nestedvm.o inertia.o malloc.o midend.o misc.o \
84 no-icon.o printing.o ps.o random.o version.o
85 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o inertia.o malloc.o \
86 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
87 -lm
88
89keen.mips: drawing.o dsf.o nestedvm.o keen.o latin.o malloc.o maxflow.o \
90 midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \
91 version.o
92 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o keen.o latin.o \
93 malloc.o maxflow.o midend.o misc.o no-icon.o printing.o ps.o \
94 random.o tree234.o version.o -lm
95
96lightup.mips: combi.o drawing.o nestedvm.o lightup.o malloc.o midend.o \
97 misc.o no-icon.o printing.o ps.o random.o version.o
98 $(CC) $(XLDFLAGS) -o $@ combi.o drawing.o nestedvm.o lightup.o \
99 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
100 version.o -lm
101
102loopy.mips: drawing.o dsf.o grid.o nestedvm.o loopgen.o loopy.o malloc.o \
103 midend.o misc.o no-icon.o penrose.o printing.o ps.o random.o \
104 tree234.o version.o
105 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o grid.o nestedvm.o loopgen.o \
106 loopy.o malloc.o midend.o misc.o no-icon.o penrose.o \
107 printing.o ps.o random.o tree234.o version.o -lm
108
109magnets.mips: drawing.o nestedvm.o laydomino.o magnets.o malloc.o midend.o \
110 misc.o no-icon.o printing.o ps.o random.o version.o
111 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o laydomino.o magnets.o \
112 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
113 version.o -lm
114
115map.mips: drawing.o dsf.o nestedvm.o malloc.o map.o midend.o misc.o \
116 no-icon.o printing.o ps.o random.o version.o
117 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o map.o \
118 midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
119 -lm
120
121mines.mips: drawing.o nestedvm.o malloc.o midend.o mines.o misc.o no-icon.o \
122 printing.o ps.o random.o tree234.o version.o
123 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
124 mines.o misc.o no-icon.o printing.o ps.o random.o tree234.o \
125 version.o -lm
126
127net.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \
128 net.o no-icon.o printing.o ps.o random.o tree234.o version.o
129 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \
130 malloc.o midend.o misc.o net.o no-icon.o printing.o ps.o \
131 random.o tree234.o version.o -lm
132
133netslide.mips: drawing.o nestedvm.o malloc.o midend.o misc.o netslide.o \
134 no-icon.o printing.o ps.o random.o tree234.o version.o
135 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
136 misc.o netslide.o no-icon.o printing.o ps.o random.o \
137 tree234.o version.o -lm
138
139nullgame.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
140 nullgame.o printing.o ps.o random.o version.o
141 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
142 misc.o no-icon.o nullgame.o printing.o ps.o random.o \
143 version.o -lm
144
145palisade.mips: divvy.o drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o \
146 no-icon.o palisade.o printing.o ps.o random.o version.o
147 $(CC) $(XLDFLAGS) -o $@ divvy.o drawing.o dsf.o nestedvm.o malloc.o \
148 midend.o misc.o no-icon.o palisade.o printing.o ps.o \
149 random.o version.o -lm
150
151pattern.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
152 pattern.o printing.o ps.o random.o version.o
153 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
154 misc.o no-icon.o pattern.o printing.o ps.o random.o \
155 version.o -lm
156
157pearl.mips: drawing.o dsf.o grid.o nestedvm.o loopgen.o malloc.o midend.o \
158 misc.o no-icon.o pearl.o penrose.o printing.o ps.o random.o \
159 tdq.o tree234.o version.o
160 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o grid.o nestedvm.o loopgen.o \
161 malloc.o midend.o misc.o no-icon.o pearl.o penrose.o \
162 printing.o ps.o random.o tdq.o tree234.o version.o -lm
163
164pegs.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o pegs.o \
165 printing.o ps.o random.o tree234.o version.o
166 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
167 misc.o no-icon.o pegs.o printing.o ps.o random.o tree234.o \
168 version.o -lm
169
170range.mips: drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
171 printing.o ps.o random.o range.o version.o
172 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o midend.o \
173 misc.o no-icon.o printing.o ps.o random.o range.o version.o \
174 -lm
175
176rect.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
177 printing.o ps.o random.o rect.o version.o
178 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
179 misc.o no-icon.o printing.o ps.o random.o rect.o version.o \
180 -lm
181
182samegame.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
183 printing.o ps.o random.o samegame.o version.o
184 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
185 misc.o no-icon.o printing.o ps.o random.o samegame.o \
186 version.o -lm
187
188signpost.mips: drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
189 printing.o ps.o random.o signpost.o version.o
190 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o midend.o \
191 misc.o no-icon.o printing.o ps.o random.o signpost.o \
192 version.o -lm
193
194singles.mips: drawing.o dsf.o nestedvm.o latin.o malloc.o maxflow.o midend.o \
195 misc.o no-icon.o printing.o ps.o random.o singles.o \
196 tree234.o version.o
197 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o latin.o malloc.o \
198 maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o \
199 singles.o tree234.o version.o -lm
200
201sixteen.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
202 printing.o ps.o random.o sixteen.o version.o
203 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
204 misc.o no-icon.o printing.o ps.o random.o sixteen.o \
205 version.o -lm
206
207slant.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \
208 no-icon.o printing.o ps.o random.o slant.o version.o
209 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \
210 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
211 slant.o version.o -lm
212
213solo.mips: divvy.o drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o \
214 no-icon.o printing.o ps.o random.o solo.o version.o
215 $(CC) $(XLDFLAGS) -o $@ divvy.o drawing.o dsf.o nestedvm.o malloc.o \
216 midend.o misc.o no-icon.o printing.o ps.o random.o solo.o \
217 version.o -lm
218
219tents.mips: drawing.o dsf.o nestedvm.o malloc.o maxflow.o midend.o misc.o \
220 no-icon.o printing.o ps.o random.o tents.o version.o
221 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o \
222 maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o \
223 tents.o version.o -lm
224
225towers.mips: drawing.o nestedvm.o latin.o malloc.o maxflow.o midend.o misc.o \
226 no-icon.o printing.o ps.o random.o towers.o tree234.o \
227 version.o
228 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o latin.o malloc.o \
229 maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o \
230 towers.o tree234.o version.o -lm
231
232tracks.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \
233 no-icon.o printing.o ps.o random.o tracks.o version.o
234 $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \
235 malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \
236 tracks.o version.o -lm
237
238twiddle.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
239 printing.o ps.o random.o twiddle.o version.o
240 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
241 misc.o no-icon.o printing.o ps.o random.o twiddle.o \
242 version.o -lm
243
244undead.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
245 printing.o ps.o random.o undead.o version.o
246 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
247 misc.o no-icon.o printing.o ps.o random.o undead.o version.o \
248 -lm
249
250unequal.mips: drawing.o nestedvm.o latin.o malloc.o maxflow.o midend.o \
251 misc.o no-icon.o printing.o ps.o random.o tree234.o \
252 unequal.o version.o
253 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o latin.o malloc.o \
254 maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o \
255 tree234.o unequal.o version.o -lm
256
257unruly.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
258 printing.o ps.o random.o unruly.o version.o
259 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
260 misc.o no-icon.o printing.o ps.o random.o unruly.o version.o \
261 -lm
262
263untangle.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \
264 printing.o ps.o random.o tree234.o untangle.o version.o
265 $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \
266 misc.o no-icon.o printing.o ps.o random.o tree234.o \
267 untangle.o version.o -lm
268
269blackbox.o: ./blackbox.c ./puzzles.h
270 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
271blackbo3.o: ./blackbox.c ./puzzles.h
272 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
273bridges.o: ./bridges.c ./puzzles.h
274 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
275bridges3.o: ./bridges.c ./puzzles.h
276 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
277combi.o: ./combi.c ./puzzles.h
278 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
279cube.o: ./cube.c ./puzzles.h
280 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
281cube3.o: ./cube.c ./puzzles.h
282 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
283divvy.o: ./divvy.c ./puzzles.h
284 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
285dominosa.o: ./dominosa.c ./puzzles.h
286 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
287dominos3.o: ./dominosa.c ./puzzles.h
288 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
289drawing.o: ./drawing.c ./puzzles.h
290 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
291dsf.o: ./dsf.c ./puzzles.h
292 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
293fifteen.o: ./fifteen.c ./puzzles.h
294 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
295fifteen5.o: ./fifteen.c ./puzzles.h
296 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
297fifteen2.o: ./fifteen.c ./puzzles.h
298 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
299filling.o: ./filling.c ./puzzles.h
300 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
301filling5.o: ./filling.c ./puzzles.h
302 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
303filling2.o: ./filling.c ./puzzles.h
304 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
305findloop.o: ./findloop.c ./puzzles.h
306 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
307flip.o: ./flip.c ./puzzles.h ./tree234.h
308 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
309flip3.o: ./flip.c ./puzzles.h ./tree234.h
310 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
311flood.o: ./flood.c ./puzzles.h
312 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
313flood3.o: ./flood.c ./puzzles.h
314 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
315galaxies.o: ./galaxies.c ./puzzles.h
316 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
317galaxie7.o: ./galaxies.c ./puzzles.h
318 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
319galaxie4.o: ./galaxies.c ./puzzles.h
320 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
321galaxie2.o: ./galaxies.c ./puzzles.h
322 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
323grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
324 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
325nestedvm.o: ./nestedvm.c ./puzzles.h
326 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
327guess.o: ./guess.c ./puzzles.h
328 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
329guess3.o: ./guess.c ./puzzles.h
330 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
331inertia.o: ./inertia.c ./puzzles.h
332 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
333inertia3.o: ./inertia.c ./puzzles.h
334 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
335keen.o: ./keen.c ./puzzles.h ./latin.h
336 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
337keen5.o: ./keen.c ./puzzles.h ./latin.h
338 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
339keen2.o: ./keen.c ./puzzles.h ./latin.h
340 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
341latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
342 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
343latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
344 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
345latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
346 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
347laydomino.o: ./laydomino.c ./puzzles.h
348 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
349lightup.o: ./lightup.c ./puzzles.h
350 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
351lightup5.o: ./lightup.c ./puzzles.h
352 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
353lightup2.o: ./lightup.c ./puzzles.h
354 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
355list.o: ./list.c ./puzzles.h
356 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
357loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
358 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
359loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
360 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
361loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
362 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
363loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
364 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
365magnets.o: ./magnets.c ./puzzles.h
366 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
367magnets5.o: ./magnets.c ./puzzles.h
368 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
369magnets2.o: ./magnets.c ./puzzles.h
370 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
371malloc.o: ./malloc.c ./puzzles.h
372 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
373map.o: ./map.c ./puzzles.h
374 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
375map5.o: ./map.c ./puzzles.h
376 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
377map2.o: ./map.c ./puzzles.h
378 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
379maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
380 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
381midend.o: ./midend.c ./puzzles.h
382 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
383mines.o: ./mines.c ./tree234.h ./puzzles.h
384 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
385mines5.o: ./mines.c ./tree234.h ./puzzles.h
386 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
387mines2.o: ./mines.c ./tree234.h ./puzzles.h
388 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
389misc.o: ./misc.c ./puzzles.h
390 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
391net.o: ./net.c ./puzzles.h ./tree234.h
392 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
393net3.o: ./net.c ./puzzles.h ./tree234.h
394 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
395netslide.o: ./netslide.c ./puzzles.h ./tree234.h
396 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
397netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
398 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
399no-icon.o: ./no-icon.c
400 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
401nullfe.o: ./nullfe.c ./puzzles.h
402 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
403nullgame.o: ./nullgame.c ./puzzles.h
404 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
405obfusc.o: ./obfusc.c ./puzzles.h
406 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
407osx.o: ./osx.m ./puzzles.h
408 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
409palisade.o: ./palisade.c ./puzzles.h
410 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
411palisad3.o: ./palisade.c ./puzzles.h
412 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
413pattern.o: ./pattern.c ./puzzles.h
414 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
415pattern7.o: ./pattern.c ./puzzles.h
416 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
417pattern4.o: ./pattern.c ./puzzles.h
418 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
419pattern2.o: ./pattern.c ./puzzles.h
420 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
421pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
422 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
423pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
424 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
425pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
426 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
427pegs.o: ./pegs.c ./puzzles.h ./tree234.h
428 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
429pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
430 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
431penrose.o: ./penrose.c ./puzzles.h ./penrose.h
432 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
433printing.o: ./printing.c ./puzzles.h
434 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
435ps.o: ./ps.c ./puzzles.h
436 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
437random.o: ./random.c ./puzzles.h
438 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
439range.o: ./range.c ./puzzles.h
440 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
441range3.o: ./range.c ./puzzles.h
442 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
443rect.o: ./rect.c ./puzzles.h
444 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
445rect3.o: ./rect.c ./puzzles.h
446 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
447samegame.o: ./samegame.c ./puzzles.h
448 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
449samegam3.o: ./samegame.c ./puzzles.h
450 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
451signpost.o: ./signpost.c ./puzzles.h
452 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
453signpos5.o: ./signpost.c ./puzzles.h
454 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
455signpos2.o: ./signpost.c ./puzzles.h
456 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
457singles.o: ./singles.c ./puzzles.h ./latin.h
458 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
459singles5.o: ./singles.c ./puzzles.h ./latin.h
460 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
461singles3.o: ./singles.c ./puzzles.h ./latin.h
462 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
463sixteen.o: ./sixteen.c ./puzzles.h
464 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
465sixteen3.o: ./sixteen.c ./puzzles.h
466 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
467slant.o: ./slant.c ./puzzles.h
468 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
469slant5.o: ./slant.c ./puzzles.h
470 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
471slant2.o: ./slant.c ./puzzles.h
472 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
473solo.o: ./solo.c ./puzzles.h
474 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
475solo5.o: ./solo.c ./puzzles.h
476 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
477solo2.o: ./solo.c ./puzzles.h
478 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
479tdq.o: ./tdq.c ./puzzles.h
480 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
481tents.o: ./tents.c ./puzzles.h ./maxflow.h
482 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
483tents5.o: ./tents.c ./puzzles.h ./maxflow.h
484 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
485tents3.o: ./tents.c ./puzzles.h ./maxflow.h
486 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
487towers.o: ./towers.c ./puzzles.h ./latin.h
488 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
489towers5.o: ./towers.c ./puzzles.h ./latin.h
490 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
491towers2.o: ./towers.c ./puzzles.h ./latin.h
492 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
493tracks.o: ./tracks.c ./puzzles.h
494 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
495tracks3.o: ./tracks.c ./puzzles.h
496 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
497tree234.o: ./tree234.c ./tree234.h ./puzzles.h
498 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
499twiddle.o: ./twiddle.c ./puzzles.h
500 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
501twiddle3.o: ./twiddle.c ./puzzles.h
502 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
503undead.o: ./undead.c ./puzzles.h
504 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
505undead3.o: ./undead.c ./puzzles.h
506 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
507unequal.o: ./unequal.c ./puzzles.h ./latin.h
508 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
509unequal5.o: ./unequal.c ./puzzles.h ./latin.h
510 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
511unequal2.o: ./unequal.c ./puzzles.h ./latin.h
512 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
513unruly.o: ./unruly.c ./puzzles.h
514 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
515unruly5.o: ./unruly.c ./puzzles.h
516 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
517unruly2.o: ./unruly.c ./puzzles.h
518 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
519untangle.o: ./untangle.c ./puzzles.h ./tree234.h
520 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
521untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
522 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
523version.o: ./version.c ./version.h
524 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
525windows.o: ./windows.c ./puzzles.h ./resource.h
526 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
527windows1.o: ./windows.c ./puzzles.h ./resource.h
528 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
529
530.PRECIOUS: %.class
531%.class: %.mips
532 java -cp $(NESTEDVM)/build:$(NESTEDVM)/upstream/build/classgen/build \
533 org.ibex.nestedvm.Compiler -outformat class -d . \
534 PuzzleEngine $<
535 mv PuzzleEngine.class $@
536
537org:
538 mkdir -p org/ibex/nestedvm/util
539 cp $(NESTEDVM)/build/org/ibex/nestedvm/Registers.class org/ibex/nestedvm
540 cp $(NESTEDVM)/build/org/ibex/nestedvm/UsermodeConstants.class org/ibex/nestedvm
541 cp $(NESTEDVM)/build/org/ibex/nestedvm/Runtime*.class org/ibex/nestedvm
542 cp $(NESTEDVM)/build/org/ibex/nestedvm/util/Platform*.class org/ibex/nestedvm/util
543 cp $(NESTEDVM)/build/org/ibex/nestedvm/util/Seekable*.class org/ibex/nestedvm/util
544 echo "Main-Class: PuzzleApplet" >applet.manifest
545
546PuzzleApplet.class: PuzzleApplet.java org
547 javac -source 1.3 -target 1.3 PuzzleApplet.java
548
549%.jar: %.class PuzzleApplet.class org
550 mv $< PuzzleEngine.class
551 jar cfm $@ applet.manifest PuzzleEngine.class PuzzleApplet*.class org
552 echo '<applet archive="'$@'" code="PuzzleApplet" width="700" height="500"></applet>' >$*.html
553 mv PuzzleEngine.class $<
554
555clean:
556 rm -rf *.o *.mips *.class *.html *.jar org applet.manifest
diff --git a/apps/plugins/puzzles/src/Makefile.osx b/apps/plugins/puzzles/src/Makefile.osx
new file mode 100644
index 0000000000..5d607d88e3
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.osx
@@ -0,0 +1,574 @@
1# Makefile for puzzles under Mac OS X.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5CC = $(TOOLPATH)gcc
6LIPO = $(TOOLPATH)lipo
7
8CFLAGS = -O2 -Wall -Werror -g -I./ -Iicons/
9LDFLAGS = -framework Cocoa
10all: Puzzles fifteensolver fillingsolver galaxiespicture galaxiessolver \
11 keensolver latincheck lightupsolver loopysolver \
12 magnetssolver mapsolver mineobfusc obfusc patternpicture \
13 patternsolver pearlbench signpostsolver singlessolver \
14 slantsolver solosolver tentssolver towerssolver \
15 unequalsolver unrulysolver
16Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html
17Puzzles.app/Contents/Resources/Help/index.html: \
18 Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but
19 cd Puzzles.app/Contents/Resources/Help; \
20 halibut --html ../../../../osx-help.but ../../../../puzzles.but
21Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources
22 mkdir -p Puzzles.app/Contents/Resources/Help
23
24release: Puzzles.dmg
25Puzzles.dmg: Puzzles
26 rm -f raw.dmg
27 hdiutil create -megabytes 5 -layout NONE raw.dmg
28 hdid -nomount raw.dmg > devicename
29 newfs_hfs -v "Simon Tatham's Puzzle Collection" `cat devicename`
30 hdiutil eject `cat devicename`
31 hdid raw.dmg | cut -f1 -d' ' > devicename
32 cp -R Puzzles.app /Volumes/"Simon Tatham's Puzzle Collection"
33 hdiutil eject `cat devicename`
34 rm -f Puzzles.dmg
35 hdiutil convert -format UDCO raw.dmg -o Puzzles.dmg
36 rm -f raw.dmg devicename
37
38.SUFFIXES: .o .c .m
39
40
41
42Puzzles.app:
43 mkdir -p $@
44Puzzles.app/Contents: Puzzles.app
45 mkdir -p $@
46Puzzles.app/Contents/MacOS: Puzzles.app/Contents
47 mkdir -p $@
48Puzzles.app/Contents/Resources: Puzzles.app/Contents
49 mkdir -p $@
50Puzzles.app/Contents/Resources/Puzzles.icns: Puzzles.app/Contents/Resources osx.icns
51 cp osx.icns $@
52Puzzles.app/Contents/Info.plist: Puzzles.app/Contents/Resources osx-info.plist
53 cp osx-info.plist $@
54Puzzles: Puzzles.app/Contents/MacOS/Puzzles \
55 Puzzles.app/Contents/Resources/Puzzles.icns \
56 Puzzles.app/Contents/Info.plist $(Puzzles_extra)
57
58Puzzles.i386.bin: blackbo3.i386.o bridges3.i386.o combi.i386.o cube3.i386.o \
59 divvy.i386.o dominos3.i386.o drawing.i386.o dsf.i386.o \
60 fifteen5.i386.o filling5.i386.o findloop.i386.o flip3.i386.o \
61 flood3.i386.o galaxie7.i386.o grid.i386.o guess3.i386.o \
62 inertia3.i386.o keen5.i386.o latin.i386.o laydomino.i386.o \
63 lightup5.i386.o list.i386.o loopgen.i386.o loopy5.i386.o \
64 magnets5.i386.o malloc.i386.o map5.i386.o maxflow.i386.o \
65 midend.i386.o mines5.i386.o misc.i386.o net3.i386.o \
66 netslid3.i386.o osx.i386.o palisad3.i386.o pattern7.i386.o \
67 pearl5.i386.o pegs3.i386.o penrose.i386.o random.i386.o \
68 range3.i386.o rect3.i386.o samegam3.i386.o signpos5.i386.o \
69 singles5.i386.o sixteen3.i386.o slant5.i386.o solo5.i386.o \
70 tdq.i386.o tents5.i386.o towers5.i386.o tracks3.i386.o \
71 tree234.i386.o twiddle3.i386.o undead3.i386.o \
72 unequal5.i386.o unruly5.i386.o untangl3.i386.o \
73 version.i386.o
74 $(CC) -arch i386 -mmacosx-version-min=10.4 $(LDFLAGS) -o $@ \
75 blackbo3.i386.o bridges3.i386.o combi.i386.o cube3.i386.o \
76 divvy.i386.o dominos3.i386.o drawing.i386.o dsf.i386.o \
77 fifteen5.i386.o filling5.i386.o findloop.i386.o flip3.i386.o \
78 flood3.i386.o galaxie7.i386.o grid.i386.o guess3.i386.o \
79 inertia3.i386.o keen5.i386.o latin.i386.o laydomino.i386.o \
80 lightup5.i386.o list.i386.o loopgen.i386.o loopy5.i386.o \
81 magnets5.i386.o malloc.i386.o map5.i386.o maxflow.i386.o \
82 midend.i386.o mines5.i386.o misc.i386.o net3.i386.o \
83 netslid3.i386.o osx.i386.o palisad3.i386.o pattern7.i386.o \
84 pearl5.i386.o pegs3.i386.o penrose.i386.o random.i386.o \
85 range3.i386.o rect3.i386.o samegam3.i386.o signpos5.i386.o \
86 singles5.i386.o sixteen3.i386.o slant5.i386.o solo5.i386.o \
87 tdq.i386.o tents5.i386.o towers5.i386.o tracks3.i386.o \
88 tree234.i386.o twiddle3.i386.o undead3.i386.o \
89 unequal5.i386.o unruly5.i386.o untangl3.i386.o \
90 version.i386.o
91
92Puzzles.app/Contents/MacOS/Puzzles: Puzzles.app/Contents/MacOS \
93 Puzzles.i386.bin
94 $(LIPO) -create Puzzles.i386.bin -output $@
95
96fifteensolver.i386: fifteen2.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \
97 random.i386.o
98 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
99 fifteen2.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \
100 random.i386.o
101
102fifteensolver: fifteensolver.i386
103 $(LIPO) -create fifteensolver.i386 -output $@
104
105fillingsolver.i386: dsf.i386.o filling2.i386.o malloc.i386.o misc.i386.o \
106 nullfe.i386.o random.i386.o
107 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
108 dsf.i386.o filling2.i386.o malloc.i386.o misc.i386.o \
109 nullfe.i386.o random.i386.o
110
111fillingsolver: fillingsolver.i386
112 $(LIPO) -create fillingsolver.i386 -output $@
113
114galaxiespicture.i386: dsf.i386.o galaxie4.i386.o malloc.i386.o misc.i386.o \
115 nullfe.i386.o random.i386.o
116 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
117 dsf.i386.o galaxie4.i386.o malloc.i386.o misc.i386.o \
118 nullfe.i386.o random.i386.o -lm
119
120galaxiespicture: galaxiespicture.i386
121 $(LIPO) -create galaxiespicture.i386 -output $@
122
123galaxiessolver.i386: dsf.i386.o galaxie2.i386.o malloc.i386.o misc.i386.o \
124 nullfe.i386.o random.i386.o
125 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
126 dsf.i386.o galaxie2.i386.o malloc.i386.o misc.i386.o \
127 nullfe.i386.o random.i386.o -lm
128
129galaxiessolver: galaxiessolver.i386
130 $(LIPO) -create galaxiessolver.i386 -output $@
131
132keensolver.i386: dsf.i386.o keen2.i386.o latin6.i386.o malloc.i386.o \
133 maxflow.i386.o misc.i386.o nullfe.i386.o random.i386.o \
134 tree234.i386.o
135 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
136 dsf.i386.o keen2.i386.o latin6.i386.o malloc.i386.o \
137 maxflow.i386.o misc.i386.o nullfe.i386.o random.i386.o \
138 tree234.i386.o
139
140keensolver: keensolver.i386
141 $(LIPO) -create keensolver.i386 -output $@
142
143latincheck.i386: latin8.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
144 nullfe.i386.o random.i386.o tree234.i386.o
145 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
146 latin8.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
147 nullfe.i386.o random.i386.o tree234.i386.o
148
149latincheck: latincheck.i386
150 $(LIPO) -create latincheck.i386 -output $@
151
152lightupsolver.i386: combi.i386.o lightup2.i386.o malloc.i386.o misc.i386.o \
153 nullfe.i386.o random.i386.o
154 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
155 combi.i386.o lightup2.i386.o malloc.i386.o misc.i386.o \
156 nullfe.i386.o random.i386.o
157
158lightupsolver: lightupsolver.i386
159 $(LIPO) -create lightupsolver.i386 -output $@
160
161loopysolver.i386: dsf.i386.o grid.i386.o loopgen.i386.o loopy2.i386.o \
162 malloc.i386.o misc.i386.o nullfe.i386.o penrose.i386.o \
163 random.i386.o tree234.i386.o
164 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
165 dsf.i386.o grid.i386.o loopgen.i386.o loopy2.i386.o \
166 malloc.i386.o misc.i386.o nullfe.i386.o penrose.i386.o \
167 random.i386.o tree234.i386.o -lm
168
169loopysolver: loopysolver.i386
170 $(LIPO) -create loopysolver.i386 -output $@
171
172magnetssolver.i386: laydomino.i386.o magnets2.i386.o malloc.i386.o \
173 misc.i386.o nullfe.i386.o random.i386.o
174 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
175 laydomino.i386.o magnets2.i386.o malloc.i386.o misc.i386.o \
176 nullfe.i386.o random.i386.o -lm
177
178magnetssolver: magnetssolver.i386
179 $(LIPO) -create magnetssolver.i386 -output $@
180
181mapsolver.i386: dsf.i386.o malloc.i386.o map2.i386.o misc.i386.o \
182 nullfe.i386.o random.i386.o
183 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
184 dsf.i386.o malloc.i386.o map2.i386.o misc.i386.o \
185 nullfe.i386.o random.i386.o -lm
186
187mapsolver: mapsolver.i386
188 $(LIPO) -create mapsolver.i386 -output $@
189
190mineobfusc.i386: malloc.i386.o mines2.i386.o misc.i386.o nullfe.i386.o \
191 random.i386.o tree234.i386.o
192 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
193 malloc.i386.o mines2.i386.o misc.i386.o nullfe.i386.o \
194 random.i386.o tree234.i386.o
195
196mineobfusc: mineobfusc.i386
197 $(LIPO) -create mineobfusc.i386 -output $@
198
199obfusc.i386: malloc.i386.o misc.i386.o nullfe.i386.o obfusc.i386.o \
200 random.i386.o
201 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
202 malloc.i386.o misc.i386.o nullfe.i386.o obfusc.i386.o \
203 random.i386.o
204
205obfusc: obfusc.i386
206 $(LIPO) -create obfusc.i386 -output $@
207
208patternpicture.i386: malloc.i386.o misc.i386.o nullfe.i386.o pattern4.i386.o \
209 random.i386.o
210 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
211 malloc.i386.o misc.i386.o nullfe.i386.o pattern4.i386.o \
212 random.i386.o
213
214patternpicture: patternpicture.i386
215 $(LIPO) -create patternpicture.i386 -output $@
216
217patternsolver.i386: malloc.i386.o misc.i386.o nullfe.i386.o pattern2.i386.o \
218 random.i386.o
219 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
220 malloc.i386.o misc.i386.o nullfe.i386.o pattern2.i386.o \
221 random.i386.o
222
223patternsolver: patternsolver.i386
224 $(LIPO) -create patternsolver.i386 -output $@
225
226pearlbench.i386: dsf.i386.o grid.i386.o loopgen.i386.o malloc.i386.o \
227 misc.i386.o nullfe.i386.o pearl2.i386.o penrose.i386.o \
228 random.i386.o tdq.i386.o tree234.i386.o
229 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
230 dsf.i386.o grid.i386.o loopgen.i386.o malloc.i386.o \
231 misc.i386.o nullfe.i386.o pearl2.i386.o penrose.i386.o \
232 random.i386.o tdq.i386.o tree234.i386.o -lm
233
234pearlbench: pearlbench.i386
235 $(LIPO) -create pearlbench.i386 -output $@
236
237signpostsolver.i386: dsf.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \
238 random.i386.o signpos2.i386.o
239 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
240 dsf.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \
241 random.i386.o signpos2.i386.o -lm
242
243signpostsolver: signpostsolver.i386
244 $(LIPO) -create signpostsolver.i386 -output $@
245
246singlessolver.i386: dsf.i386.o latin.i386.o malloc.i386.o maxflow.i386.o \
247 misc.i386.o nullfe.i386.o random.i386.o singles3.i386.o \
248 tree234.i386.o
249 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
250 dsf.i386.o latin.i386.o malloc.i386.o maxflow.i386.o \
251 misc.i386.o nullfe.i386.o random.i386.o singles3.i386.o \
252 tree234.i386.o
253
254singlessolver: singlessolver.i386
255 $(LIPO) -create singlessolver.i386 -output $@
256
257slantsolver.i386: dsf.i386.o findloop.i386.o malloc.i386.o misc.i386.o \
258 nullfe.i386.o random.i386.o slant2.i386.o
259 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
260 dsf.i386.o findloop.i386.o malloc.i386.o misc.i386.o \
261 nullfe.i386.o random.i386.o slant2.i386.o
262
263slantsolver: slantsolver.i386
264 $(LIPO) -create slantsolver.i386 -output $@
265
266solosolver.i386: divvy.i386.o dsf.i386.o malloc.i386.o misc.i386.o \
267 nullfe.i386.o random.i386.o solo2.i386.o
268 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
269 divvy.i386.o dsf.i386.o malloc.i386.o misc.i386.o \
270 nullfe.i386.o random.i386.o solo2.i386.o
271
272solosolver: solosolver.i386
273 $(LIPO) -create solosolver.i386 -output $@
274
275tentssolver.i386: dsf.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
276 nullfe.i386.o random.i386.o tents3.i386.o
277 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
278 dsf.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
279 nullfe.i386.o random.i386.o tents3.i386.o
280
281tentssolver: tentssolver.i386
282 $(LIPO) -create tentssolver.i386 -output $@
283
284towerssolver.i386: latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
285 nullfe.i386.o random.i386.o towers2.i386.o tree234.i386.o
286 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
287 latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
288 nullfe.i386.o random.i386.o towers2.i386.o tree234.i386.o
289
290towerssolver: towerssolver.i386
291 $(LIPO) -create towerssolver.i386 -output $@
292
293unequalsolver.i386: latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
294 nullfe.i386.o random.i386.o tree234.i386.o unequal2.i386.o
295 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
296 latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \
297 nullfe.i386.o random.i386.o tree234.i386.o unequal2.i386.o
298
299unequalsolver: unequalsolver.i386
300 $(LIPO) -create unequalsolver.i386 -output $@
301
302unrulysolver.i386: malloc.i386.o misc.i386.o nullfe.i386.o random.i386.o \
303 unruly2.i386.o
304 $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \
305 malloc.i386.o misc.i386.o nullfe.i386.o random.i386.o \
306 unruly2.i386.o
307
308unrulysolver: unrulysolver.i386
309 $(LIPO) -create unrulysolver.i386 -output $@
310
311blackbox.i386.o: ./blackbox.c ./puzzles.h
312 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
313blackbo3.i386.o: ./blackbox.c ./puzzles.h
314 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
315bridges.i386.o: ./bridges.c ./puzzles.h
316 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
317bridges3.i386.o: ./bridges.c ./puzzles.h
318 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
319combi.i386.o: ./combi.c ./puzzles.h
320 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
321cube.i386.o: ./cube.c ./puzzles.h
322 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
323cube3.i386.o: ./cube.c ./puzzles.h
324 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
325divvy.i386.o: ./divvy.c ./puzzles.h
326 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
327dominosa.i386.o: ./dominosa.c ./puzzles.h
328 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
329dominos3.i386.o: ./dominosa.c ./puzzles.h
330 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
331drawing.i386.o: ./drawing.c ./puzzles.h
332 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
333dsf.i386.o: ./dsf.c ./puzzles.h
334 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
335fifteen.i386.o: ./fifteen.c ./puzzles.h
336 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
337fifteen5.i386.o: ./fifteen.c ./puzzles.h
338 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
339fifteen2.i386.o: ./fifteen.c ./puzzles.h
340 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
341filling.i386.o: ./filling.c ./puzzles.h
342 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
343filling5.i386.o: ./filling.c ./puzzles.h
344 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
345filling2.i386.o: ./filling.c ./puzzles.h
346 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
347findloop.i386.o: ./findloop.c ./puzzles.h
348 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
349flip.i386.o: ./flip.c ./puzzles.h ./tree234.h
350 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
351flip3.i386.o: ./flip.c ./puzzles.h ./tree234.h
352 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
353flood.i386.o: ./flood.c ./puzzles.h
354 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
355flood3.i386.o: ./flood.c ./puzzles.h
356 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
357galaxies.i386.o: ./galaxies.c ./puzzles.h
358 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
359galaxie7.i386.o: ./galaxies.c ./puzzles.h
360 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
361galaxie4.i386.o: ./galaxies.c ./puzzles.h
362 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
363galaxie2.i386.o: ./galaxies.c ./puzzles.h
364 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
365grid.i386.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
366 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
367gtk.i386.o: ./gtk.c ./puzzles.h
368 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
369guess.i386.o: ./guess.c ./puzzles.h
370 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
371guess3.i386.o: ./guess.c ./puzzles.h
372 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
373inertia.i386.o: ./inertia.c ./puzzles.h
374 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
375inertia3.i386.o: ./inertia.c ./puzzles.h
376 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
377keen.i386.o: ./keen.c ./puzzles.h ./latin.h
378 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
379keen5.i386.o: ./keen.c ./puzzles.h ./latin.h
380 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
381keen2.i386.o: ./keen.c ./puzzles.h ./latin.h
382 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
383latin.i386.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
384 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
385latin8.i386.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
386 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
387latin6.i386.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
388 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
389laydomino.i386.o: ./laydomino.c ./puzzles.h
390 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
391lightup.i386.o: ./lightup.c ./puzzles.h
392 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
393lightup5.i386.o: ./lightup.c ./puzzles.h
394 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
395lightup2.i386.o: ./lightup.c ./puzzles.h
396 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
397list.i386.o: ./list.c ./puzzles.h
398 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
399loopgen.i386.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
400 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
401loopy.i386.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
402 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
403loopy5.i386.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
404 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
405loopy2.i386.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
406 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
407magnets.i386.o: ./magnets.c ./puzzles.h
408 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
409magnets5.i386.o: ./magnets.c ./puzzles.h
410 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
411magnets2.i386.o: ./magnets.c ./puzzles.h
412 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
413malloc.i386.o: ./malloc.c ./puzzles.h
414 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
415map.i386.o: ./map.c ./puzzles.h
416 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
417map5.i386.o: ./map.c ./puzzles.h
418 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
419map2.i386.o: ./map.c ./puzzles.h
420 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
421maxflow.i386.o: ./maxflow.c ./maxflow.h ./puzzles.h
422 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
423midend.i386.o: ./midend.c ./puzzles.h
424 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
425mines.i386.o: ./mines.c ./tree234.h ./puzzles.h
426 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
427mines5.i386.o: ./mines.c ./tree234.h ./puzzles.h
428 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
429mines2.i386.o: ./mines.c ./tree234.h ./puzzles.h
430 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
431misc.i386.o: ./misc.c ./puzzles.h
432 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
433net.i386.o: ./net.c ./puzzles.h ./tree234.h
434 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
435net3.i386.o: ./net.c ./puzzles.h ./tree234.h
436 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
437netslide.i386.o: ./netslide.c ./puzzles.h ./tree234.h
438 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
439netslid3.i386.o: ./netslide.c ./puzzles.h ./tree234.h
440 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
441no-icon.i386.o: ./no-icon.c
442 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
443nullfe.i386.o: ./nullfe.c ./puzzles.h
444 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
445nullgame.i386.o: ./nullgame.c ./puzzles.h
446 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
447obfusc.i386.o: ./obfusc.c ./puzzles.h
448 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
449osx.i386.o: ./osx.m ./puzzles.h
450 $(CC) -arch i386 -mmacosx-version-min=10.4 -x objective-c $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
451palisade.i386.o: ./palisade.c ./puzzles.h
452 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
453palisad3.i386.o: ./palisade.c ./puzzles.h
454 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
455pattern.i386.o: ./pattern.c ./puzzles.h
456 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
457pattern7.i386.o: ./pattern.c ./puzzles.h
458 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
459pattern4.i386.o: ./pattern.c ./puzzles.h
460 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
461pattern2.i386.o: ./pattern.c ./puzzles.h
462 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
463pearl.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
464 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
465pearl5.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
466 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
467pearl2.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
468 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
469pegs.i386.o: ./pegs.c ./puzzles.h ./tree234.h
470 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
471pegs3.i386.o: ./pegs.c ./puzzles.h ./tree234.h
472 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
473penrose.i386.o: ./penrose.c ./puzzles.h ./penrose.h
474 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
475printing.i386.o: ./printing.c ./puzzles.h
476 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
477ps.i386.o: ./ps.c ./puzzles.h
478 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
479random.i386.o: ./random.c ./puzzles.h
480 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
481range.i386.o: ./range.c ./puzzles.h
482 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
483range3.i386.o: ./range.c ./puzzles.h
484 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
485rect.i386.o: ./rect.c ./puzzles.h
486 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
487rect3.i386.o: ./rect.c ./puzzles.h
488 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
489samegame.i386.o: ./samegame.c ./puzzles.h
490 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
491samegam3.i386.o: ./samegame.c ./puzzles.h
492 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
493signpost.i386.o: ./signpost.c ./puzzles.h
494 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
495signpos5.i386.o: ./signpost.c ./puzzles.h
496 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
497signpos2.i386.o: ./signpost.c ./puzzles.h
498 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
499singles.i386.o: ./singles.c ./puzzles.h ./latin.h
500 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
501singles5.i386.o: ./singles.c ./puzzles.h ./latin.h
502 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
503singles3.i386.o: ./singles.c ./puzzles.h ./latin.h
504 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
505sixteen.i386.o: ./sixteen.c ./puzzles.h
506 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
507sixteen3.i386.o: ./sixteen.c ./puzzles.h
508 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
509slant.i386.o: ./slant.c ./puzzles.h
510 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
511slant5.i386.o: ./slant.c ./puzzles.h
512 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
513slant2.i386.o: ./slant.c ./puzzles.h
514 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
515solo.i386.o: ./solo.c ./puzzles.h
516 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
517solo5.i386.o: ./solo.c ./puzzles.h
518 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
519solo2.i386.o: ./solo.c ./puzzles.h
520 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
521tdq.i386.o: ./tdq.c ./puzzles.h
522 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
523tents.i386.o: ./tents.c ./puzzles.h ./maxflow.h
524 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
525tents5.i386.o: ./tents.c ./puzzles.h ./maxflow.h
526 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
527tents3.i386.o: ./tents.c ./puzzles.h ./maxflow.h
528 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
529towers.i386.o: ./towers.c ./puzzles.h ./latin.h
530 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
531towers5.i386.o: ./towers.c ./puzzles.h ./latin.h
532 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
533towers2.i386.o: ./towers.c ./puzzles.h ./latin.h
534 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
535tracks.i386.o: ./tracks.c ./puzzles.h
536 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
537tracks3.i386.o: ./tracks.c ./puzzles.h
538 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
539tree234.i386.o: ./tree234.c ./tree234.h ./puzzles.h
540 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
541twiddle.i386.o: ./twiddle.c ./puzzles.h
542 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
543twiddle3.i386.o: ./twiddle.c ./puzzles.h
544 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
545undead.i386.o: ./undead.c ./puzzles.h
546 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
547undead3.i386.o: ./undead.c ./puzzles.h
548 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
549unequal.i386.o: ./unequal.c ./puzzles.h ./latin.h
550 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
551unequal5.i386.o: ./unequal.c ./puzzles.h ./latin.h
552 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
553unequal2.i386.o: ./unequal.c ./puzzles.h ./latin.h
554 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
555unruly.i386.o: ./unruly.c ./puzzles.h
556 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
557unruly5.i386.o: ./unruly.c ./puzzles.h
558 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
559unruly2.i386.o: ./unruly.c ./puzzles.h
560 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
561untangle.i386.o: ./untangle.c ./puzzles.h ./tree234.h
562 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
563untangl3.i386.o: ./untangle.c ./puzzles.h ./tree234.h
564 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
565version.i386.o: ./version.c ./version.h
566 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
567windows.i386.o: ./windows.c ./puzzles.h ./resource.h
568 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
569windows1.i386.o: ./windows.c ./puzzles.h ./resource.h
570 $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
571
572clean:
573 rm -f *.o *.dmg fifteensolver fifteensolver.i386 fillingsolver fillingsolver.i386 galaxiespicture galaxiespicture.i386 galaxiessolver galaxiessolver.i386 keensolver keensolver.i386 latincheck latincheck.i386 lightupsolver lightupsolver.i386 loopysolver loopysolver.i386 magnetssolver magnetssolver.i386 mapsolver mapsolver.i386 mineobfusc mineobfusc.i386 obfusc obfusc.i386 patternpicture patternpicture.i386 patternsolver patternsolver.i386 pearlbench pearlbench.i386 signpostsolver signpostsolver.i386 singlessolver singlessolver.i386 slantsolver slantsolver.i386 solosolver solosolver.i386 tentssolver tentssolver.i386 towerssolver towerssolver.i386 unequalsolver unequalsolver.i386 unrulysolver unrulysolver.i386
574 rm -rf *.app
diff --git a/apps/plugins/puzzles/src/Makefile.vc b/apps/plugins/puzzles/src/Makefile.vc
new file mode 100644
index 0000000000..45e77a5d8a
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.vc
@@ -0,0 +1,1040 @@
1# Makefile for puzzles under Visual C.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6# If you rename this file to `Makefile', you should change this line,
7# so that the .rsp files still depend on the correct makefile.
8MAKEFILE = Makefile.vc
9
10# C compilation flags
11CFLAGS = /nologo /W3 /O1 /D_WINDOWS /D_WIN32_WINDOWS=0x401 /DWINVER=0x401 /I.
12LFLAGS = /incremental:no /fixed
13
14all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe \
15 fifteensolver.exe filling.exe fillingsolver.exe flip.exe \
16 flood.exe galaxies.exe galaxiespicture.exe \
17 galaxiessolver.exe guess.exe inertia.exe keen.exe \
18 keensolver.exe latincheck.exe lightup.exe lightupsolver.exe \
19 loopy.exe loopysolver.exe magnets.exe magnetssolver.exe \
20 map.exe mapsolver.exe mineobfusc.exe mines.exe netgame.exe \
21 netslide.exe nullgame.exe palisade.exe pattern.exe \
22 patternpicture.exe patternsolver.exe pearl.exe \
23 pearlbench.exe pegs.exe puzzles.exe range.exe rect.exe \
24 samegame.exe signpost.exe signpostsolver.exe singles.exe \
25 singlessolver.exe sixteen.exe slant.exe slantsolver.exe \
26 solo.exe solosolver.exe tents.exe tentssolver.exe towers.exe \
27 towerssolver.exe tracks.exe twiddle.exe undead.exe \
28 unequal.exe unequalsolver.exe unruly.exe unrulysolver.exe \
29 untangle.exe
30
31blackbox.exe: blackbox.obj drawing.obj malloc.obj midend.obj misc.obj \
32 noicon.res printing.obj random.obj version.obj windows.obj \
33 blackbox.rsp
34 link $(LFLAGS) -out:blackbox.exe -map:blackbox.map @blackbox.rsp
35
36bridges.exe: bridges.obj drawing.obj dsf.obj findloop.obj malloc.obj \
37 midend.obj misc.obj noicon.res printing.obj random.obj \
38 version.obj windows.obj bridges.rsp
39 link $(LFLAGS) -out:bridges.exe -map:bridges.map @bridges.rsp
40
41cube.exe: cube.obj drawing.obj malloc.obj midend.obj misc.obj noicon.res \
42 printing.obj random.obj version.obj windows.obj cube.rsp
43 link $(LFLAGS) -out:cube.exe -map:cube.map @cube.rsp
44
45dominosa.exe: dominosa.obj drawing.obj laydomino.obj malloc.obj midend.obj \
46 misc.obj noicon.res printing.obj random.obj version.obj \
47 windows.obj dominosa.rsp
48 link $(LFLAGS) -out:dominosa.exe -map:dominosa.map @dominosa.rsp
49
50fifteen.exe: drawing.obj fifteen.obj malloc.obj midend.obj misc.obj \
51 noicon.res printing.obj random.obj version.obj windows.obj \
52 fifteen.rsp
53 link $(LFLAGS) -out:fifteen.exe -map:fifteen.map @fifteen.rsp
54
55fifteensolver.exe: fifteen2.obj malloc.obj misc.obj nullfe.obj random.obj \
56 fifteensolver.rsp
57 link $(LFLAGS) -out:fifteensolver.exe -map:fifteensolver.map @fifteensolver.rsp
58
59filling.exe: drawing.obj dsf.obj filling.obj malloc.obj midend.obj misc.obj \
60 noicon.res printing.obj random.obj version.obj windows.obj \
61 filling.rsp
62 link $(LFLAGS) -out:filling.exe -map:filling.map @filling.rsp
63
64fillingsolver.exe: dsf.obj filling2.obj malloc.obj misc.obj nullfe.obj \
65 random.obj fillingsolver.rsp
66 link $(LFLAGS) -out:fillingsolver.exe -map:fillingsolver.map @fillingsolver.rsp
67
68flip.exe: drawing.obj flip.obj malloc.obj midend.obj misc.obj noicon.res \
69 printing.obj random.obj tree234.obj version.obj windows.obj \
70 flip.rsp
71 link $(LFLAGS) -out:flip.exe -map:flip.map @flip.rsp
72
73flood.exe: drawing.obj flood.obj malloc.obj midend.obj misc.obj noicon.res \
74 printing.obj random.obj version.obj windows.obj flood.rsp
75 link $(LFLAGS) -out:flood.exe -map:flood.map @flood.rsp
76
77galaxies.exe: drawing.obj dsf.obj galaxies.obj malloc.obj midend.obj \
78 misc.obj noicon.res printing.obj random.obj version.obj \
79 windows.obj galaxies.rsp
80 link $(LFLAGS) -out:galaxies.exe -map:galaxies.map @galaxies.rsp
81
82galaxiespicture.exe: dsf.obj galaxie4.obj malloc.obj misc.obj nullfe.obj \
83 random.obj galaxiespicture.rsp
84 link $(LFLAGS) -out:galaxiespicture.exe -map:galaxiespicture.map @galaxiespicture.rsp
85
86galaxiessolver.exe: dsf.obj galaxie2.obj malloc.obj misc.obj nullfe.obj \
87 random.obj galaxiessolver.rsp
88 link $(LFLAGS) -out:galaxiessolver.exe -map:galaxiessolver.map @galaxiessolver.rsp
89
90guess.exe: drawing.obj guess.obj malloc.obj midend.obj misc.obj noicon.res \
91 printing.obj random.obj version.obj windows.obj guess.rsp
92 link $(LFLAGS) -out:guess.exe -map:guess.map @guess.rsp
93
94inertia.exe: drawing.obj inertia.obj malloc.obj midend.obj misc.obj \
95 noicon.res printing.obj random.obj version.obj windows.obj \
96 inertia.rsp
97 link $(LFLAGS) -out:inertia.exe -map:inertia.map @inertia.rsp
98
99keen.exe: drawing.obj dsf.obj keen.obj latin.obj malloc.obj maxflow.obj \
100 midend.obj misc.obj noicon.res printing.obj random.obj \
101 tree234.obj version.obj windows.obj keen.rsp
102 link $(LFLAGS) -out:keen.exe -map:keen.map @keen.rsp
103
104keensolver.exe: dsf.obj keen2.obj latin6.obj malloc.obj maxflow.obj misc.obj \
105 nullfe.obj random.obj tree234.obj keensolver.rsp
106 link $(LFLAGS) -out:keensolver.exe -map:keensolver.map @keensolver.rsp
107
108latincheck.exe: latin8.obj malloc.obj maxflow.obj misc.obj nullfe.obj \
109 random.obj tree234.obj latincheck.rsp
110 link $(LFLAGS) -out:latincheck.exe -map:latincheck.map @latincheck.rsp
111
112lightup.exe: combi.obj drawing.obj lightup.obj malloc.obj midend.obj \
113 misc.obj noicon.res printing.obj random.obj version.obj \
114 windows.obj lightup.rsp
115 link $(LFLAGS) -out:lightup.exe -map:lightup.map @lightup.rsp
116
117lightupsolver.exe: combi.obj lightup2.obj malloc.obj misc.obj nullfe.obj \
118 random.obj lightupsolver.rsp
119 link $(LFLAGS) -out:lightupsolver.exe -map:lightupsolver.map @lightupsolver.rsp
120
121loopy.exe: drawing.obj dsf.obj grid.obj loopgen.obj loopy.obj malloc.obj \
122 midend.obj misc.obj noicon.res penrose.obj printing.obj \
123 random.obj tree234.obj version.obj windows.obj loopy.rsp
124 link $(LFLAGS) -out:loopy.exe -map:loopy.map @loopy.rsp
125
126loopysolver.exe: dsf.obj grid.obj loopgen.obj loopy2.obj malloc.obj misc.obj \
127 nullfe.obj penrose.obj random.obj tree234.obj \
128 loopysolver.rsp
129 link $(LFLAGS) -out:loopysolver.exe -map:loopysolver.map @loopysolver.rsp
130
131magnets.exe: drawing.obj laydomino.obj magnets.obj malloc.obj midend.obj \
132 misc.obj noicon.res printing.obj random.obj version.obj \
133 windows.obj magnets.rsp
134 link $(LFLAGS) -out:magnets.exe -map:magnets.map @magnets.rsp
135
136magnetssolver.exe: laydomino.obj magnets2.obj malloc.obj misc.obj nullfe.obj \
137 random.obj magnetssolver.rsp
138 link $(LFLAGS) -out:magnetssolver.exe -map:magnetssolver.map @magnetssolver.rsp
139
140map.exe: drawing.obj dsf.obj malloc.obj map.obj midend.obj misc.obj \
141 noicon.res printing.obj random.obj version.obj windows.obj \
142 map.rsp
143 link $(LFLAGS) -out:map.exe -map:map.map @map.rsp
144
145mapsolver.exe: dsf.obj malloc.obj map2.obj misc.obj nullfe.obj random.obj \
146 mapsolver.rsp
147 link $(LFLAGS) -out:mapsolver.exe -map:mapsolver.map @mapsolver.rsp
148
149mineobfusc.exe: malloc.obj mines2.obj misc.obj nullfe.obj random.obj \
150 tree234.obj mineobfusc.rsp
151 link $(LFLAGS) -out:mineobfusc.exe -map:mineobfusc.map @mineobfusc.rsp
152
153mines.exe: drawing.obj malloc.obj midend.obj mines.obj misc.obj noicon.res \
154 printing.obj random.obj tree234.obj version.obj windows.obj \
155 mines.rsp
156 link $(LFLAGS) -out:mines.exe -map:mines.map @mines.rsp
157
158netgame.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \
159 net.obj noicon.res printing.obj random.obj tree234.obj \
160 version.obj windows.obj netgame.rsp
161 link $(LFLAGS) -out:netgame.exe -map:netgame.map @netgame.rsp
162
163netslide.exe: drawing.obj malloc.obj midend.obj misc.obj netslide.obj \
164 noicon.res printing.obj random.obj tree234.obj version.obj \
165 windows.obj netslide.rsp
166 link $(LFLAGS) -out:netslide.exe -map:netslide.map @netslide.rsp
167
168nullgame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
169 nullgame.obj printing.obj random.obj version.obj windows.obj \
170 nullgame.rsp
171 link $(LFLAGS) -out:nullgame.exe -map:nullgame.map @nullgame.rsp
172
173palisade.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \
174 noicon.res palisade.obj printing.obj random.obj version.obj \
175 windows.obj palisade.rsp
176 link $(LFLAGS) -out:palisade.exe -map:palisade.map @palisade.rsp
177
178pattern.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
179 pattern.obj printing.obj random.obj version.obj windows.obj \
180 pattern.rsp
181 link $(LFLAGS) -out:pattern.exe -map:pattern.map @pattern.rsp
182
183patternpicture.exe: malloc.obj misc.obj nullfe.obj pattern4.obj random.obj \
184 patternpicture.rsp
185 link $(LFLAGS) -out:patternpicture.exe -map:patternpicture.map @patternpicture.rsp
186
187patternsolver.exe: malloc.obj misc.obj nullfe.obj pattern2.obj random.obj \
188 patternsolver.rsp
189 link $(LFLAGS) -out:patternsolver.exe -map:patternsolver.map @patternsolver.rsp
190
191pearl.exe: drawing.obj dsf.obj grid.obj loopgen.obj malloc.obj midend.obj \
192 misc.obj pearl.obj penrose.obj printing.obj random.obj \
193 tdq.obj tree234.obj version.obj windows.obj pearl.rsp
194 link $(LFLAGS) -out:pearl.exe -map:pearl.map @pearl.rsp
195
196pearlbench.exe: dsf.obj grid.obj loopgen.obj malloc.obj misc.obj nullfe.obj \
197 pearl2.obj penrose.obj random.obj tdq.obj tree234.obj \
198 pearlbench.rsp
199 link $(LFLAGS) -out:pearlbench.exe -map:pearlbench.map @pearlbench.rsp
200
201pegs.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res pegs.obj \
202 printing.obj random.obj tree234.obj version.obj windows.obj \
203 pegs.rsp
204 link $(LFLAGS) -out:pegs.exe -map:pegs.map @pegs.rsp
205
206puzzles.exe: blackbo3.obj bridges3.obj combi.obj cube3.obj divvy.obj \
207 dominos3.obj drawing.obj dsf.obj fifteen5.obj filling5.obj \
208 findloop.obj flip3.obj flood3.obj galaxie7.obj grid.obj \
209 guess3.obj inertia3.obj keen5.obj latin.obj laydomino.obj \
210 lightup5.obj list.obj loopgen.obj loopy5.obj magnets5.obj \
211 malloc.obj map5.obj maxflow.obj midend.obj mines5.obj \
212 misc.obj net3.obj netslid3.obj noicon.res palisad3.obj \
213 pattern7.obj pearl5.obj pegs3.obj penrose.obj printing.obj \
214 random.obj range3.obj rect3.obj samegam3.obj signpos5.obj \
215 singles5.obj sixteen3.obj slant5.obj solo5.obj tdq.obj \
216 tents5.obj towers5.obj tracks3.obj tree234.obj twiddle3.obj \
217 undead3.obj unequal5.obj unruly5.obj untangl3.obj \
218 version.obj windows1.obj puzzles.rsp
219 link $(LFLAGS) -out:puzzles.exe -map:puzzles.map @puzzles.rsp
220
221range.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \
222 printing.obj random.obj range.obj version.obj windows.obj \
223 range.rsp
224 link $(LFLAGS) -out:range.exe -map:range.map @range.rsp
225
226rect.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res printing.obj \
227 random.obj rect.obj version.obj windows.obj rect.rsp
228 link $(LFLAGS) -out:rect.exe -map:rect.map @rect.rsp
229
230samegame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
231 printing.obj random.obj samegame.obj version.obj windows.obj \
232 samegame.rsp
233 link $(LFLAGS) -out:samegame.exe -map:samegame.map @samegame.rsp
234
235signpost.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \
236 printing.obj random.obj signpost.obj version.obj windows.obj \
237 signpost.rsp
238 link $(LFLAGS) -out:signpost.exe -map:signpost.map @signpost.rsp
239
240signpostsolver.exe: dsf.obj malloc.obj misc.obj nullfe.obj random.obj \
241 signpos2.obj signpostsolver.rsp
242 link $(LFLAGS) -out:signpostsolver.exe -map:signpostsolver.map @signpostsolver.rsp
243
244singles.exe: drawing.obj dsf.obj latin.obj malloc.obj maxflow.obj midend.obj \
245 misc.obj noicon.res printing.obj random.obj singles.obj \
246 tree234.obj version.obj windows.obj singles.rsp
247 link $(LFLAGS) -out:singles.exe -map:singles.map @singles.rsp
248
249singlessolver.exe: dsf.obj latin.obj malloc.obj maxflow.obj misc.obj \
250 nullfe.obj random.obj singles3.obj tree234.obj \
251 singlessolver.rsp
252 link $(LFLAGS) -out:singlessolver.exe -map:singlessolver.map @singlessolver.rsp
253
254sixteen.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
255 printing.obj random.obj sixteen.obj version.obj windows.obj \
256 sixteen.rsp
257 link $(LFLAGS) -out:sixteen.exe -map:sixteen.map @sixteen.rsp
258
259slant.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \
260 noicon.res printing.obj random.obj slant.obj version.obj \
261 windows.obj slant.rsp
262 link $(LFLAGS) -out:slant.exe -map:slant.map @slant.rsp
263
264slantsolver.exe: dsf.obj findloop.obj malloc.obj misc.obj nullfe.obj \
265 random.obj slant2.obj slantsolver.rsp
266 link $(LFLAGS) -out:slantsolver.exe -map:slantsolver.map @slantsolver.rsp
267
268solo.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \
269 noicon.res printing.obj random.obj solo.obj version.obj \
270 windows.obj solo.rsp
271 link $(LFLAGS) -out:solo.exe -map:solo.map @solo.rsp
272
273solosolver.exe: divvy.obj dsf.obj malloc.obj misc.obj nullfe.obj random.obj \
274 solo2.obj solosolver.rsp
275 link $(LFLAGS) -out:solosolver.exe -map:solosolver.map @solosolver.rsp
276
277tents.exe: drawing.obj dsf.obj malloc.obj maxflow.obj midend.obj misc.obj \
278 noicon.res printing.obj random.obj tents.obj version.obj \
279 windows.obj tents.rsp
280 link $(LFLAGS) -out:tents.exe -map:tents.map @tents.rsp
281
282tentssolver.exe: dsf.obj malloc.obj maxflow.obj misc.obj nullfe.obj \
283 random.obj tents3.obj tentssolver.rsp
284 link $(LFLAGS) -out:tentssolver.exe -map:tentssolver.map @tentssolver.rsp
285
286towers.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj misc.obj \
287 noicon.res printing.obj random.obj towers.obj tree234.obj \
288 version.obj windows.obj towers.rsp
289 link $(LFLAGS) -out:towers.exe -map:towers.map @towers.rsp
290
291towerssolver.exe: latin6.obj malloc.obj maxflow.obj misc.obj nullfe.obj \
292 random.obj towers2.obj tree234.obj towerssolver.rsp
293 link $(LFLAGS) -out:towerssolver.exe -map:towerssolver.map @towerssolver.rsp
294
295tracks.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \
296 noicon.res printing.obj random.obj tracks.obj version.obj \
297 windows.obj tracks.rsp
298 link $(LFLAGS) -out:tracks.exe -map:tracks.map @tracks.rsp
299
300twiddle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
301 printing.obj random.obj twiddle.obj version.obj windows.obj \
302 twiddle.rsp
303 link $(LFLAGS) -out:twiddle.exe -map:twiddle.map @twiddle.rsp
304
305undead.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
306 printing.obj random.obj undead.obj version.obj windows.obj \
307 undead.rsp
308 link $(LFLAGS) -out:undead.exe -map:undead.map @undead.rsp
309
310unequal.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj \
311 misc.obj noicon.res printing.obj random.obj tree234.obj \
312 unequal.obj version.obj windows.obj unequal.rsp
313 link $(LFLAGS) -out:unequal.exe -map:unequal.map @unequal.rsp
314
315unequalsolver.exe: latin6.obj malloc.obj maxflow.obj misc.obj nullfe.obj \
316 random.obj tree234.obj unequal2.obj unequalsolver.rsp
317 link $(LFLAGS) -out:unequalsolver.exe -map:unequalsolver.map @unequalsolver.rsp
318
319unruly.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
320 printing.obj random.obj unruly.obj version.obj windows.obj \
321 unruly.rsp
322 link $(LFLAGS) -out:unruly.exe -map:unruly.map @unruly.rsp
323
324unrulysolver.exe: malloc.obj misc.obj nullfe.obj random.obj unruly2.obj \
325 unrulysolver.rsp
326 link $(LFLAGS) -out:unrulysolver.exe -map:unrulysolver.map @unrulysolver.rsp
327
328untangle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
329 printing.obj random.obj tree234.obj untangle.obj version.obj \
330 windows.obj untangle.rsp
331 link $(LFLAGS) -out:untangle.exe -map:untangle.map @untangle.rsp
332
333blackbox.rsp: $(MAKEFILE)
334 echo /nologo /subsystem:windows > blackbox.rsp
335 echo blackbox.obj comctl32.lib comdlg32.lib >> blackbox.rsp
336 echo drawing.obj gdi32.lib malloc.obj midend.obj >> blackbox.rsp
337 echo misc.obj noicon.res printing.obj random.obj >> blackbox.rsp
338 echo user32.lib version.obj windows.obj winspool.lib >> blackbox.rsp
339
340bridges.rsp: $(MAKEFILE)
341 echo /nologo /subsystem:windows > bridges.rsp
342 echo bridges.obj comctl32.lib comdlg32.lib drawing.obj >> bridges.rsp
343 echo dsf.obj findloop.obj gdi32.lib malloc.obj >> bridges.rsp
344 echo midend.obj misc.obj noicon.res printing.obj >> bridges.rsp
345 echo random.obj user32.lib version.obj windows.obj >> bridges.rsp
346 echo winspool.lib >> bridges.rsp
347
348cube.rsp: $(MAKEFILE)
349 echo /nologo /subsystem:windows > cube.rsp
350 echo comctl32.lib comdlg32.lib cube.obj drawing.obj >> cube.rsp
351 echo gdi32.lib malloc.obj midend.obj misc.obj >> cube.rsp
352 echo noicon.res printing.obj random.obj user32.lib >> cube.rsp
353 echo version.obj windows.obj winspool.lib >> cube.rsp
354
355dominosa.rsp: $(MAKEFILE)
356 echo /nologo /subsystem:windows > dominosa.rsp
357 echo comctl32.lib comdlg32.lib dominosa.obj >> dominosa.rsp
358 echo drawing.obj gdi32.lib laydomino.obj malloc.obj >> dominosa.rsp
359 echo midend.obj misc.obj noicon.res printing.obj >> dominosa.rsp
360 echo random.obj user32.lib version.obj windows.obj >> dominosa.rsp
361 echo winspool.lib >> dominosa.rsp
362
363fifteen.rsp: $(MAKEFILE)
364 echo /nologo /subsystem:windows > fifteen.rsp
365 echo comctl32.lib comdlg32.lib drawing.obj fifteen.obj >> fifteen.rsp
366 echo gdi32.lib malloc.obj midend.obj misc.obj >> fifteen.rsp
367 echo noicon.res printing.obj random.obj user32.lib >> fifteen.rsp
368 echo version.obj windows.obj winspool.lib >> fifteen.rsp
369
370fifteensolver.rsp: $(MAKEFILE)
371 echo /nologo /subsystem:console > fifteensolver.rsp
372 echo fifteen2.obj malloc.obj misc.obj nullfe.obj >> fifteensolver.rsp
373 echo random.obj >> fifteensolver.rsp
374
375filling.rsp: $(MAKEFILE)
376 echo /nologo /subsystem:windows > filling.rsp
377 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> filling.rsp
378 echo filling.obj gdi32.lib malloc.obj midend.obj >> filling.rsp
379 echo misc.obj noicon.res printing.obj random.obj >> filling.rsp
380 echo user32.lib version.obj windows.obj winspool.lib >> filling.rsp
381
382fillingsolver.rsp: $(MAKEFILE)
383 echo /nologo /subsystem:console > fillingsolver.rsp
384 echo dsf.obj filling2.obj malloc.obj misc.obj >> fillingsolver.rsp
385 echo nullfe.obj random.obj >> fillingsolver.rsp
386
387flip.rsp: $(MAKEFILE)
388 echo /nologo /subsystem:windows > flip.rsp
389 echo comctl32.lib comdlg32.lib drawing.obj flip.obj >> flip.rsp
390 echo gdi32.lib malloc.obj midend.obj misc.obj >> flip.rsp
391 echo noicon.res printing.obj random.obj tree234.obj >> flip.rsp
392 echo user32.lib version.obj windows.obj winspool.lib >> flip.rsp
393
394flood.rsp: $(MAKEFILE)
395 echo /nologo /subsystem:windows > flood.rsp
396 echo comctl32.lib comdlg32.lib drawing.obj flood.obj >> flood.rsp
397 echo gdi32.lib malloc.obj midend.obj misc.obj >> flood.rsp
398 echo noicon.res printing.obj random.obj user32.lib >> flood.rsp
399 echo version.obj windows.obj winspool.lib >> flood.rsp
400
401galaxies.rsp: $(MAKEFILE)
402 echo /nologo /subsystem:windows > galaxies.rsp
403 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> galaxies.rsp
404 echo galaxies.obj gdi32.lib malloc.obj midend.obj >> galaxies.rsp
405 echo misc.obj noicon.res printing.obj random.obj >> galaxies.rsp
406 echo user32.lib version.obj windows.obj winspool.lib >> galaxies.rsp
407
408galaxiespicture.rsp: $(MAKEFILE)
409 echo /nologo /subsystem:console > galaxiespicture.rsp
410 echo dsf.obj galaxie4.obj malloc.obj misc.obj >> galaxiespicture.rsp
411 echo nullfe.obj random.obj >> galaxiespicture.rsp
412
413galaxiessolver.rsp: $(MAKEFILE)
414 echo /nologo /subsystem:console > galaxiessolver.rsp
415 echo dsf.obj galaxie2.obj malloc.obj misc.obj >> galaxiessolver.rsp
416 echo nullfe.obj random.obj >> galaxiessolver.rsp
417
418guess.rsp: $(MAKEFILE)
419 echo /nologo /subsystem:windows > guess.rsp
420 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> guess.rsp
421 echo guess.obj malloc.obj midend.obj misc.obj >> guess.rsp
422 echo noicon.res printing.obj random.obj user32.lib >> guess.rsp
423 echo version.obj windows.obj winspool.lib >> guess.rsp
424
425inertia.rsp: $(MAKEFILE)
426 echo /nologo /subsystem:windows > inertia.rsp
427 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> inertia.rsp
428 echo inertia.obj malloc.obj midend.obj misc.obj >> inertia.rsp
429 echo noicon.res printing.obj random.obj user32.lib >> inertia.rsp
430 echo version.obj windows.obj winspool.lib >> inertia.rsp
431
432keen.rsp: $(MAKEFILE)
433 echo /nologo /subsystem:windows > keen.rsp
434 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> keen.rsp
435 echo gdi32.lib keen.obj latin.obj malloc.obj >> keen.rsp
436 echo maxflow.obj midend.obj misc.obj noicon.res >> keen.rsp
437 echo printing.obj random.obj tree234.obj user32.lib >> keen.rsp
438 echo version.obj windows.obj winspool.lib >> keen.rsp
439
440keensolver.rsp: $(MAKEFILE)
441 echo /nologo /subsystem:console > keensolver.rsp
442 echo dsf.obj keen2.obj latin6.obj malloc.obj >> keensolver.rsp
443 echo maxflow.obj misc.obj nullfe.obj random.obj >> keensolver.rsp
444 echo tree234.obj >> keensolver.rsp
445
446latincheck.rsp: $(MAKEFILE)
447 echo /nologo /subsystem:console > latincheck.rsp
448 echo latin8.obj malloc.obj maxflow.obj misc.obj >> latincheck.rsp
449 echo nullfe.obj random.obj tree234.obj >> latincheck.rsp
450
451lightup.rsp: $(MAKEFILE)
452 echo /nologo /subsystem:windows > lightup.rsp
453 echo combi.obj comctl32.lib comdlg32.lib drawing.obj >> lightup.rsp
454 echo gdi32.lib lightup.obj malloc.obj midend.obj >> lightup.rsp
455 echo misc.obj noicon.res printing.obj random.obj >> lightup.rsp
456 echo user32.lib version.obj windows.obj winspool.lib >> lightup.rsp
457
458lightupsolver.rsp: $(MAKEFILE)
459 echo /nologo /subsystem:console > lightupsolver.rsp
460 echo combi.obj lightup2.obj malloc.obj misc.obj >> lightupsolver.rsp
461 echo nullfe.obj random.obj >> lightupsolver.rsp
462
463loopy.rsp: $(MAKEFILE)
464 echo /nologo /subsystem:windows > loopy.rsp
465 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> loopy.rsp
466 echo gdi32.lib grid.obj loopgen.obj loopy.obj >> loopy.rsp
467 echo malloc.obj midend.obj misc.obj noicon.res >> loopy.rsp
468 echo penrose.obj printing.obj random.obj tree234.obj >> loopy.rsp
469 echo user32.lib version.obj windows.obj winspool.lib >> loopy.rsp
470
471loopysolver.rsp: $(MAKEFILE)
472 echo /nologo /subsystem:console > loopysolver.rsp
473 echo dsf.obj grid.obj loopgen.obj loopy2.obj >> loopysolver.rsp
474 echo malloc.obj misc.obj nullfe.obj penrose.obj >> loopysolver.rsp
475 echo random.obj tree234.obj >> loopysolver.rsp
476
477magnets.rsp: $(MAKEFILE)
478 echo /nologo /subsystem:windows > magnets.rsp
479 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> magnets.rsp
480 echo laydomino.obj magnets.obj malloc.obj midend.obj >> magnets.rsp
481 echo misc.obj noicon.res printing.obj random.obj >> magnets.rsp
482 echo user32.lib version.obj windows.obj winspool.lib >> magnets.rsp
483
484magnetssolver.rsp: $(MAKEFILE)
485 echo /nologo /subsystem:console > magnetssolver.rsp
486 echo laydomino.obj magnets2.obj malloc.obj misc.obj >> magnetssolver.rsp
487 echo nullfe.obj random.obj >> magnetssolver.rsp
488
489map.rsp: $(MAKEFILE)
490 echo /nologo /subsystem:windows > map.rsp
491 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> map.rsp
492 echo gdi32.lib malloc.obj map.obj midend.obj misc.obj >> map.rsp
493 echo noicon.res printing.obj random.obj user32.lib >> map.rsp
494 echo version.obj windows.obj winspool.lib >> map.rsp
495
496mapsolver.rsp: $(MAKEFILE)
497 echo /nologo /subsystem:console > mapsolver.rsp
498 echo dsf.obj malloc.obj map2.obj misc.obj nullfe.obj >> mapsolver.rsp
499 echo random.obj >> mapsolver.rsp
500
501mineobfusc.rsp: $(MAKEFILE)
502 echo /nologo /subsystem:console > mineobfusc.rsp
503 echo malloc.obj mines2.obj misc.obj nullfe.obj >> mineobfusc.rsp
504 echo random.obj tree234.obj >> mineobfusc.rsp
505
506mines.rsp: $(MAKEFILE)
507 echo /nologo /subsystem:windows > mines.rsp
508 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> mines.rsp
509 echo malloc.obj midend.obj mines.obj misc.obj >> mines.rsp
510 echo noicon.res printing.obj random.obj tree234.obj >> mines.rsp
511 echo user32.lib version.obj windows.obj winspool.lib >> mines.rsp
512
513netgame.rsp: $(MAKEFILE)
514 echo /nologo /subsystem:windows > netgame.rsp
515 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> netgame.rsp
516 echo findloop.obj gdi32.lib malloc.obj midend.obj >> netgame.rsp
517 echo misc.obj net.obj noicon.res printing.obj >> netgame.rsp
518 echo random.obj tree234.obj user32.lib version.obj >> netgame.rsp
519 echo windows.obj winspool.lib >> netgame.rsp
520
521netslide.rsp: $(MAKEFILE)
522 echo /nologo /subsystem:windows > netslide.rsp
523 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> netslide.rsp
524 echo malloc.obj midend.obj misc.obj netslide.obj >> netslide.rsp
525 echo noicon.res printing.obj random.obj tree234.obj >> netslide.rsp
526 echo user32.lib version.obj windows.obj winspool.lib >> netslide.rsp
527
528nullgame.rsp: $(MAKEFILE)
529 echo /nologo /subsystem:windows > nullgame.rsp
530 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> nullgame.rsp
531 echo malloc.obj midend.obj misc.obj noicon.res >> nullgame.rsp
532 echo nullgame.obj printing.obj random.obj user32.lib >> nullgame.rsp
533 echo version.obj windows.obj winspool.lib >> nullgame.rsp
534
535palisade.rsp: $(MAKEFILE)
536 echo /nologo /subsystem:windows > palisade.rsp
537 echo comctl32.lib comdlg32.lib divvy.obj drawing.obj >> palisade.rsp
538 echo dsf.obj gdi32.lib malloc.obj midend.obj misc.obj >> palisade.rsp
539 echo noicon.res palisade.obj printing.obj random.obj >> palisade.rsp
540 echo user32.lib version.obj windows.obj winspool.lib >> palisade.rsp
541
542pattern.rsp: $(MAKEFILE)
543 echo /nologo /subsystem:windows > pattern.rsp
544 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> pattern.rsp
545 echo malloc.obj midend.obj misc.obj noicon.res >> pattern.rsp
546 echo pattern.obj printing.obj random.obj user32.lib >> pattern.rsp
547 echo version.obj windows.obj winspool.lib >> pattern.rsp
548
549patternpicture.rsp: $(MAKEFILE)
550 echo /nologo /subsystem:console > patternpicture.rsp
551 echo malloc.obj misc.obj nullfe.obj pattern4.obj >> patternpicture.rsp
552 echo random.obj >> patternpicture.rsp
553
554patternsolver.rsp: $(MAKEFILE)
555 echo /nologo /subsystem:console > patternsolver.rsp
556 echo malloc.obj misc.obj nullfe.obj pattern2.obj >> patternsolver.rsp
557 echo random.obj >> patternsolver.rsp
558
559pearl.rsp: $(MAKEFILE)
560 echo /nologo /subsystem:windows > pearl.rsp
561 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> pearl.rsp
562 echo gdi32.lib grid.obj loopgen.obj malloc.obj >> pearl.rsp
563 echo midend.obj misc.obj pearl.obj penrose.obj >> pearl.rsp
564 echo printing.obj random.obj tdq.obj tree234.obj >> pearl.rsp
565 echo user32.lib version.obj windows.obj winspool.lib >> pearl.rsp
566
567pearlbench.rsp: $(MAKEFILE)
568 echo /nologo /subsystem:console > pearlbench.rsp
569 echo dsf.obj grid.obj loopgen.obj malloc.obj misc.obj >> pearlbench.rsp
570 echo nullfe.obj pearl2.obj penrose.obj random.obj >> pearlbench.rsp
571 echo tdq.obj tree234.obj >> pearlbench.rsp
572
573pegs.rsp: $(MAKEFILE)
574 echo /nologo /subsystem:windows > pegs.rsp
575 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> pegs.rsp
576 echo malloc.obj midend.obj misc.obj noicon.res >> pegs.rsp
577 echo pegs.obj printing.obj random.obj tree234.obj >> pegs.rsp
578 echo user32.lib version.obj windows.obj winspool.lib >> pegs.rsp
579
580puzzles.rsp: $(MAKEFILE)
581 echo /nologo /subsystem:windows > puzzles.rsp
582 echo blackbo3.obj bridges3.obj combi.obj comctl32.lib >> puzzles.rsp
583 echo comdlg32.lib cube3.obj divvy.obj dominos3.obj >> puzzles.rsp
584 echo drawing.obj dsf.obj fifteen5.obj filling5.obj >> puzzles.rsp
585 echo findloop.obj flip3.obj flood3.obj galaxie7.obj >> puzzles.rsp
586 echo gdi32.lib grid.obj guess3.obj inertia3.obj >> puzzles.rsp
587 echo keen5.obj latin.obj laydomino.obj lightup5.obj >> puzzles.rsp
588 echo list.obj loopgen.obj loopy5.obj magnets5.obj >> puzzles.rsp
589 echo malloc.obj map5.obj maxflow.obj midend.obj >> puzzles.rsp
590 echo mines5.obj misc.obj net3.obj netslid3.obj >> puzzles.rsp
591 echo noicon.res palisad3.obj pattern7.obj pearl5.obj >> puzzles.rsp
592 echo pegs3.obj penrose.obj printing.obj random.obj >> puzzles.rsp
593 echo range3.obj rect3.obj samegam3.obj signpos5.obj >> puzzles.rsp
594 echo singles5.obj sixteen3.obj slant5.obj solo5.obj >> puzzles.rsp
595 echo tdq.obj tents5.obj towers5.obj tracks3.obj >> puzzles.rsp
596 echo tree234.obj twiddle3.obj undead3.obj unequal5.obj >> puzzles.rsp
597 echo unruly5.obj untangl3.obj user32.lib version.obj >> puzzles.rsp
598 echo windows1.obj winspool.lib >> puzzles.rsp
599
600range.rsp: $(MAKEFILE)
601 echo /nologo /subsystem:windows > range.rsp
602 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> range.rsp
603 echo gdi32.lib malloc.obj midend.obj misc.obj >> range.rsp
604 echo noicon.res printing.obj random.obj range.obj >> range.rsp
605 echo user32.lib version.obj windows.obj winspool.lib >> range.rsp
606
607rect.rsp: $(MAKEFILE)
608 echo /nologo /subsystem:windows > rect.rsp
609 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> rect.rsp
610 echo malloc.obj midend.obj misc.obj noicon.res >> rect.rsp
611 echo printing.obj random.obj rect.obj user32.lib >> rect.rsp
612 echo version.obj windows.obj winspool.lib >> rect.rsp
613
614samegame.rsp: $(MAKEFILE)
615 echo /nologo /subsystem:windows > samegame.rsp
616 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> samegame.rsp
617 echo malloc.obj midend.obj misc.obj noicon.res >> samegame.rsp
618 echo printing.obj random.obj samegame.obj user32.lib >> samegame.rsp
619 echo version.obj windows.obj winspool.lib >> samegame.rsp
620
621signpost.rsp: $(MAKEFILE)
622 echo /nologo /subsystem:windows > signpost.rsp
623 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> signpost.rsp
624 echo gdi32.lib malloc.obj midend.obj misc.obj >> signpost.rsp
625 echo noicon.res printing.obj random.obj signpost.obj >> signpost.rsp
626 echo user32.lib version.obj windows.obj winspool.lib >> signpost.rsp
627
628signpostsolver.rsp: $(MAKEFILE)
629 echo /nologo /subsystem:console > signpostsolver.rsp
630 echo dsf.obj malloc.obj misc.obj nullfe.obj random.obj >> signpostsolver.rsp
631 echo signpos2.obj >> signpostsolver.rsp
632
633singles.rsp: $(MAKEFILE)
634 echo /nologo /subsystem:windows > singles.rsp
635 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> singles.rsp
636 echo gdi32.lib latin.obj malloc.obj maxflow.obj >> singles.rsp
637 echo midend.obj misc.obj noicon.res printing.obj >> singles.rsp
638 echo random.obj singles.obj tree234.obj user32.lib >> singles.rsp
639 echo version.obj windows.obj winspool.lib >> singles.rsp
640
641singlessolver.rsp: $(MAKEFILE)
642 echo /nologo /subsystem:console > singlessolver.rsp
643 echo dsf.obj latin.obj malloc.obj maxflow.obj misc.obj >> singlessolver.rsp
644 echo nullfe.obj random.obj singles3.obj tree234.obj >> singlessolver.rsp
645
646sixteen.rsp: $(MAKEFILE)
647 echo /nologo /subsystem:windows > sixteen.rsp
648 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> sixteen.rsp
649 echo malloc.obj midend.obj misc.obj noicon.res >> sixteen.rsp
650 echo printing.obj random.obj sixteen.obj user32.lib >> sixteen.rsp
651 echo version.obj windows.obj winspool.lib >> sixteen.rsp
652
653slant.rsp: $(MAKEFILE)
654 echo /nologo /subsystem:windows > slant.rsp
655 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> slant.rsp
656 echo findloop.obj gdi32.lib malloc.obj midend.obj >> slant.rsp
657 echo misc.obj noicon.res printing.obj random.obj >> slant.rsp
658 echo slant.obj user32.lib version.obj windows.obj >> slant.rsp
659 echo winspool.lib >> slant.rsp
660
661slantsolver.rsp: $(MAKEFILE)
662 echo /nologo /subsystem:console > slantsolver.rsp
663 echo dsf.obj findloop.obj malloc.obj misc.obj >> slantsolver.rsp
664 echo nullfe.obj random.obj slant2.obj >> slantsolver.rsp
665
666solo.rsp: $(MAKEFILE)
667 echo /nologo /subsystem:windows > solo.rsp
668 echo comctl32.lib comdlg32.lib divvy.obj drawing.obj >> solo.rsp
669 echo dsf.obj gdi32.lib malloc.obj midend.obj misc.obj >> solo.rsp
670 echo noicon.res printing.obj random.obj solo.obj >> solo.rsp
671 echo user32.lib version.obj windows.obj winspool.lib >> solo.rsp
672
673solosolver.rsp: $(MAKEFILE)
674 echo /nologo /subsystem:console > solosolver.rsp
675 echo divvy.obj dsf.obj malloc.obj misc.obj nullfe.obj >> solosolver.rsp
676 echo random.obj solo2.obj >> solosolver.rsp
677
678tents.rsp: $(MAKEFILE)
679 echo /nologo /subsystem:windows > tents.rsp
680 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> tents.rsp
681 echo gdi32.lib malloc.obj maxflow.obj midend.obj >> tents.rsp
682 echo misc.obj noicon.res printing.obj random.obj >> tents.rsp
683 echo tents.obj user32.lib version.obj windows.obj >> tents.rsp
684 echo winspool.lib >> tents.rsp
685
686tentssolver.rsp: $(MAKEFILE)
687 echo /nologo /subsystem:console > tentssolver.rsp
688 echo dsf.obj malloc.obj maxflow.obj misc.obj >> tentssolver.rsp
689 echo nullfe.obj random.obj tents3.obj >> tentssolver.rsp
690
691towers.rsp: $(MAKEFILE)
692 echo /nologo /subsystem:windows > towers.rsp
693 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> towers.rsp
694 echo latin.obj malloc.obj maxflow.obj midend.obj >> towers.rsp
695 echo misc.obj noicon.res printing.obj random.obj >> towers.rsp
696 echo towers.obj tree234.obj user32.lib version.obj >> towers.rsp
697 echo windows.obj winspool.lib >> towers.rsp
698
699towerssolver.rsp: $(MAKEFILE)
700 echo /nologo /subsystem:console > towerssolver.rsp
701 echo latin6.obj malloc.obj maxflow.obj misc.obj >> towerssolver.rsp
702 echo nullfe.obj random.obj towers2.obj tree234.obj >> towerssolver.rsp
703
704tracks.rsp: $(MAKEFILE)
705 echo /nologo /subsystem:windows > tracks.rsp
706 echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> tracks.rsp
707 echo findloop.obj gdi32.lib malloc.obj midend.obj >> tracks.rsp
708 echo misc.obj noicon.res printing.obj random.obj >> tracks.rsp
709 echo tracks.obj user32.lib version.obj windows.obj >> tracks.rsp
710 echo winspool.lib >> tracks.rsp
711
712twiddle.rsp: $(MAKEFILE)
713 echo /nologo /subsystem:windows > twiddle.rsp
714 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> twiddle.rsp
715 echo malloc.obj midend.obj misc.obj noicon.res >> twiddle.rsp
716 echo printing.obj random.obj twiddle.obj user32.lib >> twiddle.rsp
717 echo version.obj windows.obj winspool.lib >> twiddle.rsp
718
719undead.rsp: $(MAKEFILE)
720 echo /nologo /subsystem:windows > undead.rsp
721 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> undead.rsp
722 echo malloc.obj midend.obj misc.obj noicon.res >> undead.rsp
723 echo printing.obj random.obj undead.obj user32.lib >> undead.rsp
724 echo version.obj windows.obj winspool.lib >> undead.rsp
725
726unequal.rsp: $(MAKEFILE)
727 echo /nologo /subsystem:windows > unequal.rsp
728 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> unequal.rsp
729 echo latin.obj malloc.obj maxflow.obj midend.obj >> unequal.rsp
730 echo misc.obj noicon.res printing.obj random.obj >> unequal.rsp
731 echo tree234.obj unequal.obj user32.lib version.obj >> unequal.rsp
732 echo windows.obj winspool.lib >> unequal.rsp
733
734unequalsolver.rsp: $(MAKEFILE)
735 echo /nologo /subsystem:console > unequalsolver.rsp
736 echo latin6.obj malloc.obj maxflow.obj misc.obj >> unequalsolver.rsp
737 echo nullfe.obj random.obj tree234.obj unequal2.obj >> unequalsolver.rsp
738
739unruly.rsp: $(MAKEFILE)
740 echo /nologo /subsystem:windows > unruly.rsp
741 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> unruly.rsp
742 echo malloc.obj midend.obj misc.obj noicon.res >> unruly.rsp
743 echo printing.obj random.obj unruly.obj user32.lib >> unruly.rsp
744 echo version.obj windows.obj winspool.lib >> unruly.rsp
745
746unrulysolver.rsp: $(MAKEFILE)
747 echo /nologo /subsystem:console > unrulysolver.rsp
748 echo malloc.obj misc.obj nullfe.obj random.obj >> unrulysolver.rsp
749 echo unruly2.obj >> unrulysolver.rsp
750
751untangle.rsp: $(MAKEFILE)
752 echo /nologo /subsystem:windows > untangle.rsp
753 echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> untangle.rsp
754 echo malloc.obj midend.obj misc.obj noicon.res >> untangle.rsp
755 echo printing.obj random.obj tree234.obj untangle.obj >> untangle.rsp
756 echo user32.lib version.obj windows.obj winspool.lib >> untangle.rsp
757
758blackbox.obj: .\blackbox.c .\puzzles.h
759 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\blackbox.c /Foblackbox.obj
760blackbo3.obj: .\blackbox.c .\puzzles.h
761 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\blackbox.c /Foblackbo3.obj
762bridges.obj: .\bridges.c .\puzzles.h
763 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\bridges.c /Fobridges.obj
764bridges3.obj: .\bridges.c .\puzzles.h
765 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\bridges.c /Fobridges3.obj
766combi.obj: .\combi.c .\puzzles.h
767 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\combi.c /Focombi.obj
768cube.obj: .\cube.c .\puzzles.h
769 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\cube.c /Focube.obj
770cube3.obj: .\cube.c .\puzzles.h
771 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\cube.c /Focube3.obj
772divvy.obj: .\divvy.c .\puzzles.h
773 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\divvy.c /Fodivvy.obj
774dominosa.obj: .\dominosa.c .\puzzles.h
775 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dominosa.c /Fodominosa.obj
776dominos3.obj: .\dominosa.c .\puzzles.h
777 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\dominosa.c /Fodominos3.obj
778drawing.obj: .\drawing.c .\puzzles.h
779 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\drawing.c /Fodrawing.obj
780dsf.obj: .\dsf.c .\puzzles.h
781 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dsf.c /Fodsf.obj
782fifteen.obj: .\fifteen.c .\puzzles.h
783 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\fifteen.c /Fofifteen.obj
784fifteen5.obj: .\fifteen.c .\puzzles.h
785 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen5.obj
786fifteen2.obj: .\fifteen.c .\puzzles.h
787 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\fifteen.c /Fofifteen2.obj
788filling.obj: .\filling.c .\puzzles.h
789 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\filling.c /Fofilling.obj
790filling5.obj: .\filling.c .\puzzles.h
791 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\filling.c /Fofilling5.obj
792filling2.obj: .\filling.c .\puzzles.h
793 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\filling.c /Fofilling2.obj
794findloop.obj: .\findloop.c .\puzzles.h
795 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\findloop.c /Fofindloop.obj
796flip.obj: .\flip.c .\puzzles.h .\tree234.h
797 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flip.c /Foflip.obj
798flip3.obj: .\flip.c .\puzzles.h .\tree234.h
799 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flip.c /Foflip3.obj
800flood.obj: .\flood.c .\puzzles.h
801 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flood.c /Foflood.obj
802flood3.obj: .\flood.c .\puzzles.h
803 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flood.c /Foflood3.obj
804galaxies.obj: .\galaxies.c .\puzzles.h
805 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\galaxies.c /Fogalaxies.obj
806galaxie7.obj: .\galaxies.c .\puzzles.h
807 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\galaxies.c /Fogalaxie7.obj
808galaxie4.obj: .\galaxies.c .\puzzles.h
809 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\galaxies.c /Fogalaxie4.obj
810galaxie2.obj: .\galaxies.c .\puzzles.h
811 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\galaxies.c /Fogalaxie2.obj
812grid.obj: .\grid.c .\puzzles.h .\tree234.h .\grid.h .\penrose.h
813 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\grid.c /Fogrid.obj
814gtk.obj: .\gtk.c .\puzzles.h
815 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\gtk.c /Fogtk.obj
816guess.obj: .\guess.c .\puzzles.h
817 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\guess.c /Foguess.obj
818guess3.obj: .\guess.c .\puzzles.h
819 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\guess.c /Foguess3.obj
820inertia.obj: .\inertia.c .\puzzles.h
821 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\inertia.c /Foinertia.obj
822inertia3.obj: .\inertia.c .\puzzles.h
823 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\inertia.c /Foinertia3.obj
824keen.obj: .\keen.c .\puzzles.h .\latin.h
825 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\keen.c /Fokeen.obj
826keen5.obj: .\keen.c .\puzzles.h .\latin.h
827 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\keen.c /Fokeen5.obj
828keen2.obj: .\keen.c .\puzzles.h .\latin.h
829 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\keen.c /Fokeen2.obj
830latin.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h
831 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\latin.c /Folatin.obj
832latin8.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h
833 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_LATIN_TEST /c .\latin.c /Folatin8.obj
834latin6.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h
835 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\latin.c /Folatin6.obj
836laydomino.obj: .\laydomino.c .\puzzles.h
837 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\laydomino.c /Folaydomino.obj
838lightup.obj: .\lightup.c .\puzzles.h
839 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\lightup.c /Folightup.obj
840lightup5.obj: .\lightup.c .\puzzles.h
841 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\lightup.c /Folightup5.obj
842lightup2.obj: .\lightup.c .\puzzles.h
843 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\lightup.c /Folightup2.obj
844list.obj: .\list.c .\puzzles.h
845 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\list.c /Folist.obj
846loopgen.obj: .\loopgen.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
847 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopgen.c /Foloopgen.obj
848loopy.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
849 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopy.c /Foloopy.obj
850loopy5.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
851 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\loopy.c /Foloopy5.obj
852loopy2.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
853 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\loopy.c /Foloopy2.obj
854magnets.obj: .\magnets.c .\puzzles.h
855 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\magnets.c /Fomagnets.obj
856magnets5.obj: .\magnets.c .\puzzles.h
857 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\magnets.c /Fomagnets5.obj
858magnets2.obj: .\magnets.c .\puzzles.h
859 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\magnets.c /Fomagnets2.obj
860malloc.obj: .\malloc.c .\puzzles.h
861 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\malloc.c /Fomalloc.obj
862map.obj: .\map.c .\puzzles.h
863 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\map.c /Fomap.obj
864map5.obj: .\map.c .\puzzles.h
865 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\map.c /Fomap5.obj
866map2.obj: .\map.c .\puzzles.h
867 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\map.c /Fomap2.obj
868maxflow.obj: .\maxflow.c .\maxflow.h .\puzzles.h
869 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\maxflow.c /Fomaxflow.obj
870midend.obj: .\midend.c .\puzzles.h
871 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\midend.c /Fomidend.obj
872mines.obj: .\mines.c .\tree234.h .\puzzles.h
873 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\mines.c /Fomines.obj
874mines5.obj: .\mines.c .\tree234.h .\puzzles.h
875 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\mines.c /Fomines5.obj
876mines2.obj: .\mines.c .\tree234.h .\puzzles.h
877 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_OBFUSCATOR /c .\mines.c /Fomines2.obj
878misc.obj: .\misc.c .\puzzles.h
879 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\misc.c /Fomisc.obj
880net.obj: .\net.c .\puzzles.h .\tree234.h
881 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\net.c /Fonet.obj
882net3.obj: .\net.c .\puzzles.h .\tree234.h
883 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\net.c /Fonet3.obj
884netslide.obj: .\netslide.c .\puzzles.h .\tree234.h
885 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\netslide.c /Fonetslide.obj
886netslid3.obj: .\netslide.c .\puzzles.h .\tree234.h
887 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\netslide.c /Fonetslid3.obj
888no-icon.obj: .\no-icon.c
889 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\no-icon.c /Fono-icon.obj
890noicon.res: .\noicon.rc .\puzzles.rc2 .\resource.h
891 rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -fonoicon.res .\noicon.rc
892nullfe.obj: .\nullfe.c .\puzzles.h
893 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullfe.c /Fonullfe.obj
894nullgame.obj: .\nullgame.c .\puzzles.h
895 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullgame.c /Fonullgame.obj
896obfusc.obj: .\obfusc.c .\puzzles.h
897 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\obfusc.c /Foobfusc.obj
898osx.obj: .\osx.m .\puzzles.h
899 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\osx.m /Foosx.obj
900palisade.obj: .\palisade.c .\puzzles.h
901 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\palisade.c /Fopalisade.obj
902palisad3.obj: .\palisade.c .\puzzles.h
903 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\palisade.c /Fopalisad3.obj
904pattern.obj: .\pattern.c .\puzzles.h
905 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pattern.c /Fopattern.obj
906pattern7.obj: .\pattern.c .\puzzles.h
907 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern7.obj
908pattern4.obj: .\pattern.c .\puzzles.h
909 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\pattern.c /Fopattern4.obj
910pattern2.obj: .\pattern.c .\puzzles.h
911 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pattern.c /Fopattern2.obj
912pearl.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h
913 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pearl.c /Fopearl.obj
914pearl5.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h
915 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pearl.c /Fopearl5.obj
916pearl2.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h
917 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pearl.c /Fopearl2.obj
918pegs.obj: .\pegs.c .\puzzles.h .\tree234.h
919 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pegs.c /Fopegs.obj
920pegs3.obj: .\pegs.c .\puzzles.h .\tree234.h
921 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pegs.c /Fopegs3.obj
922penrose.obj: .\penrose.c .\puzzles.h .\penrose.h
923 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\penrose.c /Fopenrose.obj
924printing.obj: .\printing.c .\puzzles.h
925 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\printing.c /Foprinting.obj
926ps.obj: .\ps.c .\puzzles.h
927 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\ps.c /Fops.obj
928random.obj: .\random.c .\puzzles.h
929 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\random.c /Forandom.obj
930range.obj: .\range.c .\puzzles.h
931 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\range.c /Forange.obj
932range3.obj: .\range.c .\puzzles.h
933 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\range.c /Forange3.obj
934rect.obj: .\rect.c .\puzzles.h
935 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\rect.c /Forect.obj
936rect3.obj: .\rect.c .\puzzles.h
937 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\rect.c /Forect3.obj
938samegame.obj: .\samegame.c .\puzzles.h
939 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\samegame.c /Fosamegame.obj
940samegam3.obj: .\samegame.c .\puzzles.h
941 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\samegame.c /Fosamegam3.obj
942signpost.obj: .\signpost.c .\puzzles.h
943 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\signpost.c /Fosignpost.obj
944signpos5.obj: .\signpost.c .\puzzles.h
945 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\signpost.c /Fosignpos5.obj
946signpos2.obj: .\signpost.c .\puzzles.h
947 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\signpost.c /Fosignpos2.obj
948singles.obj: .\singles.c .\puzzles.h .\latin.h
949 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\singles.c /Fosingles.obj
950singles5.obj: .\singles.c .\puzzles.h .\latin.h
951 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\singles.c /Fosingles5.obj
952singles3.obj: .\singles.c .\puzzles.h .\latin.h
953 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\singles.c /Fosingles3.obj
954sixteen.obj: .\sixteen.c .\puzzles.h
955 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\sixteen.c /Fosixteen.obj
956sixteen3.obj: .\sixteen.c .\puzzles.h
957 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\sixteen.c /Fosixteen3.obj
958slant.obj: .\slant.c .\puzzles.h
959 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\slant.c /Foslant.obj
960slant5.obj: .\slant.c .\puzzles.h
961 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\slant.c /Foslant5.obj
962slant2.obj: .\slant.c .\puzzles.h
963 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\slant.c /Foslant2.obj
964solo.obj: .\solo.c .\puzzles.h
965 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\solo.c /Fosolo.obj
966solo5.obj: .\solo.c .\puzzles.h
967 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\solo.c /Fosolo5.obj
968solo2.obj: .\solo.c .\puzzles.h
969 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\solo.c /Fosolo2.obj
970tdq.obj: .\tdq.c .\puzzles.h
971 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tdq.c /Fotdq.obj
972tents.obj: .\tents.c .\puzzles.h .\maxflow.h
973 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tents.c /Fotents.obj
974tents5.obj: .\tents.c .\puzzles.h .\maxflow.h
975 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tents.c /Fotents5.obj
976tents3.obj: .\tents.c .\puzzles.h .\maxflow.h
977 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\tents.c /Fotents3.obj
978towers.obj: .\towers.c .\puzzles.h .\latin.h
979 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\towers.c /Fotowers.obj
980towers5.obj: .\towers.c .\puzzles.h .\latin.h
981 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\towers.c /Fotowers5.obj
982towers2.obj: .\towers.c .\puzzles.h .\latin.h
983 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\towers.c /Fotowers2.obj
984tracks.obj: .\tracks.c .\puzzles.h
985 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tracks.c /Fotracks.obj
986tracks3.obj: .\tracks.c .\puzzles.h
987 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tracks.c /Fotracks3.obj
988tree234.obj: .\tree234.c .\tree234.h .\puzzles.h
989 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tree234.c /Fotree234.obj
990twiddle.obj: .\twiddle.c .\puzzles.h
991 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\twiddle.c /Fotwiddle.obj
992twiddle3.obj: .\twiddle.c .\puzzles.h
993 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\twiddle.c /Fotwiddle3.obj
994undead.obj: .\undead.c .\puzzles.h
995 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\undead.c /Foundead.obj
996undead3.obj: .\undead.c .\puzzles.h
997 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\undead.c /Foundead3.obj
998unequal.obj: .\unequal.c .\puzzles.h .\latin.h
999 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unequal.c /Founequal.obj
1000unequal5.obj: .\unequal.c .\puzzles.h .\latin.h
1001 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unequal.c /Founequal5.obj
1002unequal2.obj: .\unequal.c .\puzzles.h .\latin.h
1003 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unequal.c /Founequal2.obj
1004unruly.obj: .\unruly.c .\puzzles.h
1005 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unruly.c /Founruly.obj
1006unruly5.obj: .\unruly.c .\puzzles.h
1007 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unruly.c /Founruly5.obj
1008unruly2.obj: .\unruly.c .\puzzles.h
1009 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unruly.c /Founruly2.obj
1010untangle.obj: .\untangle.c .\puzzles.h .\tree234.h
1011 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\untangle.c /Fountangle.obj
1012untangl3.obj: .\untangle.c .\puzzles.h .\tree234.h
1013 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\untangle.c /Fountangl3.obj
1014version.obj: .\version.c .\version.h
1015 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\version.c /Foversion.obj
1016windows.obj: .\windows.c .\puzzles.h .\resource.h
1017 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\windows.c /Fowindows.obj
1018windows1.obj: .\windows.c .\puzzles.h .\resource.h
1019 cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\windows.c /Fowindows1.obj
1020
1021
1022clean: tidy
1023 -del *.exe
1024
1025tidy:
1026 -del *.obj
1027 -del *.res
1028 -del *.pch
1029 -del *.aps
1030 -del *.ilk
1031 -del *.pdb
1032 -del *.rsp
1033 -del *.dsp
1034 -del *.dsw
1035 -del *.ncb
1036 -del *.opt
1037 -del *.plg
1038 -del *.map
1039 -del *.idb
1040 -del debug.log
diff --git a/apps/plugins/puzzles/src/Makefile.wce b/apps/plugins/puzzles/src/Makefile.wce
new file mode 100644
index 0000000000..241e30b8df
--- /dev/null
+++ b/apps/plugins/puzzles/src/Makefile.wce
@@ -0,0 +1,808 @@
1# Makefile for puzzles on PocketPC using eMbedded Visual C.
2#
3# This file was created by `mkfiles.pl' from the `Recipe' file.
4# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
5
6# If you rename this file to `Makefile', you should change this line,
7# so that the .rsp files still depend on the correct makefile.
8MAKEFILE = Makefile.wce
9
10# This makefile expects the environment to have been set up by one
11# of the PocketPC batch files wcearmv4.bat and wceemulator.bat. No
12# other build targets are currently supported, because they would
13# need a section in this if statement.
14!if "$(TARGETCPU)" == "emulator"
15PLATFORM_DEFS=/D "_i386_" /D "i_386_" /D "_X86_" /D "x86"
16CC=cl
17BASELIBS=commctrl.lib coredll.lib corelibc.lib aygshell.lib
18MACHINE=IX86
19!else
20PLATFORM_DEFS=/D "ARM" /D "_ARM_" /D "ARMV4"
21CC=clarm
22BASELIBS=commctrl.lib coredll.lib aygshell.lib
23MACHINE=ARM
24!endif
25
26# C compilation flags
27CFLAGS = /nologo /W3 /O1 /MC /D _WIN32_WCE=420 /D "WIN32_PLATFORM_PSPC=400" /D UNDER_CE=420 \
28 $(PLATFORM_DEFS) \
29 /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "NO_HTMLHELP"
30
31LFLAGS = /nologo /incremental:no \
32 /base:0x00010000 /stack:0x10000,0x1000 /entry:WinMainCRTStartup \
33 /nodefaultlib:libc.lib /nodefaultlib:libcmt.lib /nodefaultlib:msvcrt.lib /nodefaultlib:OLDNAMES.lib \
34 /subsystem:windowsce,4.20 /align:4096 /MACHINE:$(MACHINE)
35
36RCFL = /d UNDER_CE=420 /d _WIN32_WCE=420 /d "WIN32_PLATFORM_PSPC=400" \
37 $(PLATFORM_DEFS) \
38 /d "NDEBUG" /d "UNICODE" /d "_UNICODE"
39
40all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe filling.exe \
41 flip.exe flood.exe galaxies.exe guess.exe inertia.exe \
42 keen.exe lightup.exe loopy.exe magnets.exe map.exe mines.exe \
43 netgame.exe netslide.exe nullgame.exe palisade.exe \
44 pattern.exe pearl.exe pegs.exe puzzles.exe range.exe \
45 rect.exe samegame.exe signpost.exe singles.exe sixteen.exe \
46 slant.exe solo.exe tents.exe towers.exe tracks.exe \
47 twiddle.exe undead.exe unequal.exe unruly.exe untangle.exe
48
49blackbox.exe: blackbox.obj drawing.obj malloc.obj midend.obj misc.obj \
50 noicon.res printing.obj random.obj version.obj windows.obj \
51 blackbox.rsp
52 link $(LFLAGS) -out:blackbox.exe -map:blackbox.map @blackbox.rsp
53
54bridges.exe: bridges.obj drawing.obj dsf.obj findloop.obj malloc.obj \
55 midend.obj misc.obj noicon.res printing.obj random.obj \
56 version.obj windows.obj bridges.rsp
57 link $(LFLAGS) -out:bridges.exe -map:bridges.map @bridges.rsp
58
59cube.exe: cube.obj drawing.obj malloc.obj midend.obj misc.obj noicon.res \
60 printing.obj random.obj version.obj windows.obj cube.rsp
61 link $(LFLAGS) -out:cube.exe -map:cube.map @cube.rsp
62
63dominosa.exe: dominosa.obj drawing.obj laydomino.obj malloc.obj midend.obj \
64 misc.obj noicon.res printing.obj random.obj version.obj \
65 windows.obj dominosa.rsp
66 link $(LFLAGS) -out:dominosa.exe -map:dominosa.map @dominosa.rsp
67
68fifteen.exe: drawing.obj fifteen.obj malloc.obj midend.obj misc.obj \
69 noicon.res printing.obj random.obj version.obj windows.obj \
70 fifteen.rsp
71 link $(LFLAGS) -out:fifteen.exe -map:fifteen.map @fifteen.rsp
72
73filling.exe: drawing.obj dsf.obj filling.obj malloc.obj midend.obj misc.obj \
74 noicon.res printing.obj random.obj version.obj windows.obj \
75 filling.rsp
76 link $(LFLAGS) -out:filling.exe -map:filling.map @filling.rsp
77
78flip.exe: drawing.obj flip.obj malloc.obj midend.obj misc.obj noicon.res \
79 printing.obj random.obj tree234.obj version.obj windows.obj \
80 flip.rsp
81 link $(LFLAGS) -out:flip.exe -map:flip.map @flip.rsp
82
83flood.exe: drawing.obj flood.obj malloc.obj midend.obj misc.obj noicon.res \
84 printing.obj random.obj version.obj windows.obj flood.rsp
85 link $(LFLAGS) -out:flood.exe -map:flood.map @flood.rsp
86
87galaxies.exe: drawing.obj dsf.obj galaxies.obj malloc.obj midend.obj \
88 misc.obj noicon.res printing.obj random.obj version.obj \
89 windows.obj galaxies.rsp
90 link $(LFLAGS) -out:galaxies.exe -map:galaxies.map @galaxies.rsp
91
92guess.exe: drawing.obj guess.obj malloc.obj midend.obj misc.obj noicon.res \
93 printing.obj random.obj version.obj windows.obj guess.rsp
94 link $(LFLAGS) -out:guess.exe -map:guess.map @guess.rsp
95
96inertia.exe: drawing.obj inertia.obj malloc.obj midend.obj misc.obj \
97 noicon.res printing.obj random.obj version.obj windows.obj \
98 inertia.rsp
99 link $(LFLAGS) -out:inertia.exe -map:inertia.map @inertia.rsp
100
101keen.exe: drawing.obj dsf.obj keen.obj latin.obj malloc.obj maxflow.obj \
102 midend.obj misc.obj noicon.res printing.obj random.obj \
103 tree234.obj version.obj windows.obj keen.rsp
104 link $(LFLAGS) -out:keen.exe -map:keen.map @keen.rsp
105
106lightup.exe: combi.obj drawing.obj lightup.obj malloc.obj midend.obj \
107 misc.obj noicon.res printing.obj random.obj version.obj \
108 windows.obj lightup.rsp
109 link $(LFLAGS) -out:lightup.exe -map:lightup.map @lightup.rsp
110
111loopy.exe: drawing.obj dsf.obj grid.obj loopgen.obj loopy.obj malloc.obj \
112 midend.obj misc.obj noicon.res penrose.obj printing.obj \
113 random.obj tree234.obj version.obj windows.obj loopy.rsp
114 link $(LFLAGS) -out:loopy.exe -map:loopy.map @loopy.rsp
115
116magnets.exe: drawing.obj laydomino.obj magnets.obj malloc.obj midend.obj \
117 misc.obj noicon.res printing.obj random.obj version.obj \
118 windows.obj magnets.rsp
119 link $(LFLAGS) -out:magnets.exe -map:magnets.map @magnets.rsp
120
121map.exe: drawing.obj dsf.obj malloc.obj map.obj midend.obj misc.obj \
122 noicon.res printing.obj random.obj version.obj windows.obj \
123 map.rsp
124 link $(LFLAGS) -out:map.exe -map:map.map @map.rsp
125
126mines.exe: drawing.obj malloc.obj midend.obj mines.obj misc.obj noicon.res \
127 printing.obj random.obj tree234.obj version.obj windows.obj \
128 mines.rsp
129 link $(LFLAGS) -out:mines.exe -map:mines.map @mines.rsp
130
131netgame.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \
132 net.obj noicon.res printing.obj random.obj tree234.obj \
133 version.obj windows.obj netgame.rsp
134 link $(LFLAGS) -out:netgame.exe -map:netgame.map @netgame.rsp
135
136netslide.exe: drawing.obj malloc.obj midend.obj misc.obj netslide.obj \
137 noicon.res printing.obj random.obj tree234.obj version.obj \
138 windows.obj netslide.rsp
139 link $(LFLAGS) -out:netslide.exe -map:netslide.map @netslide.rsp
140
141nullgame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
142 nullgame.obj printing.obj random.obj version.obj windows.obj \
143 nullgame.rsp
144 link $(LFLAGS) -out:nullgame.exe -map:nullgame.map @nullgame.rsp
145
146palisade.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \
147 noicon.res palisade.obj printing.obj random.obj version.obj \
148 windows.obj palisade.rsp
149 link $(LFLAGS) -out:palisade.exe -map:palisade.map @palisade.rsp
150
151pattern.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
152 pattern.obj printing.obj random.obj version.obj windows.obj \
153 pattern.rsp
154 link $(LFLAGS) -out:pattern.exe -map:pattern.map @pattern.rsp
155
156pearl.exe: drawing.obj dsf.obj grid.obj loopgen.obj malloc.obj midend.obj \
157 misc.obj pearl.obj penrose.obj printing.obj random.obj \
158 tdq.obj tree234.obj version.obj windows.obj pearl.rsp
159 link $(LFLAGS) -out:pearl.exe -map:pearl.map @pearl.rsp
160
161pegs.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res pegs.obj \
162 printing.obj random.obj tree234.obj version.obj windows.obj \
163 pegs.rsp
164 link $(LFLAGS) -out:pegs.exe -map:pegs.map @pegs.rsp
165
166puzzles.exe: blackbo3.obj bridges3.obj combi.obj cube3.obj divvy.obj \
167 dominos3.obj drawing.obj dsf.obj fifteen5.obj filling5.obj \
168 findloop.obj flip3.obj flood3.obj galaxie7.obj grid.obj \
169 guess3.obj inertia3.obj keen5.obj latin.obj laydomino.obj \
170 lightup5.obj list.obj loopgen.obj loopy5.obj magnets5.obj \
171 malloc.obj map5.obj maxflow.obj midend.obj mines5.obj \
172 misc.obj net3.obj netslid3.obj noicon.res palisad3.obj \
173 pattern7.obj pearl5.obj pegs3.obj penrose.obj printing.obj \
174 random.obj range3.obj rect3.obj samegam3.obj signpos5.obj \
175 singles5.obj sixteen3.obj slant5.obj solo5.obj tdq.obj \
176 tents5.obj towers5.obj tracks3.obj tree234.obj twiddle3.obj \
177 undead3.obj unequal5.obj unruly5.obj untangl3.obj \
178 version.obj windows1.obj puzzles.rsp
179 link $(LFLAGS) -out:puzzles.exe -map:puzzles.map @puzzles.rsp
180
181range.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \
182 printing.obj random.obj range.obj version.obj windows.obj \
183 range.rsp
184 link $(LFLAGS) -out:range.exe -map:range.map @range.rsp
185
186rect.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res printing.obj \
187 random.obj rect.obj version.obj windows.obj rect.rsp
188 link $(LFLAGS) -out:rect.exe -map:rect.map @rect.rsp
189
190samegame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
191 printing.obj random.obj samegame.obj version.obj windows.obj \
192 samegame.rsp
193 link $(LFLAGS) -out:samegame.exe -map:samegame.map @samegame.rsp
194
195signpost.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \
196 printing.obj random.obj signpost.obj version.obj windows.obj \
197 signpost.rsp
198 link $(LFLAGS) -out:signpost.exe -map:signpost.map @signpost.rsp
199
200singles.exe: drawing.obj dsf.obj latin.obj malloc.obj maxflow.obj midend.obj \
201 misc.obj noicon.res printing.obj random.obj singles.obj \
202 tree234.obj version.obj windows.obj singles.rsp
203 link $(LFLAGS) -out:singles.exe -map:singles.map @singles.rsp
204
205sixteen.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
206 printing.obj random.obj sixteen.obj version.obj windows.obj \
207 sixteen.rsp
208 link $(LFLAGS) -out:sixteen.exe -map:sixteen.map @sixteen.rsp
209
210slant.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \
211 noicon.res printing.obj random.obj slant.obj version.obj \
212 windows.obj slant.rsp
213 link $(LFLAGS) -out:slant.exe -map:slant.map @slant.rsp
214
215solo.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \
216 noicon.res printing.obj random.obj solo.obj version.obj \
217 windows.obj solo.rsp
218 link $(LFLAGS) -out:solo.exe -map:solo.map @solo.rsp
219
220tents.exe: drawing.obj dsf.obj malloc.obj maxflow.obj midend.obj misc.obj \
221 noicon.res printing.obj random.obj tents.obj version.obj \
222 windows.obj tents.rsp
223 link $(LFLAGS) -out:tents.exe -map:tents.map @tents.rsp
224
225towers.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj misc.obj \
226 noicon.res printing.obj random.obj towers.obj tree234.obj \
227 version.obj windows.obj towers.rsp
228 link $(LFLAGS) -out:towers.exe -map:towers.map @towers.rsp
229
230tracks.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \
231 noicon.res printing.obj random.obj tracks.obj version.obj \
232 windows.obj tracks.rsp
233 link $(LFLAGS) -out:tracks.exe -map:tracks.map @tracks.rsp
234
235twiddle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
236 printing.obj random.obj twiddle.obj version.obj windows.obj \
237 twiddle.rsp
238 link $(LFLAGS) -out:twiddle.exe -map:twiddle.map @twiddle.rsp
239
240undead.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
241 printing.obj random.obj undead.obj version.obj windows.obj \
242 undead.rsp
243 link $(LFLAGS) -out:undead.exe -map:undead.map @undead.rsp
244
245unequal.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj \
246 misc.obj noicon.res printing.obj random.obj tree234.obj \
247 unequal.obj version.obj windows.obj unequal.rsp
248 link $(LFLAGS) -out:unequal.exe -map:unequal.map @unequal.rsp
249
250unruly.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
251 printing.obj random.obj unruly.obj version.obj windows.obj \
252 unruly.rsp
253 link $(LFLAGS) -out:unruly.exe -map:unruly.map @unruly.rsp
254
255untangle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \
256 printing.obj random.obj tree234.obj untangle.obj version.obj \
257 windows.obj untangle.rsp
258 link $(LFLAGS) -out:untangle.exe -map:untangle.map @untangle.rsp
259
260blackbox.rsp: $(MAKEFILE)
261 echo $(BASELIBS) > blackbox.rsp
262 echo blackbox.obj drawing.obj malloc.obj midend.obj >> blackbox.rsp
263 echo misc.obj noicon.res printing.obj random.obj >> blackbox.rsp
264 echo version.obj windows.obj >> blackbox.rsp
265
266bridges.rsp: $(MAKEFILE)
267 echo $(BASELIBS) > bridges.rsp
268 echo bridges.obj drawing.obj dsf.obj findloop.obj >> bridges.rsp
269 echo malloc.obj midend.obj misc.obj noicon.res >> bridges.rsp
270 echo printing.obj random.obj version.obj windows.obj >> bridges.rsp
271
272cube.rsp: $(MAKEFILE)
273 echo $(BASELIBS) > cube.rsp
274 echo cube.obj drawing.obj malloc.obj midend.obj >> cube.rsp
275 echo misc.obj noicon.res printing.obj random.obj >> cube.rsp
276 echo version.obj windows.obj >> cube.rsp
277
278dominosa.rsp: $(MAKEFILE)
279 echo $(BASELIBS) > dominosa.rsp
280 echo dominosa.obj drawing.obj laydomino.obj malloc.obj >> dominosa.rsp
281 echo midend.obj misc.obj noicon.res printing.obj >> dominosa.rsp
282 echo random.obj version.obj windows.obj >> dominosa.rsp
283
284fifteen.rsp: $(MAKEFILE)
285 echo $(BASELIBS) > fifteen.rsp
286 echo drawing.obj fifteen.obj malloc.obj midend.obj >> fifteen.rsp
287 echo misc.obj noicon.res printing.obj random.obj >> fifteen.rsp
288 echo version.obj windows.obj >> fifteen.rsp
289
290filling.rsp: $(MAKEFILE)
291 echo $(BASELIBS) > filling.rsp
292 echo drawing.obj dsf.obj filling.obj malloc.obj >> filling.rsp
293 echo midend.obj misc.obj noicon.res printing.obj >> filling.rsp
294 echo random.obj version.obj windows.obj >> filling.rsp
295
296flip.rsp: $(MAKEFILE)
297 echo $(BASELIBS) > flip.rsp
298 echo drawing.obj flip.obj malloc.obj midend.obj >> flip.rsp
299 echo misc.obj noicon.res printing.obj random.obj >> flip.rsp
300 echo tree234.obj version.obj windows.obj >> flip.rsp
301
302flood.rsp: $(MAKEFILE)
303 echo $(BASELIBS) > flood.rsp
304 echo drawing.obj flood.obj malloc.obj midend.obj >> flood.rsp
305 echo misc.obj noicon.res printing.obj random.obj >> flood.rsp
306 echo version.obj windows.obj >> flood.rsp
307
308galaxies.rsp: $(MAKEFILE)
309 echo $(BASELIBS) > galaxies.rsp
310 echo drawing.obj dsf.obj galaxies.obj malloc.obj >> galaxies.rsp
311 echo midend.obj misc.obj noicon.res printing.obj >> galaxies.rsp
312 echo random.obj version.obj windows.obj >> galaxies.rsp
313
314guess.rsp: $(MAKEFILE)
315 echo $(BASELIBS) > guess.rsp
316 echo drawing.obj guess.obj malloc.obj midend.obj >> guess.rsp
317 echo misc.obj noicon.res printing.obj random.obj >> guess.rsp
318 echo version.obj windows.obj >> guess.rsp
319
320inertia.rsp: $(MAKEFILE)
321 echo $(BASELIBS) > inertia.rsp
322 echo drawing.obj inertia.obj malloc.obj midend.obj >> inertia.rsp
323 echo misc.obj noicon.res printing.obj random.obj >> inertia.rsp
324 echo version.obj windows.obj >> inertia.rsp
325
326keen.rsp: $(MAKEFILE)
327 echo $(BASELIBS) > keen.rsp
328 echo drawing.obj dsf.obj keen.obj latin.obj malloc.obj >> keen.rsp
329 echo maxflow.obj midend.obj misc.obj noicon.res >> keen.rsp
330 echo printing.obj random.obj tree234.obj version.obj >> keen.rsp
331 echo windows.obj >> keen.rsp
332
333lightup.rsp: $(MAKEFILE)
334 echo $(BASELIBS) > lightup.rsp
335 echo combi.obj drawing.obj lightup.obj malloc.obj >> lightup.rsp
336 echo midend.obj misc.obj noicon.res printing.obj >> lightup.rsp
337 echo random.obj version.obj windows.obj >> lightup.rsp
338
339loopy.rsp: $(MAKEFILE)
340 echo $(BASELIBS) > loopy.rsp
341 echo drawing.obj dsf.obj grid.obj loopgen.obj >> loopy.rsp
342 echo loopy.obj malloc.obj midend.obj misc.obj >> loopy.rsp
343 echo noicon.res penrose.obj printing.obj random.obj >> loopy.rsp
344 echo tree234.obj version.obj windows.obj >> loopy.rsp
345
346magnets.rsp: $(MAKEFILE)
347 echo $(BASELIBS) > magnets.rsp
348 echo drawing.obj laydomino.obj magnets.obj malloc.obj >> magnets.rsp
349 echo midend.obj misc.obj noicon.res printing.obj >> magnets.rsp
350 echo random.obj version.obj windows.obj >> magnets.rsp
351
352map.rsp: $(MAKEFILE)
353 echo $(BASELIBS) > map.rsp
354 echo drawing.obj dsf.obj malloc.obj map.obj midend.obj >> map.rsp
355 echo misc.obj noicon.res printing.obj random.obj >> map.rsp
356 echo version.obj windows.obj >> map.rsp
357
358mines.rsp: $(MAKEFILE)
359 echo $(BASELIBS) > mines.rsp
360 echo drawing.obj malloc.obj midend.obj mines.obj >> mines.rsp
361 echo misc.obj noicon.res printing.obj random.obj >> mines.rsp
362 echo tree234.obj version.obj windows.obj >> mines.rsp
363
364netgame.rsp: $(MAKEFILE)
365 echo $(BASELIBS) > netgame.rsp
366 echo drawing.obj dsf.obj findloop.obj malloc.obj >> netgame.rsp
367 echo midend.obj misc.obj net.obj noicon.res >> netgame.rsp
368 echo printing.obj random.obj tree234.obj version.obj >> netgame.rsp
369 echo windows.obj >> netgame.rsp
370
371netslide.rsp: $(MAKEFILE)
372 echo $(BASELIBS) > netslide.rsp
373 echo drawing.obj malloc.obj midend.obj misc.obj >> netslide.rsp
374 echo netslide.obj noicon.res printing.obj random.obj >> netslide.rsp
375 echo tree234.obj version.obj windows.obj >> netslide.rsp
376
377nullgame.rsp: $(MAKEFILE)
378 echo $(BASELIBS) > nullgame.rsp
379 echo drawing.obj malloc.obj midend.obj misc.obj >> nullgame.rsp
380 echo noicon.res nullgame.obj printing.obj random.obj >> nullgame.rsp
381 echo version.obj windows.obj >> nullgame.rsp
382
383palisade.rsp: $(MAKEFILE)
384 echo $(BASELIBS) > palisade.rsp
385 echo divvy.obj drawing.obj dsf.obj malloc.obj >> palisade.rsp
386 echo midend.obj misc.obj noicon.res palisade.obj >> palisade.rsp
387 echo printing.obj random.obj version.obj windows.obj >> palisade.rsp
388
389pattern.rsp: $(MAKEFILE)
390 echo $(BASELIBS) > pattern.rsp
391 echo drawing.obj malloc.obj midend.obj misc.obj >> pattern.rsp
392 echo noicon.res pattern.obj printing.obj random.obj >> pattern.rsp
393 echo version.obj windows.obj >> pattern.rsp
394
395pearl.rsp: $(MAKEFILE)
396 echo $(BASELIBS) > pearl.rsp
397 echo drawing.obj dsf.obj grid.obj loopgen.obj >> pearl.rsp
398 echo malloc.obj midend.obj misc.obj pearl.obj >> pearl.rsp
399 echo penrose.obj printing.obj random.obj tdq.obj >> pearl.rsp
400 echo tree234.obj version.obj windows.obj >> pearl.rsp
401
402pegs.rsp: $(MAKEFILE)
403 echo $(BASELIBS) > pegs.rsp
404 echo drawing.obj malloc.obj midend.obj misc.obj >> pegs.rsp
405 echo noicon.res pegs.obj printing.obj random.obj >> pegs.rsp
406 echo tree234.obj version.obj windows.obj >> pegs.rsp
407
408puzzles.rsp: $(MAKEFILE)
409 echo $(BASELIBS) > puzzles.rsp
410 echo blackbo3.obj bridges3.obj combi.obj cube3.obj >> puzzles.rsp
411 echo divvy.obj dominos3.obj drawing.obj dsf.obj >> puzzles.rsp
412 echo fifteen5.obj filling5.obj findloop.obj flip3.obj >> puzzles.rsp
413 echo flood3.obj galaxie7.obj grid.obj guess3.obj >> puzzles.rsp
414 echo inertia3.obj keen5.obj latin.obj laydomino.obj >> puzzles.rsp
415 echo lightup5.obj list.obj loopgen.obj loopy5.obj >> puzzles.rsp
416 echo magnets5.obj malloc.obj map5.obj maxflow.obj >> puzzles.rsp
417 echo midend.obj mines5.obj misc.obj net3.obj >> puzzles.rsp
418 echo netslid3.obj noicon.res palisad3.obj pattern7.obj >> puzzles.rsp
419 echo pearl5.obj pegs3.obj penrose.obj printing.obj >> puzzles.rsp
420 echo random.obj range3.obj rect3.obj samegam3.obj >> puzzles.rsp
421 echo signpos5.obj singles5.obj sixteen3.obj slant5.obj >> puzzles.rsp
422 echo solo5.obj tdq.obj tents5.obj towers5.obj >> puzzles.rsp
423 echo tracks3.obj tree234.obj twiddle3.obj undead3.obj >> puzzles.rsp
424 echo unequal5.obj unruly5.obj untangl3.obj version.obj >> puzzles.rsp
425 echo windows1.obj >> puzzles.rsp
426
427range.rsp: $(MAKEFILE)
428 echo $(BASELIBS) > range.rsp
429 echo drawing.obj dsf.obj malloc.obj midend.obj >> range.rsp
430 echo misc.obj noicon.res printing.obj random.obj >> range.rsp
431 echo range.obj version.obj windows.obj >> range.rsp
432
433rect.rsp: $(MAKEFILE)
434 echo $(BASELIBS) > rect.rsp
435 echo drawing.obj malloc.obj midend.obj misc.obj >> rect.rsp
436 echo noicon.res printing.obj random.obj rect.obj >> rect.rsp
437 echo version.obj windows.obj >> rect.rsp
438
439samegame.rsp: $(MAKEFILE)
440 echo $(BASELIBS) > samegame.rsp
441 echo drawing.obj malloc.obj midend.obj misc.obj >> samegame.rsp
442 echo noicon.res printing.obj random.obj samegame.obj >> samegame.rsp
443 echo version.obj windows.obj >> samegame.rsp
444
445signpost.rsp: $(MAKEFILE)
446 echo $(BASELIBS) > signpost.rsp
447 echo drawing.obj dsf.obj malloc.obj midend.obj >> signpost.rsp
448 echo misc.obj noicon.res printing.obj random.obj >> signpost.rsp
449 echo signpost.obj version.obj windows.obj >> signpost.rsp
450
451singles.rsp: $(MAKEFILE)
452 echo $(BASELIBS) > singles.rsp
453 echo drawing.obj dsf.obj latin.obj malloc.obj >> singles.rsp
454 echo maxflow.obj midend.obj misc.obj noicon.res >> singles.rsp
455 echo printing.obj random.obj singles.obj tree234.obj >> singles.rsp
456 echo version.obj windows.obj >> singles.rsp
457
458sixteen.rsp: $(MAKEFILE)
459 echo $(BASELIBS) > sixteen.rsp
460 echo drawing.obj malloc.obj midend.obj misc.obj >> sixteen.rsp
461 echo noicon.res printing.obj random.obj sixteen.obj >> sixteen.rsp
462 echo version.obj windows.obj >> sixteen.rsp
463
464slant.rsp: $(MAKEFILE)
465 echo $(BASELIBS) > slant.rsp
466 echo drawing.obj dsf.obj findloop.obj malloc.obj >> slant.rsp
467 echo midend.obj misc.obj noicon.res printing.obj >> slant.rsp
468 echo random.obj slant.obj version.obj windows.obj >> slant.rsp
469
470solo.rsp: $(MAKEFILE)
471 echo $(BASELIBS) > solo.rsp
472 echo divvy.obj drawing.obj dsf.obj malloc.obj >> solo.rsp
473 echo midend.obj misc.obj noicon.res printing.obj >> solo.rsp
474 echo random.obj solo.obj version.obj windows.obj >> solo.rsp
475
476tents.rsp: $(MAKEFILE)
477 echo $(BASELIBS) > tents.rsp
478 echo drawing.obj dsf.obj malloc.obj maxflow.obj >> tents.rsp
479 echo midend.obj misc.obj noicon.res printing.obj >> tents.rsp
480 echo random.obj tents.obj version.obj windows.obj >> tents.rsp
481
482towers.rsp: $(MAKEFILE)
483 echo $(BASELIBS) > towers.rsp
484 echo drawing.obj latin.obj malloc.obj maxflow.obj >> towers.rsp
485 echo midend.obj misc.obj noicon.res printing.obj >> towers.rsp
486 echo random.obj towers.obj tree234.obj version.obj >> towers.rsp
487 echo windows.obj >> towers.rsp
488
489tracks.rsp: $(MAKEFILE)
490 echo $(BASELIBS) > tracks.rsp
491 echo drawing.obj dsf.obj findloop.obj malloc.obj >> tracks.rsp
492 echo midend.obj misc.obj noicon.res printing.obj >> tracks.rsp
493 echo random.obj tracks.obj version.obj windows.obj >> tracks.rsp
494
495twiddle.rsp: $(MAKEFILE)
496 echo $(BASELIBS) > twiddle.rsp
497 echo drawing.obj malloc.obj midend.obj misc.obj >> twiddle.rsp
498 echo noicon.res printing.obj random.obj twiddle.obj >> twiddle.rsp
499 echo version.obj windows.obj >> twiddle.rsp
500
501undead.rsp: $(MAKEFILE)
502 echo $(BASELIBS) > undead.rsp
503 echo drawing.obj malloc.obj midend.obj misc.obj >> undead.rsp
504 echo noicon.res printing.obj random.obj undead.obj >> undead.rsp
505 echo version.obj windows.obj >> undead.rsp
506
507unequal.rsp: $(MAKEFILE)
508 echo $(BASELIBS) > unequal.rsp
509 echo drawing.obj latin.obj malloc.obj maxflow.obj >> unequal.rsp
510 echo midend.obj misc.obj noicon.res printing.obj >> unequal.rsp
511 echo random.obj tree234.obj unequal.obj version.obj >> unequal.rsp
512 echo windows.obj >> unequal.rsp
513
514unruly.rsp: $(MAKEFILE)
515 echo $(BASELIBS) > unruly.rsp
516 echo drawing.obj malloc.obj midend.obj misc.obj >> unruly.rsp
517 echo noicon.res printing.obj random.obj unruly.obj >> unruly.rsp
518 echo version.obj windows.obj >> unruly.rsp
519
520untangle.rsp: $(MAKEFILE)
521 echo $(BASELIBS) > untangle.rsp
522 echo drawing.obj malloc.obj midend.obj misc.obj >> untangle.rsp
523 echo noicon.res printing.obj random.obj tree234.obj >> untangle.rsp
524 echo untangle.obj version.obj windows.obj >> untangle.rsp
525
526blackbox.obj: .\blackbox.c .\puzzles.h
527 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\blackbox.c /Foblackbox.obj
528blackbo3.obj: .\blackbox.c .\puzzles.h
529 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\blackbox.c /Foblackbo3.obj
530bridges.obj: .\bridges.c .\puzzles.h
531 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\bridges.c /Fobridges.obj
532bridges3.obj: .\bridges.c .\puzzles.h
533 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\bridges.c /Fobridges3.obj
534combi.obj: .\combi.c .\puzzles.h
535 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\combi.c /Focombi.obj
536cube.obj: .\cube.c .\puzzles.h
537 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\cube.c /Focube.obj
538cube3.obj: .\cube.c .\puzzles.h
539 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\cube.c /Focube3.obj
540divvy.obj: .\divvy.c .\puzzles.h
541 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\divvy.c /Fodivvy.obj
542dominosa.obj: .\dominosa.c .\puzzles.h
543 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dominosa.c /Fodominosa.obj
544dominos3.obj: .\dominosa.c .\puzzles.h
545 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\dominosa.c /Fodominos3.obj
546drawing.obj: .\drawing.c .\puzzles.h
547 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\drawing.c /Fodrawing.obj
548dsf.obj: .\dsf.c .\puzzles.h
549 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dsf.c /Fodsf.obj
550fifteen.obj: .\fifteen.c .\puzzles.h
551 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\fifteen.c /Fofifteen.obj
552fifteen5.obj: .\fifteen.c .\puzzles.h
553 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen5.obj
554fifteen2.obj: .\fifteen.c .\puzzles.h
555 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\fifteen.c /Fofifteen2.obj
556filling.obj: .\filling.c .\puzzles.h
557 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\filling.c /Fofilling.obj
558filling5.obj: .\filling.c .\puzzles.h
559 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\filling.c /Fofilling5.obj
560filling2.obj: .\filling.c .\puzzles.h
561 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\filling.c /Fofilling2.obj
562findloop.obj: .\findloop.c .\puzzles.h
563 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\findloop.c /Fofindloop.obj
564flip.obj: .\flip.c .\puzzles.h .\tree234.h
565 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flip.c /Foflip.obj
566flip3.obj: .\flip.c .\puzzles.h .\tree234.h
567 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flip.c /Foflip3.obj
568flood.obj: .\flood.c .\puzzles.h
569 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flood.c /Foflood.obj
570flood3.obj: .\flood.c .\puzzles.h
571 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flood.c /Foflood3.obj
572galaxies.obj: .\galaxies.c .\puzzles.h
573 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\galaxies.c /Fogalaxies.obj
574galaxie7.obj: .\galaxies.c .\puzzles.h
575 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\galaxies.c /Fogalaxie7.obj
576galaxie4.obj: .\galaxies.c .\puzzles.h
577 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\galaxies.c /Fogalaxie4.obj
578galaxie2.obj: .\galaxies.c .\puzzles.h
579 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\galaxies.c /Fogalaxie2.obj
580grid.obj: .\grid.c .\puzzles.h .\tree234.h .\grid.h .\penrose.h
581 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\grid.c /Fogrid.obj
582gtk.obj: .\gtk.c .\puzzles.h
583 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\gtk.c /Fogtk.obj
584guess.obj: .\guess.c .\puzzles.h
585 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\guess.c /Foguess.obj
586guess3.obj: .\guess.c .\puzzles.h
587 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\guess.c /Foguess3.obj
588inertia.obj: .\inertia.c .\puzzles.h
589 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\inertia.c /Foinertia.obj
590inertia3.obj: .\inertia.c .\puzzles.h
591 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\inertia.c /Foinertia3.obj
592keen.obj: .\keen.c .\puzzles.h .\latin.h
593 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\keen.c /Fokeen.obj
594keen5.obj: .\keen.c .\puzzles.h .\latin.h
595 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\keen.c /Fokeen5.obj
596keen2.obj: .\keen.c .\puzzles.h .\latin.h
597 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\keen.c /Fokeen2.obj
598latin.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h
599 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\latin.c /Folatin.obj
600latin8.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h
601 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_LATIN_TEST /c .\latin.c /Folatin8.obj
602latin6.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h
603 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\latin.c /Folatin6.obj
604laydomino.obj: .\laydomino.c .\puzzles.h
605 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\laydomino.c /Folaydomino.obj
606lightup.obj: .\lightup.c .\puzzles.h
607 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\lightup.c /Folightup.obj
608lightup5.obj: .\lightup.c .\puzzles.h
609 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\lightup.c /Folightup5.obj
610lightup2.obj: .\lightup.c .\puzzles.h
611 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\lightup.c /Folightup2.obj
612list.obj: .\list.c .\puzzles.h
613 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\list.c /Folist.obj
614loopgen.obj: .\loopgen.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
615 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopgen.c /Foloopgen.obj
616loopy.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
617 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopy.c /Foloopy.obj
618loopy5.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
619 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\loopy.c /Foloopy5.obj
620loopy2.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h
621 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\loopy.c /Foloopy2.obj
622magnets.obj: .\magnets.c .\puzzles.h
623 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\magnets.c /Fomagnets.obj
624magnets5.obj: .\magnets.c .\puzzles.h
625 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\magnets.c /Fomagnets5.obj
626magnets2.obj: .\magnets.c .\puzzles.h
627 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\magnets.c /Fomagnets2.obj
628malloc.obj: .\malloc.c .\puzzles.h
629 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\malloc.c /Fomalloc.obj
630map.obj: .\map.c .\puzzles.h
631 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\map.c /Fomap.obj
632map5.obj: .\map.c .\puzzles.h
633 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\map.c /Fomap5.obj
634map2.obj: .\map.c .\puzzles.h
635 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\map.c /Fomap2.obj
636maxflow.obj: .\maxflow.c .\maxflow.h .\puzzles.h
637 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\maxflow.c /Fomaxflow.obj
638midend.obj: .\midend.c .\puzzles.h
639 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\midend.c /Fomidend.obj
640mines.obj: .\mines.c .\tree234.h .\puzzles.h
641 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\mines.c /Fomines.obj
642mines5.obj: .\mines.c .\tree234.h .\puzzles.h
643 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\mines.c /Fomines5.obj
644mines2.obj: .\mines.c .\tree234.h .\puzzles.h
645 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_OBFUSCATOR /c .\mines.c /Fomines2.obj
646misc.obj: .\misc.c .\puzzles.h
647 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\misc.c /Fomisc.obj
648net.obj: .\net.c .\puzzles.h .\tree234.h
649 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\net.c /Fonet.obj
650net3.obj: .\net.c .\puzzles.h .\tree234.h
651 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\net.c /Fonet3.obj
652netslide.obj: .\netslide.c .\puzzles.h .\tree234.h
653 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\netslide.c /Fonetslide.obj
654netslid3.obj: .\netslide.c .\puzzles.h .\tree234.h
655 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\netslide.c /Fonetslid3.obj
656no-icon.obj: .\no-icon.c
657 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\no-icon.c /Fono-icon.obj
658noicon.res: .\noicon.rc .\puzzles.rc2 .\resource.h
659 rc $(FWHACK) $(RCFL) -r -fonoicon.res .\noicon.rc
660nullfe.obj: .\nullfe.c .\puzzles.h
661 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullfe.c /Fonullfe.obj
662nullgame.obj: .\nullgame.c .\puzzles.h
663 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullgame.c /Fonullgame.obj
664obfusc.obj: .\obfusc.c .\puzzles.h
665 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\obfusc.c /Foobfusc.obj
666osx.obj: .\osx.m .\puzzles.h
667 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\osx.m /Foosx.obj
668palisade.obj: .\palisade.c .\puzzles.h
669 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\palisade.c /Fopalisade.obj
670palisad3.obj: .\palisade.c .\puzzles.h
671 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\palisade.c /Fopalisad3.obj
672pattern.obj: .\pattern.c .\puzzles.h
673 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pattern.c /Fopattern.obj
674pattern7.obj: .\pattern.c .\puzzles.h
675 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern7.obj
676pattern4.obj: .\pattern.c .\puzzles.h
677 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\pattern.c /Fopattern4.obj
678pattern2.obj: .\pattern.c .\puzzles.h
679 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pattern.c /Fopattern2.obj
680pearl.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h
681 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pearl.c /Fopearl.obj
682pearl5.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h
683 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pearl.c /Fopearl5.obj
684pearl2.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h
685 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pearl.c /Fopearl2.obj
686pegs.obj: .\pegs.c .\puzzles.h .\tree234.h
687 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pegs.c /Fopegs.obj
688pegs3.obj: .\pegs.c .\puzzles.h .\tree234.h
689 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pegs.c /Fopegs3.obj
690penrose.obj: .\penrose.c .\puzzles.h .\penrose.h
691 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\penrose.c /Fopenrose.obj
692printing.obj: .\printing.c .\puzzles.h
693 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\printing.c /Foprinting.obj
694ps.obj: .\ps.c .\puzzles.h
695 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\ps.c /Fops.obj
696random.obj: .\random.c .\puzzles.h
697 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\random.c /Forandom.obj
698range.obj: .\range.c .\puzzles.h
699 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\range.c /Forange.obj
700range3.obj: .\range.c .\puzzles.h
701 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\range.c /Forange3.obj
702rect.obj: .\rect.c .\puzzles.h
703 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\rect.c /Forect.obj
704rect3.obj: .\rect.c .\puzzles.h
705 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\rect.c /Forect3.obj
706samegame.obj: .\samegame.c .\puzzles.h
707 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\samegame.c /Fosamegame.obj
708samegam3.obj: .\samegame.c .\puzzles.h
709 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\samegame.c /Fosamegam3.obj
710signpost.obj: .\signpost.c .\puzzles.h
711 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\signpost.c /Fosignpost.obj
712signpos5.obj: .\signpost.c .\puzzles.h
713 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\signpost.c /Fosignpos5.obj
714signpos2.obj: .\signpost.c .\puzzles.h
715 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\signpost.c /Fosignpos2.obj
716singles.obj: .\singles.c .\puzzles.h .\latin.h
717 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\singles.c /Fosingles.obj
718singles5.obj: .\singles.c .\puzzles.h .\latin.h
719 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\singles.c /Fosingles5.obj
720singles3.obj: .\singles.c .\puzzles.h .\latin.h
721 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\singles.c /Fosingles3.obj
722sixteen.obj: .\sixteen.c .\puzzles.h
723 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\sixteen.c /Fosixteen.obj
724sixteen3.obj: .\sixteen.c .\puzzles.h
725 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\sixteen.c /Fosixteen3.obj
726slant.obj: .\slant.c .\puzzles.h
727 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\slant.c /Foslant.obj
728slant5.obj: .\slant.c .\puzzles.h
729 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\slant.c /Foslant5.obj
730slant2.obj: .\slant.c .\puzzles.h
731 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\slant.c /Foslant2.obj
732solo.obj: .\solo.c .\puzzles.h
733 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\solo.c /Fosolo.obj
734solo5.obj: .\solo.c .\puzzles.h
735 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\solo.c /Fosolo5.obj
736solo2.obj: .\solo.c .\puzzles.h
737 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\solo.c /Fosolo2.obj
738tdq.obj: .\tdq.c .\puzzles.h
739 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tdq.c /Fotdq.obj
740tents.obj: .\tents.c .\puzzles.h .\maxflow.h
741 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tents.c /Fotents.obj
742tents5.obj: .\tents.c .\puzzles.h .\maxflow.h
743 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tents.c /Fotents5.obj
744tents3.obj: .\tents.c .\puzzles.h .\maxflow.h
745 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\tents.c /Fotents3.obj
746towers.obj: .\towers.c .\puzzles.h .\latin.h
747 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\towers.c /Fotowers.obj
748towers5.obj: .\towers.c .\puzzles.h .\latin.h
749 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\towers.c /Fotowers5.obj
750towers2.obj: .\towers.c .\puzzles.h .\latin.h
751 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\towers.c /Fotowers2.obj
752tracks.obj: .\tracks.c .\puzzles.h
753 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tracks.c /Fotracks.obj
754tracks3.obj: .\tracks.c .\puzzles.h
755 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tracks.c /Fotracks3.obj
756tree234.obj: .\tree234.c .\tree234.h .\puzzles.h
757 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tree234.c /Fotree234.obj
758twiddle.obj: .\twiddle.c .\puzzles.h
759 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\twiddle.c /Fotwiddle.obj
760twiddle3.obj: .\twiddle.c .\puzzles.h
761 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\twiddle.c /Fotwiddle3.obj
762undead.obj: .\undead.c .\puzzles.h
763 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\undead.c /Foundead.obj
764undead3.obj: .\undead.c .\puzzles.h
765 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\undead.c /Foundead3.obj
766unequal.obj: .\unequal.c .\puzzles.h .\latin.h
767 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unequal.c /Founequal.obj
768unequal5.obj: .\unequal.c .\puzzles.h .\latin.h
769 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unequal.c /Founequal5.obj
770unequal2.obj: .\unequal.c .\puzzles.h .\latin.h
771 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unequal.c /Founequal2.obj
772unruly.obj: .\unruly.c .\puzzles.h
773 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unruly.c /Founruly.obj
774unruly5.obj: .\unruly.c .\puzzles.h
775 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unruly.c /Founruly5.obj
776unruly2.obj: .\unruly.c .\puzzles.h
777 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unruly.c /Founruly2.obj
778untangle.obj: .\untangle.c .\puzzles.h .\tree234.h
779 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\untangle.c /Fountangle.obj
780untangl3.obj: .\untangle.c .\puzzles.h .\tree234.h
781 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\untangle.c /Fountangl3.obj
782version.obj: .\version.c .\version.h
783 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\version.c /Foversion.obj
784windows.obj: .\windows.c .\puzzles.h .\resource.h
785 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\windows.c /Fowindows.obj
786windows1.obj: .\windows.c .\puzzles.h .\resource.h
787 $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\windows.c /Fowindows1.obj
788
789
790clean: tidy
791 -del *.exe
792
793tidy:
794 -del *.obj
795 -del *.res
796 -del *.pch
797 -del *.aps
798 -del *.ilk
799 -del *.pdb
800 -del *.rsp
801 -del *.dsp
802 -del *.dsw
803 -del *.ncb
804 -del *.opt
805 -del *.plg
806 -del *.map
807 -del *.idb
808 -del debug.log
diff --git a/apps/plugins/puzzles/src/Recipe b/apps/plugins/puzzles/src/Recipe
index 3b57ef5e54..fc9bc1b51d 100644
--- a/apps/plugins/puzzles/src/Recipe
+++ b/apps/plugins/puzzles/src/Recipe
@@ -31,6 +31,10 @@ STANDALONE = nullfe random misc malloc
31 31
32ALL = list 32ALL = list
33 33
34LATIN_DEPS = matching tree234
35LATIN = latin LATIN_DEPS
36LATIN_SOLVER = latin[STANDALONE_SOLVER] LATIN_DEPS
37
34# First half of list.c. 38# First half of list.c.
35!begin >list.c 39!begin >list.c
36/* 40/*
@@ -61,6 +65,14 @@ const int gamecount = lenof(gamelist);
61# Unix standalone application for special-purpose obfuscation. 65# Unix standalone application for special-purpose obfuscation.
62obfusc : [U] obfusc STANDALONE 66obfusc : [U] obfusc STANDALONE
63 67
68# Test program built from latin.c.
69latincheck : [U] latin[STANDALONE_LATIN_TEST] LATIN_DEPS STANDALONE
70latincheck : [C] latin[STANDALONE_LATIN_TEST] LATIN_DEPS STANDALONE
71
72# Test program built from matching.c.
73matching : [U] matching[STANDALONE_MATCHING_TEST] tree234 STANDALONE
74matching : [C] matching[STANDALONE_MATCHING_TEST] tree234 STANDALONE
75
64puzzles : [G] windows[COMBINED] WINDOWS_COMMON COMMON ALL noicon.res 76puzzles : [G] windows[COMBINED] WINDOWS_COMMON COMMON ALL noicon.res
65 77
66# Mac OS X unified application containing all the puzzles. 78# Mac OS X unified application containing all the puzzles.
diff --git a/apps/plugins/puzzles/src/aclocal.m4 b/apps/plugins/puzzles/src/aclocal.m4
new file mode 100644
index 0000000000..04369a2130
--- /dev/null
+++ b/apps/plugins/puzzles/src/aclocal.m4
@@ -0,0 +1,1832 @@
1# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
2
3# Copyright (C) 1996-2017 Free Software Foundation, Inc.
4
5# This file is free software; the Free Software Foundation
6# gives unlimited permission to copy and/or distribute it,
7# with or without modifications, as long as this notice is preserved.
8
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12# PARTICULAR PURPOSE.
13
14m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
15m4_ifndef([AC_AUTOCONF_VERSION],
16 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
17m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
18[m4_warning([this file was generated for autoconf 2.69.
19You have another version of autoconf. It may work, but is not guaranteed to.
20If you have problems, you may need to regenerate the build system entirely.
21To do so, use the procedure documented by the package, typically 'autoreconf'.])])
22
23# Configure paths for GTK+
24# Owen Taylor 1997-2001
25
26dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
27dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
28dnl pass to pkg-config
29dnl
30AC_DEFUN([AM_PATH_GTK_2_0],
31[dnl
32dnl Get the cflags and libraries from pkg-config
33dnl
34AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
35 , enable_gtktest=yes)
36
37 pkg_config_args=gtk+-2.0
38 for module in . $4
39 do
40 case "$module" in
41 gthread)
42 pkg_config_args="$pkg_config_args gthread-2.0"
43 ;;
44 esac
45 done
46
47 no_gtk=""
48
49 AC_REQUIRE([PKG_PROG_PKG_CONFIG])
50 PKG_PROG_PKG_CONFIG([0.7])
51
52 min_gtk_version=ifelse([$1], ,2.0.0,$1)
53 AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
54
55 if test x$PKG_CONFIG != xno ; then
56 ## don't try to run the test against uninstalled libtool libs
57 if $PKG_CONFIG --uninstalled $pkg_config_args; then
58 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
59 enable_gtktest=no
60 fi
61
62 if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
63 :
64 else
65 no_gtk=yes
66 fi
67 fi
68
69 if test x"$no_gtk" = x ; then
70 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
71 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
72 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
73 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
74 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
75 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
76 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
77 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
78 if test "x$enable_gtktest" = "xyes" ; then
79 ac_save_CFLAGS="$CFLAGS"
80 ac_save_LIBS="$LIBS"
81 CFLAGS="$CFLAGS $GTK_CFLAGS"
82 LIBS="$GTK_LIBS $LIBS"
83dnl
84dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
85dnl checks the results of pkg-config to some extent)
86dnl
87 rm -f conf.gtktest
88 AC_TRY_RUN([
89#include <gtk/gtk.h>
90#include <stdio.h>
91#include <stdlib.h>
92
93int
94main ()
95{
96 int major, minor, micro;
97 char *tmp_version;
98
99 fclose (fopen ("conf.gtktest", "w"));
100
101 /* HP/UX 9 (%@#!) writes to sscanf strings */
102 tmp_version = g_strdup("$min_gtk_version");
103 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
104 printf("%s, bad version string\n", "$min_gtk_version");
105 exit(1);
106 }
107
108 if ((gtk_major_version != $gtk_config_major_version) ||
109 (gtk_minor_version != $gtk_config_minor_version) ||
110 (gtk_micro_version != $gtk_config_micro_version))
111 {
112 printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
113 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
114 gtk_major_version, gtk_minor_version, gtk_micro_version);
115 printf ("*** was found! If pkg-config was correct, then it is best\n");
116 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
117 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
118 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
119 printf("*** required on your system.\n");
120 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
121 printf("*** to point to the correct configuration files\n");
122 }
123 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
124 (gtk_minor_version != GTK_MINOR_VERSION) ||
125 (gtk_micro_version != GTK_MICRO_VERSION))
126 {
127 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
128 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
129 printf("*** library (version %d.%d.%d)\n",
130 gtk_major_version, gtk_minor_version, gtk_micro_version);
131 }
132 else
133 {
134 if ((gtk_major_version > major) ||
135 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
136 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
137 {
138 return 0;
139 }
140 else
141 {
142 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
143 gtk_major_version, gtk_minor_version, gtk_micro_version);
144 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
145 major, minor, micro);
146 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
147 printf("***\n");
148 printf("*** If you have already installed a sufficiently new version, this error\n");
149 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
150 printf("*** being found. The easiest way to fix this is to remove the old version\n");
151 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
152 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
153 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
154 printf("*** so that the correct libraries are found at run-time))\n");
155 }
156 }
157 return 1;
158}
159],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
160 CFLAGS="$ac_save_CFLAGS"
161 LIBS="$ac_save_LIBS"
162 fi
163 fi
164 if test "x$no_gtk" = x ; then
165 AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
166 ifelse([$2], , :, [$2])
167 else
168 AC_MSG_RESULT(no)
169 if test "$PKG_CONFIG" = "no" ; then
170 echo "*** A new enough version of pkg-config was not found."
171 echo "*** See http://pkgconfig.sourceforge.net"
172 else
173 if test -f conf.gtktest ; then
174 :
175 else
176 echo "*** Could not run GTK+ test program, checking why..."
177 ac_save_CFLAGS="$CFLAGS"
178 ac_save_LIBS="$LIBS"
179 CFLAGS="$CFLAGS $GTK_CFLAGS"
180 LIBS="$LIBS $GTK_LIBS"
181 AC_TRY_LINK([
182#include <gtk/gtk.h>
183#include <stdio.h>
184], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
185 [ echo "*** The test program compiled, but did not run. This usually means"
186 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
187 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
188 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
189 echo "*** to the installed location Also, make sure you have run ldconfig if that"
190 echo "*** is required on your system"
191 echo "***"
192 echo "*** If you have an old version installed, it is best to remove it, although"
193 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
194 [ echo "*** The test program failed to compile or link. See the file config.log for the"
195 echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
196 CFLAGS="$ac_save_CFLAGS"
197 LIBS="$ac_save_LIBS"
198 fi
199 fi
200 GTK_CFLAGS=""
201 GTK_LIBS=""
202 ifelse([$3], , :, [$3])
203 fi
204 AC_SUBST(GTK_CFLAGS)
205 AC_SUBST(GTK_LIBS)
206 rm -f conf.gtktest
207])
208
209# Configure paths for GTK+
210# Owen Taylor 1997-2001
211
212dnl AM_PATH_GTK_3_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
213dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
214dnl pass to pkg-config
215dnl
216AC_DEFUN([AM_PATH_GTK_3_0],
217[m4_warn([obsolete], [AM_PATH_GTK_3_0 is deprecated, use PKG_CHECK_MODULES([GTK], [gtk+-3.0]) instead])
218dnl Get the cflags and libraries from pkg-config
219dnl
220AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
221 , enable_gtktest=yes)
222 min_gtk_version=ifelse([$1], [], [3.0.0], [$1])
223
224 pkg_config_args="gtk+-3.0 >= $min_gtk_version"
225 for module in . $4
226 do
227 case "$module" in
228 gthread)
229 pkg_config_args="$pkg_config_args gthread-2.0"
230 ;;
231 esac
232 done
233
234 no_gtk=""
235
236 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
237
238 if test x$PKG_CONFIG != xno ; then
239 if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
240 :
241 else
242 echo "*** pkg-config too old; version 0.7 or better required."
243 no_gtk=yes
244 PKG_CONFIG=no
245 fi
246 else
247 no_gtk=yes
248 fi
249
250 AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
251
252 if test x$PKG_CONFIG != xno ; then
253 ## don't try to run the test against uninstalled libtool libs
254 if $PKG_CONFIG --uninstalled $pkg_config_args; then
255 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
256 enable_gtktest=no
257 fi
258
259 if $PKG_CONFIG $pkg_config_args; then
260 :
261 else
262 no_gtk=yes
263 fi
264 fi
265
266 if test x"$no_gtk" = x ; then
267 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
268 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
269 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
270 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
271 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
272 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
273 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
274 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
275 if test "x$enable_gtktest" = "xyes" ; then
276 ac_save_CFLAGS="$CFLAGS"
277 ac_save_LIBS="$LIBS"
278 CFLAGS="$CFLAGS $GTK_CFLAGS"
279 LIBS="$GTK_LIBS $LIBS"
280dnl
281dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
282dnl checks the results of pkg-config to some extent)
283dnl
284 rm -f conf.gtktest
285 AC_TRY_RUN([
286#include <gtk/gtk.h>
287#include <stdio.h>
288#include <stdlib.h>
289
290int
291main ()
292{
293 unsigned int major, minor, micro;
294
295 fclose (fopen ("conf.gtktest", "w"));
296
297 if (sscanf("$min_gtk_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
298 printf("%s, bad version string\n", "$min_gtk_version");
299 exit(1);
300 }
301
302 if ((gtk_major_version != $gtk_config_major_version) ||
303 (gtk_minor_version != $gtk_config_minor_version) ||
304 (gtk_micro_version != $gtk_config_micro_version))
305 {
306 printf("\n*** 'pkg-config --modversion gtk+-3.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
307 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
308 gtk_major_version, gtk_minor_version, gtk_micro_version);
309 printf ("*** was found! If pkg-config was correct, then it is best\n");
310 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
311 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
312 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
313 printf("*** required on your system.\n");
314 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
315 printf("*** to point to the correct configuration files\n");
316 }
317 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
318 (gtk_minor_version != GTK_MINOR_VERSION) ||
319 (gtk_micro_version != GTK_MICRO_VERSION))
320 {
321 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
322 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
323 printf("*** library (version %d.%d.%d)\n",
324 gtk_major_version, gtk_minor_version, gtk_micro_version);
325 }
326 else
327 {
328 if ((gtk_major_version > major) ||
329 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
330 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
331 {
332 return 0;
333 }
334 else
335 {
336 printf("\n*** An old version of GTK+ (%u.%u.%u) was found.\n",
337 gtk_major_version, gtk_minor_version, gtk_micro_version);
338 printf("*** You need a version of GTK+ newer than %u.%u.%u. The latest version of\n",
339 major, minor, micro);
340 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
341 printf("***\n");
342 printf("*** If you have already installed a sufficiently new version, this error\n");
343 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
344 printf("*** being found. The easiest way to fix this is to remove the old version\n");
345 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
346 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
347 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
348 printf("*** so that the correct libraries are found at run-time))\n");
349 }
350 }
351 return 1;
352}
353],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
354 CFLAGS="$ac_save_CFLAGS"
355 LIBS="$ac_save_LIBS"
356 fi
357 fi
358 if test "x$no_gtk" = x ; then
359 AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
360 ifelse([$2], , :, [$2])
361 else
362 AC_MSG_RESULT(no)
363 if test "$PKG_CONFIG" = "no" ; then
364 echo "*** A new enough version of pkg-config was not found."
365 echo "*** See http://pkgconfig.sourceforge.net"
366 else
367 if test -f conf.gtktest ; then
368 :
369 else
370 echo "*** Could not run GTK+ test program, checking why..."
371 ac_save_CFLAGS="$CFLAGS"
372 ac_save_LIBS="$LIBS"
373 CFLAGS="$CFLAGS $GTK_CFLAGS"
374 LIBS="$LIBS $GTK_LIBS"
375 AC_TRY_LINK([
376#include <gtk/gtk.h>
377#include <stdio.h>
378], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
379 [ echo "*** The test program compiled, but did not run. This usually means"
380 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
381 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
382 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
383 echo "*** to the installed location Also, make sure you have run ldconfig if that"
384 echo "*** is required on your system"
385 echo "***"
386 echo "*** If you have an old version installed, it is best to remove it, although"
387 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
388 [ echo "*** The test program failed to compile or link. See the file config.log for the"
389 echo "*** exact error that occurred. This usually means GTK+ is incorrectly installed."])
390 CFLAGS="$ac_save_CFLAGS"
391 LIBS="$ac_save_LIBS"
392 fi
393 fi
394 GTK_CFLAGS=""
395 GTK_LIBS=""
396 ifelse([$3], , :, [$3])
397 fi
398 AC_SUBST(GTK_CFLAGS)
399 AC_SUBST(GTK_LIBS)
400 rm -f conf.gtktest
401])
402
403dnl GTK_CHECK_BACKEND(BACKEND-NAME [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
404dnl Tests for BACKEND-NAME in the GTK targets list
405dnl
406AC_DEFUN([GTK_CHECK_BACKEND],
407[m4_warn([obsolete], [GTK_CHECK_BACKEND is deprecated, use PKG_CHECK_MODULES([GTK_X11], [gtk+-x11-3.0]) or similar instead])
408 pkg_config_args=ifelse([$1],,gtk+-3.0, gtk+-$1-3.0)
409 min_gtk_version=ifelse([$2],,3.0.0,$2)
410 pkg_config_args="$pkg_config_args >= $min_gtk_version"
411
412 AC_PATH_PROG(PKG_CONFIG, [pkg-config], [AC_MSG_ERROR([No pkg-config found])])
413
414 if $PKG_CONFIG $pkg_config_args ; then
415 target_found=yes
416 else
417 target_found=no
418 fi
419
420 if test "x$target_found" = "xno"; then
421 ifelse([$4],,[AC_MSG_ERROR([Backend $backend not found.])],[$4])
422 else
423 ifelse([$3],,[:],[$3])
424 fi
425])
426
427# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
428# serial 12 (pkg-config-0.29.2)
429
430dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
431dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
432dnl
433dnl This program is free software; you can redistribute it and/or modify
434dnl it under the terms of the GNU General Public License as published by
435dnl the Free Software Foundation; either version 2 of the License, or
436dnl (at your option) any later version.
437dnl
438dnl This program is distributed in the hope that it will be useful, but
439dnl WITHOUT ANY WARRANTY; without even the implied warranty of
440dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
441dnl General Public License for more details.
442dnl
443dnl You should have received a copy of the GNU General Public License
444dnl along with this program; if not, write to the Free Software
445dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
446dnl 02111-1307, USA.
447dnl
448dnl As a special exception to the GNU General Public License, if you
449dnl distribute this file as part of a program that contains a
450dnl configuration script generated by Autoconf, you may include it under
451dnl the same distribution terms that you use for the rest of that
452dnl program.
453
454dnl PKG_PREREQ(MIN-VERSION)
455dnl -----------------------
456dnl Since: 0.29
457dnl
458dnl Verify that the version of the pkg-config macros are at least
459dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
460dnl installed version of pkg-config, this checks the developer's version
461dnl of pkg.m4 when generating configure.
462dnl
463dnl To ensure that this macro is defined, also add:
464dnl m4_ifndef([PKG_PREREQ],
465dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
466dnl
467dnl See the "Since" comment for each macro you use to see what version
468dnl of the macros you require.
469m4_defun([PKG_PREREQ],
470[m4_define([PKG_MACROS_VERSION], [0.29.2])
471m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
472 [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
473])dnl PKG_PREREQ
474
475dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
476dnl ----------------------------------
477dnl Since: 0.16
478dnl
479dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
480dnl first found in the path. Checks that the version of pkg-config found
481dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
482dnl used since that's the first version where most current features of
483dnl pkg-config existed.
484AC_DEFUN([PKG_PROG_PKG_CONFIG],
485[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
486m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
487m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
488AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
489AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
490AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
491
492if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
493 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
494fi
495if test -n "$PKG_CONFIG"; then
496 _pkg_min_version=m4_default([$1], [0.9.0])
497 AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
498 if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
499 AC_MSG_RESULT([yes])
500 else
501 AC_MSG_RESULT([no])
502 PKG_CONFIG=""
503 fi
504fi[]dnl
505])dnl PKG_PROG_PKG_CONFIG
506
507dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
508dnl -------------------------------------------------------------------
509dnl Since: 0.18
510dnl
511dnl Check to see whether a particular set of modules exists. Similar to
512dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
513dnl
514dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
515dnl only at the first occurence in configure.ac, so if the first place
516dnl it's called might be skipped (such as if it is within an "if", you
517dnl have to call PKG_CHECK_EXISTS manually
518AC_DEFUN([PKG_CHECK_EXISTS],
519[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
520if test -n "$PKG_CONFIG" && \
521 AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
522 m4_default([$2], [:])
523m4_ifvaln([$3], [else
524 $3])dnl
525fi])
526
527dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
528dnl ---------------------------------------------
529dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
530dnl pkg_failed based on the result.
531m4_define([_PKG_CONFIG],
532[if test -n "$$1"; then
533 pkg_cv_[]$1="$$1"
534 elif test -n "$PKG_CONFIG"; then
535 PKG_CHECK_EXISTS([$3],
536 [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
537 test "x$?" != "x0" && pkg_failed=yes ],
538 [pkg_failed=yes])
539 else
540 pkg_failed=untried
541fi[]dnl
542])dnl _PKG_CONFIG
543
544dnl _PKG_SHORT_ERRORS_SUPPORTED
545dnl ---------------------------
546dnl Internal check to see if pkg-config supports short errors.
547AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
548[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
549if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
550 _pkg_short_errors_supported=yes
551else
552 _pkg_short_errors_supported=no
553fi[]dnl
554])dnl _PKG_SHORT_ERRORS_SUPPORTED
555
556
557dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
558dnl [ACTION-IF-NOT-FOUND])
559dnl --------------------------------------------------------------
560dnl Since: 0.4.0
561dnl
562dnl Note that if there is a possibility the first call to
563dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
564dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
565AC_DEFUN([PKG_CHECK_MODULES],
566[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
567AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
568AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
569
570pkg_failed=no
571AC_MSG_CHECKING([for $2])
572
573_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
574_PKG_CONFIG([$1][_LIBS], [libs], [$2])
575
576m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
577and $1[]_LIBS to avoid the need to call pkg-config.
578See the pkg-config man page for more details.])
579
580if test $pkg_failed = yes; then
581 AC_MSG_RESULT([no])
582 _PKG_SHORT_ERRORS_SUPPORTED
583 if test $_pkg_short_errors_supported = yes; then
584 $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
585 else
586 $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
587 fi
588 # Put the nasty error message in config.log where it belongs
589 echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
590
591 m4_default([$4], [AC_MSG_ERROR(
592[Package requirements ($2) were not met:
593
594$$1_PKG_ERRORS
595
596Consider adjusting the PKG_CONFIG_PATH environment variable if you
597installed software in a non-standard prefix.
598
599_PKG_TEXT])[]dnl
600 ])
601elif test $pkg_failed = untried; then
602 AC_MSG_RESULT([no])
603 m4_default([$4], [AC_MSG_FAILURE(
604[The pkg-config script could not be found or is too old. Make sure it
605is in your PATH or set the PKG_CONFIG environment variable to the full
606path to pkg-config.
607
608_PKG_TEXT
609
610To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
611 ])
612else
613 $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
614 $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
615 AC_MSG_RESULT([yes])
616 $3
617fi[]dnl
618])dnl PKG_CHECK_MODULES
619
620
621dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
622dnl [ACTION-IF-NOT-FOUND])
623dnl ---------------------------------------------------------------------
624dnl Since: 0.29
625dnl
626dnl Checks for existence of MODULES and gathers its build flags with
627dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
628dnl and VARIABLE-PREFIX_LIBS from --libs.
629dnl
630dnl Note that if there is a possibility the first call to
631dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
632dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
633dnl configure.ac.
634AC_DEFUN([PKG_CHECK_MODULES_STATIC],
635[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
636_save_PKG_CONFIG=$PKG_CONFIG
637PKG_CONFIG="$PKG_CONFIG --static"
638PKG_CHECK_MODULES($@)
639PKG_CONFIG=$_save_PKG_CONFIG[]dnl
640])dnl PKG_CHECK_MODULES_STATIC
641
642
643dnl PKG_INSTALLDIR([DIRECTORY])
644dnl -------------------------
645dnl Since: 0.27
646dnl
647dnl Substitutes the variable pkgconfigdir as the location where a module
648dnl should install pkg-config .pc files. By default the directory is
649dnl $libdir/pkgconfig, but the default can be changed by passing
650dnl DIRECTORY. The user can override through the --with-pkgconfigdir
651dnl parameter.
652AC_DEFUN([PKG_INSTALLDIR],
653[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
654m4_pushdef([pkg_description],
655 [pkg-config installation directory @<:@]pkg_default[@:>@])
656AC_ARG_WITH([pkgconfigdir],
657 [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
658 [with_pkgconfigdir=]pkg_default)
659AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
660m4_popdef([pkg_default])
661m4_popdef([pkg_description])
662])dnl PKG_INSTALLDIR
663
664
665dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
666dnl --------------------------------
667dnl Since: 0.27
668dnl
669dnl Substitutes the variable noarch_pkgconfigdir as the location where a
670dnl module should install arch-independent pkg-config .pc files. By
671dnl default the directory is $datadir/pkgconfig, but the default can be
672dnl changed by passing DIRECTORY. The user can override through the
673dnl --with-noarch-pkgconfigdir parameter.
674AC_DEFUN([PKG_NOARCH_INSTALLDIR],
675[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
676m4_pushdef([pkg_description],
677 [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
678AC_ARG_WITH([noarch-pkgconfigdir],
679 [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
680 [with_noarch_pkgconfigdir=]pkg_default)
681AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
682m4_popdef([pkg_default])
683m4_popdef([pkg_description])
684])dnl PKG_NOARCH_INSTALLDIR
685
686
687dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
688dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
689dnl -------------------------------------------
690dnl Since: 0.28
691dnl
692dnl Retrieves the value of the pkg-config variable for the given module.
693AC_DEFUN([PKG_CHECK_VAR],
694[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
695AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
696
697_PKG_CONFIG([$1], [variable="][$3]["], [$2])
698AS_VAR_COPY([$1], [pkg_cv_][$1])
699
700AS_VAR_IF([$1], [""], [$5], [$4])dnl
701])dnl PKG_CHECK_VAR
702
703# Copyright (C) 2002-2017 Free Software Foundation, Inc.
704#
705# This file is free software; the Free Software Foundation
706# gives unlimited permission to copy and/or distribute it,
707# with or without modifications, as long as this notice is preserved.
708
709# AM_AUTOMAKE_VERSION(VERSION)
710# ----------------------------
711# Automake X.Y traces this macro to ensure aclocal.m4 has been
712# generated from the m4 files accompanying Automake X.Y.
713# (This private macro should not be called outside this file.)
714AC_DEFUN([AM_AUTOMAKE_VERSION],
715[am__api_version='1.15'
716dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
717dnl require some minimum version. Point them to the right macro.
718m4_if([$1], [1.15.1], [],
719 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
720])
721
722# _AM_AUTOCONF_VERSION(VERSION)
723# -----------------------------
724# aclocal traces this macro to find the Autoconf version.
725# This is a private macro too. Using m4_define simplifies
726# the logic in aclocal, which can simply ignore this definition.
727m4_define([_AM_AUTOCONF_VERSION], [])
728
729# AM_SET_CURRENT_AUTOMAKE_VERSION
730# -------------------------------
731# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
732# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
733AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
734[AM_AUTOMAKE_VERSION([1.15.1])dnl
735m4_ifndef([AC_AUTOCONF_VERSION],
736 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
737_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
738
739# AM_AUX_DIR_EXPAND -*- Autoconf -*-
740
741# Copyright (C) 2001-2017 Free Software Foundation, Inc.
742#
743# This file is free software; the Free Software Foundation
744# gives unlimited permission to copy and/or distribute it,
745# with or without modifications, as long as this notice is preserved.
746
747# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
748# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
749# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
750#
751# Of course, Automake must honor this variable whenever it calls a
752# tool from the auxiliary directory. The problem is that $srcdir (and
753# therefore $ac_aux_dir as well) can be either absolute or relative,
754# depending on how configure is run. This is pretty annoying, since
755# it makes $ac_aux_dir quite unusable in subdirectories: in the top
756# source directory, any form will work fine, but in subdirectories a
757# relative path needs to be adjusted first.
758#
759# $ac_aux_dir/missing
760# fails when called from a subdirectory if $ac_aux_dir is relative
761# $top_srcdir/$ac_aux_dir/missing
762# fails if $ac_aux_dir is absolute,
763# fails when called from a subdirectory in a VPATH build with
764# a relative $ac_aux_dir
765#
766# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
767# are both prefixed by $srcdir. In an in-source build this is usually
768# harmless because $srcdir is '.', but things will broke when you
769# start a VPATH build or use an absolute $srcdir.
770#
771# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
772# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
773# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
774# and then we would define $MISSING as
775# MISSING="\${SHELL} $am_aux_dir/missing"
776# This will work as long as MISSING is not called from configure, because
777# unfortunately $(top_srcdir) has no meaning in configure.
778# However there are other variables, like CC, which are often used in
779# configure, and could therefore not use this "fixed" $ac_aux_dir.
780#
781# Another solution, used here, is to always expand $ac_aux_dir to an
782# absolute PATH. The drawback is that using absolute paths prevent a
783# configured tree to be moved without reconfiguration.
784
785AC_DEFUN([AM_AUX_DIR_EXPAND],
786[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
787# Expand $ac_aux_dir to an absolute path.
788am_aux_dir=`cd "$ac_aux_dir" && pwd`
789])
790
791# AM_CONDITIONAL -*- Autoconf -*-
792
793# Copyright (C) 1997-2017 Free Software Foundation, Inc.
794#
795# This file is free software; the Free Software Foundation
796# gives unlimited permission to copy and/or distribute it,
797# with or without modifications, as long as this notice is preserved.
798
799# AM_CONDITIONAL(NAME, SHELL-CONDITION)
800# -------------------------------------
801# Define a conditional.
802AC_DEFUN([AM_CONDITIONAL],
803[AC_PREREQ([2.52])dnl
804 m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
805 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
806AC_SUBST([$1_TRUE])dnl
807AC_SUBST([$1_FALSE])dnl
808_AM_SUBST_NOTMAKE([$1_TRUE])dnl
809_AM_SUBST_NOTMAKE([$1_FALSE])dnl
810m4_define([_AM_COND_VALUE_$1], [$2])dnl
811if $2; then
812 $1_TRUE=
813 $1_FALSE='#'
814else
815 $1_TRUE='#'
816 $1_FALSE=
817fi
818AC_CONFIG_COMMANDS_PRE(
819[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
820 AC_MSG_ERROR([[conditional "$1" was never defined.
821Usually this means the macro was only invoked conditionally.]])
822fi])])
823
824# Copyright (C) 1999-2017 Free Software Foundation, Inc.
825#
826# This file is free software; the Free Software Foundation
827# gives unlimited permission to copy and/or distribute it,
828# with or without modifications, as long as this notice is preserved.
829
830
831# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
832# written in clear, in which case automake, when reading aclocal.m4,
833# will think it sees a *use*, and therefore will trigger all it's
834# C support machinery. Also note that it means that autoscan, seeing
835# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
836
837
838# _AM_DEPENDENCIES(NAME)
839# ----------------------
840# See how the compiler implements dependency checking.
841# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
842# We try a few techniques and use that to set a single cache variable.
843#
844# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
845# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
846# dependency, and given that the user is not expected to run this macro,
847# just rely on AC_PROG_CC.
848AC_DEFUN([_AM_DEPENDENCIES],
849[AC_REQUIRE([AM_SET_DEPDIR])dnl
850AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
851AC_REQUIRE([AM_MAKE_INCLUDE])dnl
852AC_REQUIRE([AM_DEP_TRACK])dnl
853
854m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
855 [$1], [CXX], [depcc="$CXX" am_compiler_list=],
856 [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
857 [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
858 [$1], [UPC], [depcc="$UPC" am_compiler_list=],
859 [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
860 [depcc="$$1" am_compiler_list=])
861
862AC_CACHE_CHECK([dependency style of $depcc],
863 [am_cv_$1_dependencies_compiler_type],
864[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
865 # We make a subdir and do the tests there. Otherwise we can end up
866 # making bogus files that we don't know about and never remove. For
867 # instance it was reported that on HP-UX the gcc test will end up
868 # making a dummy file named 'D' -- because '-MD' means "put the output
869 # in D".
870 rm -rf conftest.dir
871 mkdir conftest.dir
872 # Copy depcomp to subdir because otherwise we won't find it if we're
873 # using a relative directory.
874 cp "$am_depcomp" conftest.dir
875 cd conftest.dir
876 # We will build objects and dependencies in a subdirectory because
877 # it helps to detect inapplicable dependency modes. For instance
878 # both Tru64's cc and ICC support -MD to output dependencies as a
879 # side effect of compilation, but ICC will put the dependencies in
880 # the current directory while Tru64 will put them in the object
881 # directory.
882 mkdir sub
883
884 am_cv_$1_dependencies_compiler_type=none
885 if test "$am_compiler_list" = ""; then
886 am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
887 fi
888 am__universal=false
889 m4_case([$1], [CC],
890 [case " $depcc " in #(
891 *\ -arch\ *\ -arch\ *) am__universal=true ;;
892 esac],
893 [CXX],
894 [case " $depcc " in #(
895 *\ -arch\ *\ -arch\ *) am__universal=true ;;
896 esac])
897
898 for depmode in $am_compiler_list; do
899 # Setup a source with many dependencies, because some compilers
900 # like to wrap large dependency lists on column 80 (with \), and
901 # we should not choose a depcomp mode which is confused by this.
902 #
903 # We need to recreate these files for each test, as the compiler may
904 # overwrite some of them when testing with obscure command lines.
905 # This happens at least with the AIX C compiler.
906 : > sub/conftest.c
907 for i in 1 2 3 4 5 6; do
908 echo '#include "conftst'$i'.h"' >> sub/conftest.c
909 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
910 # Solaris 10 /bin/sh.
911 echo '/* dummy */' > sub/conftst$i.h
912 done
913 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
914
915 # We check with '-c' and '-o' for the sake of the "dashmstdout"
916 # mode. It turns out that the SunPro C++ compiler does not properly
917 # handle '-M -o', and we need to detect this. Also, some Intel
918 # versions had trouble with output in subdirs.
919 am__obj=sub/conftest.${OBJEXT-o}
920 am__minus_obj="-o $am__obj"
921 case $depmode in
922 gcc)
923 # This depmode causes a compiler race in universal mode.
924 test "$am__universal" = false || continue
925 ;;
926 nosideeffect)
927 # After this tag, mechanisms are not by side-effect, so they'll
928 # only be used when explicitly requested.
929 if test "x$enable_dependency_tracking" = xyes; then
930 continue
931 else
932 break
933 fi
934 ;;
935 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
936 # This compiler won't grok '-c -o', but also, the minuso test has
937 # not run yet. These depmodes are late enough in the game, and
938 # so weak that their functioning should not be impacted.
939 am__obj=conftest.${OBJEXT-o}
940 am__minus_obj=
941 ;;
942 none) break ;;
943 esac
944 if depmode=$depmode \
945 source=sub/conftest.c object=$am__obj \
946 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
947 $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
948 >/dev/null 2>conftest.err &&
949 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
950 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
951 grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
952 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
953 # icc doesn't choke on unknown options, it will just issue warnings
954 # or remarks (even with -Werror). So we grep stderr for any message
955 # that says an option was ignored or not supported.
956 # When given -MP, icc 7.0 and 7.1 complain thusly:
957 # icc: Command line warning: ignoring option '-M'; no argument required
958 # The diagnosis changed in icc 8.0:
959 # icc: Command line remark: option '-MP' not supported
960 if (grep 'ignoring option' conftest.err ||
961 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
962 am_cv_$1_dependencies_compiler_type=$depmode
963 break
964 fi
965 fi
966 done
967
968 cd ..
969 rm -rf conftest.dir
970else
971 am_cv_$1_dependencies_compiler_type=none
972fi
973])
974AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
975AM_CONDITIONAL([am__fastdep$1], [
976 test "x$enable_dependency_tracking" != xno \
977 && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
978])
979
980
981# AM_SET_DEPDIR
982# -------------
983# Choose a directory name for dependency files.
984# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
985AC_DEFUN([AM_SET_DEPDIR],
986[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
987AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
988])
989
990
991# AM_DEP_TRACK
992# ------------
993AC_DEFUN([AM_DEP_TRACK],
994[AC_ARG_ENABLE([dependency-tracking], [dnl
995AS_HELP_STRING(
996 [--enable-dependency-tracking],
997 [do not reject slow dependency extractors])
998AS_HELP_STRING(
999 [--disable-dependency-tracking],
1000 [speeds up one-time build])])
1001if test "x$enable_dependency_tracking" != xno; then
1002 am_depcomp="$ac_aux_dir/depcomp"
1003 AMDEPBACKSLASH='\'
1004 am__nodep='_no'
1005fi
1006AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
1007AC_SUBST([AMDEPBACKSLASH])dnl
1008_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
1009AC_SUBST([am__nodep])dnl
1010_AM_SUBST_NOTMAKE([am__nodep])dnl
1011])
1012
1013# Generate code to set up dependency tracking. -*- Autoconf -*-
1014
1015# Copyright (C) 1999-2017 Free Software Foundation, Inc.
1016#
1017# This file is free software; the Free Software Foundation
1018# gives unlimited permission to copy and/or distribute it,
1019# with or without modifications, as long as this notice is preserved.
1020
1021
1022# _AM_OUTPUT_DEPENDENCY_COMMANDS
1023# ------------------------------
1024AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
1025[{
1026 # Older Autoconf quotes --file arguments for eval, but not when files
1027 # are listed without --file. Let's play safe and only enable the eval
1028 # if we detect the quoting.
1029 case $CONFIG_FILES in
1030 *\'*) eval set x "$CONFIG_FILES" ;;
1031 *) set x $CONFIG_FILES ;;
1032 esac
1033 shift
1034 for mf
1035 do
1036 # Strip MF so we end up with the name of the file.
1037 mf=`echo "$mf" | sed -e 's/:.*$//'`
1038 # Check whether this is an Automake generated Makefile or not.
1039 # We used to match only the files named 'Makefile.in', but
1040 # some people rename them; so instead we look at the file content.
1041 # Grep'ing the first line is not enough: some people post-process
1042 # each Makefile.in and add a new line on top of each file to say so.
1043 # Grep'ing the whole file is not good either: AIX grep has a line
1044 # limit of 2048, but all sed's we know have understand at least 4000.
1045 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
1046 dirpart=`AS_DIRNAME("$mf")`
1047 else
1048 continue
1049 fi
1050 # Extract the definition of DEPDIR, am__include, and am__quote
1051 # from the Makefile without running 'make'.
1052 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
1053 test -z "$DEPDIR" && continue
1054 am__include=`sed -n 's/^am__include = //p' < "$mf"`
1055 test -z "$am__include" && continue
1056 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
1057 # Find all dependency output files, they are included files with
1058 # $(DEPDIR) in their names. We invoke sed twice because it is the
1059 # simplest approach to changing $(DEPDIR) to its actual value in the
1060 # expansion.
1061 for file in `sed -n "
1062 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
1063 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
1064 # Make sure the directory exists.
1065 test -f "$dirpart/$file" && continue
1066 fdir=`AS_DIRNAME(["$file"])`
1067 AS_MKDIR_P([$dirpart/$fdir])
1068 # echo "creating $dirpart/$file"
1069 echo '# dummy' > "$dirpart/$file"
1070 done
1071 done
1072}
1073])# _AM_OUTPUT_DEPENDENCY_COMMANDS
1074
1075
1076# AM_OUTPUT_DEPENDENCY_COMMANDS
1077# -----------------------------
1078# This macro should only be invoked once -- use via AC_REQUIRE.
1079#
1080# This code is only required when automatic dependency tracking
1081# is enabled. FIXME. This creates each '.P' file that we will
1082# need in order to bootstrap the dependency handling code.
1083AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
1084[AC_CONFIG_COMMANDS([depfiles],
1085 [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
1086 [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
1087])
1088
1089# Do all the work for Automake. -*- Autoconf -*-
1090
1091# Copyright (C) 1996-2017 Free Software Foundation, Inc.
1092#
1093# This file is free software; the Free Software Foundation
1094# gives unlimited permission to copy and/or distribute it,
1095# with or without modifications, as long as this notice is preserved.
1096
1097# This macro actually does too much. Some checks are only needed if
1098# your package does certain things. But this isn't really a big deal.
1099
1100dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
1101m4_define([AC_PROG_CC],
1102m4_defn([AC_PROG_CC])
1103[_AM_PROG_CC_C_O
1104])
1105
1106# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
1107# AM_INIT_AUTOMAKE([OPTIONS])
1108# -----------------------------------------------
1109# The call with PACKAGE and VERSION arguments is the old style
1110# call (pre autoconf-2.50), which is being phased out. PACKAGE
1111# and VERSION should now be passed to AC_INIT and removed from
1112# the call to AM_INIT_AUTOMAKE.
1113# We support both call styles for the transition. After
1114# the next Automake release, Autoconf can make the AC_INIT
1115# arguments mandatory, and then we can depend on a new Autoconf
1116# release and drop the old call support.
1117AC_DEFUN([AM_INIT_AUTOMAKE],
1118[AC_PREREQ([2.65])dnl
1119dnl Autoconf wants to disallow AM_ names. We explicitly allow
1120dnl the ones we care about.
1121m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
1122AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
1123AC_REQUIRE([AC_PROG_INSTALL])dnl
1124if test "`cd $srcdir && pwd`" != "`pwd`"; then
1125 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
1126 # is not polluted with repeated "-I."
1127 AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
1128 # test to see if srcdir already configured
1129 if test -f $srcdir/config.status; then
1130 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
1131 fi
1132fi
1133
1134# test whether we have cygpath
1135if test -z "$CYGPATH_W"; then
1136 if (cygpath --version) >/dev/null 2>/dev/null; then
1137 CYGPATH_W='cygpath -w'
1138 else
1139 CYGPATH_W=echo
1140 fi
1141fi
1142AC_SUBST([CYGPATH_W])
1143
1144# Define the identity of the package.
1145dnl Distinguish between old-style and new-style calls.
1146m4_ifval([$2],
1147[AC_DIAGNOSE([obsolete],
1148 [$0: two- and three-arguments forms are deprecated.])
1149m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
1150 AC_SUBST([PACKAGE], [$1])dnl
1151 AC_SUBST([VERSION], [$2])],
1152[_AM_SET_OPTIONS([$1])dnl
1153dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
1154m4_if(
1155 m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
1156 [ok:ok],,
1157 [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
1158 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
1159 AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
1160
1161_AM_IF_OPTION([no-define],,
1162[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
1163 AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
1164
1165# Some tools Automake needs.
1166AC_REQUIRE([AM_SANITY_CHECK])dnl
1167AC_REQUIRE([AC_ARG_PROGRAM])dnl
1168AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
1169AM_MISSING_PROG([AUTOCONF], [autoconf])
1170AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
1171AM_MISSING_PROG([AUTOHEADER], [autoheader])
1172AM_MISSING_PROG([MAKEINFO], [makeinfo])
1173AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
1174AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
1175AC_REQUIRE([AC_PROG_MKDIR_P])dnl
1176# For better backward compatibility. To be removed once Automake 1.9.x
1177# dies out for good. For more background, see:
1178# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
1179# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
1180AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
1181# We need awk for the "check" target (and possibly the TAP driver). The
1182# system "awk" is bad on some platforms.
1183AC_REQUIRE([AC_PROG_AWK])dnl
1184AC_REQUIRE([AC_PROG_MAKE_SET])dnl
1185AC_REQUIRE([AM_SET_LEADING_DOT])dnl
1186_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
1187 [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
1188 [_AM_PROG_TAR([v7])])])
1189_AM_IF_OPTION([no-dependencies],,
1190[AC_PROVIDE_IFELSE([AC_PROG_CC],
1191 [_AM_DEPENDENCIES([CC])],
1192 [m4_define([AC_PROG_CC],
1193 m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
1194AC_PROVIDE_IFELSE([AC_PROG_CXX],
1195 [_AM_DEPENDENCIES([CXX])],
1196 [m4_define([AC_PROG_CXX],
1197 m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
1198AC_PROVIDE_IFELSE([AC_PROG_OBJC],
1199 [_AM_DEPENDENCIES([OBJC])],
1200 [m4_define([AC_PROG_OBJC],
1201 m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
1202AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
1203 [_AM_DEPENDENCIES([OBJCXX])],
1204 [m4_define([AC_PROG_OBJCXX],
1205 m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
1206])
1207AC_REQUIRE([AM_SILENT_RULES])dnl
1208dnl The testsuite driver may need to know about EXEEXT, so add the
1209dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
1210dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
1211AC_CONFIG_COMMANDS_PRE(dnl
1212[m4_provide_if([_AM_COMPILER_EXEEXT],
1213 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
1214
1215# POSIX will say in a future version that running "rm -f" with no argument
1216# is OK; and we want to be able to make that assumption in our Makefile
1217# recipes. So use an aggressive probe to check that the usage we want is
1218# actually supported "in the wild" to an acceptable degree.
1219# See automake bug#10828.
1220# To make any issue more visible, cause the running configure to be aborted
1221# by default if the 'rm' program in use doesn't match our expectations; the
1222# user can still override this though.
1223if rm -f && rm -fr && rm -rf; then : OK; else
1224 cat >&2 <<'END'
1225Oops!
1226
1227Your 'rm' program seems unable to run without file operands specified
1228on the command line, even when the '-f' option is present. This is contrary
1229to the behaviour of most rm programs out there, and not conforming with
1230the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
1231
1232Please tell bug-automake@gnu.org about your system, including the value
1233of your $PATH and any error possibly output before this message. This
1234can help us improve future automake versions.
1235
1236END
1237 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
1238 echo 'Configuration will proceed anyway, since you have set the' >&2
1239 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
1240 echo >&2
1241 else
1242 cat >&2 <<'END'
1243Aborting the configuration process, to ensure you take notice of the issue.
1244
1245You can download and install GNU coreutils to get an 'rm' implementation
1246that behaves properly: <http://www.gnu.org/software/coreutils/>.
1247
1248If you want to complete the configuration process using your problematic
1249'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
1250to "yes", and re-run configure.
1251
1252END
1253 AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
1254 fi
1255fi
1256dnl The trailing newline in this macro's definition is deliberate, for
1257dnl backward compatibility and to allow trailing 'dnl'-style comments
1258dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
1259])
1260
1261dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
1262dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
1263dnl mangled by Autoconf and run in a shell conditional statement.
1264m4_define([_AC_COMPILER_EXEEXT],
1265m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
1266
1267# When config.status generates a header, we must update the stamp-h file.
1268# This file resides in the same directory as the config header
1269# that is generated. The stamp files are numbered to have different names.
1270
1271# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
1272# loop where config.status creates the headers, so we can generate
1273# our stamp files there.
1274AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
1275[# Compute $1's index in $config_headers.
1276_am_arg=$1
1277_am_stamp_count=1
1278for _am_header in $config_headers :; do
1279 case $_am_header in
1280 $_am_arg | $_am_arg:* )
1281 break ;;
1282 * )
1283 _am_stamp_count=`expr $_am_stamp_count + 1` ;;
1284 esac
1285done
1286echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
1287
1288# Copyright (C) 2001-2017 Free Software Foundation, Inc.
1289#
1290# This file is free software; the Free Software Foundation
1291# gives unlimited permission to copy and/or distribute it,
1292# with or without modifications, as long as this notice is preserved.
1293
1294# AM_PROG_INSTALL_SH
1295# ------------------
1296# Define $install_sh.
1297AC_DEFUN([AM_PROG_INSTALL_SH],
1298[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
1299if test x"${install_sh+set}" != xset; then
1300 case $am_aux_dir in
1301 *\ * | *\ *)
1302 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
1303 *)
1304 install_sh="\${SHELL} $am_aux_dir/install-sh"
1305 esac
1306fi
1307AC_SUBST([install_sh])])
1308
1309# Copyright (C) 2003-2017 Free Software Foundation, Inc.
1310#
1311# This file is free software; the Free Software Foundation
1312# gives unlimited permission to copy and/or distribute it,
1313# with or without modifications, as long as this notice is preserved.
1314
1315# Check whether the underlying file-system supports filenames
1316# with a leading dot. For instance MS-DOS doesn't.
1317AC_DEFUN([AM_SET_LEADING_DOT],
1318[rm -rf .tst 2>/dev/null
1319mkdir .tst 2>/dev/null
1320if test -d .tst; then
1321 am__leading_dot=.
1322else
1323 am__leading_dot=_
1324fi
1325rmdir .tst 2>/dev/null
1326AC_SUBST([am__leading_dot])])
1327
1328# Check to see how 'make' treats includes. -*- Autoconf -*-
1329
1330# Copyright (C) 2001-2017 Free Software Foundation, Inc.
1331#
1332# This file is free software; the Free Software Foundation
1333# gives unlimited permission to copy and/or distribute it,
1334# with or without modifications, as long as this notice is preserved.
1335
1336# AM_MAKE_INCLUDE()
1337# -----------------
1338# Check to see how make treats includes.
1339AC_DEFUN([AM_MAKE_INCLUDE],
1340[am_make=${MAKE-make}
1341cat > confinc << 'END'
1342am__doit:
1343 @echo this is the am__doit target
1344.PHONY: am__doit
1345END
1346# If we don't find an include directive, just comment out the code.
1347AC_MSG_CHECKING([for style of include used by $am_make])
1348am__include="#"
1349am__quote=
1350_am_result=none
1351# First try GNU make style include.
1352echo "include confinc" > confmf
1353# Ignore all kinds of additional output from 'make'.
1354case `$am_make -s -f confmf 2> /dev/null` in #(
1355*the\ am__doit\ target*)
1356 am__include=include
1357 am__quote=
1358 _am_result=GNU
1359 ;;
1360esac
1361# Now try BSD make style include.
1362if test "$am__include" = "#"; then
1363 echo '.include "confinc"' > confmf
1364 case `$am_make -s -f confmf 2> /dev/null` in #(
1365 *the\ am__doit\ target*)
1366 am__include=.include
1367 am__quote="\""
1368 _am_result=BSD
1369 ;;
1370 esac
1371fi
1372AC_SUBST([am__include])
1373AC_SUBST([am__quote])
1374AC_MSG_RESULT([$_am_result])
1375rm -f confinc confmf
1376])
1377
1378# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
1379
1380# Copyright (C) 1997-2017 Free Software Foundation, Inc.
1381#
1382# This file is free software; the Free Software Foundation
1383# gives unlimited permission to copy and/or distribute it,
1384# with or without modifications, as long as this notice is preserved.
1385
1386# AM_MISSING_PROG(NAME, PROGRAM)
1387# ------------------------------
1388AC_DEFUN([AM_MISSING_PROG],
1389[AC_REQUIRE([AM_MISSING_HAS_RUN])
1390$1=${$1-"${am_missing_run}$2"}
1391AC_SUBST($1)])
1392
1393# AM_MISSING_HAS_RUN
1394# ------------------
1395# Define MISSING if not defined so far and test if it is modern enough.
1396# If it is, set am_missing_run to use it, otherwise, to nothing.
1397AC_DEFUN([AM_MISSING_HAS_RUN],
1398[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
1399AC_REQUIRE_AUX_FILE([missing])dnl
1400if test x"${MISSING+set}" != xset; then
1401 case $am_aux_dir in
1402 *\ * | *\ *)
1403 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
1404 *)
1405 MISSING="\${SHELL} $am_aux_dir/missing" ;;
1406 esac
1407fi
1408# Use eval to expand $SHELL
1409if eval "$MISSING --is-lightweight"; then
1410 am_missing_run="$MISSING "
1411else
1412 am_missing_run=
1413 AC_MSG_WARN(['missing' script is too old or missing])
1414fi
1415])
1416
1417# Helper functions for option handling. -*- Autoconf -*-
1418
1419# Copyright (C) 2001-2017 Free Software Foundation, Inc.
1420#
1421# This file is free software; the Free Software Foundation
1422# gives unlimited permission to copy and/or distribute it,
1423# with or without modifications, as long as this notice is preserved.
1424
1425# _AM_MANGLE_OPTION(NAME)
1426# -----------------------
1427AC_DEFUN([_AM_MANGLE_OPTION],
1428[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
1429
1430# _AM_SET_OPTION(NAME)
1431# --------------------
1432# Set option NAME. Presently that only means defining a flag for this option.
1433AC_DEFUN([_AM_SET_OPTION],
1434[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
1435
1436# _AM_SET_OPTIONS(OPTIONS)
1437# ------------------------
1438# OPTIONS is a space-separated list of Automake options.
1439AC_DEFUN([_AM_SET_OPTIONS],
1440[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
1441
1442# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
1443# -------------------------------------------
1444# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
1445AC_DEFUN([_AM_IF_OPTION],
1446[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
1447
1448# Copyright (C) 1999-2017 Free Software Foundation, Inc.
1449#
1450# This file is free software; the Free Software Foundation
1451# gives unlimited permission to copy and/or distribute it,
1452# with or without modifications, as long as this notice is preserved.
1453
1454# _AM_PROG_CC_C_O
1455# ---------------
1456# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
1457# to automatically call this.
1458AC_DEFUN([_AM_PROG_CC_C_O],
1459[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
1460AC_REQUIRE_AUX_FILE([compile])dnl
1461AC_LANG_PUSH([C])dnl
1462AC_CACHE_CHECK(
1463 [whether $CC understands -c and -o together],
1464 [am_cv_prog_cc_c_o],
1465 [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
1466 # Make sure it works both with $CC and with simple cc.
1467 # Following AC_PROG_CC_C_O, we do the test twice because some
1468 # compilers refuse to overwrite an existing .o file with -o,
1469 # though they will create one.
1470 am_cv_prog_cc_c_o=yes
1471 for am_i in 1 2; do
1472 if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
1473 && test -f conftest2.$ac_objext; then
1474 : OK
1475 else
1476 am_cv_prog_cc_c_o=no
1477 break
1478 fi
1479 done
1480 rm -f core conftest*
1481 unset am_i])
1482if test "$am_cv_prog_cc_c_o" != yes; then
1483 # Losing compiler, so override with the script.
1484 # FIXME: It is wrong to rewrite CC.
1485 # But if we don't then we get into trouble of one sort or another.
1486 # A longer-term fix would be to have automake use am__CC in this case,
1487 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
1488 CC="$am_aux_dir/compile $CC"
1489fi
1490AC_LANG_POP([C])])
1491
1492# For backward compatibility.
1493AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
1494
1495# Copyright (C) 2001-2017 Free Software Foundation, Inc.
1496#
1497# This file is free software; the Free Software Foundation
1498# gives unlimited permission to copy and/or distribute it,
1499# with or without modifications, as long as this notice is preserved.
1500
1501# AM_RUN_LOG(COMMAND)
1502# -------------------
1503# Run COMMAND, save the exit status in ac_status, and log it.
1504# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
1505AC_DEFUN([AM_RUN_LOG],
1506[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
1507 ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
1508 ac_status=$?
1509 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
1510 (exit $ac_status); }])
1511
1512# Check to make sure that the build environment is sane. -*- Autoconf -*-
1513
1514# Copyright (C) 1996-2017 Free Software Foundation, Inc.
1515#
1516# This file is free software; the Free Software Foundation
1517# gives unlimited permission to copy and/or distribute it,
1518# with or without modifications, as long as this notice is preserved.
1519
1520# AM_SANITY_CHECK
1521# ---------------
1522AC_DEFUN([AM_SANITY_CHECK],
1523[AC_MSG_CHECKING([whether build environment is sane])
1524# Reject unsafe characters in $srcdir or the absolute working directory
1525# name. Accept space and tab only in the latter.
1526am_lf='
1527'
1528case `pwd` in
1529 *[[\\\"\#\$\&\'\`$am_lf]]*)
1530 AC_MSG_ERROR([unsafe absolute working directory name]);;
1531esac
1532case $srcdir in
1533 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
1534 AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
1535esac
1536
1537# Do 'set' in a subshell so we don't clobber the current shell's
1538# arguments. Must try -L first in case configure is actually a
1539# symlink; some systems play weird games with the mod time of symlinks
1540# (eg FreeBSD returns the mod time of the symlink's containing
1541# directory).
1542if (
1543 am_has_slept=no
1544 for am_try in 1 2; do
1545 echo "timestamp, slept: $am_has_slept" > conftest.file
1546 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
1547 if test "$[*]" = "X"; then
1548 # -L didn't work.
1549 set X `ls -t "$srcdir/configure" conftest.file`
1550 fi
1551 if test "$[*]" != "X $srcdir/configure conftest.file" \
1552 && test "$[*]" != "X conftest.file $srcdir/configure"; then
1553
1554 # If neither matched, then we have a broken ls. This can happen
1555 # if, for instance, CONFIG_SHELL is bash and it inherits a
1556 # broken ls alias from the environment. This has actually
1557 # happened. Such a system could not be considered "sane".
1558 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
1559 alias in your environment])
1560 fi
1561 if test "$[2]" = conftest.file || test $am_try -eq 2; then
1562 break
1563 fi
1564 # Just in case.
1565 sleep 1
1566 am_has_slept=yes
1567 done
1568 test "$[2]" = conftest.file
1569 )
1570then
1571 # Ok.
1572 :
1573else
1574 AC_MSG_ERROR([newly created file is older than distributed files!
1575Check your system clock])
1576fi
1577AC_MSG_RESULT([yes])
1578# If we didn't sleep, we still need to ensure time stamps of config.status and
1579# generated files are strictly newer.
1580am_sleep_pid=
1581if grep 'slept: no' conftest.file >/dev/null 2>&1; then
1582 ( sleep 1 ) &
1583 am_sleep_pid=$!
1584fi
1585AC_CONFIG_COMMANDS_PRE(
1586 [AC_MSG_CHECKING([that generated files are newer than configure])
1587 if test -n "$am_sleep_pid"; then
1588 # Hide warnings about reused PIDs.
1589 wait $am_sleep_pid 2>/dev/null
1590 fi
1591 AC_MSG_RESULT([done])])
1592rm -f conftest.file
1593])
1594
1595# Copyright (C) 2009-2017 Free Software Foundation, Inc.
1596#
1597# This file is free software; the Free Software Foundation
1598# gives unlimited permission to copy and/or distribute it,
1599# with or without modifications, as long as this notice is preserved.
1600
1601# AM_SILENT_RULES([DEFAULT])
1602# --------------------------
1603# Enable less verbose build rules; with the default set to DEFAULT
1604# ("yes" being less verbose, "no" or empty being verbose).
1605AC_DEFUN([AM_SILENT_RULES],
1606[AC_ARG_ENABLE([silent-rules], [dnl
1607AS_HELP_STRING(
1608 [--enable-silent-rules],
1609 [less verbose build output (undo: "make V=1")])
1610AS_HELP_STRING(
1611 [--disable-silent-rules],
1612 [verbose build output (undo: "make V=0")])dnl
1613])
1614case $enable_silent_rules in @%:@ (((
1615 yes) AM_DEFAULT_VERBOSITY=0;;
1616 no) AM_DEFAULT_VERBOSITY=1;;
1617 *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
1618esac
1619dnl
1620dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
1621dnl do not support nested variable expansions.
1622dnl See automake bug#9928 and bug#10237.
1623am_make=${MAKE-make}
1624AC_CACHE_CHECK([whether $am_make supports nested variables],
1625 [am_cv_make_support_nested_variables],
1626 [if AS_ECHO([['TRUE=$(BAR$(V))
1627BAR0=false
1628BAR1=true
1629V=1
1630am__doit:
1631 @$(TRUE)
1632.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
1633 am_cv_make_support_nested_variables=yes
1634else
1635 am_cv_make_support_nested_variables=no
1636fi])
1637if test $am_cv_make_support_nested_variables = yes; then
1638 dnl Using '$V' instead of '$(V)' breaks IRIX make.
1639 AM_V='$(V)'
1640 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
1641else
1642 AM_V=$AM_DEFAULT_VERBOSITY
1643 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
1644fi
1645AC_SUBST([AM_V])dnl
1646AM_SUBST_NOTMAKE([AM_V])dnl
1647AC_SUBST([AM_DEFAULT_V])dnl
1648AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
1649AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
1650AM_BACKSLASH='\'
1651AC_SUBST([AM_BACKSLASH])dnl
1652_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
1653])
1654
1655# Copyright (C) 2001-2017 Free Software Foundation, Inc.
1656#
1657# This file is free software; the Free Software Foundation
1658# gives unlimited permission to copy and/or distribute it,
1659# with or without modifications, as long as this notice is preserved.
1660
1661# AM_PROG_INSTALL_STRIP
1662# ---------------------
1663# One issue with vendor 'install' (even GNU) is that you can't
1664# specify the program used to strip binaries. This is especially
1665# annoying in cross-compiling environments, where the build's strip
1666# is unlikely to handle the host's binaries.
1667# Fortunately install-sh will honor a STRIPPROG variable, so we
1668# always use install-sh in "make install-strip", and initialize
1669# STRIPPROG with the value of the STRIP variable (set by the user).
1670AC_DEFUN([AM_PROG_INSTALL_STRIP],
1671[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
1672# Installed binaries are usually stripped using 'strip' when the user
1673# run "make install-strip". However 'strip' might not be the right
1674# tool to use in cross-compilation environments, therefore Automake
1675# will honor the 'STRIP' environment variable to overrule this program.
1676dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
1677if test "$cross_compiling" != no; then
1678 AC_CHECK_TOOL([STRIP], [strip], :)
1679fi
1680INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
1681AC_SUBST([INSTALL_STRIP_PROGRAM])])
1682
1683# Copyright (C) 2006-2017 Free Software Foundation, Inc.
1684#
1685# This file is free software; the Free Software Foundation
1686# gives unlimited permission to copy and/or distribute it,
1687# with or without modifications, as long as this notice is preserved.
1688
1689# _AM_SUBST_NOTMAKE(VARIABLE)
1690# ---------------------------
1691# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
1692# This macro is traced by Automake.
1693AC_DEFUN([_AM_SUBST_NOTMAKE])
1694
1695# AM_SUBST_NOTMAKE(VARIABLE)
1696# --------------------------
1697# Public sister of _AM_SUBST_NOTMAKE.
1698AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
1699
1700# Check how to create a tarball. -*- Autoconf -*-
1701
1702# Copyright (C) 2004-2017 Free Software Foundation, Inc.
1703#
1704# This file is free software; the Free Software Foundation
1705# gives unlimited permission to copy and/or distribute it,
1706# with or without modifications, as long as this notice is preserved.
1707
1708# _AM_PROG_TAR(FORMAT)
1709# --------------------
1710# Check how to create a tarball in format FORMAT.
1711# FORMAT should be one of 'v7', 'ustar', or 'pax'.
1712#
1713# Substitute a variable $(am__tar) that is a command
1714# writing to stdout a FORMAT-tarball containing the directory
1715# $tardir.
1716# tardir=directory && $(am__tar) > result.tar
1717#
1718# Substitute a variable $(am__untar) that extract such
1719# a tarball read from stdin.
1720# $(am__untar) < result.tar
1721#
1722AC_DEFUN([_AM_PROG_TAR],
1723[# Always define AMTAR for backward compatibility. Yes, it's still used
1724# in the wild :-( We should find a proper way to deprecate it ...
1725AC_SUBST([AMTAR], ['$${TAR-tar}'])
1726
1727# We'll loop over all known methods to create a tar archive until one works.
1728_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
1729
1730m4_if([$1], [v7],
1731 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
1732
1733 [m4_case([$1],
1734 [ustar],
1735 [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
1736 # There is notably a 21 bits limit for the UID and the GID. In fact,
1737 # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
1738 # and bug#13588).
1739 am_max_uid=2097151 # 2^21 - 1
1740 am_max_gid=$am_max_uid
1741 # The $UID and $GID variables are not portable, so we need to resort
1742 # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
1743 # below are definitely unexpected, so allow the users to see them
1744 # (that is, avoid stderr redirection).
1745 am_uid=`id -u || echo unknown`
1746 am_gid=`id -g || echo unknown`
1747 AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
1748 if test $am_uid -le $am_max_uid; then
1749 AC_MSG_RESULT([yes])
1750 else
1751 AC_MSG_RESULT([no])
1752 _am_tools=none
1753 fi
1754 AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
1755 if test $am_gid -le $am_max_gid; then
1756 AC_MSG_RESULT([yes])
1757 else
1758 AC_MSG_RESULT([no])
1759 _am_tools=none
1760 fi],
1761
1762 [pax],
1763 [],
1764
1765 [m4_fatal([Unknown tar format])])
1766
1767 AC_MSG_CHECKING([how to create a $1 tar archive])
1768
1769 # Go ahead even if we have the value already cached. We do so because we
1770 # need to set the values for the 'am__tar' and 'am__untar' variables.
1771 _am_tools=${am_cv_prog_tar_$1-$_am_tools}
1772
1773 for _am_tool in $_am_tools; do
1774 case $_am_tool in
1775 gnutar)
1776 for _am_tar in tar gnutar gtar; do
1777 AM_RUN_LOG([$_am_tar --version]) && break
1778 done
1779 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
1780 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
1781 am__untar="$_am_tar -xf -"
1782 ;;
1783 plaintar)
1784 # Must skip GNU tar: if it does not support --format= it doesn't create
1785 # ustar tarball either.
1786 (tar --version) >/dev/null 2>&1 && continue
1787 am__tar='tar chf - "$$tardir"'
1788 am__tar_='tar chf - "$tardir"'
1789 am__untar='tar xf -'
1790 ;;
1791 pax)
1792 am__tar='pax -L -x $1 -w "$$tardir"'
1793 am__tar_='pax -L -x $1 -w "$tardir"'
1794 am__untar='pax -r'
1795 ;;
1796 cpio)
1797 am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
1798 am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
1799 am__untar='cpio -i -H $1 -d'
1800 ;;
1801 none)
1802 am__tar=false
1803 am__tar_=false
1804 am__untar=false
1805 ;;
1806 esac
1807
1808 # If the value was cached, stop now. We just wanted to have am__tar
1809 # and am__untar set.
1810 test -n "${am_cv_prog_tar_$1}" && break
1811
1812 # tar/untar a dummy directory, and stop if the command works.
1813 rm -rf conftest.dir
1814 mkdir conftest.dir
1815 echo GrepMe > conftest.dir/file
1816 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
1817 rm -rf conftest.dir
1818 if test -s conftest.tar; then
1819 AM_RUN_LOG([$am__untar <conftest.tar])
1820 AM_RUN_LOG([cat conftest.dir/file])
1821 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
1822 fi
1823 done
1824 rm -rf conftest.dir
1825
1826 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
1827 AC_MSG_RESULT([$am_cv_prog_tar_$1])])
1828
1829AC_SUBST([am__tar])
1830AC_SUBST([am__untar])
1831]) # _AM_PROG_TAR
1832
diff --git a/apps/plugins/puzzles/src/compile b/apps/plugins/puzzles/src/compile
new file mode 100755
index 0000000000..2ab71e4ea1
--- /dev/null
+++ b/apps/plugins/puzzles/src/compile
@@ -0,0 +1,348 @@
1#! /bin/sh
2# Wrapper for compilers which do not understand '-c -o'.
3
4scriptversion=2016-01-11.22; # UTC
5
6# Copyright (C) 1999-2017 Free Software Foundation, Inc.
7# Written by Tom Tromey <tromey@cygnus.com>.
8#
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2, or (at your option)
12# any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
21
22# As a special exception to the GNU General Public License, if you
23# distribute this file as part of a program that contains a
24# configuration script generated by Autoconf, you may include it under
25# the same distribution terms that you use for the rest of that program.
26
27# This file is maintained in Automake, please report
28# bugs to <bug-automake@gnu.org> or send patches to
29# <automake-patches@gnu.org>.
30
31nl='
32'
33
34# We need space, tab and new line, in precisely that order. Quoting is
35# there to prevent tools from complaining about whitespace usage.
36IFS=" "" $nl"
37
38file_conv=
39
40# func_file_conv build_file lazy
41# Convert a $build file to $host form and store it in $file
42# Currently only supports Windows hosts. If the determined conversion
43# type is listed in (the comma separated) LAZY, no conversion will
44# take place.
45func_file_conv ()
46{
47 file=$1
48 case $file in
49 / | /[!/]*) # absolute file, and not a UNC file
50 if test -z "$file_conv"; then
51 # lazily determine how to convert abs files
52 case `uname -s` in
53 MINGW*)
54 file_conv=mingw
55 ;;
56 CYGWIN*)
57 file_conv=cygwin
58 ;;
59 *)
60 file_conv=wine
61 ;;
62 esac
63 fi
64 case $file_conv/,$2, in
65 *,$file_conv,*)
66 ;;
67 mingw/*)
68 file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
69 ;;
70 cygwin/*)
71 file=`cygpath -m "$file" || echo "$file"`
72 ;;
73 wine/*)
74 file=`winepath -w "$file" || echo "$file"`
75 ;;
76 esac
77 ;;
78 esac
79}
80
81# func_cl_dashL linkdir
82# Make cl look for libraries in LINKDIR
83func_cl_dashL ()
84{
85 func_file_conv "$1"
86 if test -z "$lib_path"; then
87 lib_path=$file
88 else
89 lib_path="$lib_path;$file"
90 fi
91 linker_opts="$linker_opts -LIBPATH:$file"
92}
93
94# func_cl_dashl library
95# Do a library search-path lookup for cl
96func_cl_dashl ()
97{
98 lib=$1
99 found=no
100 save_IFS=$IFS
101 IFS=';'
102 for dir in $lib_path $LIB
103 do
104 IFS=$save_IFS
105 if $shared && test -f "$dir/$lib.dll.lib"; then
106 found=yes
107 lib=$dir/$lib.dll.lib
108 break
109 fi
110 if test -f "$dir/$lib.lib"; then
111 found=yes
112 lib=$dir/$lib.lib
113 break
114 fi
115 if test -f "$dir/lib$lib.a"; then
116 found=yes
117 lib=$dir/lib$lib.a
118 break
119 fi
120 done
121 IFS=$save_IFS
122
123 if test "$found" != yes; then
124 lib=$lib.lib
125 fi
126}
127
128# func_cl_wrapper cl arg...
129# Adjust compile command to suit cl
130func_cl_wrapper ()
131{
132 # Assume a capable shell
133 lib_path=
134 shared=:
135 linker_opts=
136 for arg
137 do
138 if test -n "$eat"; then
139 eat=
140 else
141 case $1 in
142 -o)
143 # configure might choose to run compile as 'compile cc -o foo foo.c'.
144 eat=1
145 case $2 in
146 *.o | *.[oO][bB][jJ])
147 func_file_conv "$2"
148 set x "$@" -Fo"$file"
149 shift
150 ;;
151 *)
152 func_file_conv "$2"
153 set x "$@" -Fe"$file"
154 shift
155 ;;
156 esac
157 ;;
158 -I)
159 eat=1
160 func_file_conv "$2" mingw
161 set x "$@" -I"$file"
162 shift
163 ;;
164 -I*)
165 func_file_conv "${1#-I}" mingw
166 set x "$@" -I"$file"
167 shift
168 ;;
169 -l)
170 eat=1
171 func_cl_dashl "$2"
172 set x "$@" "$lib"
173 shift
174 ;;
175 -l*)
176 func_cl_dashl "${1#-l}"
177 set x "$@" "$lib"
178 shift
179 ;;
180 -L)
181 eat=1
182 func_cl_dashL "$2"
183 ;;
184 -L*)
185 func_cl_dashL "${1#-L}"
186 ;;
187 -static)
188 shared=false
189 ;;
190 -Wl,*)
191 arg=${1#-Wl,}
192 save_ifs="$IFS"; IFS=','
193 for flag in $arg; do
194 IFS="$save_ifs"
195 linker_opts="$linker_opts $flag"
196 done
197 IFS="$save_ifs"
198 ;;
199 -Xlinker)
200 eat=1
201 linker_opts="$linker_opts $2"
202 ;;
203 -*)
204 set x "$@" "$1"
205 shift
206 ;;
207 *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
208 func_file_conv "$1"
209 set x "$@" -Tp"$file"
210 shift
211 ;;
212 *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
213 func_file_conv "$1" mingw
214 set x "$@" "$file"
215 shift
216 ;;
217 *)
218 set x "$@" "$1"
219 shift
220 ;;
221 esac
222 fi
223 shift
224 done
225 if test -n "$linker_opts"; then
226 linker_opts="-link$linker_opts"
227 fi
228 exec "$@" $linker_opts
229 exit 1
230}
231
232eat=
233
234case $1 in
235 '')
236 echo "$0: No command. Try '$0 --help' for more information." 1>&2
237 exit 1;
238 ;;
239 -h | --h*)
240 cat <<\EOF
241Usage: compile [--help] [--version] PROGRAM [ARGS]
242
243Wrapper for compilers which do not understand '-c -o'.
244Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
245arguments, and rename the output as expected.
246
247If you are trying to build a whole package this is not the
248right script to run: please start by reading the file 'INSTALL'.
249
250Report bugs to <bug-automake@gnu.org>.
251EOF
252 exit $?
253 ;;
254 -v | --v*)
255 echo "compile $scriptversion"
256 exit $?
257 ;;
258 cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
259 icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
260 func_cl_wrapper "$@" # Doesn't return...
261 ;;
262esac
263
264ofile=
265cfile=
266
267for arg
268do
269 if test -n "$eat"; then
270 eat=
271 else
272 case $1 in
273 -o)
274 # configure might choose to run compile as 'compile cc -o foo foo.c'.
275 # So we strip '-o arg' only if arg is an object.
276 eat=1
277 case $2 in
278 *.o | *.obj)
279 ofile=$2
280 ;;
281 *)
282 set x "$@" -o "$2"
283 shift
284 ;;
285 esac
286 ;;
287 *.c)
288 cfile=$1
289 set x "$@" "$1"
290 shift
291 ;;
292 *)
293 set x "$@" "$1"
294 shift
295 ;;
296 esac
297 fi
298 shift
299done
300
301if test -z "$ofile" || test -z "$cfile"; then
302 # If no '-o' option was seen then we might have been invoked from a
303 # pattern rule where we don't need one. That is ok -- this is a
304 # normal compilation that the losing compiler can handle. If no
305 # '.c' file was seen then we are probably linking. That is also
306 # ok.
307 exec "$@"
308fi
309
310# Name of file we expect compiler to create.
311cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
312
313# Create the lock directory.
314# Note: use '[/\\:.-]' here to ensure that we don't use the same name
315# that we are using for the .o file. Also, base the name on the expected
316# object file name, since that is what matters with a parallel build.
317lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
318while true; do
319 if mkdir "$lockdir" >/dev/null 2>&1; then
320 break
321 fi
322 sleep 1
323done
324# FIXME: race condition here if user kills between mkdir and trap.
325trap "rmdir '$lockdir'; exit 1" 1 2 15
326
327# Run the compile.
328"$@"
329ret=$?
330
331if test -f "$cofile"; then
332 test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
333elif test -f "${cofile}bj"; then
334 test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
335fi
336
337rmdir "$lockdir"
338exit $ret
339
340# Local Variables:
341# mode: shell-script
342# sh-indentation: 2
343# eval: (add-hook 'write-file-hooks 'time-stamp)
344# time-stamp-start: "scriptversion="
345# time-stamp-format: "%:y-%02m-%02d.%02H"
346# time-stamp-time-zone: "UTC0"
347# time-stamp-end: "; # UTC"
348# End:
diff --git a/apps/plugins/puzzles/src/config.log b/apps/plugins/puzzles/src/config.log
new file mode 100644
index 0000000000..3fbbbbe19c
--- /dev/null
+++ b/apps/plugins/puzzles/src/config.log
@@ -0,0 +1,445 @@
1This file contains any messages produced by compilers while
2running configure, to aid debugging if configure makes a mistake.
3
4It was created by puzzles configure 6.66, which was
5generated by GNU Autoconf 2.69. Invocation command line was
6
7 $ ./configure
8
9## --------- ##
10## Platform. ##
11## --------- ##
12
13hostname = alpha
14uname -m = x86_64
15uname -r = 4.11.9-1-ARCH
16uname -s = Linux
17uname -v = #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017
18
19/usr/bin/uname -p = unknown
20/bin/uname -X = unknown
21
22/bin/arch = unknown
23/usr/bin/arch -k = unknown
24/usr/convex/getsysinfo = unknown
25/usr/bin/hostinfo = unknown
26/bin/machine = unknown
27/usr/bin/oslevel = unknown
28/bin/universe = unknown
29
30PATH: /usr/local/sbin
31PATH: /usr/local/bin
32PATH: /usr/bin
33PATH: /opt/cuda/bin
34PATH: /usr/lib/jvm/default/bin
35PATH: /opt/kde/bin
36PATH: /usr/bin/site_perl
37PATH: /usr/bin/vendor_perl
38PATH: /usr/bin/core_perl
39
40
41## ----------- ##
42## Core tests. ##
43## ----------- ##
44
45configure:1943: checking for a BSD-compatible install
46configure:2011: result: /usr/bin/install -c
47configure:2022: checking whether build environment is sane
48configure:2077: result: yes
49configure:2228: checking for a thread-safe mkdir -p
50configure:2267: result: /usr/bin/mkdir -p
51configure:2274: checking for gawk
52configure:2290: found /usr/bin/gawk
53configure:2301: result: gawk
54configure:2312: checking whether make sets $(MAKE)
55configure:2334: result: yes
56configure:2363: checking whether make supports nested variables
57configure:2380: result: yes
58configure:2554: checking for gcc
59configure:2570: found /usr/bin/gcc
60configure:2581: result: gcc
61configure:2810: checking for C compiler version
62configure:2819: gcc --version >&5
63gcc (GCC) 7.2.0
64Copyright (C) 2017 Free Software Foundation, Inc.
65This is free software; see the source for copying conditions. There is NO
66warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
67
68configure:2830: $? = 0
69configure:2819: gcc -v >&5
70Using built-in specs.
71COLLECT_GCC=gcc
72COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper
73Target: x86_64-pc-linux-gnu
74Configured with: /build/gcc-multilib/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp
75Thread model: posix
76gcc version 7.2.0 (GCC)
77configure:2830: $? = 0
78configure:2819: gcc -V >&5
79gcc: error: unrecognized command line option '-V'
80gcc: fatal error: no input files
81compilation terminated.
82configure:2830: $? = 1
83configure:2819: gcc -qversion >&5
84gcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
85gcc: fatal error: no input files
86compilation terminated.
87configure:2830: $? = 1
88configure:2850: checking whether the C compiler works
89configure:2872: gcc conftest.c >&5
90configure:2876: $? = 0
91configure:2924: result: yes
92configure:2927: checking for C compiler default output file name
93configure:2929: result: a.out
94configure:2935: checking for suffix of executables
95configure:2942: gcc -o conftest conftest.c >&5
96configure:2946: $? = 0
97configure:2968: result:
98configure:2990: checking whether we are cross compiling
99configure:2998: gcc -o conftest conftest.c >&5
100configure:3002: $? = 0
101configure:3009: ./conftest
102configure:3013: $? = 0
103configure:3028: result: no
104configure:3033: checking for suffix of object files
105configure:3055: gcc -c conftest.c >&5
106configure:3059: $? = 0
107configure:3080: result: o
108configure:3084: checking whether we are using the GNU C compiler
109configure:3103: gcc -c conftest.c >&5
110configure:3103: $? = 0
111configure:3112: result: yes
112configure:3121: checking whether gcc accepts -g
113configure:3141: gcc -c -g conftest.c >&5
114configure:3141: $? = 0
115configure:3182: result: yes
116configure:3199: checking for gcc option to accept ISO C89
117configure:3262: gcc -c -g -O2 conftest.c >&5
118configure:3262: $? = 0
119configure:3275: result: none needed
120configure:3300: checking whether gcc understands -c and -o together
121configure:3322: gcc -c conftest.c -o conftest2.o
122configure:3325: $? = 0
123configure:3322: gcc -c conftest.c -o conftest2.o
124configure:3325: $? = 0
125configure:3337: result: yes
126configure:3365: checking for style of include used by make
127configure:3393: result: GNU
128configure:3419: checking dependency style of gcc
129configure:3530: result: gcc3
130configure:3591: checking for pkg-config
131configure:3609: found /usr/bin/pkg-config
132configure:3622: result: /usr/bin/pkg-config
133configure:3643: checking for GTK+ - version >= 3.0.0
134configure:3750: gcc -o conftest -g -O2 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 >&5
135configure:3750: $? = 0
136configure:3750: ./conftest
137configure:3750: $? = 0
138configure:3764: result: yes (version 3.22.16)
139configure:4287: checking for usable gcc warning flags
140configure:4330: gcc -c -g -O2 -Wall -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
141configure:4330: $? = 0
142configure:4330: gcc -c -g -O2 -Wall -Werror -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
143configure:4330: $? = 0
144configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
145configure:4330: $? = 0
146configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pedantic -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
147In file included from /usr/lib/glib-2.0/include/glibconfig.h:9:0,
148 from /usr/include/glib-2.0/glib/gtypes.h:32,
149 from /usr/include/glib-2.0/glib/galloca.h:32,
150 from /usr/include/glib-2.0/glib.h:30,
151 from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
152 from /usr/include/gtk-3.0/gdk/gdk.h:30,
153 from /usr/include/gtk-3.0/gtk/gtk.h:30,
154 from conftest.c:24:
155/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64':
156/usr/include/glib-2.0/glib/gtypes.h:423:41: error: ISO C90 does not support 'long long' [-Werror=long-long]
157 G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
158 ^
159/usr/include/glib-2.0/glib/gmacros.h:232:104: note: in definition of macro 'G_STATIC_ASSERT'
160 #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
161 ^~~~
162In file included from /usr/include/glib-2.0/glib/galloca.h:32:0,
163 from /usr/include/glib-2.0/glib.h:30,
164 from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
165 from /usr/include/gtk-3.0/gdk/gdk.h:30,
166 from /usr/include/gtk-3.0/gtk/gtk.h:30,
167 from conftest.c:24:
168/usr/include/glib-2.0/glib/gtypes.h:424:58: error: ISO C90 does not support 'long long' [-Werror=long-long]
169 return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); }
170 ^~~~
171/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_MUL_U64':
172/usr/include/glib-2.0/glib/gtypes.h:426:58: error: ISO C90 does not support 'long long' [-Werror=long-long]
173 return !__builtin_umulll_overflow(a, b, (unsigned long long *) dest); }
174 ^~~~
175In file included from /usr/include/glib-2.0/glib.h:62:0,
176 from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
177 from /usr/include/gtk-3.0/gdk/gdk.h:30,
178 from /usr/include/gtk-3.0/gtk/gtk.h:30,
179 from conftest.c:24:
180/usr/include/glib-2.0/glib/gmessages.h: At top level:
181/usr/include/glib-2.0/glib/gmessages.h:136:29: error: comma at end of enumerator list [-Werror=pedantic]
182 G_LOG_WRITER_UNHANDLED = 0,
183 ^
184/usr/include/glib-2.0/glib/gmessages.h:322:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
185 #define g_error(...) G_STMT_START { \
186 ^~~
187/usr/include/glib-2.0/glib/gmessages.h:328:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
188 #define g_message(...) g_log (G_LOG_DOMAIN, \
189 ^~~
190/usr/include/glib-2.0/glib/gmessages.h:331:20: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
191 #define g_critical(...) g_log (G_LOG_DOMAIN, \
192 ^~~
193/usr/include/glib-2.0/glib/gmessages.h:334:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
194 #define g_warning(...) g_log (G_LOG_DOMAIN, \
195 ^~~
196/usr/include/glib-2.0/glib/gmessages.h:337:16: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
197 #define g_info(...) g_log (G_LOG_DOMAIN, \
198 ^~~
199/usr/include/glib-2.0/glib/gmessages.h:340:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
200 #define g_debug(...) g_log (G_LOG_DOMAIN, \
201 ^~~
202In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30:0,
203 from /usr/include/gtk-3.0/gdk/gdk.h:32,
204 from /usr/include/gtk-3.0/gtk/gtk.h:30,
205 from conftest.c:24:
206/usr/include/gtk-3.0/gdk/gdktypes.h:319:39: error: comma at end of enumerator list [-Werror=pedantic]
207 GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK,
208 ^
209/usr/include/gtk-3.0/gdk/gdktypes.h:597:48: error: comma at end of enumerator list [-Werror=pedantic]
210 GDK_AXIS_FLAG_SLIDER = 1 << GDK_AXIS_SLIDER,
211 ^
212In file included from /usr/include/gtk-3.0/gdk/gdkevents.h:36:0,
213 from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
214 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
215 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
216 from /usr/include/gtk-3.0/gdk/gdk.h:32,
217 from /usr/include/gtk-3.0/gtk/gtk.h:30,
218 from conftest.c:24:
219/usr/include/gtk-3.0/gdk/gdkdevicetool.h:61:28: error: comma at end of enumerator list [-Werror=pedantic]
220 GDK_DEVICE_TOOL_TYPE_LENS,
221 ^
222cc1: all warnings being treated as errors
223configure:4330: $? = 1
224configure: failed program was:
225| /* confdefs.h */
226| #define PACKAGE_NAME "puzzles"
227| #define PACKAGE_TARNAME "puzzles"
228| #define PACKAGE_VERSION "6.66"
229| #define PACKAGE_STRING "puzzles 6.66"
230| #define PACKAGE_BUGREPORT "anakin@pobox.com"
231| #define PACKAGE_URL ""
232| #define PACKAGE "puzzles"
233| #define VERSION "6.66"
234| /* end confdefs.h. */
235|
236| #include <stdio.h>
237| #include <assert.h>
238| #include <stdlib.h>
239| #include <time.h>
240| #include <stdarg.h>
241| #include <string.h>
242| #include <errno.h>
243| #include <math.h>
244|
245| #include <sys/time.h>
246| #include <sys/resource.h>
247|
248| #include <gtk/gtk.h>
249| #include <gdk/gdkkeysyms.h>
250|
251| #include <gdk-pixbuf/gdk-pixbuf.h>
252|
253| #include <gdk/gdkx.h>
254| #include <X11/Xlib.h>
255| #include <X11/Xutil.h>
256| #include <X11/Xatom.h>
257|
258| int
259| main ()
260| {
261|
262| return 0;
263|
264| ;
265| return 0;
266| }
267configure:4337: result: -Wall -Werror -std=c89
268configure:4385: checking for ranlib
269configure:4401: found /usr/bin/ranlib
270configure:4412: result: ranlib
271configure:4582: checking that generated files are newer than configure
272configure:4588: result: done
273configure:4611: creating ./config.status
274
275## ---------------------- ##
276## Running config.status. ##
277## ---------------------- ##
278
279This file was extended by puzzles config.status 6.66, which was
280generated by GNU Autoconf 2.69. Invocation command line was
281
282 CONFIG_FILES =
283 CONFIG_HEADERS =
284 CONFIG_LINKS =
285 CONFIG_COMMANDS =
286 $ ./config.status
287
288on alpha
289
290config.status:782: creating Makefile
291config.status:954: executing depfiles commands
292
293## ---------------- ##
294## Cache variables. ##
295## ---------------- ##
296
297ac_cv_c_compiler_gnu=yes
298ac_cv_env_CC_set=
299ac_cv_env_CC_value=
300ac_cv_env_CFLAGS_set=
301ac_cv_env_CFLAGS_value=
302ac_cv_env_CPPFLAGS_set=
303ac_cv_env_CPPFLAGS_value=
304ac_cv_env_LDFLAGS_set=
305ac_cv_env_LDFLAGS_value=
306ac_cv_env_LIBS_set=
307ac_cv_env_LIBS_value=
308ac_cv_env_PKG_CONFIG_LIBDIR_set=
309ac_cv_env_PKG_CONFIG_LIBDIR_value=
310ac_cv_env_PKG_CONFIG_PATH_set=
311ac_cv_env_PKG_CONFIG_PATH_value=
312ac_cv_env_PKG_CONFIG_set=
313ac_cv_env_PKG_CONFIG_value=
314ac_cv_env_build_alias_set=
315ac_cv_env_build_alias_value=
316ac_cv_env_host_alias_set=
317ac_cv_env_host_alias_value=
318ac_cv_env_target_alias_set=
319ac_cv_env_target_alias_value=
320ac_cv_objext=o
321ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config
322ac_cv_path_install='/usr/bin/install -c'
323ac_cv_path_mkdir=/usr/bin/mkdir
324ac_cv_prog_AWK=gawk
325ac_cv_prog_ac_ct_CC=gcc
326ac_cv_prog_ac_ct_RANLIB=ranlib
327ac_cv_prog_cc_c89=
328ac_cv_prog_cc_g=yes
329ac_cv_prog_make_make_set=yes
330am_cv_CC_dependencies_compiler_type=gcc3
331am_cv_make_support_nested_variables=yes
332am_cv_prog_cc_c_o=yes
333
334## ----------------- ##
335## Output variables. ##
336## ----------------- ##
337
338ACLOCAL='${SHELL} /home/franklin/puzzles/missing aclocal-1.15'
339AMDEPBACKSLASH='\'
340AMDEP_FALSE='#'
341AMDEP_TRUE=''
342AMTAR='$${TAR-tar}'
343AM_BACKSLASH='\'
344AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
345AM_DEFAULT_VERBOSITY='1'
346AM_V='$(V)'
347AUTOCONF='${SHELL} /home/franklin/puzzles/missing autoconf'
348AUTOHEADER='${SHELL} /home/franklin/puzzles/missing autoheader'
349AUTOMAKE='${SHELL} /home/franklin/puzzles/missing automake-1.15'
350AWK='gawk'
351CC='gcc'
352CCDEPMODE='depmode=gcc3'
353CFLAGS='-g -O2 -Wall -Werror -std=c89'
354CPPFLAGS=''
355CYGPATH_W='echo'
356DEFS='-DPACKAGE_NAME=\"puzzles\" -DPACKAGE_TARNAME=\"puzzles\" -DPACKAGE_VERSION=\"6.66\" -DPACKAGE_STRING=\"puzzles\ 6.66\" -DPACKAGE_BUGREPORT=\"anakin@pobox.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"puzzles\" -DVERSION=\"6.66\"'
357DEPDIR='.deps'
358ECHO_C=''
359ECHO_N='-n'
360ECHO_T=''
361EXEEXT=''
362GTK_CFLAGS='-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
363GTK_LIBS='-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0'
364INSTALL_DATA='${INSTALL} -m 644'
365INSTALL_PROGRAM='${INSTALL}'
366INSTALL_SCRIPT='${INSTALL}'
367INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
368LDFLAGS=''
369LIBOBJS=''
370LIBS=''
371LTLIBOBJS=''
372MAKEINFO='${SHELL} /home/franklin/puzzles/missing makeinfo'
373MKDIR_P='/usr/bin/mkdir -p'
374OBJEXT='o'
375PACKAGE='puzzles'
376PACKAGE_BUGREPORT='anakin@pobox.com'
377PACKAGE_NAME='puzzles'
378PACKAGE_STRING='puzzles 6.66'
379PACKAGE_TARNAME='puzzles'
380PACKAGE_URL=''
381PACKAGE_VERSION='6.66'
382PATH_SEPARATOR=':'
383PKG_CONFIG='/usr/bin/pkg-config'
384PKG_CONFIG_LIBDIR=''
385PKG_CONFIG_PATH=''
386RANLIB='ranlib'
387SET_MAKE=''
388SHELL='/bin/sh'
389STRIP=''
390VERSION='6.66'
391ac_ct_CC='gcc'
392am__EXEEXT_FALSE=''
393am__EXEEXT_TRUE='#'
394am__fastdepCC_FALSE='#'
395am__fastdepCC_TRUE=''
396am__include='include'
397am__isrc=''
398am__leading_dot='.'
399am__nodep='_no'
400am__quote=''
401am__tar='$${TAR-tar} chof - "$$tardir"'
402am__untar='$${TAR-tar} xf -'
403bindir='${exec_prefix}/bin'
404build_alias=''
405datadir='${datarootdir}'
406datarootdir='${prefix}/share'
407docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
408dvidir='${docdir}'
409exec_prefix='${prefix}'
410host_alias=''
411htmldir='${docdir}'
412includedir='${prefix}/include'
413infodir='${datarootdir}/info'
414install_sh='${SHELL} /home/franklin/puzzles/install-sh'
415libdir='${exec_prefix}/lib'
416libexecdir='${exec_prefix}/libexec'
417localedir='${datarootdir}/locale'
418localstatedir='${prefix}/var'
419mandir='${datarootdir}/man'
420mkdir_p='$(MKDIR_P)'
421oldincludedir='/usr/include'
422pdfdir='${docdir}'
423prefix='/usr/local'
424program_transform_name='s,x,x,'
425psdir='${docdir}'
426sbindir='${exec_prefix}/sbin'
427sharedstatedir='${prefix}/com'
428sysconfdir='${prefix}/etc'
429target_alias=''
430
431## ----------- ##
432## confdefs.h. ##
433## ----------- ##
434
435/* confdefs.h */
436#define PACKAGE_NAME "puzzles"
437#define PACKAGE_TARNAME "puzzles"
438#define PACKAGE_VERSION "6.66"
439#define PACKAGE_STRING "puzzles 6.66"
440#define PACKAGE_BUGREPORT "anakin@pobox.com"
441#define PACKAGE_URL ""
442#define PACKAGE "puzzles"
443#define VERSION "6.66"
444
445configure: exit 0
diff --git a/apps/plugins/puzzles/src/config.status b/apps/plugins/puzzles/src/config.status
new file mode 100755
index 0000000000..9f22aa3722
--- /dev/null
+++ b/apps/plugins/puzzles/src/config.status
@@ -0,0 +1,1059 @@
1#! /bin/sh
2# Generated by configure.
3# Run this file to recreate the current configuration.
4# Compiler output produced by configure, useful for debugging
5# configure, is in config.log if it exists.
6
7debug=false
8ac_cs_recheck=false
9ac_cs_silent=false
10
11SHELL=${CONFIG_SHELL-/bin/sh}
12export SHELL
13## -------------------- ##
14## M4sh Initialization. ##
15## -------------------- ##
16
17# Be more Bourne compatible
18DUALCASE=1; export DUALCASE # for MKS sh
19if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
20 emulate sh
21 NULLCMD=:
22 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
23 # is contrary to our usage. Disable this feature.
24 alias -g '${1+"$@"}'='"$@"'
25 setopt NO_GLOB_SUBST
26else
27 case `(set -o) 2>/dev/null` in #(
28 *posix*) :
29 set -o posix ;; #(
30 *) :
31 ;;
32esac
33fi
34
35
36as_nl='
37'
38export as_nl
39# Printing a long string crashes Solaris 7 /usr/bin/printf.
40as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
41as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
42as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
43# Prefer a ksh shell builtin over an external printf program on Solaris,
44# but without wasting forks for bash or zsh.
45if test -z "$BASH_VERSION$ZSH_VERSION" \
46 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
47 as_echo='print -r --'
48 as_echo_n='print -rn --'
49elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
50 as_echo='printf %s\n'
51 as_echo_n='printf %s'
52else
53 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
54 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
55 as_echo_n='/usr/ucb/echo -n'
56 else
57 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
58 as_echo_n_body='eval
59 arg=$1;
60 case $arg in #(
61 *"$as_nl"*)
62 expr "X$arg" : "X\\(.*\\)$as_nl";
63 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
64 esac;
65 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
66 '
67 export as_echo_n_body
68 as_echo_n='sh -c $as_echo_n_body as_echo'
69 fi
70 export as_echo_body
71 as_echo='sh -c $as_echo_body as_echo'
72fi
73
74# The user is always right.
75if test "${PATH_SEPARATOR+set}" != set; then
76 PATH_SEPARATOR=:
77 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
78 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
79 PATH_SEPARATOR=';'
80 }
81fi
82
83
84# IFS
85# We need space, tab and new line, in precisely that order. Quoting is
86# there to prevent editors from complaining about space-tab.
87# (If _AS_PATH_WALK were called with IFS unset, it would disable word
88# splitting by setting IFS to empty value.)
89IFS=" "" $as_nl"
90
91# Find who we are. Look in the path if we contain no directory separator.
92as_myself=
93case $0 in #((
94 *[\\/]* ) as_myself=$0 ;;
95 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
96for as_dir in $PATH
97do
98 IFS=$as_save_IFS
99 test -z "$as_dir" && as_dir=.
100 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
101 done
102IFS=$as_save_IFS
103
104 ;;
105esac
106# We did not find ourselves, most probably we were run as `sh COMMAND'
107# in which case we are not to be found in the path.
108if test "x$as_myself" = x; then
109 as_myself=$0
110fi
111if test ! -f "$as_myself"; then
112 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
113 exit 1
114fi
115
116# Unset variables that we do not need and which cause bugs (e.g. in
117# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
118# suppresses any "Segmentation fault" message there. '((' could
119# trigger a bug in pdksh 5.2.14.
120for as_var in BASH_ENV ENV MAIL MAILPATH
121do eval test x\${$as_var+set} = xset \
122 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
123done
124PS1='$ '
125PS2='> '
126PS4='+ '
127
128# NLS nuisances.
129LC_ALL=C
130export LC_ALL
131LANGUAGE=C
132export LANGUAGE
133
134# CDPATH.
135(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
136
137
138# as_fn_error STATUS ERROR [LINENO LOG_FD]
139# ----------------------------------------
140# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
141# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
142# script with STATUS, using 1 if that was 0.
143as_fn_error ()
144{
145 as_status=$1; test $as_status -eq 0 && as_status=1
146 if test "$4"; then
147 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
148 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
149 fi
150 $as_echo "$as_me: error: $2" >&2
151 as_fn_exit $as_status
152} # as_fn_error
153
154
155# as_fn_set_status STATUS
156# -----------------------
157# Set $? to STATUS, without forking.
158as_fn_set_status ()
159{
160 return $1
161} # as_fn_set_status
162
163# as_fn_exit STATUS
164# -----------------
165# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
166as_fn_exit ()
167{
168 set +e
169 as_fn_set_status $1
170 exit $1
171} # as_fn_exit
172
173# as_fn_unset VAR
174# ---------------
175# Portably unset VAR.
176as_fn_unset ()
177{
178 { eval $1=; unset $1;}
179}
180as_unset=as_fn_unset
181# as_fn_append VAR VALUE
182# ----------------------
183# Append the text in VALUE to the end of the definition contained in VAR. Take
184# advantage of any shell optimizations that allow amortized linear growth over
185# repeated appends, instead of the typical quadratic growth present in naive
186# implementations.
187if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
188 eval 'as_fn_append ()
189 {
190 eval $1+=\$2
191 }'
192else
193 as_fn_append ()
194 {
195 eval $1=\$$1\$2
196 }
197fi # as_fn_append
198
199# as_fn_arith ARG...
200# ------------------
201# Perform arithmetic evaluation on the ARGs, and store the result in the
202# global $as_val. Take advantage of shells that can avoid forks. The arguments
203# must be portable across $(()) and expr.
204if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
205 eval 'as_fn_arith ()
206 {
207 as_val=$(( $* ))
208 }'
209else
210 as_fn_arith ()
211 {
212 as_val=`expr "$@" || test $? -eq 1`
213 }
214fi # as_fn_arith
215
216
217if expr a : '\(a\)' >/dev/null 2>&1 &&
218 test "X`expr 00001 : '.*\(...\)'`" = X001; then
219 as_expr=expr
220else
221 as_expr=false
222fi
223
224if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
225 as_basename=basename
226else
227 as_basename=false
228fi
229
230if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
231 as_dirname=dirname
232else
233 as_dirname=false
234fi
235
236as_me=`$as_basename -- "$0" ||
237$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
238 X"$0" : 'X\(//\)$' \| \
239 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
240$as_echo X/"$0" |
241 sed '/^.*\/\([^/][^/]*\)\/*$/{
242 s//\1/
243 q
244 }
245 /^X\/\(\/\/\)$/{
246 s//\1/
247 q
248 }
249 /^X\/\(\/\).*/{
250 s//\1/
251 q
252 }
253 s/.*/./; q'`
254
255# Avoid depending upon Character Ranges.
256as_cr_letters='abcdefghijklmnopqrstuvwxyz'
257as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
258as_cr_Letters=$as_cr_letters$as_cr_LETTERS
259as_cr_digits='0123456789'
260as_cr_alnum=$as_cr_Letters$as_cr_digits
261
262ECHO_C= ECHO_N= ECHO_T=
263case `echo -n x` in #(((((
264-n*)
265 case `echo 'xy\c'` in
266 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
267 xy) ECHO_C='\c';;
268 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
269 ECHO_T=' ';;
270 esac;;
271*)
272 ECHO_N='-n';;
273esac
274
275rm -f conf$$ conf$$.exe conf$$.file
276if test -d conf$$.dir; then
277 rm -f conf$$.dir/conf$$.file
278else
279 rm -f conf$$.dir
280 mkdir conf$$.dir 2>/dev/null
281fi
282if (echo >conf$$.file) 2>/dev/null; then
283 if ln -s conf$$.file conf$$ 2>/dev/null; then
284 as_ln_s='ln -s'
285 # ... but there are two gotchas:
286 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
287 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
288 # In both cases, we have to default to `cp -pR'.
289 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
290 as_ln_s='cp -pR'
291 elif ln conf$$.file conf$$ 2>/dev/null; then
292 as_ln_s=ln
293 else
294 as_ln_s='cp -pR'
295 fi
296else
297 as_ln_s='cp -pR'
298fi
299rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
300rmdir conf$$.dir 2>/dev/null
301
302
303# as_fn_mkdir_p
304# -------------
305# Create "$as_dir" as a directory, including parents if necessary.
306as_fn_mkdir_p ()
307{
308
309 case $as_dir in #(
310 -*) as_dir=./$as_dir;;
311 esac
312 test -d "$as_dir" || eval $as_mkdir_p || {
313 as_dirs=
314 while :; do
315 case $as_dir in #(
316 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
317 *) as_qdir=$as_dir;;
318 esac
319 as_dirs="'$as_qdir' $as_dirs"
320 as_dir=`$as_dirname -- "$as_dir" ||
321$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
322 X"$as_dir" : 'X\(//\)[^/]' \| \
323 X"$as_dir" : 'X\(//\)$' \| \
324 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
325$as_echo X"$as_dir" |
326 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
327 s//\1/
328 q
329 }
330 /^X\(\/\/\)[^/].*/{
331 s//\1/
332 q
333 }
334 /^X\(\/\/\)$/{
335 s//\1/
336 q
337 }
338 /^X\(\/\).*/{
339 s//\1/
340 q
341 }
342 s/.*/./; q'`
343 test -d "$as_dir" && break
344 done
345 test -z "$as_dirs" || eval "mkdir $as_dirs"
346 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
347
348
349} # as_fn_mkdir_p
350if mkdir -p . 2>/dev/null; then
351 as_mkdir_p='mkdir -p "$as_dir"'
352else
353 test -d ./-p && rmdir ./-p
354 as_mkdir_p=false
355fi
356
357
358# as_fn_executable_p FILE
359# -----------------------
360# Test if FILE is an executable regular file.
361as_fn_executable_p ()
362{
363 test -f "$1" && test -x "$1"
364} # as_fn_executable_p
365as_test_x='test -x'
366as_executable_p=as_fn_executable_p
367
368# Sed expression to map a string onto a valid CPP name.
369as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
370
371# Sed expression to map a string onto a valid variable name.
372as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
373
374
375exec 6>&1
376## ----------------------------------- ##
377## Main body of $CONFIG_STATUS script. ##
378## ----------------------------------- ##
379# Save the log message, to keep $0 and so on meaningful, and to
380# report actual input values of CONFIG_FILES etc. instead of their
381# values after options handling.
382ac_log="
383This file was extended by puzzles $as_me 6.66, which was
384generated by GNU Autoconf 2.69. Invocation command line was
385
386 CONFIG_FILES = $CONFIG_FILES
387 CONFIG_HEADERS = $CONFIG_HEADERS
388 CONFIG_LINKS = $CONFIG_LINKS
389 CONFIG_COMMANDS = $CONFIG_COMMANDS
390 $ $0 $@
391
392on `(hostname || uname -n) 2>/dev/null | sed 1q`
393"
394
395# Files that config.status was made for.
396config_files=" Makefile"
397config_commands=" depfiles"
398
399ac_cs_usage="\
400\`$as_me' instantiates files and other configuration actions
401from templates according to the current configuration. Unless the files
402and actions are specified as TAGs, all are instantiated by default.
403
404Usage: $0 [OPTION]... [TAG]...
405
406 -h, --help print this help, then exit
407 -V, --version print version number and configuration settings, then exit
408 --config print configuration, then exit
409 -q, --quiet, --silent
410 do not print progress messages
411 -d, --debug don't remove temporary files
412 --recheck update $as_me by reconfiguring in the same conditions
413 --file=FILE[:TEMPLATE]
414 instantiate the configuration file FILE
415
416Configuration files:
417$config_files
418
419Configuration commands:
420$config_commands
421
422Report bugs to <anakin@pobox.com>."
423
424ac_cs_config=""
425ac_cs_version="\
426puzzles config.status 6.66
427configured by ./configure, generated by GNU Autoconf 2.69,
428 with options \"$ac_cs_config\"
429
430Copyright (C) 2012 Free Software Foundation, Inc.
431This config.status script is free software; the Free Software Foundation
432gives unlimited permission to copy, distribute and modify it."
433
434ac_pwd='/home/franklin/puzzles'
435srcdir='.'
436INSTALL='/usr/bin/install -c'
437MKDIR_P='/usr/bin/mkdir -p'
438AWK='gawk'
439test -n "$AWK" || AWK=awk
440# The default lists apply if the user does not specify any file.
441ac_need_defaults=:
442while test $# != 0
443do
444 case $1 in
445 --*=?*)
446 ac_option=`expr "X$1" : 'X\([^=]*\)='`
447 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
448 ac_shift=:
449 ;;
450 --*=)
451 ac_option=`expr "X$1" : 'X\([^=]*\)='`
452 ac_optarg=
453 ac_shift=:
454 ;;
455 *)
456 ac_option=$1
457 ac_optarg=$2
458 ac_shift=shift
459 ;;
460 esac
461
462 case $ac_option in
463 # Handling of the options.
464 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
465 ac_cs_recheck=: ;;
466 --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
467 $as_echo "$ac_cs_version"; exit ;;
468 --config | --confi | --conf | --con | --co | --c )
469 $as_echo "$ac_cs_config"; exit ;;
470 --debug | --debu | --deb | --de | --d | -d )
471 debug=: ;;
472 --file | --fil | --fi | --f )
473 $ac_shift
474 case $ac_optarg in
475 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
476 '') as_fn_error $? "missing file argument" ;;
477 esac
478 as_fn_append CONFIG_FILES " '$ac_optarg'"
479 ac_need_defaults=false;;
480 --he | --h | --help | --hel | -h )
481 $as_echo "$ac_cs_usage"; exit ;;
482 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
483 | -silent | --silent | --silen | --sile | --sil | --si | --s)
484 ac_cs_silent=: ;;
485
486 # This is an error.
487 -*) as_fn_error $? "unrecognized option: \`$1'
488Try \`$0 --help' for more information." ;;
489
490 *) as_fn_append ac_config_targets " $1"
491 ac_need_defaults=false ;;
492
493 esac
494 shift
495done
496
497ac_configure_extra_args=
498
499if $ac_cs_silent; then
500 exec 6>/dev/null
501 ac_configure_extra_args="$ac_configure_extra_args --silent"
502fi
503
504if $ac_cs_recheck; then
505 set X /bin/sh './configure' $ac_configure_extra_args --no-create --no-recursion
506 shift
507 $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
508 CONFIG_SHELL='/bin/sh'
509 export CONFIG_SHELL
510 exec "$@"
511fi
512
513exec 5>>config.log
514{
515 echo
516 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
517## Running $as_me. ##
518_ASBOX
519 $as_echo "$ac_log"
520} >&5
521
522#
523# INIT-COMMANDS
524#
525AMDEP_TRUE="" ac_aux_dir="."
526
527
528# Handling of arguments.
529for ac_config_target in $ac_config_targets
530do
531 case $ac_config_target in
532 "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
533 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
534
535 *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
536 esac
537done
538
539
540# If the user did not use the arguments to specify the items to instantiate,
541# then the envvar interface is used. Set only those that are not.
542# We use the long form for the default assignment because of an extremely
543# bizarre bug on SunOS 4.1.3.
544if $ac_need_defaults; then
545 test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
546 test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
547fi
548
549# Have a temporary directory for convenience. Make it in the build tree
550# simply because there is no reason against having it here, and in addition,
551# creating and moving files from /tmp can sometimes cause problems.
552# Hook for its removal unless debugging.
553# Note that there is a small window in which the directory will not be cleaned:
554# after its creation but before its name has been assigned to `$tmp'.
555$debug ||
556{
557 tmp= ac_tmp=
558 trap 'exit_status=$?
559 : "${ac_tmp:=$tmp}"
560 { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
561' 0
562 trap 'as_fn_exit 1' 1 2 13 15
563}
564# Create a (secure) tmp directory for tmp files.
565
566{
567 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
568 test -d "$tmp"
569} ||
570{
571 tmp=./conf$$-$RANDOM
572 (umask 077 && mkdir "$tmp")
573} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
574ac_tmp=$tmp
575
576# Set up the scripts for CONFIG_FILES section.
577# No need to generate them if there are no CONFIG_FILES.
578# This happens for instance with `./config.status config.h'.
579if test -n "$CONFIG_FILES"; then
580
581
582ac_cr=`echo X | tr X '\015'`
583# On cygwin, bash can eat \r inside `` if the user requested igncr.
584# But we know of no other shell where ac_cr would be empty at this
585# point, so we can use a bashism as a fallback.
586if test "x$ac_cr" = x; then
587 eval ac_cr=\$\'\\r\'
588fi
589ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
590if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
591 ac_cs_awk_cr='\\r'
592else
593 ac_cs_awk_cr=$ac_cr
594fi
595
596echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
597cat >>"$ac_tmp/subs1.awk" <<\_ACAWK &&
598S["am__EXEEXT_FALSE"]=""
599S["am__EXEEXT_TRUE"]="#"
600S["LTLIBOBJS"]=""
601S["LIBOBJS"]=""
602S["RANLIB"]="ranlib"
603S["PKG_CONFIG_LIBDIR"]=""
604S["PKG_CONFIG_PATH"]=""
605S["GTK_LIBS"]="-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0"
606S["GTK_CFLAGS"]="-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/"\
607"include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/includ"\
608"e/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/inclu"\
609"de/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/incl"\
610"ude/glib-2.0 -I/usr/lib/glib-2.0/include"
611S["PKG_CONFIG"]="/usr/bin/pkg-config"
612S["am__fastdepCC_FALSE"]="#"
613S["am__fastdepCC_TRUE"]=""
614S["CCDEPMODE"]="depmode=gcc3"
615S["am__nodep"]="_no"
616S["AMDEPBACKSLASH"]="\\"
617S["AMDEP_FALSE"]="#"
618S["AMDEP_TRUE"]=""
619S["am__quote"]=""
620S["am__include"]="include"
621S["DEPDIR"]=".deps"
622S["OBJEXT"]="o"
623S["EXEEXT"]=""
624S["ac_ct_CC"]="gcc"
625S["CPPFLAGS"]=""
626S["LDFLAGS"]=""
627S["CFLAGS"]="-g -O2 -Wall -Werror -std=c89"
628S["CC"]="gcc"
629S["AM_BACKSLASH"]="\\"
630S["AM_DEFAULT_VERBOSITY"]="1"
631S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)"
632S["AM_V"]="$(V)"
633S["am__untar"]="$${TAR-tar} xf -"
634S["am__tar"]="$${TAR-tar} chof - \"$$tardir\""
635S["AMTAR"]="$${TAR-tar}"
636S["am__leading_dot"]="."
637S["SET_MAKE"]=""
638S["AWK"]="gawk"
639S["mkdir_p"]="$(MKDIR_P)"
640S["MKDIR_P"]="/usr/bin/mkdir -p"
641S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
642S["STRIP"]=""
643S["install_sh"]="${SHELL} /home/franklin/puzzles/install-sh"
644S["MAKEINFO"]="${SHELL} /home/franklin/puzzles/missing makeinfo"
645S["AUTOHEADER"]="${SHELL} /home/franklin/puzzles/missing autoheader"
646S["AUTOMAKE"]="${SHELL} /home/franklin/puzzles/missing automake-1.15"
647S["AUTOCONF"]="${SHELL} /home/franklin/puzzles/missing autoconf"
648S["ACLOCAL"]="${SHELL} /home/franklin/puzzles/missing aclocal-1.15"
649S["VERSION"]="6.66"
650S["PACKAGE"]="puzzles"
651S["CYGPATH_W"]="echo"
652S["am__isrc"]=""
653S["INSTALL_DATA"]="${INSTALL} -m 644"
654S["INSTALL_SCRIPT"]="${INSTALL}"
655S["INSTALL_PROGRAM"]="${INSTALL}"
656S["target_alias"]=""
657S["host_alias"]=""
658S["build_alias"]=""
659S["LIBS"]=""
660S["ECHO_T"]=""
661S["ECHO_N"]="-n"
662S["ECHO_C"]=""
663S["DEFS"]="-DPACKAGE_NAME=\\\"puzzles\\\" -DPACKAGE_TARNAME=\\\"puzzles\\\" -DPACKAGE_VERSION=\\\"6.66\\\" -DPACKAGE_STRING=\\\"puzzles\\ 6.66\\\" -DPACKAGE_BUGREPORT=\\\"anakin@"\
664"pobox.com\\\" -DPACKAGE_URL=\\\"\\\" -DPACKAGE=\\\"puzzles\\\" -DVERSION=\\\"6.66\\\""
665S["mandir"]="${datarootdir}/man"
666S["localedir"]="${datarootdir}/locale"
667S["libdir"]="${exec_prefix}/lib"
668S["psdir"]="${docdir}"
669S["pdfdir"]="${docdir}"
670S["dvidir"]="${docdir}"
671S["htmldir"]="${docdir}"
672S["infodir"]="${datarootdir}/info"
673S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
674S["oldincludedir"]="/usr/include"
675S["includedir"]="${prefix}/include"
676S["localstatedir"]="${prefix}/var"
677S["sharedstatedir"]="${prefix}/com"
678S["sysconfdir"]="${prefix}/etc"
679S["datadir"]="${datarootdir}"
680S["datarootdir"]="${prefix}/share"
681S["libexecdir"]="${exec_prefix}/libexec"
682S["sbindir"]="${exec_prefix}/sbin"
683S["bindir"]="${exec_prefix}/bin"
684S["program_transform_name"]="s,x,x,"
685S["prefix"]="/usr/local"
686S["exec_prefix"]="${prefix}"
687S["PACKAGE_URL"]=""
688S["PACKAGE_BUGREPORT"]="anakin@pobox.com"
689S["PACKAGE_STRING"]="puzzles 6.66"
690S["PACKAGE_VERSION"]="6.66"
691S["PACKAGE_TARNAME"]="puzzles"
692S["PACKAGE_NAME"]="puzzles"
693S["PATH_SEPARATOR"]=":"
694S["SHELL"]="/bin/sh"
695_ACAWK
696cat >>"$ac_tmp/subs1.awk" <<_ACAWK &&
697 for (key in S) S_is_set[key] = 1
698 FS = ""
699
700}
701{
702 line = $ 0
703 nfields = split(line, field, "@")
704 substed = 0
705 len = length(field[1])
706 for (i = 2; i < nfields; i++) {
707 key = field[i]
708 keylen = length(key)
709 if (S_is_set[key]) {
710 value = S[key]
711 line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
712 len += length(value) + length(field[++i])
713 substed = 1
714 } else
715 len += 1 + keylen
716 }
717
718 print line
719}
720
721_ACAWK
722if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
723 sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
724else
725 cat
726fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
727 || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
728fi # test -n "$CONFIG_FILES"
729
730
731eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
732shift
733for ac_tag
734do
735 case $ac_tag in
736 :[FHLC]) ac_mode=$ac_tag; continue;;
737 esac
738 case $ac_mode$ac_tag in
739 :[FHL]*:*);;
740 :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
741 :[FH]-) ac_tag=-:-;;
742 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
743 esac
744 ac_save_IFS=$IFS
745 IFS=:
746 set x $ac_tag
747 IFS=$ac_save_IFS
748 shift
749 ac_file=$1
750 shift
751
752 case $ac_mode in
753 :L) ac_source=$1;;
754 :[FH])
755 ac_file_inputs=
756 for ac_f
757 do
758 case $ac_f in
759 -) ac_f="$ac_tmp/stdin";;
760 *) # Look for the file first in the build tree, then in the source tree
761 # (if the path is not absolute). The absolute path cannot be DOS-style,
762 # because $ac_f cannot contain `:'.
763 test -f "$ac_f" ||
764 case $ac_f in
765 [\\/$]*) false;;
766 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
767 esac ||
768 as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
769 esac
770 case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
771 as_fn_append ac_file_inputs " '$ac_f'"
772 done
773
774 # Let's still pretend it is `configure' which instantiates (i.e., don't
775 # use $as_me), people would be surprised to read:
776 # /* config.h. Generated by config.status. */
777 configure_input='Generated from '`
778 $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
779 `' by configure.'
780 if test x"$ac_file" != x-; then
781 configure_input="$ac_file. $configure_input"
782 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
783$as_echo "$as_me: creating $ac_file" >&6;}
784 fi
785 # Neutralize special characters interpreted by sed in replacement strings.
786 case $configure_input in #(
787 *\&* | *\|* | *\\* )
788 ac_sed_conf_input=`$as_echo "$configure_input" |
789 sed 's/[\\\\&|]/\\\\&/g'`;; #(
790 *) ac_sed_conf_input=$configure_input;;
791 esac
792
793 case $ac_tag in
794 *:-:* | *:-) cat >"$ac_tmp/stdin" \
795 || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
796 esac
797 ;;
798 esac
799
800 ac_dir=`$as_dirname -- "$ac_file" ||
801$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
802 X"$ac_file" : 'X\(//\)[^/]' \| \
803 X"$ac_file" : 'X\(//\)$' \| \
804 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
805$as_echo X"$ac_file" |
806 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
807 s//\1/
808 q
809 }
810 /^X\(\/\/\)[^/].*/{
811 s//\1/
812 q
813 }
814 /^X\(\/\/\)$/{
815 s//\1/
816 q
817 }
818 /^X\(\/\).*/{
819 s//\1/
820 q
821 }
822 s/.*/./; q'`
823 as_dir="$ac_dir"; as_fn_mkdir_p
824 ac_builddir=.
825
826case "$ac_dir" in
827.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
828*)
829 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
830 # A ".." for each directory in $ac_dir_suffix.
831 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
832 case $ac_top_builddir_sub in
833 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
834 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
835 esac ;;
836esac
837ac_abs_top_builddir=$ac_pwd
838ac_abs_builddir=$ac_pwd$ac_dir_suffix
839# for backward compatibility:
840ac_top_builddir=$ac_top_build_prefix
841
842case $srcdir in
843 .) # We are building in place.
844 ac_srcdir=.
845 ac_top_srcdir=$ac_top_builddir_sub
846 ac_abs_top_srcdir=$ac_pwd ;;
847 [\\/]* | ?:[\\/]* ) # Absolute name.
848 ac_srcdir=$srcdir$ac_dir_suffix;
849 ac_top_srcdir=$srcdir
850 ac_abs_top_srcdir=$srcdir ;;
851 *) # Relative name.
852 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
853 ac_top_srcdir=$ac_top_build_prefix$srcdir
854 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
855esac
856ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
857
858
859 case $ac_mode in
860 :F)
861 #
862 # CONFIG_FILE
863 #
864
865 case $INSTALL in
866 [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
867 *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
868 esac
869 ac_MKDIR_P=$MKDIR_P
870 case $MKDIR_P in
871 [\\/$]* | ?:[\\/]* ) ;;
872 */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
873 esac
874# If the template does not know about datarootdir, expand it.
875# FIXME: This hack should be removed a few years after 2.60.
876ac_datarootdir_hack=; ac_datarootdir_seen=
877ac_sed_dataroot='
878/datarootdir/ {
879 p
880 q
881}
882/@datadir@/p
883/@docdir@/p
884/@infodir@/p
885/@localedir@/p
886/@mandir@/p'
887case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
888*datarootdir*) ac_datarootdir_seen=yes;;
889*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
890 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
891$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
892 ac_datarootdir_hack='
893 s&@datadir@&${datarootdir}&g
894 s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
895 s&@infodir@&${datarootdir}/info&g
896 s&@localedir@&${datarootdir}/locale&g
897 s&@mandir@&${datarootdir}/man&g
898 s&\${datarootdir}&${prefix}/share&g' ;;
899esac
900ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{
901h
902s///
903s/^/:/
904s/[ ]*$/:/
905s/:\$(srcdir):/:/g
906s/:\${srcdir}:/:/g
907s/:@srcdir@:/:/g
908s/^:*//
909s/:*$//
910x
911s/\(=[ ]*\).*/\1/
912G
913s/\n//
914s/^[^=]*=[ ]*$//
915}
916
917:t
918/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
919s|@configure_input@|$ac_sed_conf_input|;t t
920s&@top_builddir@&$ac_top_builddir_sub&;t t
921s&@top_build_prefix@&$ac_top_build_prefix&;t t
922s&@srcdir@&$ac_srcdir&;t t
923s&@abs_srcdir@&$ac_abs_srcdir&;t t
924s&@top_srcdir@&$ac_top_srcdir&;t t
925s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
926s&@builddir@&$ac_builddir&;t t
927s&@abs_builddir@&$ac_abs_builddir&;t t
928s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
929s&@INSTALL@&$ac_INSTALL&;t t
930s&@MKDIR_P@&$ac_MKDIR_P&;t t
931$ac_datarootdir_hack
932"
933eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
934 >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
935
936test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
937 { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
938 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
939 "$ac_tmp/out"`; test -z "$ac_out"; } &&
940 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
941which seems to be undefined. Please make sure it is defined" >&5
942$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
943which seems to be undefined. Please make sure it is defined" >&2;}
944
945 rm -f "$ac_tmp/stdin"
946 case $ac_file in
947 -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
948 *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
949 esac \
950 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
951 ;;
952
953
954 :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
955$as_echo "$as_me: executing $ac_file commands" >&6;}
956 ;;
957 esac
958
959
960 case $ac_file$ac_mode in
961 "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
962 # Older Autoconf quotes --file arguments for eval, but not when files
963 # are listed without --file. Let's play safe and only enable the eval
964 # if we detect the quoting.
965 case $CONFIG_FILES in
966 *\'*) eval set x "$CONFIG_FILES" ;;
967 *) set x $CONFIG_FILES ;;
968 esac
969 shift
970 for mf
971 do
972 # Strip MF so we end up with the name of the file.
973 mf=`echo "$mf" | sed -e 's/:.*$//'`
974 # Check whether this is an Automake generated Makefile or not.
975 # We used to match only the files named 'Makefile.in', but
976 # some people rename them; so instead we look at the file content.
977 # Grep'ing the first line is not enough: some people post-process
978 # each Makefile.in and add a new line on top of each file to say so.
979 # Grep'ing the whole file is not good either: AIX grep has a line
980 # limit of 2048, but all sed's we know have understand at least 4000.
981 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
982 dirpart=`$as_dirname -- "$mf" ||
983$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
984 X"$mf" : 'X\(//\)[^/]' \| \
985 X"$mf" : 'X\(//\)$' \| \
986 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
987$as_echo X"$mf" |
988 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
989 s//\1/
990 q
991 }
992 /^X\(\/\/\)[^/].*/{
993 s//\1/
994 q
995 }
996 /^X\(\/\/\)$/{
997 s//\1/
998 q
999 }
1000 /^X\(\/\).*/{
1001 s//\1/
1002 q
1003 }
1004 s/.*/./; q'`
1005 else
1006 continue
1007 fi
1008 # Extract the definition of DEPDIR, am__include, and am__quote
1009 # from the Makefile without running 'make'.
1010 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
1011 test -z "$DEPDIR" && continue
1012 am__include=`sed -n 's/^am__include = //p' < "$mf"`
1013 test -z "$am__include" && continue
1014 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
1015 # Find all dependency output files, they are included files with
1016 # $(DEPDIR) in their names. We invoke sed twice because it is the
1017 # simplest approach to changing $(DEPDIR) to its actual value in the
1018 # expansion.
1019 for file in `sed -n "
1020 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
1021 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
1022 # Make sure the directory exists.
1023 test -f "$dirpart/$file" && continue
1024 fdir=`$as_dirname -- "$file" ||
1025$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1026 X"$file" : 'X\(//\)[^/]' \| \
1027 X"$file" : 'X\(//\)$' \| \
1028 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
1029$as_echo X"$file" |
1030 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1031 s//\1/
1032 q
1033 }
1034 /^X\(\/\/\)[^/].*/{
1035 s//\1/
1036 q
1037 }
1038 /^X\(\/\/\)$/{
1039 s//\1/
1040 q
1041 }
1042 /^X\(\/\).*/{
1043 s//\1/
1044 q
1045 }
1046 s/.*/./; q'`
1047 as_dir=$dirpart/$fdir; as_fn_mkdir_p
1048 # echo "creating $dirpart/$file"
1049 echo '# dummy' > "$dirpart/$file"
1050 done
1051 done
1052}
1053 ;;
1054
1055 esac
1056done # for ac_tag
1057
1058
1059as_fn_exit 0
diff --git a/apps/plugins/puzzles/src/configure b/apps/plugins/puzzles/src/configure
new file mode 100755
index 0000000000..432ca273b3
--- /dev/null
+++ b/apps/plugins/puzzles/src/configure
@@ -0,0 +1,5739 @@
1#! /bin/sh
2# Guess values for system-dependent variables and create Makefiles.
3# Generated by GNU Autoconf 2.69 for puzzles 6.66.
4#
5# Report bugs to <anakin@pobox.com>.
6#
7#
8# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
9#
10#
11# This configure script is free software; the Free Software Foundation
12# gives unlimited permission to copy, distribute and modify it.
13## -------------------- ##
14## M4sh Initialization. ##
15## -------------------- ##
16
17# Be more Bourne compatible
18DUALCASE=1; export DUALCASE # for MKS sh
19if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
20 emulate sh
21 NULLCMD=:
22 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
23 # is contrary to our usage. Disable this feature.
24 alias -g '${1+"$@"}'='"$@"'
25 setopt NO_GLOB_SUBST
26else
27 case `(set -o) 2>/dev/null` in #(
28 *posix*) :
29 set -o posix ;; #(
30 *) :
31 ;;
32esac
33fi
34
35
36as_nl='
37'
38export as_nl
39# Printing a long string crashes Solaris 7 /usr/bin/printf.
40as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
41as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
42as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
43# Prefer a ksh shell builtin over an external printf program on Solaris,
44# but without wasting forks for bash or zsh.
45if test -z "$BASH_VERSION$ZSH_VERSION" \
46 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
47 as_echo='print -r --'
48 as_echo_n='print -rn --'
49elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
50 as_echo='printf %s\n'
51 as_echo_n='printf %s'
52else
53 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
54 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
55 as_echo_n='/usr/ucb/echo -n'
56 else
57 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
58 as_echo_n_body='eval
59 arg=$1;
60 case $arg in #(
61 *"$as_nl"*)
62 expr "X$arg" : "X\\(.*\\)$as_nl";
63 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
64 esac;
65 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
66 '
67 export as_echo_n_body
68 as_echo_n='sh -c $as_echo_n_body as_echo'
69 fi
70 export as_echo_body
71 as_echo='sh -c $as_echo_body as_echo'
72fi
73
74# The user is always right.
75if test "${PATH_SEPARATOR+set}" != set; then
76 PATH_SEPARATOR=:
77 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
78 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
79 PATH_SEPARATOR=';'
80 }
81fi
82
83
84# IFS
85# We need space, tab and new line, in precisely that order. Quoting is
86# there to prevent editors from complaining about space-tab.
87# (If _AS_PATH_WALK were called with IFS unset, it would disable word
88# splitting by setting IFS to empty value.)
89IFS=" "" $as_nl"
90
91# Find who we are. Look in the path if we contain no directory separator.
92as_myself=
93case $0 in #((
94 *[\\/]* ) as_myself=$0 ;;
95 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
96for as_dir in $PATH
97do
98 IFS=$as_save_IFS
99 test -z "$as_dir" && as_dir=.
100 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
101 done
102IFS=$as_save_IFS
103
104 ;;
105esac
106# We did not find ourselves, most probably we were run as `sh COMMAND'
107# in which case we are not to be found in the path.
108if test "x$as_myself" = x; then
109 as_myself=$0
110fi
111if test ! -f "$as_myself"; then
112 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
113 exit 1
114fi
115
116# Unset variables that we do not need and which cause bugs (e.g. in
117# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
118# suppresses any "Segmentation fault" message there. '((' could
119# trigger a bug in pdksh 5.2.14.
120for as_var in BASH_ENV ENV MAIL MAILPATH
121do eval test x\${$as_var+set} = xset \
122 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
123done
124PS1='$ '
125PS2='> '
126PS4='+ '
127
128# NLS nuisances.
129LC_ALL=C
130export LC_ALL
131LANGUAGE=C
132export LANGUAGE
133
134# CDPATH.
135(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
136
137# Use a proper internal environment variable to ensure we don't fall
138 # into an infinite loop, continuously re-executing ourselves.
139 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
140 _as_can_reexec=no; export _as_can_reexec;
141 # We cannot yet assume a decent shell, so we have to provide a
142# neutralization value for shells without unset; and this also
143# works around shells that cannot unset nonexistent variables.
144# Preserve -v and -x to the replacement shell.
145BASH_ENV=/dev/null
146ENV=/dev/null
147(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
148case $- in # ((((
149 *v*x* | *x*v* ) as_opts=-vx ;;
150 *v* ) as_opts=-v ;;
151 *x* ) as_opts=-x ;;
152 * ) as_opts= ;;
153esac
154exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
155# Admittedly, this is quite paranoid, since all the known shells bail
156# out after a failed `exec'.
157$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
158as_fn_exit 255
159 fi
160 # We don't want this to propagate to other subprocesses.
161 { _as_can_reexec=; unset _as_can_reexec;}
162if test "x$CONFIG_SHELL" = x; then
163 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
164 emulate sh
165 NULLCMD=:
166 # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
167 # is contrary to our usage. Disable this feature.
168 alias -g '\${1+\"\$@\"}'='\"\$@\"'
169 setopt NO_GLOB_SUBST
170else
171 case \`(set -o) 2>/dev/null\` in #(
172 *posix*) :
173 set -o posix ;; #(
174 *) :
175 ;;
176esac
177fi
178"
179 as_required="as_fn_return () { (exit \$1); }
180as_fn_success () { as_fn_return 0; }
181as_fn_failure () { as_fn_return 1; }
182as_fn_ret_success () { return 0; }
183as_fn_ret_failure () { return 1; }
184
185exitcode=0
186as_fn_success || { exitcode=1; echo as_fn_success failed.; }
187as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
188as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
189as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
190if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
191
192else
193 exitcode=1; echo positional parameters were not saved.
194fi
195test x\$exitcode = x0 || exit 1
196test -x / || exit 1"
197 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
198 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
199 eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
200 test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
201 if (eval "$as_required") 2>/dev/null; then :
202 as_have_required=yes
203else
204 as_have_required=no
205fi
206 if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
207
208else
209 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
210as_found=false
211for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
212do
213 IFS=$as_save_IFS
214 test -z "$as_dir" && as_dir=.
215 as_found=:
216 case $as_dir in #(
217 /*)
218 for as_base in sh bash ksh sh5; do
219 # Try only shells that exist, to save several forks.
220 as_shell=$as_dir/$as_base
221 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
222 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
223 CONFIG_SHELL=$as_shell as_have_required=yes
224 if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
225 break 2
226fi
227fi
228 done;;
229 esac
230 as_found=false
231done
232$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
233 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
234 CONFIG_SHELL=$SHELL as_have_required=yes
235fi; }
236IFS=$as_save_IFS
237
238
239 if test "x$CONFIG_SHELL" != x; then :
240 export CONFIG_SHELL
241 # We cannot yet assume a decent shell, so we have to provide a
242# neutralization value for shells without unset; and this also
243# works around shells that cannot unset nonexistent variables.
244# Preserve -v and -x to the replacement shell.
245BASH_ENV=/dev/null
246ENV=/dev/null
247(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
248case $- in # ((((
249 *v*x* | *x*v* ) as_opts=-vx ;;
250 *v* ) as_opts=-v ;;
251 *x* ) as_opts=-x ;;
252 * ) as_opts= ;;
253esac
254exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
255# Admittedly, this is quite paranoid, since all the known shells bail
256# out after a failed `exec'.
257$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
258exit 255
259fi
260
261 if test x$as_have_required = xno; then :
262 $as_echo "$0: This script requires a shell more modern than all"
263 $as_echo "$0: the shells that I found on your system."
264 if test x${ZSH_VERSION+set} = xset ; then
265 $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
266 $as_echo "$0: be upgraded to zsh 4.3.4 or later."
267 else
268 $as_echo "$0: Please tell bug-autoconf@gnu.org and anakin@pobox.com
269$0: about your system, including any error possibly output
270$0: before this message. Then install a modern shell, or
271$0: manually run the script under such a shell if you do
272$0: have one."
273 fi
274 exit 1
275fi
276fi
277fi
278SHELL=${CONFIG_SHELL-/bin/sh}
279export SHELL
280# Unset more variables known to interfere with behavior of common tools.
281CLICOLOR_FORCE= GREP_OPTIONS=
282unset CLICOLOR_FORCE GREP_OPTIONS
283
284## --------------------- ##
285## M4sh Shell Functions. ##
286## --------------------- ##
287# as_fn_unset VAR
288# ---------------
289# Portably unset VAR.
290as_fn_unset ()
291{
292 { eval $1=; unset $1;}
293}
294as_unset=as_fn_unset
295
296# as_fn_set_status STATUS
297# -----------------------
298# Set $? to STATUS, without forking.
299as_fn_set_status ()
300{
301 return $1
302} # as_fn_set_status
303
304# as_fn_exit STATUS
305# -----------------
306# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
307as_fn_exit ()
308{
309 set +e
310 as_fn_set_status $1
311 exit $1
312} # as_fn_exit
313
314# as_fn_mkdir_p
315# -------------
316# Create "$as_dir" as a directory, including parents if necessary.
317as_fn_mkdir_p ()
318{
319
320 case $as_dir in #(
321 -*) as_dir=./$as_dir;;
322 esac
323 test -d "$as_dir" || eval $as_mkdir_p || {
324 as_dirs=
325 while :; do
326 case $as_dir in #(
327 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
328 *) as_qdir=$as_dir;;
329 esac
330 as_dirs="'$as_qdir' $as_dirs"
331 as_dir=`$as_dirname -- "$as_dir" ||
332$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
333 X"$as_dir" : 'X\(//\)[^/]' \| \
334 X"$as_dir" : 'X\(//\)$' \| \
335 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
336$as_echo X"$as_dir" |
337 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
338 s//\1/
339 q
340 }
341 /^X\(\/\/\)[^/].*/{
342 s//\1/
343 q
344 }
345 /^X\(\/\/\)$/{
346 s//\1/
347 q
348 }
349 /^X\(\/\).*/{
350 s//\1/
351 q
352 }
353 s/.*/./; q'`
354 test -d "$as_dir" && break
355 done
356 test -z "$as_dirs" || eval "mkdir $as_dirs"
357 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
358
359
360} # as_fn_mkdir_p
361
362# as_fn_executable_p FILE
363# -----------------------
364# Test if FILE is an executable regular file.
365as_fn_executable_p ()
366{
367 test -f "$1" && test -x "$1"
368} # as_fn_executable_p
369# as_fn_append VAR VALUE
370# ----------------------
371# Append the text in VALUE to the end of the definition contained in VAR. Take
372# advantage of any shell optimizations that allow amortized linear growth over
373# repeated appends, instead of the typical quadratic growth present in naive
374# implementations.
375if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
376 eval 'as_fn_append ()
377 {
378 eval $1+=\$2
379 }'
380else
381 as_fn_append ()
382 {
383 eval $1=\$$1\$2
384 }
385fi # as_fn_append
386
387# as_fn_arith ARG...
388# ------------------
389# Perform arithmetic evaluation on the ARGs, and store the result in the
390# global $as_val. Take advantage of shells that can avoid forks. The arguments
391# must be portable across $(()) and expr.
392if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
393 eval 'as_fn_arith ()
394 {
395 as_val=$(( $* ))
396 }'
397else
398 as_fn_arith ()
399 {
400 as_val=`expr "$@" || test $? -eq 1`
401 }
402fi # as_fn_arith
403
404
405# as_fn_error STATUS ERROR [LINENO LOG_FD]
406# ----------------------------------------
407# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
408# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
409# script with STATUS, using 1 if that was 0.
410as_fn_error ()
411{
412 as_status=$1; test $as_status -eq 0 && as_status=1
413 if test "$4"; then
414 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
415 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
416 fi
417 $as_echo "$as_me: error: $2" >&2
418 as_fn_exit $as_status
419} # as_fn_error
420
421if expr a : '\(a\)' >/dev/null 2>&1 &&
422 test "X`expr 00001 : '.*\(...\)'`" = X001; then
423 as_expr=expr
424else
425 as_expr=false
426fi
427
428if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
429 as_basename=basename
430else
431 as_basename=false
432fi
433
434if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
435 as_dirname=dirname
436else
437 as_dirname=false
438fi
439
440as_me=`$as_basename -- "$0" ||
441$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
442 X"$0" : 'X\(//\)$' \| \
443 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
444$as_echo X/"$0" |
445 sed '/^.*\/\([^/][^/]*\)\/*$/{
446 s//\1/
447 q
448 }
449 /^X\/\(\/\/\)$/{
450 s//\1/
451 q
452 }
453 /^X\/\(\/\).*/{
454 s//\1/
455 q
456 }
457 s/.*/./; q'`
458
459# Avoid depending upon Character Ranges.
460as_cr_letters='abcdefghijklmnopqrstuvwxyz'
461as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
462as_cr_Letters=$as_cr_letters$as_cr_LETTERS
463as_cr_digits='0123456789'
464as_cr_alnum=$as_cr_Letters$as_cr_digits
465
466
467 as_lineno_1=$LINENO as_lineno_1a=$LINENO
468 as_lineno_2=$LINENO as_lineno_2a=$LINENO
469 eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
470 test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
471 # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
472 sed -n '
473 p
474 /[$]LINENO/=
475 ' <$as_myself |
476 sed '
477 s/[$]LINENO.*/&-/
478 t lineno
479 b
480 :lineno
481 N
482 :loop
483 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
484 t loop
485 s/-\n.*//
486 ' >$as_me.lineno &&
487 chmod +x "$as_me.lineno" ||
488 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
489
490 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
491 # already done that, so ensure we don't try to do so again and fall
492 # in an infinite loop. This has already happened in practice.
493 _as_can_reexec=no; export _as_can_reexec
494 # Don't try to exec as it changes $[0], causing all sort of problems
495 # (the dirname of $[0] is not the place where we might find the
496 # original and so on. Autoconf is especially sensitive to this).
497 . "./$as_me.lineno"
498 # Exit status is that of the last command.
499 exit
500}
501
502ECHO_C= ECHO_N= ECHO_T=
503case `echo -n x` in #(((((
504-n*)
505 case `echo 'xy\c'` in
506 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
507 xy) ECHO_C='\c';;
508 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
509 ECHO_T=' ';;
510 esac;;
511*)
512 ECHO_N='-n';;
513esac
514
515rm -f conf$$ conf$$.exe conf$$.file
516if test -d conf$$.dir; then
517 rm -f conf$$.dir/conf$$.file
518else
519 rm -f conf$$.dir
520 mkdir conf$$.dir 2>/dev/null
521fi
522if (echo >conf$$.file) 2>/dev/null; then
523 if ln -s conf$$.file conf$$ 2>/dev/null; then
524 as_ln_s='ln -s'
525 # ... but there are two gotchas:
526 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
527 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
528 # In both cases, we have to default to `cp -pR'.
529 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
530 as_ln_s='cp -pR'
531 elif ln conf$$.file conf$$ 2>/dev/null; then
532 as_ln_s=ln
533 else
534 as_ln_s='cp -pR'
535 fi
536else
537 as_ln_s='cp -pR'
538fi
539rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
540rmdir conf$$.dir 2>/dev/null
541
542if mkdir -p . 2>/dev/null; then
543 as_mkdir_p='mkdir -p "$as_dir"'
544else
545 test -d ./-p && rmdir ./-p
546 as_mkdir_p=false
547fi
548
549as_test_x='test -x'
550as_executable_p=as_fn_executable_p
551
552# Sed expression to map a string onto a valid CPP name.
553as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
554
555# Sed expression to map a string onto a valid variable name.
556as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
557
558
559test -n "$DJDIR" || exec 7<&0 </dev/null
560exec 6>&1
561
562# Name of the host.
563# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
564# so uname gets run too.
565ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
566
567#
568# Initializations.
569#
570ac_default_prefix=/usr/local
571ac_clean_files=
572ac_config_libobj_dir=.
573LIBOBJS=
574cross_compiling=no
575subdirs=
576MFLAGS=
577MAKEFLAGS=
578
579# Identity of this package.
580PACKAGE_NAME='puzzles'
581PACKAGE_TARNAME='puzzles'
582PACKAGE_VERSION='6.66'
583PACKAGE_STRING='puzzles 6.66'
584PACKAGE_BUGREPORT='anakin@pobox.com'
585PACKAGE_URL=''
586
587ac_unique_file="midend.c"
588ac_subst_vars='am__EXEEXT_FALSE
589am__EXEEXT_TRUE
590LTLIBOBJS
591LIBOBJS
592RANLIB
593PKG_CONFIG_LIBDIR
594PKG_CONFIG_PATH
595GTK_LIBS
596GTK_CFLAGS
597PKG_CONFIG
598am__fastdepCC_FALSE
599am__fastdepCC_TRUE
600CCDEPMODE
601am__nodep
602AMDEPBACKSLASH
603AMDEP_FALSE
604AMDEP_TRUE
605am__quote
606am__include
607DEPDIR
608OBJEXT
609EXEEXT
610ac_ct_CC
611CPPFLAGS
612LDFLAGS
613CFLAGS
614CC
615AM_BACKSLASH
616AM_DEFAULT_VERBOSITY
617AM_DEFAULT_V
618AM_V
619am__untar
620am__tar
621AMTAR
622am__leading_dot
623SET_MAKE
624AWK
625mkdir_p
626MKDIR_P
627INSTALL_STRIP_PROGRAM
628STRIP
629install_sh
630MAKEINFO
631AUTOHEADER
632AUTOMAKE
633AUTOCONF
634ACLOCAL
635VERSION
636PACKAGE
637CYGPATH_W
638am__isrc
639INSTALL_DATA
640INSTALL_SCRIPT
641INSTALL_PROGRAM
642target_alias
643host_alias
644build_alias
645LIBS
646ECHO_T
647ECHO_N
648ECHO_C
649DEFS
650mandir
651localedir
652libdir
653psdir
654pdfdir
655dvidir
656htmldir
657infodir
658docdir
659oldincludedir
660includedir
661localstatedir
662sharedstatedir
663sysconfdir
664datadir
665datarootdir
666libexecdir
667sbindir
668bindir
669program_transform_name
670prefix
671exec_prefix
672PACKAGE_URL
673PACKAGE_BUGREPORT
674PACKAGE_STRING
675PACKAGE_VERSION
676PACKAGE_TARNAME
677PACKAGE_NAME
678PATH_SEPARATOR
679SHELL'
680ac_subst_files=''
681ac_user_opts='
682enable_option_checking
683enable_silent_rules
684enable_dependency_tracking
685with_gtk
686enable_gtktest
687'
688 ac_precious_vars='build_alias
689host_alias
690target_alias
691CC
692CFLAGS
693LDFLAGS
694LIBS
695CPPFLAGS
696PKG_CONFIG
697PKG_CONFIG_PATH
698PKG_CONFIG_LIBDIR'
699
700
701# Initialize some variables set by options.
702ac_init_help=
703ac_init_version=false
704ac_unrecognized_opts=
705ac_unrecognized_sep=
706# The variables have the same names as the options, with
707# dashes changed to underlines.
708cache_file=/dev/null
709exec_prefix=NONE
710no_create=
711no_recursion=
712prefix=NONE
713program_prefix=NONE
714program_suffix=NONE
715program_transform_name=s,x,x,
716silent=
717site=
718srcdir=
719verbose=
720x_includes=NONE
721x_libraries=NONE
722
723# Installation directory options.
724# These are left unexpanded so users can "make install exec_prefix=/foo"
725# and all the variables that are supposed to be based on exec_prefix
726# by default will actually change.
727# Use braces instead of parens because sh, perl, etc. also accept them.
728# (The list follows the same order as the GNU Coding Standards.)
729bindir='${exec_prefix}/bin'
730sbindir='${exec_prefix}/sbin'
731libexecdir='${exec_prefix}/libexec'
732datarootdir='${prefix}/share'
733datadir='${datarootdir}'
734sysconfdir='${prefix}/etc'
735sharedstatedir='${prefix}/com'
736localstatedir='${prefix}/var'
737includedir='${prefix}/include'
738oldincludedir='/usr/include'
739docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
740infodir='${datarootdir}/info'
741htmldir='${docdir}'
742dvidir='${docdir}'
743pdfdir='${docdir}'
744psdir='${docdir}'
745libdir='${exec_prefix}/lib'
746localedir='${datarootdir}/locale'
747mandir='${datarootdir}/man'
748
749ac_prev=
750ac_dashdash=
751for ac_option
752do
753 # If the previous option needs an argument, assign it.
754 if test -n "$ac_prev"; then
755 eval $ac_prev=\$ac_option
756 ac_prev=
757 continue
758 fi
759
760 case $ac_option in
761 *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
762 *=) ac_optarg= ;;
763 *) ac_optarg=yes ;;
764 esac
765
766 # Accept the important Cygnus configure options, so we can diagnose typos.
767
768 case $ac_dashdash$ac_option in
769 --)
770 ac_dashdash=yes ;;
771
772 -bindir | --bindir | --bindi | --bind | --bin | --bi)
773 ac_prev=bindir ;;
774 -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
775 bindir=$ac_optarg ;;
776
777 -build | --build | --buil | --bui | --bu)
778 ac_prev=build_alias ;;
779 -build=* | --build=* | --buil=* | --bui=* | --bu=*)
780 build_alias=$ac_optarg ;;
781
782 -cache-file | --cache-file | --cache-fil | --cache-fi \
783 | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
784 ac_prev=cache_file ;;
785 -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
786 | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
787 cache_file=$ac_optarg ;;
788
789 --config-cache | -C)
790 cache_file=config.cache ;;
791
792 -datadir | --datadir | --datadi | --datad)
793 ac_prev=datadir ;;
794 -datadir=* | --datadir=* | --datadi=* | --datad=*)
795 datadir=$ac_optarg ;;
796
797 -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
798 | --dataroo | --dataro | --datar)
799 ac_prev=datarootdir ;;
800 -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
801 | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
802 datarootdir=$ac_optarg ;;
803
804 -disable-* | --disable-*)
805 ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
806 # Reject names that are not valid shell variable names.
807 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
808 as_fn_error $? "invalid feature name: $ac_useropt"
809 ac_useropt_orig=$ac_useropt
810 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
811 case $ac_user_opts in
812 *"
813"enable_$ac_useropt"
814"*) ;;
815 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
816 ac_unrecognized_sep=', ';;
817 esac
818 eval enable_$ac_useropt=no ;;
819
820 -docdir | --docdir | --docdi | --doc | --do)
821 ac_prev=docdir ;;
822 -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
823 docdir=$ac_optarg ;;
824
825 -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
826 ac_prev=dvidir ;;
827 -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
828 dvidir=$ac_optarg ;;
829
830 -enable-* | --enable-*)
831 ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
832 # Reject names that are not valid shell variable names.
833 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
834 as_fn_error $? "invalid feature name: $ac_useropt"
835 ac_useropt_orig=$ac_useropt
836 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
837 case $ac_user_opts in
838 *"
839"enable_$ac_useropt"
840"*) ;;
841 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
842 ac_unrecognized_sep=', ';;
843 esac
844 eval enable_$ac_useropt=\$ac_optarg ;;
845
846 -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
847 | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
848 | --exec | --exe | --ex)
849 ac_prev=exec_prefix ;;
850 -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
851 | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
852 | --exec=* | --exe=* | --ex=*)
853 exec_prefix=$ac_optarg ;;
854
855 -gas | --gas | --ga | --g)
856 # Obsolete; use --with-gas.
857 with_gas=yes ;;
858
859 -help | --help | --hel | --he | -h)
860 ac_init_help=long ;;
861 -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
862 ac_init_help=recursive ;;
863 -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
864 ac_init_help=short ;;
865
866 -host | --host | --hos | --ho)
867 ac_prev=host_alias ;;
868 -host=* | --host=* | --hos=* | --ho=*)
869 host_alias=$ac_optarg ;;
870
871 -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
872 ac_prev=htmldir ;;
873 -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
874 | --ht=*)
875 htmldir=$ac_optarg ;;
876
877 -includedir | --includedir | --includedi | --included | --include \
878 | --includ | --inclu | --incl | --inc)
879 ac_prev=includedir ;;
880 -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
881 | --includ=* | --inclu=* | --incl=* | --inc=*)
882 includedir=$ac_optarg ;;
883
884 -infodir | --infodir | --infodi | --infod | --info | --inf)
885 ac_prev=infodir ;;
886 -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
887 infodir=$ac_optarg ;;
888
889 -libdir | --libdir | --libdi | --libd)
890 ac_prev=libdir ;;
891 -libdir=* | --libdir=* | --libdi=* | --libd=*)
892 libdir=$ac_optarg ;;
893
894 -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
895 | --libexe | --libex | --libe)
896 ac_prev=libexecdir ;;
897 -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
898 | --libexe=* | --libex=* | --libe=*)
899 libexecdir=$ac_optarg ;;
900
901 -localedir | --localedir | --localedi | --localed | --locale)
902 ac_prev=localedir ;;
903 -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
904 localedir=$ac_optarg ;;
905
906 -localstatedir | --localstatedir | --localstatedi | --localstated \
907 | --localstate | --localstat | --localsta | --localst | --locals)
908 ac_prev=localstatedir ;;
909 -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
910 | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
911 localstatedir=$ac_optarg ;;
912
913 -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
914 ac_prev=mandir ;;
915 -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
916 mandir=$ac_optarg ;;
917
918 -nfp | --nfp | --nf)
919 # Obsolete; use --without-fp.
920 with_fp=no ;;
921
922 -no-create | --no-create | --no-creat | --no-crea | --no-cre \
923 | --no-cr | --no-c | -n)
924 no_create=yes ;;
925
926 -no-recursion | --no-recursion | --no-recursio | --no-recursi \
927 | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
928 no_recursion=yes ;;
929
930 -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
931 | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
932 | --oldin | --oldi | --old | --ol | --o)
933 ac_prev=oldincludedir ;;
934 -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
935 | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
936 | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
937 oldincludedir=$ac_optarg ;;
938
939 -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
940 ac_prev=prefix ;;
941 -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
942 prefix=$ac_optarg ;;
943
944 -program-prefix | --program-prefix | --program-prefi | --program-pref \
945 | --program-pre | --program-pr | --program-p)
946 ac_prev=program_prefix ;;
947 -program-prefix=* | --program-prefix=* | --program-prefi=* \
948 | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
949 program_prefix=$ac_optarg ;;
950
951 -program-suffix | --program-suffix | --program-suffi | --program-suff \
952 | --program-suf | --program-su | --program-s)
953 ac_prev=program_suffix ;;
954 -program-suffix=* | --program-suffix=* | --program-suffi=* \
955 | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
956 program_suffix=$ac_optarg ;;
957
958 -program-transform-name | --program-transform-name \
959 | --program-transform-nam | --program-transform-na \
960 | --program-transform-n | --program-transform- \
961 | --program-transform | --program-transfor \
962 | --program-transfo | --program-transf \
963 | --program-trans | --program-tran \
964 | --progr-tra | --program-tr | --program-t)
965 ac_prev=program_transform_name ;;
966 -program-transform-name=* | --program-transform-name=* \
967 | --program-transform-nam=* | --program-transform-na=* \
968 | --program-transform-n=* | --program-transform-=* \
969 | --program-transform=* | --program-transfor=* \
970 | --program-transfo=* | --program-transf=* \
971 | --program-trans=* | --program-tran=* \
972 | --progr-tra=* | --program-tr=* | --program-t=*)
973 program_transform_name=$ac_optarg ;;
974
975 -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
976 ac_prev=pdfdir ;;
977 -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
978 pdfdir=$ac_optarg ;;
979
980 -psdir | --psdir | --psdi | --psd | --ps)
981 ac_prev=psdir ;;
982 -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
983 psdir=$ac_optarg ;;
984
985 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
986 | -silent | --silent | --silen | --sile | --sil)
987 silent=yes ;;
988
989 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
990 ac_prev=sbindir ;;
991 -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
992 | --sbi=* | --sb=*)
993 sbindir=$ac_optarg ;;
994
995 -sharedstatedir | --sharedstatedir | --sharedstatedi \
996 | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
997 | --sharedst | --shareds | --shared | --share | --shar \
998 | --sha | --sh)
999 ac_prev=sharedstatedir ;;
1000 -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
1001 | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
1002 | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
1003 | --sha=* | --sh=*)
1004 sharedstatedir=$ac_optarg ;;
1005
1006 -site | --site | --sit)
1007 ac_prev=site ;;
1008 -site=* | --site=* | --sit=*)
1009 site=$ac_optarg ;;
1010
1011 -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
1012 ac_prev=srcdir ;;
1013 -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
1014 srcdir=$ac_optarg ;;
1015
1016 -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
1017 | --syscon | --sysco | --sysc | --sys | --sy)
1018 ac_prev=sysconfdir ;;
1019 -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
1020 | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
1021 sysconfdir=$ac_optarg ;;
1022
1023 -target | --target | --targe | --targ | --tar | --ta | --t)
1024 ac_prev=target_alias ;;
1025 -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
1026 target_alias=$ac_optarg ;;
1027
1028 -v | -verbose | --verbose | --verbos | --verbo | --verb)
1029 verbose=yes ;;
1030
1031 -version | --version | --versio | --versi | --vers | -V)
1032 ac_init_version=: ;;
1033
1034 -with-* | --with-*)
1035 ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1036 # Reject names that are not valid shell variable names.
1037 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1038 as_fn_error $? "invalid package name: $ac_useropt"
1039 ac_useropt_orig=$ac_useropt
1040 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1041 case $ac_user_opts in
1042 *"
1043"with_$ac_useropt"
1044"*) ;;
1045 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
1046 ac_unrecognized_sep=', ';;
1047 esac
1048 eval with_$ac_useropt=\$ac_optarg ;;
1049
1050 -without-* | --without-*)
1051 ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1052 # Reject names that are not valid shell variable names.
1053 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1054 as_fn_error $? "invalid package name: $ac_useropt"
1055 ac_useropt_orig=$ac_useropt
1056 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1057 case $ac_user_opts in
1058 *"
1059"with_$ac_useropt"
1060"*) ;;
1061 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
1062 ac_unrecognized_sep=', ';;
1063 esac
1064 eval with_$ac_useropt=no ;;
1065
1066 --x)
1067 # Obsolete; use --with-x.
1068 with_x=yes ;;
1069
1070 -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
1071 | --x-incl | --x-inc | --x-in | --x-i)
1072 ac_prev=x_includes ;;
1073 -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
1074 | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
1075 x_includes=$ac_optarg ;;
1076
1077 -x-libraries | --x-libraries | --x-librarie | --x-librari \
1078 | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
1079 ac_prev=x_libraries ;;
1080 -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
1081 | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1082 x_libraries=$ac_optarg ;;
1083
1084 -*) as_fn_error $? "unrecognized option: \`$ac_option'
1085Try \`$0 --help' for more information"
1086 ;;
1087
1088 *=*)
1089 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1090 # Reject names that are not valid shell variable names.
1091 case $ac_envvar in #(
1092 '' | [0-9]* | *[!_$as_cr_alnum]* )
1093 as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
1094 esac
1095 eval $ac_envvar=\$ac_optarg
1096 export $ac_envvar ;;
1097
1098 *)
1099 # FIXME: should be removed in autoconf 3.0.
1100 $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1101 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1102 $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1103 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
1104 ;;
1105
1106 esac
1107done
1108
1109if test -n "$ac_prev"; then
1110 ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1111 as_fn_error $? "missing argument to $ac_option"
1112fi
1113
1114if test -n "$ac_unrecognized_opts"; then
1115 case $enable_option_checking in
1116 no) ;;
1117 fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
1118 *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
1119 esac
1120fi
1121
1122# Check all directory arguments for consistency.
1123for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
1124 datadir sysconfdir sharedstatedir localstatedir includedir \
1125 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1126 libdir localedir mandir
1127do
1128 eval ac_val=\$$ac_var
1129 # Remove trailing slashes.
1130 case $ac_val in
1131 */ )
1132 ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
1133 eval $ac_var=\$ac_val;;
1134 esac
1135 # Be sure to have absolute directory names.
1136 case $ac_val in
1137 [\\/$]* | ?:[\\/]* ) continue;;
1138 NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
1139 esac
1140 as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
1141done
1142
1143# There might be people who depend on the old broken behavior: `$host'
1144# used to hold the argument of --host etc.
1145# FIXME: To remove some day.
1146build=$build_alias
1147host=$host_alias
1148target=$target_alias
1149
1150# FIXME: To remove some day.
1151if test "x$host_alias" != x; then
1152 if test "x$build_alias" = x; then
1153 cross_compiling=maybe
1154 elif test "x$build_alias" != "x$host_alias"; then
1155 cross_compiling=yes
1156 fi
1157fi
1158
1159ac_tool_prefix=
1160test -n "$host_alias" && ac_tool_prefix=$host_alias-
1161
1162test "$silent" = yes && exec 6>/dev/null
1163
1164
1165ac_pwd=`pwd` && test -n "$ac_pwd" &&
1166ac_ls_di=`ls -di .` &&
1167ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
1168 as_fn_error $? "working directory cannot be determined"
1169test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
1170 as_fn_error $? "pwd does not report name of working directory"
1171
1172
1173# Find the source files, if location was not specified.
1174if test -z "$srcdir"; then
1175 ac_srcdir_defaulted=yes
1176 # Try the directory containing this script, then the parent directory.
1177 ac_confdir=`$as_dirname -- "$as_myself" ||
1178$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1179 X"$as_myself" : 'X\(//\)[^/]' \| \
1180 X"$as_myself" : 'X\(//\)$' \| \
1181 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
1182$as_echo X"$as_myself" |
1183 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1184 s//\1/
1185 q
1186 }
1187 /^X\(\/\/\)[^/].*/{
1188 s//\1/
1189 q
1190 }
1191 /^X\(\/\/\)$/{
1192 s//\1/
1193 q
1194 }
1195 /^X\(\/\).*/{
1196 s//\1/
1197 q
1198 }
1199 s/.*/./; q'`
1200 srcdir=$ac_confdir
1201 if test ! -r "$srcdir/$ac_unique_file"; then
1202 srcdir=..
1203 fi
1204else
1205 ac_srcdir_defaulted=no
1206fi
1207if test ! -r "$srcdir/$ac_unique_file"; then
1208 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
1209 as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
1210fi
1211ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
1212ac_abs_confdir=`(
1213 cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
1214 pwd)`
1215# When building in place, set srcdir=.
1216if test "$ac_abs_confdir" = "$ac_pwd"; then
1217 srcdir=.
1218fi
1219# Remove unnecessary trailing slashes from srcdir.
1220# Double slashes in file names in object file debugging info
1221# mess up M-x gdb in Emacs.
1222case $srcdir in
1223*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
1224esac
1225for ac_var in $ac_precious_vars; do
1226 eval ac_env_${ac_var}_set=\${${ac_var}+set}
1227 eval ac_env_${ac_var}_value=\$${ac_var}
1228 eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
1229 eval ac_cv_env_${ac_var}_value=\$${ac_var}
1230done
1231
1232#
1233# Report the --help message.
1234#
1235if test "$ac_init_help" = "long"; then
1236 # Omit some internal or obsolete options to make the list less imposing.
1237 # This message is too long to be a string in the A/UX 3.1 sh.
1238 cat <<_ACEOF
1239\`configure' configures puzzles 6.66 to adapt to many kinds of systems.
1240
1241Usage: $0 [OPTION]... [VAR=VALUE]...
1242
1243To assign environment variables (e.g., CC, CFLAGS...), specify them as
1244VAR=VALUE. See below for descriptions of some of the useful variables.
1245
1246Defaults for the options are specified in brackets.
1247
1248Configuration:
1249 -h, --help display this help and exit
1250 --help=short display options specific to this package
1251 --help=recursive display the short help of all the included packages
1252 -V, --version display version information and exit
1253 -q, --quiet, --silent do not print \`checking ...' messages
1254 --cache-file=FILE cache test results in FILE [disabled]
1255 -C, --config-cache alias for \`--cache-file=config.cache'
1256 -n, --no-create do not create output files
1257 --srcdir=DIR find the sources in DIR [configure dir or \`..']
1258
1259Installation directories:
1260 --prefix=PREFIX install architecture-independent files in PREFIX
1261 [$ac_default_prefix]
1262 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
1263 [PREFIX]
1264
1265By default, \`make install' will install all the files in
1266\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
1267an installation prefix other than \`$ac_default_prefix' using \`--prefix',
1268for instance \`--prefix=\$HOME'.
1269
1270For better control, use the options below.
1271
1272Fine tuning of the installation directories:
1273 --bindir=DIR user executables [EPREFIX/bin]
1274 --sbindir=DIR system admin executables [EPREFIX/sbin]
1275 --libexecdir=DIR program executables [EPREFIX/libexec]
1276 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
1277 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
1278 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
1279 --libdir=DIR object code libraries [EPREFIX/lib]
1280 --includedir=DIR C header files [PREFIX/include]
1281 --oldincludedir=DIR C header files for non-gcc [/usr/include]
1282 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
1283 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
1284 --infodir=DIR info documentation [DATAROOTDIR/info]
1285 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
1286 --mandir=DIR man documentation [DATAROOTDIR/man]
1287 --docdir=DIR documentation root [DATAROOTDIR/doc/puzzles]
1288 --htmldir=DIR html documentation [DOCDIR]
1289 --dvidir=DIR dvi documentation [DOCDIR]
1290 --pdfdir=DIR pdf documentation [DOCDIR]
1291 --psdir=DIR ps documentation [DOCDIR]
1292_ACEOF
1293
1294 cat <<\_ACEOF
1295
1296Program names:
1297 --program-prefix=PREFIX prepend PREFIX to installed program names
1298 --program-suffix=SUFFIX append SUFFIX to installed program names
1299 --program-transform-name=PROGRAM run sed PROGRAM on installed program names
1300_ACEOF
1301fi
1302
1303if test -n "$ac_init_help"; then
1304 case $ac_init_help in
1305 short | recursive ) echo "Configuration of puzzles 6.66:";;
1306 esac
1307 cat <<\_ACEOF
1308
1309Optional Features:
1310 --disable-option-checking ignore unrecognized --enable/--with options
1311 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
1312 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
1313 --enable-silent-rules less verbose build output (undo: "make V=1")
1314 --disable-silent-rules verbose build output (undo: "make V=0")
1315 --enable-dependency-tracking
1316 do not reject slow dependency extractors
1317 --disable-dependency-tracking
1318 speeds up one-time build
1319 --disable-gtktest do not try to compile and run a test GTK+ program
1320
1321Optional Packages:
1322 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
1323 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
1324 --with-gtk=VER specify GTK version to use (`2' or `3')
1325
1326Some influential environment variables:
1327 CC C compiler command
1328 CFLAGS C compiler flags
1329 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
1330 nonstandard directory <lib dir>
1331 LIBS libraries to pass to the linker, e.g. -l<library>
1332 CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
1333 you have headers in a nonstandard directory <include dir>
1334 PKG_CONFIG path to pkg-config utility
1335 PKG_CONFIG_PATH
1336 directories to add to pkg-config's search path
1337 PKG_CONFIG_LIBDIR
1338 path overriding pkg-config's built-in search path
1339
1340Use these variables to override the choices made by `configure' or to help
1341it to find libraries and programs with nonstandard names/locations.
1342
1343Report bugs to <anakin@pobox.com>.
1344_ACEOF
1345ac_status=$?
1346fi
1347
1348if test "$ac_init_help" = "recursive"; then
1349 # If there are subdirs, report their specific --help.
1350 for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
1351 test -d "$ac_dir" ||
1352 { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
1353 continue
1354 ac_builddir=.
1355
1356case "$ac_dir" in
1357.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
1358*)
1359 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
1360 # A ".." for each directory in $ac_dir_suffix.
1361 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
1362 case $ac_top_builddir_sub in
1363 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
1364 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
1365 esac ;;
1366esac
1367ac_abs_top_builddir=$ac_pwd
1368ac_abs_builddir=$ac_pwd$ac_dir_suffix
1369# for backward compatibility:
1370ac_top_builddir=$ac_top_build_prefix
1371
1372case $srcdir in
1373 .) # We are building in place.
1374 ac_srcdir=.
1375 ac_top_srcdir=$ac_top_builddir_sub
1376 ac_abs_top_srcdir=$ac_pwd ;;
1377 [\\/]* | ?:[\\/]* ) # Absolute name.
1378 ac_srcdir=$srcdir$ac_dir_suffix;
1379 ac_top_srcdir=$srcdir
1380 ac_abs_top_srcdir=$srcdir ;;
1381 *) # Relative name.
1382 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
1383 ac_top_srcdir=$ac_top_build_prefix$srcdir
1384 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
1385esac
1386ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
1387
1388 cd "$ac_dir" || { ac_status=$?; continue; }
1389 # Check for guested configure.
1390 if test -f "$ac_srcdir/configure.gnu"; then
1391 echo &&
1392 $SHELL "$ac_srcdir/configure.gnu" --help=recursive
1393 elif test -f "$ac_srcdir/configure"; then
1394 echo &&
1395 $SHELL "$ac_srcdir/configure" --help=recursive
1396 else
1397 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
1398 fi || ac_status=$?
1399 cd "$ac_pwd" || { ac_status=$?; break; }
1400 done
1401fi
1402
1403test -n "$ac_init_help" && exit $ac_status
1404if $ac_init_version; then
1405 cat <<\_ACEOF
1406puzzles configure 6.66
1407generated by GNU Autoconf 2.69
1408
1409Copyright (C) 2012 Free Software Foundation, Inc.
1410This configure script is free software; the Free Software Foundation
1411gives unlimited permission to copy, distribute and modify it.
1412_ACEOF
1413 exit
1414fi
1415
1416## ------------------------ ##
1417## Autoconf initialization. ##
1418## ------------------------ ##
1419
1420# ac_fn_c_try_compile LINENO
1421# --------------------------
1422# Try to compile conftest.$ac_ext, and return whether this succeeded.
1423ac_fn_c_try_compile ()
1424{
1425 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1426 rm -f conftest.$ac_objext
1427 if { { ac_try="$ac_compile"
1428case "(($ac_try" in
1429 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1430 *) ac_try_echo=$ac_try;;
1431esac
1432eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1433$as_echo "$ac_try_echo"; } >&5
1434 (eval "$ac_compile") 2>conftest.err
1435 ac_status=$?
1436 if test -s conftest.err; then
1437 grep -v '^ *+' conftest.err >conftest.er1
1438 cat conftest.er1 >&5
1439 mv -f conftest.er1 conftest.err
1440 fi
1441 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1442 test $ac_status = 0; } && {
1443 test -z "$ac_c_werror_flag" ||
1444 test ! -s conftest.err
1445 } && test -s conftest.$ac_objext; then :
1446 ac_retval=0
1447else
1448 $as_echo "$as_me: failed program was:" >&5
1449sed 's/^/| /' conftest.$ac_ext >&5
1450
1451 ac_retval=1
1452fi
1453 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1454 as_fn_set_status $ac_retval
1455
1456} # ac_fn_c_try_compile
1457
1458# ac_fn_c_try_run LINENO
1459# ----------------------
1460# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
1461# that executables *can* be run.
1462ac_fn_c_try_run ()
1463{
1464 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1465 if { { ac_try="$ac_link"
1466case "(($ac_try" in
1467 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1468 *) ac_try_echo=$ac_try;;
1469esac
1470eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1471$as_echo "$ac_try_echo"; } >&5
1472 (eval "$ac_link") 2>&5
1473 ac_status=$?
1474 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1475 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
1476 { { case "(($ac_try" in
1477 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1478 *) ac_try_echo=$ac_try;;
1479esac
1480eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1481$as_echo "$ac_try_echo"; } >&5
1482 (eval "$ac_try") 2>&5
1483 ac_status=$?
1484 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1485 test $ac_status = 0; }; }; then :
1486 ac_retval=0
1487else
1488 $as_echo "$as_me: program exited with status $ac_status" >&5
1489 $as_echo "$as_me: failed program was:" >&5
1490sed 's/^/| /' conftest.$ac_ext >&5
1491
1492 ac_retval=$ac_status
1493fi
1494 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1495 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1496 as_fn_set_status $ac_retval
1497
1498} # ac_fn_c_try_run
1499
1500# ac_fn_c_try_link LINENO
1501# -----------------------
1502# Try to link conftest.$ac_ext, and return whether this succeeded.
1503ac_fn_c_try_link ()
1504{
1505 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1506 rm -f conftest.$ac_objext conftest$ac_exeext
1507 if { { ac_try="$ac_link"
1508case "(($ac_try" in
1509 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1510 *) ac_try_echo=$ac_try;;
1511esac
1512eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1513$as_echo "$ac_try_echo"; } >&5
1514 (eval "$ac_link") 2>conftest.err
1515 ac_status=$?
1516 if test -s conftest.err; then
1517 grep -v '^ *+' conftest.err >conftest.er1
1518 cat conftest.er1 >&5
1519 mv -f conftest.er1 conftest.err
1520 fi
1521 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1522 test $ac_status = 0; } && {
1523 test -z "$ac_c_werror_flag" ||
1524 test ! -s conftest.err
1525 } && test -s conftest$ac_exeext && {
1526 test "$cross_compiling" = yes ||
1527 test -x conftest$ac_exeext
1528 }; then :
1529 ac_retval=0
1530else
1531 $as_echo "$as_me: failed program was:" >&5
1532sed 's/^/| /' conftest.$ac_ext >&5
1533
1534 ac_retval=1
1535fi
1536 # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
1537 # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
1538 # interfere with the next link command; also delete a directory that is
1539 # left behind by Apple's compiler. We do this before executing the actions.
1540 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1541 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1542 as_fn_set_status $ac_retval
1543
1544} # ac_fn_c_try_link
1545cat >config.log <<_ACEOF
1546This file contains any messages produced by compilers while
1547running configure, to aid debugging if configure makes a mistake.
1548
1549It was created by puzzles $as_me 6.66, which was
1550generated by GNU Autoconf 2.69. Invocation command line was
1551
1552 $ $0 $@
1553
1554_ACEOF
1555exec 5>>config.log
1556{
1557cat <<_ASUNAME
1558## --------- ##
1559## Platform. ##
1560## --------- ##
1561
1562hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
1563uname -m = `(uname -m) 2>/dev/null || echo unknown`
1564uname -r = `(uname -r) 2>/dev/null || echo unknown`
1565uname -s = `(uname -s) 2>/dev/null || echo unknown`
1566uname -v = `(uname -v) 2>/dev/null || echo unknown`
1567
1568/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
1569/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
1570
1571/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
1572/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
1573/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
1574/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
1575/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
1576/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
1577/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
1578
1579_ASUNAME
1580
1581as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1582for as_dir in $PATH
1583do
1584 IFS=$as_save_IFS
1585 test -z "$as_dir" && as_dir=.
1586 $as_echo "PATH: $as_dir"
1587 done
1588IFS=$as_save_IFS
1589
1590} >&5
1591
1592cat >&5 <<_ACEOF
1593
1594
1595## ----------- ##
1596## Core tests. ##
1597## ----------- ##
1598
1599_ACEOF
1600
1601
1602# Keep a trace of the command line.
1603# Strip out --no-create and --no-recursion so they do not pile up.
1604# Strip out --silent because we don't want to record it for future runs.
1605# Also quote any args containing shell meta-characters.
1606# Make two passes to allow for proper duplicate-argument suppression.
1607ac_configure_args=
1608ac_configure_args0=
1609ac_configure_args1=
1610ac_must_keep_next=false
1611for ac_pass in 1 2
1612do
1613 for ac_arg
1614 do
1615 case $ac_arg in
1616 -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
1617 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1618 | -silent | --silent | --silen | --sile | --sil)
1619 continue ;;
1620 *\'*)
1621 ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
1622 esac
1623 case $ac_pass in
1624 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
1625 2)
1626 as_fn_append ac_configure_args1 " '$ac_arg'"
1627 if test $ac_must_keep_next = true; then
1628 ac_must_keep_next=false # Got value, back to normal.
1629 else
1630 case $ac_arg in
1631 *=* | --config-cache | -C | -disable-* | --disable-* \
1632 | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
1633 | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
1634 | -with-* | --with-* | -without-* | --without-* | --x)
1635 case "$ac_configure_args0 " in
1636 "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
1637 esac
1638 ;;
1639 -* ) ac_must_keep_next=true ;;
1640 esac
1641 fi
1642 as_fn_append ac_configure_args " '$ac_arg'"
1643 ;;
1644 esac
1645 done
1646done
1647{ ac_configure_args0=; unset ac_configure_args0;}
1648{ ac_configure_args1=; unset ac_configure_args1;}
1649
1650# When interrupted or exit'd, cleanup temporary files, and complete
1651# config.log. We remove comments because anyway the quotes in there
1652# would cause problems or look ugly.
1653# WARNING: Use '\'' to represent an apostrophe within the trap.
1654# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
1655trap 'exit_status=$?
1656 # Save into config.log some information that might help in debugging.
1657 {
1658 echo
1659
1660 $as_echo "## ---------------- ##
1661## Cache variables. ##
1662## ---------------- ##"
1663 echo
1664 # The following way of writing the cache mishandles newlines in values,
1665(
1666 for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
1667 eval ac_val=\$$ac_var
1668 case $ac_val in #(
1669 *${as_nl}*)
1670 case $ac_var in #(
1671 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
1672$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
1673 esac
1674 case $ac_var in #(
1675 _ | IFS | as_nl) ;; #(
1676 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
1677 *) { eval $ac_var=; unset $ac_var;} ;;
1678 esac ;;
1679 esac
1680 done
1681 (set) 2>&1 |
1682 case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
1683 *${as_nl}ac_space=\ *)
1684 sed -n \
1685 "s/'\''/'\''\\\\'\'''\''/g;
1686 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
1687 ;; #(
1688 *)
1689 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
1690 ;;
1691 esac |
1692 sort
1693)
1694 echo
1695
1696 $as_echo "## ----------------- ##
1697## Output variables. ##
1698## ----------------- ##"
1699 echo
1700 for ac_var in $ac_subst_vars
1701 do
1702 eval ac_val=\$$ac_var
1703 case $ac_val in
1704 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1705 esac
1706 $as_echo "$ac_var='\''$ac_val'\''"
1707 done | sort
1708 echo
1709
1710 if test -n "$ac_subst_files"; then
1711 $as_echo "## ------------------- ##
1712## File substitutions. ##
1713## ------------------- ##"
1714 echo
1715 for ac_var in $ac_subst_files
1716 do
1717 eval ac_val=\$$ac_var
1718 case $ac_val in
1719 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1720 esac
1721 $as_echo "$ac_var='\''$ac_val'\''"
1722 done | sort
1723 echo
1724 fi
1725
1726 if test -s confdefs.h; then
1727 $as_echo "## ----------- ##
1728## confdefs.h. ##
1729## ----------- ##"
1730 echo
1731 cat confdefs.h
1732 echo
1733 fi
1734 test "$ac_signal" != 0 &&
1735 $as_echo "$as_me: caught signal $ac_signal"
1736 $as_echo "$as_me: exit $exit_status"
1737 } >&5
1738 rm -f core *.core core.conftest.* &&
1739 rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
1740 exit $exit_status
1741' 0
1742for ac_signal in 1 2 13 15; do
1743 trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
1744done
1745ac_signal=0
1746
1747# confdefs.h avoids OS command line length limits that DEFS can exceed.
1748rm -f -r conftest* confdefs.h
1749
1750$as_echo "/* confdefs.h */" > confdefs.h
1751
1752# Predefined preprocessor variables.
1753
1754cat >>confdefs.h <<_ACEOF
1755#define PACKAGE_NAME "$PACKAGE_NAME"
1756_ACEOF
1757
1758cat >>confdefs.h <<_ACEOF
1759#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
1760_ACEOF
1761
1762cat >>confdefs.h <<_ACEOF
1763#define PACKAGE_VERSION "$PACKAGE_VERSION"
1764_ACEOF
1765
1766cat >>confdefs.h <<_ACEOF
1767#define PACKAGE_STRING "$PACKAGE_STRING"
1768_ACEOF
1769
1770cat >>confdefs.h <<_ACEOF
1771#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
1772_ACEOF
1773
1774cat >>confdefs.h <<_ACEOF
1775#define PACKAGE_URL "$PACKAGE_URL"
1776_ACEOF
1777
1778
1779# Let the site file select an alternate cache file if it wants to.
1780# Prefer an explicitly selected file to automatically selected ones.
1781ac_site_file1=NONE
1782ac_site_file2=NONE
1783if test -n "$CONFIG_SITE"; then
1784 # We do not want a PATH search for config.site.
1785 case $CONFIG_SITE in #((
1786 -*) ac_site_file1=./$CONFIG_SITE;;
1787 */*) ac_site_file1=$CONFIG_SITE;;
1788 *) ac_site_file1=./$CONFIG_SITE;;
1789 esac
1790elif test "x$prefix" != xNONE; then
1791 ac_site_file1=$prefix/share/config.site
1792 ac_site_file2=$prefix/etc/config.site
1793else
1794 ac_site_file1=$ac_default_prefix/share/config.site
1795 ac_site_file2=$ac_default_prefix/etc/config.site
1796fi
1797for ac_site_file in "$ac_site_file1" "$ac_site_file2"
1798do
1799 test "x$ac_site_file" = xNONE && continue
1800 if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
1801 { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
1802$as_echo "$as_me: loading site script $ac_site_file" >&6;}
1803 sed 's/^/| /' "$ac_site_file" >&5
1804 . "$ac_site_file" \
1805 || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
1806$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
1807as_fn_error $? "failed to load site script $ac_site_file
1808See \`config.log' for more details" "$LINENO" 5; }
1809 fi
1810done
1811
1812if test -r "$cache_file"; then
1813 # Some versions of bash will fail to source /dev/null (special files
1814 # actually), so we avoid doing that. DJGPP emulates it as a regular file.
1815 if test /dev/null != "$cache_file" && test -f "$cache_file"; then
1816 { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
1817$as_echo "$as_me: loading cache $cache_file" >&6;}
1818 case $cache_file in
1819 [\\/]* | ?:[\\/]* ) . "$cache_file";;
1820 *) . "./$cache_file";;
1821 esac
1822 fi
1823else
1824 { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
1825$as_echo "$as_me: creating cache $cache_file" >&6;}
1826 >$cache_file
1827fi
1828
1829# Check that the precious variables saved in the cache have kept the same
1830# value.
1831ac_cache_corrupted=false
1832for ac_var in $ac_precious_vars; do
1833 eval ac_old_set=\$ac_cv_env_${ac_var}_set
1834 eval ac_new_set=\$ac_env_${ac_var}_set
1835 eval ac_old_val=\$ac_cv_env_${ac_var}_value
1836 eval ac_new_val=\$ac_env_${ac_var}_value
1837 case $ac_old_set,$ac_new_set in
1838 set,)
1839 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
1840$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
1841 ac_cache_corrupted=: ;;
1842 ,set)
1843 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
1844$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
1845 ac_cache_corrupted=: ;;
1846 ,);;
1847 *)
1848 if test "x$ac_old_val" != "x$ac_new_val"; then
1849 # differences in whitespace do not lead to failure.
1850 ac_old_val_w=`echo x $ac_old_val`
1851 ac_new_val_w=`echo x $ac_new_val`
1852 if test "$ac_old_val_w" != "$ac_new_val_w"; then
1853 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
1854$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
1855 ac_cache_corrupted=:
1856 else
1857 { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
1858$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
1859 eval $ac_var=\$ac_old_val
1860 fi
1861 { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
1862$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
1863 { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
1864$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
1865 fi;;
1866 esac
1867 # Pass precious variables to config.status.
1868 if test "$ac_new_set" = set; then
1869 case $ac_new_val in
1870 *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
1871 *) ac_arg=$ac_var=$ac_new_val ;;
1872 esac
1873 case " $ac_configure_args " in
1874 *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
1875 *) as_fn_append ac_configure_args " '$ac_arg'" ;;
1876 esac
1877 fi
1878done
1879if $ac_cache_corrupted; then
1880 { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
1881$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
1882 { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
1883$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
1884 as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
1885fi
1886## -------------------- ##
1887## Main body of script. ##
1888## -------------------- ##
1889
1890ac_ext=c
1891ac_cpp='$CPP $CPPFLAGS'
1892ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
1893ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
1894ac_compiler_gnu=$ac_cv_c_compiler_gnu
1895
1896
1897
1898am__api_version='1.15'
1899
1900ac_aux_dir=
1901for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
1902 if test -f "$ac_dir/install-sh"; then
1903 ac_aux_dir=$ac_dir
1904 ac_install_sh="$ac_aux_dir/install-sh -c"
1905 break
1906 elif test -f "$ac_dir/install.sh"; then
1907 ac_aux_dir=$ac_dir
1908 ac_install_sh="$ac_aux_dir/install.sh -c"
1909 break
1910 elif test -f "$ac_dir/shtool"; then
1911 ac_aux_dir=$ac_dir
1912 ac_install_sh="$ac_aux_dir/shtool install -c"
1913 break
1914 fi
1915done
1916if test -z "$ac_aux_dir"; then
1917 as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
1918fi
1919
1920# These three variables are undocumented and unsupported,
1921# and are intended to be withdrawn in a future Autoconf release.
1922# They can cause serious problems if a builder's source tree is in a directory
1923# whose full name contains unusual characters.
1924ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
1925ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
1926ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
1927
1928
1929# Find a good install program. We prefer a C program (faster),
1930# so one script is as good as another. But avoid the broken or
1931# incompatible versions:
1932# SysV /etc/install, /usr/sbin/install
1933# SunOS /usr/etc/install
1934# IRIX /sbin/install
1935# AIX /bin/install
1936# AmigaOS /C/install, which installs bootblocks on floppy discs
1937# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
1938# AFS /usr/afsws/bin/install, which mishandles nonexistent args
1939# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
1940# OS/2's system install, which has a completely different semantic
1941# ./install, which can be erroneously created by make from ./install.sh.
1942# Reject install programs that cannot install multiple files.
1943{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
1944$as_echo_n "checking for a BSD-compatible install... " >&6; }
1945if test -z "$INSTALL"; then
1946if ${ac_cv_path_install+:} false; then :
1947 $as_echo_n "(cached) " >&6
1948else
1949 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1950for as_dir in $PATH
1951do
1952 IFS=$as_save_IFS
1953 test -z "$as_dir" && as_dir=.
1954 # Account for people who put trailing slashes in PATH elements.
1955case $as_dir/ in #((
1956 ./ | .// | /[cC]/* | \
1957 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
1958 ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
1959 /usr/ucb/* ) ;;
1960 *)
1961 # OSF1 and SCO ODT 3.0 have their own names for install.
1962 # Don't use installbsd from OSF since it installs stuff as root
1963 # by default.
1964 for ac_prog in ginstall scoinst install; do
1965 for ac_exec_ext in '' $ac_executable_extensions; do
1966 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
1967 if test $ac_prog = install &&
1968 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
1969 # AIX install. It has an incompatible calling convention.
1970 :
1971 elif test $ac_prog = install &&
1972 grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
1973 # program-specific install script used by HP pwplus--don't use.
1974 :
1975 else
1976 rm -rf conftest.one conftest.two conftest.dir
1977 echo one > conftest.one
1978 echo two > conftest.two
1979 mkdir conftest.dir
1980 if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
1981 test -s conftest.one && test -s conftest.two &&
1982 test -s conftest.dir/conftest.one &&
1983 test -s conftest.dir/conftest.two
1984 then
1985 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
1986 break 3
1987 fi
1988 fi
1989 fi
1990 done
1991 done
1992 ;;
1993esac
1994
1995 done
1996IFS=$as_save_IFS
1997
1998rm -rf conftest.one conftest.two conftest.dir
1999
2000fi
2001 if test "${ac_cv_path_install+set}" = set; then
2002 INSTALL=$ac_cv_path_install
2003 else
2004 # As a last resort, use the slow shell script. Don't cache a
2005 # value for INSTALL within a source directory, because that will
2006 # break other packages using the cache if that directory is
2007 # removed, or if the value is a relative name.
2008 INSTALL=$ac_install_sh
2009 fi
2010fi
2011{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
2012$as_echo "$INSTALL" >&6; }
2013
2014# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
2015# It thinks the first close brace ends the variable substitution.
2016test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
2017
2018test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
2019
2020test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
2021
2022{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
2023$as_echo_n "checking whether build environment is sane... " >&6; }
2024# Reject unsafe characters in $srcdir or the absolute working directory
2025# name. Accept space and tab only in the latter.
2026am_lf='
2027'
2028case `pwd` in
2029 *[\\\"\#\$\&\'\`$am_lf]*)
2030 as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
2031esac
2032case $srcdir in
2033 *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
2034 as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
2035esac
2036
2037# Do 'set' in a subshell so we don't clobber the current shell's
2038# arguments. Must try -L first in case configure is actually a
2039# symlink; some systems play weird games with the mod time of symlinks
2040# (eg FreeBSD returns the mod time of the symlink's containing
2041# directory).
2042if (
2043 am_has_slept=no
2044 for am_try in 1 2; do
2045 echo "timestamp, slept: $am_has_slept" > conftest.file
2046 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
2047 if test "$*" = "X"; then
2048 # -L didn't work.
2049 set X `ls -t "$srcdir/configure" conftest.file`
2050 fi
2051 if test "$*" != "X $srcdir/configure conftest.file" \
2052 && test "$*" != "X conftest.file $srcdir/configure"; then
2053
2054 # If neither matched, then we have a broken ls. This can happen
2055 # if, for instance, CONFIG_SHELL is bash and it inherits a
2056 # broken ls alias from the environment. This has actually
2057 # happened. Such a system could not be considered "sane".
2058 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
2059 alias in your environment" "$LINENO" 5
2060 fi
2061 if test "$2" = conftest.file || test $am_try -eq 2; then
2062 break
2063 fi
2064 # Just in case.
2065 sleep 1
2066 am_has_slept=yes
2067 done
2068 test "$2" = conftest.file
2069 )
2070then
2071 # Ok.
2072 :
2073else
2074 as_fn_error $? "newly created file is older than distributed files!
2075Check your system clock" "$LINENO" 5
2076fi
2077{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2078$as_echo "yes" >&6; }
2079# If we didn't sleep, we still need to ensure time stamps of config.status and
2080# generated files are strictly newer.
2081am_sleep_pid=
2082if grep 'slept: no' conftest.file >/dev/null 2>&1; then
2083 ( sleep 1 ) &
2084 am_sleep_pid=$!
2085fi
2086
2087rm -f conftest.file
2088
2089test "$program_prefix" != NONE &&
2090 program_transform_name="s&^&$program_prefix&;$program_transform_name"
2091# Use a double $ so make ignores it.
2092test "$program_suffix" != NONE &&
2093 program_transform_name="s&\$&$program_suffix&;$program_transform_name"
2094# Double any \ or $.
2095# By default was `s,x,x', remove it if useless.
2096ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
2097program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
2098
2099# Expand $ac_aux_dir to an absolute path.
2100am_aux_dir=`cd "$ac_aux_dir" && pwd`
2101
2102if test x"${MISSING+set}" != xset; then
2103 case $am_aux_dir in
2104 *\ * | *\ *)
2105 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
2106 *)
2107 MISSING="\${SHELL} $am_aux_dir/missing" ;;
2108 esac
2109fi
2110# Use eval to expand $SHELL
2111if eval "$MISSING --is-lightweight"; then
2112 am_missing_run="$MISSING "
2113else
2114 am_missing_run=
2115 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
2116$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
2117fi
2118
2119if test x"${install_sh+set}" != xset; then
2120 case $am_aux_dir in
2121 *\ * | *\ *)
2122 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
2123 *)
2124 install_sh="\${SHELL} $am_aux_dir/install-sh"
2125 esac
2126fi
2127
2128# Installed binaries are usually stripped using 'strip' when the user
2129# run "make install-strip". However 'strip' might not be the right
2130# tool to use in cross-compilation environments, therefore Automake
2131# will honor the 'STRIP' environment variable to overrule this program.
2132if test "$cross_compiling" != no; then
2133 if test -n "$ac_tool_prefix"; then
2134 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
2135set dummy ${ac_tool_prefix}strip; ac_word=$2
2136{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2137$as_echo_n "checking for $ac_word... " >&6; }
2138if ${ac_cv_prog_STRIP+:} false; then :
2139 $as_echo_n "(cached) " >&6
2140else
2141 if test -n "$STRIP"; then
2142 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
2143else
2144as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2145for as_dir in $PATH
2146do
2147 IFS=$as_save_IFS
2148 test -z "$as_dir" && as_dir=.
2149 for ac_exec_ext in '' $ac_executable_extensions; do
2150 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2151 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
2152 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2153 break 2
2154 fi
2155done
2156 done
2157IFS=$as_save_IFS
2158
2159fi
2160fi
2161STRIP=$ac_cv_prog_STRIP
2162if test -n "$STRIP"; then
2163 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
2164$as_echo "$STRIP" >&6; }
2165else
2166 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2167$as_echo "no" >&6; }
2168fi
2169
2170
2171fi
2172if test -z "$ac_cv_prog_STRIP"; then
2173 ac_ct_STRIP=$STRIP
2174 # Extract the first word of "strip", so it can be a program name with args.
2175set dummy strip; ac_word=$2
2176{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2177$as_echo_n "checking for $ac_word... " >&6; }
2178if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
2179 $as_echo_n "(cached) " >&6
2180else
2181 if test -n "$ac_ct_STRIP"; then
2182 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
2183else
2184as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2185for as_dir in $PATH
2186do
2187 IFS=$as_save_IFS
2188 test -z "$as_dir" && as_dir=.
2189 for ac_exec_ext in '' $ac_executable_extensions; do
2190 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2191 ac_cv_prog_ac_ct_STRIP="strip"
2192 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2193 break 2
2194 fi
2195done
2196 done
2197IFS=$as_save_IFS
2198
2199fi
2200fi
2201ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
2202if test -n "$ac_ct_STRIP"; then
2203 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
2204$as_echo "$ac_ct_STRIP" >&6; }
2205else
2206 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2207$as_echo "no" >&6; }
2208fi
2209
2210 if test "x$ac_ct_STRIP" = x; then
2211 STRIP=":"
2212 else
2213 case $cross_compiling:$ac_tool_warned in
2214yes:)
2215{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2216$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2217ac_tool_warned=yes ;;
2218esac
2219 STRIP=$ac_ct_STRIP
2220 fi
2221else
2222 STRIP="$ac_cv_prog_STRIP"
2223fi
2224
2225fi
2226INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
2227
2228{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
2229$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
2230if test -z "$MKDIR_P"; then
2231 if ${ac_cv_path_mkdir+:} false; then :
2232 $as_echo_n "(cached) " >&6
2233else
2234 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2235for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
2236do
2237 IFS=$as_save_IFS
2238 test -z "$as_dir" && as_dir=.
2239 for ac_prog in mkdir gmkdir; do
2240 for ac_exec_ext in '' $ac_executable_extensions; do
2241 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
2242 case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
2243 'mkdir (GNU coreutils) '* | \
2244 'mkdir (coreutils) '* | \
2245 'mkdir (fileutils) '4.1*)
2246 ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
2247 break 3;;
2248 esac
2249 done
2250 done
2251 done
2252IFS=$as_save_IFS
2253
2254fi
2255
2256 test -d ./--version && rmdir ./--version
2257 if test "${ac_cv_path_mkdir+set}" = set; then
2258 MKDIR_P="$ac_cv_path_mkdir -p"
2259 else
2260 # As a last resort, use the slow shell script. Don't cache a
2261 # value for MKDIR_P within a source directory, because that will
2262 # break other packages using the cache if that directory is
2263 # removed, or if the value is a relative name.
2264 MKDIR_P="$ac_install_sh -d"
2265 fi
2266fi
2267{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
2268$as_echo "$MKDIR_P" >&6; }
2269
2270for ac_prog in gawk mawk nawk awk
2271do
2272 # Extract the first word of "$ac_prog", so it can be a program name with args.
2273set dummy $ac_prog; ac_word=$2
2274{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2275$as_echo_n "checking for $ac_word... " >&6; }
2276if ${ac_cv_prog_AWK+:} false; then :
2277 $as_echo_n "(cached) " >&6
2278else
2279 if test -n "$AWK"; then
2280 ac_cv_prog_AWK="$AWK" # Let the user override the test.
2281else
2282as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2283for as_dir in $PATH
2284do
2285 IFS=$as_save_IFS
2286 test -z "$as_dir" && as_dir=.
2287 for ac_exec_ext in '' $ac_executable_extensions; do
2288 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2289 ac_cv_prog_AWK="$ac_prog"
2290 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2291 break 2
2292 fi
2293done
2294 done
2295IFS=$as_save_IFS
2296
2297fi
2298fi
2299AWK=$ac_cv_prog_AWK
2300if test -n "$AWK"; then
2301 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
2302$as_echo "$AWK" >&6; }
2303else
2304 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2305$as_echo "no" >&6; }
2306fi
2307
2308
2309 test -n "$AWK" && break
2310done
2311
2312{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
2313$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
2314set x ${MAKE-make}
2315ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
2316if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
2317 $as_echo_n "(cached) " >&6
2318else
2319 cat >conftest.make <<\_ACEOF
2320SHELL = /bin/sh
2321all:
2322 @echo '@@@%%%=$(MAKE)=@@@%%%'
2323_ACEOF
2324# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
2325case `${MAKE-make} -f conftest.make 2>/dev/null` in
2326 *@@@%%%=?*=@@@%%%*)
2327 eval ac_cv_prog_make_${ac_make}_set=yes;;
2328 *)
2329 eval ac_cv_prog_make_${ac_make}_set=no;;
2330esac
2331rm -f conftest.make
2332fi
2333if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
2334 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2335$as_echo "yes" >&6; }
2336 SET_MAKE=
2337else
2338 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2339$as_echo "no" >&6; }
2340 SET_MAKE="MAKE=${MAKE-make}"
2341fi
2342
2343rm -rf .tst 2>/dev/null
2344mkdir .tst 2>/dev/null
2345if test -d .tst; then
2346 am__leading_dot=.
2347else
2348 am__leading_dot=_
2349fi
2350rmdir .tst 2>/dev/null
2351
2352# Check whether --enable-silent-rules was given.
2353if test "${enable_silent_rules+set}" = set; then :
2354 enableval=$enable_silent_rules;
2355fi
2356
2357case $enable_silent_rules in # (((
2358 yes) AM_DEFAULT_VERBOSITY=0;;
2359 no) AM_DEFAULT_VERBOSITY=1;;
2360 *) AM_DEFAULT_VERBOSITY=1;;
2361esac
2362am_make=${MAKE-make}
2363{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
2364$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
2365if ${am_cv_make_support_nested_variables+:} false; then :
2366 $as_echo_n "(cached) " >&6
2367else
2368 if $as_echo 'TRUE=$(BAR$(V))
2369BAR0=false
2370BAR1=true
2371V=1
2372am__doit:
2373 @$(TRUE)
2374.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
2375 am_cv_make_support_nested_variables=yes
2376else
2377 am_cv_make_support_nested_variables=no
2378fi
2379fi
2380{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
2381$as_echo "$am_cv_make_support_nested_variables" >&6; }
2382if test $am_cv_make_support_nested_variables = yes; then
2383 AM_V='$(V)'
2384 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
2385else
2386 AM_V=$AM_DEFAULT_VERBOSITY
2387 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
2388fi
2389AM_BACKSLASH='\'
2390
2391if test "`cd $srcdir && pwd`" != "`pwd`"; then
2392 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
2393 # is not polluted with repeated "-I."
2394 am__isrc=' -I$(srcdir)'
2395 # test to see if srcdir already configured
2396 if test -f $srcdir/config.status; then
2397 as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
2398 fi
2399fi
2400
2401# test whether we have cygpath
2402if test -z "$CYGPATH_W"; then
2403 if (cygpath --version) >/dev/null 2>/dev/null; then
2404 CYGPATH_W='cygpath -w'
2405 else
2406 CYGPATH_W=echo
2407 fi
2408fi
2409
2410
2411# Define the identity of the package.
2412 PACKAGE='puzzles'
2413 VERSION='6.66'
2414
2415
2416cat >>confdefs.h <<_ACEOF
2417#define PACKAGE "$PACKAGE"
2418_ACEOF
2419
2420
2421cat >>confdefs.h <<_ACEOF
2422#define VERSION "$VERSION"
2423_ACEOF
2424
2425# Some tools Automake needs.
2426
2427ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
2428
2429
2430AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
2431
2432
2433AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
2434
2435
2436AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
2437
2438
2439MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
2440
2441# For better backward compatibility. To be removed once Automake 1.9.x
2442# dies out for good. For more background, see:
2443# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
2444# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
2445mkdir_p='$(MKDIR_P)'
2446
2447# We need awk for the "check" target (and possibly the TAP driver). The
2448# system "awk" is bad on some platforms.
2449# Always define AMTAR for backward compatibility. Yes, it's still used
2450# in the wild :-( We should find a proper way to deprecate it ...
2451AMTAR='$${TAR-tar}'
2452
2453
2454# We'll loop over all known methods to create a tar archive until one works.
2455_am_tools='gnutar pax cpio none'
2456
2457am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
2458
2459
2460
2461
2462
2463
2464# POSIX will say in a future version that running "rm -f" with no argument
2465# is OK; and we want to be able to make that assumption in our Makefile
2466# recipes. So use an aggressive probe to check that the usage we want is
2467# actually supported "in the wild" to an acceptable degree.
2468# See automake bug#10828.
2469# To make any issue more visible, cause the running configure to be aborted
2470# by default if the 'rm' program in use doesn't match our expectations; the
2471# user can still override this though.
2472if rm -f && rm -fr && rm -rf; then : OK; else
2473 cat >&2 <<'END'
2474Oops!
2475
2476Your 'rm' program seems unable to run without file operands specified
2477on the command line, even when the '-f' option is present. This is contrary
2478to the behaviour of most rm programs out there, and not conforming with
2479the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
2480
2481Please tell bug-automake@gnu.org about your system, including the value
2482of your $PATH and any error possibly output before this message. This
2483can help us improve future automake versions.
2484
2485END
2486 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
2487 echo 'Configuration will proceed anyway, since you have set the' >&2
2488 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
2489 echo >&2
2490 else
2491 cat >&2 <<'END'
2492Aborting the configuration process, to ensure you take notice of the issue.
2493
2494You can download and install GNU coreutils to get an 'rm' implementation
2495that behaves properly: <http://www.gnu.org/software/coreutils/>.
2496
2497If you want to complete the configuration process using your problematic
2498'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
2499to "yes", and re-run configure.
2500
2501END
2502 as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
2503 fi
2504fi
2505
2506ac_ext=c
2507ac_cpp='$CPP $CPPFLAGS'
2508ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2509ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2510ac_compiler_gnu=$ac_cv_c_compiler_gnu
2511if test -n "$ac_tool_prefix"; then
2512 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
2513set dummy ${ac_tool_prefix}gcc; ac_word=$2
2514{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2515$as_echo_n "checking for $ac_word... " >&6; }
2516if ${ac_cv_prog_CC+:} false; then :
2517 $as_echo_n "(cached) " >&6
2518else
2519 if test -n "$CC"; then
2520 ac_cv_prog_CC="$CC" # Let the user override the test.
2521else
2522as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2523for as_dir in $PATH
2524do
2525 IFS=$as_save_IFS
2526 test -z "$as_dir" && as_dir=.
2527 for ac_exec_ext in '' $ac_executable_extensions; do
2528 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2529 ac_cv_prog_CC="${ac_tool_prefix}gcc"
2530 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2531 break 2
2532 fi
2533done
2534 done
2535IFS=$as_save_IFS
2536
2537fi
2538fi
2539CC=$ac_cv_prog_CC
2540if test -n "$CC"; then
2541 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2542$as_echo "$CC" >&6; }
2543else
2544 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2545$as_echo "no" >&6; }
2546fi
2547
2548
2549fi
2550if test -z "$ac_cv_prog_CC"; then
2551 ac_ct_CC=$CC
2552 # Extract the first word of "gcc", so it can be a program name with args.
2553set dummy gcc; ac_word=$2
2554{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2555$as_echo_n "checking for $ac_word... " >&6; }
2556if ${ac_cv_prog_ac_ct_CC+:} false; then :
2557 $as_echo_n "(cached) " >&6
2558else
2559 if test -n "$ac_ct_CC"; then
2560 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2561else
2562as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2563for as_dir in $PATH
2564do
2565 IFS=$as_save_IFS
2566 test -z "$as_dir" && as_dir=.
2567 for ac_exec_ext in '' $ac_executable_extensions; do
2568 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2569 ac_cv_prog_ac_ct_CC="gcc"
2570 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2571 break 2
2572 fi
2573done
2574 done
2575IFS=$as_save_IFS
2576
2577fi
2578fi
2579ac_ct_CC=$ac_cv_prog_ac_ct_CC
2580if test -n "$ac_ct_CC"; then
2581 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
2582$as_echo "$ac_ct_CC" >&6; }
2583else
2584 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2585$as_echo "no" >&6; }
2586fi
2587
2588 if test "x$ac_ct_CC" = x; then
2589 CC=""
2590 else
2591 case $cross_compiling:$ac_tool_warned in
2592yes:)
2593{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2594$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2595ac_tool_warned=yes ;;
2596esac
2597 CC=$ac_ct_CC
2598 fi
2599else
2600 CC="$ac_cv_prog_CC"
2601fi
2602
2603if test -z "$CC"; then
2604 if test -n "$ac_tool_prefix"; then
2605 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
2606set dummy ${ac_tool_prefix}cc; ac_word=$2
2607{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2608$as_echo_n "checking for $ac_word... " >&6; }
2609if ${ac_cv_prog_CC+:} false; then :
2610 $as_echo_n "(cached) " >&6
2611else
2612 if test -n "$CC"; then
2613 ac_cv_prog_CC="$CC" # Let the user override the test.
2614else
2615as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2616for as_dir in $PATH
2617do
2618 IFS=$as_save_IFS
2619 test -z "$as_dir" && as_dir=.
2620 for ac_exec_ext in '' $ac_executable_extensions; do
2621 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2622 ac_cv_prog_CC="${ac_tool_prefix}cc"
2623 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2624 break 2
2625 fi
2626done
2627 done
2628IFS=$as_save_IFS
2629
2630fi
2631fi
2632CC=$ac_cv_prog_CC
2633if test -n "$CC"; then
2634 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2635$as_echo "$CC" >&6; }
2636else
2637 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2638$as_echo "no" >&6; }
2639fi
2640
2641
2642 fi
2643fi
2644if test -z "$CC"; then
2645 # Extract the first word of "cc", so it can be a program name with args.
2646set dummy cc; ac_word=$2
2647{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2648$as_echo_n "checking for $ac_word... " >&6; }
2649if ${ac_cv_prog_CC+:} false; then :
2650 $as_echo_n "(cached) " >&6
2651else
2652 if test -n "$CC"; then
2653 ac_cv_prog_CC="$CC" # Let the user override the test.
2654else
2655 ac_prog_rejected=no
2656as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2657for as_dir in $PATH
2658do
2659 IFS=$as_save_IFS
2660 test -z "$as_dir" && as_dir=.
2661 for ac_exec_ext in '' $ac_executable_extensions; do
2662 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2663 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
2664 ac_prog_rejected=yes
2665 continue
2666 fi
2667 ac_cv_prog_CC="cc"
2668 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2669 break 2
2670 fi
2671done
2672 done
2673IFS=$as_save_IFS
2674
2675if test $ac_prog_rejected = yes; then
2676 # We found a bogon in the path, so make sure we never use it.
2677 set dummy $ac_cv_prog_CC
2678 shift
2679 if test $# != 0; then
2680 # We chose a different compiler from the bogus one.
2681 # However, it has the same basename, so the bogon will be chosen
2682 # first if we set CC to just the basename; use the full file name.
2683 shift
2684 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
2685 fi
2686fi
2687fi
2688fi
2689CC=$ac_cv_prog_CC
2690if test -n "$CC"; then
2691 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2692$as_echo "$CC" >&6; }
2693else
2694 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2695$as_echo "no" >&6; }
2696fi
2697
2698
2699fi
2700if test -z "$CC"; then
2701 if test -n "$ac_tool_prefix"; then
2702 for ac_prog in cl.exe
2703 do
2704 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
2705set dummy $ac_tool_prefix$ac_prog; ac_word=$2
2706{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2707$as_echo_n "checking for $ac_word... " >&6; }
2708if ${ac_cv_prog_CC+:} false; then :
2709 $as_echo_n "(cached) " >&6
2710else
2711 if test -n "$CC"; then
2712 ac_cv_prog_CC="$CC" # Let the user override the test.
2713else
2714as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2715for as_dir in $PATH
2716do
2717 IFS=$as_save_IFS
2718 test -z "$as_dir" && as_dir=.
2719 for ac_exec_ext in '' $ac_executable_extensions; do
2720 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2721 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
2722 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2723 break 2
2724 fi
2725done
2726 done
2727IFS=$as_save_IFS
2728
2729fi
2730fi
2731CC=$ac_cv_prog_CC
2732if test -n "$CC"; then
2733 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2734$as_echo "$CC" >&6; }
2735else
2736 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2737$as_echo "no" >&6; }
2738fi
2739
2740
2741 test -n "$CC" && break
2742 done
2743fi
2744if test -z "$CC"; then
2745 ac_ct_CC=$CC
2746 for ac_prog in cl.exe
2747do
2748 # Extract the first word of "$ac_prog", so it can be a program name with args.
2749set dummy $ac_prog; ac_word=$2
2750{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2751$as_echo_n "checking for $ac_word... " >&6; }
2752if ${ac_cv_prog_ac_ct_CC+:} false; then :
2753 $as_echo_n "(cached) " >&6
2754else
2755 if test -n "$ac_ct_CC"; then
2756 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2757else
2758as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2759for as_dir in $PATH
2760do
2761 IFS=$as_save_IFS
2762 test -z "$as_dir" && as_dir=.
2763 for ac_exec_ext in '' $ac_executable_extensions; do
2764 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2765 ac_cv_prog_ac_ct_CC="$ac_prog"
2766 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2767 break 2
2768 fi
2769done
2770 done
2771IFS=$as_save_IFS
2772
2773fi
2774fi
2775ac_ct_CC=$ac_cv_prog_ac_ct_CC
2776if test -n "$ac_ct_CC"; then
2777 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
2778$as_echo "$ac_ct_CC" >&6; }
2779else
2780 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2781$as_echo "no" >&6; }
2782fi
2783
2784
2785 test -n "$ac_ct_CC" && break
2786done
2787
2788 if test "x$ac_ct_CC" = x; then
2789 CC=""
2790 else
2791 case $cross_compiling:$ac_tool_warned in
2792yes:)
2793{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2794$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2795ac_tool_warned=yes ;;
2796esac
2797 CC=$ac_ct_CC
2798 fi
2799fi
2800
2801fi
2802
2803
2804test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2805$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2806as_fn_error $? "no acceptable C compiler found in \$PATH
2807See \`config.log' for more details" "$LINENO" 5; }
2808
2809# Provide some information about the compiler.
2810$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
2811set X $ac_compile
2812ac_compiler=$2
2813for ac_option in --version -v -V -qversion; do
2814 { { ac_try="$ac_compiler $ac_option >&5"
2815case "(($ac_try" in
2816 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2817 *) ac_try_echo=$ac_try;;
2818esac
2819eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
2820$as_echo "$ac_try_echo"; } >&5
2821 (eval "$ac_compiler $ac_option >&5") 2>conftest.err
2822 ac_status=$?
2823 if test -s conftest.err; then
2824 sed '10a\
2825... rest of stderr output deleted ...
2826 10q' conftest.err >conftest.er1
2827 cat conftest.er1 >&5
2828 fi
2829 rm -f conftest.er1 conftest.err
2830 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2831 test $ac_status = 0; }
2832done
2833
2834cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2835/* end confdefs.h. */
2836
2837int
2838main ()
2839{
2840
2841 ;
2842 return 0;
2843}
2844_ACEOF
2845ac_clean_files_save=$ac_clean_files
2846ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
2847# Try to create an executable without -o first, disregard a.out.
2848# It will help us diagnose broken compilers, and finding out an intuition
2849# of exeext.
2850{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
2851$as_echo_n "checking whether the C compiler works... " >&6; }
2852ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
2853
2854# The possible output files:
2855ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
2856
2857ac_rmfiles=
2858for ac_file in $ac_files
2859do
2860 case $ac_file in
2861 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
2862 * ) ac_rmfiles="$ac_rmfiles $ac_file";;
2863 esac
2864done
2865rm -f $ac_rmfiles
2866
2867if { { ac_try="$ac_link_default"
2868case "(($ac_try" in
2869 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2870 *) ac_try_echo=$ac_try;;
2871esac
2872eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
2873$as_echo "$ac_try_echo"; } >&5
2874 (eval "$ac_link_default") 2>&5
2875 ac_status=$?
2876 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2877 test $ac_status = 0; }; then :
2878 # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
2879# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
2880# in a Makefile. We should not override ac_cv_exeext if it was cached,
2881# so that the user can short-circuit this test for compilers unknown to
2882# Autoconf.
2883for ac_file in $ac_files ''
2884do
2885 test -f "$ac_file" || continue
2886 case $ac_file in
2887 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
2888 ;;
2889 [ab].out )
2890 # We found the default executable, but exeext='' is most
2891 # certainly right.
2892 break;;
2893 *.* )
2894 if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
2895 then :; else
2896 ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
2897 fi
2898 # We set ac_cv_exeext here because the later test for it is not
2899 # safe: cross compilers may not add the suffix if given an `-o'
2900 # argument, so we may need to know it at that point already.
2901 # Even if this section looks crufty: it has the advantage of
2902 # actually working.
2903 break;;
2904 * )
2905 break;;
2906 esac
2907done
2908test "$ac_cv_exeext" = no && ac_cv_exeext=
2909
2910else
2911 ac_file=''
2912fi
2913if test -z "$ac_file"; then :
2914 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2915$as_echo "no" >&6; }
2916$as_echo "$as_me: failed program was:" >&5
2917sed 's/^/| /' conftest.$ac_ext >&5
2918
2919{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2920$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2921as_fn_error 77 "C compiler cannot create executables
2922See \`config.log' for more details" "$LINENO" 5; }
2923else
2924 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2925$as_echo "yes" >&6; }
2926fi
2927{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
2928$as_echo_n "checking for C compiler default output file name... " >&6; }
2929{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
2930$as_echo "$ac_file" >&6; }
2931ac_exeext=$ac_cv_exeext
2932
2933rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
2934ac_clean_files=$ac_clean_files_save
2935{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
2936$as_echo_n "checking for suffix of executables... " >&6; }
2937if { { ac_try="$ac_link"
2938case "(($ac_try" in
2939 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2940 *) ac_try_echo=$ac_try;;
2941esac
2942eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
2943$as_echo "$ac_try_echo"; } >&5
2944 (eval "$ac_link") 2>&5
2945 ac_status=$?
2946 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2947 test $ac_status = 0; }; then :
2948 # If both `conftest.exe' and `conftest' are `present' (well, observable)
2949# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
2950# work properly (i.e., refer to `conftest.exe'), while it won't with
2951# `rm'.
2952for ac_file in conftest.exe conftest conftest.*; do
2953 test -f "$ac_file" || continue
2954 case $ac_file in
2955 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
2956 *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
2957 break;;
2958 * ) break;;
2959 esac
2960done
2961else
2962 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2963$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2964as_fn_error $? "cannot compute suffix of executables: cannot compile and link
2965See \`config.log' for more details" "$LINENO" 5; }
2966fi
2967rm -f conftest conftest$ac_cv_exeext
2968{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
2969$as_echo "$ac_cv_exeext" >&6; }
2970
2971rm -f conftest.$ac_ext
2972EXEEXT=$ac_cv_exeext
2973ac_exeext=$EXEEXT
2974cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2975/* end confdefs.h. */
2976#include <stdio.h>
2977int
2978main ()
2979{
2980FILE *f = fopen ("conftest.out", "w");
2981 return ferror (f) || fclose (f) != 0;
2982
2983 ;
2984 return 0;
2985}
2986_ACEOF
2987ac_clean_files="$ac_clean_files conftest.out"
2988# Check that the compiler produces executables we can run. If not, either
2989# the compiler is broken, or we cross compile.
2990{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
2991$as_echo_n "checking whether we are cross compiling... " >&6; }
2992if test "$cross_compiling" != yes; then
2993 { { ac_try="$ac_link"
2994case "(($ac_try" in
2995 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2996 *) ac_try_echo=$ac_try;;
2997esac
2998eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
2999$as_echo "$ac_try_echo"; } >&5
3000 (eval "$ac_link") 2>&5
3001 ac_status=$?
3002 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3003 test $ac_status = 0; }
3004 if { ac_try='./conftest$ac_cv_exeext'
3005 { { case "(($ac_try" in
3006 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3007 *) ac_try_echo=$ac_try;;
3008esac
3009eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3010$as_echo "$ac_try_echo"; } >&5
3011 (eval "$ac_try") 2>&5
3012 ac_status=$?
3013 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3014 test $ac_status = 0; }; }; then
3015 cross_compiling=no
3016 else
3017 if test "$cross_compiling" = maybe; then
3018 cross_compiling=yes
3019 else
3020 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3021$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3022as_fn_error $? "cannot run C compiled programs.
3023If you meant to cross compile, use \`--host'.
3024See \`config.log' for more details" "$LINENO" 5; }
3025 fi
3026 fi
3027fi
3028{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
3029$as_echo "$cross_compiling" >&6; }
3030
3031rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
3032ac_clean_files=$ac_clean_files_save
3033{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
3034$as_echo_n "checking for suffix of object files... " >&6; }
3035if ${ac_cv_objext+:} false; then :
3036 $as_echo_n "(cached) " >&6
3037else
3038 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3039/* end confdefs.h. */
3040
3041int
3042main ()
3043{
3044
3045 ;
3046 return 0;
3047}
3048_ACEOF
3049rm -f conftest.o conftest.obj
3050if { { ac_try="$ac_compile"
3051case "(($ac_try" in
3052 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3053 *) ac_try_echo=$ac_try;;
3054esac
3055eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3056$as_echo "$ac_try_echo"; } >&5
3057 (eval "$ac_compile") 2>&5
3058 ac_status=$?
3059 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3060 test $ac_status = 0; }; then :
3061 for ac_file in conftest.o conftest.obj conftest.*; do
3062 test -f "$ac_file" || continue;
3063 case $ac_file in
3064 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
3065 *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
3066 break;;
3067 esac
3068done
3069else
3070 $as_echo "$as_me: failed program was:" >&5
3071sed 's/^/| /' conftest.$ac_ext >&5
3072
3073{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3074$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3075as_fn_error $? "cannot compute suffix of object files: cannot compile
3076See \`config.log' for more details" "$LINENO" 5; }
3077fi
3078rm -f conftest.$ac_cv_objext conftest.$ac_ext
3079fi
3080{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
3081$as_echo "$ac_cv_objext" >&6; }
3082OBJEXT=$ac_cv_objext
3083ac_objext=$OBJEXT
3084{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
3085$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
3086if ${ac_cv_c_compiler_gnu+:} false; then :
3087 $as_echo_n "(cached) " >&6
3088else
3089 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3090/* end confdefs.h. */
3091
3092int
3093main ()
3094{
3095#ifndef __GNUC__
3096 choke me
3097#endif
3098
3099 ;
3100 return 0;
3101}
3102_ACEOF
3103if ac_fn_c_try_compile "$LINENO"; then :
3104 ac_compiler_gnu=yes
3105else
3106 ac_compiler_gnu=no
3107fi
3108rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3109ac_cv_c_compiler_gnu=$ac_compiler_gnu
3110
3111fi
3112{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
3113$as_echo "$ac_cv_c_compiler_gnu" >&6; }
3114if test $ac_compiler_gnu = yes; then
3115 GCC=yes
3116else
3117 GCC=
3118fi
3119ac_test_CFLAGS=${CFLAGS+set}
3120ac_save_CFLAGS=$CFLAGS
3121{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
3122$as_echo_n "checking whether $CC accepts -g... " >&6; }
3123if ${ac_cv_prog_cc_g+:} false; then :
3124 $as_echo_n "(cached) " >&6
3125else
3126 ac_save_c_werror_flag=$ac_c_werror_flag
3127 ac_c_werror_flag=yes
3128 ac_cv_prog_cc_g=no
3129 CFLAGS="-g"
3130 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3131/* end confdefs.h. */
3132
3133int
3134main ()
3135{
3136
3137 ;
3138 return 0;
3139}
3140_ACEOF
3141if ac_fn_c_try_compile "$LINENO"; then :
3142 ac_cv_prog_cc_g=yes
3143else
3144 CFLAGS=""
3145 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3146/* end confdefs.h. */
3147
3148int
3149main ()
3150{
3151
3152 ;
3153 return 0;
3154}
3155_ACEOF
3156if ac_fn_c_try_compile "$LINENO"; then :
3157
3158else
3159 ac_c_werror_flag=$ac_save_c_werror_flag
3160 CFLAGS="-g"
3161 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3162/* end confdefs.h. */
3163
3164int
3165main ()
3166{
3167
3168 ;
3169 return 0;
3170}
3171_ACEOF
3172if ac_fn_c_try_compile "$LINENO"; then :
3173 ac_cv_prog_cc_g=yes
3174fi
3175rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3176fi
3177rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3178fi
3179rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3180 ac_c_werror_flag=$ac_save_c_werror_flag
3181fi
3182{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
3183$as_echo "$ac_cv_prog_cc_g" >&6; }
3184if test "$ac_test_CFLAGS" = set; then
3185 CFLAGS=$ac_save_CFLAGS
3186elif test $ac_cv_prog_cc_g = yes; then
3187 if test "$GCC" = yes; then
3188 CFLAGS="-g -O2"
3189 else
3190 CFLAGS="-g"
3191 fi
3192else
3193 if test "$GCC" = yes; then
3194 CFLAGS="-O2"
3195 else
3196 CFLAGS=
3197 fi
3198fi
3199{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
3200$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
3201if ${ac_cv_prog_cc_c89+:} false; then :
3202 $as_echo_n "(cached) " >&6
3203else
3204 ac_cv_prog_cc_c89=no
3205ac_save_CC=$CC
3206cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3207/* end confdefs.h. */
3208#include <stdarg.h>
3209#include <stdio.h>
3210struct stat;
3211/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
3212struct buf { int x; };
3213FILE * (*rcsopen) (struct buf *, struct stat *, int);
3214static char *e (p, i)
3215 char **p;
3216 int i;
3217{
3218 return p[i];
3219}
3220static char *f (char * (*g) (char **, int), char **p, ...)
3221{
3222 char *s;
3223 va_list v;
3224 va_start (v,p);
3225 s = g (p, va_arg (v,int));
3226 va_end (v);
3227 return s;
3228}
3229
3230/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
3231 function prototypes and stuff, but not '\xHH' hex character constants.
3232 These don't provoke an error unfortunately, instead are silently treated
3233 as 'x'. The following induces an error, until -std is added to get
3234 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
3235 array size at least. It's necessary to write '\x00'==0 to get something
3236 that's true only with -std. */
3237int osf4_cc_array ['\x00' == 0 ? 1 : -1];
3238
3239/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
3240 inside strings and character constants. */
3241#define FOO(x) 'x'
3242int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
3243
3244int test (int i, double x);
3245struct s1 {int (*f) (int a);};
3246struct s2 {int (*f) (double a);};
3247int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
3248int argc;
3249char **argv;
3250int
3251main ()
3252{
3253return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
3254 ;
3255 return 0;
3256}
3257_ACEOF
3258for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
3259 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
3260do
3261 CC="$ac_save_CC $ac_arg"
3262 if ac_fn_c_try_compile "$LINENO"; then :
3263 ac_cv_prog_cc_c89=$ac_arg
3264fi
3265rm -f core conftest.err conftest.$ac_objext
3266 test "x$ac_cv_prog_cc_c89" != "xno" && break
3267done
3268rm -f conftest.$ac_ext
3269CC=$ac_save_CC
3270
3271fi
3272# AC_CACHE_VAL
3273case "x$ac_cv_prog_cc_c89" in
3274 x)
3275 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
3276$as_echo "none needed" >&6; } ;;
3277 xno)
3278 { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
3279$as_echo "unsupported" >&6; } ;;
3280 *)
3281 CC="$CC $ac_cv_prog_cc_c89"
3282 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
3283$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
3284esac
3285if test "x$ac_cv_prog_cc_c89" != xno; then :
3286
3287fi
3288
3289ac_ext=c
3290ac_cpp='$CPP $CPPFLAGS'
3291ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3292ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3293ac_compiler_gnu=$ac_cv_c_compiler_gnu
3294
3295ac_ext=c
3296ac_cpp='$CPP $CPPFLAGS'
3297ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3298ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3299ac_compiler_gnu=$ac_cv_c_compiler_gnu
3300{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
3301$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
3302if ${am_cv_prog_cc_c_o+:} false; then :
3303 $as_echo_n "(cached) " >&6
3304else
3305 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3306/* end confdefs.h. */
3307
3308int
3309main ()
3310{
3311
3312 ;
3313 return 0;
3314}
3315_ACEOF
3316 # Make sure it works both with $CC and with simple cc.
3317 # Following AC_PROG_CC_C_O, we do the test twice because some
3318 # compilers refuse to overwrite an existing .o file with -o,
3319 # though they will create one.
3320 am_cv_prog_cc_c_o=yes
3321 for am_i in 1 2; do
3322 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
3323 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
3324 ac_status=$?
3325 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3326 (exit $ac_status); } \
3327 && test -f conftest2.$ac_objext; then
3328 : OK
3329 else
3330 am_cv_prog_cc_c_o=no
3331 break
3332 fi
3333 done
3334 rm -f core conftest*
3335 unset am_i
3336fi
3337{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
3338$as_echo "$am_cv_prog_cc_c_o" >&6; }
3339if test "$am_cv_prog_cc_c_o" != yes; then
3340 # Losing compiler, so override with the script.
3341 # FIXME: It is wrong to rewrite CC.
3342 # But if we don't then we get into trouble of one sort or another.
3343 # A longer-term fix would be to have automake use am__CC in this case,
3344 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
3345 CC="$am_aux_dir/compile $CC"
3346fi
3347ac_ext=c
3348ac_cpp='$CPP $CPPFLAGS'
3349ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3350ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3351ac_compiler_gnu=$ac_cv_c_compiler_gnu
3352
3353DEPDIR="${am__leading_dot}deps"
3354
3355ac_config_commands="$ac_config_commands depfiles"
3356
3357
3358am_make=${MAKE-make}
3359cat > confinc << 'END'
3360am__doit:
3361 @echo this is the am__doit target
3362.PHONY: am__doit
3363END
3364# If we don't find an include directive, just comment out the code.
3365{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
3366$as_echo_n "checking for style of include used by $am_make... " >&6; }
3367am__include="#"
3368am__quote=
3369_am_result=none
3370# First try GNU make style include.
3371echo "include confinc" > confmf
3372# Ignore all kinds of additional output from 'make'.
3373case `$am_make -s -f confmf 2> /dev/null` in #(
3374*the\ am__doit\ target*)
3375 am__include=include
3376 am__quote=
3377 _am_result=GNU
3378 ;;
3379esac
3380# Now try BSD make style include.
3381if test "$am__include" = "#"; then
3382 echo '.include "confinc"' > confmf
3383 case `$am_make -s -f confmf 2> /dev/null` in #(
3384 *the\ am__doit\ target*)
3385 am__include=.include
3386 am__quote="\""
3387 _am_result=BSD
3388 ;;
3389 esac
3390fi
3391
3392
3393{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
3394$as_echo "$_am_result" >&6; }
3395rm -f confinc confmf
3396
3397# Check whether --enable-dependency-tracking was given.
3398if test "${enable_dependency_tracking+set}" = set; then :
3399 enableval=$enable_dependency_tracking;
3400fi
3401
3402if test "x$enable_dependency_tracking" != xno; then
3403 am_depcomp="$ac_aux_dir/depcomp"
3404 AMDEPBACKSLASH='\'
3405 am__nodep='_no'
3406fi
3407 if test "x$enable_dependency_tracking" != xno; then
3408 AMDEP_TRUE=
3409 AMDEP_FALSE='#'
3410else
3411 AMDEP_TRUE='#'
3412 AMDEP_FALSE=
3413fi
3414
3415
3416
3417depcc="$CC" am_compiler_list=
3418
3419{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
3420$as_echo_n "checking dependency style of $depcc... " >&6; }
3421if ${am_cv_CC_dependencies_compiler_type+:} false; then :
3422 $as_echo_n "(cached) " >&6
3423else
3424 if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
3425 # We make a subdir and do the tests there. Otherwise we can end up
3426 # making bogus files that we don't know about and never remove. For
3427 # instance it was reported that on HP-UX the gcc test will end up
3428 # making a dummy file named 'D' -- because '-MD' means "put the output
3429 # in D".
3430 rm -rf conftest.dir
3431 mkdir conftest.dir
3432 # Copy depcomp to subdir because otherwise we won't find it if we're
3433 # using a relative directory.
3434 cp "$am_depcomp" conftest.dir
3435 cd conftest.dir
3436 # We will build objects and dependencies in a subdirectory because
3437 # it helps to detect inapplicable dependency modes. For instance
3438 # both Tru64's cc and ICC support -MD to output dependencies as a
3439 # side effect of compilation, but ICC will put the dependencies in
3440 # the current directory while Tru64 will put them in the object
3441 # directory.
3442 mkdir sub
3443
3444 am_cv_CC_dependencies_compiler_type=none
3445 if test "$am_compiler_list" = ""; then
3446 am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
3447 fi
3448 am__universal=false
3449 case " $depcc " in #(
3450 *\ -arch\ *\ -arch\ *) am__universal=true ;;
3451 esac
3452
3453 for depmode in $am_compiler_list; do
3454 # Setup a source with many dependencies, because some compilers
3455 # like to wrap large dependency lists on column 80 (with \), and
3456 # we should not choose a depcomp mode which is confused by this.
3457 #
3458 # We need to recreate these files for each test, as the compiler may
3459 # overwrite some of them when testing with obscure command lines.
3460 # This happens at least with the AIX C compiler.
3461 : > sub/conftest.c
3462 for i in 1 2 3 4 5 6; do
3463 echo '#include "conftst'$i'.h"' >> sub/conftest.c
3464 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
3465 # Solaris 10 /bin/sh.
3466 echo '/* dummy */' > sub/conftst$i.h
3467 done
3468 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
3469
3470 # We check with '-c' and '-o' for the sake of the "dashmstdout"
3471 # mode. It turns out that the SunPro C++ compiler does not properly
3472 # handle '-M -o', and we need to detect this. Also, some Intel
3473 # versions had trouble with output in subdirs.
3474 am__obj=sub/conftest.${OBJEXT-o}
3475 am__minus_obj="-o $am__obj"
3476 case $depmode in
3477 gcc)
3478 # This depmode causes a compiler race in universal mode.
3479 test "$am__universal" = false || continue
3480 ;;
3481 nosideeffect)
3482 # After this tag, mechanisms are not by side-effect, so they'll
3483 # only be used when explicitly requested.
3484 if test "x$enable_dependency_tracking" = xyes; then
3485 continue
3486 else
3487 break
3488 fi
3489 ;;
3490 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
3491 # This compiler won't grok '-c -o', but also, the minuso test has
3492 # not run yet. These depmodes are late enough in the game, and
3493 # so weak that their functioning should not be impacted.
3494 am__obj=conftest.${OBJEXT-o}
3495 am__minus_obj=
3496 ;;
3497 none) break ;;
3498 esac
3499 if depmode=$depmode \
3500 source=sub/conftest.c object=$am__obj \
3501 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
3502 $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
3503 >/dev/null 2>conftest.err &&
3504 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
3505 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
3506 grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
3507 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
3508 # icc doesn't choke on unknown options, it will just issue warnings
3509 # or remarks (even with -Werror). So we grep stderr for any message
3510 # that says an option was ignored or not supported.
3511 # When given -MP, icc 7.0 and 7.1 complain thusly:
3512 # icc: Command line warning: ignoring option '-M'; no argument required
3513 # The diagnosis changed in icc 8.0:
3514 # icc: Command line remark: option '-MP' not supported
3515 if (grep 'ignoring option' conftest.err ||
3516 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
3517 am_cv_CC_dependencies_compiler_type=$depmode
3518 break
3519 fi
3520 fi
3521 done
3522
3523 cd ..
3524 rm -rf conftest.dir
3525else
3526 am_cv_CC_dependencies_compiler_type=none
3527fi
3528
3529fi
3530{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
3531$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
3532CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
3533
3534 if
3535 test "x$enable_dependency_tracking" != xno \
3536 && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
3537 am__fastdepCC_TRUE=
3538 am__fastdepCC_FALSE='#'
3539else
3540 am__fastdepCC_TRUE='#'
3541 am__fastdepCC_FALSE=
3542fi
3543
3544
3545
3546
3547# Check whether --with-gtk was given.
3548if test "${with_gtk+set}" = set; then :
3549 withval=$with_gtk; gtk_version_desired="$withval"
3550else
3551 gtk_version_desired="any"
3552fi
3553
3554
3555case "$gtk_version_desired" in
3556 2 | 3 | any) ;;
3557 yes) gtk_version_desired="any" ;;
3558 *) as_fn_error $? "Invalid GTK version specified" "$LINENO" 5
3559esac
3560
3561gtk=none
3562
3563case "$gtk_version_desired:$gtk" in
3564 3:none | any:none)
3565
3566
3567
3568# Check whether --enable-gtktest was given.
3569if test "${enable_gtktest+set}" = set; then :
3570 enableval=$enable_gtktest;
3571else
3572 enable_gtktest=yes
3573fi
3574
3575 min_gtk_version=3.0.0
3576
3577 pkg_config_args="gtk+-3.0 >= $min_gtk_version"
3578 for module in .
3579 do
3580 case "$module" in
3581 gthread)
3582 pkg_config_args="$pkg_config_args gthread-2.0"
3583 ;;
3584 esac
3585 done
3586
3587 no_gtk=""
3588
3589 # Extract the first word of "pkg-config", so it can be a program name with args.
3590set dummy pkg-config; ac_word=$2
3591{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3592$as_echo_n "checking for $ac_word... " >&6; }
3593if ${ac_cv_path_PKG_CONFIG+:} false; then :
3594 $as_echo_n "(cached) " >&6
3595else
3596 case $PKG_CONFIG in
3597 [\\/]* | ?:[\\/]*)
3598 ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
3599 ;;
3600 *)
3601 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3602for as_dir in $PATH
3603do
3604 IFS=$as_save_IFS
3605 test -z "$as_dir" && as_dir=.
3606 for ac_exec_ext in '' $ac_executable_extensions; do
3607 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3608 ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
3609 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3610 break 2
3611 fi
3612done
3613 done
3614IFS=$as_save_IFS
3615
3616 test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
3617 ;;
3618esac
3619fi
3620PKG_CONFIG=$ac_cv_path_PKG_CONFIG
3621if test -n "$PKG_CONFIG"; then
3622 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
3623$as_echo "$PKG_CONFIG" >&6; }
3624else
3625 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3626$as_echo "no" >&6; }
3627fi
3628
3629
3630
3631 if test x$PKG_CONFIG != xno ; then
3632 if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
3633 :
3634 else
3635 echo "*** pkg-config too old; version 0.7 or better required."
3636 no_gtk=yes
3637 PKG_CONFIG=no
3638 fi
3639 else
3640 no_gtk=yes
3641 fi
3642
3643 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5
3644$as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; }
3645
3646 if test x$PKG_CONFIG != xno ; then
3647 ## don't try to run the test against uninstalled libtool libs
3648 if $PKG_CONFIG --uninstalled $pkg_config_args; then
3649 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
3650 enable_gtktest=no
3651 fi
3652
3653 if $PKG_CONFIG $pkg_config_args; then
3654 :
3655 else
3656 no_gtk=yes
3657 fi
3658 fi
3659
3660 if test x"$no_gtk" = x ; then
3661 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
3662 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
3663 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
3664 sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
3665 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
3666 sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
3667 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
3668 sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
3669 if test "x$enable_gtktest" = "xyes" ; then
3670 ac_save_CFLAGS="$CFLAGS"
3671 ac_save_LIBS="$LIBS"
3672 CFLAGS="$CFLAGS $GTK_CFLAGS"
3673 LIBS="$GTK_LIBS $LIBS"
3674 rm -f conf.gtktest
3675 if test "$cross_compiling" = yes; then :
3676 echo $ac_n "cross compiling; assumed OK... $ac_c"
3677else
3678 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3679/* end confdefs.h. */
3680
3681#include <gtk/gtk.h>
3682#include <stdio.h>
3683#include <stdlib.h>
3684
3685int
3686main ()
3687{
3688 unsigned int major, minor, micro;
3689
3690 fclose (fopen ("conf.gtktest", "w"));
3691
3692 if (sscanf("$min_gtk_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
3693 printf("%s, bad version string\n", "$min_gtk_version");
3694 exit(1);
3695 }
3696
3697 if ((gtk_major_version != $gtk_config_major_version) ||
3698 (gtk_minor_version != $gtk_config_minor_version) ||
3699 (gtk_micro_version != $gtk_config_micro_version))
3700 {
3701 printf("\n*** 'pkg-config --modversion gtk+-3.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
3702 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
3703 gtk_major_version, gtk_minor_version, gtk_micro_version);
3704 printf ("*** was found! If pkg-config was correct, then it is best\n");
3705 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
3706 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
3707 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
3708 printf("*** required on your system.\n");
3709 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
3710 printf("*** to point to the correct configuration files\n");
3711 }
3712 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
3713 (gtk_minor_version != GTK_MINOR_VERSION) ||
3714 (gtk_micro_version != GTK_MICRO_VERSION))
3715 {
3716 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
3717 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
3718 printf("*** library (version %d.%d.%d)\n",
3719 gtk_major_version, gtk_minor_version, gtk_micro_version);
3720 }
3721 else
3722 {
3723 if ((gtk_major_version > major) ||
3724 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
3725 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
3726 {
3727 return 0;
3728 }
3729 else
3730 {
3731 printf("\n*** An old version of GTK+ (%u.%u.%u) was found.\n",
3732 gtk_major_version, gtk_minor_version, gtk_micro_version);
3733 printf("*** You need a version of GTK+ newer than %u.%u.%u. The latest version of\n",
3734 major, minor, micro);
3735 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
3736 printf("***\n");
3737 printf("*** If you have already installed a sufficiently new version, this error\n");
3738 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
3739 printf("*** being found. The easiest way to fix this is to remove the old version\n");
3740 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
3741 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
3742 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
3743 printf("*** so that the correct libraries are found at run-time))\n");
3744 }
3745 }
3746 return 1;
3747}
3748
3749_ACEOF
3750if ac_fn_c_try_run "$LINENO"; then :
3751
3752else
3753 no_gtk=yes
3754fi
3755rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
3756 conftest.$ac_objext conftest.beam conftest.$ac_ext
3757fi
3758
3759 CFLAGS="$ac_save_CFLAGS"
3760 LIBS="$ac_save_LIBS"
3761 fi
3762 fi
3763 if test "x$no_gtk" = x ; then
3764 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5
3765$as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; }
3766 gtk=3
3767 else
3768 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3769$as_echo "no" >&6; }
3770 if test "$PKG_CONFIG" = "no" ; then
3771 echo "*** A new enough version of pkg-config was not found."
3772 echo "*** See http://pkgconfig.sourceforge.net"
3773 else
3774 if test -f conf.gtktest ; then
3775 :
3776 else
3777 echo "*** Could not run GTK+ test program, checking why..."
3778 ac_save_CFLAGS="$CFLAGS"
3779 ac_save_LIBS="$LIBS"
3780 CFLAGS="$CFLAGS $GTK_CFLAGS"
3781 LIBS="$LIBS $GTK_LIBS"
3782 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3783/* end confdefs.h. */
3784
3785#include <gtk/gtk.h>
3786#include <stdio.h>
3787
3788int
3789main ()
3790{
3791 return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version));
3792 ;
3793 return 0;
3794}
3795_ACEOF
3796if ac_fn_c_try_link "$LINENO"; then :
3797 echo "*** The test program compiled, but did not run. This usually means"
3798 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
3799 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
3800 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
3801 echo "*** to the installed location Also, make sure you have run ldconfig if that"
3802 echo "*** is required on your system"
3803 echo "***"
3804 echo "*** If you have an old version installed, it is best to remove it, although"
3805 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
3806else
3807 echo "*** The test program failed to compile or link. See the file config.log for the"
3808 echo "*** exact error that occurred. This usually means GTK+ is incorrectly installed."
3809fi
3810rm -f core conftest.err conftest.$ac_objext \
3811 conftest$ac_exeext conftest.$ac_ext
3812 CFLAGS="$ac_save_CFLAGS"
3813 LIBS="$ac_save_LIBS"
3814 fi
3815 fi
3816 GTK_CFLAGS=""
3817 GTK_LIBS=""
3818 :
3819 fi
3820
3821
3822 rm -f conf.gtktest
3823
3824
3825 ;;
3826esac
3827
3828case "$gtk_version_desired:$gtk" in
3829 2:none | any:none)
3830
3831
3832
3833
3834
3835
3836
3837
3838if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
3839 if test -n "$ac_tool_prefix"; then
3840 # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
3841set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
3842{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3843$as_echo_n "checking for $ac_word... " >&6; }
3844if ${ac_cv_path_PKG_CONFIG+:} false; then :
3845 $as_echo_n "(cached) " >&6
3846else
3847 case $PKG_CONFIG in
3848 [\\/]* | ?:[\\/]*)
3849 ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
3850 ;;
3851 *)
3852 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3853for as_dir in $PATH
3854do
3855 IFS=$as_save_IFS
3856 test -z "$as_dir" && as_dir=.
3857 for ac_exec_ext in '' $ac_executable_extensions; do
3858 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3859 ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
3860 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3861 break 2
3862 fi
3863done
3864 done
3865IFS=$as_save_IFS
3866
3867 ;;
3868esac
3869fi
3870PKG_CONFIG=$ac_cv_path_PKG_CONFIG
3871if test -n "$PKG_CONFIG"; then
3872 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
3873$as_echo "$PKG_CONFIG" >&6; }
3874else
3875 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3876$as_echo "no" >&6; }
3877fi
3878
3879
3880fi
3881if test -z "$ac_cv_path_PKG_CONFIG"; then
3882 ac_pt_PKG_CONFIG=$PKG_CONFIG
3883 # Extract the first word of "pkg-config", so it can be a program name with args.
3884set dummy pkg-config; ac_word=$2
3885{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3886$as_echo_n "checking for $ac_word... " >&6; }
3887if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
3888 $as_echo_n "(cached) " >&6
3889else
3890 case $ac_pt_PKG_CONFIG in
3891 [\\/]* | ?:[\\/]*)
3892 ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
3893 ;;
3894 *)
3895 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3896for as_dir in $PATH
3897do
3898 IFS=$as_save_IFS
3899 test -z "$as_dir" && as_dir=.
3900 for ac_exec_ext in '' $ac_executable_extensions; do
3901 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3902 ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
3903 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3904 break 2
3905 fi
3906done
3907 done
3908IFS=$as_save_IFS
3909
3910 ;;
3911esac
3912fi
3913ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
3914if test -n "$ac_pt_PKG_CONFIG"; then
3915 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
3916$as_echo "$ac_pt_PKG_CONFIG" >&6; }
3917else
3918 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3919$as_echo "no" >&6; }
3920fi
3921
3922 if test "x$ac_pt_PKG_CONFIG" = x; then
3923 PKG_CONFIG=""
3924 else
3925 case $cross_compiling:$ac_tool_warned in
3926yes:)
3927{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
3928$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
3929ac_tool_warned=yes ;;
3930esac
3931 PKG_CONFIG=$ac_pt_PKG_CONFIG
3932 fi
3933else
3934 PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
3935fi
3936
3937fi
3938if test -n "$PKG_CONFIG"; then
3939 _pkg_min_version=0.9.0
3940 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
3941$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
3942 if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
3943 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
3944$as_echo "yes" >&6; }
3945 else
3946 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3947$as_echo "no" >&6; }
3948 PKG_CONFIG=""
3949 fi
3950fi
3951# Check whether --enable-gtktest was given.
3952if test "${enable_gtktest+set}" = set; then :
3953 enableval=$enable_gtktest;
3954else
3955 enable_gtktest=yes
3956fi
3957
3958
3959 pkg_config_args=gtk+-2.0
3960 for module in .
3961 do
3962 case "$module" in
3963 gthread)
3964 pkg_config_args="$pkg_config_args gthread-2.0"
3965 ;;
3966 esac
3967 done
3968
3969 no_gtk=""
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
3980 if test -n "$ac_tool_prefix"; then
3981 # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
3982set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
3983{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3984$as_echo_n "checking for $ac_word... " >&6; }
3985if ${ac_cv_path_PKG_CONFIG+:} false; then :
3986 $as_echo_n "(cached) " >&6
3987else
3988 case $PKG_CONFIG in
3989 [\\/]* | ?:[\\/]*)
3990 ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
3991 ;;
3992 *)
3993 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3994for as_dir in $PATH
3995do
3996 IFS=$as_save_IFS
3997 test -z "$as_dir" && as_dir=.
3998 for ac_exec_ext in '' $ac_executable_extensions; do
3999 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4000 ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
4001 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4002 break 2
4003 fi
4004done
4005 done
4006IFS=$as_save_IFS
4007
4008 ;;
4009esac
4010fi
4011PKG_CONFIG=$ac_cv_path_PKG_CONFIG
4012if test -n "$PKG_CONFIG"; then
4013 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
4014$as_echo "$PKG_CONFIG" >&6; }
4015else
4016 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4017$as_echo "no" >&6; }
4018fi
4019
4020
4021fi
4022if test -z "$ac_cv_path_PKG_CONFIG"; then
4023 ac_pt_PKG_CONFIG=$PKG_CONFIG
4024 # Extract the first word of "pkg-config", so it can be a program name with args.
4025set dummy pkg-config; ac_word=$2
4026{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4027$as_echo_n "checking for $ac_word... " >&6; }
4028if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
4029 $as_echo_n "(cached) " >&6
4030else
4031 case $ac_pt_PKG_CONFIG in
4032 [\\/]* | ?:[\\/]*)
4033 ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
4034 ;;
4035 *)
4036 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4037for as_dir in $PATH
4038do
4039 IFS=$as_save_IFS
4040 test -z "$as_dir" && as_dir=.
4041 for ac_exec_ext in '' $ac_executable_extensions; do
4042 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4043 ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
4044 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4045 break 2
4046 fi
4047done
4048 done
4049IFS=$as_save_IFS
4050
4051 ;;
4052esac
4053fi
4054ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
4055if test -n "$ac_pt_PKG_CONFIG"; then
4056 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
4057$as_echo "$ac_pt_PKG_CONFIG" >&6; }
4058else
4059 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4060$as_echo "no" >&6; }
4061fi
4062
4063 if test "x$ac_pt_PKG_CONFIG" = x; then
4064 PKG_CONFIG=""
4065 else
4066 case $cross_compiling:$ac_tool_warned in
4067yes:)
4068{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4069$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4070ac_tool_warned=yes ;;
4071esac
4072 PKG_CONFIG=$ac_pt_PKG_CONFIG
4073 fi
4074else
4075 PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
4076fi
4077
4078fi
4079if test -n "$PKG_CONFIG"; then
4080 _pkg_min_version=0.7
4081 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
4082$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
4083 if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
4084 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
4085$as_echo "yes" >&6; }
4086 else
4087 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4088$as_echo "no" >&6; }
4089 PKG_CONFIG=""
4090 fi
4091fi
4092
4093 min_gtk_version=2.0.0
4094 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5
4095$as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; }
4096
4097 if test x$PKG_CONFIG != xno ; then
4098 ## don't try to run the test against uninstalled libtool libs
4099 if $PKG_CONFIG --uninstalled $pkg_config_args; then
4100 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
4101 enable_gtktest=no
4102 fi
4103
4104 if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
4105 :
4106 else
4107 no_gtk=yes
4108 fi
4109 fi
4110
4111 if test x"$no_gtk" = x ; then
4112 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
4113 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
4114 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
4115 sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
4116 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
4117 sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
4118 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
4119 sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
4120 if test "x$enable_gtktest" = "xyes" ; then
4121 ac_save_CFLAGS="$CFLAGS"
4122 ac_save_LIBS="$LIBS"
4123 CFLAGS="$CFLAGS $GTK_CFLAGS"
4124 LIBS="$GTK_LIBS $LIBS"
4125 rm -f conf.gtktest
4126 if test "$cross_compiling" = yes; then :
4127 echo $ac_n "cross compiling; assumed OK... $ac_c"
4128else
4129 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4130/* end confdefs.h. */
4131
4132#include <gtk/gtk.h>
4133#include <stdio.h>
4134#include <stdlib.h>
4135
4136int
4137main ()
4138{
4139 int major, minor, micro;
4140 char *tmp_version;
4141
4142 fclose (fopen ("conf.gtktest", "w"));
4143
4144 /* HP/UX 9 (%@#!) writes to sscanf strings */
4145 tmp_version = g_strdup("$min_gtk_version");
4146 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
4147 printf("%s, bad version string\n", "$min_gtk_version");
4148 exit(1);
4149 }
4150
4151 if ((gtk_major_version != $gtk_config_major_version) ||
4152 (gtk_minor_version != $gtk_config_minor_version) ||
4153 (gtk_micro_version != $gtk_config_micro_version))
4154 {
4155 printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
4156 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
4157 gtk_major_version, gtk_minor_version, gtk_micro_version);
4158 printf ("*** was found! If pkg-config was correct, then it is best\n");
4159 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
4160 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
4161 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
4162 printf("*** required on your system.\n");
4163 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
4164 printf("*** to point to the correct configuration files\n");
4165 }
4166 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
4167 (gtk_minor_version != GTK_MINOR_VERSION) ||
4168 (gtk_micro_version != GTK_MICRO_VERSION))
4169 {
4170 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
4171 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
4172 printf("*** library (version %d.%d.%d)\n",
4173 gtk_major_version, gtk_minor_version, gtk_micro_version);
4174 }
4175 else
4176 {
4177 if ((gtk_major_version > major) ||
4178 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
4179 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
4180 {
4181 return 0;
4182 }
4183 else
4184 {
4185 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
4186 gtk_major_version, gtk_minor_version, gtk_micro_version);
4187 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
4188 major, minor, micro);
4189 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
4190 printf("***\n");
4191 printf("*** If you have already installed a sufficiently new version, this error\n");
4192 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
4193 printf("*** being found. The easiest way to fix this is to remove the old version\n");
4194 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
4195 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
4196 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
4197 printf("*** so that the correct libraries are found at run-time))\n");
4198 }
4199 }
4200 return 1;
4201}
4202
4203_ACEOF
4204if ac_fn_c_try_run "$LINENO"; then :
4205
4206else
4207 no_gtk=yes
4208fi
4209rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
4210 conftest.$ac_objext conftest.beam conftest.$ac_ext
4211fi
4212
4213 CFLAGS="$ac_save_CFLAGS"
4214 LIBS="$ac_save_LIBS"
4215 fi
4216 fi
4217 if test "x$no_gtk" = x ; then
4218 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5
4219$as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; }
4220 gtk=2
4221 else
4222 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4223$as_echo "no" >&6; }
4224 if test "$PKG_CONFIG" = "no" ; then
4225 echo "*** A new enough version of pkg-config was not found."
4226 echo "*** See http://pkgconfig.sourceforge.net"
4227 else
4228 if test -f conf.gtktest ; then
4229 :
4230 else
4231 echo "*** Could not run GTK+ test program, checking why..."
4232 ac_save_CFLAGS="$CFLAGS"
4233 ac_save_LIBS="$LIBS"
4234 CFLAGS="$CFLAGS $GTK_CFLAGS"
4235 LIBS="$LIBS $GTK_LIBS"
4236 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4237/* end confdefs.h. */
4238
4239#include <gtk/gtk.h>
4240#include <stdio.h>
4241
4242int
4243main ()
4244{
4245 return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version));
4246 ;
4247 return 0;
4248}
4249_ACEOF
4250if ac_fn_c_try_link "$LINENO"; then :
4251 echo "*** The test program compiled, but did not run. This usually means"
4252 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
4253 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
4254 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
4255 echo "*** to the installed location Also, make sure you have run ldconfig if that"
4256 echo "*** is required on your system"
4257 echo "***"
4258 echo "*** If you have an old version installed, it is best to remove it, although"
4259 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
4260else
4261 echo "*** The test program failed to compile or link. See the file config.log for the"
4262 echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."
4263fi
4264rm -f core conftest.err conftest.$ac_objext \
4265 conftest$ac_exeext conftest.$ac_ext
4266 CFLAGS="$ac_save_CFLAGS"
4267 LIBS="$ac_save_LIBS"
4268 fi
4269 fi
4270 GTK_CFLAGS=""
4271 GTK_LIBS=""
4272 :
4273 fi
4274
4275
4276 rm -f conf.gtktest
4277
4278
4279 ;;
4280esac
4281
4282if test "$gtk" = "none"; then
4283 as_fn_error $? "cannot build without GTK 2 or GTK 3" "$LINENO" 5
4284fi
4285
4286if test "x$GCC" = "xyes"; then
4287 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable gcc warning flags" >&5
4288$as_echo_n "checking for usable gcc warning flags... " >&6; }
4289 gccwarningflags=
4290 for flag in -Wall -Werror -std=c89 -pedantic; do
4291 ac_save_CFLAGS="$CFLAGS"
4292 ac_save_LIBS="$LIBS"
4293 CFLAGS="$CFLAGS$gccwarningflags $flag $GTK_CFLAGS"
4294 LIBS="$GTK_LIBS $LIBS"
4295 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4296/* end confdefs.h. */
4297
4298 #include <stdio.h>
4299 #include <assert.h>
4300 #include <stdlib.h>
4301 #include <time.h>
4302 #include <stdarg.h>
4303 #include <string.h>
4304 #include <errno.h>
4305 #include <math.h>
4306
4307 #include <sys/time.h>
4308 #include <sys/resource.h>
4309
4310 #include <gtk/gtk.h>
4311 #include <gdk/gdkkeysyms.h>
4312
4313 #include <gdk-pixbuf/gdk-pixbuf.h>
4314
4315 #include <gdk/gdkx.h>
4316 #include <X11/Xlib.h>
4317 #include <X11/Xutil.h>
4318 #include <X11/Xatom.h>
4319
4320int
4321main ()
4322{
4323
4324 return 0;
4325
4326 ;
4327 return 0;
4328}
4329_ACEOF
4330if ac_fn_c_try_compile "$LINENO"; then :
4331 gccwarningflags="$gccwarningflags $flag"
4332fi
4333rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4334 CFLAGS="$ac_save_CFLAGS"
4335 LIBS="$ac_save_LIBS"
4336 done
4337 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gccwarningflags" >&5
4338$as_echo "$gccwarningflags" >&6; }
4339 CFLAGS="$CFLAGS$gccwarningflags"
4340fi
4341
4342if test -n "$ac_tool_prefix"; then
4343 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
4344set dummy ${ac_tool_prefix}ranlib; ac_word=$2
4345{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4346$as_echo_n "checking for $ac_word... " >&6; }
4347if ${ac_cv_prog_RANLIB+:} false; then :
4348 $as_echo_n "(cached) " >&6
4349else
4350 if test -n "$RANLIB"; then
4351 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
4352else
4353as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4354for as_dir in $PATH
4355do
4356 IFS=$as_save_IFS
4357 test -z "$as_dir" && as_dir=.
4358 for ac_exec_ext in '' $ac_executable_extensions; do
4359 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4360 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
4361 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4362 break 2
4363 fi
4364done
4365 done
4366IFS=$as_save_IFS
4367
4368fi
4369fi
4370RANLIB=$ac_cv_prog_RANLIB
4371if test -n "$RANLIB"; then
4372 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
4373$as_echo "$RANLIB" >&6; }
4374else
4375 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4376$as_echo "no" >&6; }
4377fi
4378
4379
4380fi
4381if test -z "$ac_cv_prog_RANLIB"; then
4382 ac_ct_RANLIB=$RANLIB
4383 # Extract the first word of "ranlib", so it can be a program name with args.
4384set dummy ranlib; ac_word=$2
4385{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4386$as_echo_n "checking for $ac_word... " >&6; }
4387if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
4388 $as_echo_n "(cached) " >&6
4389else
4390 if test -n "$ac_ct_RANLIB"; then
4391 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
4392else
4393as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4394for as_dir in $PATH
4395do
4396 IFS=$as_save_IFS
4397 test -z "$as_dir" && as_dir=.
4398 for ac_exec_ext in '' $ac_executable_extensions; do
4399 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4400 ac_cv_prog_ac_ct_RANLIB="ranlib"
4401 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4402 break 2
4403 fi
4404done
4405 done
4406IFS=$as_save_IFS
4407
4408fi
4409fi
4410ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
4411if test -n "$ac_ct_RANLIB"; then
4412 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
4413$as_echo "$ac_ct_RANLIB" >&6; }
4414else
4415 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4416$as_echo "no" >&6; }
4417fi
4418
4419 if test "x$ac_ct_RANLIB" = x; then
4420 RANLIB=":"
4421 else
4422 case $cross_compiling:$ac_tool_warned in
4423yes:)
4424{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4425$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4426ac_tool_warned=yes ;;
4427esac
4428 RANLIB=$ac_ct_RANLIB
4429 fi
4430else
4431 RANLIB="$ac_cv_prog_RANLIB"
4432fi
4433
4434
4435ac_config_files="$ac_config_files Makefile"
4436
4437cat >confcache <<\_ACEOF
4438# This file is a shell script that caches the results of configure
4439# tests run on this system so they can be shared between configure
4440# scripts and configure runs, see configure's option --config-cache.
4441# It is not useful on other systems. If it contains results you don't
4442# want to keep, you may remove or edit it.
4443#
4444# config.status only pays attention to the cache file if you give it
4445# the --recheck option to rerun configure.
4446#
4447# `ac_cv_env_foo' variables (set or unset) will be overridden when
4448# loading this file, other *unset* `ac_cv_foo' will be assigned the
4449# following values.
4450
4451_ACEOF
4452
4453# The following way of writing the cache mishandles newlines in values,
4454# but we know of no workaround that is simple, portable, and efficient.
4455# So, we kill variables containing newlines.
4456# Ultrix sh set writes to stderr and can't be redirected directly,
4457# and sets the high bit in the cache file unless we assign to the vars.
4458(
4459 for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
4460 eval ac_val=\$$ac_var
4461 case $ac_val in #(
4462 *${as_nl}*)
4463 case $ac_var in #(
4464 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
4465$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
4466 esac
4467 case $ac_var in #(
4468 _ | IFS | as_nl) ;; #(
4469 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
4470 *) { eval $ac_var=; unset $ac_var;} ;;
4471 esac ;;
4472 esac
4473 done
4474
4475 (set) 2>&1 |
4476 case $as_nl`(ac_space=' '; set) 2>&1` in #(
4477 *${as_nl}ac_space=\ *)
4478 # `set' does not quote correctly, so add quotes: double-quote
4479 # substitution turns \\\\ into \\, and sed turns \\ into \.
4480 sed -n \
4481 "s/'/'\\\\''/g;
4482 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
4483 ;; #(
4484 *)
4485 # `set' quotes correctly as required by POSIX, so do not add quotes.
4486 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
4487 ;;
4488 esac |
4489 sort
4490) |
4491 sed '
4492 /^ac_cv_env_/b end
4493 t clear
4494 :clear
4495 s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
4496 t end
4497 s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
4498 :end' >>confcache
4499if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
4500 if test -w "$cache_file"; then
4501 if test "x$cache_file" != "x/dev/null"; then
4502 { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
4503$as_echo "$as_me: updating cache $cache_file" >&6;}
4504 if test ! -f "$cache_file" || test -h "$cache_file"; then
4505 cat confcache >"$cache_file"
4506 else
4507 case $cache_file in #(
4508 */* | ?:*)
4509 mv -f confcache "$cache_file"$$ &&
4510 mv -f "$cache_file"$$ "$cache_file" ;; #(
4511 *)
4512 mv -f confcache "$cache_file" ;;
4513 esac
4514 fi
4515 fi
4516 else
4517 { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
4518$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
4519 fi
4520fi
4521rm -f confcache
4522
4523test "x$prefix" = xNONE && prefix=$ac_default_prefix
4524# Let make expand exec_prefix.
4525test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
4526
4527# Transform confdefs.h into DEFS.
4528# Protect against shell expansion while executing Makefile rules.
4529# Protect against Makefile macro expansion.
4530#
4531# If the first sed substitution is executed (which looks for macros that
4532# take arguments), then branch to the quote section. Otherwise,
4533# look for a macro that doesn't take arguments.
4534ac_script='
4535:mline
4536/\\$/{
4537 N
4538 s,\\\n,,
4539 b mline
4540}
4541t clear
4542:clear
4543s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
4544t quote
4545s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
4546t quote
4547b any
4548:quote
4549s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
4550s/\[/\\&/g
4551s/\]/\\&/g
4552s/\$/$$/g
4553H
4554:any
4555${
4556 g
4557 s/^\n//
4558 s/\n/ /g
4559 p
4560}
4561'
4562DEFS=`sed -n "$ac_script" confdefs.h`
4563
4564
4565ac_libobjs=
4566ac_ltlibobjs=
4567U=
4568for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
4569 # 1. Remove the extension, and $U if already installed.
4570 ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
4571 ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
4572 # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
4573 # will be set to the directory where LIBOBJS objects are built.
4574 as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
4575 as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
4576done
4577LIBOBJS=$ac_libobjs
4578
4579LTLIBOBJS=$ac_ltlibobjs
4580
4581
4582{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
4583$as_echo_n "checking that generated files are newer than configure... " >&6; }
4584 if test -n "$am_sleep_pid"; then
4585 # Hide warnings about reused PIDs.
4586 wait $am_sleep_pid 2>/dev/null
4587 fi
4588 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
4589$as_echo "done" >&6; }
4590 if test -n "$EXEEXT"; then
4591 am__EXEEXT_TRUE=
4592 am__EXEEXT_FALSE='#'
4593else
4594 am__EXEEXT_TRUE='#'
4595 am__EXEEXT_FALSE=
4596fi
4597
4598if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
4599 as_fn_error $? "conditional \"AMDEP\" was never defined.
4600Usually this means the macro was only invoked conditionally." "$LINENO" 5
4601fi
4602if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
4603 as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
4604Usually this means the macro was only invoked conditionally." "$LINENO" 5
4605fi
4606
4607: "${CONFIG_STATUS=./config.status}"
4608ac_write_fail=0
4609ac_clean_files_save=$ac_clean_files
4610ac_clean_files="$ac_clean_files $CONFIG_STATUS"
4611{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
4612$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
4613as_write_fail=0
4614cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
4615#! $SHELL
4616# Generated by $as_me.
4617# Run this file to recreate the current configuration.
4618# Compiler output produced by configure, useful for debugging
4619# configure, is in config.log if it exists.
4620
4621debug=false
4622ac_cs_recheck=false
4623ac_cs_silent=false
4624
4625SHELL=\${CONFIG_SHELL-$SHELL}
4626export SHELL
4627_ASEOF
4628cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
4629## -------------------- ##
4630## M4sh Initialization. ##
4631## -------------------- ##
4632
4633# Be more Bourne compatible
4634DUALCASE=1; export DUALCASE # for MKS sh
4635if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
4636 emulate sh
4637 NULLCMD=:
4638 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
4639 # is contrary to our usage. Disable this feature.
4640 alias -g '${1+"$@"}'='"$@"'
4641 setopt NO_GLOB_SUBST
4642else
4643 case `(set -o) 2>/dev/null` in #(
4644 *posix*) :
4645 set -o posix ;; #(
4646 *) :
4647 ;;
4648esac
4649fi
4650
4651
4652as_nl='
4653'
4654export as_nl
4655# Printing a long string crashes Solaris 7 /usr/bin/printf.
4656as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
4657as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
4658as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
4659# Prefer a ksh shell builtin over an external printf program on Solaris,
4660# but without wasting forks for bash or zsh.
4661if test -z "$BASH_VERSION$ZSH_VERSION" \
4662 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
4663 as_echo='print -r --'
4664 as_echo_n='print -rn --'
4665elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
4666 as_echo='printf %s\n'
4667 as_echo_n='printf %s'
4668else
4669 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
4670 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
4671 as_echo_n='/usr/ucb/echo -n'
4672 else
4673 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
4674 as_echo_n_body='eval
4675 arg=$1;
4676 case $arg in #(
4677 *"$as_nl"*)
4678 expr "X$arg" : "X\\(.*\\)$as_nl";
4679 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
4680 esac;
4681 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
4682 '
4683 export as_echo_n_body
4684 as_echo_n='sh -c $as_echo_n_body as_echo'
4685 fi
4686 export as_echo_body
4687 as_echo='sh -c $as_echo_body as_echo'
4688fi
4689
4690# The user is always right.
4691if test "${PATH_SEPARATOR+set}" != set; then
4692 PATH_SEPARATOR=:
4693 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
4694 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
4695 PATH_SEPARATOR=';'
4696 }
4697fi
4698
4699
4700# IFS
4701# We need space, tab and new line, in precisely that order. Quoting is
4702# there to prevent editors from complaining about space-tab.
4703# (If _AS_PATH_WALK were called with IFS unset, it would disable word
4704# splitting by setting IFS to empty value.)
4705IFS=" "" $as_nl"
4706
4707# Find who we are. Look in the path if we contain no directory separator.
4708as_myself=
4709case $0 in #((
4710 *[\\/]* ) as_myself=$0 ;;
4711 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4712for as_dir in $PATH
4713do
4714 IFS=$as_save_IFS
4715 test -z "$as_dir" && as_dir=.
4716 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
4717 done
4718IFS=$as_save_IFS
4719
4720 ;;
4721esac
4722# We did not find ourselves, most probably we were run as `sh COMMAND'
4723# in which case we are not to be found in the path.
4724if test "x$as_myself" = x; then
4725 as_myself=$0
4726fi
4727if test ! -f "$as_myself"; then
4728 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
4729 exit 1
4730fi
4731
4732# Unset variables that we do not need and which cause bugs (e.g. in
4733# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
4734# suppresses any "Segmentation fault" message there. '((' could
4735# trigger a bug in pdksh 5.2.14.
4736for as_var in BASH_ENV ENV MAIL MAILPATH
4737do eval test x\${$as_var+set} = xset \
4738 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
4739done
4740PS1='$ '
4741PS2='> '
4742PS4='+ '
4743
4744# NLS nuisances.
4745LC_ALL=C
4746export LC_ALL
4747LANGUAGE=C
4748export LANGUAGE
4749
4750# CDPATH.
4751(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
4752
4753
4754# as_fn_error STATUS ERROR [LINENO LOG_FD]
4755# ----------------------------------------
4756# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
4757# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
4758# script with STATUS, using 1 if that was 0.
4759as_fn_error ()
4760{
4761 as_status=$1; test $as_status -eq 0 && as_status=1
4762 if test "$4"; then
4763 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
4764 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
4765 fi
4766 $as_echo "$as_me: error: $2" >&2
4767 as_fn_exit $as_status
4768} # as_fn_error
4769
4770
4771# as_fn_set_status STATUS
4772# -----------------------
4773# Set $? to STATUS, without forking.
4774as_fn_set_status ()
4775{
4776 return $1
4777} # as_fn_set_status
4778
4779# as_fn_exit STATUS
4780# -----------------
4781# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
4782as_fn_exit ()
4783{
4784 set +e
4785 as_fn_set_status $1
4786 exit $1
4787} # as_fn_exit
4788
4789# as_fn_unset VAR
4790# ---------------
4791# Portably unset VAR.
4792as_fn_unset ()
4793{
4794 { eval $1=; unset $1;}
4795}
4796as_unset=as_fn_unset
4797# as_fn_append VAR VALUE
4798# ----------------------
4799# Append the text in VALUE to the end of the definition contained in VAR. Take
4800# advantage of any shell optimizations that allow amortized linear growth over
4801# repeated appends, instead of the typical quadratic growth present in naive
4802# implementations.
4803if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
4804 eval 'as_fn_append ()
4805 {
4806 eval $1+=\$2
4807 }'
4808else
4809 as_fn_append ()
4810 {
4811 eval $1=\$$1\$2
4812 }
4813fi # as_fn_append
4814
4815# as_fn_arith ARG...
4816# ------------------
4817# Perform arithmetic evaluation on the ARGs, and store the result in the
4818# global $as_val. Take advantage of shells that can avoid forks. The arguments
4819# must be portable across $(()) and expr.
4820if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
4821 eval 'as_fn_arith ()
4822 {
4823 as_val=$(( $* ))
4824 }'
4825else
4826 as_fn_arith ()
4827 {
4828 as_val=`expr "$@" || test $? -eq 1`
4829 }
4830fi # as_fn_arith
4831
4832
4833if expr a : '\(a\)' >/dev/null 2>&1 &&
4834 test "X`expr 00001 : '.*\(...\)'`" = X001; then
4835 as_expr=expr
4836else
4837 as_expr=false
4838fi
4839
4840if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
4841 as_basename=basename
4842else
4843 as_basename=false
4844fi
4845
4846if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
4847 as_dirname=dirname
4848else
4849 as_dirname=false
4850fi
4851
4852as_me=`$as_basename -- "$0" ||
4853$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
4854 X"$0" : 'X\(//\)$' \| \
4855 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
4856$as_echo X/"$0" |
4857 sed '/^.*\/\([^/][^/]*\)\/*$/{
4858 s//\1/
4859 q
4860 }
4861 /^X\/\(\/\/\)$/{
4862 s//\1/
4863 q
4864 }
4865 /^X\/\(\/\).*/{
4866 s//\1/
4867 q
4868 }
4869 s/.*/./; q'`
4870
4871# Avoid depending upon Character Ranges.
4872as_cr_letters='abcdefghijklmnopqrstuvwxyz'
4873as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4874as_cr_Letters=$as_cr_letters$as_cr_LETTERS
4875as_cr_digits='0123456789'
4876as_cr_alnum=$as_cr_Letters$as_cr_digits
4877
4878ECHO_C= ECHO_N= ECHO_T=
4879case `echo -n x` in #(((((
4880-n*)
4881 case `echo 'xy\c'` in
4882 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
4883 xy) ECHO_C='\c';;
4884 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
4885 ECHO_T=' ';;
4886 esac;;
4887*)
4888 ECHO_N='-n';;
4889esac
4890
4891rm -f conf$$ conf$$.exe conf$$.file
4892if test -d conf$$.dir; then
4893 rm -f conf$$.dir/conf$$.file
4894else
4895 rm -f conf$$.dir
4896 mkdir conf$$.dir 2>/dev/null
4897fi
4898if (echo >conf$$.file) 2>/dev/null; then
4899 if ln -s conf$$.file conf$$ 2>/dev/null; then
4900 as_ln_s='ln -s'
4901 # ... but there are two gotchas:
4902 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
4903 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
4904 # In both cases, we have to default to `cp -pR'.
4905 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
4906 as_ln_s='cp -pR'
4907 elif ln conf$$.file conf$$ 2>/dev/null; then
4908 as_ln_s=ln
4909 else
4910 as_ln_s='cp -pR'
4911 fi
4912else
4913 as_ln_s='cp -pR'
4914fi
4915rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
4916rmdir conf$$.dir 2>/dev/null
4917
4918
4919# as_fn_mkdir_p
4920# -------------
4921# Create "$as_dir" as a directory, including parents if necessary.
4922as_fn_mkdir_p ()
4923{
4924
4925 case $as_dir in #(
4926 -*) as_dir=./$as_dir;;
4927 esac
4928 test -d "$as_dir" || eval $as_mkdir_p || {
4929 as_dirs=
4930 while :; do
4931 case $as_dir in #(
4932 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
4933 *) as_qdir=$as_dir;;
4934 esac
4935 as_dirs="'$as_qdir' $as_dirs"
4936 as_dir=`$as_dirname -- "$as_dir" ||
4937$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
4938 X"$as_dir" : 'X\(//\)[^/]' \| \
4939 X"$as_dir" : 'X\(//\)$' \| \
4940 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
4941$as_echo X"$as_dir" |
4942 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
4943 s//\1/
4944 q
4945 }
4946 /^X\(\/\/\)[^/].*/{
4947 s//\1/
4948 q
4949 }
4950 /^X\(\/\/\)$/{
4951 s//\1/
4952 q
4953 }
4954 /^X\(\/\).*/{
4955 s//\1/
4956 q
4957 }
4958 s/.*/./; q'`
4959 test -d "$as_dir" && break
4960 done
4961 test -z "$as_dirs" || eval "mkdir $as_dirs"
4962 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
4963
4964
4965} # as_fn_mkdir_p
4966if mkdir -p . 2>/dev/null; then
4967 as_mkdir_p='mkdir -p "$as_dir"'
4968else
4969 test -d ./-p && rmdir ./-p
4970 as_mkdir_p=false
4971fi
4972
4973
4974# as_fn_executable_p FILE
4975# -----------------------
4976# Test if FILE is an executable regular file.
4977as_fn_executable_p ()
4978{
4979 test -f "$1" && test -x "$1"
4980} # as_fn_executable_p
4981as_test_x='test -x'
4982as_executable_p=as_fn_executable_p
4983
4984# Sed expression to map a string onto a valid CPP name.
4985as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
4986
4987# Sed expression to map a string onto a valid variable name.
4988as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
4989
4990
4991exec 6>&1
4992## ----------------------------------- ##
4993## Main body of $CONFIG_STATUS script. ##
4994## ----------------------------------- ##
4995_ASEOF
4996test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
4997
4998cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
4999# Save the log message, to keep $0 and so on meaningful, and to
5000# report actual input values of CONFIG_FILES etc. instead of their
5001# values after options handling.
5002ac_log="
5003This file was extended by puzzles $as_me 6.66, which was
5004generated by GNU Autoconf 2.69. Invocation command line was
5005
5006 CONFIG_FILES = $CONFIG_FILES
5007 CONFIG_HEADERS = $CONFIG_HEADERS
5008 CONFIG_LINKS = $CONFIG_LINKS
5009 CONFIG_COMMANDS = $CONFIG_COMMANDS
5010 $ $0 $@
5011
5012on `(hostname || uname -n) 2>/dev/null | sed 1q`
5013"
5014
5015_ACEOF
5016
5017case $ac_config_files in *"
5018"*) set x $ac_config_files; shift; ac_config_files=$*;;
5019esac
5020
5021
5022
5023cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5024# Files that config.status was made for.
5025config_files="$ac_config_files"
5026config_commands="$ac_config_commands"
5027
5028_ACEOF
5029
5030cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5031ac_cs_usage="\
5032\`$as_me' instantiates files and other configuration actions
5033from templates according to the current configuration. Unless the files
5034and actions are specified as TAGs, all are instantiated by default.
5035
5036Usage: $0 [OPTION]... [TAG]...
5037
5038 -h, --help print this help, then exit
5039 -V, --version print version number and configuration settings, then exit
5040 --config print configuration, then exit
5041 -q, --quiet, --silent
5042 do not print progress messages
5043 -d, --debug don't remove temporary files
5044 --recheck update $as_me by reconfiguring in the same conditions
5045 --file=FILE[:TEMPLATE]
5046 instantiate the configuration file FILE
5047
5048Configuration files:
5049$config_files
5050
5051Configuration commands:
5052$config_commands
5053
5054Report bugs to <anakin@pobox.com>."
5055
5056_ACEOF
5057cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5058ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
5059ac_cs_version="\\
5060puzzles config.status 6.66
5061configured by $0, generated by GNU Autoconf 2.69,
5062 with options \\"\$ac_cs_config\\"
5063
5064Copyright (C) 2012 Free Software Foundation, Inc.
5065This config.status script is free software; the Free Software Foundation
5066gives unlimited permission to copy, distribute and modify it."
5067
5068ac_pwd='$ac_pwd'
5069srcdir='$srcdir'
5070INSTALL='$INSTALL'
5071MKDIR_P='$MKDIR_P'
5072AWK='$AWK'
5073test -n "\$AWK" || AWK=awk
5074_ACEOF
5075
5076cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5077# The default lists apply if the user does not specify any file.
5078ac_need_defaults=:
5079while test $# != 0
5080do
5081 case $1 in
5082 --*=?*)
5083 ac_option=`expr "X$1" : 'X\([^=]*\)='`
5084 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
5085 ac_shift=:
5086 ;;
5087 --*=)
5088 ac_option=`expr "X$1" : 'X\([^=]*\)='`
5089 ac_optarg=
5090 ac_shift=:
5091 ;;
5092 *)
5093 ac_option=$1
5094 ac_optarg=$2
5095 ac_shift=shift
5096 ;;
5097 esac
5098
5099 case $ac_option in
5100 # Handling of the options.
5101 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
5102 ac_cs_recheck=: ;;
5103 --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
5104 $as_echo "$ac_cs_version"; exit ;;
5105 --config | --confi | --conf | --con | --co | --c )
5106 $as_echo "$ac_cs_config"; exit ;;
5107 --debug | --debu | --deb | --de | --d | -d )
5108 debug=: ;;
5109 --file | --fil | --fi | --f )
5110 $ac_shift
5111 case $ac_optarg in
5112 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
5113 '') as_fn_error $? "missing file argument" ;;
5114 esac
5115 as_fn_append CONFIG_FILES " '$ac_optarg'"
5116 ac_need_defaults=false;;
5117 --he | --h | --help | --hel | -h )
5118 $as_echo "$ac_cs_usage"; exit ;;
5119 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
5120 | -silent | --silent | --silen | --sile | --sil | --si | --s)
5121 ac_cs_silent=: ;;
5122
5123 # This is an error.
5124 -*) as_fn_error $? "unrecognized option: \`$1'
5125Try \`$0 --help' for more information." ;;
5126
5127 *) as_fn_append ac_config_targets " $1"
5128 ac_need_defaults=false ;;
5129
5130 esac
5131 shift
5132done
5133
5134ac_configure_extra_args=
5135
5136if $ac_cs_silent; then
5137 exec 6>/dev/null
5138 ac_configure_extra_args="$ac_configure_extra_args --silent"
5139fi
5140
5141_ACEOF
5142cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5143if \$ac_cs_recheck; then
5144 set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
5145 shift
5146 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
5147 CONFIG_SHELL='$SHELL'
5148 export CONFIG_SHELL
5149 exec "\$@"
5150fi
5151
5152_ACEOF
5153cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5154exec 5>>config.log
5155{
5156 echo
5157 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
5158## Running $as_me. ##
5159_ASBOX
5160 $as_echo "$ac_log"
5161} >&5
5162
5163_ACEOF
5164cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5165#
5166# INIT-COMMANDS
5167#
5168AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
5169
5170_ACEOF
5171
5172cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5173
5174# Handling of arguments.
5175for ac_config_target in $ac_config_targets
5176do
5177 case $ac_config_target in
5178 "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
5179 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
5180
5181 *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
5182 esac
5183done
5184
5185
5186# If the user did not use the arguments to specify the items to instantiate,
5187# then the envvar interface is used. Set only those that are not.
5188# We use the long form for the default assignment because of an extremely
5189# bizarre bug on SunOS 4.1.3.
5190if $ac_need_defaults; then
5191 test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
5192 test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
5193fi
5194
5195# Have a temporary directory for convenience. Make it in the build tree
5196# simply because there is no reason against having it here, and in addition,
5197# creating and moving files from /tmp can sometimes cause problems.
5198# Hook for its removal unless debugging.
5199# Note that there is a small window in which the directory will not be cleaned:
5200# after its creation but before its name has been assigned to `$tmp'.
5201$debug ||
5202{
5203 tmp= ac_tmp=
5204 trap 'exit_status=$?
5205 : "${ac_tmp:=$tmp}"
5206 { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
5207' 0
5208 trap 'as_fn_exit 1' 1 2 13 15
5209}
5210# Create a (secure) tmp directory for tmp files.
5211
5212{
5213 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
5214 test -d "$tmp"
5215} ||
5216{
5217 tmp=./conf$$-$RANDOM
5218 (umask 077 && mkdir "$tmp")
5219} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
5220ac_tmp=$tmp
5221
5222# Set up the scripts for CONFIG_FILES section.
5223# No need to generate them if there are no CONFIG_FILES.
5224# This happens for instance with `./config.status config.h'.
5225if test -n "$CONFIG_FILES"; then
5226
5227
5228ac_cr=`echo X | tr X '\015'`
5229# On cygwin, bash can eat \r inside `` if the user requested igncr.
5230# But we know of no other shell where ac_cr would be empty at this
5231# point, so we can use a bashism as a fallback.
5232if test "x$ac_cr" = x; then
5233 eval ac_cr=\$\'\\r\'
5234fi
5235ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
5236if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
5237 ac_cs_awk_cr='\\r'
5238else
5239 ac_cs_awk_cr=$ac_cr
5240fi
5241
5242echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
5243_ACEOF
5244
5245
5246{
5247 echo "cat >conf$$subs.awk <<_ACEOF" &&
5248 echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
5249 echo "_ACEOF"
5250} >conf$$subs.sh ||
5251 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
5252ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
5253ac_delim='%!_!# '
5254for ac_last_try in false false false false false :; do
5255 . ./conf$$subs.sh ||
5256 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
5257
5258 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
5259 if test $ac_delim_n = $ac_delim_num; then
5260 break
5261 elif $ac_last_try; then
5262 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
5263 else
5264 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
5265 fi
5266done
5267rm -f conf$$subs.sh
5268
5269cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5270cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
5271_ACEOF
5272sed -n '
5273h
5274s/^/S["/; s/!.*/"]=/
5275p
5276g
5277s/^[^!]*!//
5278:repl
5279t repl
5280s/'"$ac_delim"'$//
5281t delim
5282:nl
5283h
5284s/\(.\{148\}\)..*/\1/
5285t more1
5286s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
5287p
5288n
5289b repl
5290:more1
5291s/["\\]/\\&/g; s/^/"/; s/$/"\\/
5292p
5293g
5294s/.\{148\}//
5295t nl
5296:delim
5297h
5298s/\(.\{148\}\)..*/\1/
5299t more2
5300s/["\\]/\\&/g; s/^/"/; s/$/"/
5301p
5302b
5303:more2
5304s/["\\]/\\&/g; s/^/"/; s/$/"\\/
5305p
5306g
5307s/.\{148\}//
5308t delim
5309' <conf$$subs.awk | sed '
5310/^[^""]/{
5311 N
5312 s/\n//
5313}
5314' >>$CONFIG_STATUS || ac_write_fail=1
5315rm -f conf$$subs.awk
5316cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5317_ACAWK
5318cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
5319 for (key in S) S_is_set[key] = 1
5320 FS = ""
5321
5322}
5323{
5324 line = $ 0
5325 nfields = split(line, field, "@")
5326 substed = 0
5327 len = length(field[1])
5328 for (i = 2; i < nfields; i++) {
5329 key = field[i]
5330 keylen = length(key)
5331 if (S_is_set[key]) {
5332 value = S[key]
5333 line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
5334 len += length(value) + length(field[++i])
5335 substed = 1
5336 } else
5337 len += 1 + keylen
5338 }
5339
5340 print line
5341}
5342
5343_ACAWK
5344_ACEOF
5345cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5346if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
5347 sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
5348else
5349 cat
5350fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
5351 || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
5352_ACEOF
5353
5354# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
5355# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
5356# trailing colons and then remove the whole line if VPATH becomes empty
5357# (actually we leave an empty line to preserve line numbers).
5358if test "x$srcdir" = x.; then
5359 ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
5360h
5361s///
5362s/^/:/
5363s/[ ]*$/:/
5364s/:\$(srcdir):/:/g
5365s/:\${srcdir}:/:/g
5366s/:@srcdir@:/:/g
5367s/^:*//
5368s/:*$//
5369x
5370s/\(=[ ]*\).*/\1/
5371G
5372s/\n//
5373s/^[^=]*=[ ]*$//
5374}'
5375fi
5376
5377cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5378fi # test -n "$CONFIG_FILES"
5379
5380
5381eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
5382shift
5383for ac_tag
5384do
5385 case $ac_tag in
5386 :[FHLC]) ac_mode=$ac_tag; continue;;
5387 esac
5388 case $ac_mode$ac_tag in
5389 :[FHL]*:*);;
5390 :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
5391 :[FH]-) ac_tag=-:-;;
5392 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
5393 esac
5394 ac_save_IFS=$IFS
5395 IFS=:
5396 set x $ac_tag
5397 IFS=$ac_save_IFS
5398 shift
5399 ac_file=$1
5400 shift
5401
5402 case $ac_mode in
5403 :L) ac_source=$1;;
5404 :[FH])
5405 ac_file_inputs=
5406 for ac_f
5407 do
5408 case $ac_f in
5409 -) ac_f="$ac_tmp/stdin";;
5410 *) # Look for the file first in the build tree, then in the source tree
5411 # (if the path is not absolute). The absolute path cannot be DOS-style,
5412 # because $ac_f cannot contain `:'.
5413 test -f "$ac_f" ||
5414 case $ac_f in
5415 [\\/$]*) false;;
5416 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
5417 esac ||
5418 as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
5419 esac
5420 case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
5421 as_fn_append ac_file_inputs " '$ac_f'"
5422 done
5423
5424 # Let's still pretend it is `configure' which instantiates (i.e., don't
5425 # use $as_me), people would be surprised to read:
5426 # /* config.h. Generated by config.status. */
5427 configure_input='Generated from '`
5428 $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
5429 `' by configure.'
5430 if test x"$ac_file" != x-; then
5431 configure_input="$ac_file. $configure_input"
5432 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
5433$as_echo "$as_me: creating $ac_file" >&6;}
5434 fi
5435 # Neutralize special characters interpreted by sed in replacement strings.
5436 case $configure_input in #(
5437 *\&* | *\|* | *\\* )
5438 ac_sed_conf_input=`$as_echo "$configure_input" |
5439 sed 's/[\\\\&|]/\\\\&/g'`;; #(
5440 *) ac_sed_conf_input=$configure_input;;
5441 esac
5442
5443 case $ac_tag in
5444 *:-:* | *:-) cat >"$ac_tmp/stdin" \
5445 || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
5446 esac
5447 ;;
5448 esac
5449
5450 ac_dir=`$as_dirname -- "$ac_file" ||
5451$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
5452 X"$ac_file" : 'X\(//\)[^/]' \| \
5453 X"$ac_file" : 'X\(//\)$' \| \
5454 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
5455$as_echo X"$ac_file" |
5456 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
5457 s//\1/
5458 q
5459 }
5460 /^X\(\/\/\)[^/].*/{
5461 s//\1/
5462 q
5463 }
5464 /^X\(\/\/\)$/{
5465 s//\1/
5466 q
5467 }
5468 /^X\(\/\).*/{
5469 s//\1/
5470 q
5471 }
5472 s/.*/./; q'`
5473 as_dir="$ac_dir"; as_fn_mkdir_p
5474 ac_builddir=.
5475
5476case "$ac_dir" in
5477.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
5478*)
5479 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
5480 # A ".." for each directory in $ac_dir_suffix.
5481 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
5482 case $ac_top_builddir_sub in
5483 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
5484 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
5485 esac ;;
5486esac
5487ac_abs_top_builddir=$ac_pwd
5488ac_abs_builddir=$ac_pwd$ac_dir_suffix
5489# for backward compatibility:
5490ac_top_builddir=$ac_top_build_prefix
5491
5492case $srcdir in
5493 .) # We are building in place.
5494 ac_srcdir=.
5495 ac_top_srcdir=$ac_top_builddir_sub
5496 ac_abs_top_srcdir=$ac_pwd ;;
5497 [\\/]* | ?:[\\/]* ) # Absolute name.
5498 ac_srcdir=$srcdir$ac_dir_suffix;
5499 ac_top_srcdir=$srcdir
5500 ac_abs_top_srcdir=$srcdir ;;
5501 *) # Relative name.
5502 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
5503 ac_top_srcdir=$ac_top_build_prefix$srcdir
5504 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
5505esac
5506ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
5507
5508
5509 case $ac_mode in
5510 :F)
5511 #
5512 # CONFIG_FILE
5513 #
5514
5515 case $INSTALL in
5516 [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
5517 *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
5518 esac
5519 ac_MKDIR_P=$MKDIR_P
5520 case $MKDIR_P in
5521 [\\/$]* | ?:[\\/]* ) ;;
5522 */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
5523 esac
5524_ACEOF
5525
5526cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5527# If the template does not know about datarootdir, expand it.
5528# FIXME: This hack should be removed a few years after 2.60.
5529ac_datarootdir_hack=; ac_datarootdir_seen=
5530ac_sed_dataroot='
5531/datarootdir/ {
5532 p
5533 q
5534}
5535/@datadir@/p
5536/@docdir@/p
5537/@infodir@/p
5538/@localedir@/p
5539/@mandir@/p'
5540case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
5541*datarootdir*) ac_datarootdir_seen=yes;;
5542*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
5543 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
5544$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
5545_ACEOF
5546cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5547 ac_datarootdir_hack='
5548 s&@datadir@&$datadir&g
5549 s&@docdir@&$docdir&g
5550 s&@infodir@&$infodir&g
5551 s&@localedir@&$localedir&g
5552 s&@mandir@&$mandir&g
5553 s&\\\${datarootdir}&$datarootdir&g' ;;
5554esac
5555_ACEOF
5556
5557# Neutralize VPATH when `$srcdir' = `.'.
5558# Shell code in configure.ac might set extrasub.
5559# FIXME: do we really want to maintain this feature?
5560cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
5561ac_sed_extra="$ac_vpsub
5562$extrasub
5563_ACEOF
5564cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
5565:t
5566/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
5567s|@configure_input@|$ac_sed_conf_input|;t t
5568s&@top_builddir@&$ac_top_builddir_sub&;t t
5569s&@top_build_prefix@&$ac_top_build_prefix&;t t
5570s&@srcdir@&$ac_srcdir&;t t
5571s&@abs_srcdir@&$ac_abs_srcdir&;t t
5572s&@top_srcdir@&$ac_top_srcdir&;t t
5573s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
5574s&@builddir@&$ac_builddir&;t t
5575s&@abs_builddir@&$ac_abs_builddir&;t t
5576s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
5577s&@INSTALL@&$ac_INSTALL&;t t
5578s&@MKDIR_P@&$ac_MKDIR_P&;t t
5579$ac_datarootdir_hack
5580"
5581eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
5582 >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
5583
5584test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
5585 { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
5586 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
5587 "$ac_tmp/out"`; test -z "$ac_out"; } &&
5588 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
5589which seems to be undefined. Please make sure it is defined" >&5
5590$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
5591which seems to be undefined. Please make sure it is defined" >&2;}
5592
5593 rm -f "$ac_tmp/stdin"
5594 case $ac_file in
5595 -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
5596 *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
5597 esac \
5598 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
5599 ;;
5600
5601
5602 :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
5603$as_echo "$as_me: executing $ac_file commands" >&6;}
5604 ;;
5605 esac
5606
5607
5608 case $ac_file$ac_mode in
5609 "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
5610 # Older Autoconf quotes --file arguments for eval, but not when files
5611 # are listed without --file. Let's play safe and only enable the eval
5612 # if we detect the quoting.
5613 case $CONFIG_FILES in
5614 *\'*) eval set x "$CONFIG_FILES" ;;
5615 *) set x $CONFIG_FILES ;;
5616 esac
5617 shift
5618 for mf
5619 do
5620 # Strip MF so we end up with the name of the file.
5621 mf=`echo "$mf" | sed -e 's/:.*$//'`
5622 # Check whether this is an Automake generated Makefile or not.
5623 # We used to match only the files named 'Makefile.in', but
5624 # some people rename them; so instead we look at the file content.
5625 # Grep'ing the first line is not enough: some people post-process
5626 # each Makefile.in and add a new line on top of each file to say so.
5627 # Grep'ing the whole file is not good either: AIX grep has a line
5628 # limit of 2048, but all sed's we know have understand at least 4000.
5629 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
5630 dirpart=`$as_dirname -- "$mf" ||
5631$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
5632 X"$mf" : 'X\(//\)[^/]' \| \
5633 X"$mf" : 'X\(//\)$' \| \
5634 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
5635$as_echo X"$mf" |
5636 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
5637 s//\1/
5638 q
5639 }
5640 /^X\(\/\/\)[^/].*/{
5641 s//\1/
5642 q
5643 }
5644 /^X\(\/\/\)$/{
5645 s//\1/
5646 q
5647 }
5648 /^X\(\/\).*/{
5649 s//\1/
5650 q
5651 }
5652 s/.*/./; q'`
5653 else
5654 continue
5655 fi
5656 # Extract the definition of DEPDIR, am__include, and am__quote
5657 # from the Makefile without running 'make'.
5658 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
5659 test -z "$DEPDIR" && continue
5660 am__include=`sed -n 's/^am__include = //p' < "$mf"`
5661 test -z "$am__include" && continue
5662 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
5663 # Find all dependency output files, they are included files with
5664 # $(DEPDIR) in their names. We invoke sed twice because it is the
5665 # simplest approach to changing $(DEPDIR) to its actual value in the
5666 # expansion.
5667 for file in `sed -n "
5668 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
5669 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
5670 # Make sure the directory exists.
5671 test -f "$dirpart/$file" && continue
5672 fdir=`$as_dirname -- "$file" ||
5673$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
5674 X"$file" : 'X\(//\)[^/]' \| \
5675 X"$file" : 'X\(//\)$' \| \
5676 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
5677$as_echo X"$file" |
5678 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
5679 s//\1/
5680 q
5681 }
5682 /^X\(\/\/\)[^/].*/{
5683 s//\1/
5684 q
5685 }
5686 /^X\(\/\/\)$/{
5687 s//\1/
5688 q
5689 }
5690 /^X\(\/\).*/{
5691 s//\1/
5692 q
5693 }
5694 s/.*/./; q'`
5695 as_dir=$dirpart/$fdir; as_fn_mkdir_p
5696 # echo "creating $dirpart/$file"
5697 echo '# dummy' > "$dirpart/$file"
5698 done
5699 done
5700}
5701 ;;
5702
5703 esac
5704done # for ac_tag
5705
5706
5707as_fn_exit 0
5708_ACEOF
5709ac_clean_files=$ac_clean_files_save
5710
5711test $ac_write_fail = 0 ||
5712 as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
5713
5714
5715# configure is writing to config.log, and then calls config.status.
5716# config.status does its own redirection, appending to config.log.
5717# Unfortunately, on DOS this fails, as config.log is still kept open
5718# by configure, so config.status won't be able to write to it; its
5719# output is simply discarded. So we exec the FD to /dev/null,
5720# effectively closing config.log, so it can be properly (re)opened and
5721# appended to by config.status. When coming back to configure, we
5722# need to make the FD available again.
5723if test "$no_create" != yes; then
5724 ac_cs_success=:
5725 ac_config_status_args=
5726 test "$silent" = yes &&
5727 ac_config_status_args="$ac_config_status_args --quiet"
5728 exec 5>/dev/null
5729 $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
5730 exec 5>>config.log
5731 # Use ||, not &&, to avoid exiting from the if with $? = 1, which
5732 # would make configure fail if this is the last instruction.
5733 $ac_cs_success || as_fn_exit 1
5734fi
5735if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
5736 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
5737$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
5738fi
5739
diff --git a/apps/plugins/puzzles/src/depcomp b/apps/plugins/puzzles/src/depcomp
new file mode 100755
index 0000000000..b39f98f9ae
--- /dev/null
+++ b/apps/plugins/puzzles/src/depcomp
@@ -0,0 +1,791 @@
1#! /bin/sh
2# depcomp - compile a program generating dependencies as side-effects
3
4scriptversion=2016-01-11.22; # UTC
5
6# Copyright (C) 1999-2017 Free Software Foundation, Inc.
7
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17
18# You should have received a copy of the GNU General Public License
19# along with this program. If not, see <http://www.gnu.org/licenses/>.
20
21# As a special exception to the GNU General Public License, if you
22# distribute this file as part of a program that contains a
23# configuration script generated by Autoconf, you may include it under
24# the same distribution terms that you use for the rest of that program.
25
26# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27
28case $1 in
29 '')
30 echo "$0: No command. Try '$0 --help' for more information." 1>&2
31 exit 1;
32 ;;
33 -h | --h*)
34 cat <<\EOF
35Usage: depcomp [--help] [--version] PROGRAM [ARGS]
36
37Run PROGRAMS ARGS to compile a file, generating dependencies
38as side-effects.
39
40Environment variables:
41 depmode Dependency tracking mode.
42 source Source file read by 'PROGRAMS ARGS'.
43 object Object file output by 'PROGRAMS ARGS'.
44 DEPDIR directory where to store dependencies.
45 depfile Dependency file to output.
46 tmpdepfile Temporary file to use when outputting dependencies.
47 libtool Whether libtool is used (yes/no).
48
49Report bugs to <bug-automake@gnu.org>.
50EOF
51 exit $?
52 ;;
53 -v | --v*)
54 echo "depcomp $scriptversion"
55 exit $?
56 ;;
57esac
58
59# Get the directory component of the given path, and save it in the
60# global variables '$dir'. Note that this directory component will
61# be either empty or ending with a '/' character. This is deliberate.
62set_dir_from ()
63{
64 case $1 in
65 */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
66 *) dir=;;
67 esac
68}
69
70# Get the suffix-stripped basename of the given path, and save it the
71# global variable '$base'.
72set_base_from ()
73{
74 base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
75}
76
77# If no dependency file was actually created by the compiler invocation,
78# we still have to create a dummy depfile, to avoid errors with the
79# Makefile "include basename.Plo" scheme.
80make_dummy_depfile ()
81{
82 echo "#dummy" > "$depfile"
83}
84
85# Factor out some common post-processing of the generated depfile.
86# Requires the auxiliary global variable '$tmpdepfile' to be set.
87aix_post_process_depfile ()
88{
89 # If the compiler actually managed to produce a dependency file,
90 # post-process it.
91 if test -f "$tmpdepfile"; then
92 # Each line is of the form 'foo.o: dependency.h'.
93 # Do two passes, one to just change these to
94 # $object: dependency.h
95 # and one to simply output
96 # dependency.h:
97 # which is needed to avoid the deleted-header problem.
98 { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
99 sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
100 } > "$depfile"
101 rm -f "$tmpdepfile"
102 else
103 make_dummy_depfile
104 fi
105}
106
107# A tabulation character.
108tab=' '
109# A newline character.
110nl='
111'
112# Character ranges might be problematic outside the C locale.
113# These definitions help.
114upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
115lower=abcdefghijklmnopqrstuvwxyz
116digits=0123456789
117alpha=${upper}${lower}
118
119if test -z "$depmode" || test -z "$source" || test -z "$object"; then
120 echo "depcomp: Variables source, object and depmode must be set" 1>&2
121 exit 1
122fi
123
124# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
125depfile=${depfile-`echo "$object" |
126 sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
127tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
128
129rm -f "$tmpdepfile"
130
131# Avoid interferences from the environment.
132gccflag= dashmflag=
133
134# Some modes work just like other modes, but use different flags. We
135# parameterize here, but still list the modes in the big case below,
136# to make depend.m4 easier to write. Note that we *cannot* use a case
137# here, because this file can only contain one case statement.
138if test "$depmode" = hp; then
139 # HP compiler uses -M and no extra arg.
140 gccflag=-M
141 depmode=gcc
142fi
143
144if test "$depmode" = dashXmstdout; then
145 # This is just like dashmstdout with a different argument.
146 dashmflag=-xM
147 depmode=dashmstdout
148fi
149
150cygpath_u="cygpath -u -f -"
151if test "$depmode" = msvcmsys; then
152 # This is just like msvisualcpp but w/o cygpath translation.
153 # Just convert the backslash-escaped backslashes to single forward
154 # slashes to satisfy depend.m4
155 cygpath_u='sed s,\\\\,/,g'
156 depmode=msvisualcpp
157fi
158
159if test "$depmode" = msvc7msys; then
160 # This is just like msvc7 but w/o cygpath translation.
161 # Just convert the backslash-escaped backslashes to single forward
162 # slashes to satisfy depend.m4
163 cygpath_u='sed s,\\\\,/,g'
164 depmode=msvc7
165fi
166
167if test "$depmode" = xlc; then
168 # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
169 gccflag=-qmakedep=gcc,-MF
170 depmode=gcc
171fi
172
173case "$depmode" in
174gcc3)
175## gcc 3 implements dependency tracking that does exactly what
176## we want. Yay! Note: for some reason libtool 1.4 doesn't like
177## it if -MD -MP comes after the -MF stuff. Hmm.
178## Unfortunately, FreeBSD c89 acceptance of flags depends upon
179## the command line argument order; so add the flags where they
180## appear in depend2.am. Note that the slowdown incurred here
181## affects only configure: in makefiles, %FASTDEP% shortcuts this.
182 for arg
183 do
184 case $arg in
185 -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
186 *) set fnord "$@" "$arg" ;;
187 esac
188 shift # fnord
189 shift # $arg
190 done
191 "$@"
192 stat=$?
193 if test $stat -ne 0; then
194 rm -f "$tmpdepfile"
195 exit $stat
196 fi
197 mv "$tmpdepfile" "$depfile"
198 ;;
199
200gcc)
201## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
202## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
203## (see the conditional assignment to $gccflag above).
204## There are various ways to get dependency output from gcc. Here's
205## why we pick this rather obscure method:
206## - Don't want to use -MD because we'd like the dependencies to end
207## up in a subdir. Having to rename by hand is ugly.
208## (We might end up doing this anyway to support other compilers.)
209## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
210## -MM, not -M (despite what the docs say). Also, it might not be
211## supported by the other compilers which use the 'gcc' depmode.
212## - Using -M directly means running the compiler twice (even worse
213## than renaming).
214 if test -z "$gccflag"; then
215 gccflag=-MD,
216 fi
217 "$@" -Wp,"$gccflag$tmpdepfile"
218 stat=$?
219 if test $stat -ne 0; then
220 rm -f "$tmpdepfile"
221 exit $stat
222 fi
223 rm -f "$depfile"
224 echo "$object : \\" > "$depfile"
225 # The second -e expression handles DOS-style file names with drive
226 # letters.
227 sed -e 's/^[^:]*: / /' \
228 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
229## This next piece of magic avoids the "deleted header file" problem.
230## The problem is that when a header file which appears in a .P file
231## is deleted, the dependency causes make to die (because there is
232## typically no way to rebuild the header). We avoid this by adding
233## dummy dependencies for each header file. Too bad gcc doesn't do
234## this for us directly.
235## Some versions of gcc put a space before the ':'. On the theory
236## that the space means something, we add a space to the output as
237## well. hp depmode also adds that space, but also prefixes the VPATH
238## to the object. Take care to not repeat it in the output.
239## Some versions of the HPUX 10.20 sed can't process this invocation
240## correctly. Breaking it into two sed invocations is a workaround.
241 tr ' ' "$nl" < "$tmpdepfile" \
242 | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243 | sed -e 's/$/ :/' >> "$depfile"
244 rm -f "$tmpdepfile"
245 ;;
246
247hp)
248 # This case exists only to let depend.m4 do its work. It works by
249 # looking at the text of this script. This case will never be run,
250 # since it is checked for above.
251 exit 1
252 ;;
253
254sgi)
255 if test "$libtool" = yes; then
256 "$@" "-Wp,-MDupdate,$tmpdepfile"
257 else
258 "$@" -MDupdate "$tmpdepfile"
259 fi
260 stat=$?
261 if test $stat -ne 0; then
262 rm -f "$tmpdepfile"
263 exit $stat
264 fi
265 rm -f "$depfile"
266
267 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
268 echo "$object : \\" > "$depfile"
269 # Clip off the initial element (the dependent). Don't try to be
270 # clever and replace this with sed code, as IRIX sed won't handle
271 # lines with more than a fixed number of characters (4096 in
272 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
273 # the IRIX cc adds comments like '#:fec' to the end of the
274 # dependency line.
275 tr ' ' "$nl" < "$tmpdepfile" \
276 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277 | tr "$nl" ' ' >> "$depfile"
278 echo >> "$depfile"
279 # The second pass generates a dummy entry for each header file.
280 tr ' ' "$nl" < "$tmpdepfile" \
281 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282 >> "$depfile"
283 else
284 make_dummy_depfile
285 fi
286 rm -f "$tmpdepfile"
287 ;;
288
289xlc)
290 # This case exists only to let depend.m4 do its work. It works by
291 # looking at the text of this script. This case will never be run,
292 # since it is checked for above.
293 exit 1
294 ;;
295
296aix)
297 # The C for AIX Compiler uses -M and outputs the dependencies
298 # in a .u file. In older versions, this file always lives in the
299 # current directory. Also, the AIX compiler puts '$object:' at the
300 # start of each line; $object doesn't have directory information.
301 # Version 6 uses the directory in both cases.
302 set_dir_from "$object"
303 set_base_from "$object"
304 if test "$libtool" = yes; then
305 tmpdepfile1=$dir$base.u
306 tmpdepfile2=$base.u
307 tmpdepfile3=$dir.libs/$base.u
308 "$@" -Wc,-M
309 else
310 tmpdepfile1=$dir$base.u
311 tmpdepfile2=$dir$base.u
312 tmpdepfile3=$dir$base.u
313 "$@" -M
314 fi
315 stat=$?
316 if test $stat -ne 0; then
317 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318 exit $stat
319 fi
320
321 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
322 do
323 test -f "$tmpdepfile" && break
324 done
325 aix_post_process_depfile
326 ;;
327
328tcc)
329 # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
330 # FIXME: That version still under development at the moment of writing.
331 # Make that this statement remains true also for stable, released
332 # versions.
333 # It will wrap lines (doesn't matter whether long or short) with a
334 # trailing '\', as in:
335 #
336 # foo.o : \
337 # foo.c \
338 # foo.h \
339 #
340 # It will put a trailing '\' even on the last line, and will use leading
341 # spaces rather than leading tabs (at least since its commit 0394caf7
342 # "Emit spaces for -MD").
343 "$@" -MD -MF "$tmpdepfile"
344 stat=$?
345 if test $stat -ne 0; then
346 rm -f "$tmpdepfile"
347 exit $stat
348 fi
349 rm -f "$depfile"
350 # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
351 # We have to change lines of the first kind to '$object: \'.
352 sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
353 # And for each line of the second kind, we have to emit a 'dep.h:'
354 # dummy dependency, to avoid the deleted-header problem.
355 sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
356 rm -f "$tmpdepfile"
357 ;;
358
359## The order of this option in the case statement is important, since the
360## shell code in configure will try each of these formats in the order
361## listed in this file. A plain '-MD' option would be understood by many
362## compilers, so we must ensure this comes after the gcc and icc options.
363pgcc)
364 # Portland's C compiler understands '-MD'.
365 # Will always output deps to 'file.d' where file is the root name of the
366 # source file under compilation, even if file resides in a subdirectory.
367 # The object file name does not affect the name of the '.d' file.
368 # pgcc 10.2 will output
369 # foo.o: sub/foo.c sub/foo.h
370 # and will wrap long lines using '\' :
371 # foo.o: sub/foo.c ... \
372 # sub/foo.h ... \
373 # ...
374 set_dir_from "$object"
375 # Use the source, not the object, to determine the base name, since
376 # that's sadly what pgcc will do too.
377 set_base_from "$source"
378 tmpdepfile=$base.d
379
380 # For projects that build the same source file twice into different object
381 # files, the pgcc approach of using the *source* file root name can cause
382 # problems in parallel builds. Use a locking strategy to avoid stomping on
383 # the same $tmpdepfile.
384 lockdir=$base.d-lock
385 trap "
386 echo '$0: caught signal, cleaning up...' >&2
387 rmdir '$lockdir'
388 exit 1
389 " 1 2 13 15
390 numtries=100
391 i=$numtries
392 while test $i -gt 0; do
393 # mkdir is a portable test-and-set.
394 if mkdir "$lockdir" 2>/dev/null; then
395 # This process acquired the lock.
396 "$@" -MD
397 stat=$?
398 # Release the lock.
399 rmdir "$lockdir"
400 break
401 else
402 # If the lock is being held by a different process, wait
403 # until the winning process is done or we timeout.
404 while test -d "$lockdir" && test $i -gt 0; do
405 sleep 1
406 i=`expr $i - 1`
407 done
408 fi
409 i=`expr $i - 1`
410 done
411 trap - 1 2 13 15
412 if test $i -le 0; then
413 echo "$0: failed to acquire lock after $numtries attempts" >&2
414 echo "$0: check lockdir '$lockdir'" >&2
415 exit 1
416 fi
417
418 if test $stat -ne 0; then
419 rm -f "$tmpdepfile"
420 exit $stat
421 fi
422 rm -f "$depfile"
423 # Each line is of the form `foo.o: dependent.h',
424 # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
425 # Do two passes, one to just change these to
426 # `$object: dependent.h' and one to simply `dependent.h:'.
427 sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
428 # Some versions of the HPUX 10.20 sed can't process this invocation
429 # correctly. Breaking it into two sed invocations is a workaround.
430 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431 | sed -e 's/$/ :/' >> "$depfile"
432 rm -f "$tmpdepfile"
433 ;;
434
435hp2)
436 # The "hp" stanza above does not work with aCC (C++) and HP's ia64
437 # compilers, which have integrated preprocessors. The correct option
438 # to use with these is +Maked; it writes dependencies to a file named
439 # 'foo.d', which lands next to the object file, wherever that
440 # happens to be.
441 # Much of this is similar to the tru64 case; see comments there.
442 set_dir_from "$object"
443 set_base_from "$object"
444 if test "$libtool" = yes; then
445 tmpdepfile1=$dir$base.d
446 tmpdepfile2=$dir.libs/$base.d
447 "$@" -Wc,+Maked
448 else
449 tmpdepfile1=$dir$base.d
450 tmpdepfile2=$dir$base.d
451 "$@" +Maked
452 fi
453 stat=$?
454 if test $stat -ne 0; then
455 rm -f "$tmpdepfile1" "$tmpdepfile2"
456 exit $stat
457 fi
458
459 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
460 do
461 test -f "$tmpdepfile" && break
462 done
463 if test -f "$tmpdepfile"; then
464 sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465 # Add 'dependent.h:' lines.
466 sed -ne '2,${
467 s/^ *//
468 s/ \\*$//
469 s/$/:/
470 p
471 }' "$tmpdepfile" >> "$depfile"
472 else
473 make_dummy_depfile
474 fi
475 rm -f "$tmpdepfile" "$tmpdepfile2"
476 ;;
477
478tru64)
479 # The Tru64 compiler uses -MD to generate dependencies as a side
480 # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
481 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
482 # dependencies in 'foo.d' instead, so we check for that too.
483 # Subdirectories are respected.
484 set_dir_from "$object"
485 set_base_from "$object"
486
487 if test "$libtool" = yes; then
488 # Libtool generates 2 separate objects for the 2 libraries. These
489 # two compilations output dependencies in $dir.libs/$base.o.d and
490 # in $dir$base.o.d. We have to check for both files, because
491 # one of the two compilations can be disabled. We should prefer
492 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
493 # automatically cleaned when .libs/ is deleted, while ignoring
494 # the former would cause a distcleancheck panic.
495 tmpdepfile1=$dir$base.o.d # libtool 1.5
496 tmpdepfile2=$dir.libs/$base.o.d # Likewise.
497 tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
498 "$@" -Wc,-MD
499 else
500 tmpdepfile1=$dir$base.d
501 tmpdepfile2=$dir$base.d
502 tmpdepfile3=$dir$base.d
503 "$@" -MD
504 fi
505
506 stat=$?
507 if test $stat -ne 0; then
508 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
509 exit $stat
510 fi
511
512 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
513 do
514 test -f "$tmpdepfile" && break
515 done
516 # Same post-processing that is required for AIX mode.
517 aix_post_process_depfile
518 ;;
519
520msvc7)
521 if test "$libtool" = yes; then
522 showIncludes=-Wc,-showIncludes
523 else
524 showIncludes=-showIncludes
525 fi
526 "$@" $showIncludes > "$tmpdepfile"
527 stat=$?
528 grep -v '^Note: including file: ' "$tmpdepfile"
529 if test $stat -ne 0; then
530 rm -f "$tmpdepfile"
531 exit $stat
532 fi
533 rm -f "$depfile"
534 echo "$object : \\" > "$depfile"
535 # The first sed program below extracts the file names and escapes
536 # backslashes for cygpath. The second sed program outputs the file
537 # name when reading, but also accumulates all include files in the
538 # hold buffer in order to output them again at the end. This only
539 # works with sed implementations that can handle large buffers.
540 sed < "$tmpdepfile" -n '
541/^Note: including file: *\(.*\)/ {
542 s//\1/
543 s/\\/\\\\/g
544 p
545}' | $cygpath_u | sort -u | sed -n '
546s/ /\\ /g
547s/\(.*\)/'"$tab"'\1 \\/p
548s/.\(.*\) \\/\1:/
549H
550$ {
551 s/.*/'"$tab"'/
552 G
553 p
554}' >> "$depfile"
555 echo >> "$depfile" # make sure the fragment doesn't end with a backslash
556 rm -f "$tmpdepfile"
557 ;;
558
559msvc7msys)
560 # This case exists only to let depend.m4 do its work. It works by
561 # looking at the text of this script. This case will never be run,
562 # since it is checked for above.
563 exit 1
564 ;;
565
566#nosideeffect)
567 # This comment above is used by automake to tell side-effect
568 # dependency tracking mechanisms from slower ones.
569
570dashmstdout)
571 # Important note: in order to support this mode, a compiler *must*
572 # always write the preprocessed file to stdout, regardless of -o.
573 "$@" || exit $?
574
575 # Remove the call to Libtool.
576 if test "$libtool" = yes; then
577 while test "X$1" != 'X--mode=compile'; do
578 shift
579 done
580 shift
581 fi
582
583 # Remove '-o $object'.
584 IFS=" "
585 for arg
586 do
587 case $arg in
588 -o)
589 shift
590 ;;
591 $object)
592 shift
593 ;;
594 *)
595 set fnord "$@" "$arg"
596 shift # fnord
597 shift # $arg
598 ;;
599 esac
600 done
601
602 test -z "$dashmflag" && dashmflag=-M
603 # Require at least two characters before searching for ':'
604 # in the target name. This is to cope with DOS-style filenames:
605 # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
606 "$@" $dashmflag |
607 sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
608 rm -f "$depfile"
609 cat < "$tmpdepfile" > "$depfile"
610 # Some versions of the HPUX 10.20 sed can't process this sed invocation
611 # correctly. Breaking it into two sed invocations is a workaround.
612 tr ' ' "$nl" < "$tmpdepfile" \
613 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
614 | sed -e 's/$/ :/' >> "$depfile"
615 rm -f "$tmpdepfile"
616 ;;
617
618dashXmstdout)
619 # This case only exists to satisfy depend.m4. It is never actually
620 # run, as this mode is specially recognized in the preamble.
621 exit 1
622 ;;
623
624makedepend)
625 "$@" || exit $?
626 # Remove any Libtool call
627 if test "$libtool" = yes; then
628 while test "X$1" != 'X--mode=compile'; do
629 shift
630 done
631 shift
632 fi
633 # X makedepend
634 shift
635 cleared=no eat=no
636 for arg
637 do
638 case $cleared in
639 no)
640 set ""; shift
641 cleared=yes ;;
642 esac
643 if test $eat = yes; then
644 eat=no
645 continue
646 fi
647 case "$arg" in
648 -D*|-I*)
649 set fnord "$@" "$arg"; shift ;;
650 # Strip any option that makedepend may not understand. Remove
651 # the object too, otherwise makedepend will parse it as a source file.
652 -arch)
653 eat=yes ;;
654 -*|$object)
655 ;;
656 *)
657 set fnord "$@" "$arg"; shift ;;
658 esac
659 done
660 obj_suffix=`echo "$object" | sed 's/^.*\././'`
661 touch "$tmpdepfile"
662 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
663 rm -f "$depfile"
664 # makedepend may prepend the VPATH from the source file name to the object.
665 # No need to regex-escape $object, excess matching of '.' is harmless.
666 sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
667 # Some versions of the HPUX 10.20 sed can't process the last invocation
668 # correctly. Breaking it into two sed invocations is a workaround.
669 sed '1,2d' "$tmpdepfile" \
670 | tr ' ' "$nl" \
671 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
672 | sed -e 's/$/ :/' >> "$depfile"
673 rm -f "$tmpdepfile" "$tmpdepfile".bak
674 ;;
675
676cpp)
677 # Important note: in order to support this mode, a compiler *must*
678 # always write the preprocessed file to stdout.
679 "$@" || exit $?
680
681 # Remove the call to Libtool.
682 if test "$libtool" = yes; then
683 while test "X$1" != 'X--mode=compile'; do
684 shift
685 done
686 shift
687 fi
688
689 # Remove '-o $object'.
690 IFS=" "
691 for arg
692 do
693 case $arg in
694 -o)
695 shift
696 ;;
697 $object)
698 shift
699 ;;
700 *)
701 set fnord "$@" "$arg"
702 shift # fnord
703 shift # $arg
704 ;;
705 esac
706 done
707
708 "$@" -E \
709 | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710 -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
711 | sed '$ s: \\$::' > "$tmpdepfile"
712 rm -f "$depfile"
713 echo "$object : \\" > "$depfile"
714 cat < "$tmpdepfile" >> "$depfile"
715 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
716 rm -f "$tmpdepfile"
717 ;;
718
719msvisualcpp)
720 # Important note: in order to support this mode, a compiler *must*
721 # always write the preprocessed file to stdout.
722 "$@" || exit $?
723
724 # Remove the call to Libtool.
725 if test "$libtool" = yes; then
726 while test "X$1" != 'X--mode=compile'; do
727 shift
728 done
729 shift
730 fi
731
732 IFS=" "
733 for arg
734 do
735 case "$arg" in
736 -o)
737 shift
738 ;;
739 $object)
740 shift
741 ;;
742 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
743 set fnord "$@"
744 shift
745 shift
746 ;;
747 *)
748 set fnord "$@" "$arg"
749 shift
750 shift
751 ;;
752 esac
753 done
754 "$@" -E 2>/dev/null |
755 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
756 rm -f "$depfile"
757 echo "$object : \\" > "$depfile"
758 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
759 echo "$tab" >> "$depfile"
760 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
761 rm -f "$tmpdepfile"
762 ;;
763
764msvcmsys)
765 # This case exists only to let depend.m4 do its work. It works by
766 # looking at the text of this script. This case will never be run,
767 # since it is checked for above.
768 exit 1
769 ;;
770
771none)
772 exec "$@"
773 ;;
774
775*)
776 echo "Unknown depmode $depmode" 1>&2
777 exit 1
778 ;;
779esac
780
781exit 0
782
783# Local Variables:
784# mode: shell-script
785# sh-indentation: 2
786# eval: (add-hook 'write-file-hooks 'time-stamp)
787# time-stamp-start: "scriptversion="
788# time-stamp-format: "%:y-%02m-%02d.%02H"
789# time-stamp-time-zone: "UTC0"
790# time-stamp-end: "; # UTC"
791# End:
diff --git a/apps/plugins/puzzles/src/devel.but b/apps/plugins/puzzles/src/devel.but
index 131678c17b..f30e8eecda 100644
--- a/apps/plugins/puzzles/src/devel.but
+++ b/apps/plugins/puzzles/src/devel.but
@@ -1560,6 +1560,41 @@ the game was first completed (by setting a flag in
1560freeze the timer thereafter so that the user can undo back through 1560freeze the timer thereafter so that the user can undo back through
1561their solution process without altering their time. 1561their solution process without altering their time.
1562 1562
1563\S{backend-request-keys} \cw{request_keys()}
1564
1565\c key_label *(*request_keys)(const game_params *params, int *nkeys);
1566
1567This function returns a dynamically allocated array of \cw{key_label}
1568items containing the buttons the back end deems absolutely
1569\e{necessary} for gameplay, not an exhaustive list of every button the
1570back end could accept. For example, Keen only returns the digits up to
1571the game size and the backspace character, \cw{\\b}, even though it
1572\e{could} accept \cw{M}, as only these buttons are actually needed to
1573play the game. Each \cw{key_label} item contains the following fields:
1574
1575\c struct key_label {
1576\c const char *label; /* label for frontend use */
1577\c int button; /* button to pass to midend */
1578\c } key_label;
1579
1580The \cw{label} field of this structure can (and often will) be set by
1581the backend to \cw{NULL}, in which case the midend will instead call
1582\c{button2label()} (\k{utils-button2label}) and fill in a generic
1583label. The \cw{button} field is the associated code that can be passed
1584to the midend when the frontend deems appropriate.
1585
1586The backend should set \cw{*nkeys} to the number of elements in the
1587returned array.
1588
1589The field for this function point in the \cw{game} structure might be
1590set to \cw{NULL} (and indeed it is for the majority of the games) to
1591indicate that no additional buttons (apart from the cursor keys) are
1592required to play the game.
1593
1594This function should not be called directly by frontends. Instead,
1595frontends should use \cw{midend_request_keys()}
1596(\k{midend-request-keys}).
1597
1563\S{backend-flags} \c{flags} 1598\S{backend-flags} \c{flags}
1564 1599
1565\c int flags; 1600\c int flags;
@@ -2998,6 +3033,18 @@ the effect of the keypress was to request termination of the
2998program. A front end should shut down the puzzle in response to a 3033program. A front end should shut down the puzzle in response to a
2999zero return. 3034zero return.
3000 3035
3036\H{midend-request-keys} \cw{midend_request_keys()}
3037
3038\c key_label *midend_request_keys(midend *me, int *nkeys);
3039
3040This function behaves similarly to the backend's \cw{request_keys()}
3041function (\k{backend-request-keys}). If the backend does not provide
3042\cw{request_keys()}, this function will return \cw{NULL} and set
3043\cw{*nkeys} to zero. Otherwise, this function will fill in the generic
3044labels (i.e. the \cw{key_label} items that have their \cw{label}
3045fields set to \cw{NULL}) by using \cw{button2label()}
3046(\k{utils-button2label}).
3047
3001\H{midend-colours} \cw{midend_colours()} 3048\H{midend-colours} \cw{midend_colours()}
3002 3049
3003\c float *midend_colours(midend *me, int *ncolours); 3050\c float *midend_colours(midend *me, int *ncolours);
@@ -4215,6 +4262,24 @@ Thus, \cw{ret[background*3]} to \cw{ret[background*3+2]} will be set
4215to RGB values defining a sensible background colour, and similary 4262to RGB values defining a sensible background colour, and similary
4216\c{highlight} and \c{lowlight} will be set to sensible colours. 4263\c{highlight} and \c{lowlight} will be set to sensible colours.
4217 4264
4265\S{utils-button2label} \cw{button2label()}
4266
4267\c char *button2label(int button);
4268
4269This function generates a descriptive text label for \cw{button},
4270which should be a button code that can be passed to the midend. For
4271example, calling this function with \cw{CURSOR_UP} will result in the
4272string \cw{"Up"}. This function should only be called when the
4273\cw{key_label} item returned by a backend's \cw{request_keys()}
4274(\k{backend-request-keys}) function has its \cw{label} field set to
4275\cw{NULL}; in this case, the corresponding \cw{button} field can be
4276passed to this function to obtain an appropriate label. If, however,
4277the field is not \cw{NULL}, this function should not be called with
4278the corresponding \cw{button} field.
4279
4280The returned string is dynamically allocated and should be
4281\cw{sfree}'d by the caller.
4282
4218\C{writing} How to write a new puzzle 4283\C{writing} How to write a new puzzle
4219 4284
4220This chapter gives a guide to how to actually write a new puzzle: 4285This chapter gives a guide to how to actually write a new puzzle:
diff --git a/apps/plugins/puzzles/src/filling.c b/apps/plugins/puzzles/src/filling.c
index c278adacff..0e8972883d 100644
--- a/apps/plugins/puzzles/src/filling.c
+++ b/apps/plugins/puzzles/src/filling.c
@@ -1287,9 +1287,22 @@ static const char *validate_desc(const game_params *params, const char *desc)
1287 return (area < sz) ? "Not enough data to fill grid" : NULL; 1287 return (area < sz) ? "Not enough data to fill grid" : NULL;
1288} 1288}
1289 1289
1290static char *game_request_keys(const game_params *params) 1290static key_label *game_request_keys(const game_params *params, int *nkeys)
1291{ 1291{
1292 return dupstr("1234567890\b"); 1292 key_label *keys = snewn(11, key_label);
1293 *nkeys = 11;
1294
1295 int i;
1296
1297 for(i = 0; i < 10; ++i)
1298 {
1299 keys[i].button = '0' + i;
1300 keys[i].label = NULL;
1301 }
1302 keys[10].button = '\b';
1303 keys[10].label = NULL;
1304
1305 return keys;
1293} 1306}
1294 1307
1295static game_state *new_game(midend *me, const game_params *params, 1308static game_state *new_game(midend *me, const game_params *params,
diff --git a/apps/plugins/puzzles/src/gamedesc.txt b/apps/plugins/puzzles/src/gamedesc.txt
new file mode 100644
index 0000000000..db0d9cbd01
--- /dev/null
+++ b/apps/plugins/puzzles/src/gamedesc.txt
@@ -0,0 +1,39 @@
1blackbox:blackbox.exe:Black Box:Ball-finding puzzle:Find the hidden balls in the box by bouncing laser beams off them.
2bridges:bridges.exe:Bridges:Bridge-placing puzzle:Connect all the islands with a network of bridges.
3cube:cube.exe:Cube:Rolling cube puzzle:Pick up all the blue squares by rolling the cube over them.
4dominosa:dominosa.exe:Dominosa:Domino tiling puzzle:Tile the rectangle with a full set of dominoes.
5fifteen:fifteen.exe:Fifteen:Sliding block puzzle:Slide the tiles around to arrange them into order.
6filling:filling.exe:Filling:Polyomino puzzle:Mark every square with the area of its containing region.
7flip:flip.exe:Flip:Tile inversion puzzle:Flip groups of squares to light them all up at once.
8flood:flood.exe:Flood:Flood-filling puzzle:Turn the grid the same colour in as few flood fills as possible.
9galaxies:galaxies.exe:Galaxies:Symmetric polyomino puzzle:Divide the grid into rotationally symmetric regions each centred on a dot.
10guess:guess.exe:Guess:Combination-guessing puzzle:Guess the hidden combination of colours.
11inertia:inertia.exe:Inertia:Gem-collecting puzzle:Collect all the gems without running into any of the mines.
12keen:keen.exe:Keen:Arithmetic Latin square puzzle:Complete the latin square in accordance with the arithmetic clues.
13lightup:lightup.exe:Light Up:Light-bulb placing puzzle:Place bulbs to light up all the squares.
14loopy:loopy.exe:Loopy:Loop-drawing puzzle:Draw a single closed loop, given clues about number of adjacent edges.
15magnets:magnets.exe:Magnets:Magnet-placing puzzle:Place magnets to satisfy the clues and avoid like poles touching.
16map:map.exe:Map:Map-colouring puzzle:Colour the map so that adjacent regions are never the same colour.
17mines:mines.exe:Mines:Mine-finding puzzle:Find all the mines without treading on any of them.
18net:netgame.exe:Net:Network jigsaw puzzle:Rotate each tile to reassemble the network.
19netslide:netslide.exe:Netslide:Toroidal sliding network puzzle:Slide a row at a time to reassemble the network.
20palisade:palisade.exe:Palisade:Grid-division puzzle:Divide the grid into equal-sized areas in accordance with the clues.
21pattern:pattern.exe:Pattern:Pattern puzzle:Fill in the pattern in the grid, given only the lengths of runs of black squares.
22pearl:pearl.exe:Pearl:Loop-drawing puzzle:Draw a single closed loop, given clues about corner and straight squares.
23pegs:pegs.exe:Pegs:Peg solitaire puzzle:Jump pegs over each other to remove all but one.
24range:range.exe:Range:Visible-distance puzzle:Place black squares to limit the visible distance from each numbered cell.
25rect:rect.exe:Rectangles:Rectangles puzzle:Divide the grid into rectangles with areas equal to the numbers.
26samegame:samegame.exe:Same Game:Block-clearing puzzle:Clear the grid by removing touching groups of the same colour squares.
27signpost:signpost.exe:Signpost:Square-connecting puzzle:Connect the squares into a path following the arrows.
28singles:singles.exe:Singles:Number-removing puzzle:Black out the right set of duplicate numbers.
29sixteen:sixteen.exe:Sixteen:Toroidal sliding block puzzle:Slide a row at a time to arrange the tiles into order.
30slant:slant.exe:Slant:Maze-drawing puzzle:Draw a maze of slanting lines that matches the clues.
31solo:solo.exe:Solo:Number placement puzzle:Fill in the grid so that each row, column and square block contains one of every digit.
32tents:tents.exe:Tents:Tent-placing puzzle:Place a tent next to each tree.
33towers:towers.exe:Towers:Tower-placing Latin square puzzle:Complete the latin square of towers in accordance with the clues.
34tracks:tracks.exe:Tracks:Path-finding railway track puzzle:Fill in the railway track according to the clues.
35twiddle:twiddle.exe:Twiddle:Rotational sliding block puzzle:Rotate the tiles around themselves to arrange them into order.
36undead:undead.exe:Undead:Monster-placing puzzle:Place ghosts, vampires and zombies so that the right numbers of them can be seen in mirrors.
37unequal:unequal.exe:Unequal:Latin square puzzle:Complete the latin square in accordance with the > signs.
38unruly:unruly.exe:Unruly:Black and white grid puzzle:Fill in the black and white grid to avoid runs of three.
39untangle:untangle.exe:Untangle:Planar graph layout puzzle:Reposition the points so that the lines do not cross.
diff --git a/apps/plugins/puzzles/src/gtk.c b/apps/plugins/puzzles/src/gtk.c
index 3078e517ba..7deb753744 100644
--- a/apps/plugins/puzzles/src/gtk.c
+++ b/apps/plugins/puzzles/src/gtk.c
@@ -2886,25 +2886,6 @@ static frontend *new_window(char *arg, int argtype, char **error)
2886 return fe; 2886 return fe;
2887} 2887}
2888 2888
2889char *fgetline(FILE *fp)
2890{
2891 char *ret = snewn(512, char);
2892 int size = 512, len = 0;
2893 while (fgets(ret + len, size - len, fp)) {
2894 len += strlen(ret + len);
2895 if (ret[len-1] == '\n')
2896 break; /* got a newline, we're done */
2897 size = len + 512;
2898 ret = sresize(ret, size, char);
2899 }
2900 if (len == 0) { /* first fgets returned NULL */
2901 sfree(ret);
2902 return NULL;
2903 }
2904 ret[len] = '\0';
2905 return ret;
2906}
2907
2908static void list_presets_from_menu(struct preset_menu *menu) 2889static void list_presets_from_menu(struct preset_menu *menu)
2909{ 2890{
2910 int i; 2891 int i;
diff --git a/apps/plugins/puzzles/src/html/galaxies.html b/apps/plugins/puzzles/src/html/galaxies.html
index 8041a95cee..32e4e1d14c 100644
--- a/apps/plugins/puzzles/src/html/galaxies.html
+++ b/apps/plugins/puzzles/src/html/galaxies.html
@@ -1,8 +1,12 @@
1Galaxies 1Galaxies
2<p> 2<p>
3Draw lines along grid edges so as to divide the grid up into 3Draw lines along grid edges so as to divide the grid up into connected
4regions. Every region should have two-way rotational symmetry, and 4regions of squares.
5should contain exactly one dot which is in its centre. 5<p>
6Every region should have two-way rotational symmetry, should contain
7exactly one dot which is in its centre, and should contain no lines
8separating two of its own squares from each other. A region satisfying
9all of these requirements will be automatically highlighted.
6<p> 10<p>
7Click on a grid edge to add or remove a line. Right-click on a dot 11Click on a grid edge to add or remove a line. Right-click on a dot
8and drag the mouse to place an arrow in a grid square pointing to 12and drag the mouse to place an arrow in a grid square pointing to
diff --git a/apps/plugins/puzzles/src/icons/Makefile b/apps/plugins/puzzles/src/icons/Makefile
index 00dae1f841..646580672c 100644
--- a/apps/plugins/puzzles/src/icons/Makefile
+++ b/apps/plugins/puzzles/src/icons/Makefile
@@ -11,6 +11,9 @@ WEB = $(patsubst %,%-web.png,$(PUZZLES))
11 11
12IBASE = $(patsubst %,%-ibase.png,$(PUZZLES)) 12IBASE = $(patsubst %,%-ibase.png,$(PUZZLES))
13IBASE4 = $(patsubst %,%-ibase4.png,$(PUZZLES)) 13IBASE4 = $(patsubst %,%-ibase4.png,$(PUZZLES))
14P96D24 = $(patsubst %,%-96d24.png,$(PUZZLES))
15P96D8 = $(patsubst %,%-96d8.png,$(PUZZLES))
16P96D4 = $(patsubst %,%-96d4.png,$(PUZZLES))
14P48D24 = $(patsubst %,%-48d24.png,$(PUZZLES)) 17P48D24 = $(patsubst %,%-48d24.png,$(PUZZLES))
15P48D8 = $(patsubst %,%-48d8.png,$(PUZZLES)) 18P48D8 = $(patsubst %,%-48d8.png,$(PUZZLES))
16P48D4 = $(patsubst %,%-48d4.png,$(PUZZLES)) 19P48D4 = $(patsubst %,%-48d4.png,$(PUZZLES))
@@ -33,7 +36,7 @@ CSP = -set colorspace RGB
33 36
34base: $(BASE) 37base: $(BASE)
35web: $(WEB) 38web: $(WEB)
36pngicons: $(P48D24) $(P32D24) $(P16D24) 39pngicons: $(P96D24) $(P48D24) $(P32D24) $(P16D24)
37winicons: $(ICONS) $(RC) 40winicons: $(ICONS) $(RC)
38gtkicons: $(CICONS) 41gtkicons: $(CICONS)
39all: base web pngicons winicons gtkicons 42all: base web pngicons winicons gtkicons
@@ -100,7 +103,9 @@ $(IBASE): %-ibase.png: %-base.png
100$(IBASE4): %-ibase4.png: %-ibase.png 103$(IBASE4): %-ibase4.png: %-ibase.png
101 convert -colors 16 +dither $(CSP) -map $(PIC)win16pal.xpm $^ $@ 104 convert -colors 16 +dither $(CSP) -map $(PIC)win16pal.xpm $^ $@
102 105
103# Build the 24-bit PNGs for the icons, at three sizes. 106# Build the 24-bit PNGs for the icons, at four sizes.
107$(P96D24): %-96d24.png: %-ibase.png
108 $(PIC)square.pl 96 4 $^ $@
104$(P48D24): %-48d24.png: %-ibase.png 109$(P48D24): %-48d24.png: %-ibase.png
105 $(PIC)square.pl 48 4 $^ $@ 110 $(PIC)square.pl 48 4 $^ $@
106$(P32D24): %-32d24.png: %-ibase.png 111$(P32D24): %-32d24.png: %-ibase.png
@@ -110,7 +115,7 @@ $(P16D24): %-16d24.png: %-ibase.png
110 115
111# The 8-bit icon PNGs are just custom-paletted quantisations of the 116# The 8-bit icon PNGs are just custom-paletted quantisations of the
112# 24-bit ones. 117# 24-bit ones.
113$(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png 118$(P96D8) $(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png
114 convert -colors 256 $^ $@ 119 convert -colors 256 $^ $@
115 120
116# But the depth-4 images work better if we re-shrink from the 121# But the depth-4 images work better if we re-shrink from the
@@ -118,6 +123,10 @@ $(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png
118# again afterwards. (They're still not very good, but my hope is 123# again afterwards. (They're still not very good, but my hope is
119# that on most modern Windows machines this won't matter too 124# that on most modern Windows machines this won't matter too
120# much...) 125# much...)
126$(P96D4): %-96d4.png: %-ibase4.png
127 $(PIC)square.pl 96 1 $^ $@-tmp2.png
128 convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@
129 rm -f $@-tmp2.png
121$(P48D4): %-48d4.png: %-ibase4.png 130$(P48D4): %-48d4.png: %-ibase4.png
122 $(PIC)square.pl 48 1 $^ $@-tmp2.png 131 $(PIC)square.pl 48 1 $^ $@-tmp2.png
123 convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@ 132 convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@
@@ -146,7 +155,7 @@ $(RC): %.rc:
146 echo '200 ICON "$*.ico"' >> $@ 155 echo '200 ICON "$*.ico"' >> $@
147 156
148# Build the GTK icon source files. 157# Build the GTK icon source files.
149$(CICONS): %-icon.c: %-16d24.png %-32d24.png %-48d24.png 158$(CICONS): %-icon.c: %-16d24.png %-32d24.png %-48d24.png %-96d24.png
150 $(PIC)cicon.pl $^ > $@ 159 $(PIC)cicon.pl $^ > $@
151 160
152clean: 161clean:
diff --git a/apps/plugins/puzzles/src/install-sh b/apps/plugins/puzzles/src/install-sh
new file mode 100755
index 0000000000..0360b79e7d
--- /dev/null
+++ b/apps/plugins/puzzles/src/install-sh
@@ -0,0 +1,501 @@
1#!/bin/sh
2# install - install a program, script, or datafile
3
4scriptversion=2016-01-11.22; # UTC
5
6# This originates from X11R5 (mit/util/scripts/install.sh), which was
7# later released in X11R6 (xc/config/util/install.sh) with the
8# following copyright and license.
9#
10# Copyright (C) 1994 X Consortium
11#
12# Permission is hereby granted, free of charge, to any person obtaining a copy
13# of this software and associated documentation files (the "Software"), to
14# deal in the Software without restriction, including without limitation the
15# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16# sell copies of the Software, and to permit persons to whom the Software is
17# furnished to do so, subject to the following conditions:
18#
19# The above copyright notice and this permission notice shall be included in
20# all copies or substantial portions of the Software.
21#
22# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
26# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
27# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28#
29# Except as contained in this notice, the name of the X Consortium shall not
30# be used in advertising or otherwise to promote the sale, use or other deal-
31# ings in this Software without prior written authorization from the X Consor-
32# tium.
33#
34#
35# FSF changes to this file are in the public domain.
36#
37# Calling this script install-sh is preferred over install.sh, to prevent
38# 'make' implicit rules from creating a file called install from it
39# when there is no Makefile.
40#
41# This script is compatible with the BSD install script, but was written
42# from scratch.
43
44tab=' '
45nl='
46'
47IFS=" $tab$nl"
48
49# Set DOITPROG to "echo" to test this script.
50
51doit=${DOITPROG-}
52doit_exec=${doit:-exec}
53
54# Put in absolute file names if you don't have them in your path;
55# or use environment vars.
56
57chgrpprog=${CHGRPPROG-chgrp}
58chmodprog=${CHMODPROG-chmod}
59chownprog=${CHOWNPROG-chown}
60cmpprog=${CMPPROG-cmp}
61cpprog=${CPPROG-cp}
62mkdirprog=${MKDIRPROG-mkdir}
63mvprog=${MVPROG-mv}
64rmprog=${RMPROG-rm}
65stripprog=${STRIPPROG-strip}
66
67posix_mkdir=
68
69# Desired mode of installed file.
70mode=0755
71
72chgrpcmd=
73chmodcmd=$chmodprog
74chowncmd=
75mvcmd=$mvprog
76rmcmd="$rmprog -f"
77stripcmd=
78
79src=
80dst=
81dir_arg=
82dst_arg=
83
84copy_on_change=false
85is_target_a_directory=possibly
86
87usage="\
88Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
89 or: $0 [OPTION]... SRCFILES... DIRECTORY
90 or: $0 [OPTION]... -t DIRECTORY SRCFILES...
91 or: $0 [OPTION]... -d DIRECTORIES...
92
93In the 1st form, copy SRCFILE to DSTFILE.
94In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
95In the 4th, create DIRECTORIES.
96
97Options:
98 --help display this help and exit.
99 --version display version info and exit.
100
101 -c (ignored)
102 -C install only if different (preserve the last data modification time)
103 -d create directories instead of installing files.
104 -g GROUP $chgrpprog installed files to GROUP.
105 -m MODE $chmodprog installed files to MODE.
106 -o USER $chownprog installed files to USER.
107 -s $stripprog installed files.
108 -t DIRECTORY install into DIRECTORY.
109 -T report an error if DSTFILE is a directory.
110
111Environment variables override the default commands:
112 CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
113 RMPROG STRIPPROG
114"
115
116while test $# -ne 0; do
117 case $1 in
118 -c) ;;
119
120 -C) copy_on_change=true;;
121
122 -d) dir_arg=true;;
123
124 -g) chgrpcmd="$chgrpprog $2"
125 shift;;
126
127 --help) echo "$usage"; exit $?;;
128
129 -m) mode=$2
130 case $mode in
131 *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
132 echo "$0: invalid mode: $mode" >&2
133 exit 1;;
134 esac
135 shift;;
136
137 -o) chowncmd="$chownprog $2"
138 shift;;
139
140 -s) stripcmd=$stripprog;;
141
142 -t)
143 is_target_a_directory=always
144 dst_arg=$2
145 # Protect names problematic for 'test' and other utilities.
146 case $dst_arg in
147 -* | [=\(\)!]) dst_arg=./$dst_arg;;
148 esac
149 shift;;
150
151 -T) is_target_a_directory=never;;
152
153 --version) echo "$0 $scriptversion"; exit $?;;
154
155 --) shift
156 break;;
157
158 -*) echo "$0: invalid option: $1" >&2
159 exit 1;;
160
161 *) break;;
162 esac
163 shift
164done
165
166# We allow the use of options -d and -T together, by making -d
167# take the precedence; this is for compatibility with GNU install.
168
169if test -n "$dir_arg"; then
170 if test -n "$dst_arg"; then
171 echo "$0: target directory not allowed when installing a directory." >&2
172 exit 1
173 fi
174fi
175
176if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
177 # When -d is used, all remaining arguments are directories to create.
178 # When -t is used, the destination is already specified.
179 # Otherwise, the last argument is the destination. Remove it from $@.
180 for arg
181 do
182 if test -n "$dst_arg"; then
183 # $@ is not empty: it contains at least $arg.
184 set fnord "$@" "$dst_arg"
185 shift # fnord
186 fi
187 shift # arg
188 dst_arg=$arg
189 # Protect names problematic for 'test' and other utilities.
190 case $dst_arg in
191 -* | [=\(\)!]) dst_arg=./$dst_arg;;
192 esac
193 done
194fi
195
196if test $# -eq 0; then
197 if test -z "$dir_arg"; then
198 echo "$0: no input file specified." >&2
199 exit 1
200 fi
201 # It's OK to call 'install-sh -d' without argument.
202 # This can happen when creating conditional directories.
203 exit 0
204fi
205
206if test -z "$dir_arg"; then
207 if test $# -gt 1 || test "$is_target_a_directory" = always; then
208 if test ! -d "$dst_arg"; then
209 echo "$0: $dst_arg: Is not a directory." >&2
210 exit 1
211 fi
212 fi
213fi
214
215if test -z "$dir_arg"; then
216 do_exit='(exit $ret); exit $ret'
217 trap "ret=129; $do_exit" 1
218 trap "ret=130; $do_exit" 2
219 trap "ret=141; $do_exit" 13
220 trap "ret=143; $do_exit" 15
221
222 # Set umask so as not to create temps with too-generous modes.
223 # However, 'strip' requires both read and write access to temps.
224 case $mode in
225 # Optimize common cases.
226 *644) cp_umask=133;;
227 *755) cp_umask=22;;
228
229 *[0-7])
230 if test -z "$stripcmd"; then
231 u_plus_rw=
232 else
233 u_plus_rw='% 200'
234 fi
235 cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
236 *)
237 if test -z "$stripcmd"; then
238 u_plus_rw=
239 else
240 u_plus_rw=,u+rw
241 fi
242 cp_umask=$mode$u_plus_rw;;
243 esac
244fi
245
246for src
247do
248 # Protect names problematic for 'test' and other utilities.
249 case $src in
250 -* | [=\(\)!]) src=./$src;;
251 esac
252
253 if test -n "$dir_arg"; then
254 dst=$src
255 dstdir=$dst
256 test -d "$dstdir"
257 dstdir_status=$?
258 else
259
260 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
261 # might cause directories to be created, which would be especially bad
262 # if $src (and thus $dsttmp) contains '*'.
263 if test ! -f "$src" && test ! -d "$src"; then
264 echo "$0: $src does not exist." >&2
265 exit 1
266 fi
267
268 if test -z "$dst_arg"; then
269 echo "$0: no destination specified." >&2
270 exit 1
271 fi
272 dst=$dst_arg
273
274 # If destination is a directory, append the input filename; won't work
275 # if double slashes aren't ignored.
276 if test -d "$dst"; then
277 if test "$is_target_a_directory" = never; then
278 echo "$0: $dst_arg: Is a directory" >&2
279 exit 1
280 fi
281 dstdir=$dst
282 dst=$dstdir/`basename "$src"`
283 dstdir_status=0
284 else
285 dstdir=`dirname "$dst"`
286 test -d "$dstdir"
287 dstdir_status=$?
288 fi
289 fi
290
291 obsolete_mkdir_used=false
292
293 if test $dstdir_status != 0; then
294 case $posix_mkdir in
295 '')
296 # Create intermediate dirs using mode 755 as modified by the umask.
297 # This is like FreeBSD 'install' as of 1997-10-28.
298 umask=`umask`
299 case $stripcmd.$umask in
300 # Optimize common cases.
301 *[2367][2367]) mkdir_umask=$umask;;
302 .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
303
304 *[0-7])
305 mkdir_umask=`expr $umask + 22 \
306 - $umask % 100 % 40 + $umask % 20 \
307 - $umask % 10 % 4 + $umask % 2
308 `;;
309 *) mkdir_umask=$umask,go-w;;
310 esac
311
312 # With -d, create the new directory with the user-specified mode.
313 # Otherwise, rely on $mkdir_umask.
314 if test -n "$dir_arg"; then
315 mkdir_mode=-m$mode
316 else
317 mkdir_mode=
318 fi
319
320 posix_mkdir=false
321 case $umask in
322 *[123567][0-7][0-7])
323 # POSIX mkdir -p sets u+wx bits regardless of umask, which
324 # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
325 ;;
326 *)
327 tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
328 trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
329
330 if (umask $mkdir_umask &&
331 exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
332 then
333 if test -z "$dir_arg" || {
334 # Check for POSIX incompatibilities with -m.
335 # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
336 # other-writable bit of parent directory when it shouldn't.
337 # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
338 ls_ld_tmpdir=`ls -ld "$tmpdir"`
339 case $ls_ld_tmpdir in
340 d????-?r-*) different_mode=700;;
341 d????-?--*) different_mode=755;;
342 *) false;;
343 esac &&
344 $mkdirprog -m$different_mode -p -- "$tmpdir" && {
345 ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
346 test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
347 }
348 }
349 then posix_mkdir=:
350 fi
351 rmdir "$tmpdir/d" "$tmpdir"
352 else
353 # Remove any dirs left behind by ancient mkdir implementations.
354 rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
355 fi
356 trap '' 0;;
357 esac;;
358 esac
359
360 if
361 $posix_mkdir && (
362 umask $mkdir_umask &&
363 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
364 )
365 then :
366 else
367
368 # The umask is ridiculous, or mkdir does not conform to POSIX,
369 # or it failed possibly due to a race condition. Create the
370 # directory the slow way, step by step, checking for races as we go.
371
372 case $dstdir in
373 /*) prefix='/';;
374 [-=\(\)!]*) prefix='./';;
375 *) prefix='';;
376 esac
377
378 oIFS=$IFS
379 IFS=/
380 set -f
381 set fnord $dstdir
382 shift
383 set +f
384 IFS=$oIFS
385
386 prefixes=
387
388 for d
389 do
390 test X"$d" = X && continue
391
392 prefix=$prefix$d
393 if test -d "$prefix"; then
394 prefixes=
395 else
396 if $posix_mkdir; then
397 (umask=$mkdir_umask &&
398 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
399 # Don't fail if two instances are running concurrently.
400 test -d "$prefix" || exit 1
401 else
402 case $prefix in
403 *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
404 *) qprefix=$prefix;;
405 esac
406 prefixes="$prefixes '$qprefix'"
407 fi
408 fi
409 prefix=$prefix/
410 done
411
412 if test -n "$prefixes"; then
413 # Don't fail if two instances are running concurrently.
414 (umask $mkdir_umask &&
415 eval "\$doit_exec \$mkdirprog $prefixes") ||
416 test -d "$dstdir" || exit 1
417 obsolete_mkdir_used=true
418 fi
419 fi
420 fi
421
422 if test -n "$dir_arg"; then
423 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
424 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
425 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
426 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
427 else
428
429 # Make a couple of temp file names in the proper directory.
430 dsttmp=$dstdir/_inst.$$_
431 rmtmp=$dstdir/_rm.$$_
432
433 # Trap to clean up those temp files at exit.
434 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
435
436 # Copy the file name to the temp name.
437 (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
438
439 # and set any options; do chmod last to preserve setuid bits.
440 #
441 # If any of these fail, we abort the whole thing. If we want to
442 # ignore errors from any of these, just make sure not to ignore
443 # errors from the above "$doit $cpprog $src $dsttmp" command.
444 #
445 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
446 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
447 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
448 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
449
450 # If -C, don't bother to copy if it wouldn't change the file.
451 if $copy_on_change &&
452 old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
453 new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
454 set -f &&
455 set X $old && old=:$2:$4:$5:$6 &&
456 set X $new && new=:$2:$4:$5:$6 &&
457 set +f &&
458 test "$old" = "$new" &&
459 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
460 then
461 rm -f "$dsttmp"
462 else
463 # Rename the file to the real destination.
464 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
465
466 # The rename failed, perhaps because mv can't rename something else
467 # to itself, or perhaps because mv is so ancient that it does not
468 # support -f.
469 {
470 # Now remove or move aside any old file at destination location.
471 # We try this two ways since rm can't unlink itself on some
472 # systems and the destination file might be busy for other
473 # reasons. In this case, the final cleanup might fail but the new
474 # file should still install successfully.
475 {
476 test ! -f "$dst" ||
477 $doit $rmcmd -f "$dst" 2>/dev/null ||
478 { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
479 { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
480 } ||
481 { echo "$0: cannot unlink or rename $dst" >&2
482 (exit 1); exit 1
483 }
484 } &&
485
486 # Now rename the file to the real destination.
487 $doit $mvcmd "$dsttmp" "$dst"
488 }
489 fi || exit 1
490
491 trap '' 0
492 fi
493done
494
495# Local variables:
496# eval: (add-hook 'write-file-hooks 'time-stamp)
497# time-stamp-start: "scriptversion="
498# time-stamp-format: "%:y-%02m-%02d.%02H"
499# time-stamp-time-zone: "UTC0"
500# time-stamp-end: "; # UTC"
501# End:
diff --git a/apps/plugins/puzzles/src/keen.R b/apps/plugins/puzzles/src/keen.R
index 77609bc7fa..46bd09a33d 100644
--- a/apps/plugins/puzzles/src/keen.R
+++ b/apps/plugins/puzzles/src/keen.R
@@ -1,14 +1,14 @@
1# -*- makefile -*- 1# -*- makefile -*-
2 2
3KEEN_LATIN_EXTRA = tree234 maxflow dsf 3KEEN_EXTRA = dsf LATIN
4KEEN_EXTRA = latin KEEN_LATIN_EXTRA 4KEEN_EXTRA_SOLVER = dsf LATIN_SOLVER
5 5
6keen : [X] GTK COMMON keen KEEN_EXTRA keen-icon|no-icon 6keen : [X] GTK COMMON keen KEEN_EXTRA keen-icon|no-icon
7 7
8keen : [G] WINDOWS COMMON keen KEEN_EXTRA keen.res|noicon.res 8keen : [G] WINDOWS COMMON keen KEEN_EXTRA keen.res|noicon.res
9 9
10keensolver : [U] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE 10keensolver : [U] keen[STANDALONE_SOLVER] KEEN_EXTRA_SOLVER STANDALONE
11keensolver : [C] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE 11keensolver : [C] keen[STANDALONE_SOLVER] KEEN_EXTRA_SOLVER STANDALONE
12 12
13ALL += keen[COMBINED] KEEN_EXTRA 13ALL += keen[COMBINED] KEEN_EXTRA
14 14
diff --git a/apps/plugins/puzzles/src/keen.c b/apps/plugins/puzzles/src/keen.c
index f3142a0c00..be77b183ba 100644
--- a/apps/plugins/puzzles/src/keen.c
+++ b/apps/plugins/puzzles/src/keen.c
@@ -91,7 +91,7 @@ static game_params *default_params(void)
91 return ret; 91 return ret;
92} 92}
93 93
94const static struct game_params keen_presets[] = { 94static const struct game_params keen_presets[] = {
95 { 4, DIFF_EASY, FALSE }, 95 { 4, DIFF_EASY, FALSE },
96 { 5, DIFF_EASY, FALSE }, 96 { 5, DIFF_EASY, FALSE },
97 { 5, DIFF_EASY, TRUE }, 97 { 5, DIFF_EASY, TRUE },
@@ -1251,17 +1251,24 @@ static const char *validate_desc(const game_params *params, const char *desc)
1251 return NULL; 1251 return NULL;
1252} 1252}
1253 1253
1254static char *game_request_keys(const game_params *params) 1254static key_label *game_request_keys(const game_params *params, int *nkeys)
1255{ 1255{
1256 int i; 1256 int i;
1257 int w = params->w; 1257 int w = params->w;
1258 char *keys = smalloc(w+2); 1258
1259 key_label *keys = snewn(w+1, key_label);
1260 *nkeys = w + 1;
1261
1259 for (i = 0; i < w; i++) { 1262 for (i = 0; i < w; i++) {
1260 if (i<9) keys[i] = '1' + i; 1263 if (i<9) keys[i].button = '1' + i;
1261 else keys[i] = 'a' + i - 9; 1264 else keys[i].button = 'a' + i - 9;
1265
1266 keys[i].label = NULL;
1262 } 1267 }
1263 keys[w] = '\b'; 1268 keys[w].button = '\b';
1264 keys[w+1] = '\0'; 1269 keys[w].label = NULL;
1270
1271
1265 return keys; 1272 return keys;
1266} 1273}
1267 1274
diff --git a/apps/plugins/puzzles/src/latin.c b/apps/plugins/puzzles/src/latin.c
index 716064cab1..710be2c5ca 100644
--- a/apps/plugins/puzzles/src/latin.c
+++ b/apps/plugins/puzzles/src/latin.c
@@ -4,7 +4,7 @@
4 4
5#include "puzzles.h" 5#include "puzzles.h"
6#include "tree234.h" 6#include "tree234.h"
7#include "maxflow.h" 7#include "matching.h"
8 8
9#ifdef STANDALONE_LATIN_TEST 9#ifdef STANDALONE_LATIN_TEST
10#define STANDALONE_SOLVER 10#define STANDALONE_SOLVER
@@ -1111,11 +1111,11 @@ void latin_debug(digit *sq, int o)
1111digit *latin_generate(int o, random_state *rs) 1111digit *latin_generate(int o, random_state *rs)
1112{ 1112{
1113 digit *sq; 1113 digit *sq;
1114 int *edges, *backedges, *capacity, *flow; 1114 int *adjdata, *adjsizes, *matching;
1115 int **adjlists;
1115 void *scratch; 1116 void *scratch;
1116 int ne, scratchsize;
1117 int i, j, k; 1117 int i, j, k;
1118 digit *row, *col, *numinv, *num; 1118 digit *row;
1119 1119
1120 /* 1120 /*
1121 * To efficiently generate a latin square in such a way that 1121 * To efficiently generate a latin square in such a way that
@@ -1128,123 +1128,76 @@ digit *latin_generate(int o, random_state *rs)
1128 * the theorem guarantees that we will never have to backtrack. 1128 * the theorem guarantees that we will never have to backtrack.
1129 * 1129 *
1130 * To find a viable row at each stage, we can make use of the 1130 * To find a viable row at each stage, we can make use of the
1131 * support functions in maxflow.c. 1131 * support functions in matching.c.
1132 */ 1132 */
1133 1133
1134 sq = snewn(o*o, digit); 1134 sq = snewn(o*o, digit);
1135 1135
1136 /* 1136 /*
1137 * In case this method of generation introduces a really subtle 1137 * matching.c will take care of randomising the generation of each
1138 * top-to-bottom directional bias, we'll generate the rows in 1138 * row of the square, but in case this entire method of generation
1139 * random order. 1139 * introduces a really subtle top-to-bottom directional bias,
1140 * we'll also generate the rows themselves in random order.
1140 */ 1141 */
1141 row = snewn(o, digit); 1142 row = snewn(o, digit);
1142 col = snewn(o, digit);
1143 numinv = snewn(o, digit);
1144 num = snewn(o, digit);
1145 for (i = 0; i < o; i++) 1143 for (i = 0; i < o; i++)
1146 row[i] = i; 1144 row[i] = i;
1147 shuffle(row, i, sizeof(*row), rs); 1145 shuffle(row, i, sizeof(*row), rs);
1148 1146
1149 /* 1147 /*
1150 * Set up the infrastructure for the maxflow algorithm. 1148 * Set up the infrastructure for the matching subroutine.
1151 */ 1149 */
1152 scratchsize = maxflow_scratch_size(o * 2 + 2); 1150 scratch = smalloc(matching_scratch_size(o, o));
1153 scratch = smalloc(scratchsize); 1151 adjdata = snewn(o*o, int);
1154 backedges = snewn(o*o + 2*o, int); 1152 adjlists = snewn(o, int *);
1155 edges = snewn((o*o + 2*o) * 2, int); 1153 adjsizes = snewn(o, int);
1156 capacity = snewn(o*o + 2*o, int); 1154 matching = snewn(o, int);
1157 flow = snewn(o*o + 2*o, int); 1155
1158 /* Set up the edge array, and the initial capacities. */
1159 ne = 0;
1160 for (i = 0; i < o; i++) {
1161 /* Each LHS vertex is connected to all RHS vertices. */
1162 for (j = 0; j < o; j++) {
1163 edges[ne*2] = i;
1164 edges[ne*2+1] = j+o;
1165 /* capacity for this edge is set later on */
1166 ne++;
1167 }
1168 }
1169 for (i = 0; i < o; i++) {
1170 /* Each RHS vertex is connected to the distinguished sink vertex. */
1171 edges[ne*2] = i+o;
1172 edges[ne*2+1] = o*2+1;
1173 capacity[ne] = 1;
1174 ne++;
1175 }
1176 for (i = 0; i < o; i++) {
1177 /* And the distinguished source vertex connects to each LHS vertex. */
1178 edges[ne*2] = o*2;
1179 edges[ne*2+1] = i;
1180 capacity[ne] = 1;
1181 ne++;
1182 }
1183 assert(ne == o*o + 2*o);
1184 /* Now set up backedges. */
1185 maxflow_setup_backedges(ne, edges, backedges);
1186
1187 /* 1156 /*
1188 * Now generate each row of the latin square. 1157 * Now generate each row of the latin square.
1189 */ 1158 */
1190 for (i = 0; i < o; i++) { 1159 for (i = 0; i < o; i++) {
1191 /* 1160 /*
1192 * To prevent maxflow from behaving deterministically, we 1161 * Make adjacency lists for a bipartite graph joining each
1193 * separately permute the columns and the digits for the 1162 * column to all the numbers not yet placed in that column.
1194 * purposes of the algorithm, differently for every row. 1163 */
1195 */ 1164 for (j = 0; j < o; j++) {
1196 for (j = 0; j < o; j++) 1165 int *p, *adj = adjdata + j*o;
1197 col[j] = num[j] = j; 1166 for (k = 0; k < o; k++)
1198 shuffle(col, j, sizeof(*col), rs); 1167 adj[k] = 1;
1199 shuffle(num, j, sizeof(*num), rs); 1168 for (k = 0; k < i; k++)
1200 /* We need the num permutation in both forward and inverse forms. */ 1169 adj[sq[row[k]*o + j] - 1] = 0;
1201 for (j = 0; j < o; j++) 1170 adjlists[j] = p = adj;
1202 numinv[num[j]] = j; 1171 for (k = 0; k < o; k++)
1203 1172 if (adj[k])
1204 /* 1173 *p++ = k;
1205 * Set up the capacities for the maxflow run, by examining 1174 adjsizes[j] = p - adjlists[j];
1206 * the existing latin square. 1175 *p = -1;
1207 */ 1176 }
1208 for (j = 0; j < o*o; j++)
1209 capacity[j] = 1;
1210 for (j = 0; j < i; j++)
1211 for (k = 0; k < o; k++) {
1212 int n = num[sq[row[j]*o + col[k]] - 1];
1213 capacity[k*o+n] = 0;
1214 }
1215 1177
1216 /* 1178 /*
1217 * Run maxflow. 1179 * Run the matching algorithm.
1218 */ 1180 */
1219 j = maxflow_with_scratch(scratch, o*2+2, 2*o, 2*o+1, ne, 1181 j = matching_with_scratch(scratch, o, o, adjlists, adjsizes,
1220 edges, backedges, capacity, flow, NULL); 1182 rs, matching, NULL);
1221 assert(j == o); /* by the above theorem, this must have succeeded */ 1183 assert(j == o); /* by the above theorem, this must have succeeded */
1222 1184
1223 /* 1185 /*
1224 * And examine the flow array to pick out the new row of 1186 * And use the output to set up the new row of the latin
1225 * the latin square. 1187 * square.
1226 */ 1188 */
1227 for (j = 0; j < o; j++) { 1189 for (j = 0; j < o; j++)
1228 for (k = 0; k < o; k++) { 1190 sq[row[i]*o + j] = matching[j] + 1;
1229 if (flow[j*o+k])
1230 break;
1231 }
1232 assert(k < o);
1233 sq[row[i]*o + col[j]] = numinv[k] + 1;
1234 }
1235 } 1191 }
1236 1192
1237 /* 1193 /*
1238 * Done. Free our internal workspaces... 1194 * Done. Free our internal workspaces...
1239 */ 1195 */
1240 sfree(flow); 1196 sfree(matching);
1241 sfree(capacity); 1197 sfree(adjlists);
1242 sfree(edges); 1198 sfree(adjsizes);
1243 sfree(backedges); 1199 sfree(adjdata);
1244 sfree(scratch); 1200 sfree(scratch);
1245 sfree(numinv);
1246 sfree(num);
1247 sfree(col);
1248 sfree(row); 1201 sfree(row);
1249 1202
1250 /* 1203 /*
diff --git a/apps/plugins/puzzles/src/list.c b/apps/plugins/puzzles/src/list.c
new file mode 100644
index 0000000000..ec019c31b2
--- /dev/null
+++ b/apps/plugins/puzzles/src/list.c
@@ -0,0 +1,55 @@
1/*
2 * list.c: List of pointers to puzzle structures, for monolithic
3 * platforms.
4 *
5 * This file is automatically generated by mkfiles.pl. Do not edit
6 * it directly, or the changes will be lost next time mkfiles.pl runs.
7 * Instead, edit Recipe and/or its *.R subfiles.
8 */
9#include "puzzles.h"
10#define GAMELIST(A) \
11 A(blackbox) \
12 A(bridges) \
13 A(cube) \
14 A(dominosa) \
15 A(fifteen) \
16 A(filling) \
17 A(flip) \
18 A(flood) \
19 A(galaxies) \
20 A(guess) \
21 A(inertia) \
22 A(keen) \
23 A(lightup) \
24 A(loopy) \
25 A(magnets) \
26 A(map) \
27 A(mines) \
28 A(net) \
29 A(netslide) \
30 A(palisade) \
31 A(pattern) \
32 A(pearl) \
33 A(pegs) \
34 A(range) \
35 A(rect) \
36 A(samegame) \
37 A(signpost) \
38 A(singles) \
39 A(sixteen) \
40 A(slant) \
41 A(solo) \
42 A(tents) \
43 A(towers) \
44 A(tracks) \
45 A(twiddle) \
46 A(undead) \
47 A(unequal) \
48 A(unruly) \
49 A(untangle) \
50
51#define DECL(x) extern const game x;
52#define REF(x) &x,
53GAMELIST(DECL)
54const game *gamelist[] = { GAMELIST(REF) };
55const int gamecount = lenof(gamelist);
diff --git a/apps/plugins/puzzles/src/matching.c b/apps/plugins/puzzles/src/matching.c
new file mode 100644
index 0000000000..89f67ee83e
--- /dev/null
+++ b/apps/plugins/puzzles/src/matching.c
@@ -0,0 +1,753 @@
1/*
2 * Implementation of matching.h.
3 */
4
5#include <assert.h>
6#include <stdlib.h>
7#include <stdio.h>
8
9#include "puzzles.h"
10#include "matching.h"
11
12struct scratch {
13 /*
14 * Current contents of the in-progress matching. LtoR is an array
15 * of nl integers, each of which holds a value in {0,1,...,nr-1},
16 * or -1 for no current assignment. RtoL is exactly the reverse.
17 *
18 * Invariant: LtoR[i] is non-empty and equal to j if and only if
19 * RtoL[j] is non-empty and equal to i.
20 */
21 int *LtoR, *RtoL;
22
23 /*
24 * Arrays of nl and nr integer respectively, giving the layer
25 * assigned to each integer in the breadth-first search step of
26 * the algorithm.
27 */
28 int *Llayer, *Rlayer;
29
30 /*
31 * Arrays of nl and nr integers respectively, used to hold the
32 * to-do queues in the breadth-first search.
33 */
34 int *Lqueue, *Rqueue;
35
36 /*
37 * An augmenting path of vertices, alternating between L vertices
38 * (in the even-numbered positions, starting at 0) and R (in the
39 * odd positions). Must be long enough to hold any such path that
40 * never repeats a vertex, i.e. must be at least 2*min(nl,nr) in
41 * size.
42 */
43 int *augpath;
44
45 /*
46 * Track the progress of the depth-first search at each
47 * even-numbered layer. Has one element for each even-numbered
48 * position in augpath.
49 */
50 int *dfsstate;
51
52 /*
53 * Store a random permutation of the L vertex indices, if we're
54 * randomising the dfs phase.
55 */
56 int *Lorder;
57};
58
59size_t matching_scratch_size(int nl, int nr)
60{
61 size_t n;
62 int nmin = (nl < nr ? nl : nr);
63
64 n = (sizeof(struct scratch) + sizeof(int)-1)/sizeof(int);
65 n += nl; /* LtoR */
66 n += nr; /* RtoL */
67 n += nl; /* Llayer */
68 n += nr; /* Rlayer */
69 n += nl; /* Lqueue */
70 n += nr; /* Rqueue */
71 n += 2*nmin; /* augpath */
72 n += nmin; /* dfsstate */
73 n += nl; /* Lorder */
74 return n * sizeof(int);
75}
76
77int matching_with_scratch(void *scratchv,
78 int nl, int nr, int **adjlists, int *adjsizes,
79 random_state *rs, int *outl, int *outr)
80{
81 struct scratch *s = (struct scratch *)scratchv;
82 int L, R, i, j;
83
84 /*
85 * Set up the various array pointers in the scratch space.
86 */
87 {
88 int *p = scratchv;
89 int nmin = (nl < nr ? nl : nr);
90
91 p += (sizeof(struct scratch) + sizeof(int)-1)/sizeof(int);
92 s->LtoR = p; p += nl;
93 s->RtoL = p; p += nr;
94 s->Llayer = p; p += nl;
95 s->Rlayer = p; p += nr;
96 s->Lqueue = p; p += nl;
97 s->Rqueue = p; p += nr;
98 s->augpath = p; p += 2*nmin;
99 s->dfsstate = p; p += nmin;
100 s->Lorder = p; p += nl;
101 }
102
103 /*
104 * Set up the initial matching, which is empty.
105 */
106 for (L = 0; L < nl; L++)
107 s->LtoR[L] = -1;
108 for (R = 0; R < nr; R++)
109 s->RtoL[R] = -1;
110
111 while (1) {
112 /*
113 * Breadth-first search starting from the unassigned left
114 * vertices, traversing edges from left to right only if they
115 * are _not_ part of the matching, and from right to left only
116 * if they _are_. We assign a 'layer number' to all vertices
117 * visited by this search, with the starting vertices being
118 * layer 0 and every successor of a layer-n node being layer
119 * n+1.
120 */
121 int Lqs, Rqs, layer, target_layer;
122
123 for (L = 0; L < nl; L++)
124 s->Llayer[L] = -1;
125 for (R = 0; R < nr; R++)
126 s->Rlayer[R] = -1;
127
128 Lqs = 0;
129 for (L = 0; L < nl; L++) {
130 if (s->LtoR[L] == -1) {
131 s->Llayer[L] = 0;
132 s->Lqueue[Lqs++] = L;
133 }
134 }
135
136 layer = 0;
137 while (1) {
138 int found_free_R_vertex = FALSE;
139
140 Rqs = 0;
141 for (i = 0; i < Lqs; i++) {
142 L = s->Lqueue[i];
143 assert(s->Llayer[L] == layer);
144
145 for (j = 0; j < adjsizes[L]; j++) {
146 R = adjlists[L][j];
147 if (R != s->LtoR[L] && s->Rlayer[R] == -1) {
148 s->Rlayer[R] = layer+1;
149 s->Rqueue[Rqs++] = R;
150 if (s->RtoL[R] == -1)
151 found_free_R_vertex = TRUE;
152 }
153 }
154 }
155 layer++;
156
157 if (found_free_R_vertex)
158 break;
159
160 if (Rqs == 0)
161 goto done;
162
163 Lqs = 0;
164 for (j = 0; j < Rqs; j++) {
165 R = s->Rqueue[j];
166 assert(s->Rlayer[R] == layer);
167 if ((L = s->RtoL[R]) != -1 && s->Llayer[L] == -1) {
168 s->Llayer[L] = layer+1;
169 s->Lqueue[Lqs++] = L;
170 }
171 }
172 layer++;
173
174 if (Lqs == 0)
175 goto done;
176 }
177
178 target_layer = layer;
179
180 /*
181 * Vertices in the target layer are only interesting if
182 * they're actually unassigned. Blanking out the others here
183 * will save us a special case in the dfs loop below.
184 */
185 for (R = 0; R < nr; R++)
186 if (s->Rlayer[R] == target_layer && s->RtoL[R] != -1)
187 s->Rlayer[R] = -1;
188
189 /*
190 * Choose an ordering in which to try the L vertices at the
191 * start of the next pass.
192 */
193 for (L = 0; L < nl; L++)
194 s->Lorder[L] = L;
195 if (rs)
196 shuffle(s->Lorder, nl, sizeof(*s->Lorder), rs);
197
198 /*
199 * Now depth-first search through that layered set of vertices
200 * to find as many (vertex-)disjoint augmenting paths as we
201 * can, and for each one we find, augment the matching.
202 */
203 s->dfsstate[0] = 0;
204 i = 0;
205 while (1) {
206 /*
207 * Find the next vertex to go on the end of augpath.
208 */
209 if (i == 0) {
210 /* In this special case, we're just looking for L
211 * vertices that are not yet assigned. */
212 if (s->dfsstate[i] == nl)
213 break; /* entire DFS has finished */
214
215 L = s->Lorder[s->dfsstate[i]++];
216
217 if (s->Llayer[L] != 2*i)
218 continue; /* skip this vertex */
219 } else {
220 /* In the more usual case, we're going through the
221 * adjacency list for the previous L vertex. */
222 L = s->augpath[2*i-2];
223 j = s->dfsstate[i]++;
224 if (j == adjsizes[L]) {
225 /* Run out of neighbours of the previous vertex. */
226 i--;
227 continue;
228 }
229 if (rs && adjsizes[L] - j > 1) {
230 int which = j + random_upto(rs, adjsizes[L] - j);
231 int tmp = adjlists[L][which];
232 adjlists[L][which] = adjlists[L][j];
233 adjlists[L][j] = tmp;
234 }
235 R = adjlists[L][j];
236
237 if (s->Rlayer[R] != 2*i-1)
238 continue; /* skip this vertex */
239
240 s->augpath[2*i-1] = R;
241 s->Rlayer[R] = -1; /* mark vertex as visited */
242
243 if (2*i-1 == target_layer) {
244 /*
245 * We've found an augmenting path, in the form of
246 * an even-sized list of vertices alternating
247 * L,R,...,L,R, with the initial L and final R
248 * vertex free and otherwise each R currently
249 * connected to the next L. Adjust so that each L
250 * connects to the next R, increasing the edge
251 * count in the matching by 1.
252 */
253 for (j = 0; j < 2*i; j += 2) {
254 s->LtoR[s->augpath[j]] = s->augpath[j+1];
255 s->RtoL[s->augpath[j+1]] = s->augpath[j];
256 }
257
258 /*
259 * Having dealt with that path, and already marked
260 * all its vertices as visited, rewind right to
261 * the start and resume our DFS from a new
262 * starting L-vertex.
263 */
264 i = 0;
265 continue;
266 }
267
268 L = s->RtoL[R];
269 if (s->Llayer[L] != 2*i)
270 continue; /* skip this vertex */
271 }
272
273 s->augpath[2*i] = L;
274 s->Llayer[L] = -1; /* mark vertex as visited */
275 i++;
276 s->dfsstate[i] = 0;
277 }
278 }
279
280 done:
281 /*
282 * Fill in the output arrays.
283 */
284 if (outl) {
285 for (i = 0; i < nl; i++)
286 outl[i] = s->LtoR[i];
287 }
288 if (outr) {
289 for (j = 0; j < nr; j++)
290 outr[j] = s->RtoL[j];
291 }
292
293 /*
294 * Return the number of matching edges.
295 */
296 for (i = j = 0; i < nl; i++)
297 if (s->LtoR[i] != -1)
298 j++;
299 return j;
300}
301
302int matching(int nl, int nr, int **adjlists, int *adjsizes,
303 random_state *rs, int *outl, int *outr)
304{
305 void *scratch;
306 int size;
307 int ret;
308
309 size = matching_scratch_size(nl, nr);
310 scratch = malloc(size);
311 if (!scratch)
312 return -1;
313
314 ret = matching_with_scratch(scratch, nl, nr, adjlists, adjsizes,
315 rs, outl, outr);
316
317 free(scratch);
318
319 return ret;
320}
321
322#ifdef STANDALONE_MATCHING_TEST
323
324/*
325 * Diagnostic routine used in testing this algorithm. It is passed a
326 * pointer to a piece of scratch space that's just been used by
327 * matching_with_scratch, and extracts from it a labelling of the
328 * input graph that acts as a 'witness' to the maximality of the
329 * returned matching.
330 *
331 * The output parameter 'witness' should be an array of (nl+nr)
332 * integers, indexed such that witness[L] corresponds to an L-vertex (for
333 * L=0,1,...,nl-1) and witness[nl+R] corresponds to an R-vertex (for
334 * R=0,1,...,nr-1). On return, this array will assign each vertex a
335 * label which is either 0 or 1, and the following properties will
336 * hold:
337 *
338 * + all vertices not paired up by the matching are type L0 or R1
339 * + every L0->R1 edge is used by the matching
340 * + no L1->R0 edge is used by the matching.
341 *
342 * The mere existence of such a labelling is enough to prove the
343 * maximality of the matching, because if there is any larger matching
344 * then its symmetric difference with this one must include at least
345 * one 'augmenting path', which starts at a free L-vertex and ends at
346 * a free R-vertex, traversing only unused L->R edges and only used
347 * R->L edges. But that would mean it starts at an L0, ends at an R1,
348 * and never follows an edge that can get from an 0 to a 1.
349 */
350static void matching_witness(void *scratchv, int nl, int nr, int *witness)
351{
352 struct scratch *s = (struct scratch *)scratchv;
353 int i, j;
354
355 for (i = 0; i < nl; i++)
356 witness[i] = s->Llayer[i] == -1;
357 for (j = 0; j < nr; j++)
358 witness[nl + j] = s->Rlayer[j] == -1;
359}
360
361/*
362 * Standalone tool to run the matching algorithm.
363 */
364
365#include <string.h>
366#include <ctype.h>
367#include <time.h>
368
369#include "tree234.h"
370
371int nl, nr, count;
372int **adjlists, *adjsizes;
373int *adjdata, *outl, *outr, *witness;
374void *scratch;
375random_state *rs;
376
377void allocate(int nl_, int nr_, int maxedges)
378{
379 nl = nl_;
380 nr = nr_;
381 adjdata = snewn(maxedges, int);
382 adjlists = snewn(nl, int *);
383 adjsizes = snewn(nl, int);
384 outl = snewn(nl, int);
385 outr = snewn(nr, int);
386 witness = snewn(nl+nr, int);
387 scratch = smalloc(matching_scratch_size(nl, nr));
388}
389
390void deallocate(void)
391{
392 sfree(adjlists);
393 sfree(adjsizes);
394 sfree(adjdata);
395 sfree(outl);
396 sfree(outr);
397 sfree(witness);
398 sfree(scratch);
399}
400
401void find_and_check_matching(void)
402{
403 int i, j, k;
404
405 count = matching_with_scratch(scratch, nl, nr, adjlists, adjsizes,
406 rs, outl, outr);
407 matching_witness(scratch, nl, nr, witness);
408
409 for (i = j = 0; i < nl; i++) {
410 if (outl[i] != -1) {
411 assert(0 <= outl[i] && outl[i] < nr);
412 assert(outr[outl[i]] == i);
413 j++;
414
415 for (k = 0; k < adjsizes[i]; k++)
416 if (adjlists[i][k] == outl[i])
417 break;
418 assert(k < adjsizes[i]);
419 }
420 }
421 assert(j == count);
422
423 for (i = j = 0; i < nr; i++) {
424 if (outr[i] != -1) {
425 assert(0 <= outr[i] && outr[i] < nl);
426 assert(outl[outr[i]] == i);
427 j++;
428 }
429 }
430 assert(j == count);
431
432 for (i = 0; i < nl; i++) {
433 if (outl[i] == -1)
434 assert(witness[i] == 0);
435 }
436 for (i = 0; i < nr; i++) {
437 if (outr[i] == -1)
438 assert(witness[nl+i] == 1);
439 }
440 for (i = 0; i < nl; i++) {
441 for (j = 0; j < adjsizes[i]; j++) {
442 k = adjlists[i][j];
443
444 if (outl[i] == k)
445 assert(!(witness[i] == 1 && witness[nl+k] == 0));
446 else
447 assert(!(witness[i] == 0 && witness[nl+k] == 1));
448 }
449 }
450}
451
452struct nodename {
453 const char *name;
454 int index;
455};
456
457int compare_nodes(void *av, void *bv)
458{
459 const struct nodename *a = (const struct nodename *)av;
460 const struct nodename *b = (const struct nodename *)bv;
461 return strcmp(a->name, b->name);
462}
463
464int node_index(tree234 *n2i, tree234 *i2n, const char *name)
465{
466 struct nodename *nn, *nn_prev;
467 char *namedup = dupstr(name);
468
469 nn = snew(struct nodename);
470 nn->name = namedup;
471 nn->index = count234(n2i);
472
473 nn_prev = add234(n2i, nn);
474 if (nn_prev != nn) {
475 sfree(nn);
476 sfree(namedup);
477 } else {
478 addpos234(i2n, nn, nn->index);
479 }
480
481 return nn_prev->index;
482}
483
484struct edge {
485 int L, R;
486};
487
488int compare_edges(void *av, void *bv)
489{
490 const struct edge *a = (const struct edge *)av;
491 const struct edge *b = (const struct edge *)bv;
492 if (a->L < b->L) return -1;
493 if (a->L > b->L) return +1;
494 if (a->R < b->R) return -1;
495 if (a->R > b->R) return +1;
496 return 0;
497}
498
499void matching_from_user_input(FILE *fp, const char *filename)
500{
501 tree234 *Ln2i, *Li2n, *Rn2i, *Ri2n, *edges;
502 char *line = NULL;
503 struct edge *e;
504 int i, lineno = 0;
505 int *adjptr;
506
507 Ln2i = newtree234(compare_nodes);
508 Rn2i = newtree234(compare_nodes);
509 Li2n = newtree234(NULL);
510 Ri2n = newtree234(NULL);
511 edges = newtree234(compare_edges);
512
513 while (sfree(line), lineno++, (line = fgetline(fp)) != NULL) {
514 char *p, *Lname, *Rname;
515
516 p = line;
517 while (*p && isspace((unsigned char)*p)) p++;
518 if (!*p)
519 continue;
520
521 Lname = p;
522 while (*p && !isspace((unsigned char)*p)) p++;
523 if (*p)
524 *p++ = '\0';
525 while (*p && isspace((unsigned char)*p)) p++;
526
527 if (!*p) {
528 fprintf(stderr, "%s:%d: expected 2 words, found 1\n",
529 filename, lineno);
530 exit(1);
531 }
532
533 Rname = p;
534 while (*p && !isspace((unsigned char)*p)) p++;
535 if (*p)
536 *p++ = '\0';
537 while (*p && isspace((unsigned char)*p)) p++;
538
539 if (*p) {
540 fprintf(stderr, "%s:%d: expected 2 words, found more\n",
541 filename, lineno);
542 exit(1);
543 }
544
545 e = snew(struct edge);
546 e->L = node_index(Ln2i, Li2n, Lname);
547 e->R = node_index(Rn2i, Ri2n, Rname);
548 if (add234(edges, e) != e) {
549 fprintf(stderr, "%s:%d: duplicate edge\n",
550 filename, lineno);
551 exit(1);
552 }
553 }
554
555 allocate(count234(Ln2i), count234(Rn2i), count234(edges));
556
557 adjptr = adjdata;
558 for (i = 0; i < nl; i++)
559 adjlists[i] = NULL;
560 for (i = 0; (e = index234(edges, i)) != NULL; i++) {
561 if (!adjlists[e->L])
562 adjlists[e->L] = adjptr;
563 *adjptr++ = e->R;
564 adjsizes[e->L] = adjptr - adjlists[e->L];
565 }
566
567 find_and_check_matching();
568
569 for (i = 0; i < nl; i++) {
570 if (outl[i] != -1) {
571 struct nodename *Lnn = index234(Li2n, i);
572 struct nodename *Rnn = index234(Ri2n, outl[i]);
573 printf("%s %s\n", Lnn->name, Rnn->name);
574 }
575 }
576}
577
578void test_subsets(void)
579{
580 int b = 8;
581 int n = 1 << b;
582 int i, j, nruns, expected_size;
583 int *adjptr;
584 int *edgecounts;
585 struct stats {
586 int min, max;
587 double n, sx, sxx;
588 } *stats;
589 static const char seed[] = "fixed random seed for repeatability";
590
591 /*
592 * Generate a graph in which every subset of [b] = {1,...,b}
593 * (represented as a b-bit integer 0 <= i < n) has an edge going
594 * to every subset obtained by removing exactly one element.
595 *
596 * This graph is the disjoint union of the corresponding graph for
597 * each layer (collection of same-sized subset) of the power set
598 * of [b]. Each of those graphs has a matching of size equal to
599 * the smaller of its vertex sets. So we expect the overall size
600 * of the output matching to be less than n by the size of the
601 * largest layer, that is, to be n - binomial(n, floor(n/2)).
602 *
603 * We run the generation repeatedly, randomising it every time,
604 * and we expect to see every possible edge appear sooner or
605 * later.
606 */
607
608 rs = random_new(seed, strlen(seed));
609
610 allocate(n, n, n*b);
611 adjptr = adjdata;
612 expected_size = 0;
613 for (i = 0; i < n; i++) {
614 adjlists[i] = adjptr;
615 for (j = 0; j < b; j++) {
616 if (i & (1 << j))
617 *adjptr++ = i & ~(1 << j);
618 }
619 adjsizes[i] = adjptr - adjlists[i];
620 if (adjsizes[i] != b/2)
621 expected_size++;
622 }
623
624 edgecounts = snewn(n*b, int);
625 for (i = 0; i < n*b; i++)
626 edgecounts[i] = 0;
627
628 stats = snewn(b, struct stats);
629
630 nruns = 0;
631 while (nruns < 10000) {
632 nruns++;
633 find_and_check_matching();
634 assert(count == expected_size);
635
636 for (i = 0; i < n; i++)
637 for (j = 0; j < b; j++)
638 if ((i ^ outl[i]) == (1 << j))
639 edgecounts[b*i+j]++;
640
641 if (nruns % 1000 == 0) {
642 for (i = 0; i < b; i++) {
643 struct stats *st = &stats[i];
644 st->min = st->max = -1;
645 st->n = st->sx = st->sxx = 0;
646 }
647
648 for (i = 0; i < n; i++) {
649 int pop = 0;
650 for (j = 0; j < b; j++)
651 if (i & (1 << j))
652 pop++;
653 pop--;
654
655 for (j = 0; j < b; j++) {
656 if (i & (1 << j)) {
657 struct stats *st = &stats[pop];
658 int x = edgecounts[b*i+j];
659 if (st->max == -1 || st->max < x)
660 st->max = x;
661 if (st->min == -1 || st->min > x)
662 st->min = x;
663 st->n++;
664 st->sx += x;
665 st->sxx += (double)x*x;
666 } else {
667 assert(edgecounts[b*i+j] == 0);
668 }
669 }
670 }
671 }
672 }
673
674 printf("after %d runs:\n", nruns);
675 for (j = 0; j < b; j++) {
676 struct stats *st = &stats[j];
677 printf("edges between layers %d,%d:"
678 " min=%d max=%d mean=%f variance=%f\n",
679 j, j+1, st->min, st->max, st->sx/st->n,
680 (st->sxx - st->sx*st->sx/st->n) / st->n);
681 }
682}
683
684int main(int argc, char **argv)
685{
686 static const char stdin_identifier[] = "<standard input>";
687 const char *infile = NULL;
688 int doing_opts = TRUE;
689 enum { USER_INPUT, AUTOTEST } mode = USER_INPUT;
690
691 while (--argc > 0) {
692 const char *arg = *++argv;
693
694 if (doing_opts && arg[0] == '-' && arg[1]) {
695 if (!strcmp(arg, "--")) {
696 doing_opts = FALSE;
697 } else if (!strcmp(arg, "--random")) {
698 char buf[64];
699 int len = sprintf(buf, "%lu", (unsigned long)time(NULL));
700 rs = random_new(buf, len);
701 } else if (!strcmp(arg, "--autotest")) {
702 mode = AUTOTEST;
703 } else {
704 fprintf(stderr, "matching: unrecognised option '%s'\n", arg);
705 return 1;
706 }
707 } else {
708 if (!infile) {
709 infile = (!strcmp(arg, "-") ? stdin_identifier : arg);
710 } else {
711 fprintf(stderr, "matching: too many arguments\n");
712 return 1;
713 }
714 }
715 }
716
717 if (mode == USER_INPUT) {
718 FILE *fp;
719
720 if (!infile)
721 infile = stdin_identifier;
722
723 if (infile != stdin_identifier) {
724 fp = fopen(infile, "r");
725 if (!fp) {
726 fprintf(stderr, "matching: could not open input file '%s'\n",
727 infile);
728 return 1;
729 }
730 } else {
731 fp = stdin;
732 }
733
734 matching_from_user_input(fp, infile);
735
736 if (infile != stdin_identifier)
737 fclose(fp);
738 }
739
740 if (mode == AUTOTEST) {
741 if (infile) {
742 fprintf(stderr, "matching: expected no filename argument "
743 "with --autotest\n");
744 return 1;
745 }
746
747 test_subsets();
748 }
749
750 return 0;
751}
752
753#endif /* STANDALONE_MATCHING_TEST */
diff --git a/apps/plugins/puzzles/src/matching.h b/apps/plugins/puzzles/src/matching.h
new file mode 100644
index 0000000000..a4d3098efa
--- /dev/null
+++ b/apps/plugins/puzzles/src/matching.h
@@ -0,0 +1,80 @@
1/*
2 * Hopcroft-Karp algorithm for finding a maximal matching in a
3 * bipartite graph.
4 */
5
6#ifndef MATCHING_MATCHING_H
7#define MATCHING_MATCHING_H
8
9/*
10 * The actual algorithm.
11 *
12 * Inputs:
13 *
14 * - 'scratch' is previously allocated scratch space of a size
15 * previously determined by calling 'matching_scratch_size'.
16 *
17 * - 'nl' is the number of vertices on the left side of the graph.
18 * Left vertices are numbered from 0 to nl-1.
19 *
20 * - 'nr' is the number of vertices on the left side of the graph.
21 * Right vertices are numbered from 0 to nr-1.
22 *
23 * - 'adjlists' and 'adjsizes' represents the graph in adjacency-list
24 * form. For each left vertex L, adjlists[L] points to an array of
25 * adjsizes[L] integers giving the list of right vertices adjacent
26 * to L.
27 *
28 * - 'rs', if not NULL, is a random_state used to perturb the
29 * progress of the algorithm so as to choose randomly from the
30 * possible matchings if there's more than one. (The exact
31 * probability distribution can't be guaranteed, but at the very
32 * least, any matching that exists should be a _possible_ output.)
33 *
34 * If 'rs' is not NULL, then each list in adjlists[] will be permuted
35 * during the course of the algorithm as a side effect. (That's why
36 * it's not an array of _const_ int pointers.)
37 *
38 * Output:
39 *
40 * - 'outl' may be NULL. If non-NULL, it is an array of 'nl'
41 * integers, and outl[L] will be assigned the index of the right
42 * vertex that the output matching paired with the left vertex L,
43 * or -1 if L is unpaired.
44 *
45 * - 'outr' may be NULL. If non-NULL, it is an array of 'nr'
46 * integers, and outr[R] will be assigned the index of the left
47 * vertex that the output matching paired with the right vertex R,
48 * or -1 if R is unpaired.
49 *
50 * - the returned value from the function is the total number of
51 * edges in the matching.
52 */
53int matching_with_scratch(void *scratch,
54 int nl, int nr, int **adjlists, int *adjsizes,
55 random_state *rs, int *outl, int *outr);
56
57/*
58 * The above function expects its 'scratch' parameter to have already
59 * been set up. This function tells you how much space is needed for a
60 * given size of graph, so that you can allocate a single instance of
61 * scratch space and run the algorithm multiple times without the
62 * overhead of an alloc and free every time.
63 */
64size_t matching_scratch_size(int nl, int nr);
65
66/*
67 * Simplified version of the above function. All parameters are the
68 * same, except that 'scratch' is constructed internally and freed on
69 * exit. This is the simplest way to call the algorithm as a one-off;
70 * however, if you need to call it multiple times on the same size of
71 * graph, it is probably better to call the above version directly so
72 * that you only construct 'scratch' once.
73 *
74 * Additional return value is now -1, meaning that scratch space
75 * could not be allocated.
76 */
77int matching(int nl, int nr, int **adjlists, int *adjsizes,
78 random_state *rs, int *outl, int *outr);
79
80#endif /* MATCHING_MATCHING_H */
diff --git a/apps/plugins/puzzles/src/maxflow.c b/apps/plugins/puzzles/src/maxflow.c
deleted file mode 100644
index 97ae8c487d..0000000000
--- a/apps/plugins/puzzles/src/maxflow.c
+++ /dev/null
@@ -1,461 +0,0 @@
1/*
2 * Edmonds-Karp algorithm for finding a maximum flow and minimum
3 * cut in a network. Almost identical to the Ford-Fulkerson
4 * algorithm, but apparently using breadth-first search to find the
5 * _shortest_ augmenting path is a good way to guarantee
6 * termination and ensure the time complexity is not dependent on
7 * the actual value of the maximum flow. I don't understand why
8 * that should be, but it's claimed on the Internet that it's been
9 * proved, and that's good enough for me. I prefer BFS to DFS
10 * anyway :-)
11 */
12
13#include <assert.h>
14#include <stdlib.h>
15#include <stdio.h>
16
17#include "maxflow.h"
18
19#include "puzzles.h" /* for snewn/sfree */
20
21int maxflow_with_scratch(void *scratch, int nv, int source, int sink,
22 int ne, const int *edges, const int *backedges,
23 const int *capacity, int *flow, int *cut)
24{
25 int *todo = (int *)scratch;
26 int *prev = todo + nv;
27 int *firstedge = todo + 2*nv;
28 int *firstbackedge = todo + 3*nv;
29 int i, j, head, tail, from, to;
30 int totalflow;
31
32 /*
33 * Scan the edges array to find the index of the first edge
34 * from each node.
35 */
36 j = 0;
37 for (i = 0; i < ne; i++)
38 while (j <= edges[2*i])
39 firstedge[j++] = i;
40 while (j < nv)
41 firstedge[j++] = ne;
42 assert(j == nv);
43
44 /*
45 * Scan the backedges array to find the index of the first edge
46 * _to_ each node.
47 */
48 j = 0;
49 for (i = 0; i < ne; i++)
50 while (j <= edges[2*backedges[i]+1])
51 firstbackedge[j++] = i;
52 while (j < nv)
53 firstbackedge[j++] = ne;
54 assert(j == nv);
55
56 /*
57 * Start the flow off at zero on every edge.
58 */
59 for (i = 0; i < ne; i++)
60 flow[i] = 0;
61 totalflow = 0;
62
63 /*
64 * Repeatedly look for an augmenting path, and follow it.
65 */
66 while (1) {
67
68 /*
69 * Set up the prev array.
70 */
71 for (i = 0; i < nv; i++)
72 prev[i] = -1;
73
74 /*
75 * Initialise the to-do list for BFS.
76 */
77 head = tail = 0;
78 todo[tail++] = source;
79
80 /*
81 * Now do the BFS loop.
82 */
83 while (head < tail && prev[sink] < 0) {
84 from = todo[head++];
85
86 /*
87 * Try all the forward edges out of node `from'. For a
88 * forward edge to be valid, it must have flow
89 * currently less than its capacity.
90 */
91 for (i = firstedge[from]; i < ne && edges[2*i] == from; i++) {
92 to = edges[2*i+1];
93 if (to == source || prev[to] >= 0)
94 continue;
95 if (capacity[i] >= 0 && flow[i] >= capacity[i])
96 continue;
97 /*
98 * This is a valid augmenting edge. Visit node `to'.
99 */
100 prev[to] = 2*i;
101 todo[tail++] = to;
102 }
103
104 /*
105 * Try all the backward edges into node `from'. For a
106 * backward edge to be valid, it must have flow
107 * currently greater than zero.
108 */
109 for (i = firstbackedge[from];
110 j = backedges[i], i < ne && edges[2*j+1]==from; i++) {
111 to = edges[2*j];
112 if (to == source || prev[to] >= 0)
113 continue;
114 if (flow[j] <= 0)
115 continue;
116 /*
117 * This is a valid augmenting edge. Visit node `to'.
118 */
119 prev[to] = 2*j+1;
120 todo[tail++] = to;
121 }
122 }
123
124 /*
125 * If prev[sink] is non-null, we have found an augmenting
126 * path.
127 */
128 if (prev[sink] >= 0) {
129 int max;
130
131 /*
132 * Work backwards along the path figuring out the
133 * maximum flow we can add.
134 */
135 to = sink;
136 max = -1;
137 while (to != source) {
138 int spare;
139
140 /*
141 * Find the edge we're currently moving along.
142 */
143 i = prev[to];
144 from = edges[i];
145 assert(from != to);
146
147 /*
148 * Determine the spare capacity of this edge.
149 */
150 if (i & 1)
151 spare = flow[i / 2]; /* backward edge */
152 else if (capacity[i / 2] >= 0)
153 spare = capacity[i / 2] - flow[i / 2]; /* forward edge */
154 else
155 spare = -1; /* unlimited forward edge */
156
157 assert(spare != 0);
158
159 if (max < 0 || (spare >= 0 && spare < max))
160 max = spare;
161
162 to = from;
163 }
164 /*
165 * Fail an assertion if max is still < 0, i.e. there is
166 * an entirely unlimited path from source to sink. Also
167 * max should not _be_ zero, because by construction
168 * this _should_ be an augmenting path.
169 */
170 assert(max > 0);
171
172 /*
173 * Now work backwards along the path again, this time
174 * actually adjusting the flow.
175 */
176 to = sink;
177 while (to != source) {
178 /*
179 * Find the edge we're currently moving along.
180 */
181 i = prev[to];
182 from = edges[i];
183 assert(from != to);
184
185 /*
186 * Adjust the edge.
187 */
188 if (i & 1)
189 flow[i / 2] -= max; /* backward edge */
190 else
191 flow[i / 2] += max; /* forward edge */
192
193 to = from;
194 }
195
196 /*
197 * And adjust the overall flow counter.
198 */
199 totalflow += max;
200
201 continue;
202 }
203
204 /*
205 * If we reach here, we have failed to find an augmenting
206 * path, which means we're done. Output the `cut' array if
207 * required, and leave.
208 */
209 if (cut) {
210 for (i = 0; i < nv; i++) {
211 if (i == source || prev[i] >= 0)
212 cut[i] = 0;
213 else
214 cut[i] = 1;
215 }
216 }
217 return totalflow;
218 }
219}
220
221int maxflow_scratch_size(int nv)
222{
223 return (nv * 4) * sizeof(int);
224}
225
226void maxflow_setup_backedges(int ne, const int *edges, int *backedges)
227{
228 int i, n;
229
230 for (i = 0; i < ne; i++)
231 backedges[i] = i;
232
233 /*
234 * We actually can't use the C qsort() function, because we'd
235 * need to pass `edges' as a context parameter to its
236 * comparator function. So instead I'm forced to implement my
237 * own sorting algorithm internally, which is a pest. I'll use
238 * heapsort, because I like it.
239 */
240
241#define LESS(i,j) ( (edges[2*(i)+1] < edges[2*(j)+1]) || \
242 (edges[2*(i)+1] == edges[2*(j)+1] && \
243 edges[2*(i)] < edges[2*(j)]) )
244#define PARENT(n) ( ((n)-1)/2 )
245#define LCHILD(n) ( 2*(n)+1 )
246#define RCHILD(n) ( 2*(n)+2 )
247#define SWAP(i,j) do { int swaptmp = (i); (i) = (j); (j) = swaptmp; } while (0)
248
249 /*
250 * Phase 1: build the heap. We want the _largest_ element at
251 * the top.
252 */
253 n = 0;
254 while (n < ne) {
255 n++;
256
257 /*
258 * Swap element n with its parent repeatedly to preserve
259 * the heap property.
260 */
261 i = n-1;
262
263 while (i > 0) {
264 int p = PARENT(i);
265
266 if (LESS(backedges[p], backedges[i])) {
267 SWAP(backedges[p], backedges[i]);
268 i = p;
269 } else
270 break;
271 }
272 }
273
274 /*
275 * Phase 2: repeatedly remove the largest element and stick it
276 * at the top of the array.
277 */
278 while (n > 0) {
279 /*
280 * The largest element is at position 0. Put it at the top,
281 * and swap the arbitrary element from that position into
282 * position 0.
283 */
284 n--;
285 SWAP(backedges[0], backedges[n]);
286
287 /*
288 * Now repeatedly move that arbitrary element down the heap
289 * by swapping it with the more suitable of its children.
290 */
291 i = 0;
292 while (1) {
293 int lc, rc;
294
295 lc = LCHILD(i);
296 rc = RCHILD(i);
297
298 if (lc >= n)
299 break; /* we've hit bottom */
300
301 if (rc >= n) {
302 /*
303 * Special case: there is only one child to check.
304 */
305 if (LESS(backedges[i], backedges[lc]))
306 SWAP(backedges[i], backedges[lc]);
307
308 /* _Now_ we've hit bottom. */
309 break;
310 } else {
311 /*
312 * The common case: there are two children and we
313 * must check them both.
314 */
315 if (LESS(backedges[i], backedges[lc]) ||
316 LESS(backedges[i], backedges[rc])) {
317 /*
318 * Pick the more appropriate child to swap with
319 * (i.e. the one which would want to be the
320 * parent if one were above the other - as one
321 * is about to be).
322 */
323 if (LESS(backedges[lc], backedges[rc])) {
324 SWAP(backedges[i], backedges[rc]);
325 i = rc;
326 } else {
327 SWAP(backedges[i], backedges[lc]);
328 i = lc;
329 }
330 } else {
331 /* This element is in the right place; we're done. */
332 break;
333 }
334 }
335 }
336 }
337
338#undef LESS
339#undef PARENT
340#undef LCHILD
341#undef RCHILD
342#undef SWAP
343
344}
345
346int maxflow(int nv, int source, int sink,
347 int ne, const int *edges, const int *capacity,
348 int *flow, int *cut)
349{
350 void *scratch;
351 int *backedges;
352 int size;
353 int ret;
354
355 /*
356 * Allocate the space.
357 */
358 size = ne * sizeof(int) + maxflow_scratch_size(nv);
359 backedges = smalloc(size);
360 if (!backedges)
361 return -1;
362 scratch = backedges + ne;
363
364 /*
365 * Set up the backedges array.
366 */
367 maxflow_setup_backedges(ne, edges, backedges);
368
369 /*
370 * Call the main function.
371 */
372 ret = maxflow_with_scratch(scratch, nv, source, sink, ne, edges,
373 backedges, capacity, flow, cut);
374
375 /*
376 * Free the scratch space.
377 */
378 sfree(backedges);
379
380 /*
381 * And we're done.
382 */
383 return ret;
384}
385
386#ifdef TESTMODE
387
388#define MAXEDGES 256
389#define MAXVERTICES 128
390#define ADDEDGE(i,j) do{edges[ne*2] = (i); edges[ne*2+1] = (j); ne++;}while(0)
391
392int compare_edge(const void *av, const void *bv)
393{
394 const int *a = (const int *)av;
395 const int *b = (const int *)bv;
396
397 if (a[0] < b[0])
398 return -1;
399 else if (a[0] > b[0])
400 return +1;
401 else if (a[1] < b[1])
402 return -1;
403 else if (a[1] > b[1])
404 return +1;
405 else
406 return 0;
407}
408
409int main(void)
410{
411 int edges[MAXEDGES*2], ne, nv;
412 int capacity[MAXEDGES], flow[MAXEDGES], cut[MAXVERTICES];
413 int source, sink, p, q, i, j, ret;
414
415 /*
416 * Use this algorithm to find a maximal complete matching in a
417 * bipartite graph.
418 */
419 ne = 0;
420 nv = 0;
421 source = nv++;
422 p = nv;
423 nv += 5;
424 q = nv;
425 nv += 5;
426 sink = nv++;
427 for (i = 0; i < 5; i++) {
428 capacity[ne] = 1;
429 ADDEDGE(source, p+i);
430 }
431 for (i = 0; i < 5; i++) {
432 capacity[ne] = 1;
433 ADDEDGE(q+i, sink);
434 }
435 j = ne;
436 capacity[ne] = 1; ADDEDGE(p+0,q+0);
437 capacity[ne] = 1; ADDEDGE(p+1,q+0);
438 capacity[ne] = 1; ADDEDGE(p+1,q+1);
439 capacity[ne] = 1; ADDEDGE(p+2,q+1);
440 capacity[ne] = 1; ADDEDGE(p+2,q+2);
441 capacity[ne] = 1; ADDEDGE(p+3,q+2);
442 capacity[ne] = 1; ADDEDGE(p+3,q+3);
443 capacity[ne] = 1; ADDEDGE(p+4,q+3);
444 /* capacity[ne] = 1; ADDEDGE(p+2,q+4); */
445 qsort(edges, ne, 2*sizeof(int), compare_edge);
446
447 ret = maxflow(nv, source, sink, ne, edges, capacity, flow, cut);
448
449 printf("ret = %d\n", ret);
450
451 for (i = 0; i < ne; i++)
452 printf("flow %d: %d -> %d\n", flow[i], edges[2*i], edges[2*i+1]);
453
454 for (i = 0; i < nv; i++)
455 if (cut[i] == 0)
456 printf("difficult set includes %d\n", i);
457
458 return 0;
459}
460
461#endif
diff --git a/apps/plugins/puzzles/src/maxflow.h b/apps/plugins/puzzles/src/maxflow.h
deleted file mode 100644
index d490f45421..0000000000
--- a/apps/plugins/puzzles/src/maxflow.h
+++ /dev/null
@@ -1,95 +0,0 @@
1/*
2 * Edmonds-Karp algorithm for finding a maximum flow and minimum
3 * cut in a network. Almost identical to the Ford-Fulkerson
4 * algorithm, but apparently using breadth-first search to find the
5 * _shortest_ augmenting path is a good way to guarantee
6 * termination and ensure the time complexity is not dependent on
7 * the actual value of the maximum flow. I don't understand why
8 * that should be, but it's claimed on the Internet that it's been
9 * proved, and that's good enough for me. I prefer BFS to DFS
10 * anyway :-)
11 */
12
13#ifndef MAXFLOW_MAXFLOW_H
14#define MAXFLOW_MAXFLOW_H
15
16/*
17 * The actual algorithm.
18 *
19 * Inputs:
20 *
21 * - `scratch' is previously allocated scratch space of a size
22 * previously determined by calling `maxflow_scratch_size'.
23 *
24 * - `nv' is the number of vertices. Vertices are assumed to be
25 * numbered from 0 to nv-1.
26 *
27 * - `source' and `sink' are the distinguished source and sink
28 * vertices.
29 *
30 * - `ne' is the number of edges in the graph.
31 *
32 * - `edges' is an array of 2*ne integers, giving a (source, dest)
33 * pair for each network edge. Edge pairs are expected to be
34 * sorted in lexicographic order.
35 *
36 * - `backedges' is an array of `ne' integers, each a distinct
37 * index into `edges'. The edges in `edges', if permuted as
38 * specified by this array, should end up sorted in the _other_
39 * lexicographic order, i.e. dest taking priority over source.
40 *
41 * - `capacity' is an array of `ne' integers, giving a maximum
42 * flow capacity for each edge. A negative value is taken to
43 * indicate unlimited capacity on that edge, but note that there
44 * may not be any unlimited-capacity _path_ from source to sink
45 * or an assertion will be failed.
46 *
47 * Output:
48 *
49 * - `flow' must be non-NULL. It is an array of `ne' integers,
50 * each giving the final flow along each edge.
51 *
52 * - `cut' may be NULL. If non-NULL, it is an array of `nv'
53 * integers, which will be set to zero or one on output, in such
54 * a way that:
55 * + the set of zero vertices includes the source
56 * + the set of one vertices includes the sink
57 * + the maximum flow capacity between the zero and one vertex
58 * sets is achieved (i.e. all edges from a zero vertex to a
59 * one vertex are at full capacity, while all edges from a
60 * one vertex to a zero vertex have no flow at all).
61 *
62 * - the returned value from the function is the total flow
63 * achieved.
64 */
65int maxflow_with_scratch(void *scratch, int nv, int source, int sink,
66 int ne, const int *edges, const int *backedges,
67 const int *capacity, int *flow, int *cut);
68
69/*
70 * The above function expects its `scratch' and `backedges'
71 * parameters to have already been set up. This allows you to set
72 * them up once and use them in multiple invocates of the
73 * algorithm. Now I provide functions to actually do the setting
74 * up.
75 */
76int maxflow_scratch_size(int nv);
77void maxflow_setup_backedges(int ne, const int *edges, int *backedges);
78
79/*
80 * Simplified version of the above function. All parameters are the
81 * same, except that `scratch' and `backedges' are constructed
82 * internally. This is the simplest way to call the algorithm as a
83 * one-off; however, if you need to call it multiple times on the
84 * same network, it is probably better to call the above version
85 * directly so that you only construct `scratch' and `backedges'
86 * once.
87 *
88 * Additional return value is now -1, meaning that scratch space
89 * could not be allocated.
90 */
91int maxflow(int nv, int source, int sink,
92 int ne, const int *edges, const int *capacity,
93 int *flow, int *cut);
94
95#endif /* MAXFLOW_MAXFLOW_H */
diff --git a/apps/plugins/puzzles/src/midend.c b/apps/plugins/puzzles/src/midend.c
index 0c91388d8f..a42e51639e 100644
--- a/apps/plugins/puzzles/src/midend.c
+++ b/apps/plugins/puzzles/src/midend.c
@@ -1104,6 +1104,27 @@ int midend_process_key(midend *me, int x, int y, int button)
1104 return ret; 1104 return ret;
1105} 1105}
1106 1106
1107key_label *midend_request_keys(midend *me, int *n)
1108{
1109 key_label *keys = NULL;
1110 int nkeys = 0, i;
1111
1112 if(me->ourgame->request_keys)
1113 {
1114 keys = me->ourgame->request_keys(midend_get_params(me), &nkeys);
1115 for(i = 0; i < nkeys; ++i)
1116 {
1117 if(!keys[i].label)
1118 keys[i].label = button2label(keys[i].button);
1119 }
1120 }
1121
1122 if(n)
1123 *n = nkeys;
1124
1125 return keys;
1126}
1127
1107void midend_redraw(midend *me) 1128void midend_redraw(midend *me)
1108{ 1129{
1109 assert(me->drawing); 1130 assert(me->drawing);
diff --git a/apps/plugins/puzzles/src/misc.c b/apps/plugins/puzzles/src/misc.c
index 83671a2744..6b4414f6e8 100644
--- a/apps/plugins/puzzles/src/misc.c
+++ b/apps/plugins/puzzles/src/misc.c
@@ -21,6 +21,15 @@ void free_cfg(config_item *cfg)
21 sfree(cfg); 21 sfree(cfg);
22} 22}
23 23
24void free_keys(key_label *keys, int nkeys)
25{
26 int i;
27
28 for(i = 0; i < nkeys; i++)
29 sfree(keys->label);
30 sfree(keys);
31}
32
24/* 33/*
25 * The Mines (among others) game descriptions contain the location of every 34 * The Mines (among others) game descriptions contain the location of every
26 * mine, and can therefore be used to cheat. 35 * mine, and can therefore be used to cheat.
@@ -169,6 +178,25 @@ unsigned char *hex2bin(const char *in, int outlen)
169 return ret; 178 return ret;
170} 179}
171 180
181char *fgetline(FILE *fp)
182{
183 char *ret = snewn(512, char);
184 int size = 512, len = 0;
185 while (fgets(ret + len, size - len, fp)) {
186 len += strlen(ret + len);
187 if (ret[len-1] == '\n')
188 break; /* got a newline, we're done */
189 size = len + 512;
190 ret = sresize(ret, size, char);
191 }
192 if (len == 0) { /* first fgets returned NULL */
193 sfree(ret);
194 return NULL;
195 }
196 ret[len] = '\0';
197 return ret;
198}
199
172void game_mkhighlight_specific(frontend *fe, float *ret, 200void game_mkhighlight_specific(frontend *fe, float *ret,
173 int background, int highlight, int lowlight) 201 int background, int highlight, int lowlight)
174{ 202{
@@ -380,4 +408,42 @@ int ftoa(char *buf, float f)
380 return sprintf(buf, "%d.%06d", (int)f, abs((int)((f - (int)f)*1e6))); 408 return sprintf(buf, "%d.%06d", (int)f, abs((int)((f - (int)f)*1e6)));
381} 409}
382 410
411/* Returns a dynamically allocated label for a generic button.
412 * Game-specific buttons should go into the `label' field of key_label
413 * instead. */
414char *button2label(int button)
415{
416 /* check if it's a keyboard button */
417 if(('A' <= button && button <= 'Z') ||
418 ('a' <= button && button <= 'z') ||
419 ('0' <= button && button <= '9') )
420 {
421 char str[2];
422 str[0] = button;
423 str[1] = '\0';
424 return dupstr(str);
425 }
426
427 switch(button)
428 {
429 case CURSOR_UP:
430 return dupstr("Up");
431 case CURSOR_DOWN:
432 return dupstr("Down");
433 case CURSOR_LEFT:
434 return dupstr("Left");
435 case CURSOR_RIGHT:
436 return dupstr("Right");
437 case CURSOR_SELECT:
438 return dupstr("Select");
439 case '\b':
440 return dupstr("Clear");
441 default:
442 fatal("unknown generic key");
443 }
444
445 /* should never get here */
446 return NULL;
447}
448
383/* vim: set shiftwidth=4 tabstop=8: */ 449/* vim: set shiftwidth=4 tabstop=8: */
diff --git a/apps/plugins/puzzles/src/missing b/apps/plugins/puzzles/src/missing
new file mode 100755
index 0000000000..c6e379584b
--- /dev/null
+++ b/apps/plugins/puzzles/src/missing
@@ -0,0 +1,215 @@
1#! /bin/sh
2# Common wrapper for a few potentially missing GNU programs.
3
4scriptversion=2016-01-11.22; # UTC
5
6# Copyright (C) 1996-2017 Free Software Foundation, Inc.
7# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
8
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2, or (at your option)
12# any later version.
13
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
21
22# As a special exception to the GNU General Public License, if you
23# distribute this file as part of a program that contains a
24# configuration script generated by Autoconf, you may include it under
25# the same distribution terms that you use for the rest of that program.
26
27if test $# -eq 0; then
28 echo 1>&2 "Try '$0 --help' for more information"
29 exit 1
30fi
31
32case $1 in
33
34 --is-lightweight)
35 # Used by our autoconf macros to check whether the available missing
36 # script is modern enough.
37 exit 0
38 ;;
39
40 --run)
41 # Back-compat with the calling convention used by older automake.
42 shift
43 ;;
44
45 -h|--h|--he|--hel|--help)
46 echo "\
47$0 [OPTION]... PROGRAM [ARGUMENT]...
48
49Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
50to PROGRAM being missing or too old.
51
52Options:
53 -h, --help display this help and exit
54 -v, --version output version information and exit
55
56Supported PROGRAM values:
57 aclocal autoconf autoheader autom4te automake makeinfo
58 bison yacc flex lex help2man
59
60Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
61'g' are ignored when checking the name.
62
63Send bug reports to <bug-automake@gnu.org>."
64 exit $?
65 ;;
66
67 -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
68 echo "missing $scriptversion (GNU Automake)"
69 exit $?
70 ;;
71
72 -*)
73 echo 1>&2 "$0: unknown '$1' option"
74 echo 1>&2 "Try '$0 --help' for more information"
75 exit 1
76 ;;
77
78esac
79
80# Run the given program, remember its exit status.
81"$@"; st=$?
82
83# If it succeeded, we are done.
84test $st -eq 0 && exit 0
85
86# Also exit now if we it failed (or wasn't found), and '--version' was
87# passed; such an option is passed most likely to detect whether the
88# program is present and works.
89case $2 in --version|--help) exit $st;; esac
90
91# Exit code 63 means version mismatch. This often happens when the user
92# tries to use an ancient version of a tool on a file that requires a
93# minimum version.
94if test $st -eq 63; then
95 msg="probably too old"
96elif test $st -eq 127; then
97 # Program was missing.
98 msg="missing on your system"
99else
100 # Program was found and executed, but failed. Give up.
101 exit $st
102fi
103
104perl_URL=http://www.perl.org/
105flex_URL=http://flex.sourceforge.net/
106gnu_software_URL=http://www.gnu.org/software
107
108program_details ()
109{
110 case $1 in
111 aclocal|automake)
112 echo "The '$1' program is part of the GNU Automake package:"
113 echo "<$gnu_software_URL/automake>"
114 echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
115 echo "<$gnu_software_URL/autoconf>"
116 echo "<$gnu_software_URL/m4/>"
117 echo "<$perl_URL>"
118 ;;
119 autoconf|autom4te|autoheader)
120 echo "The '$1' program is part of the GNU Autoconf package:"
121 echo "<$gnu_software_URL/autoconf/>"
122 echo "It also requires GNU m4 and Perl in order to run:"
123 echo "<$gnu_software_URL/m4/>"
124 echo "<$perl_URL>"
125 ;;
126 esac
127}
128
129give_advice ()
130{
131 # Normalize program name to check for.
132 normalized_program=`echo "$1" | sed '
133 s/^gnu-//; t
134 s/^gnu//; t
135 s/^g//; t'`
136
137 printf '%s\n' "'$1' is $msg."
138
139 configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
140 case $normalized_program in
141 autoconf*)
142 echo "You should only need it if you modified 'configure.ac',"
143 echo "or m4 files included by it."
144 program_details 'autoconf'
145 ;;
146 autoheader*)
147 echo "You should only need it if you modified 'acconfig.h' or"
148 echo "$configure_deps."
149 program_details 'autoheader'
150 ;;
151 automake*)
152 echo "You should only need it if you modified 'Makefile.am' or"
153 echo "$configure_deps."
154 program_details 'automake'
155 ;;
156 aclocal*)
157 echo "You should only need it if you modified 'acinclude.m4' or"
158 echo "$configure_deps."
159 program_details 'aclocal'
160 ;;
161 autom4te*)
162 echo "You might have modified some maintainer files that require"
163 echo "the 'autom4te' program to be rebuilt."
164 program_details 'autom4te'
165 ;;
166 bison*|yacc*)
167 echo "You should only need it if you modified a '.y' file."
168 echo "You may want to install the GNU Bison package:"
169 echo "<$gnu_software_URL/bison/>"
170 ;;
171 lex*|flex*)
172 echo "You should only need it if you modified a '.l' file."
173 echo "You may want to install the Fast Lexical Analyzer package:"
174 echo "<$flex_URL>"
175 ;;
176 help2man*)
177 echo "You should only need it if you modified a dependency" \
178 "of a man page."
179 echo "You may want to install the GNU Help2man package:"
180 echo "<$gnu_software_URL/help2man/>"
181 ;;
182 makeinfo*)
183 echo "You should only need it if you modified a '.texi' file, or"
184 echo "any other file indirectly affecting the aspect of the manual."
185 echo "You might want to install the Texinfo package:"
186 echo "<$gnu_software_URL/texinfo/>"
187 echo "The spurious makeinfo call might also be the consequence of"
188 echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
189 echo "want to install GNU make:"
190 echo "<$gnu_software_URL/make/>"
191 ;;
192 *)
193 echo "You might have modified some files without having the proper"
194 echo "tools for further handling them. Check the 'README' file, it"
195 echo "often tells you about the needed prerequisites for installing"
196 echo "this package. You may also peek at any GNU archive site, in"
197 echo "case some other package contains this missing '$1' program."
198 ;;
199 esac
200}
201
202give_advice "$1" | sed -e '1s/^/WARNING: /' \
203 -e '2,$s/^/ /' >&2
204
205# Propagate the correct exit status (expected to be 127 for a program
206# not found, 63 for a program that failed due to version mismatch).
207exit $st
208
209# Local variables:
210# eval: (add-hook 'write-file-hooks 'time-stamp)
211# time-stamp-start: "scriptversion="
212# time-stamp-format: "%:y-%02m-%02d.%02H"
213# time-stamp-time-zone: "UTC0"
214# time-stamp-end: "; # UTC"
215# End:
diff --git a/apps/plugins/puzzles/src/mkfiles.pl b/apps/plugins/puzzles/src/mkfiles.pl
index c0874ae07e..20fd7e0f46 100755
--- a/apps/plugins/puzzles/src/mkfiles.pl
+++ b/apps/plugins/puzzles/src/mkfiles.pl
@@ -638,7 +638,7 @@ if (defined $makefiles{'clangcl'}) {
638 print "\t\$(RC) \$(RCFLAGS) ".$d->{deps}->[0]." -o ".$d->{obj}."\n\n"; 638 print "\t\$(RC) \$(RCFLAGS) ".$d->{deps}->[0]." -o ".$d->{obj}."\n\n";
639 } else { 639 } else {
640 $deflist = join "", map { " /D$_" } @{$d->{defs}}; 640 $deflist = join "", map { " /D$_" } @{$d->{defs}};
641 print "\t\$(CC) /Fo\$(BUILDDIR)".$d->{obj}." \$(COMPAT) \$(CFLAGS) \$(XFLAGS)$deflist /c \$<\n\n"; 641 print "\t\$(CC) /Fo".$d->{obj}." \$(COMPAT) \$(CFLAGS) \$(XFLAGS)$deflist /c \$<\n\n";
642 } 642 }
643 } 643 }
644 print "\nclean:\n". 644 print "\nclean:\n".
diff --git a/apps/plugins/puzzles/src/puzzles.but b/apps/plugins/puzzles/src/puzzles.but
index 2c448b8030..e22e63d544 100644
--- a/apps/plugins/puzzles/src/puzzles.but
+++ b/apps/plugins/puzzles/src/puzzles.but
@@ -2400,10 +2400,15 @@ increasingly complex reasoning to avoid having to backtrack.
2400\cfg{winhelp-topic}{games.galaxies} 2400\cfg{winhelp-topic}{games.galaxies}
2401 2401
2402You have a rectangular grid containing a number of dots. Your aim is 2402You have a rectangular grid containing a number of dots. Your aim is
2403to draw edges along the grid lines which divide the rectangle into 2403to partition the rectangle into connected regions of squares, in such
2404regions in such a way that every region is 180\u00b0{-degree} 2404a way that every region is 180\u00b0{-degree} rotationally symmetric,
2405rotationally symmetric, and contains exactly one dot which is 2405and contains exactly one dot which is located at its centre of
2406located at its centre of symmetry. 2406symmetry.
2407
2408To enter your solution, you draw lines along the grid edges to mark
2409the boundaries of the regions. The puzzle is complete when the marked
2410lines on the grid are precisely those that separate two squares
2411belonging to different regions.
2407 2412
2408This puzzle was invented by \i{Nikoli} \k{nikoli-galaxies}, under 2413This puzzle was invented by \i{Nikoli} \k{nikoli-galaxies}, under
2409the name \q{Tentai Show}; its name is commonly translated into 2414the name \q{Tentai Show}; its name is commonly translated into
@@ -2418,11 +2423,11 @@ Galaxies was contributed to this collection by James Harvey.
2418\IM{Galaxies controls} controls, for Galaxies 2423\IM{Galaxies controls} controls, for Galaxies
2419 2424
2420Left-click on any grid line to draw an edge if there isn't one 2425Left-click on any grid line to draw an edge if there isn't one
2421already, or to remove one if there is. When you create a valid 2426already, or to remove one if there is. When you create a valid region
2422region (one which is closed, contains exactly one dot, is 2427(one which is closed, contains exactly one dot, is 180\u00b0{-degree}
2423180\u00b0{-degree} symmetric about that dot, and contains no 2428symmetric about that dot, and contains no extraneous edges between two
2424extraneous edges inside it) it will be highlighted automatically; so 2429of its own squares), it will be highlighted automatically; so your aim
2425your aim is to have the whole grid highlighted in that way. 2430is to have the whole grid highlighted in that way.
2426 2431
2427During solving, you might know that a particular grid square belongs 2432During solving, you might know that a particular grid square belongs
2428to a specific dot, but not be sure of where the edges go and which 2433to a specific dot, but not be sure of where the edges go and which
diff --git a/apps/plugins/puzzles/src/puzzles.cnt b/apps/plugins/puzzles/src/puzzles.cnt
new file mode 100644
index 0000000000..fef32228ea
--- /dev/null
+++ b/apps/plugins/puzzles/src/puzzles.cnt
@@ -0,0 +1,167 @@
1:Title Simon Tatham's Portable Puzzle Collection
21 Contents=Top
31 Chapter 1: Introduction
42 Chapter 1: Introduction=t00000000
51 Chapter 2: Common features
62 Chapter 2: Common features=t00000001
72 Section 2.1: Common actions=t00000002
82 Section 2.2: Specifying games with the game ID=t00000003
92 Section 2.3: The ‘Type’ menu=t00000004
102 Section 2.4: Specifying game parameters on the command line=t00000005
112 Section 2.5: Unix command-line options=t00000006
121 Chapter 3: Net
132 Chapter 3: Net=games.net
142 Section 3.1: Net controls=t00000007
152 Section 3.2: Net parameters=t00000008
161 Chapter 4: Cube
172 Chapter 4: Cube=games.cube
182 Section 4.1: Cube controls=t00000009
192 Section 4.2: Cube parameters=t00000010
201 Chapter 5: Fifteen
212 Chapter 5: Fifteen=games.fifteen
222 Section 5.1: Fifteen controls=t00000011
232 Section 5.2: Fifteen parameters=t00000012
241 Chapter 6: Sixteen
252 Chapter 6: Sixteen=games.sixteen
262 Section 6.1: Sixteen controls=t00000013
272 Section 6.2: Sixteen parameters=t00000014
281 Chapter 7: Twiddle
292 Chapter 7: Twiddle=games.twiddle
302 Section 7.1: Twiddle controls=t00000015
312 Section 7.2: Twiddle parameters=t00000016
321 Chapter 8: Rectangles
332 Chapter 8: Rectangles=games.rectangles
342 Section 8.1: Rectangles controls=t00000017
352 Section 8.2: Rectangles parameters=t00000018
361 Chapter 9: Netslide
372 Chapter 9: Netslide=games.netslide
381 Chapter 10: Pattern
392 Chapter 10: Pattern=games.pattern
402 Section 10.1: Pattern controls=t00000019
412 Section 10.2: Pattern parameters=t00000020
421 Chapter 11: Solo
432 Chapter 11: Solo=games.solo
442 Section 11.1: Solo controls=t00000021
452 Section 11.2: Solo parameters=t00000022
461 Chapter 12: Mines
472 Chapter 12: Mines=games.mines
482 Section 12.1: Mines controls=t00000023
492 Section 12.2: Mines parameters=t00000024
501 Chapter 13: Same Game
512 Chapter 13: Same Game=games.samegame
522 Section 13.1: Same Game controls=t00000025
532 Section 13.2: Same Game parameters=t00000026
541 Chapter 14: Flip
552 Chapter 14: Flip=games.flip
562 Section 14.1: Flip controls=t00000027
572 Section 14.2: Flip parameters=t00000028
581 Chapter 15: Guess
592 Chapter 15: Guess=games.guess
602 Section 15.1: Guess controls=t00000029
612 Section 15.2: Guess parameters=t00000030
621 Chapter 16: Pegs
632 Chapter 16: Pegs=games.pegs
642 Section 16.1: Pegs controls=t00000031
652 Section 16.2: Pegs parameters=t00000032
661 Chapter 17: Dominosa
672 Chapter 17: Dominosa=games.dominosa
682 Section 17.1: Dominosa controls=t00000033
692 Section 17.2: Dominosa parameters=t00000034
701 Chapter 18: Untangle
712 Chapter 18: Untangle=games.untangle
722 Section 18.1: Untangle controls=t00000035
732 Section 18.2: Untangle parameters=t00000036
741 Chapter 19: Black Box
752 Chapter 19: Black Box=games.blackbox
762 Section 19.1: Black Box controls=t00000037
772 Section 19.2: Black Box parameters=t00000038
781 Chapter 20: Slant
792 Chapter 20: Slant=games.slant
802 Section 20.1: Slant controls=t00000039
812 Section 20.2: Slant parameters=t00000040
821 Chapter 21: Light Up
832 Chapter 21: Light Up=games.lightup
842 Section 21.1: Light Up controls=t00000041
852 Section 21.2: Light Up parameters=t00000042
861 Chapter 22: Map
872 Chapter 22: Map=games.map
882 Section 22.1: Map controls=t00000043
892 Section 22.2: Map parameters=t00000044
901 Chapter 23: Loopy
912 Chapter 23: Loopy=games.loopy
922 Section 23.1: Loopy controls=t00000045
932 Section 23.2: Loopy parameters=t00000046
941 Chapter 24: Inertia
952 Chapter 24: Inertia=games.inertia
962 Section 24.1: Inertia controls=t00000047
972 Section 24.2: Inertia parameters=t00000048
981 Chapter 25: Tents
992 Chapter 25: Tents=games.tents
1002 Section 25.1: Tents controls=t00000049
1012 Section 25.2: Tents parameters=t00000050
1021 Chapter 26: Bridges
1032 Chapter 26: Bridges=games.bridges
1042 Section 26.1: Bridges controls=t00000051
1052 Section 26.2: Bridges parameters=t00000052
1061 Chapter 27: Unequal
1072 Chapter 27: Unequal=games.unequal
1082 Section 27.1: Unequal controls=t00000053
1092 Section 27.2: Unequal parameters=t00000054
1101 Chapter 28: Galaxies
1112 Chapter 28: Galaxies=games.galaxies
1122 Section 28.1: Galaxies controls=t00000055
1132 Section 28.2: Galaxies parameters=t00000056
1141 Chapter 29: Filling
1152 Chapter 29: Filling=games.filling
1162 Section 29.1: Filling controls=t00000057
1172 Section 29.2: Filling parameters=t00000058
1181 Chapter 30: Keen
1192 Chapter 30: Keen=games.keen
1202 Section 30.1: Keen controls=t00000059
1212 Section 30.2: Keen parameters=t00000060
1221 Chapter 31: Towers
1232 Chapter 31: Towers=games.towers
1242 Section 31.1: Towers controls=t00000061
1252 Section 31.2: Towers parameters=t00000062
1261 Chapter 32: Singles
1272 Chapter 32: Singles=games.singles
1282 Section 32.1: Singles controls=t00000063
1292 Section 32.2: Singles parameters=t00000064
1301 Chapter 33: Magnets
1312 Chapter 33: Magnets=games.magnets
1322 Section 33.1: Magnets controls=t00000065
1332 Section 33.2: Magnets parameters=t00000066
1341 Chapter 34: Signpost
1352 Chapter 34: Signpost=games.signpost
1362 Section 34.1: Signpost controls=t00000067
1372 Section 34.2: Signpost parameters=t00000068
1381 Chapter 35: Range
1392 Chapter 35: Range=games.range
1402 Section 35.1: Range controls=t00000069
1412 Section 35.2: Range parameters=t00000070
1421 Chapter 36: Pearl
1432 Chapter 36: Pearl=games.pearl
1442 Section 36.1: Pearl controls=t00000071
1452 Section 36.2: Pearl parameters=t00000072
1461 Chapter 37: Undead
1472 Chapter 37: Undead=games.undead
1482 Section 37.1: Undead controls=t00000073
1492 Section 37.2: Undead parameters=t00000074
1501 Chapter 38: Unruly
1512 Chapter 38: Unruly=games.unruly
1522 Section 38.1: Unruly controls=t00000075
1532 Section 38.2: Unruly parameters=t00000076
1541 Chapter 39: Flood
1552 Chapter 39: Flood=games.flood
1562 Section 39.1: Flood controls=t00000077
1572 Section 39.2: Flood parameters=t00000078
1581 Chapter 40: Tracks
1592 Chapter 40: Tracks=games.tracks
1602 Section 40.1: Tracks controls=t00000079
1612 Section 40.2: Tracks parameters=t00000080
1621 Chapter 41: Palisade
1632 Chapter 41: Palisade=games.palisade
1642 Section 41.1: Palisade controls=t00000081
1652 Section 41.2: Palisade parameters=t00000082
1661 Appendix A: Licence
1672 Appendix A: Licence=t00000083
diff --git a/apps/plugins/puzzles/src/puzzles.h b/apps/plugins/puzzles/src/puzzles.h
index 031bdfc2e8..8759139404 100644
--- a/apps/plugins/puzzles/src/puzzles.h
+++ b/apps/plugins/puzzles/src/puzzles.h
@@ -218,6 +218,24 @@ void preset_menu_add_preset(struct preset_menu *menu,
218game_params *preset_menu_lookup_by_id(struct preset_menu *menu, int id); 218game_params *preset_menu_lookup_by_id(struct preset_menu *menu, int id);
219 219
220/* 220/*
221 * Small structure specifying a UI button in a keyboardless front
222 * end. The button will have the text of "label" written on it, and
223 * pressing it causes the value "button" to be passed to
224 * midend_process_key() as if typed at the keyboard.
225 *
226 * If `label' is NULL (which it likely will be), a generic label can
227 * be generated with the button2label() function.
228 */
229typedef struct key_label {
230 /* What should be displayed to the user by the frontend. Backends
231 * can set this field to NULL and have it filled in by the midend
232 * with a generic label. Dynamically allocated, but frontends
233 * should probably use free_keys() to free instead. */
234 char *label;
235 int button; /* passed to midend_process_key when button is pressed */
236} key_label;
237
238/*
221 * Platform routines 239 * Platform routines
222 */ 240 */
223 241
@@ -301,6 +319,7 @@ void midend_new_game(midend *me);
301void midend_restart_game(midend *me); 319void midend_restart_game(midend *me);
302void midend_stop_anim(midend *me); 320void midend_stop_anim(midend *me);
303int midend_process_key(midend *me, int x, int y, int button); 321int midend_process_key(midend *me, int x, int y, int button);
322key_label *midend_request_keys(midend *me, int *nkeys);
304void midend_force_redraw(midend *me); 323void midend_force_redraw(midend *me);
305void midend_redraw(midend *me); 324void midend_redraw(midend *me);
306float *midend_colours(midend *me, int *ncolours); 325float *midend_colours(midend *me, int *ncolours);
@@ -356,7 +375,9 @@ char *dupstr(const char *s);
356 * misc.c 375 * misc.c
357 */ 376 */
358void free_cfg(config_item *cfg); 377void free_cfg(config_item *cfg);
378void free_keys(key_label *keys, int nkeys);
359void obfuscate_bitmap(unsigned char *bmp, int bits, int decode); 379void obfuscate_bitmap(unsigned char *bmp, int bits, int decode);
380char *fgetline(FILE *fp);
360 381
361/* allocates output each time. len is always in bytes of binary data. 382/* allocates output each time. len is always in bytes of binary data.
362 * May assert (or just go wrong) if lengths are unchecked. */ 383 * May assert (or just go wrong) if lengths are unchecked. */
@@ -403,6 +424,11 @@ void copy_left_justified(char *buf, size_t sz, const char *str);
403 * that don't have one */ 424 * that don't have one */
404int ftoa(char *buf, float f); 425int ftoa(char *buf, float f);
405 426
427/* Returns a generic label based on the value of `button.' To be used
428 whenever a `label' field returned by the request_keys() game
429 function is NULL. Dynamically allocated, to be freed by caller. */
430char *button2label(int button);
431
406/* 432/*
407 * dsf.c 433 * dsf.c
408 */ 434 */
@@ -613,7 +639,7 @@ struct game {
613 void (*free_ui)(game_ui *ui); 639 void (*free_ui)(game_ui *ui);
614 char *(*encode_ui)(const game_ui *ui); 640 char *(*encode_ui)(const game_ui *ui);
615 void (*decode_ui)(game_ui *ui, const char *encoding); 641 void (*decode_ui)(game_ui *ui, const char *encoding);
616 char *(*request_keys)(const game_params *params); 642 key_label *(*request_keys)(const game_params *params, int *nkeys);
617 void (*changed_state)(game_ui *ui, const game_state *oldstate, 643 void (*changed_state)(game_ui *ui, const game_state *oldstate,
618 const game_state *newstate); 644 const game_state *newstate);
619 char *(*interpret_move)(const game_state *state, game_ui *ui, 645 char *(*interpret_move)(const game_state *state, game_ui *ui,
diff --git a/apps/plugins/puzzles/src/puzzles.hlp b/apps/plugins/puzzles/src/puzzles.hlp
new file mode 100644
index 0000000000..71151f15cf
--- /dev/null
+++ b/apps/plugins/puzzles/src/puzzles.hlp
Binary files differ
diff --git a/apps/plugins/puzzles/src/puzzles.txt b/apps/plugins/puzzles/src/puzzles.txt
new file mode 100644
index 0000000000..23e29235cc
--- /dev/null
+++ b/apps/plugins/puzzles/src/puzzles.txt
@@ -0,0 +1,3120 @@
1#Simon Tatham's Portable Puzzle Collection
2
3This is a collection of small one-player puzzle games.
4
5This manual is copyright 2004-2014 Simon Tatham. All rights reserved. You
6may distribute this documentation under the MIT licence. See appendix A for
7the licence text in full.
8
9#Chapter 1: Introduction
10
11 I wrote this collection because I thought there should be more small
12 desktop toys available: little games you can pop up in a window and
13 play for two or three minutes while you take a break from whatever
14 else you were doing. And I was also annoyed that every time I found
15 a good game on (say) Unix, it wasn't available the next time I was
16 sitting at a Windows machine, or vice versa; so I arranged that
17 everything in my personal puzzle collection will happily run on
18 both, and have more recently done a port to Mac OS X as well. When I
19 find (or perhaps invent) further puzzle games that I like, they'll
20 be added to this collection and will immediately be available on
21 both platforms. And if anyone feels like writing any other front
22 ends - PocketPC, Mac OS pre-10, or whatever it might be - then all
23 the games in this framework will immediately become available on
24 another platform as well.
25
26 The actual games in this collection were mostly not my invention;
27 they are re-implementations of existing game concepts within my
28 portable puzzle framework. I do not claim credit, in general, for
29 inventing the rules of any of these puzzles. (I don't even claim
30 authorship of all the code; some of the puzzles have been submitted
31 by other authors.)
32
33 This collection is distributed under the MIT licence (see appendix
34 A). This means that you can do pretty much anything you like with
35 the game binaries or the code, except pretending you wrote them
36 yourself, or suing me if anything goes wrong.
37
38 The most recent versions, and source code, can be found at
39 https://www.chiark.greenend.org.uk/~sgtatham/puzzles/.
40
41 Please report bugs to anakin@pobox.com. You might find it helpful to
42 read this article before reporting a bug:
43
44 https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
45
46 Patches are welcome. Especially if they provide a new front end (to
47 make all these games run on another platform), or a new game.
48
49#Chapter 2: Common features
50
51 This chapter describes features that are common to all the games.
52
53#2.1 Common actions
54
55 These actions are all available from the `Game' menu and via
56 keyboard shortcuts, in addition to any game-specific actions.
57
58 (On Mac OS X, to conform with local user interface standards, these
59 actions are situated on the `File' and `Edit' menus instead.)
60
61 _New game_ (`N', Ctrl+`N')
62
63 Starts a new game, with a random initial state.
64
65 _Restart game_
66
67 Resets the current game to its initial state. (This can be
68 undone.)
69
70 _Load_
71
72 Loads a saved game from a file on disk.
73
74 _Save_
75
76 Saves the current state of your game to a file on disk.
77
78 The Load and Save operations preserve your entire game history
79 (so you can save, reload, and still Undo and Redo things you had
80 done before saving).
81
82 _Print_
83
84 Where supported (currently only on Windows), brings up a dialog
85 allowing you to print an arbitrary number of puzzles randomly
86 generated from the current parameters, optionally including
87 the current puzzle. (Only for puzzles which make sense to
88 print, of course - it's hard to think of a sensible printable
89 representation of Fifteen!)
90
91 _Undo_ (`U', Ctrl+`Z', Ctrl+`_')
92
93 Undoes a single move. (You can undo moves back to the start of
94 the session.)
95
96 _Redo_ (`R', Ctrl+`R')
97
98 Redoes a previously undone move.
99
100 _Copy_
101
102 Copies the current state of your game to the clipboard in text
103 format, so that you can paste it into (say) an e-mail client or
104 a web message board if you're discussing the game with someone
105 else. (Not all games support this feature.)
106
107 _Solve_
108
109 Transforms the puzzle instantly into its solved state. For some
110 games (Cube) this feature is not supported at all because it is
111 of no particular use. For other games (such as Pattern), the
112 solved state can be used to give you information, if you can't
113 see how a solution can exist at all or you want to know where
114 you made a mistake. For still other games (such as Sixteen),
115 automatic solution tells you nothing about how to _get_ to
116 the solution, but it does provide a useful way to get there
117 quickly so that you can experiment with set-piece moves and
118 transformations.
119
120 Some games (such as Solo) are capable of solving a game ID you
121 have typed in from elsewhere. Other games (such as Rectangles)
122 cannot solve a game ID they didn't invent themself, but when
123 they did invent the game ID they know what the solution is
124 already. Still other games (Pattern) can solve _some_ external
125 game IDs, but only if they aren't too difficult.
126
127 The `Solve' command adds the solved state to the end of the undo
128 chain for the puzzle. In other words, if you want to go back to
129 solving it yourself after seeing the answer, you can just press
130 Undo.
131
132 _Quit_ (`Q', Ctrl+`Q')
133
134 Closes the application entirely.
135
136#2.2 Specifying games with the game ID
137
138 There are two ways to save a game specification out of a puzzle and
139 recreate it later, or recreate it in somebody else's copy of the
140 same puzzle.
141
142 The `Specific' and `Random Seed' options from the `Game' menu (or
143 the `File' menu, on Mac OS X) each show a piece of text (a `game
144 ID') which is sufficient to reconstruct precisely the same game at a
145 later date.
146
147 You can enter either of these pieces of text back into the program
148 (via the same `Specific' or `Random Seed' menu options) at a later
149 point, and it will recreate the same game. You can also use either
150 one as a command line argument (on Windows or Unix); see section 2.4
151 for more detail.
152
153 The difference between the two forms is that a descriptive game ID
154 is a literal _description_ of the initial state of the game, whereas
155 a random seed is just a piece of arbitrary text which was provided
156 as input to the random number generator used to create the puzzle.
157 This means that:
158
159 - Descriptive game IDs tend to be longer in many puzzles
160 (although some, such as Cube (chapter 4), only need very short
161 descriptions). So a random seed is often a _quicker_ way to
162 note down the puzzle you're currently playing, or to tell it to
163 somebody else so they can play the same one as you.
164
165 - Any text at all is a valid random seed. The automatically
166 generated ones are fifteen-digit numbers, but anything will do;
167 you can type in your full name, or a word you just made up, and
168 a valid puzzle will be generated from it. This provides a way
169 for two or more people to race to complete the same puzzle:
170 you think of a random seed, then everybody types it in at the
171 same time, and nobody has an advantage due to having seen the
172 generated puzzle before anybody else.
173
174 - It is often possible to convert puzzles from other sources (such
175 as `nonograms' or `sudoku' from newspapers) into descriptive
176 game IDs suitable for use with these programs.
177
178 - Random seeds are not guaranteed to produce the same result
179 if you use them with a different _version_ of the puzzle
180 program. This is because the generation algorithm might have
181 been improved or modified in later versions of the code, and
182 will therefore produce a different result when given the same
183 sequence of random numbers. Use a descriptive game ID if you
184 aren't sure that it will be used on the same version of the
185 program as yours.
186
187 (Use the `About' menu option to find out the version number of
188 the program. Programs with the same version number running on
189 different platforms should still be random-seed compatible.)
190
191 A descriptive game ID starts with a piece of text which encodes the
192 _parameters_ of the current game (such as grid size). Then there is
193 a colon, and after that is the description of the game's initial
194 state. A random seed starts with a similar string of parameters, but
195 then it contains a hash sign followed by arbitrary data.
196
197 If you enter a descriptive game ID, the program will not be able
198 to show you the random seed which generated it, since it wasn't
199 generated _from_ a random seed. If you _enter_ a random seed,
200 however, the program will be able to show you the descriptive game
201 ID derived from that random seed.
202
203 Note that the game parameter strings are not always identical
204 between the two forms. For some games, there will be parameter
205 data provided with the random seed which is not included in the
206 descriptive game ID. This is because that parameter information is
207 only relevant when _generating_ puzzle grids, and is not important
208 when playing them. Thus, for example, the difficulty level in Solo
209 (chapter 11) is not mentioned in the descriptive game ID.
210
211 These additional parameters are also not set permanently if you type
212 in a game ID. For example, suppose you have Solo set to `Advanced'
213 difficulty level, and then a friend wants your help with a `Trivial'
214 puzzle; so the friend reads out a random seed specifying `Trivial'
215 difficulty, and you type it in. The program will generate you the
216 same `Trivial' grid which your friend was having trouble with, but
217 once you have finished playing it, when you ask for a new game it
218 will automatically go back to the `Advanced' difficulty which it was
219 previously set on.
220
221#2.3 The `Type' menu
222
223 The `Type' menu, if present, may contain a list of preset game
224 settings. Selecting one of these will start a new random game with
225 the parameters specified.
226
227 The `Type' menu may also contain a `Custom' option which allows you
228 to fine-tune game parameters. The parameters available are specific
229 to each game and are described in the following sections.
230
231#2.4 Specifying game parameters on the command line
232
233 (This section does not apply to the Mac OS X version.)
234
235 The games in this collection deliberately do not ever save
236 information on to the computer they run on: they have no high score
237 tables and no saved preferences. (This is because I expect at least
238 some people to play them at work, and those people will probably
239 appreciate leaving as little evidence as possible!)
240
241 However, if you do want to arrange for one of these games to default
242 to a particular set of parameters, you can specify them on the
243 command line.
244
245 The easiest way to do this is to set up the parameters you want
246 using the `Type' menu (see section 2.3), and then to select `Random
247 Seed' from the `Game' or `File' menu (see section 2.2). The text
248 in the `Game ID' box will be composed of two parts, separated by a
249 hash. The first of these parts represents the game parameters (the
250 size of the playing area, for example, and anything else you set
251 using the `Type' menu).
252
253 If you run the game with just that parameter text on the command
254 line, it will start up with the settings you specified.
255
256 For example: if you run Cube (see chapter 4), select `Octahedron'
257 from the `Type' menu, and then go to the game ID selection, you
258 will see a string of the form `o2x2#338686542711620'. Take only the
259 part before the hash (`o2x2'), and start Cube with that text on the
260 command line: `PREFIX-cube o2x2'.
261
262 If you copy the _entire_ game ID on to the command line, the game
263 will start up in the specific game that was described. This is
264 occasionally a more convenient way to start a particular game ID
265 than by pasting it into the game ID selection box.
266
267 (You could also retrieve the encoded game parameters using the
268 `Specific' menu option instead of `Random Seed', but if you do then
269 some options, such as the difficulty level in Solo, will be missing.
270 See section 2.2 for more details on this.)
271
272#2.5 Unix command-line options
273
274 (This section only applies to the Unix port.)
275
276 In addition to being able to specify game parameters on the command
277 line (see section 2.4), there are various other options:
278
279 --game
280
281 --load
282
283 These options respectively determine whether the command-line
284 argument is treated as specifying game parameters or a save
285 file to load. Only one should be specified. If neither of these
286 options is specified, a guess is made based on the format of the
287 argument.
288
289 --generate _n_
290
291 If this option is specified, instead of a puzzle being
292 displayed, a number of descriptive game IDs will be invented and
293 printed on standard output. This is useful for gaining access
294 to the game generation algorithms without necessarily using the
295 frontend.
296
297 If game parameters are specified on the command-line, they will
298 be used to generate the game IDs; otherwise a default set of
299 parameters will be used.
300
301 The most common use of this option is in conjunction with `--
302 print', in which case its behaviour is slightly different; see
303 below.
304
305 --print _w_x_h_
306
307 If this option is specified, instead of a puzzle being
308 displayed, a printed representation of one or more unsolved
309 puzzles is sent to standard output, in PostScript format.
310
311 On each page of puzzles, there will be _w_ across and _h_ down.
312 If there are more puzzles than _w_x_h_, more than one page will
313 be printed.
314
315 If `--generate' has also been specified, the invented game
316 IDs will be used to generate the printed output. Otherwise,
317 a list of game IDs is expected on standard input (which can
318 be descriptive or random seeds; see section 2.2), in the same
319 format produced by `--generate'.
320
321 For example:
322
323 PREFIX-net --generate 12 --print 2x3 7x7w | lpr
324
325 will generate two pages of printed Net puzzles (each of which
326 will have a 7x7 wrapping grid), and pipe the output to the `lpr'
327 command, which on many systems will send them to an actual
328 printer.
329
330 There are various other options which affect printing; see
331 below.
332
333 --save _file-prefix_ [ --save-suffix _file-suffix_ ]
334
335 If this option is specified, instead of a puzzle being
336 displayed, saved-game files for one or more unsolved puzzles are
337 written to files constructed from the supplied prefix and/or
338 suffix.
339
340 If `--generate' has also been specified, the invented game
341 IDs will be used to generate the printed output. Otherwise,
342 a list of game IDs is expected on standard input (which can
343 be descriptive or random seeds; see section 2.2), in the same
344 format produced by `--generate'.
345
346 For example:
347
348 PREFIX-net --generate 12 --save game --save-suffix .sav
349
350 will generate twelve Net saved-game files with the names
351 game0.sav to game11.sav.
352
353 --version
354
355 Prints version information about the game, and then quits.
356
357 The following options are only meaningful if `--print' is also
358 specified:
359
360 --with-solutions
361
362 The set of pages filled with unsolved puzzles will be followed
363 by the solutions to those puzzles.
364
365 --scale _n_
366
367 Adjusts how big each puzzle is when printed. Larger numbers make
368 puzzles bigger; the default is 1.0.
369
370 --colour
371
372 Puzzles will be printed in colour, rather than in black and
373 white (if supported by the puzzle).
374
375#Chapter 3: Net
376
377 (_Note:_ the Windows version of this game is called NETGAME.EXE to
378 avoid clashing with Windows's own NET.EXE.)
379
380 I originally saw this in the form of a Flash game called
381 FreeNet [1], written by Pavils Jurjans; there are several other
382 implementations under the name NetWalk. The computer prepares a
383 network by connecting up the centres of squares in a grid, and then
384 shuffles the network by rotating every tile randomly. Your job is
385 to rotate it all back into place. The successful solution will be
386 an entirely connected network, with no closed loops. As a visual
387 aid, all tiles which are connected to the one in the middle are
388 highlighted.
389
390 [1] http://www.jurjans.lv/stuff/net/FreeNet.htm
391
392#3.1 Net controls
393
394 This game can be played with either the keyboard or the mouse. The
395 controls are:
396
397 _Select tile_: mouse pointer, arrow keys
398
399 _Rotate tile anticlockwise_: left mouse button, `A' key
400
401 _Rotate tile clockwise_: right mouse button, `D' key
402
403 _Rotate tile by 180 degrees_: `F' key
404
405 _Lock (or unlock) tile_: middle mouse button, shift-click, `S' key
406
407 You can lock a tile once you're sure of its orientation. You
408 can also unlock it again, but while it's locked you can't
409 accidentally turn it.
410
411 The following controls are not necessary to complete the game, but
412 may be useful:
413
414 _Shift grid_: Shift + arrow keys
415
416 On grids that wrap, you can move the origin of the grid, so
417 that tiles that were on opposite sides of the grid can be seen
418 together.
419
420 _Move centre_: Ctrl + arrow keys
421
422 You can change which tile is used as the source of highlighting.
423 (It doesn't ultimately matter which tile this is, as every tile
424 will be connected to every other tile in a correct solution,
425 but it may be helpful in the intermediate stages of solving the
426 puzzle.)
427
428 _Jumble tiles_: `J' key
429
430 This key turns all tiles that are not locked to random
431 orientations.
432
433 (All the actions described in section 2.1 are also available.)
434
435#3.2 Net parameters
436
437 These parameters are available from the `Custom...' option on the
438 `Type' menu.
439
440 _Width_, _Height_
441
442 Size of grid in tiles.
443
444 _Walls wrap around_
445
446 If checked, flow can pass from the left edge to the right edge,
447 and from top to bottom, and vice versa.
448
449 _Barrier probability_
450
451 A number between 0.0 and 1.0 controlling whether an immovable
452 barrier is placed between two tiles to prevent flow between
453 them (a higher number gives more barriers). Since barriers
454 are immovable, they act as constraints on the solution (i.e.,
455 hints).
456
457 The grid generation in Net has been carefully arranged so that
458 the barriers are independent of the rest of the grid. This
459 means that if you note down the random seed used to generate
460 the current puzzle (see section 2.2), change the _Barrier
461 probability_ parameter, and then re-enter the same random seed,
462 you should see exactly the same starting grid, with the only
463 change being the number of barriers. So if you're stuck on a
464 particular grid and need a hint, you could start up another
465 instance of Net, set up the same parameters but a higher barrier
466 probability, and enter the game seed from the original Net
467 window.
468
469 _Ensure unique solution_
470
471 Normally, Net will make sure that the puzzles it presents have
472 only one solution. Puzzles with ambiguous sections can be more
473 difficult and more subtle, so if you like you can turn off this
474 feature and risk having ambiguous puzzles. (Also, finding _all_
475 the possible solutions can be an additional challenge for an
476 advanced player.)
477
478#Chapter 4: Cube
479
480 This is another one I originally saw as a web game. This one was a
481 Java game [2], by Paul Scott. You have a grid of 16 squares, six of
482 which are blue; on one square rests a cube. Your move is to use the
483 arrow keys to roll the cube through 90 degrees so that it moves to
484 an adjacent square. If you roll the cube on to a blue square, the
485 blue square is picked up on one face of the cube; if you roll a blue
486 face of the cube on to a non-blue square, the blueness is put down
487 again. (In general, whenever you roll the cube, the two faces that
488 come into contact swap colours.) Your job is to get all six blue
489 squares on to the six faces of the cube at the same time. Count your
490 moves and try to do it in as few as possible.
491
492 Unlike the original Java game, my version has an additional feature:
493 once you've mastered the game with a cube rolling on a square grid,
494 you can change to a triangular grid and roll any of a tetrahedron,
495 an octahedron or an icosahedron.
496
497 [2] http://www3.sympatico.ca/paulscott/cube/cube.htm
498
499#4.1 Cube controls
500
501 This game can be played with either the keyboard or the mouse.
502
503 Left-clicking anywhere on the window will move the cube (or other
504 solid) towards the mouse pointer.
505
506 The arrow keys can also used to roll the cube on its square grid in
507 the four cardinal directions. On the triangular grids, the mapping
508 of arrow keys to directions is more approximate. Vertical movement
509 is disallowed where it doesn't make sense. The four keys surrounding
510 the arrow keys on the numeric keypad (`7', `9', `1', `3') can be
511 used for diagonal movement.
512
513 (All the actions described in section 2.1 are also available.)
514
515#4.2 Cube parameters
516
517 These parameters are available from the `Custom...' option on the
518 `Type' menu.
519
520 _Type of solid_
521
522 Selects the solid to roll (and hence the shape of the grid):
523 tetrahedron, cube, octahedron, or icosahedron.
524
525 _Width / top_, _Height / bottom_
526
527 On a square grid, horizontal and vertical dimensions. On a
528 triangular grid, the number of triangles on the top and bottom
529 rows respectively.
530
531#Chapter 5: Fifteen
532
533 The old ones are the best: this is the good old `15-puzzle' with
534 sliding tiles. You have a 4x4 square grid; 15 squares contain
535 numbered tiles, and the sixteenth is empty. Your move is to choose a
536 tile next to the empty space, and slide it into the space. The aim
537 is to end up with the tiles in numerical order, with the space in
538 the bottom right (so that the top row reads 1,2,3,4 and the bottom
539 row reads 13,14,15,_space_).
540
541#5.1 Fifteen controls
542
543 This game can be controlled with the mouse or the keyboard.
544
545 A left-click with the mouse in the row or column containing the
546 empty space will move as many tiles as necessary to move the space
547 to the mouse pointer.
548
549 The arrow keys will move a tile adjacent to the space in the
550 direction indicated (moving the space in the _opposite_ direction).
551
552 Pressing `h' will make a suggested move. Pressing `h' enough times
553 will solve the game, but it may scramble your progress while doing
554 so.
555
556 (All the actions described in section 2.1 are also available.)
557
558#5.2 Fifteen parameters
559
560 The only options available from the `Custom...' option on the `Type'
561 menu are _Width_ and _Height_, which are self-explanatory. (Once
562 you've changed these, it's not a `15-puzzle' any more, of course!)
563
564#Chapter 6: Sixteen
565
566 Another sliding tile puzzle, visually similar to Fifteen (see
567 chapter 5) but with a different type of move. This time, there is no
568 hole: all 16 squares on the grid contain numbered squares. Your move
569 is to shift an entire row left or right, or shift an entire column
570 up or down; every time you do that, the tile you shift off the grid
571 re-appears at the other end of the same row, in the space you just
572 vacated. To win, arrange the tiles into numerical order (1,2,3,4 on
573 the top row, 13,14,15,16 on the bottom). When you've done that, try
574 playing on different sizes of grid.
575
576 I _might_ have invented this game myself, though only by accident
577 if so (and I'm sure other people have independently invented it). I
578 thought I was imitating a screensaver I'd seen, but I have a feeling
579 that the screensaver might actually have been a Fifteen-type puzzle
580 rather than this slightly different kind. So this might be the one
581 thing in my puzzle collection which represents creativity on my part
582 rather than just engineering.
583
584#6.1 Sixteen controls
585
586 Left-clicking on an arrow will move the appropriate row or column in
587 the direction indicated. Right-clicking will move it in the opposite
588 direction.
589
590 Alternatively, use the cursor keys to move the position indicator
591 around the edge of the grid, and use the return key to move the
592 row/column in the direction indicated.
593
594 You can also move the tiles directly. Move the cursor onto a tile,
595 hold Control and press an arrow key to move the tile under the
596 cursor and move the cursor along with the tile. Or, hold Shift to
597 move only the tile. Pressing Enter simulates holding down Control
598 (press Enter again to release), while pressing Space simulates
599 holding down shift.
600
601 (All the actions described in section 2.1 are also available.)
602
603#6.2 Sixteen parameters
604
605 The parameters available from the `Custom...' option on the `Type'
606 menu are:
607
608 - _Width_ and _Height_, which are self-explanatory.
609
610 - You can ask for a limited shuffling operation to be performed on
611 the grid. By default, Sixteen will shuffle the grid in such a
612 way that any arrangement is about as probable as any other. You
613 can override this by requesting a precise number of shuffling
614 moves to be performed. Typically your aim is then to determine
615 the precise set of shuffling moves and invert them exactly,
616 so that you answer (say) a four-move shuffle with a four-move
617 solution. Note that the more moves you ask for, the more likely
618 it is that solutions shorter than the target length will turn
619 out to be possible.
620
621#Chapter 7: Twiddle
622
623 Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen
624 (see chapter 6): you are given a grid of square tiles, each
625 containing a number, and your aim is to arrange the numbers into
626 ascending order.
627
628 In basic Twiddle, your move is to rotate a square group of four
629 tiles about their common centre. (Orientation is not significant
630 in the basic puzzle, although you can select it.) On more advanced
631 settings, you can rotate a larger square group of tiles.
632
633 I first saw this type of puzzle in the GameCube game `Metroid
634 Prime 2'. In the Main Gyro Chamber in that game, there is a puzzle
635 you solve to unlock a door, which is a special case of Twiddle. I
636 developed this game as a generalisation of that puzzle.
637
638#7.1 Twiddle controls
639
640 To play Twiddle, click the mouse in the centre of the square group
641 you wish to rotate. In the basic mode, you rotate a 2x2 square,
642 which means you have to click at a corner point where four tiles
643 meet.
644
645 In more advanced modes you might be rotating 3x3 or even more at a
646 time; if the size of the square is odd then you simply click in the
647 centre tile of the square you want to rotate.
648
649 Clicking with the left mouse button rotates the group anticlockwise.
650 Clicking with the right button rotates it clockwise.
651
652 You can also move an outline square around the grid with the cursor
653 keys; the square is the size above (2x2 by default, or larger).
654 Pressing the return key or space bar will rotate the current square
655 anticlockwise or clockwise respectively.
656
657 (All the actions described in section 2.1 are also available.)
658
659#7.2 Twiddle parameters
660
661 Twiddle provides several configuration options via the `Custom'
662 option on the `Type' menu:
663
664 - You can configure the width and height of the puzzle grid.
665
666 - You can configure the size of square block that rotates at a
667 time.
668
669 - You can ask for every square in the grid to be distinguishable
670 (the default), or you can ask for a simplified puzzle in which
671 there are groups of identical numbers. In the simplified puzzle
672 your aim is just to arrange all the 1s into the first row, all
673 the 2s into the second row, and so on.
674
675 - You can configure whether the orientation of tiles matters. If
676 you ask for an orientable puzzle, each tile will have a triangle
677 drawn in it. All the triangles must be pointing upwards to
678 complete the puzzle.
679
680 - You can ask for a limited shuffling operation to be performed
681 on the grid. By default, Twiddle will shuffle the grid so much
682 that any arrangement is about as probable as any other. You can
683 override this by requesting a precise number of shuffling moves
684 to be performed. Typically your aim is then to determine the
685 precise set of shuffling moves and invert them exactly, so that
686 you answer (say) a four-move shuffle with a four-move solution.
687 Note that the more moves you ask for, the more likely it is that
688 solutions shorter than the target length will turn out to be
689 possible.
690
691#Chapter 8: Rectangles
692
693 You have a grid of squares, with numbers written in some (but
694 not all) of the squares. Your task is to subdivide the grid into
695 rectangles of various sizes, such that (a) every rectangle contains
696 exactly one numbered square, and (b) the area of each rectangle is
697 equal to the number written in its numbered square.
698
699 Credit for this game goes to the Japanese puzzle magazine Nikoli
700 [3]; I've also seen a Palm implementation at Puzzle Palace [4].
701 Unlike Puzzle Palace's implementation, my version automatically
702 generates random grids of any size you like. The quality of puzzle
703 design is therefore not quite as good as hand-crafted puzzles would
704 be, but on the plus side you get an inexhaustible supply of puzzles
705 tailored to your own specification.
706
707 [3] http://www.nikoli.co.jp/en/puzzles/shikaku.html (beware of
708 Flash)
709
710 [4]
711 https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en
712
713#8.1 Rectangles controls
714
715 This game is played with the mouse or cursor keys.
716
717 Left-click any edge to toggle it on or off, or left-click and
718 drag to draw an entire rectangle (or line) on the grid in one go
719 (removing any existing edges within that rectangle). Right-clicking
720 and dragging will allow you to erase the contents of a rectangle
721 without affecting its edges.
722
723 Alternatively, use the cursor keys to move the position indicator
724 around the board. Pressing the return key then allows you to use the
725 cursor keys to drag a rectangle out from that position, and pressing
726 the return key again completes the rectangle. Using the space bar
727 instead of the return key allows you to erase the contents of a
728 rectangle without affecting its edges, as above. Pressing escape
729 cancels a drag.
730
731 When a rectangle of the correct size is completed, it will be
732 shaded.
733
734 (All the actions described in section 2.1 are also available.)
735
736#8.2 Rectangles parameters
737
738 These parameters are available from the `Custom...' option on the
739 `Type' menu.
740
741 _Width_, _Height_
742
743 Size of grid, in squares.
744
745 _Expansion factor_
746
747 This is a mechanism for changing the type of grids generated by
748 the program. Some people prefer a grid containing a few large
749 rectangles to one containing many small ones. So you can ask
750 Rectangles to essentially generate a _smaller_ grid than the
751 size you specified, and then to expand it by adding rows and
752 columns.
753
754 The default expansion factor of zero means that Rectangles will
755 simply generate a grid of the size you ask for, and do nothing
756 further. If you set an expansion factor of (say) 0.5, it means
757 that each dimension of the grid will be expanded to half again
758 as big after generation. In other words, the initial grid will
759 be 2/3 the size in each dimension, and will be expanded to its
760 full size without adding any more rectangles.
761
762 Setting an expansion factor of around 0.5 tends to make the
763 game more difficult, and also (in my experience) rewards a
764 less deductive and more intuitive playing style. If you set it
765 _too_ high, though, the game simply cannot generate more than a
766 few rectangles to cover the entire grid, and the game becomes
767 trivial.
768
769 _Ensure unique solution_
770
771 Normally, Rectangles will make sure that the puzzles it presents
772 have only one solution. Puzzles with ambiguous sections can be
773 more difficult and more subtle, so if you like you can turn off
774 this feature and risk having ambiguous puzzles. Also, finding
775 _all_ the possible solutions can be an additional challenge for
776 an advanced player. Turning off this option can also speed up
777 puzzle generation.
778
779#Chapter 9: Netslide
780
781 This game combines the grid generation of Net (see chapter 3) with
782 the movement of Sixteen (see chapter 6): you have a Net grid, but
783 instead of rotating tiles back into place you have to slide them
784 into place by moving a whole row at a time.
785
786 As in Sixteen, control is with the mouse or cursor keys. See section
787 6.1.
788
789 The available game parameters have similar meanings to those in Net
790 (see section 3.2) and Sixteen (see section 6.2).
791
792 Netslide was contributed to this collection by Richard Boulton.
793
794#Chapter 10: Pattern
795
796 You have a grid of squares, which must all be filled in either black
797 or white. Beside each row of the grid are listed the lengths of the
798 runs of black squares on that row; above each column are listed the
799 lengths of the runs of black squares in that column. Your aim is to
800 fill in the entire grid black or white.
801
802 I first saw this puzzle form around 1995, under the name
803 `nonograms'. I've seen it in various places since then, under
804 different names.
805
806 Normally, puzzles of this type turn out to be a meaningful picture
807 of something once you've solved them. However, since this version
808 generates the puzzles automatically, they will just look like random
809 groupings of squares. (One user has suggested that this is actually
810 a _good_ thing, since it prevents you from guessing the colour of
811 squares based on the picture, and forces you to use logic instead.)
812 The advantage, though, is that you never run out of them.
813
814#10.1 Pattern controls
815
816 This game is played with the mouse.
817
818 Left-click in a square to colour it black. Right-click to colour it
819 white. If you make a mistake, you can middle-click, or hold down
820 Shift while clicking with any button, to colour the square in the
821 default grey (meaning `undecided') again.
822
823 You can click and drag with the left or right mouse button to colour
824 a vertical or horizontal line of squares black or white at a time
825 (respectively). If you click and drag with the middle button, or
826 with Shift held down, you can colour a whole rectangle of squares
827 grey.
828
829 You can also move around the grid with the cursor keys. Pressing the
830 return key will cycle the current cell through empty, then black,
831 then white, then empty, and the space bar does the same cycle in
832 reverse.
833
834 Moving the cursor while holding Control will colour the moved-over
835 squares black. Holding Shift will colour the moved-over squares
836 white, and holding both will colour them grey.
837
838 (All the actions described in section 2.1 are also available.)
839
840#10.2 Pattern parameters
841
842 The only options available from the `Custom...' option on the `Type'
843 menu are _Width_ and _Height_, which are self-explanatory.
844
845#Chapter 11: Solo
846
847 You have a square grid, which is divided into as many equally sized
848 sub-blocks as the grid has rows. Each square must be filled in with
849 a digit from 1 to the size of the grid, in such a way that
850
851 - every row contains only one occurrence of each digit
852
853 - every column contains only one occurrence of each digit
854
855 - every block contains only one occurrence of each digit.
856
857 - (optionally, by default off) each of the square's two main
858 diagonals contains only one occurrence of each digit.
859
860 You are given some of the numbers as clues; your aim is to place the
861 rest of the numbers correctly.
862
863 Under the default settings, the sub-blocks are square or
864 rectangular. The default puzzle size is 3x3 (a 9x9 actual grid,
865 divided into nine 3x3 blocks). You can also select sizes with
866 rectangular blocks instead of square ones, such as 2x3 (a 6x6 grid
867 divided into six 3x2 blocks). Alternatively, you can select `jigsaw'
868 mode, in which the sub-blocks are arbitrary shapes which differ
869 between individual puzzles.
870
871 Another available mode is `killer'. In this mode, clues are not
872 given in the form of filled-in squares; instead, the grid is divided
873 into `cages' by coloured lines, and for each cage the game tells
874 you what the sum of all the digits in that cage should be. Also,
875 no digit may appear more than once within a cage, even if the cage
876 crosses the boundaries of existing regions.
877
878 If you select a puzzle size which requires more than 9 digits, the
879 additional digits will be letters of the alphabet. For example, if
880 you select 3x4 then the digits which go in your grid will be 1 to 9,
881 plus `a', `b' and `c'. This cannot be selected for killer puzzles.
882
883 I first saw this puzzle in Nikoli [5], although it's also been
884 popularised by various newspapers under the name `Sudoku' or `Su
885 Doku'. Howard Garns is considered the inventor of the modern form of
886 the puzzle, and it was first published in _Dell Pencil Puzzles and
887 Word Games_. A more elaborate treatment of the history of the puzzle
888 can be found on Wikipedia [6].
889
890 [5] http://www.nikoli.co.jp/en/puzzles/sudoku.html (beware of Flash)
891
892 [6] http://en.wikipedia.org/wiki/Sudoku
893
894#11.1 Solo controls
895
896 To play Solo, simply click the mouse in any empty square and then
897 type a digit or letter on the keyboard to fill that square. If you
898 make a mistake, click the mouse in the incorrect square and press
899 Space to clear it again (or use the Undo feature).
900
901 If you _right_-click in a square and then type a number, that
902 number will be entered in the square as a `pencil mark'. You can
903 have pencil marks for multiple numbers in the same square. Squares
904 containing filled-in numbers cannot also contain pencil marks.
905
906 The game pays no attention to pencil marks, so exactly what you
907 use them for is up to you: you can use them as reminders that a
908 particular square needs to be re-examined once you know more about
909 a particular number, or you can use them as lists of the possible
910 numbers in a given square, or anything else you feel like.
911
912 To erase a single pencil mark, right-click in the square and type
913 the same number again.
914
915 All pencil marks in a square are erased when you left-click and type
916 a number, or when you left-click and press space. Right-clicking and
917 pressing space will also erase pencil marks.
918
919 Alternatively, use the cursor keys to move the mark around the grid.
920 Pressing the return key toggles the mark (from a normal mark to a
921 pencil mark), and typing a number in is entered in the square in the
922 appropriate way; typing in a 0 or using the space bar will clear a
923 filled square.
924
925 (All the actions described in section 2.1 are also available.)
926
927#11.2 Solo parameters
928
929 Solo allows you to configure two separate dimensions of the puzzle
930 grid on the `Type' menu: the number of columns, and the number of
931 rows, into which the main grid is divided. (The size of a block is
932 the inverse of this: for example, if you select 2 columns and 3
933 rows, each actual block will have 3 columns and 2 rows.)
934
935 If you tick the `X' checkbox, Solo will apply the optional extra
936 constraint that the two main diagonals of the grid also contain
937 one of every digit. (This is sometimes known as `Sudoku-X' in
938 newspapers.) In this mode, the squares on the two main diagonals
939 will be shaded slightly so that you know it's enabled.
940
941 If you tick the `Jigsaw' checkbox, Solo will generate randomly
942 shaped sub-blocks. In this mode, the actual grid size will be taken
943 to be the product of the numbers entered in the `Columns' and `Rows'
944 boxes. There is no reason why you have to enter a number greater
945 than 1 in both boxes; Jigsaw mode has no constraint on the grid
946 size, and it can even be a prime number if you feel like it.
947
948 If you tick the `Killer' checkbox, Solo will generate a set of
949 of cages, which are randomly shaped and drawn in an outline of a
950 different colour. Each of these regions contains a smaller clue
951 which shows the digit sum of all the squares in this region.
952
953 You can also configure the type of symmetry shown in the generated
954 puzzles. More symmetry makes the puzzles look prettier but may also
955 make them easier, since the symmetry constraints can force more
956 clues than necessary to be present. Completely asymmetric puzzles
957 have the freedom to contain as few clues as possible.
958
959 Finally, you can configure the difficulty of the generated puzzles.
960 Difficulty levels are judged by the complexity of the techniques
961 of deduction required to solve the puzzle: each level requires a
962 mode of reasoning which was not necessary in the previous one. In
963 particular, on difficulty levels `Trivial' and `Basic' there will be
964 a square you can fill in with a single number at all times, whereas
965 at `Intermediate' level and beyond you will have to make partial
966 deductions about the _set_ of squares a number could be in (or the
967 set of numbers that could be in a square). At `Unreasonable' level,
968 even this is not enough, and you will eventually have to make a
969 guess, and then backtrack if it turns out to be wrong.
970
971 Generating difficult puzzles is itself difficult: if you select one
972 of the higher difficulty levels, Solo may have to make many attempts
973 at generating a puzzle before it finds one hard enough for you. Be
974 prepared to wait, especially if you have also configured a large
975 puzzle size.
976
977#Chapter 12: Mines
978
979 You have a grid of covered squares, some of which contain mines, but
980 you don't know which. Your job is to uncover every square which does
981 _not_ contain a mine. If you uncover a square containing a mine, you
982 lose. If you uncover a square which does not contain a mine, you
983 are told how many mines are contained within the eight surrounding
984 squares.
985
986 This game needs no introduction; popularised by Windows, it is
987 perhaps the single best known desktop puzzle game in existence.
988
989 This version of it has an unusual property. By default, it will
990 generate its mine positions in such a way as to ensure that you
991 never need to _guess_ where a mine is: you will always be able
992 to deduce it somehow. So you will never, as can happen in other
993 versions, get to the last four squares and discover that there are
994 two mines left but you have no way of knowing for sure where they
995 are.
996
997#12.1 Mines controls
998
999 This game is played with the mouse.
1000
1001 If you left-click in a covered square, it will be uncovered.
1002
1003 If you right-click in a covered square, it will place a flag which
1004 indicates that the square is believed to be a mine. Left-clicking in
1005 a marked square will not uncover it, for safety. You can right-click
1006 again to remove a mark placed in error.
1007
1008 If you left-click in an _uncovered_ square, it will `clear around'
1009 the square. This means: if the square has exactly as many flags
1010 surrounding it as it should have mines, then all the covered squares
1011 next to it which are _not_ flagged will be uncovered. So once you
1012 think you know the location of all the mines around a square, you
1013 can use this function as a shortcut to avoid having to click on each
1014 of the remaining squares one by one.
1015
1016 If you uncover a square which has _no_ mines in the surrounding
1017 eight squares, then it is obviously safe to uncover those squares in
1018 turn, and so on if any of them also has no surrounding mines. This
1019 will be done for you automatically; so sometimes when you uncover a
1020 square, a whole new area will open up to be explored.
1021
1022 You can also use the cursor keys to move around the minefield.
1023 Pressing the return key in a covered square uncovers it, and in
1024 an uncovered square will clear around it (so it acts as the left
1025 button), pressing the space bar in a covered square will place a
1026 flag (similarly, it acts as the right button).
1027
1028 All the actions described in section 2.1 are also available.
1029
1030 Even Undo is available, although you might consider it cheating to
1031 use it. If you step on a mine, the program will only reveal the mine
1032 in question (unlike most other implementations, which reveal all of
1033 them). You can then Undo your fatal move and continue playing if you
1034 like. The program will track the number of times you died (and Undo
1035 will not reduce that counter), so when you get to the end of the
1036 game you know whether or not you did it without making any errors.
1037
1038 (If you really want to know the full layout of the grid, which other
1039 implementations will show you after you die, you can always use the
1040 Solve menu option.)
1041
1042#12.2 Mines parameters
1043
1044 The options available from the `Custom...' option on the `Type' menu
1045 are:
1046
1047 _Width_, _Height_
1048
1049 Size of grid in squares.
1050
1051 _Mines_
1052
1053 Number of mines in the grid. You can enter this as an absolute
1054 mine count, or alternatively you can put a % sign on the end
1055 in which case the game will arrange for that proportion of the
1056 squares in the grid to be mines.
1057
1058 Beware of setting the mine count too high. At very high
1059 densities, the program may spend forever searching for a
1060 solvable grid.
1061
1062 _Ensure solubility_
1063
1064 When this option is enabled (as it is by default), Mines will
1065 ensure that the entire grid can be fully deduced starting
1066 from the initial open space. If you prefer the riskier grids
1067 generated by other implementations, you can switch off this
1068 option.
1069
1070#Chapter 13: Same Game
1071
1072 You have a grid of coloured squares, which you have to clear by
1073 highlighting contiguous regions of more than one coloured square;
1074 the larger the region you highlight, the more points you get (and
1075 the faster you clear the arena).
1076
1077 If you clear the grid you win. If you end up with nothing but single
1078 squares (i.e., there are no more clickable regions left) you lose.
1079
1080 Removing a region causes the rest of the grid to shuffle up: blocks
1081 that are suspended will fall down (first), and then empty columns
1082 are filled from the right.
1083
1084 Same Game was contributed to this collection by James Harvey.
1085
1086#13.1 Same Game controls
1087
1088 This game can be played with either the keyboard or the mouse.
1089
1090 If you left-click an unselected region, it becomes selected
1091 (possibly clearing the current selection).
1092
1093 If you left-click the selected region, it will be removed (and the
1094 rest of the grid shuffled immediately).
1095
1096 If you right-click the selected region, it will be unselected.
1097
1098 The cursor keys move a cursor around the grid. Pressing the Space or
1099 Enter keys while the cursor is in an unselected region selects it;
1100 pressing Space or Enter again removes it as above.
1101
1102 (All the actions described in section 2.1 are also available.)
1103
1104#13.2 Same Game parameters
1105
1106 These parameters are available from the `Custom...' option on the
1107 `Type' menu.
1108
1109 _Width_, _Height_
1110
1111 Size of grid in squares.
1112
1113 _No. of colours_
1114
1115 Number of different colours used to fill the grid; the more
1116 colours, the fewer large regions of colour and thus the more
1117 difficult it is to successfully clear the grid.
1118
1119 _Scoring system_
1120
1121 Controls the precise mechanism used for scoring. With the
1122 default system, `(n-2)^2', only regions of three squares or more
1123 will score any points at all. With the alternative `(n-1)^2'
1124 system, regions of two squares score a point each, and larger
1125 regions score relatively more points.
1126
1127 _Ensure solubility_
1128
1129 If this option is ticked (the default state), generated grids
1130 will be guaranteed to have at least one solution.
1131
1132 If you turn it off, the game generator will not try to guarantee
1133 soluble grids; it will, however, still ensure that there are at
1134 least 2 squares of each colour on the grid at the start (since a
1135 grid with exactly one square of a given colour is _definitely_
1136 insoluble). Grids generated with this option disabled may
1137 contain more large areas of contiguous colour, leading to
1138 opportunities for higher scores; they can also take less time to
1139 generate.
1140
1141#Chapter 14: Flip
1142
1143 You have a grid of squares, some light and some dark. Your aim is to
1144 light all the squares up at the same time. You can choose any square
1145 and flip its state from light to dark or dark to light, but when you
1146 do so, other squares around it change state as well.
1147
1148 Each square contains a small diagram showing which other squares
1149 change when you flip it.
1150
1151#14.1 Flip controls
1152
1153 This game can be played with either the keyboard or the mouse.
1154
1155 Left-click in a square to flip it and its associated squares, or use
1156 the cursor keys to choose a square and the space bar or Enter key to
1157 flip.
1158
1159 If you use the `Solve' function on this game, it will mark some of
1160 the squares in red. If you click once in every square with a red
1161 mark, the game should be solved. (If you click in a square _without_
1162 a red mark, a red mark will appear in it to indicate that you will
1163 need to reverse that operation to reach the solution.)
1164
1165 (All the actions described in section 2.1 are also available.)
1166
1167#14.2 Flip parameters
1168
1169 These parameters are available from the `Custom...' option on the
1170 `Type' menu.
1171
1172 _Width_, _Height_
1173
1174 Size of grid in squares.
1175
1176 _Shape type_
1177
1178 This control determines the shape of the region which is flipped
1179 by clicking in any given square. The default setting, `Crosses',
1180 causes every square to flip itself and its four immediate
1181 neighbours (or three or two if it's at an edge or corner). The
1182 other setting, `Random', causes a random shape to be chosen for
1183 every square, so the game is different every time.
1184
1185#Chapter 15: Guess
1186
1187 You have a set of coloured pegs, and have to reproduce a
1188 predetermined sequence of them (chosen by the computer) within a
1189 certain number of guesses.
1190
1191 Each guess gets marked with the number of correctly-coloured pegs
1192 in the correct places (in black), and also the number of correctly-
1193 coloured pegs in the wrong places (in white).
1194
1195 This game is also known (and marketed, by Hasbro, mainly) as a board
1196 game `Mastermind', with 6 colours, 4 pegs per row, and 10 guesses.
1197 However, this version allows custom settings of number of colours
1198 (up to 10), number of pegs per row, and number of guesses.
1199
1200 Guess was contributed to this collection by James Harvey.
1201
1202#15.1 Guess controls
1203
1204 This game can be played with either the keyboard or the mouse.
1205
1206 With the mouse, drag a coloured peg from the tray on the left-hand
1207 side to its required position in the current guess; pegs may also
1208 be dragged from current and past guesses to copy them elsewhere. To
1209 remove a peg, drag it off its current position to somewhere invalid.
1210
1211 Right-clicking in the current guess adds a `hold' marker; pegs that
1212 have hold markers will be automatically added to the next guess
1213 after marking.
1214
1215 Alternatively, with the keyboard, the up and down cursor keys can
1216 be used to select a peg colour, the left and right keys to select a
1217 peg position, and the space bar or Enter key to place a peg of the
1218 selected colour in the chosen position. `D' or Backspace removes a
1219 peg, and Space adds a hold marker.
1220
1221 Pressing `h' or `?' will fill the current guess with a suggested
1222 guess. Using this is not recommended for 10 or more pegs as it is
1223 slow.
1224
1225 When the guess is complete, the smaller feedback pegs will be
1226 highlighted; clicking on these (or moving the peg cursor to them
1227 with the arrow keys and pressing the space bar or Enter key) will
1228 mark the current guess, copy any held pegs to the next guess, and
1229 move the `current guess' marker.
1230
1231 If you correctly position all the pegs the solution will be
1232 displayed below; if you run out of guesses (or select `Solve...')
1233 the solution will also be revealed.
1234
1235 (All the actions described in section 2.1 are also available.)
1236
1237#15.2 Guess parameters
1238
1239 These parameters are available from the `Custom...' option on the
1240 `Type' menu. The default game matches the parameters for the board
1241 game `Mastermind'.
1242
1243 _Colours_
1244
1245 Number of colours the solution is chosen from; from 2 to 10
1246 (more is harder).
1247
1248 _Pegs per guess_
1249
1250 Number of pegs per guess (more is harder).
1251
1252 _Guesses_
1253
1254 Number of guesses you have to find the solution in (fewer is
1255 harder).
1256
1257 _Allow blanks_
1258
1259 Allows blank pegs to be given as part of a guess (makes it
1260 easier, because you know that those will never be counted as
1261 part of the solution). This is turned off by default.
1262
1263 Note that this doesn't allow blank pegs in the solution; if you
1264 really wanted that, use one extra colour.
1265
1266 _Allow duplicates_
1267
1268 Allows the solution (and the guesses) to contain colours more
1269 than once; this increases the search space (making things
1270 harder), and is turned on by default.
1271
1272#Chapter 16: Pegs
1273
1274 A number of pegs are placed in holes on a board. You can remove a
1275 peg by jumping an adjacent peg over it (horizontally or vertically)
1276 to a vacant hole on the other side. Your aim is to remove all but
1277 one of the pegs initially present.
1278
1279 This game, best known as `Peg Solitaire', is possibly one of the
1280 oldest puzzle games still commonly known.
1281
1282#16.1 Pegs controls
1283
1284 To move a peg, drag it with the mouse from its current position to
1285 its final position. If the final position is exactly two holes away
1286 from the initial position, is currently unoccupied by a peg, and
1287 there is a peg in the intervening square, the move will be permitted
1288 and the intervening peg will be removed.
1289
1290 Vacant spaces which you can move a peg into are marked with holes. A
1291 space with no peg and no hole is not available for moving at all: it
1292 is an obstacle which you must work around.
1293
1294 You can also use the cursor keys to move a position indicator around
1295 the board. Pressing the return key while over a peg, followed by a
1296 cursor key, will jump the peg in that direction (if that is a legal
1297 move).
1298
1299 (All the actions described in section 2.1 are also available.)
1300
1301#16.2 Pegs parameters
1302
1303 These parameters are available from the `Custom...' option on the
1304 `Type' menu.
1305
1306 _Width_, _Height_
1307
1308 Size of grid in holes.
1309
1310 _Board type_
1311
1312 Controls whether you are given a board of a standard shape or
1313 a randomly generated shape. The two standard shapes currently
1314 supported are `Cross' and `Octagon' (also commonly known as the
1315 English and European traditional board layouts respectively).
1316 Selecting `Random' will give you a different board shape every
1317 time (but always one that is known to have a solution).
1318
1319#Chapter 17: Dominosa
1320
1321 A normal set of dominoes - that is, one instance of every
1322 (unordered) pair of numbers from 0 to 6 - has been arranged
1323 irregularly into a rectangle; then the number in each square has
1324 been written down and the dominoes themselves removed. Your task is
1325 to reconstruct the pattern by arranging the set of dominoes to match
1326 the provided array of numbers.
1327
1328 This puzzle is widely credited to O. S. Adler, and takes part of its
1329 name from those initials.
1330
1331#17.1 Dominosa controls
1332
1333 Left-clicking between any two adjacent numbers places a domino
1334 covering them, or removes one if it is already present. Trying to
1335 place a domino which overlaps existing dominoes will remove the ones
1336 it overlaps.
1337
1338 Right-clicking between two adjacent numbers draws a line between
1339 them, which you can use to remind yourself that you know those two
1340 numbers are _not_ covered by a single domino. Right-clicking again
1341 removes the line.
1342
1343 You can also use the cursor keys to move a cursor around the grid.
1344 When the cursor is half way between two adjacent numbers, pressing
1345 the return key will place a domino covering those numbers, or
1346 pressing the space bar will lay a line between the two squares.
1347 Repeating either action removes the domino or line.
1348
1349 Pressing a number key will highlight all occurrences of that number.
1350 Pressing that number again will clear the highlighting. Up to two
1351 different numbers can be highlighted at any given time.
1352
1353 (All the actions described in section 2.1 are also available.)
1354
1355#17.2 Dominosa parameters
1356
1357 These parameters are available from the `Custom...' option on the
1358 `Type' menu.
1359
1360 _Maximum number on dominoes_
1361
1362 Controls the size of the puzzle, by controlling the size of the
1363 set of dominoes used to make it. Dominoes with numbers going
1364 up to N will give rise to an (N+2) x (N+1) rectangle; so, in
1365 particular, the default value of 6 gives an 8x7 grid.
1366
1367 _Ensure unique solution_
1368
1369 Normally, Dominosa will make sure that the puzzles it presents
1370 have only one solution. Puzzles with ambiguous sections can be
1371 more difficult and sometimes more subtle, so if you like you
1372 can turn off this feature. Also, finding _all_ the possible
1373 solutions can be an additional challenge for an advanced player.
1374 Turning off this option can also speed up puzzle generation.
1375
1376#Chapter 18: Untangle
1377
1378 You are given a number of points, some of which have lines drawn
1379 between them. You can move the points about arbitrarily; your aim is
1380 to position the points so that no line crosses another.
1381
1382 I originally saw this in the form of a Flash game called Planarity
1383 [7], written by John Tantalo.
1384
1385 [7] http://planarity.net
1386
1387#18.1 Untangle controls
1388
1389 To move a point, click on it with the left mouse button and drag it
1390 into a new position.
1391
1392 (All the actions described in section 2.1 are also available.)
1393
1394#18.2 Untangle parameters
1395
1396 There is only one parameter available from the `Custom...' option on
1397 the `Type' menu:
1398
1399 _Number of points_
1400
1401 Controls the size of the puzzle, by specifying the number of
1402 points in the generated graph.
1403
1404#Chapter 19: Black Box
1405
1406 A number of balls are hidden in a rectangular arena. You have to
1407 deduce the positions of the balls by firing lasers positioned at the
1408 edges of the arena and observing how their beams are deflected.
1409
1410 Beams will travel straight from their origin until they hit the
1411 opposite side of the arena (at which point they emerge), unless
1412 affected by balls in one of the following ways:
1413
1414 - A beam that hits a ball head-on is absorbed and will never re-
1415 emerge. This includes beams that meet a ball on the first rank
1416 of the arena.
1417
1418 - A beam with a ball in its front-left square and no ball ahead of
1419 it gets deflected 90 degrees to the right.
1420
1421 - A beam with a ball in its front-right square and no ball ahead
1422 of it gets similarly deflected to the left.
1423
1424 - A beam that would re-emerge from its entry location is
1425 considered to be `reflected'.
1426
1427 - A beam which would get deflected before entering the arena by a
1428 ball to the front-left or front-right of its entry point is also
1429 considered to be `reflected'.
1430
1431 Beams that are reflected appear as a `R'; beams that hit balls head-
1432 on appear as `H'. Otherwise, a number appears at the firing point
1433 and the location where the beam emerges (this number is unique to
1434 that shot).
1435
1436 You can place guesses as to the location of the balls, based on the
1437 entry and exit patterns of the beams; once you have placed enough
1438 balls a button appears enabling you to have your guesses checked.
1439
1440 Here is a diagram showing how the positions of balls can create each
1441 of the beam behaviours shown above:
1442
1443 1RHR----
1444 |..O.O...|
1445 2........3
1446 |........|
1447 |........|
1448 3........|
1449 |......O.|
1450 H........|
1451 |.....O..|
1452 12-RR---
1453
1454 As shown, it is possible for a beam to receive multiple reflections
1455 before re-emerging (see turn 3). Similarly, a beam may be reflected
1456 (possibly more than once) before receiving a hit (the `H' on the
1457 left side of the example).
1458
1459 Note that any layout with more than 4 balls may have a non-unique
1460 solution. The following diagram illustrates this; if you know the
1461 board contains 5 balls, it is impossible to determine where the
1462 fifth ball is (possible positions marked with an x):
1463
1464 --------
1465 |........|
1466 |........|
1467 |..O..O..|
1468 |...xx...|
1469 |...xx...|
1470 |..O..O..|
1471 |........|
1472 |........|
1473 --------
1474
1475 For this reason, when you have your guesses checked, the game
1476 will check that your solution _produces the same results_ as the
1477 computer's, rather than that your solution is identical to the
1478 computer's. So in the above example, you could put the fifth ball at
1479 _any_ of the locations marked with an x, and you would still win.
1480
1481 Black Box was contributed to this collection by James Harvey.
1482
1483#19.1 Black Box controls
1484
1485 To fire a laser beam, left-click in a square around the edge of
1486 the arena. The results will be displayed immediately. Clicking or
1487 holding the left button on one of these squares will highlight the
1488 current go (or a previous go) to confirm the exit point for that
1489 laser, if applicable.
1490
1491 To guess the location of a ball, left-click within the arena and a
1492 black circle will appear marking the guess; click again to remove
1493 the guessed ball.
1494
1495 Locations in the arena may be locked against modification by right-
1496 clicking; whole rows and columns may be similarly locked by right-
1497 clicking in the laser square above/below that column, or to the
1498 left/right of that row.
1499
1500 The cursor keys may also be used to move around the grid. Pressing
1501 the Enter key will fire a laser or add a new ball-location guess,
1502 and pressing Space will lock a cell, row, or column.
1503
1504 When an appropriate number of balls have been guessed, a button will
1505 appear at the top-left corner of the grid; clicking that (with mouse
1506 or cursor) will check your guesses.
1507
1508 If you click the `check' button and your guesses are not correct,
1509 the game will show you the minimum information necessary to
1510 demonstrate this to you, so you can try again. If your ball
1511 positions are not consistent with the beam paths you already know
1512 about, one beam path will be circled to indicate that it proves you
1513 wrong. If your positions match all the existing beam paths but are
1514 still wrong, one new beam path will be revealed (written in red)
1515 which is not consistent with your current guesses.
1516
1517 If you decide to give up completely, you can select Solve to reveal
1518 the actual ball positions. At this point, correctly-placed balls
1519 will be displayed as filled black circles, incorrectly-placed balls
1520 as filled black circles with red crosses, and missing balls as
1521 filled red circles. In addition, a red circle marks any laser you
1522 had already fired which is not consistent with your ball layout
1523 (just as when you press the `check' button), and red text marks
1524 any laser you _could_ have fired in order to distinguish your ball
1525 layout from the correct one.
1526
1527 (All the actions described in section 2.1 are also available.)
1528
1529#19.2 Black Box parameters
1530
1531 These parameters are available from the `Custom...' option on the
1532 `Type' menu.
1533
1534 _Width_, _Height_
1535
1536 Size of grid in squares. There are 2 x _Width_ x _Height_ lasers
1537 per grid, two per row and two per column.
1538
1539 _No. of balls_
1540
1541 Number of balls to place in the grid. This can be a single
1542 number, or a range (separated with a hyphen, like `2-6'),
1543 and determines the number of balls to place on the grid.
1544 The `reveal' button is only enabled if you have guessed an
1545 appropriate number of balls; a guess using a different number
1546 to the original solution is still acceptable, if all the beam
1547 inputs and outputs match.
1548
1549#Chapter 20: Slant
1550
1551 You have a grid of squares. Your aim is to draw a diagonal line
1552 through each square, and choose which way each line slants so that
1553 the following conditions are met:
1554
1555 - The diagonal lines never form a loop.
1556
1557 - Any point with a circled number has precisely that many lines
1558 meeting at it. (Thus, a 4 is the centre of a cross shape,
1559 whereas a zero is the centre of a diamond shape - or rather, a
1560 partial diamond shape, because a zero can never appear in the
1561 middle of the grid because that would immediately cause a loop.)
1562
1563 Credit for this puzzle goes to Nikoli [8].
1564
1565 [8] http://www.nikoli.co.jp/ja/puzzles/gokigen_naname (in Japanese)
1566
1567#20.1 Slant controls
1568
1569 Left-clicking in a blank square will place a \ in it (a line leaning
1570 to the left, i.e. running from the top left of the square to the
1571 bottom right). Right-clicking in a blank square will place a / in it
1572 (leaning to the right, running from top right to bottom left).
1573
1574 Continuing to click either button will cycle between the three
1575 possible square contents. Thus, if you left-click repeatedly in a
1576 blank square it will change from blank to \ to / back to blank, and
1577 if you right-click repeatedly the square will change from blank to /
1578 to \ back to blank. (Therefore, you can play the game entirely with
1579 one button if you need to.)
1580
1581 You can also use the cursor keys to move around the grid. Pressing
1582 the return or space keys will place a \ or a /, respectively, and
1583 will then cycle them as above. You can also press / or \ to place a
1584 / or \, respectively, independent of what is already in the cursor
1585 square. Backspace removes any line from the cursor square.
1586
1587 (All the actions described in section 2.1 are also available.)
1588
1589#20.2 Slant parameters
1590
1591 These parameters are available from the `Custom...' option on the
1592 `Type' menu.
1593
1594 _Width_, _Height_
1595
1596 Size of grid in squares.
1597
1598 _Difficulty_
1599
1600 Controls the difficulty of the generated puzzle. At Hard
1601 level, you are required to do deductions based on knowledge of
1602 _relationships_ between squares rather than always being able to
1603 deduce the exact contents of one square at a time. (For example,
1604 you might know that two squares slant in the same direction,
1605 even if you don't yet know what that direction is, and this
1606 might enable you to deduce something about still other squares.)
1607 Even at Hard level, guesswork and backtracking should never be
1608 necessary.
1609
1610#Chapter 21: Light Up
1611
1612 You have a grid of squares. Some are filled in black; some of the
1613 black squares are numbered. Your aim is to `light up' all the empty
1614 squares by placing light bulbs in some of them.
1615
1616 Each light bulb illuminates the square it is on, plus all squares
1617 in line with it horizontally or vertically unless a black square is
1618 blocking the way.
1619
1620 To win the game, you must satisfy the following conditions:
1621
1622 - All non-black squares are lit.
1623
1624 - No light is lit by another light.
1625
1626 - All numbered black squares have exactly that number of lights
1627 adjacent to them (in the four squares above, below, and to the
1628 side).
1629
1630 Non-numbered black squares may have any number of lights adjacent to
1631 them.
1632
1633 Credit for this puzzle goes to Nikoli [9].
1634
1635 Light Up was contributed to this collection by James Harvey.
1636
1637 [9] http://www.nikoli.co.jp/en/puzzles/akari.html (beware of Flash)
1638
1639#21.1 Light Up controls
1640
1641 Left-clicking in a non-black square will toggle the presence of a
1642 light in that square. Right-clicking in a non-black square toggles a
1643 mark there to aid solving; it can be used to highlight squares that
1644 cannot be lit, for example.
1645
1646 You may not place a light in a marked square, nor place a mark in a
1647 lit square.
1648
1649 The game will highlight obvious errors in red. Lights lit by other
1650 lights are highlighted in this way, as are numbered squares which do
1651 not (or cannot) have the right number of lights next to them.
1652
1653 Thus, the grid is solved when all non-black squares have yellow
1654 highlights and there are no red lights.
1655
1656 (All the actions described in section 2.1 are also available.)
1657
1658#21.2 Light Up parameters
1659
1660 These parameters are available from the `Custom...' option on the
1661 `Type' menu.
1662
1663 _Width_, _Height_
1664
1665 Size of grid in squares.
1666
1667 _%age of black squares_
1668
1669 Rough percentage of black squares in the grid.
1670
1671 This is a hint rather than an instruction. If the grid generator
1672 is unable to generate a puzzle to this precise specification, it
1673 will increase the proportion of black squares until it can.
1674
1675 _Symmetry_
1676
1677 Allows you to specify the required symmetry of the black squares
1678 in the grid. (This does not affect the difficulty of the puzzles
1679 noticeably.)
1680
1681 _Difficulty_
1682
1683 `Easy' means that the puzzles should be soluble without
1684 backtracking or guessing, `Hard' means that some guesses will
1685 probably be necessary.
1686
1687#Chapter 22: Map
1688
1689 You are given a map consisting of a number of regions. Your task is
1690 to colour each region with one of four colours, in such a way that
1691 no two regions sharing a boundary have the same colour. You are
1692 provided with some regions already coloured, sufficient to make the
1693 remainder of the solution unique.
1694
1695 Only regions which share a length of border are required to be
1696 different colours. Two regions which meet at only one _point_ (i.e.
1697 are diagonally separated) may be the same colour.
1698
1699 I believe this puzzle is original; I've never seen an implementation
1700 of it anywhere else. The concept of a four-colouring puzzle was
1701 suggested by Owen Dunn; credit must also go to Nikoli and to Verity
1702 Allan for inspiring the train of thought that led to me realising
1703 Owen's suggestion was a viable puzzle. Thanks also to Gareth Taylor
1704 for many detailed suggestions.
1705
1706#22.1 Map controls
1707
1708 To colour a region, click the left mouse button on an existing
1709 region of the desired colour and drag that colour into the new
1710 region.
1711
1712 (The program will always ensure the starting puzzle has at least one
1713 region of each colour, so that this is always possible!)
1714
1715 If you need to clear a region, you can drag from an empty region, or
1716 from the puzzle boundary if there are no empty regions left.
1717
1718 Dragging a colour using the _right_ mouse button will stipple the
1719 region in that colour, which you can use as a note to yourself that
1720 you think the region _might_ be that colour. A region can contain
1721 stipples in multiple colours at once. (This is often useful at the
1722 harder difficulty levels.)
1723
1724 You can also use the cursor keys to move around the map: the colour
1725 of the cursor indicates the position of the colour you would drag
1726 (which is not obvious if you're on a region's boundary, since it
1727 depends on the direction from which you approached the boundary).
1728 Pressing the return key starts a drag of that colour, as above,
1729 which you control with the cursor keys; pressing the return key
1730 again finishes the drag. The space bar can be used similarly to
1731 create a stippled region. Double-pressing the return key (without
1732 moving the cursor) will clear the region, as a drag from an empty
1733 region does: this is useful with the cursor mode if you have filled
1734 the entire map in but need to correct the layout.
1735
1736 If you press L during play, the game will toggle display of a number
1737 in each region of the map. This is useful if you want to discuss a
1738 particular puzzle instance with a friend - having an unambiguous
1739 name for each region is much easier than trying to refer to them all
1740 by names such as `the one down and right of the brown one on the top
1741 border'.
1742
1743 (All the actions described in section 2.1 are also available.)
1744
1745#22.2 Map parameters
1746
1747 These parameters are available from the `Custom...' option on the
1748 `Type' menu.
1749
1750 _Width_, _Height_
1751
1752 Size of grid in squares.
1753
1754 _Regions_
1755
1756 Number of regions in the generated map.
1757
1758 _Difficulty_
1759
1760 In `Easy' mode, there should always be at least one region whose
1761 colour can be determined trivially. In `Normal' and `Hard'
1762 modes, you will have to use increasingly complex logic to deduce
1763 the colour of some regions. However, it will always be possible
1764 without having to guess or backtrack.
1765
1766 In `Unreasonable' mode, the program will feel free to generate
1767 puzzles which are as hard as it can possibly make them: the
1768 only constraint is that they should still have a unique
1769 solution. Solving Unreasonable puzzles may require guessing and
1770 backtracking.
1771
1772#Chapter 23: Loopy
1773
1774 You are given a grid of dots, marked with yellow lines to indicate
1775 which dots you are allowed to connect directly together. Your aim is
1776 to use some subset of those yellow lines to draw a single unbroken
1777 loop from dot to dot within the grid.
1778
1779 Some of the spaces between the lines contain numbers. These numbers
1780 indicate how many of the lines around that space form part of the
1781 loop. The loop you draw must correctly satisfy all of these clues to
1782 be considered a correct solution.
1783
1784 In the default mode, the dots are arranged in a grid of squares;
1785 however, you can also play on triangular or hexagonal grids, or even
1786 more exotic ones.
1787
1788 Credit for the basic puzzle idea goes to Nikoli [10].
1789
1790 Loopy was originally contributed to this collection by Mike Pinna,
1791 and subsequently enhanced to handle various types of non-square grid
1792 by Lambros Lambrou.
1793
1794 [10] http://www.nikoli.co.jp/en/puzzles/slitherlink.html (beware of
1795 Flash)
1796
1797#23.1 Loopy controls
1798
1799 Click the left mouse button on a yellow line to turn it black,
1800 indicating that you think it is part of the loop. Click again to
1801 turn the line yellow again (meaning you aren't sure yet).
1802
1803 If you are sure that a particular line segment is _not_ part of the
1804 loop, you can click the right mouse button to remove it completely.
1805 Again, clicking a second time will turn the line back to yellow.
1806
1807 (All the actions described in section 2.1 are also available.)
1808
1809#23.2 Loopy parameters
1810
1811 These parameters are available from the `Custom...' option on the
1812 `Type' menu.
1813
1814 _Width_, _Height_
1815
1816 Size of grid, measured in number of regions across and down. For
1817 square grids, it's clear how this is counted; for other types of
1818 grid you may have to think a bit to see how the dimensions are
1819 measured.
1820
1821 _Grid type_
1822
1823 Allows you to choose between a selection of types of tiling.
1824 Some have all the faces the same but may have multiple different
1825 types of vertex (e.g. the _Cairo_ or _Kites_ mode); others
1826 have all the vertices the same but may have different types of
1827 face (e.g. the _Great Hexagonal_). The square, triangular and
1828 honeycomb grids are fully regular, and have all their vertices
1829 _and_ faces the same; this makes them the least confusing to
1830 play.
1831
1832 _Difficulty_
1833
1834 Controls the difficulty of the generated puzzle.
1835
1836#Chapter 24: Inertia
1837
1838 You are a small green ball sitting in a grid full of obstacles. Your
1839 aim is to collect all the gems without running into any mines.
1840
1841 You can move the ball in any orthogonal _or diagonal_ direction.
1842 Once the ball starts moving, it will continue until something stops
1843 it. A wall directly in its path will stop it (but if it is moving
1844 diagonally, it will move through a diagonal gap between two other
1845 walls without stopping). Also, some of the squares are `stops'; when
1846 the ball moves on to a stop, it will stop moving no matter what
1847 direction it was going in. Gems do _not_ stop the ball; it picks
1848 them up and keeps on going.
1849
1850 Running into a mine is fatal. Even if you picked up the last gem in
1851 the same move which then hit a mine, the game will count you as dead
1852 rather than victorious.
1853
1854 This game was originally implemented for Windows by Ben Olmstead
1855 [11], who was kind enough to release his source code on request so
1856 that it could be re-implemented for this collection.
1857
1858 [11] http://xn13.com/
1859
1860#24.1 Inertia controls
1861
1862 You can move the ball in any of the eight directions using the
1863 numeric keypad. Alternatively, if you click the left mouse button
1864 on the grid, the ball will begin a move in the general direction of
1865 where you clicked.
1866
1867 If you use the `Solve' function on this game, the program will
1868 compute a path through the grid which collects all the remaining
1869 gems and returns to the current position. A hint arrow will appear
1870 on the ball indicating the direction in which you should move to
1871 begin on this path. If you then move in that direction, the arrow
1872 will update to indicate the next direction on the path. You can
1873 also press Space to automatically move in the direction of the hint
1874 arrow. If you move in a different direction from the one shown
1875 by the arrow, arrows will be shown only if the puzzle is still
1876 solvable.
1877
1878 All the actions described in section 2.1 are also available. In
1879 particular, if you do run into a mine and die, you can use the Undo
1880 function and resume playing from before the fatal move. The game
1881 will keep track of the number of times you have done this.
1882
1883#24.2 Inertia parameters
1884
1885 These parameters are available from the `Custom...' option on the
1886 `Type' menu.
1887
1888 _Width_, _Height_
1889
1890 Size of grid in squares.
1891
1892#Chapter 25: Tents
1893
1894 You have a grid of squares, some of which contain trees. Your aim is
1895 to place tents in some of the remaining squares, in such a way that
1896 the following conditions are met:
1897
1898 - There are exactly as many tents as trees.
1899
1900 - The tents and trees can be matched up in such a way that each
1901 tent is directly adjacent (horizontally or vertically, but not
1902 diagonally) to its own tree. However, a tent may be adjacent to
1903 other trees as well as its own.
1904
1905 - No two tents are adjacent horizontally, vertically _or
1906 diagonally_.
1907
1908 - The number of tents in each row, and in each column, matches the
1909 numbers given round the sides of the grid.
1910
1911 This puzzle can be found in several places on the Internet, and was
1912 brought to my attention by e-mail. I don't know who I should credit
1913 for inventing it.
1914
1915#25.1 Tents controls
1916
1917 Left-clicking in a blank square will place a tent in it. Right-
1918 clicking in a blank square will colour it green, indicating that you
1919 are sure it _isn't_ a tent. Clicking either button in an occupied
1920 square will clear it.
1921
1922 If you _drag_ with the right button along a row or column, every
1923 blank square in the region you cover will be turned green, and no
1924 other squares will be affected. (This is useful for clearing the
1925 remainder of a row once you have placed all its tents.)
1926
1927 You can also use the cursor keys to move around the grid. Pressing
1928 the return key over an empty square will place a tent, and pressing
1929 the space bar over an empty square will colour it green; either key
1930 will clear an occupied square. Holding Shift and pressing the cursor
1931 keys will colour empty squares green. Holding Control and pressing
1932 the cursor keys will colour green both empty squares and squares
1933 with tents.
1934
1935 (All the actions described in section 2.1 are also available.)
1936
1937#25.2 Tents parameters
1938
1939 These parameters are available from the `Custom...' option on the
1940 `Type' menu.
1941
1942 _Width_, _Height_
1943
1944 Size of grid in squares.
1945
1946 _Difficulty_
1947
1948 Controls the difficulty of the generated puzzle. More difficult
1949 puzzles require more complex deductions, but at present none
1950 of the available difficulty levels requires guesswork or
1951 backtracking.
1952
1953#Chapter 26: Bridges
1954
1955 You have a set of islands distributed across the playing area.
1956 Each island contains a number. Your aim is to connect the islands
1957 together with bridges, in such a way that:
1958
1959 - Bridges run horizontally or vertically.
1960
1961 - The number of bridges terminating at any island is equal to the
1962 number written in that island.
1963
1964 - Two bridges may run in parallel between the same two islands,
1965 but no more than two may do so.
1966
1967 - No bridge crosses another bridge.
1968
1969 - All the islands are connected together.
1970
1971 There are some configurable alternative modes, which involve
1972 changing the parallel-bridge limit to something other than 2, and
1973 introducing the additional constraint that no sequence of bridges
1974 may form a loop from one island back to the same island. The rules
1975 stated above are the default ones.
1976
1977 Credit for this puzzle goes to Nikoli [12].
1978
1979 Bridges was contributed to this collection by James Harvey.
1980
1981 [12] http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html (beware
1982 of Flash)
1983
1984#26.1 Bridges controls
1985
1986 To place a bridge between two islands, click the mouse down on one
1987 island and drag it towards the other. You do not need to drag all
1988 the way to the other island; you only need to move the mouse far
1989 enough for the intended bridge direction to be unambiguous. (So you
1990 can keep the mouse near the starting island and conveniently throw
1991 bridges out from it in many directions.)
1992
1993 Doing this again when a bridge is already present will add another
1994 parallel bridge. If there are already as many bridges between the
1995 two islands as permitted by the current game rules (i.e. two by
1996 default), the same dragging action will remove all of them.
1997
1998 If you want to remind yourself that two islands definitely _do not_
1999 have a bridge between them, you can right-drag between them in the
2000 same way to draw a `non-bridge' marker.
2001
2002 If you think you have finished with an island (i.e. you have placed
2003 all its bridges and are confident that they are in the right
2004 places), you can mark the island as finished by left-clicking on it.
2005 This will highlight it and all the bridges connected to it, and you
2006 will be prevented from accidentally modifying any of those bridges
2007 in future. Left-clicking again on a highlighted island will unmark
2008 it and restore your ability to modify it.
2009
2010 You can also use the cursor keys to move around the grid: if
2011 possible the cursor will always move orthogonally, otherwise it
2012 will move towards the nearest island to the indicated direction.
2013 Holding Control and pressing a cursor key will lay a bridge in that
2014 direction (if available); Shift and a cursor key will lay a `non-
2015 bridge' marker. Pressing the return key followed by a cursor key
2016 will also lay a bridge in that direction.
2017
2018 You can mark an island as finished by pressing the space bar or by
2019 pressing the return key twice.
2020
2021 By pressing a number key, you can jump to the nearest island with
2022 that number. Letters `a', ..., `f' count as 10, ..., 15 and `0' as
2023 16.
2024
2025 Violations of the puzzle rules will be marked in red:
2026
2027 - An island with too many bridges will be highlighted in red.
2028
2029 - An island with too few bridges will be highlighted in red if it
2030 is definitely an error (as opposed to merely not being finished
2031 yet): if adding enough bridges would involve having to cross
2032 another bridge or remove a non-bridge marker, or if the island
2033 has been highlighted as complete.
2034
2035 - A group of islands and bridges may be highlighted in red if it
2036 is a closed subset of the puzzle with no way to connect it to
2037 the rest of the islands. For example, if you directly connect
2038 two 1s together with a bridge and they are not the only two
2039 islands on the grid, they will light up red to indicate that
2040 such a group cannot be contained in any valid solution.
2041
2042 - If you have selected the (non-default) option to disallow loops
2043 in the solution, a group of bridges which forms a loop will be
2044 highlighted.
2045
2046 (All the actions described in section 2.1 are also available.)
2047
2048#26.2 Bridges parameters
2049
2050 These parameters are available from the `Custom...' option on the
2051 `Type' menu.
2052
2053 _Width_, _Height_
2054
2055 Size of grid in squares.
2056
2057 _Difficulty_
2058
2059 Difficulty level of puzzle.
2060
2061 _Allow loops_
2062
2063 This is set by default. If cleared, puzzles will be generated in
2064 such a way that they are always soluble without creating a loop,
2065 and solutions which do involve a loop will be disallowed.
2066
2067 _Max. bridges per direction_
2068
2069 Maximum number of bridges in any particular direction. The
2070 default is 2, but you can change it to 1, 3 or 4. In general,
2071 fewer is easier.
2072
2073 _%age of island squares_
2074
2075 Gives a rough percentage of islands the generator will try and
2076 lay before finishing the puzzle. Certain layouts will not manage
2077 to lay enough islands; this is an upper bound.
2078
2079 _Expansion factor (%age)_
2080
2081 The grid generator works by picking an existing island at random
2082 (after first creating an initial island somewhere). It then
2083 decides on a direction (at random), and then works out how far
2084 it could extend before creating another island. This parameter
2085 determines how likely it is to extend as far as it can, rather
2086 than choosing somewhere closer.
2087
2088 High expansion factors usually mean easier puzzles with fewer
2089 possible islands; low expansion factors can create lots of
2090 tightly-packed islands.
2091
2092#Chapter 27: Unequal
2093
2094 You have a square grid; each square may contain a digit from 1 to
2095 the size of the grid, and some squares have clue signs between them.
2096 Your aim is to fully populate the grid with numbers such that:
2097
2098 - Each row contains only one occurrence of each digit
2099
2100 - Each column contains only one occurrence of each digit
2101
2102 - All the clue signs are satisfied.
2103
2104 There are two modes for this game, `Unequal' and `Adjacent'.
2105
2106 In `Unequal' mode, the clue signs are greater-than symbols
2107 indicating one square's value is greater than its neighbour's. In
2108 this mode not all clues may be visible, particularly at higher
2109 difficulty levels.
2110
2111 In `Adjacent' mode, the clue signs are bars indicating one square's
2112 value is numerically adjacent (i.e. one higher or one lower) than
2113 its neighbour. In this mode all clues are always visible: absence of
2114 a bar thus means that a square's value is definitely not numerically
2115 adjacent to that neighbour's.
2116
2117 In `Trivial' difficulty level (available via the `Custom' game type
2118 selector), there are no greater-than signs in `Unequal' mode; the
2119 puzzle is to solve the Latin square only.
2120
2121 At the time of writing, the `Unequal' mode of this puzzle is
2122 appearing in the Guardian weekly under the name `Futoshiki'.
2123
2124 Unequal was contributed to this collection by James Harvey.
2125
2126#27.1 Unequal controls
2127
2128 Unequal shares much of its control system with Solo.
2129
2130 To play Unequal, simply click the mouse in any empty square and then
2131 type a digit or letter on the keyboard to fill that square. If you
2132 make a mistake, click the mouse in the incorrect square and press
2133 Space to clear it again (or use the Undo feature).
2134
2135 If you _right_-click in a square and then type a number, that
2136 number will be entered in the square as a `pencil mark'. You can
2137 have pencil marks for multiple numbers in the same square. Squares
2138 containing filled-in numbers cannot also contain pencil marks.
2139
2140 The game pays no attention to pencil marks, so exactly what you
2141 use them for is up to you: you can use them as reminders that a
2142 particular square needs to be re-examined once you know more about
2143 a particular number, or you can use them as lists of the possible
2144 numbers in a given square, or anything else you feel like.
2145
2146 To erase a single pencil mark, right-click in the square and type
2147 the same number again.
2148
2149 All pencil marks in a square are erased when you left-click and type
2150 a number, or when you left-click and press space. Right-clicking and
2151 pressing space will also erase pencil marks.
2152
2153 As for Solo, the cursor keys can be used in conjunction with the
2154 digit keys to set numbers or pencil marks. You can also use the `M'
2155 key to auto-fill every numeric hint, ready for removal as required,
2156 or the `H' key to do the same but also to remove all obvious hints.
2157
2158 Alternatively, use the cursor keys to move the mark around the grid.
2159 Pressing the return key toggles the mark (from a normal mark to a
2160 pencil mark), and typing a number in is entered in the square in the
2161 appropriate way; typing in a 0 or using the space bar will clear a
2162 filled square.
2163
2164 Left-clicking a clue will mark it as done (grey it out), or unmark
2165 it if it is already marked. Holding Control or Shift and pressing
2166 an arrow key likewise marks any clue adjacent to the cursor in the
2167 given direction.
2168
2169 (All the actions described in section 2.1 are also available.)
2170
2171#27.2 Unequal parameters
2172
2173 These parameters are available from the `Custom...' option on the
2174 `Type' menu.
2175
2176 _Mode_
2177
2178 Mode of the puzzle (`Unequal' or `Adjacent')
2179
2180 _Size (s*s)_
2181
2182 Size of grid.
2183
2184 _Difficulty_
2185
2186 Controls the difficulty of the generated puzzle. At Trivial
2187 level, there are no greater-than signs; the puzzle is to solve
2188 the Latin square only. At Recursive level (only available via
2189 the `Custom' game type selector) backtracking will be required,
2190 but the solution should still be unique. The levels in between
2191 require increasingly complex reasoning to avoid having to
2192 backtrack.
2193
2194#Chapter 28: Galaxies
2195
2196 You have a rectangular grid containing a number of dots. Your aim is
2197 to draw edges along the grid lines which divide the rectangle into
2198 regions in such a way that every region is 180-degree rotationally
2199 symmetric, and contains exactly one dot which is located at its
2200 centre of symmetry.
2201
2202 This puzzle was invented by Nikoli [13], under the name `Tentai
2203 Show'; its name is commonly translated into English as `Spiral
2204 Galaxies'.
2205
2206 Galaxies was contributed to this collection by James Harvey.
2207
2208 [13] http://www.nikoli.co.jp/en/puzzles/astronomical_show.html
2209
2210#28.1 Galaxies controls
2211
2212 Left-click on any grid line to draw an edge if there isn't one
2213 already, or to remove one if there is. When you create a valid
2214 region (one which is closed, contains exactly one dot, is 180-degree
2215 symmetric about that dot, and contains no extraneous edges inside
2216 it) it will be highlighted automatically; so your aim is to have the
2217 whole grid highlighted in that way.
2218
2219 During solving, you might know that a particular grid square belongs
2220 to a specific dot, but not be sure of where the edges go and which
2221 other squares are connected to the dot. In order to mark this so you
2222 don't forget, you can right-click on the dot and drag, which will
2223 create an arrow marker pointing at the dot. Drop that in a square of
2224 your choice and it will remind you which dot it's associated with.
2225 You can also right-click on existing arrows to pick them up and move
2226 them, or destroy them by dropping them off the edge of the grid.
2227 (Also, if you're not sure which dot an arrow is pointing at, you can
2228 pick it up and move it around to make it clearer. It will swivel
2229 constantly as you drag it, to stay pointed at its parent dot.)
2230
2231 You can also use the cursor keys to move around the grid squares and
2232 lines. Pressing the return key when over a grid line will draw or
2233 clear its edge, as above. Pressing the return key when over a dot
2234 will pick up an arrow, to be dropped the next time the return key
2235 is pressed; this can also be used to move existing arrows around,
2236 removing them by dropping them on a dot or another arrow.
2237
2238 (All the actions described in section 2.1 are also available.)
2239
2240#28.2 Galaxies parameters
2241
2242 These parameters are available from the `Custom...' option on the
2243 `Type' menu.
2244
2245 _Width_, _Height_
2246
2247 Size of grid in squares.
2248
2249 _Difficulty_
2250
2251 Controls the difficulty of the generated puzzle. More difficult
2252 puzzles require more complex deductions, and the `Unreasonable'
2253 difficulty level may require backtracking.
2254
2255#Chapter 29: Filling
2256
2257 You have a grid of squares, some of which contain digits, and the
2258 rest of which are empty. Your job is to fill in digits in the empty
2259 squares, in such a way that each connected region of squares all
2260 containing the same digit has an area equal to that digit.
2261
2262 (`Connected region', for the purposes of this game, does not count
2263 diagonally separated squares as adjacent.)
2264
2265 For example, it follows that no square can contain a zero, and that
2266 two adjacent squares can not both contain a one. No region has an
2267 area greater than 9 (because then its area would not be a single
2268 digit).
2269
2270 Credit for this puzzle goes to Nikoli [14].
2271
2272 Filling was contributed to this collection by Jonas Koelker.
2273
2274 [14] http://www.nikoli.co.jp/en/puzzles/fillomino.html
2275
2276#29.1 Filling controls
2277
2278 To play Filling, simply click the mouse in any empty square and
2279 then type a digit on the keyboard to fill that square. By dragging
2280 the mouse, you can select multiple squares to fill with a single
2281 keypress. If you make a mistake, click the mouse in the incorrect
2282 square and press 0, Space, Backspace or Enter to clear it again (or
2283 use the Undo feature).
2284
2285 You can also move around the grid with the cursor keys; typing a
2286 digit will fill the square containing the cursor with that number;
2287 typing 0 will clear it. You can also select multiple squares for
2288 numbering or clearing with the return and arrow keys, before typing
2289 a digit to fill or clear the highlighted squares (as above). The
2290 space bar adds and removes single squares to and from the selection.
2291 Backspace and escape remove all squares from the selection.
2292
2293 (All the actions described in section 2.1 are also available.)
2294
2295#29.2 Filling parameters
2296
2297 Filling allows you to configure the number of rows and columns of
2298 the grid, through the `Type' menu.
2299
2300#Chapter 30: Keen
2301
2302 You have a square grid; each square may contain a digit from 1 to
2303 the size of the grid. The grid is divided into blocks of varying
2304 shape and size, with arithmetic clues written in them. Your aim is
2305 to fully populate the grid with digits such that:
2306
2307 - Each row contains only one occurrence of each digit
2308
2309 - Each column contains only one occurrence of each digit
2310
2311 - The digits in each block can be combined to form the number
2312 stated in the clue, using the arithmetic operation given in the
2313 clue. That is:
2314
2315 - An addition clue means that the sum of the digits in the
2316 block must be the given number. For example, `15+' means the
2317 contents of the block adds up to fifteen.
2318
2319 - A multiplication clue (e.g. `60*'), similarly, means that
2320 the product of the digits in the block must be the given
2321 number.
2322
2323 - A subtraction clue will always be written in a block of
2324 size two, and it means that one of the digits in the block
2325 is greater than the other by the given amount. For example,
2326 `2-' means that one of the digits in the block is 2 more
2327 than the other, or equivalently that one digit minus the
2328 other one is 2. The two digits could be either way round,
2329 though.
2330
2331 - A division clue (e.g. `3/'), similarly, is always in a block
2332 of size two and means that one digit divided by the other is
2333 equal to the given amount.
2334
2335 Note that a block may contain the same digit more than once
2336 (provided the identical ones are not in the same row and
2337 column). This rule is precisely the opposite of the rule in
2338 Solo's `Killer' mode (see chapter 11).
2339
2340 This puzzle appears in the Times under the name `KenKen'.
2341
2342#30.1 Keen controls
2343
2344 Keen shares much of its control system with Solo (and Unequal).
2345
2346 To play Keen, simply click the mouse in any empty square and then
2347 type a digit on the keyboard to fill that square. If you make a
2348 mistake, click the mouse in the incorrect square and press Space to
2349 clear it again (or use the Undo feature).
2350
2351 If you _right_-click in a square and then type a number, that
2352 number will be entered in the square as a `pencil mark'. You can
2353 have pencil marks for multiple numbers in the same square. Squares
2354 containing filled-in numbers cannot also contain pencil marks.
2355
2356 The game pays no attention to pencil marks, so exactly what you
2357 use them for is up to you: you can use them as reminders that a
2358 particular square needs to be re-examined once you know more about
2359 a particular number, or you can use them as lists of the possible
2360 numbers in a given square, or anything else you feel like.
2361
2362 To erase a single pencil mark, right-click in the square and type
2363 the same number again.
2364
2365 All pencil marks in a square are erased when you left-click and type
2366 a number, or when you left-click and press space. Right-clicking and
2367 pressing space will also erase pencil marks.
2368
2369 As for Solo, the cursor keys can be used in conjunction with the
2370 digit keys to set numbers or pencil marks. Use the cursor keys to
2371 move a highlight around the grid, and type a digit to enter it in
2372 the highlighted square. Pressing return toggles the highlight into a
2373 mode in which you can enter or remove pencil marks.
2374
2375 Pressing M will fill in a full set of pencil marks in every square
2376 that does not have a main digit in it.
2377
2378 (All the actions described in section 2.1 are also available.)
2379
2380#30.2 Keen parameters
2381
2382 These parameters are available from the `Custom...' option on the
2383 `Type' menu.
2384
2385 _Grid size_
2386
2387 Specifies the size of the grid. Lower limit is 3; upper limit is
2388 9 (because the user interface would become more difficult with
2389 `digits' bigger than 9!).
2390
2391 _Difficulty_
2392
2393 Controls the difficulty of the generated puzzle. At Unreasonable
2394 level, some backtracking will be required, but the solution
2395 should still be unique. The remaining levels require
2396 increasingly complex reasoning to avoid having to backtrack.
2397
2398 _Multiplication only_
2399
2400 If this is enabled, all boxes will be multiplication boxes. With
2401 this rule, the puzzle is known as `Inshi No Heya'.
2402
2403#Chapter 31: Towers
2404
2405 You have a square grid. On each square of the grid you can build
2406 a tower, with its height ranging from 1 to the size of the grid.
2407 Around the edge of the grid are some numeric clues.
2408
2409 Your task is to build a tower on every square, in such a way that:
2410
2411 - Each row contains every possible height of tower once
2412
2413 - Each column contains every possible height of tower once
2414
2415 - Each numeric clue describes the number of towers that can be
2416 seen if you look into the square from that direction, assuming
2417 that shorter towers are hidden behind taller ones. For example,
2418 in a 5x5 grid, a clue marked `5' indicates that the five tower
2419 heights must appear in increasing order (otherwise you would
2420 not be able to see all five towers), whereas a clue marked `1'
2421 indicates that the tallest tower (the one marked 5) must come
2422 first.
2423
2424 In harder or larger puzzles, some towers will be specified for you
2425 as well as the clues round the edge, and some edge clues may be
2426 missing.
2427
2428 This puzzle appears on the web under various names, particularly
2429 `Skyscrapers', but I don't know who first invented it.
2430
2431#31.1 Towers controls
2432
2433 Towers shares much of its control system with Solo, Unequal and
2434 Keen.
2435
2436 To play Towers, simply click the mouse in any empty square and then
2437 type a digit on the keyboard to fill that square with a tower of
2438 the given height. If you make a mistake, click the mouse in the
2439 incorrect square and press Space to clear it again (or use the Undo
2440 feature).
2441
2442 If you _right_-click in a square and then type a number, that
2443 number will be entered in the square as a `pencil mark'. You can
2444 have pencil marks for multiple numbers in the same square. A square
2445 containing a tower cannot also contain pencil marks.
2446
2447 The game pays no attention to pencil marks, so exactly what you
2448 use them for is up to you: you can use them as reminders that a
2449 particular square needs to be re-examined once you know more about
2450 a particular number, or you can use them as lists of the possible
2451 numbers in a given square, or anything else you feel like.
2452
2453 To erase a single pencil mark, right-click in the square and type
2454 the same number again.
2455
2456 All pencil marks in a square are erased when you left-click and type
2457 a number, or when you left-click and press space. Right-clicking and
2458 pressing space will also erase pencil marks.
2459
2460 As for Solo, the cursor keys can be used in conjunction with the
2461 digit keys to set numbers or pencil marks. Use the cursor keys to
2462 move a highlight around the grid, and type a digit to enter it in
2463 the highlighted square. Pressing return toggles the highlight into a
2464 mode in which you can enter or remove pencil marks.
2465
2466 Pressing M will fill in a full set of pencil marks in every square
2467 that does not have a main digit in it.
2468
2469 Left-clicking a clue will mark it as done (grey it out), or unmark
2470 it if it is already marked. Holding Control or Shift and pressing an
2471 arrow key likewise marks any clue in the given direction.
2472
2473 (All the actions described in section 2.1 are also available.)
2474
2475#31.2 Towers parameters
2476
2477 These parameters are available from the `Custom...' option on the
2478 `Type' menu.
2479
2480 _Grid size_
2481
2482 Specifies the size of the grid. Lower limit is 3; upper limit is
2483 9 (because the user interface would become more difficult with
2484 `digits' bigger than 9!).
2485
2486 _Difficulty_
2487
2488 Controls the difficulty of the generated puzzle. At Unreasonable
2489 level, some backtracking will be required, but the solution
2490 should still be unique. The remaining levels require
2491 increasingly complex reasoning to avoid having to backtrack.
2492
2493#Chapter 32: Singles
2494
2495 You have a grid of white squares, all of which contain numbers. Your
2496 task is to colour some of the squares black (removing the number) so
2497 as to satisfy all of the following conditions:
2498
2499 - No number occurs more than once in any row or column.
2500
2501 - No black square is horizontally or vertically adjacent to any
2502 other black square.
2503
2504 - The remaining white squares must all form one contiguous region
2505 (connected by edges, not just touching at corners).
2506
2507 Credit for this puzzle goes to Nikoli [15] who call it Hitori.
2508
2509 Singles was contributed to this collection by James Harvey.
2510
2511 [15] http://www.nikoli.com/en/puzzles/hitori.html (beware of Flash)
2512
2513#32.1 Singles controls
2514
2515 Left-clicking on an empty square will colour it black; left-clicking
2516 again will restore the number. Right-clicking will add a circle
2517 (useful for indicating that a cell is definitely not black).
2518
2519 You can also use the cursor keys to move around the grid. Pressing
2520 the return or space keys will turn a square black or add a circle
2521 respectively, and pressing the key again will restore the number or
2522 remove the circle.
2523
2524 (All the actions described in section 2.1 are also available.)
2525
2526#32.2 Singles parameters
2527
2528 These parameters are available from the `Custom...' option on the
2529 `Type' menu.
2530
2531 _Width_, _Height_
2532
2533 Size of grid in squares.
2534
2535 _Difficulty_
2536
2537 Controls the difficulty of the generated puzzle.
2538
2539#Chapter 33: Magnets
2540
2541 A rectangular grid has been filled with a mixture of magnets (that
2542 is, dominoes with one positive end and one negative end) and blank
2543 dominoes (that is, dominoes with two neutral poles). These dominoes
2544 are initially only seen in silhouette. Around the grid are placed a
2545 number of clues indicating the number of positive and negative poles
2546 contained in certain columns and rows.
2547
2548 Your aim is to correctly place the magnets and blank dominoes such
2549 that all the clues are satisfied, with the additional constraint
2550 that no two similar magnetic poles may be orthogonally adjacent
2551 (since they repel). Neutral poles do not repel, and can be adjacent
2552 to any other pole.
2553
2554 Credit for this puzzle goes to Janko [16].
2555
2556 Magnets was contributed to this collection by James Harvey.
2557
2558 [16] http://www.janko.at/Raetsel/Magnete/index.htm
2559
2560#33.1 Magnets controls
2561
2562 Left-clicking on an empty square places a magnet at that position
2563 with the positive pole on the square and the negative pole on the
2564 other half of the magnet; left-clicking again reverses the polarity,
2565 and a third click removes the magnet.
2566
2567 Right-clicking on an empty square places a blank domino there.
2568 Right-clicking again places two question marks on the domino,
2569 signifying `this cannot be blank' (which can be useful to note
2570 deductions while solving), and right-clicking again empties the
2571 domino.
2572
2573 Left-clicking a clue will mark it as done (grey it out), or unmark
2574 it if it is already marked.
2575
2576 You can also use the cursor keys to move a cursor around the grid.
2577 Pressing the return key will lay a domino with a positive pole at
2578 that position; pressing again reverses the polarity and then removes
2579 the domino, as with left-clicking. Using the space bar allows
2580 placement of blank dominoes and cannot-be-blank hints, as for right-
2581 clicking.
2582
2583 (All the actions described in section 2.1 are also available.)
2584
2585#33.2 Magnets parameters
2586
2587 These parameters are available from the `Custom...' option on the
2588 `Type' menu.
2589
2590 _Width_, _Height_
2591
2592 Size of grid in squares. There will be half _Width_ x _Height_
2593 dominoes in the grid: if this number is odd then one square will
2594 be blank.
2595
2596 (Grids with at least one odd dimension tend to be easier to
2597 solve.)
2598
2599 _Difficulty_
2600
2601 Controls the difficulty of the generated puzzle. At Tricky
2602 level, you are required to make more deductions about empty
2603 dominoes and row/column counts.
2604
2605 _Strip clues_
2606
2607 If true, some of the clues around the grid are removed at
2608 generation time, making the puzzle more difficult.
2609
2610#Chapter 34: Signpost
2611
2612 You have a grid of squares; each square (except the last one)
2613 contains an arrow, and some squares also contain numbers. Your job
2614 is to connect the squares to form a continuous list of numbers
2615 starting at 1 and linked in the direction of the arrows - so the
2616 arrow inside the square with the number 1 will point to the square
2617 containing the number 2, which will point to the square containing
2618 the number 3, etc. Each square can be any distance away from the
2619 previous one, as long as it is somewhere in the direction of the
2620 arrow.
2621
2622 By convention the first and last numbers are shown; one or more
2623 interim numbers may also appear at the beginning.
2624
2625 Credit for this puzzle goes to Janko [17], who call it `Pfeilpfad'
2626 (`arrow path').
2627
2628 Signpost was contributed to this collection by James Harvey.
2629
2630 [17] http://janko.at/Raetsel/Pfeilpfad/index.htm
2631
2632#34.1 Signpost controls
2633
2634 To play Signpost, you connect squares together by dragging from
2635 one square to another, indicating that they are adjacent in the
2636 sequence. Drag with the left button from a square to its successor,
2637 or with the right button from a square to its predecessor.
2638
2639 If you connect together two squares in this way and one of them has
2640 a number in it, the appropriate number will appear in the other
2641 square. If you connect two non-numbered squares, they will be
2642 assigned temporary algebraic labels: on the first occasion, they
2643 will be labelled `a' and `a+1', and then `b' and `b+1', and so on.
2644 Connecting more squares on to the ends of such a chain will cause
2645 them all to be labelled with the same letter.
2646
2647 When you left-click or right-click in a square, the legal squares to
2648 connect it to will be shown.
2649
2650 The arrow in each square starts off black, and goes grey once you
2651 connect the square to its successor. Also, each square which needs
2652 a predecessor has a small dot in the bottom left corner, which
2653 vanishes once you link a square to it. So your aim is always to
2654 connect a square with a black arrow to a square with a dot.
2655
2656 To remove any links for a particular square (both incoming and
2657 outgoing), left-drag it off the grid. To remove a whole chain,
2658 right-drag any square in the chain off the grid.
2659
2660 You can also use the cursor keys to move around the grid squares
2661 and lines. Pressing the return key when over a square starts a link
2662 operation, and pressing the return key again over a square will
2663 finish the link, if allowable. Pressing the space bar over a square
2664 will show the other squares pointing to it, and allow you to form a
2665 backward link, and pressing the space bar again cancels this.
2666
2667 (All the actions described in section 2.1 are also available.)
2668
2669#34.2 Signpost parameters
2670
2671 These parameters are available from the `Custom...' option on the
2672 `Type' menu.
2673
2674 _Width_, _Height_
2675
2676 Size of grid in squares.
2677
2678 _Force start/end to corners_
2679
2680 If true, the start and end squares are always placed in opposite
2681 corners (the start at the top left, and the end at the bottom
2682 right). If false the start and end squares are placed randomly
2683 (although always both shown).
2684
2685#Chapter 35: Range
2686
2687 You have a grid of squares; some squares contain numbers. Your job
2688 is to colour some of the squares black, such that several criteria
2689 are satisfied:
2690
2691 - no square with a number is coloured black.
2692
2693 - no two black squares are adjacent (horizontally or vertically).
2694
2695 - for any two white squares, there is a path between them using
2696 only white squares.
2697
2698 - for each square with a number, that number denotes the total
2699 number of white squares reachable from that square going in a
2700 straight line in any horizontal or vertical direction until
2701 hitting a wall or a black square; the square with the number is
2702 included in the total (once).
2703
2704 For instance, a square containing the number one must have four
2705 black squares as its neighbours by the last criterion; but then it's
2706 impossible for it to be connected to any outside white square, which
2707 violates the second to last criterion. So no square will contain the
2708 number one.
2709
2710 Credit for this puzzle goes to Nikoli, who have variously called it
2711 `Kurodoko', `Kuromasu' or `Where is Black Cells'. [18].
2712
2713 Range was contributed to this collection by Jonas Koelker.
2714
2715 [18] http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html
2716
2717#35.1 Range controls
2718
2719 Click with the left button to paint a square black, or with the
2720 right button to mark a square with a dot to indicate that you are
2721 sure it should _not_ be painted black. Repeated clicking with either
2722 button will cycle the square through the three possible states
2723 (filled, dotted or empty) in opposite directions.
2724
2725 You can also use the cursor keys to move around the grid squares.
2726 Pressing Return does the same as clicking with the left button,
2727 while pressing Space does the same as a right button click. Moving
2728 with the cursor keys while holding Shift will place dots in all
2729 squares that are moved through.
2730
2731 (All the actions described in section 2.1 are also available.)
2732
2733#35.2 Range parameters
2734
2735 These parameters are available from the `Custom...' option on the
2736 `Type' menu.
2737
2738 _Width_, _Height_
2739
2740 Size of grid in squares.
2741
2742#Chapter 36: Pearl
2743
2744 You have a grid of squares. Your job is to draw lines between the
2745 centres of horizontally or vertically adjacent squares, so that the
2746 lines form a single closed loop. In the resulting grid, some of the
2747 squares that the loop passes through will contain corners, and some
2748 will be straight horizontal or vertical lines. (And some squares can
2749 be completely empty - the loop doesn't have to pass through every
2750 square.)
2751
2752 Some of the squares contain black and white circles, which are clues
2753 that the loop must satisfy.
2754
2755 A black circle in a square indicates that that square is a corner,
2756 but neither of the squares adjacent to it in the loop is also a
2757 corner.
2758
2759 A white circle indicates that the square is a straight edge, but _at
2760 least one_ of the squares adjacent to it in the loop is a corner.
2761
2762 (In both cases, the clue only constrains the two squares adjacent
2763 _in the loop_, that is, the squares that the loop passes into after
2764 leaving the clue square. The squares that are only adjacent _in the
2765 grid_ are not constrained.)
2766
2767 Credit for this puzzle goes to Nikoli, who call it `Masyu'. [19]
2768
2769 Thanks to James Harvey for assistance with the implementation.
2770
2771 [19] http://www.nikoli.co.jp/en/puzzles/masyu.html (beware of Flash)
2772
2773#36.1 Pearl controls
2774
2775 Click with the left button on a grid edge to draw a segment of the
2776 loop through that edge, or to remove a segment once it is drawn.
2777
2778 Drag with the left button through a series of squares to draw more
2779 than one segment of the loop in one go. Alternatively, drag over an
2780 existing part of the loop to undraw it, or to undraw part of it and
2781 then go in a different direction.
2782
2783 Click with the right button on a grid edge to mark it with a cross,
2784 indicating that you are sure the loop does not go through that edge.
2785 (For instance, if you have decided which of the squares adjacent
2786 to a white clue has to be a corner, but don't yet know which way
2787 the corner turns, you might mark the one way it _can't_ go with a
2788 cross.)
2789
2790 Alternatively, use the cursor keys to move the cursor. Use the Enter
2791 key to begin and end keyboard `drag' operations. Use the Space,
2792 Escape or Backspace keys to cancel the drag. Or, hold Control while
2793 dragging with the cursor keys to toggle segments as you move between
2794 squares.
2795
2796 Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left
2797 or right click, respectively, on the edge in the direction of the
2798 key.
2799
2800 (All the actions described in section 2.1 are also available.)
2801
2802#36.2 Pearl parameters
2803
2804 These parameters are available from the `Custom...' option on the
2805 `Type' menu.
2806
2807#Chapter 37: Undead
2808
2809 You are given a grid of squares, some of which contain diagonal
2810 mirrors. Every square which is not a mirror must be filled with one
2811 of three types of undead monster: a ghost, a vampire, or a zombie.
2812
2813 Vampires can be seen directly, but are invisible when reflected in
2814 mirrors. Ghosts are the opposite way round: they can be seen in
2815 mirrors, but are invisible when looked at directly. Zombies are
2816 visible by any means.
2817
2818 You are also told the total number of each type of monster in the
2819 grid. Also around the edge of the grid are written numbers, which
2820 indicate how many monsters can be seen if you look into the grid
2821 along a row or column starting from that position. (The diagonal
2822 mirrors are reflective on both sides. If your reflected line of
2823 sight crosses the same monster more than once, the number will count
2824 it each time it is visible, not just once.)
2825
2826 This puzzle type was invented by David Millar, under the name
2827 `Haunted Mirror Maze'. See [20] for more details.
2828
2829 Undead was contributed to this collection by Steffen Bauer.
2830
2831 [20] http://www.janko.at/Raetsel/Spukschloss/index.htm
2832
2833#37.1 Undead controls
2834
2835 Undead has a similar control system to Solo, Unequal and Keen.
2836
2837 To play Undead, click the mouse in any empty square and then type
2838 a letter on the keyboard indicating the type of monster: `G' for
2839 a ghost, `V' for a vampire, or `Z' for a zombie. If you make a
2840 mistake, click the mouse in the incorrect square and press Space to
2841 clear it again (or use the Undo feature).
2842
2843 If you _right_-click in a square and then type a letter, the
2844 corresponding monster will be shown in reduced size in that square,
2845 as a `pencil mark'. You can have pencil marks for multiple monsters
2846 in the same square. A square containing a full-size monster cannot
2847 also contain pencil marks.
2848
2849 The game pays no attention to pencil marks, so exactly what you
2850 use them for is up to you: you can use them as reminders that a
2851 particular square needs to be re-examined once you know more about
2852 a particular monster, or you can use them as lists of the possible
2853 monster in a given square, or anything else you feel like.
2854
2855 To erase a single pencil mark, right-click in the square and type
2856 the same letter again.
2857
2858 All pencil marks in a square are erased when you left-click and type
2859 a monster letter, or when you left-click and press Space. Right-
2860 clicking and pressing space will also erase pencil marks.
2861
2862 As for Solo, the cursor keys can be used in conjunction with the
2863 letter keys to place monsters or pencil marks. Use the cursor keys
2864 to move a highlight around the grid, and type a monster letter to
2865 enter it in the highlighted square. Pressing return toggles the
2866 highlight into a mode in which you can enter or remove pencil marks.
2867
2868 If you prefer plain letters of the alphabet to cute monster
2869 pictures, you can press `A' to toggle between showing the monsters
2870 as monsters or showing them as letters.
2871
2872 Left-clicking a clue will mark it as done (grey it out), or unmark
2873 it if it is already marked.
2874
2875 (All the actions described in section 2.1 are also available.)
2876
2877#37.2 Undead parameters
2878
2879 These parameters are available from the `Custom...' option on the
2880 `Type' menu.
2881
2882 _Width_, _Height_
2883
2884 Size of grid in squares.
2885
2886 _Difficulty_
2887
2888 Controls the difficulty of the generated puzzle.
2889
2890#Chapter 38: Unruly
2891
2892 You are given a grid of squares, which you must colour either black
2893 or white. Some squares are provided as clues; the rest are left for
2894 you to fill in. Each row and column must contain the same number
2895 of black and white squares, and no row or column may contain three
2896 consecutive squares of the same colour.
2897
2898 This puzzle type was invented by Adolfo Zanellati, under the name
2899 `Tohu wa Vohu'. See [21] for more details.
2900
2901 Unruly was contributed to this collection by Lennard Sprong.
2902
2903 [21] http://www.janko.at/Raetsel/Tohu-Wa-Vohu/index.htm
2904
2905#38.1 Unruly controls
2906
2907 To play Unruly, click the mouse in a square to change its colour.
2908 Left-clicking an empty square will turn it black, and right-clicking
2909 will turn it white. Keep clicking the same button to cycle through
2910 the three possible states for the square. If you middle-click in a
2911 square it will be reset to empty.
2912
2913 You can also use the cursor keys to move around the grid. Pressing
2914 the return or space keys will turn an empty square black or white
2915 respectively (and then cycle the colours in the same way as the
2916 mouse buttons), and pressing Backspace will reset a square to empty.
2917
2918 (All the actions described in section 2.1 are also available.)
2919
2920#38.2 Unruly parameters
2921
2922 These parameters are available from the `Custom...' option on the
2923 `Type' menu.
2924
2925 _Width_, _Height_
2926
2927 Size of grid in squares. (Note that the rules of the game
2928 require both the width and height to be even numbers.)
2929
2930 _Difficulty_
2931
2932 Controls the difficulty of the generated puzzle.
2933
2934 _Unique rows and columns_
2935
2936 If enabled, no two rows are permitted to have exactly the same
2937 pattern, and likewise columns. (A row and a column can match,
2938 though.)
2939
2940#Chapter 39: Flood
2941
2942 You are given a grid of squares, coloured at random in multiple
2943 colours. In each move, you can flood-fill the top left square in a
2944 colour of your choice (i.e. every square reachable from the starting
2945 square by an orthogonally connected path of squares all the same
2946 colour will be filled in the new colour). As you do this, more and
2947 more of the grid becomes connected to the starting square.
2948
2949 Your aim is to make the whole grid the same colour, in as few moves
2950 as possible. The game will set a limit on the number of moves, based
2951 on running its own internal solver. You win if you can make the
2952 whole grid the same colour in that many moves or fewer.
2953
2954 I saw this game (with a fixed grid size, fixed number of colours,
2955 and fixed move limit) at http://floodit.appspot.com (no longer
2956 accessible).
2957
2958#39.1 Flood controls
2959
2960 To play Flood, click the mouse in a square. The top left corner and
2961 everything connected to it will be flood-filled with the colour of
2962 the square you clicked. Clicking a square the same colour as the top
2963 left corner has no effect, and therefore does not count as a move.
2964
2965 You can also use the cursor keys to move a cursor (outline black
2966 square) around the grid. Pressing the return key will fill the top
2967 left corner in the colour of the square under the cursor.
2968
2969 (All the actions described in section 2.1 are also available.)
2970
2971#39.2 Flood parameters
2972
2973 These parameters are available from the `Custom...' option on the
2974 `Type' menu.
2975
2976 _Width_, _Height_
2977
2978 Size of the grid, in squares.
2979
2980 _Colours_
2981
2982 Number of colours used to fill the grid. Must be at least 3
2983 (with two colours there would only be one legal move at any
2984 stage, hence no choice to make at all), and at most 10.
2985
2986 _Extra moves permitted_
2987
2988 Controls the difficulty of the puzzle, by increasing the move
2989 limit. In each new grid, Flood will run an internal solver to
2990 generate its own solution, and then the value in this field
2991 will be added to the length of Flood's solution to generate the
2992 game's move limit. So a value of 0 requires you to be just as
2993 efficient as Flood's automated solver, and a larger value makes
2994 it easier.
2995
2996 (Note that Flood's internal solver will not necessarily find the
2997 shortest possible solution, though I believe it's pretty close.
2998 For a real challenge, set this value to 0 and then try to solve
2999 a grid in _strictly fewer_ moves than the limit you're given!)
3000
3001#Chapter 40: Tracks
3002
3003 You are given a grid of squares, some of which are filled with train
3004 tracks. You need to complete the track from A to B so that the
3005 rows and columns contain the same number of track segments as are
3006 indicated in the clues to the top and right of the grid.
3007
3008 There are only straight and 90 degree curved rails, and the track
3009 may not cross itself.
3010
3011 Tracks was contributed to this collection by James Harvey.
3012
3013#40.1 Tracks controls
3014
3015 Left-clicking on an edge between two squares adds a track segment
3016 between the two squares. Right-clicking on an edge adds a cross on
3017 the edge, indicating no track is possible there.
3018
3019 Left-clicking in a square adds a colour indicator showing that
3020 you know the square must contain a track, even if you don't know
3021 which edges it crosses yet. Right-clicking in a square adds a cross
3022 indicating it contains no track segment.
3023
3024 Left- or right-dragging between squares allows you to lay a straight
3025 line of is-track or is-not-track indicators, useful for filling in
3026 rows or columns to match the clue.
3027
3028 (All the actions described in section 2.1 are also available.)
3029
3030#40.2 Tracks parameters
3031
3032 These parameters are available from the `Custom...' option on the
3033 `Type' menu.
3034
3035 _Width_, _Height_
3036
3037 Size of the grid, in squares.
3038
3039 _Difficulty_
3040
3041 Controls the difficulty of the generated puzzle: at Tricky
3042 level, you are required to make more deductions regarding
3043 disregarding moves that would lead to impossible crossings
3044 later.
3045
3046 _Disallow consecutive 1 clues_
3047
3048 Controls whether the Tracks game generation permits two adjacent
3049 rows or columns to have a 1 clue, or permits the row or column
3050 of the track's endpoint to have a 1 clue. By default this is
3051 not permitted, to avoid long straight boring segments of track
3052 and make the games more twiddly and interesting. If you want to
3053 restore the possibility, turn this option off.
3054
3055#Chapter 41: Palisade
3056
3057 You're given a grid of squares, some of which contain numbers. Your
3058 goal is to subdivide the grid into contiguous regions, all of the
3059 same (given) size, such that each square containing a number is
3060 adjacent to exactly that many edges (including those between the
3061 inside and the outside of the grid).
3062
3063 Credit for this puzzle goes to Nikoli, who call it `Five Cells'.
3064 [22].
3065
3066 Palisade was contributed to this collection by Jonas Koelker.
3067
3068 [22] http://nikoli.co.jp/en/puzzles/five_cells.html
3069
3070#41.1 Palisade controls
3071
3072 Left-click to place an edge. Right-click to indicate `no edge'.
3073 Alternatively, the arrow keys will move a keyboard cursor. Holding
3074 Control while pressing an arrow key will place an edge. Press Shift-
3075 arrowkey to switch off an edge. Repeat an action to perform its
3076 inverse.
3077
3078 (All the actions described in section 2.1 are also available.)
3079
3080#41.2 Palisade parameters
3081
3082 These parameters are available from the `Custom...' option on the
3083 `Type' menu.
3084
3085 _Width_, _Height_
3086
3087 Size of grid in squares.
3088
3089 _Region size_
3090
3091 The size of the regions into which the grid must be subdivided.
3092
3093#Appendix A: Licence
3094
3095 This software is copyright 2004-2014 Simon Tatham.
3096
3097 Portions copyright Richard Boulton, James Harvey, Mike Pinna, Jonas
3098 Koelker, Dariusz Olszewski, Michael Schierl, Lambros Lambrou, Bernd
3099 Schmidt, Steffen Bauer, Lennard Sprong and Rogier Goossens.
3100
3101 Permission is hereby granted, free of charge, to any person
3102 obtaining a copy of this software and associated documentation files
3103 (the `Software'), to deal in the Software without restriction,
3104 including without limitation the rights to use, copy, modify, merge,
3105 publish, distribute, sublicense, and/or sell copies of the Software,
3106 and to permit persons to whom the Software is furnished to do so,
3107 subject to the following conditions:
3108
3109 The above copyright notice and this permission notice shall be
3110 included in all copies or substantial portions of the Software.
3111
3112 THE SOFTWARE IS PROVIDED `AS IS', WITHOUT WARRANTY OF ANY KIND,
3113 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
3114 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
3115 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
3116 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
3117 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
3118 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3119 SOFTWARE.
3120
diff --git a/apps/plugins/puzzles/src/singles.R b/apps/plugins/puzzles/src/singles.R
index 2d10c4b388..a67aed2fbc 100644
--- a/apps/plugins/puzzles/src/singles.R
+++ b/apps/plugins/puzzles/src/singles.R
@@ -1,6 +1,6 @@
1# -*- makefile -*- 1# -*- makefile -*-
2 2
3SINGLES_EXTRA = dsf latin maxflow tree234 3SINGLES_EXTRA = dsf LATIN
4 4
5singles : [X] GTK COMMON singles SINGLES_EXTRA singles-icon|no-icon 5singles : [X] GTK COMMON singles SINGLES_EXTRA singles-icon|no-icon
6singles : [G] WINDOWS COMMON singles SINGLES_EXTRA singles.res|noicon.res 6singles : [G] WINDOWS COMMON singles SINGLES_EXTRA singles.res|noicon.res
diff --git a/apps/plugins/puzzles/src/solo.c b/apps/plugins/puzzles/src/solo.c
index ac0b807acd..69fd85b90b 100644
--- a/apps/plugins/puzzles/src/solo.c
+++ b/apps/plugins/puzzles/src/solo.c
@@ -3608,17 +3608,23 @@ static struct block_structure *gen_killer_cages(int cr, random_state *rs,
3608 return b; 3608 return b;
3609} 3609}
3610 3610
3611static char *game_request_keys(const game_params *params) 3611static key_label *game_request_keys(const game_params *params, int *nkeys)
3612{ 3612{
3613 int i; 3613 int i;
3614 int cr = params->c * params->r; 3614 int cr = params->c * params->r;
3615 char *keys = smalloc(cr+2); 3615 key_label *keys = snewn(cr+1, key_label);
3616 *nkeys = cr + 1;
3617
3616 for (i = 0; i < cr; i++) { 3618 for (i = 0; i < cr; i++) {
3617 if (i<9) keys[i] = '1' + i; 3619 if (i<9) keys[i].button = '1' + i;
3618 else keys[i] = 'a' + i - 9; 3620 else keys[i].button = 'a' + i - 9;
3621
3622 keys[i].label = NULL;
3619 } 3623 }
3620 keys[cr] = '\b'; 3624 keys[cr].button = '\b';
3621 keys[cr+1] = '\0'; 3625 keys[cr].label = NULL;
3626
3627
3622 return keys; 3628 return keys;
3623} 3629}
3624 3630
diff --git a/apps/plugins/puzzles/src/tents.R b/apps/plugins/puzzles/src/tents.R
index 557f929840..925661c761 100644
--- a/apps/plugins/puzzles/src/tents.R
+++ b/apps/plugins/puzzles/src/tents.R
@@ -1,6 +1,6 @@
1# -*- makefile -*- 1# -*- makefile -*-
2 2
3TENTS_EXTRA = maxflow dsf 3TENTS_EXTRA = matching dsf
4 4
5tents : [X] GTK COMMON tents TENTS_EXTRA tents-icon|no-icon 5tents : [X] GTK COMMON tents TENTS_EXTRA tents-icon|no-icon
6 6
diff --git a/apps/plugins/puzzles/src/tents.c b/apps/plugins/puzzles/src/tents.c
index 48da7f2a13..2f0977efbe 100644
--- a/apps/plugins/puzzles/src/tents.c
+++ b/apps/plugins/puzzles/src/tents.c
@@ -35,7 +35,7 @@
35#include <math.h> 35#include <math.h>
36 36
37#include "puzzles.h" 37#include "puzzles.h"
38#include "maxflow.h" 38#include "matching.h"
39 39
40/* 40/*
41 * Design discussion 41 * Design discussion
@@ -907,14 +907,17 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
907 char *puzzle = snewn(w*h, char); 907 char *puzzle = snewn(w*h, char);
908 int *numbers = snewn(w+h, int); 908 int *numbers = snewn(w+h, int);
909 char *soln = snewn(w*h, char); 909 char *soln = snewn(w*h, char);
910 int *temp = snewn(2*w*h, int); 910 int *order = snewn(w*h, int);
911 int *treemap = snewn(w*h, int);
911 int maxedges = ntrees*4 + w*h; 912 int maxedges = ntrees*4 + w*h;
912 int *edges = snewn(2*maxedges, int); 913 int *adjdata = snewn(maxedges, int);
913 int *capacity = snewn(maxedges, int); 914 int **adjlists = snewn(ntrees, int *);
914 int *flow = snewn(maxedges, int); 915 int *adjsizes = snewn(ntrees, int);
916 int *outr = snewn(4*ntrees, int);
915 struct solver_scratch *sc = new_scratch(w, h); 917 struct solver_scratch *sc = new_scratch(w, h);
916 char *ret, *p; 918 char *ret, *p;
917 int i, j, nedges; 919 int i, j, nl, nr;
920 int *adjptr;
918 921
919 /* 922 /*
920 * Since this puzzle has many global deductions and doesn't 923 * Since this puzzle has many global deductions and doesn't
@@ -940,7 +943,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
940 * would make the grids emptier and more boring. 943 * would make the grids emptier and more boring.
941 * 944 *
942 * Actually generating a grid is a matter of first placing the 945 * Actually generating a grid is a matter of first placing the
943 * tents, and then placing the trees by the use of maxflow 946 * tents, and then placing the trees by the use of matching.c
944 * (finding a distinct square adjacent to every tent). We do it 947 * (finding a distinct square adjacent to every tent). We do it
945 * this way round because otherwise satisfying the tent 948 * this way round because otherwise satisfying the tent
946 * separation condition would become onerous: most randomly 949 * separation condition would become onerous: most randomly
@@ -950,19 +953,12 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
950 * ensure they meet the separation criterion _before_ doing 953 * ensure they meet the separation criterion _before_ doing
951 * lots of computation; this works much better. 954 * lots of computation; this works much better.
952 * 955 *
953 * The maxflow algorithm is not randomised, so employed naively
954 * it would give rise to grids with clear structure and
955 * directional bias. Hence, I assign the network nodes as seen
956 * by maxflow to be a _random_ permutation of the squares of
957 * the grid, so that any bias shown by maxflow towards
958 * low-numbered nodes is turned into a random bias.
959 *
960 * This generation strategy can fail at many points, including 956 * This generation strategy can fail at many points, including
961 * as early as tent placement (if you get a bad random order in 957 * as early as tent placement (if you get a bad random order in
962 * which to greedily try the grid squares, you won't even 958 * which to greedily try the grid squares, you won't even
963 * manage to find enough mutually non-adjacent squares to put 959 * manage to find enough mutually non-adjacent squares to put
964 * the tents in). Then it can fail if maxflow doesn't manage to 960 * the tents in). Then it can fail if matching.c doesn't manage
965 * find a good enough matching (i.e. the tent placements don't 961 * to find a good enough matching (i.e. the tent placements don't
966 * admit any adequate tree placements); and finally it can fail 962 * admit any adequate tree placements); and finally it can fail
967 * if the solver finds that the problem has the wrong 963 * if the solver finds that the problem has the wrong
968 * difficulty (including being actually non-unique). All of 964 * difficulty (including being actually non-unique). All of
@@ -975,23 +971,38 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
975 971
976 while (1) { 972 while (1) {
977 /* 973 /*
978 * Arrange the grid squares into a random order. 974 * Make a list of grid squares which we'll permute as we pick
975 * the tent locations.
976 *
977 * We'll also need to index all the potential tree squares,
978 * i.e. the ones adjacent to the tents.
979 */ 979 */
980 for (i = 0; i < w*h; i++) 980 for (i = 0; i < w*h; i++) {
981 temp[i] = i; 981 order[i] = i;
982 shuffle(temp, w*h, sizeof(*temp), rs); 982 treemap[i] = -1;
983 }
983 984
984 /* 985 /*
985 * The first `ntrees' entries in temp which we can get 986 * Place tents at random without making any two adjacent.
986 * without making two tents adjacent will be the tent
987 * locations.
988 */ 987 */
989 memset(grid, BLANK, w*h); 988 memset(grid, BLANK, w*h);
990 j = ntrees; 989 j = ntrees;
991 for (i = 0; i < w*h && j > 0; i++) { 990 nr = 0;
992 int x = temp[i] % w, y = temp[i] / w; 991 /* Loop end condition: either j==0 (we've placed all the
992 * tents), or the number of grid squares we have yet to try
993 * is too few to fit the remaining tents into. */
994 for (i = 0; j > 0 && i+j <= w*h; i++) {
995 int which, x, y, d, tmp;
993 int dy, dx, ok = TRUE; 996 int dy, dx, ok = TRUE;
994 997
998 which = i + random_upto(rs, j);
999 tmp = order[which];
1000 order[which] = order[i];
1001 order[i] = tmp;
1002
1003 x = order[i] % w;
1004 y = order[i] / w;
1005
995 for (dy = -1; dy <= +1; dy++) 1006 for (dy = -1; dy <= +1; dy++)
996 for (dx = -1; dx <= +1; dx++) 1007 for (dx = -1; dx <= +1; dx++)
997 if (x+dx >= 0 && x+dx < w && 1008 if (x+dx >= 0 && x+dx < w &&
@@ -1000,7 +1011,14 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
1000 ok = FALSE; 1011 ok = FALSE;
1001 1012
1002 if (ok) { 1013 if (ok) {
1003 grid[temp[i]] = TENT; 1014 grid[order[i]] = TENT;
1015 for (d = 1; d < MAXDIR; d++) {
1016 int x2 = x + dx(d), y2 = y + dy(d);
1017 if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h &&
1018 treemap[y2*w+x2] == -1) {
1019 treemap[y2*w+x2] = nr++;
1020 }
1021 }
1004 j--; 1022 j--;
1005 } 1023 }
1006 } 1024 }
@@ -1008,68 +1026,47 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
1008 continue; /* couldn't place all the tents */ 1026 continue; /* couldn't place all the tents */
1009 1027
1010 /* 1028 /*
1011 * Now we build up the list of graph edges. 1029 * Build up the graph for matching.c.
1012 */ 1030 */
1013 nedges = 0; 1031 adjptr = adjdata;
1032 nl = 0;
1014 for (i = 0; i < w*h; i++) { 1033 for (i = 0; i < w*h; i++) {
1015 if (grid[temp[i]] == TENT) { 1034 if (grid[i] == TENT) {
1016 for (j = 0; j < w*h; j++) { 1035 int d, x = i % w, y = i / w;
1017 if (grid[temp[j]] != TENT) { 1036 adjlists[nl] = adjptr;
1018 int xi = temp[i] % w, yi = temp[i] / w; 1037 for (d = 1; d < MAXDIR; d++) {
1019 int xj = temp[j] % w, yj = temp[j] / w; 1038 int x2 = x + dx(d), y2 = y + dy(d);
1020 if (abs(xi-xj) + abs(yi-yj) == 1) { 1039 if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h) {
1021 edges[nedges*2] = i; 1040 assert(treemap[y2*w+x2] != -1);
1022 edges[nedges*2+1] = j; 1041 *adjptr++ = treemap[y2*w+x2];
1023 capacity[nedges] = 1;
1024 nedges++;
1025 }
1026 } 1042 }
1027 } 1043 }
1028 } else { 1044 adjsizes[nl] = adjptr - adjlists[nl];
1029 /* 1045 nl++;
1030 * Special node w*h is the sink node; any non-tent node
1031 * has an edge going to it.
1032 */
1033 edges[nedges*2] = i;
1034 edges[nedges*2+1] = w*h;
1035 capacity[nedges] = 1;
1036 nedges++;
1037 } 1046 }
1038 } 1047 }
1039 1048
1040 /* 1049 /*
1041 * Special node w*h+1 is the source node, with an edge going to 1050 * Call the matching algorithm to actually place the trees.
1042 * every tent.
1043 */ 1051 */
1044 for (i = 0; i < w*h; i++) { 1052 j = matching(ntrees, nr, adjlists, adjsizes, rs, NULL, outr);
1045 if (grid[temp[i]] == TENT) {
1046 edges[nedges*2] = w*h+1;
1047 edges[nedges*2+1] = i;
1048 capacity[nedges] = 1;
1049 nedges++;
1050 }
1051 }
1052
1053 assert(nedges <= maxedges);
1054
1055 /*
1056 * Now we're ready to call the maxflow algorithm to place the
1057 * trees.
1058 */
1059 j = maxflow(w*h+2, w*h+1, w*h, nedges, edges, capacity, flow, NULL);
1060 1053
1061 if (j < ntrees) 1054 if (j < ntrees)
1062 continue; /* couldn't place all the trees */ 1055 continue; /* couldn't place all the trees */
1063 1056
1064 /* 1057 /*
1065 * We've placed the trees. Now we need to work out _where_ 1058 * Fill in the trees in the grid, by cross-referencing treemap
1066 * we've placed them, which is a matter of reading back out 1059 * (which maps a grid square to its index as known to
1067 * from the `flow' array. 1060 * matching()) against the output from matching().
1061 *
1062 * Note that for these purposes we don't actually care _which_
1063 * tent each potential tree square is assigned to - we only
1064 * care whether it was assigned to any tent at all, in order
1065 * to decide whether to put a tree in it.
1068 */ 1066 */
1069 for (i = 0; i < nedges; i++) { 1067 for (i = 0; i < w*h; i++)
1070 if (edges[2*i] < w*h && edges[2*i+1] < w*h && flow[i] > 0) 1068 if (treemap[i] != -1 && outr[treemap[i]] != -1)
1071 grid[temp[edges[2*i+1]]] = TREE; 1069 grid[i] = TREE;
1072 }
1073 1070
1074 /* 1071 /*
1075 * I think it looks ugly if there isn't at least one of 1072 * I think it looks ugly if there isn't at least one of
@@ -1174,10 +1171,12 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
1174 *aux = sresize(*aux, p - *aux, char); 1171 *aux = sresize(*aux, p - *aux, char);
1175 1172
1176 free_scratch(sc); 1173 free_scratch(sc);
1177 sfree(flow); 1174 sfree(outr);
1178 sfree(capacity); 1175 sfree(adjdata);
1179 sfree(edges); 1176 sfree(adjlists);
1180 sfree(temp); 1177 sfree(adjsizes);
1178 sfree(treemap);
1179 sfree(order);
1181 sfree(soln); 1180 sfree(soln);
1182 sfree(numbers); 1181 sfree(numbers);
1183 sfree(puzzle); 1182 sfree(puzzle);
@@ -1748,7 +1747,7 @@ static game_state *execute_move(const game_state *state, const char *move)
1748 m++; 1747 m++;
1749 } 1748 }
1750 if (n == m) { 1749 if (n == m) {
1751 int nedges, maxedges, *edges, *capacity, *flow; 1750 int *gridids, *adjdata, **adjlists, *adjsizes, *adjptr;
1752 1751
1753 /* 1752 /*
1754 * We have the right number of tents, which is a 1753 * We have the right number of tents, which is a
@@ -1800,28 +1799,33 @@ static game_state *execute_move(const game_state *state, const char *move)
1800 * every tent is orthogonally adjacent to its tree. 1799 * every tent is orthogonally adjacent to its tree.
1801 * 1800 *
1802 * This bit is where the hard work comes in: we have to do 1801 * This bit is where the hard work comes in: we have to do
1803 * it by finding such a matching using maxflow. 1802 * it by finding such a matching using matching.c.
1804 *
1805 * So we construct a network with one special source node,
1806 * one special sink node, one node per tent, and one node
1807 * per tree.
1808 */
1809 maxedges = 6 * m;
1810 edges = snewn(2 * maxedges, int);
1811 capacity = snewn(maxedges, int);
1812 flow = snewn(maxedges, int);
1813 nedges = 0;
1814 /*
1815 * Node numbering:
1816 *
1817 * 0..w*h trees/tents
1818 * w*h source
1819 * w*h+1 sink
1820 */ 1803 */
1804 gridids = snewn(w*h, int);
1805 adjdata = snewn(m*4, int);
1806 adjlists = snewn(m, int *);
1807 adjsizes = snewn(m, int);
1808
1809 /* Assign each tent and tree a consecutive vertex id for
1810 * matching(). */
1811 for (i = n = 0; i < w*h; i++) {
1812 if (ret->grid[i] == TENT)
1813 gridids[i] = n++;
1814 }
1815 assert(n == m);
1816 for (i = n = 0; i < w*h; i++) {
1817 if (ret->grid[i] == TREE)
1818 gridids[i] = n++;
1819 }
1820 assert(n == m);
1821
1822 /* Build the vertices' adjacency lists. */
1823 adjptr = adjdata;
1821 for (y = 0; y < h; y++) 1824 for (y = 0; y < h; y++)
1822 for (x = 0; x < w; x++) 1825 for (x = 0; x < w; x++)
1823 if (ret->grid[y*w+x] == TREE) { 1826 if (ret->grid[y*w+x] == TREE) {
1824 int d; 1827 int d, treeid = gridids[y*w+x];
1828 adjlists[treeid] = adjptr;
1825 1829
1826 /* 1830 /*
1827 * Here we use the direction enum declared for 1831 * Here we use the direction enum declared for
@@ -1835,34 +1839,18 @@ static game_state *execute_move(const game_state *state, const char *move)
1835 int x2 = x + dx(d), y2 = y + dy(d); 1839 int x2 = x + dx(d), y2 = y + dy(d);
1836 if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h && 1840 if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h &&
1837 ret->grid[y2*w+x2] == TENT) { 1841 ret->grid[y2*w+x2] == TENT) {
1838 assert(nedges < maxedges); 1842 *adjptr++ = gridids[y2*w+x2];
1839 edges[nedges*2] = y*w+x;
1840 edges[nedges*2+1] = y2*w+x2;
1841 capacity[nedges] = 1;
1842 nedges++;
1843 } 1843 }
1844 } 1844 }
1845 } else if (ret->grid[y*w+x] == TENT) { 1845 adjsizes[treeid] = adjptr - adjlists[treeid];
1846 assert(nedges < maxedges);
1847 edges[nedges*2] = y*w+x;
1848 edges[nedges*2+1] = w*h+1; /* edge going to sink */
1849 capacity[nedges] = 1;
1850 nedges++;
1851 }
1852 for (y = 0; y < h; y++)
1853 for (x = 0; x < w; x++)
1854 if (ret->grid[y*w+x] == TREE) {
1855 assert(nedges < maxedges);
1856 edges[nedges*2] = w*h; /* edge coming from source */
1857 edges[nedges*2+1] = y*w+x;
1858 capacity[nedges] = 1;
1859 nedges++;
1860 } 1846 }
1861 n = maxflow(w*h+2, w*h, w*h+1, nedges, edges, capacity, flow, NULL);
1862 1847
1863 sfree(flow); 1848 n = matching(m, m, adjlists, adjsizes, NULL, NULL, NULL);
1864 sfree(capacity); 1849
1865 sfree(edges); 1850 sfree(gridids);
1851 sfree(adjdata);
1852 sfree(adjlists);
1853 sfree(adjsizes);
1866 1854
1867 if (n != m) 1855 if (n != m)
1868 goto completion_check_done; 1856 goto completion_check_done;
@@ -2000,14 +1988,13 @@ static int *find_errors(const game_state *state, char *grid)
2000 * tents. The difficult bit is highlighting failures in the 1988 * tents. The difficult bit is highlighting failures in the
2001 * tent/tree matching criterion. 1989 * tent/tree matching criterion.
2002 * 1990 *
2003 * A natural approach would seem to be to apply the maxflow 1991 * A natural approach would seem to be to apply the matching.c
2004 * algorithm to find the tent/tree matching; if this fails, it 1992 * algorithm to find the tent/tree matching; if this fails, it
2005 * must necessarily terminate with a min-cut which can be 1993 * could be made to produce as a by-product some set of trees
2006 * reinterpreted as some set of trees which have too few tents 1994 * which have too few tents between them (or vice versa). However,
2007 * between them (or vice versa). However, it's bad for 1995 * it's bad for localising errors, because it's not easy to make
2008 * localising errors, because it's not easy to make the 1996 * the algorithm narrow down to the _smallest_ such set of trees:
2009 * algorithm narrow down to the _smallest_ such set of trees: if 1997 * if trees A and B have only one tent between them, for instance,
2010 * trees A and B have only one tent between them, for instance,
2011 * it might perfectly well highlight not only A and B but also 1998 * it might perfectly well highlight not only A and B but also
2012 * trees C and D which are correctly matched on the far side of 1999 * trees C and D which are correctly matched on the far side of
2013 * the grid, on the grounds that those four trees between them 2000 * the grid, on the grounds that those four trees between them
diff --git a/apps/plugins/puzzles/src/towers.R b/apps/plugins/puzzles/src/towers.R
index c060c697a7..c2bb78a2dc 100644
--- a/apps/plugins/puzzles/src/towers.R
+++ b/apps/plugins/puzzles/src/towers.R
@@ -1,14 +1,14 @@
1# -*- makefile -*- 1# -*- makefile -*-
2 2
3TOWERS_LATIN_EXTRA = tree234 maxflow 3TOWERS_EXTRA = LATIN
4TOWERS_EXTRA = latin TOWERS_LATIN_EXTRA 4TOWERS_EXTRA_SOLVER = LATIN_SOLVER
5 5
6towers : [X] GTK COMMON towers TOWERS_EXTRA towers-icon|no-icon 6towers : [X] GTK COMMON towers TOWERS_EXTRA towers-icon|no-icon
7 7
8towers : [G] WINDOWS COMMON towers TOWERS_EXTRA towers.res|noicon.res 8towers : [G] WINDOWS COMMON towers TOWERS_EXTRA towers.res|noicon.res
9 9
10towerssolver : [U] towers[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] TOWERS_LATIN_EXTRA STANDALONE 10towerssolver : [U] towers[STANDALONE_SOLVER] TOWERS_EXTRA_SOLVER STANDALONE
11towerssolver : [C] towers[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] TOWERS_LATIN_EXTRA STANDALONE 11towerssolver : [C] towers[STANDALONE_SOLVER] TOWERS_EXTRA_SOLVER STANDALONE
12 12
13ALL += towers[COMBINED] TOWERS_EXTRA 13ALL += towers[COMBINED] TOWERS_EXTRA
14 14
diff --git a/apps/plugins/puzzles/src/towers.c b/apps/plugins/puzzles/src/towers.c
index 14b12c6d89..62d4de7b8b 100644
--- a/apps/plugins/puzzles/src/towers.c
+++ b/apps/plugins/puzzles/src/towers.c
@@ -130,7 +130,7 @@ static game_params *default_params(void)
130 return ret; 130 return ret;
131} 131}
132 132
133const static struct game_params towers_presets[] = { 133static const struct game_params towers_presets[] = {
134 { 4, DIFF_EASY }, 134 { 4, DIFF_EASY },
135 { 5, DIFF_EASY }, 135 { 5, DIFF_EASY },
136 { 5, DIFF_HARD }, 136 { 5, DIFF_HARD },
@@ -864,18 +864,22 @@ static const char *validate_desc(const game_params *params, const char *desc)
864 return NULL; 864 return NULL;
865} 865}
866 866
867static char *game_request_keys(const game_params *params) 867static key_label *game_request_keys(const game_params *params, int *nkeys)
868{ 868{
869 int i; 869 int i;
870 int w = params->w; 870 int w = params->w;
871 char *keys = smalloc(w+2); 871 key_label *keys = snewn(w+1, key_label);
872 keys[0] = '\b'; 872 *nkeys = w + 1;
873
873 for (i = 0; i < w; i++) { 874 for (i = 0; i < w; i++) {
874 if (i<9) keys[i] = '1' + i; 875 if (i<9) keys[i].button = '1' + i;
875 else keys[i] = 'a' + i - 9; 876 else keys[i].button = 'a' + i - 9;
877
878 keys[i].label = NULL;
876 } 879 }
877 keys[w] = '\b'; 880 keys[w].button = '\b';
878 keys[w+1] = '\0'; 881 keys[w].label = NULL;
882
879 return keys; 883 return keys;
880} 884}
881 885
diff --git a/apps/plugins/puzzles/src/undead.c b/apps/plugins/puzzles/src/undead.c
index 87e559a354..03b014f5a1 100644
--- a/apps/plugins/puzzles/src/undead.c
+++ b/apps/plugins/puzzles/src/undead.c
@@ -1314,9 +1314,24 @@ void num2grid(int num, int width, int height, int *x, int *y) {
1314 return; 1314 return;
1315} 1315}
1316 1316
1317static char *game_request_keys(const game_params *params) 1317static key_label *game_request_keys(const game_params *params, int *nkeys)
1318{ 1318{
1319 return dupstr("GVZ\b"); 1319 key_label *keys = snewn(4, key_label);
1320 *nkeys = 4;
1321
1322 keys[0].button = 'G';
1323 keys[0].label = dupstr("Ghost");
1324
1325 keys[1].button = 'V';
1326 keys[1].label = dupstr("Vampire");
1327
1328 keys[2].button = 'Z';
1329 keys[2].label = dupstr("Zombie");
1330
1331 keys[3].button = '\b';
1332 keys[3].label = NULL;
1333
1334 return keys;
1320} 1335}
1321 1336
1322static game_state *new_game(midend *me, const game_params *params, 1337static game_state *new_game(midend *me, const game_params *params,
diff --git a/apps/plugins/puzzles/src/unequal.R b/apps/plugins/puzzles/src/unequal.R
index a061582768..077407ffff 100644
--- a/apps/plugins/puzzles/src/unequal.R
+++ b/apps/plugins/puzzles/src/unequal.R
@@ -1,16 +1,14 @@
1# -*- makefile -*- 1# -*- makefile -*-
2 2
3UNEQUAL_EXTRA = latin tree234 maxflow 3UNEQUAL_EXTRA = LATIN
4UNEQUAL_EXTRA_SOLVER = LATIN_SOLVER
4 5
5unequal : [X] GTK COMMON unequal UNEQUAL_EXTRA unequal-icon|no-icon 6unequal : [X] GTK COMMON unequal UNEQUAL_EXTRA unequal-icon|no-icon
6 7
7unequal : [G] WINDOWS COMMON unequal UNEQUAL_EXTRA unequal.res|noicon.res 8unequal : [G] WINDOWS COMMON unequal UNEQUAL_EXTRA unequal.res|noicon.res
8 9
9unequalsolver : [U] unequal[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] tree234 maxflow STANDALONE 10unequalsolver : [U] unequal[STANDALONE_SOLVER] UNEQUAL_EXTRA_SOLVER STANDALONE
10unequalsolver : [C] unequal[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] tree234 maxflow STANDALONE 11unequalsolver : [C] unequal[STANDALONE_SOLVER] UNEQUAL_EXTRA_SOLVER STANDALONE
11
12latincheck : [U] latin[STANDALONE_LATIN_TEST] tree234 maxflow STANDALONE
13latincheck : [C] latin[STANDALONE_LATIN_TEST] tree234 maxflow STANDALONE
14 12
15ALL += unequal[COMBINED] UNEQUAL_EXTRA 13ALL += unequal[COMBINED] UNEQUAL_EXTRA
16 14
diff --git a/apps/plugins/puzzles/src/unequal.c b/apps/plugins/puzzles/src/unequal.c
index 5843ae2295..db309e2c58 100644
--- a/apps/plugins/puzzles/src/unequal.c
+++ b/apps/plugins/puzzles/src/unequal.c
@@ -111,7 +111,7 @@ static char const unequal_diffchars[] = DIFFLIST(ENCODE);
111 111
112#define DEFAULT_PRESET 0 112#define DEFAULT_PRESET 0
113 113
114const static struct game_params unequal_presets[] = { 114static const struct game_params unequal_presets[] = {
115 { 4, DIFF_EASY, 0 }, 115 { 4, DIFF_EASY, 0 },
116 { 5, DIFF_EASY, 0 }, 116 { 5, DIFF_EASY, 0 },
117 { 5, DIFF_SET, 0 }, 117 { 5, DIFF_SET, 0 },
@@ -1280,18 +1280,22 @@ fail:
1280 return NULL; 1280 return NULL;
1281} 1281}
1282 1282
1283static char *game_request_keys(const game_params *params) 1283static key_label *game_request_keys(const game_params *params, int *nkeys)
1284{ 1284{
1285 int order = params->order; 1285 int order = params->order;
1286 char off = (order > 9) ? '0' : '1'; 1286 char off = (order > 9) ? '0' : '1';
1287 char *keys = smalloc(order + 2); 1287 key_label *keys = snewn(order + 1, key_label);
1288 *nkeys = order + 1;
1289
1288 int i; 1290 int i;
1289 for(i = 0; i < order; i++) { 1291 for(i = 0; i < order; i++) {
1290 if (i==10) off = 'a'-10; 1292 if (i==10) off = 'a'-10;
1291 keys[i] = i + off; 1293 keys[i].button = i + off;
1294 keys[i].label = NULL;
1292 } 1295 }
1293 keys[order] = '\b'; 1296 keys[order].button = '\b';
1294 keys[order+1] = '\0'; 1297 keys[order].label = NULL;
1298
1295 return keys; 1299 return keys;
1296} 1300}
1297 1301
diff --git a/apps/plugins/puzzles/src/unfinished/group.R b/apps/plugins/puzzles/src/unfinished/group.R
index a11d22e9b9..394e364a06 100644
--- a/apps/plugins/puzzles/src/unfinished/group.R
+++ b/apps/plugins/puzzles/src/unfinished/group.R
@@ -1,14 +1,14 @@
1# -*- makefile -*- 1# -*- makefile -*-
2 2
3GROUP_LATIN_EXTRA = tree234 maxflow 3GROUP_EXTRA = LATIN
4GROUP_EXTRA = latin GROUP_LATIN_EXTRA 4GROUP_EXTRA_SOLVER = LATIN_SOLVER
5 5
6group : [X] GTK COMMON group GROUP_EXTRA group-icon|no-icon 6group : [X] GTK COMMON group GROUP_EXTRA group-icon|no-icon
7 7
8group : [G] WINDOWS COMMON group GROUP_EXTRA group.res|noicon.res 8group : [G] WINDOWS COMMON group GROUP_EXTRA group.res|noicon.res
9 9
10groupsolver : [U] group[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] GROUP_LATIN_EXTRA STANDALONE 10groupsolver : [U] group[STANDALONE_SOLVER] GROUP_EXTRA_SOLVER STANDALONE
11groupsolver : [C] group[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] GROUP_LATIN_EXTRA STANDALONE 11groupsolver : [C] group[STANDALONE_SOLVER] GROUP_EXTRA_SOLVER STANDALONE
12 12
13ALL += group[COMBINED] GROUP_EXTRA 13ALL += group[COMBINED] GROUP_EXTRA
14 14
diff --git a/apps/plugins/puzzles/src/unfinished/group.c b/apps/plugins/puzzles/src/unfinished/group.c
index b812b041eb..72293dd4ea 100644
--- a/apps/plugins/puzzles/src/unfinished/group.c
+++ b/apps/plugins/puzzles/src/unfinished/group.c
@@ -2081,6 +2081,7 @@ const struct game thegame = {
2081 free_ui, 2081 free_ui,
2082 encode_ui, 2082 encode_ui,
2083 decode_ui, 2083 decode_ui,
2084 NULL, /* game_request_keys */
2084 game_changed_state, 2085 game_changed_state,
2085 interpret_move, 2086 interpret_move,
2086 execute_move, 2087 execute_move,
diff --git a/apps/plugins/puzzles/src/unfinished/separate.c b/apps/plugins/puzzles/src/unfinished/separate.c
index 7fd8da8202..fc64d7fe37 100644
--- a/apps/plugins/puzzles/src/unfinished/separate.c
+++ b/apps/plugins/puzzles/src/unfinished/separate.c
@@ -841,6 +841,7 @@ const struct game thegame = {
841 free_ui, 841 free_ui,
842 encode_ui, 842 encode_ui,
843 decode_ui, 843 decode_ui,
844 NULL, /* game_request_keys */
844 game_changed_state, 845 game_changed_state,
845 interpret_move, 846 interpret_move,
846 execute_move, 847 execute_move,
diff --git a/apps/plugins/puzzles/src/unfinished/slide.c b/apps/plugins/puzzles/src/unfinished/slide.c
index 9770013235..504c4e95e5 100644
--- a/apps/plugins/puzzles/src/unfinished/slide.c
+++ b/apps/plugins/puzzles/src/unfinished/slide.c
@@ -2333,6 +2333,7 @@ const struct game thegame = {
2333 free_ui, 2333 free_ui,
2334 encode_ui, 2334 encode_ui,
2335 decode_ui, 2335 decode_ui,
2336 NULL, /* game_request_keys */
2336 game_changed_state, 2337 game_changed_state,
2337 interpret_move, 2338 interpret_move,
2338 execute_move, 2339 execute_move,
diff --git a/apps/plugins/puzzles/src/unfinished/sokoban.c b/apps/plugins/puzzles/src/unfinished/sokoban.c
index 1264690416..a06ba7a662 100644
--- a/apps/plugins/puzzles/src/unfinished/sokoban.c
+++ b/apps/plugins/puzzles/src/unfinished/sokoban.c
@@ -1457,6 +1457,7 @@ const struct game thegame = {
1457 free_ui, 1457 free_ui,
1458 encode_ui, 1458 encode_ui,
1459 decode_ui, 1459 decode_ui,
1460 NULL, /* game_request_keys */
1460 game_changed_state, 1461 game_changed_state,
1461 interpret_move, 1462 interpret_move,
1462 execute_move, 1463 execute_move,
diff --git a/apps/plugins/puzzles/src/unruly.c b/apps/plugins/puzzles/src/unruly.c
index b3057a7298..6506029d7e 100644
--- a/apps/plugins/puzzles/src/unruly.c
+++ b/apps/plugins/puzzles/src/unruly.c
@@ -94,7 +94,7 @@ static char const *const unruly_diffnames[] = { DIFFLIST(TITLE) };
94static char const unruly_diffchars[] = DIFFLIST(ENCODE); 94static char const unruly_diffchars[] = DIFFLIST(ENCODE);
95#define DIFFCONFIG DIFFLIST(CONFIG) 95#define DIFFCONFIG DIFFLIST(CONFIG)
96 96
97const static struct game_params unruly_presets[] = { 97static const struct game_params unruly_presets[] = {
98 { 8, 8, FALSE, DIFF_EASY}, 98 { 8, 8, FALSE, DIFF_EASY},
99 { 8, 8, FALSE, DIFF_NORMAL}, 99 { 8, 8, FALSE, DIFF_NORMAL},
100 {10, 10, FALSE, DIFF_EASY}, 100 {10, 10, FALSE, DIFF_EASY},
diff --git a/apps/plugins/puzzles/src/winwix.mc b/apps/plugins/puzzles/src/winwix.mc
index 4a72c09123..58dbdbeefb 100644
--- a/apps/plugins/puzzles/src/winwix.mc
+++ b/apps/plugins/puzzles/src/winwix.mc
@@ -12,6 +12,12 @@ has 'descfile' => (required => 1);
12 12
13<?xml version="1.0" encoding="utf-8"?> 13<?xml version="1.0" encoding="utf-8"?>
14 14
15<?if $(var.Win64) = yes ?>
16 <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
17<?else ?>
18 <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
19<?endif ?>
20
15<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 21<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
16 22
17% # Product tag. The Id component is set to "*", which causes WiX to 23% # Product tag. The Id component is set to "*", which causes WiX to
@@ -61,7 +67,7 @@ has 'descfile' => (required => 1);
61% # (individual files or shortcuts or additions to PATH) that are 67% # (individual files or shortcuts or additions to PATH) that are
62% # installed. 68% # installed.
63 <Directory Id="TARGETDIR" Name="SourceDir"> 69 <Directory Id="TARGETDIR" Name="SourceDir">
64 <Directory Id="ProgramFiles64Folder" Name="PFiles"> 70 <Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles">
65 <Directory Id="INSTALLDIR" Name="Simon Tatham's Portable Puzzle Collection"> 71 <Directory Id="INSTALLDIR" Name="Simon Tatham's Portable Puzzle Collection">
66 72
67% # The following components all install things in the main 73% # The following components all install things in the main
@@ -71,12 +77,12 @@ has 'descfile' => (required => 1);
71% # the more obscure things like LICENCE are just there for 77% # the more obscure things like LICENCE are just there for
72% # the sake of being _somewhere_ and don't rate a shortcut. 78% # the sake of being _somewhere_ and don't rate a shortcut.
73 79
74<%method file_component ($filename, $shortcutname)> 80<%method file_component ($prefix, $filename, $shortcutname)>
75% my $filename_id = file_component_name($filename); 81% my $filename_id = file_component_name($filename);
76<Component Id="File_Component_<% $filename_id %>" 82<Component Id="File_Component_<% $filename_id %>"
77 Guid="<% invent_guid('file:' . $filename) %>"> 83 Guid="<% invent_guid('file:' . $filename) %>">
78 <File Id="File_<% $filename_id %>" 84 <File Id="File_<% $filename_id %>"
79 Source="<% $filename %>" KeyPath="yes"> 85 Source="<% $prefix %><% $filename %>" KeyPath="yes">
80% if (defined $shortcutname) { 86% if (defined $shortcutname) {
81 <Shortcut Id="startmenu_<% $filename_id %>" 87 <Shortcut Id="startmenu_<% $filename_id %>"
82 Directory="ProgramMenuDir" WorkingDirectory="INSTALLDIR" 88 Directory="ProgramMenuDir" WorkingDirectory="INSTALLDIR"
@@ -87,12 +93,12 @@ has 'descfile' => (required => 1);
87</%method> 93</%method>
88 94
89% for my $exe (@exes) { 95% for my $exe (@exes) {
90<% $.file_component($exe, $names{$exe}) %> 96<% $.file_component('$(var.Bindir)', $exe, $names{$exe}) %>
91% } 97% }
92 98
93<% $.file_component("puzzles.chm", "Puzzles Manual") %> 99<% $.file_component('', "puzzles.chm", "Puzzles Manual") %>
94<% $.file_component("website.url", "Puzzles Web Site") %> 100<% $.file_component('', "website.url", "Puzzles Web Site") %>
95<% $.file_component("LICENCE") %> 101<% $.file_component('', "LICENCE") %>
96 102
97 </Directory> 103 </Directory>
98 </Directory> 104 </Directory>