summaryrefslogtreecommitdiffstats
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.tar.bz2
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
in puzzles do mason.pl --args '{"version":"$(Version)","descfile":"gamedesc.txt"}' winwix.mc > puzzles.wxs
in puzzles do perl winiss.pl $(Version) gamedesc.txt > puzzles.iss
ifneq "$(VISUAL_STUDIO)" "yes" then
- in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl clean
- in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
+ in puzzles with clangcl64 do mkdir win64 && Platform=x64 make -f Makefile.clangcl BUILDDIR=win64/ VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
+ 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'
# Code-sign the binaries, if the local bob config provides a script
# to do so. We assume here that the script accepts an -i option to
# provide a 'more info' URL, and an optional -n option to provide a
# program name, and that it can take multiple .exe filename
# arguments and sign them all in place.
- ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ *.exe
+ ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ win64/*.exe win32/*.exe
# Build installers.
- in puzzles with wixonlinux do candle -arch x64 puzzles.wxs && light -ext WixUIExtension -sval puzzles.wixobj
- 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
+ in puzzles with wixonlinux do candle -arch x64 puzzles.wxs -dWin64=yes -dBindir=win64/ && light -ext WixUIExtension -sval puzzles.wixobj
+ in puzzles with wixonlinux do candle -arch x86 puzzles.wxs -dWin64=no -dBindir=win32/ && light -ext WixUIExtension -sval puzzles.wixobj -o puzzles32.msi
+ 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
else
delegate windows
in puzzles with visualstudio do/win nmake -f Makefile.vc clean
in puzzles with visualstudio do/win nmake -f Makefile.vc VER=-DVER=$(Version)
- ifneq "$(winsigncode)" "" in puzzles do $(winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ *.exe
+ ifneq "$(winsigncode)" "" in puzzles do $(winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ win64/*.exe
# Build installers.
- in puzzles with wix do/win candle puzzles.wxs && light -ext WixUIExtension -sval puzzles.wixobj
+ in puzzles with wix do/win candle puzzles.wxs -dWin64=yes -dBindir=win64/ && light -ext WixUIExtension -sval puzzles.wixobj
in puzzles with innosetup do/win iscc puzzles.iss
- return puzzles/*.exe
+ return puzzles/win64/*.exe
return puzzles/puzzles.msi
enddelegate
endif
-in puzzles do chmod +x *.exe
+in puzzles do chmod +x win32/*.exe win64/*.exe
# Build the Pocket PC binaries and CAB.
#
@@ -125,11 +126,13 @@ in puzzles/devel do halibut --html -Chtml-contents-filename:index.html -Chtml-in
# gamedesc.txt, which is generated by mkfiles.pl and helpfully
# excludes the command-line auxiliary utilities such as solosolver,
# and nullgame.exe) into a subdirectory for easy access.
-in puzzles do mkdir winbin
-in puzzles do mv `cut -f2 -d: gamedesc.txt` winbin
+in puzzles do mkdir winbin64 winbin32
+in puzzles/win64 do mv `cut -f2 -d: ../gamedesc.txt` ../winbin64
+in puzzles/win32 do mv `cut -f2 -d: ../gamedesc.txt` ../winbin32
# Make a zip file of the Windows binaries and help files.
-in puzzles do zip -j puzzles.zip winbin/*.exe puzzles.chm puzzles.hlp puzzles.cnt
+in puzzles do zip -j puzzles.zip winbin64/*.exe puzzles.chm puzzles.hlp puzzles.cnt
+in puzzles do zip -j puzzles32.zip winbin32/*.exe puzzles.chm puzzles.hlp puzzles.cnt
# Create the source archive. (That writes the archive into the
# _parent_ directory, so be careful when we deliver it.)
@@ -177,7 +180,8 @@ in puzzles do echo RedirectMatch temp '(.*/)'puzzles-installer.msi '$$1'puzzles-
# Phew, we're done. Deliver everything!
deliver puzzles/icons/*-web.png $@
-deliver puzzles/winbin/*.exe $@
+deliver puzzles/winbin64/*.exe $@
+deliver puzzles/winbin32/*.exe w32/$@
deliver puzzles/.htaccess $@
deliver puzzles/doc/*.html doc/$@
deliver puzzles/devel/*.html devel/$@
@@ -186,7 +190,9 @@ deliver puzzles/puzzles.chm $@
deliver puzzles/puzzles.hlp $@
deliver puzzles/puzzles.cnt $@
deliver puzzles/puzzles.zip $@
+deliver puzzles/puzzles32.zip w32/$@
deliver puzzles/puzzles.msi puzzles-$(Version)-installer.msi
+deliver puzzles/puzzles32.msi w32/puzzles-$(Version)-32bit-installer.msi
deliver puzzles/*.jar java/$@
deliver puzzles/js/*.js js/$@
deliver 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 @@
+#Developer documentation for Simon Tatham's puzzle collection
+
+This is a guide to the internal structure of Simon Tatham's Portable
+Puzzle Collection (henceforth referred to simply as `Puzzles'), for
+use by anyone attempting to implement a new puzzle or port to a new
+platform.
+
+This guide is believed correct as of r6190. Hopefully it will be updated
+along with the code in future, but if not, I've at least left this
+version number in here so you can figure out what's changed by tracking
+commit comments from there onwards.
+
+#1. Introduction
+
+The Puzzles code base is divided into four parts: a set of
+interchangeable front ends, a set of interchangeable back ends, a
+universal `middle end' which acts as a buffer between the two, and a
+bunch of miscellaneous utility functions. In the following sections I
+give some general discussion of each of these parts.
+
+#1.1. Front end
+
+The front end is the non-portable part of the code: it's the bit that
+you replace completely when you port to a different platform. So it's
+responsible for all system calls, all GUI interaction, and anything else
+platform-specific.
+
+The current front ends in the main code base are for Windows, GTK and
+MacOS X; I also know of a third-party front end for PalmOS.
+
+The front end contains main() or the local platform's equivalent. Top-
+level control over the application's execution flow belongs to the front
+end (it isn't, for example, a set of functions called by a universal
+main() somewhere else).
+
+The front end has complete freedom to design the GUI for any given
+port of Puzzles. There is no centralised mechanism for maintaining the
+menu layout, for example. This has a cost in consistency (when I _do_
+want the same menu layout on more than one platform, I have to edit
+two pieces of code in parallel every time I make a change), but the
+advantage is that local GUI conventions can be conformed to and local
+constraints adapted to. For example, MacOS X has strict human interface
+guidelines which specify a different menu layout from the one I've used
+on Windows and GTK; there's nothing stopping the OS X front end from
+providing a menu layout consistent with those guidelines.
+
+Although the front end is mostly caller rather than the callee in its
+interactions with other parts of the code, it is required to implement
+a small API for other modules to call, mostly of drawing functions for
+games to use when drawing their graphics. The drawing API is documented
+in chapter 3; the other miscellaneous front end API functions are
+documented in section 4.34.
+
+#1.2. Back end
+
+A `back end', in this collection, is synonymous with a `puzzle'. Each
+back end implements a different game.
+
+At the top level, a back end is simply a data structure, containing a
+few constants (flag words, preferred pixel size) and a large number of
+function pointers. Back ends are almost invariably callee rather than
+caller, which means there's a limitation on what a back end can do on
+its own initiative.
+
+The persistent state in a back end is divided into a number of data
+structures, which are used for different purposes and therefore likely
+to be switched around, changed without notice, and otherwise updated by
+the rest of the code. It is important when designing a back end to put
+the right pieces of data into the right structures, or standard midend-
+provided features (such as Undo) may fail to work.
+
+The functions and variables provided in the back end data structure are
+documented in chapter 2.
+
+#1.3. Middle end
+
+Puzzles has a single and universal `middle end'. This code is common to
+all platforms and all games; it sits in between the front end and the
+back end and provides standard functionality everywhere.
+
+People adding new back ends or new front ends should generally not need
+to edit the middle end. On rare occasions there might be a change that
+can be made to the middle end to permit a new game to do something not
+currently anticipated by the middle end's present design; however, this
+is terribly easy to get wrong and should probably not be undertaken
+without consulting the primary maintainer (me). Patch submissions
+containing unannounced mid-end changes will be treated on their merits
+like any other patch; this is just a friendly warning that mid-end
+changes will need quite a lot of merits to make them acceptable.
+
+Functionality provided by the mid-end includes:
+
+ - Maintaining a list of game state structures and moving back and
+ forth along that list to provide Undo and Redo.
+
+ - Handling timers (for move animations, flashes on completion, and in
+ some cases actually timing the game).
+
+ - Handling the container format of game IDs: receiving them, picking
+ them apart into parameters, description and/or random seed, and
+ so on. The game back end need only handle the individual parts
+ of a game ID (encoded parameters and encoded game description);
+ everything else is handled centrally by the mid-end.
+
+ - Handling standard keystrokes and menu commands, such as `New Game',
+ `Restart Game' and `Quit'.
+
+ - Pre-processing mouse events so that the game back ends can rely on
+ them arriving in a sensible order (no missing button-release events,
+ no sudden changes of which button is currently pressed, etc).
+
+ - Handling the dialog boxes which ask the user for a game ID.
+
+ - Handling serialisation of entire games (for loading and saving a
+ half-finished game to a disk file, or for handling application
+ shutdown and restart on platforms such as PalmOS where state is
+ expected to be saved).
+
+Thus, there's a lot of work done once by the mid-end so that individual
+back ends don't have to worry about it. All the back end has to do is
+cooperate in ensuring the mid-end can do its work properly.
+
+The API of functions provided by the mid-end to be called by the front
+end is documented in chapter 4.
+
+#1.4. Miscellaneous utilities
+
+In addition to these three major structural components, the Puzzles code
+also contains a variety of utility modules usable by all of the above
+components. There is a set of functions to provide platform-independent
+random number generation; functions to make memory allocation easier;
+functions which implement a balanced tree structure to be used as
+necessary in complex algorithms; and a few other miscellaneous
+functions. All of these are documented in chapter 5.
+
+#1.5. Structure of this guide
+
+There are a number of function call interfaces within Puzzles, and this
+guide will discuss each one in a chapter of its own. After that, chapter
+6 discusses how to design new games, with some general design thoughts
+and tips.
+
+#2. Interface to the back end
+
+This chapter gives a detailed discussion of the interface that each back
+end must implement.
+
+At the top level, each back end source file exports a single global
+symbol, which is a `const struct game' containing a large number of
+function pointers and a small amount of constant data. This structure is
+called by different names depending on what kind of platform the puzzle
+set is being compiled on:
+
+ - On platforms such as Windows and GTK, which build a separate binary
+ for each puzzle, the game structure in every back end has the same
+ name, `thegame'; the front end refers directly to this name, so that
+ compiling the same front end module against a different back end
+ module builds a different puzzle.
+
+ - On platforms such as MacOS X and PalmOS, which build all the puzzles
+ into a single monolithic binary, the game structure in each back end
+ must have a different name, and there's a helper module `list.c'
+ (constructed automatically by the same Perl script that builds the
+ Makefiles) which contains a complete list of those game structures.
+
+On the latter type of platform, source files may assume that the
+preprocessor symbol `COMBINED' has been defined. Thus, the usual code to
+declare the game structure looks something like this:
+
+ #ifdef COMBINED
+ #define thegame net /* or whatever this game is called */
+ #endif
+
+ const struct game thegame = {
+ /* lots of structure initialisation in here */
+ };
+
+Game back ends must also internally define a number of data structures,
+for storing their various persistent state. This chapter will first
+discuss the nature and use of those structures, and then go on to give
+details of every element of the game structure.
+
+#2.1. Data structures
+
+Each game is required to define four separate data structures. This
+section discusses each one and suggests what sorts of things need to be
+put in it.
+
+#2.1.1. `game_params'
+
+The `game_params' structure contains anything which affects the
+automatic generation of new puzzles. So if puzzle generation is
+parametrised in any way, those parameters need to be stored in
+`game_params'.
+
+Most puzzles currently in this collection are played on a grid of
+squares, meaning that the most obvious parameter is the grid size. Many
+puzzles have additional parameters; for example, Mines allows you to
+control the number of mines in the grid independently of its size, Net
+can be wrapping or non-wrapping, Solo has difficulty levels and symmetry
+settings, and so on.
+
+A simple rule for deciding whether a data item needs to go in
+`game_params' is: would the user expect to be able to control this data
+item from either the preset-game-types menu or the `Custom' game type
+configuration? If so, it's part of `game_params'.
+
+`game_params' structures are permitted to contain pointers to subsidiary
+data if they need to. The back end is required to provide functions to
+create and destroy `game_params', and those functions can allocate and
+free additional memory if necessary. (It has not yet been necessary to
+do this in any puzzle so far, but the capability is there just in case.)
+
+`game_params' is also the only structure which the game's compute_size()
+function may refer to; this means that any aspect of the game which
+affects the size of the window it needs to be drawn in must be stored in
+`game_params'. In particular, this imposes the fundamental limitation
+that random game generation may not have a random effect on the window
+size: game generation algorithms are constrained to work by starting
+from the grid size rather than generating it as an emergent phenomenon.
+(Although this is a restriction in theory, it has not yet seemed to be a
+problem.)
+
+#2.1.2. `game_state'
+
+While the user is actually playing a puzzle, the `game_state' structure
+stores all the data corresponding to the current state of play.
+
+The mid-end keeps `game_state's in a list, and adds to the list every
+time the player makes a move; the Undo and Redo functions step back and
+forth through that list.
+
+Therefore, a good means of deciding whether a data item needs to go in
+`game_state' is: would a player expect that data item to be restored on
+undo? If so, put it in `game_state', and this will automatically happen
+without you having to lift a finger. If not - for example, the deaths
+counter in Mines is precisely something that does _not_ want to be reset
+to its previous state on an undo - then you might have found a data item
+that needs to go in `game_ui' instead.
+
+During play, `game_state's are often passed around without an
+accompanying `game_params' structure. Therefore, any information in
+`game_params' which is important during play (such as the grid size)
+must be duplicated within the `game_state'. One simple method of doing
+this is to have the `game_state' structure _contain_ a `game_params'
+structure as one of its members, although this isn't obligatory if you
+prefer to do it another way.
+
+#2.1.3. `game_drawstate'
+
+`game_drawstate' carries persistent state relating to the current
+graphical contents of the puzzle window. The same `game_drawstate'
+is passed to every call to the game redraw function, so that it can
+remember what it has already drawn and what needs redrawing.
+
+A typical use for a `game_drawstate' is to have an array mirroring the
+array of grid squares in the `game_state'; then every time the redraw
+function was passed a `game_state', it would loop over all the squares,
+and physically redraw any whose description in the `game_state' (i.e.
+what the square needs to look like when the redraw is completed) did
+not match its description in the `game_drawstate' (i.e. what the square
+currently looks like).
+
+`game_drawstate' is occasionally completely torn down and reconstructed
+by the mid-end, if the user somehow forces a full redraw. Therefore, no
+data should be stored in `game_drawstate' which is _not_ related to the
+state of the puzzle window, because it might be unexpectedly destroyed.
+
+The back end provides functions to create and destroy `game_drawstate',
+which means it can contain pointers to subsidiary allocated data if it
+needs to. A common thing to want to allocate in a `game_drawstate' is a
+`blitter'; see section 3.1.13 for more on this subject.
+
+#2.1.4. `game_ui'
+
+`game_ui' contains whatever doesn't fit into the above three structures!
+
+A new `game_ui' is created when the user begins playing a new instance
+of a puzzle (i.e. during `New Game' or after entering a game ID etc). It
+persists until the user finishes playing that game and begins another
+one (or closes the window); in particular, `Restart Game' does _not_
+destroy the `game_ui'.
+
+`game_ui' is useful for implementing user-interface state which is not
+part of `game_state'. Common examples are keyboard control (you wouldn't
+want to have to separately Undo through every cursor motion) and mouse
+dragging. See section 6.3.2 and section 6.3.3, respectively, for more
+details.
+
+Another use for `game_ui' is to store highly persistent data such as
+the Mines death counter. This is conceptually rather different: where
+the Net cursor position was _not important enough_ to preserve for the
+player to restore by Undo, the Mines death counter is _too important_ to
+permit the player to revert by Undo!
+
+A final use for `game_ui' is to pass information to the redraw function
+about recent changes to the game state. This is used in Mines, for
+example, to indicate whether a requested `flash' should be a white flash
+for victory or a red flash for defeat; see section 6.3.5.
+
+#2.2. Simple data in the back end
+
+In this section I begin to discuss each individual element in the back
+end structure. To begin with, here are some simple self-contained data
+elements.
+
+#2.2.1. `name'
+
+ const char *name;
+
+This is a simple ASCII string giving the name of the puzzle. This name
+will be used in window titles, in game selection menus on monolithic
+platforms, and anywhere else that the front end needs to know the name
+of a game.
+
+#2.2.2. `winhelp_topic'
+
+ const char *winhelp_topic;
+
+This member is used on Windows only, to provide online help. Although
+the Windows front end provides a separate binary for each puzzle, it has
+a single monolithic help file; so when a user selects `Help' from the
+menu, the program needs to open the help file and jump to the chapter
+describing that particular puzzle.
+
+Therefore, each chapter in `puzzles.but' is labelled with a _help topic_
+name, similar to this:
+
+ \cfg{winhelp-topic}{games.net}
+
+And then the corresponding game back end encodes the topic string (here
+`games.net') in the `winhelp_topic' element of the game structure.
+
+#2.3. Handling game parameter sets
+
+In this section I present the various functions which handle the
+`game_params' structure.
+
+#2.3.1. default_params()
+
+ game_params *(*default_params)(void);
+
+This function allocates a new `game_params' structure, fills it with the
+default values, and returns a pointer to it.
+
+#2.3.2. fetch_preset()
+
+ int (*fetch_preset)(int i, char **name, game_params **params);
+
+This function is one of the two APIs a back end can provide to populate
+the `Type' menu, which provides a list of conveniently accessible preset
+parameters for most games.
+
+The function is called with `i' equal to the index of the preset
+required (numbering from zero). It returns FALSE if that preset does
+not exist (if `i' is less than zero or greater than the largest preset
+index). Otherwise, it sets `*params' to point at a newly allocated
+`game_params' structure containing the preset information, sets `*name'
+to point at a newly allocated C string containing the preset title (to
+go on the `Type' menu), and returns TRUE.
+
+If the game does not wish to support any presets at all, this function
+is permitted to return FALSE always.
+
+If the game wants to return presets in the form of a hierarchical menu
+instead of a flat list (and, indeed, even if it doesn't), then it may
+set this function pointer to NULL, and instead fill in the alternative
+function pointer preset_menu (section 2.3.3).
+
+#2.3.3. preset_menu()
+
+ struct preset_menu *(*preset_menu)(void);
+
+This function is the more flexible of the two APIs by which a back end
+can define a collection of preset game parameters.
+
+This function simply returns a complete menu hierarchy, in the form
+of a `struct preset_menu' (see section 4.15) and further submenus (if
+it wishes) dangling off it. There are utility functions described in
+section 5.2 to make it easy for the back end to construct this menu.
+
+If the game has no need to return a hierarchy of menus, it may instead
+opt to implement the fetch_preset() function (see section 2.3.2).
+
+The game need not fill in the `id' fields in the preset menu structures.
+The mid-end will do that after it receives the structure from the game,
+and before passing it on to the front end.
+
+#2.3.4. encode_params()
+
+ char *(*encode_params)(const game_params *params, int full);
+
+The job of this function is to take a `game_params', and encode it in
+a string form for use in game IDs. The return value must be a newly
+allocated C string, and _must_ not contain a colon or a hash (since
+those characters are used to mark the end of the parameter section in a
+game ID).
+
+Ideally, it should also not contain any other potentially controversial
+punctuation; bear in mind when designing a string parameter format
+that it will probably be used on both Windows and Unix command lines
+under a variety of exciting shell quoting and metacharacter rules.
+Sticking entirely to alphanumerics is the safest thing; if you really
+need punctuation, you can probably get away with commas, periods or
+underscores without causing anybody any major inconvenience. If you
+venture far beyond that, you're likely to irritate _somebody_.
+
+(At the time of writing this, all existing games have purely
+alphanumeric string parameter formats. Usually these involve a letter
+denoting a parameter, followed optionally by a number giving the value
+of that parameter, with a few mandatory parts at the beginning such as
+numeric width and height separated by `x'.)
+
+If the `full' parameter is TRUE, this function should encode absolutely
+everything in the `game_params', such that a subsequent call to
+decode_params() (section 2.3.5) will yield an identical structure.
+If `full' is FALSE, however, you should leave out anything which
+is not necessary to describe a _specific puzzle instance_, i.e.
+anything which only takes effect when a new puzzle is _generated_.
+For example, the Solo `game_params' includes a difficulty rating used
+when constructing new puzzles; but a Solo game ID need not explicitly
+include the difficulty, since to describe a puzzle once generated it's
+sufficient to give the grid dimensions and the location and contents
+of the clue squares. (Indeed, one might very easily type in a puzzle
+out of a newspaper without _knowing_ what its difficulty level is in
+Solo's terminology.) Therefore, Solo's encode_params() only encodes the
+difficulty level if `full' is set.
+
+#2.3.5. decode_params()
+
+ void (*decode_params)(game_params *params, char const *string);
+
+This function is the inverse of encode_params() (section 2.3.4). It
+parses the supplied string and fills in the supplied `game_params'
+structure. Note that the structure will _already_ have been allocated:
+this function is not expected to create a _new_ `game_params', but to
+modify an existing one.
+
+This function can receive a string which only encodes a subset of the
+parameters. The most obvious way in which this can happen is if the
+string was constructed by encode_params() with its `full' parameter set
+to FALSE; however, it could also happen if the user typed in a parameter
+set manually and missed something out. Be prepared to deal with a wide
+range of possibilities.
+
+When dealing with a parameter which is not specified in the input
+string, what to do requires a judgment call on the part of the
+programmer. Sometimes it makes sense to adjust other parameters to bring
+them into line with the new ones. In Mines, for example, you would
+probably not want to keep the same mine count if the user dropped the
+grid size and didn't specify one, since you might easily end up with
+more mines than would actually fit in the grid! On the other hand,
+sometimes it makes sense to leave the parameter alone: a Solo player
+might reasonably expect to be able to configure size and difficulty
+independently of one another.
+
+This function currently has no direct means of returning an error if the
+string cannot be parsed at all. However, the returned `game_params' is
+almost always subsequently passed to validate_params() (section 2.3.11),
+so if you really want to signal parse errors, you could always have a
+`char *' in your parameters structure which stored an error message, and
+have validate_params() return it if it is non-NULL.
+
+#2.3.6. free_params()
+
+ void (*free_params)(game_params *params);
+
+This function frees a `game_params' structure, and any subsidiary
+allocations contained within it.
+
+#2.3.7. dup_params()
+
+ game_params *(*dup_params)(const game_params *params);
+
+This function allocates a new `game_params' structure and initialises it
+with an exact copy of the information in the one provided as input. It
+returns a pointer to the new duplicate.
+
+#2.3.8. `can_configure'
+
+ int can_configure;
+
+This boolean data element is set to TRUE if the back end supports
+custom parameter configuration via a dialog box. If it is TRUE, then
+the functions configure() and custom_params() are expected to work. See
+section 2.3.9 and section 2.3.10 for more details.
+
+#2.3.9. configure()
+
+ config_item *(*configure)(const game_params *params);
+
+This function is called when the user requests a dialog box for
+custom parameter configuration. It returns a newly allocated array of
+config_item structures, describing the GUI elements required in the
+dialog box. The array should have one more element than the number of
+controls, since it is terminated with a C_END marker (see below). Each
+array element describes the control together with its initial value; the
+front end will modify the value fields and return the updated array to
+custom_params() (see section 2.3.10).
+
+The config_item structure contains the following elements:
+
+ char *name;
+ int type;
+ union { /* type-specific fields */ } u;
+
+`name' is an ASCII string giving the textual label for a GUI control. It
+is _not_ expected to be dynamically allocated.
+
+`type' contains one of a small number of `enum' values defining what
+type of control is being described. The usable member of the union field
+`u' depends on `type'. The valid type values are:
+
+`C_STRING'
+
+ Describes a text input box. (This is also used for numeric input.
+ The back end does not bother informing the front end that the box is
+ numeric rather than textual; some front ends do have the capacity
+ to take this into account, but I decided it wasn't worth the extra
+ complexity in the interface.)
+
+ For controls of this type, `u.string' contains a single field
+
+ char *sval;
+
+ which stores a dynamically allocated string representing the
+ contents of the input box.
+
+`C_BOOLEAN'
+
+ Describes a simple checkbox.
+
+ For controls of this type, `u.boolean' contains a single field
+
+ int bval;
+
+ which is either TRUE or FALSE.
+
+`C_CHOICES'
+
+ Describes a drop-down list presenting one of a small number of fixed
+ choices.
+
+ For controls of this type, `u.choices' contains two fields:
+
+ const char *choicenames;
+ int selected;
+
+ `choicenames' contains a list of strings describing the choices.
+ The very first character of `sval' is used as a delimiter when
+ processing the rest (so that the strings `:zero:one:two',
+ `!zero!one!two' and `xzeroxonextwo' all define a three-element list
+ containing `zero', `one' and `two').
+
+ `selected' contains the index of the currently selected element,
+ numbering from zero (so that in the above example, 0 would mean
+ `zero' and 2 would mean `two').
+
+ Note that `u.choices.choicenames' is _not_ dynamically allocated,
+ unlike `u.string.sval'.
+
+`C_END'
+
+ Marks the end of the array of `config_item's. There is no associated
+ member of the union field `u' for this type.
+
+The array returned from this function is expected to have filled in the
+initial values of all the controls according to the input `game_params'
+structure.
+
+If the game's `can_configure' flag is set to FALSE, this function is
+never called and need not do anything at all.
+
+#2.3.10. custom_params()
+
+ game_params *(*custom_params)(const config_item *cfg);
+
+This function is the counterpart to configure() (section 2.3.9). It
+receives as input an array of `config_item's which was originally
+created by configure(), but in which the control values have since been
+changed in accordance with user input. Its function is to read the new
+values out of the controls and return a newly allocated `game_params'
+structure representing the user's chosen parameter set.
+
+(The front end will have modified the controls' _values_, but there will
+still always be the same set of controls, in the same order, as provided
+by configure(). It is not necessary to check the `name' and `type'
+fields, although you could use assert() if you were feeling energetic.)
+
+This function is not expected to (and indeed _must not_) free the input
+`config_item' array. (If the parameters fail to validate, the dialog box
+will stay open.)
+
+If the game's `can_configure' flag is set to FALSE, this function is
+never called and need not do anything at all.
+
+#2.3.11. validate_params()
+
+ const char *(*validate_params)(const game_params *params,
+ int full);
+
+This function takes a `game_params' structure as input, and checks that
+the parameters described in it fall within sensible limits. (At the very
+least, grid dimensions should almost certainly be strictly positive, for
+example.)
+
+Return value is NULL if no problems were found, or alternatively a (non-
+dynamically-allocated) ASCII string describing the error in human-
+readable form.
+
+If the `full' parameter is set, full validation should be performed: any
+set of parameters which would not permit generation of a sensible puzzle
+should be faulted. If `full' is _not_ set, the implication is that
+these parameters are not going to be used for _generating_ a puzzle; so
+parameters which can't even sensibly _describe_ a valid puzzle should
+still be faulted, but parameters which only affect puzzle generation
+should not be.
+
+(The `full' option makes a difference when parameter combinations are
+non-orthogonal. For example, Net has a boolean option controlling
+whether it enforces a unique solution; it turns out that it's impossible
+to generate a uniquely soluble puzzle with wrapping walls and width
+2, so validate_params() will complain if you ask for one. However,
+if the user had just been playing a unique wrapping puzzle of a more
+sensible width, and then pastes in a game ID acquired from somebody else
+which happens to describe a _non_-unique wrapping width-2 puzzle, then
+validate_params() will be passed a `game_params' containing the width
+and wrapping settings from the new game ID and the uniqueness setting
+from the old one. This would be faulted, if it weren't for the fact that
+`full' is not set during this call, so Net ignores the inconsistency.
+The resulting `game_params' is never subsequently used to generate a
+puzzle; this is a promise made by the mid-end when it asks for a non-
+full validation.)
+
+#2.4. Handling game descriptions
+
+In this section I present the functions that deal with a textual
+description of a puzzle, i.e. the part that comes after the colon in a
+descriptive-format game ID.
+
+#2.4.1. new_desc()
+
+ char *(*new_desc)(const game_params *params, random_state *rs,
+ char **aux, int interactive);
+
+This function is where all the really hard work gets done. This is
+the function whose job is to randomly generate a new puzzle, ensuring
+solubility and uniqueness as appropriate.
+
+As input it is given a `game_params' structure and a random state
+(see section 5.1 for the random number API). It must invent a puzzle
+instance, encode it in string form, and return a dynamically allocated C
+string containing that encoding.
+
+Additionally, it may return a second dynamically allocated string
+in `*aux'. (If it doesn't want to, then it can leave that parameter
+completely alone; it isn't required to set it to NULL, although doing
+so is harmless.) That string, if present, will be passed to solve()
+(section 2.7.4) later on; so if the puzzle is generated in such a way
+that a solution is known, then information about that solution can be
+saved in `*aux' for solve() to use.
+
+The `interactive' parameter should be ignored by almost all puzzles.
+Its purpose is to distinguish between generating a puzzle within a GUI
+context for immediate play, and generating a puzzle in a command-line
+context for saving to be played later. The only puzzle that currently
+uses this distinction (and, I fervently hope, the only one which will
+_ever_ need to use it) is Mines, which chooses a random first-click
+location when generating puzzles non-interactively, but which waits
+for the user to place the first click when interactive. If you think
+you have come up with another puzzle which needs to make use of this
+parameter, please think for at least ten minutes about whether there is
+_any_ alternative!
+
+Note that game description strings are not required to contain an
+encoding of parameters such as grid size; a game description is
+never separated from the `game_params' it was generated with, so any
+information contained in that structure need not be encoded again in the
+game description.
+
+#2.4.2. validate_desc()
+
+ const char *(*validate_desc)(const game_params *params,
+ const char *desc);
+
+This function is given a game description, and its job is to validate
+that it describes a puzzle which makes sense.
+
+To some extent it's up to the user exactly how far they take the phrase
+`makes sense'; there are no particularly strict rules about how hard the
+user is permitted to shoot themself in the foot when typing in a bogus
+game description by hand. (For example, Rectangles will not verify that
+the sum of all the numbers in the grid equals the grid's area. So a user
+could enter a puzzle which was provably not soluble, and the program
+wouldn't complain; there just wouldn't happen to be any sequence of
+moves which solved it.)
+
+The one non-negotiable criterion is that any game description which
+makes it through validate_desc() _must not_ subsequently cause a crash
+or an assertion failure when fed to new_game() and thence to the rest of
+the back end.
+
+The return value is NULL on success, or a non-dynamically-allocated C
+string containing an error message.
+
+#2.4.3. new_game()
+
+ game_state *(*new_game)(midend *me, const game_params *params,
+ const char *desc);
+
+This function takes a game description as input, together with its
+accompanying `game_params', and constructs a `game_state' describing the
+initial state of the puzzle. It returns a newly allocated `game_state'
+structure.
+
+Almost all puzzles should ignore the `me' parameter. It is required by
+Mines, which needs it for later passing to midend_supersede_game_desc()
+(see section 2.11.2) once the user has placed the first click. I
+fervently hope that no other puzzle will be awkward enough to require
+it, so everybody else should ignore it. As with the `interactive'
+parameter in new_desc() (section 2.4.1), if you think you have a reason
+to need this parameter, please try very hard to think of an alternative
+approach!
+
+#2.5. Handling game states
+
+This section describes the functions which create and destroy
+`game_state' structures.
+
+(Well, except new_game(), which is in section 2.4.3 instead of under
+here; but it deals with game descriptions _and_ game states and it had
+to go in one section or the other.)
+
+#2.5.1. dup_game()
+
+ game_state *(*dup_game)(const game_state *state);
+
+This function allocates a new `game_state' structure and initialises it
+with an exact copy of the information in the one provided as input. It
+returns a pointer to the new duplicate.
+
+#2.5.2. free_game()
+
+ void (*free_game)(game_state *state);
+
+This function frees a `game_state' structure, and any subsidiary
+allocations contained within it.
+
+#2.6. Handling `game_ui'
+
+#2.6.1. new_ui()
+
+ game_ui *(*new_ui)(const game_state *state);
+
+This function allocates and returns a new `game_ui' structure for
+playing a particular puzzle. It is passed a pointer to the initial
+`game_state', in case it needs to refer to that when setting up the
+initial values for the new game.
+
+#2.6.2. free_ui()
+
+ void (*free_ui)(game_ui *ui);
+
+This function frees a `game_ui' structure, and any subsidiary
+allocations contained within it.
+
+#2.6.3. encode_ui()
+
+ char *(*encode_ui)(const game_ui *ui);
+
+This function encodes any _important_ data in a `game_ui' structure in
+string form. It is only called when saving a half-finished game to a
+file.
+
+It should be used sparingly. Almost all data in a `game_ui' is not
+important enough to save. The location of the keyboard-controlled
+cursor, for example, can be reset to a default position on reloading
+the game without impacting the user experience. If the user should
+somehow manage to save a game while a mouse drag was in progress, then
+discarding that mouse drag would be an outright _feature_.
+
+A typical thing that _would_ be worth encoding in this function is the
+Mines death counter: it's in the `game_ui' rather than the `game_state'
+because it's too important to allow the user to revert it by using Undo,
+and therefore it's also too important to allow the user to revert it by
+saving and reloading. (Of course, the user could edit the save file by
+hand... But if the user is _that_ determined to cheat, they could just
+as easily modify the game's source.)
+
+#2.6.4. decode_ui()
+
+ void (*decode_ui)(game_ui *ui, const char *encoding);
+
+This function parses a string previously output by encode_ui(), and
+writes the decoded data back into the provided `game_ui' structure.
+
+#2.6.5. changed_state()
+
+ void (*changed_state)(game_ui *ui, const game_state *oldstate,
+ const game_state *newstate);
+
+This function is called by the mid-end whenever the current game state
+changes, for any reason. Those reasons include:
+
+ - a fresh move being made by interpret_move() and execute_move()
+
+ - a solve operation being performed by solve() and execute_move()
+
+ - the user moving back and forth along the undo list by means of the
+ Undo and Redo operations
+
+ - the user selecting Restart to go back to the initial game state.
+
+The job of changed_state() is to update the `game_ui' for consistency
+with the new game state, if any update is necessary. For example,
+Same Game stores data about the currently selected tile group in its
+`game_ui', and this data is intrinsically related to the game state it
+was derived from. So it's very likely to become invalid when the game
+state changes; thus, Same Game's changed_state() function clears the
+current selection whenever it is called.
+
+When anim_length() or flash_length() are called, you can be sure that
+there has been a previous call to changed_state(). So changed_state()
+can set up data in the `game_ui' which will be read by anim_length() and
+flash_length(), and those functions will not have to worry about being
+called without the data having been initialised.
+
+#2.7. Making moves
+
+This section describes the functions which actually make moves in
+the game: that is, the functions which process user input and end up
+producing new `game_state's.
+
+#2.7.1. interpret_move()
+
+ char *(*interpret_move)(const game_state *state, game_ui *ui,
+ const game_drawstate *ds,
+ int x, int y, int button);
+
+This function receives user input and processes it. Its input parameters
+are the current `game_state', the current `game_ui' and the current
+`game_drawstate', plus details of the input event. `button' is either
+an ASCII value or a special code (listed below) indicating an arrow or
+function key or a mouse event; when `button' is a mouse event, `x' and
+`y' contain the pixel coordinates of the mouse pointer relative to the
+top left of the puzzle's drawing area.
+
+(The pointer to the `game_drawstate' is marked `const', because
+`interpret_move' should not write to it. The normal use of that pointer
+will be to read the game's tile size parameter in order to divide mouse
+coordinates by it.)
+
+interpret_move() may return in three different ways:
+
+ - Returning NULL indicates that no action whatsoever occurred in
+ response to the input event; the puzzle was not interested in it at
+ all.
+
+ - Returning the special value UI_UPDATE indicates that the input event
+ has resulted in a change being made to the `game_ui' which will
+ require a redraw of the game window, but that no actual _move_ was
+ made (i.e. no new `game_state' needs to be created).
+
+ - Returning anything else indicates that a move was made and that
+ a new `game_state' must be created. However, instead of actually
+ constructing a new `game_state' itself, this function is required to
+ return a string description of the details of the move. This string
+ will be passed to execute_move() (section 2.7.2) to actually create
+ the new `game_state'. (Encoding moves as strings in this way means
+ that the mid-end can keep the strings as well as the game states,
+ and the strings can be written to disk when saving the game and fed
+ to execute_move() again on reloading.)
+
+The return value from interpret_move() is expected to be dynamically
+allocated if and only if it is not either NULL _or_ the special string
+constant `UI_UPDATE'.
+
+After this function is called, the back end is permitted to rely on some
+subsequent operations happening in sequence:
+
+ - execute_move() will be called to convert this move description into
+ a new `game_state'
+
+ - changed_state() will be called with the new `game_state'.
+
+This means that if interpret_move() needs to do updates to the `game_ui'
+which are easier to perform by referring to the new `game_state', it can
+safely leave them to be done in changed_state() and not worry about them
+failing to happen.
+
+(Note, however, that execute_move() may _also_ be called in other
+circumstances. It is only interpret_move() which can rely on a
+subsequent call to changed_state().)
+
+The special key codes supported by this function are:
+
+LEFT_BUTTON, MIDDLE_BUTTON, RIGHT_BUTTON
+
+ Indicate that one of the mouse buttons was pressed down.
+
+LEFT_DRAG, MIDDLE_DRAG, RIGHT_DRAG
+
+ Indicate that the mouse was moved while one of the mouse buttons was
+ still down. The mid-end guarantees that when one of these events is
+ received, it will always have been preceded by a button-down event
+ (and possibly other drag events) for the same mouse button, and no
+ event involving another mouse button will have appeared in between.
+
+LEFT_RELEASE, MIDDLE_RELEASE, RIGHT_RELEASE
+
+ Indicate that a mouse button was released. The mid-end guarantees
+ that when one of these events is received, it will always have been
+ preceded by a button-down event (and possibly some drag events) for
+ the same mouse button, and no event involving another mouse button
+ will have appeared in between.
+
+CURSOR_UP, CURSOR_DOWN, CURSOR_LEFT, CURSOR_RIGHT
+
+ Indicate that an arrow key was pressed.
+
+CURSOR_SELECT
+
+ On platforms which have a prominent `select' button alongside their
+ cursor keys, indicates that that button was pressed.
+
+In addition, there are some modifiers which can be bitwise-ORed into the
+`button' parameter:
+
+MOD_CTRL, MOD_SHFT
+
+ These indicate that the Control or Shift key was pressed alongside
+ the key. They only apply to the cursor keys, not to mouse buttons or
+ anything else.
+
+MOD_NUM_KEYPAD
+
+ This applies to some ASCII values, and indicates that the key code
+ was input via the numeric keypad rather than the main keyboard. Some
+ puzzles may wish to treat this differently (for example, a puzzle
+ might want to use the numeric keypad as an eight-way directional
+ pad), whereas others might not (a game involving numeric input
+ probably just wants to treat the numeric keypad as numbers).
+
+MOD_MASK
+
+ This mask is the bitwise OR of all the available modifiers; you can
+ bitwise-AND with ~MOD_MASK to strip all the modifiers off any input
+ value.
+
+#2.7.2. execute_move()
+
+ game_state *(*execute_move)(const game_state *state, char *move);
+
+This function takes an input `game_state' and a move string as output
+from interpret_move(). It returns a newly allocated `game_state' which
+contains the result of applying the specified move to the input game
+state.
+
+This function may return NULL if it cannot parse the move string (and
+this is definitely preferable to crashing or failing an assertion, since
+one way this can happen is if loading a corrupt save file). However, it
+must not return NULL for any move string that really was output from
+interpret_move(): this is punishable by assertion failure in the mid-
+end.
+
+#2.7.3. `can_solve'
+
+ int can_solve;
+
+This boolean field is set to TRUE if the game's solve() function does
+something. If it's set to FALSE, the game will not even offer the
+`Solve' menu option.
+
+#2.7.4. solve()
+
+ char *(*solve)(const game_state *orig, const game_state *curr,
+ const char *aux, const char **error);
+
+This function is called when the user selects the `Solve' option from
+the menu.
+
+It is passed two input game states: `orig' is the game state from the
+very start of the puzzle, and `curr' is the current one. (Different
+games find one or other or both of these convenient.) It is also passed
+the `aux' string saved by new_desc() (section 2.4.1), in case that
+encodes important information needed to provide the solution.
+
+If this function is unable to produce a solution (perhaps, for example,
+the game has no in-built solver so it can only solve puzzles it invented
+internally and has an `aux' string for) then it may return NULL. If it
+does this, it must also set `*error' to an error message to be presented
+to the user (such as `Solution not known for this puzzle'); that error
+message is not expected to be dynamically allocated.
+
+If this function _does_ produce a solution, it returns a move string
+suitable for feeding to execute_move() (section 2.7.2). Like a (non-
+empty) string returned from interpret_move(), the returned string should
+be dynamically allocated.
+
+#2.8. Drawing the game graphics
+
+This section discusses the back end functions that deal with drawing.
+
+#2.8.1. new_drawstate()
+
+ game_drawstate *(*new_drawstate)(drawing *dr,
+ const game_state *state);
+
+This function allocates and returns a new `game_drawstate' structure for
+drawing a particular puzzle. It is passed a pointer to a `game_state',
+in case it needs to refer to that when setting up any initial data.
+
+This function may not rely on the puzzle having been newly started; a
+new draw state can be constructed at any time if the front end requests
+a forced redraw. For games like Pattern, in which initial game states
+are much simpler than general ones, this might be important to keep in
+mind.
+
+The parameter `dr' is a drawing object (see chapter 3) which the
+function might need to use to allocate blitters. (However, this isn't
+recommended; it's usually more sensible to wait to allocate a blitter
+until set_size() is called, because that way you can tailor it to the
+scale at which the puzzle is being drawn.)
+
+#2.8.2. free_drawstate()
+
+ void (*free_drawstate)(drawing *dr, game_drawstate *ds);
+
+This function frees a `game_drawstate' structure, and any subsidiary
+allocations contained within it.
+
+The parameter `dr' is a drawing object (see chapter 3), which might be
+required if you are freeing a blitter.
+
+#2.8.3. `preferred_tilesize'
+
+ int preferred_tilesize;
+
+Each game is required to define a single integer parameter which
+expresses, in some sense, the scale at which it is drawn. This is
+described in the APIs as `tilesize', since most puzzles are on a
+square (or possibly triangular or hexagonal) grid and hence a sensible
+interpretation of this parameter is to define it as the size of one grid
+tile in pixels; however, there's no actual requirement that the `tile
+size' be proportional to the game window size. Window size is required
+to increase monotonically with `tile size', however.
+
+The data element `preferred_tilesize' indicates the tile size which
+should be used in the absence of a good reason to do otherwise (such as
+the screen being too small, or the user explicitly requesting a resize
+if that ever gets implemented).
+
+#2.8.4. compute_size()
+
+ void (*compute_size)(const game_params *params, int tilesize,
+ int *x, int *y);
+
+This function is passed a `game_params' structure and a tile size. It
+returns, in `*x' and `*y', the size in pixels of the drawing area that
+would be required to render a puzzle with those parameters at that tile
+size.
+
+#2.8.5. set_size()
+
+ void (*set_size)(drawing *dr, game_drawstate *ds,
+ const game_params *params, int tilesize);
+
+This function is responsible for setting up a `game_drawstate' to draw
+at a given tile size. Typically this will simply involve copying the
+supplied `tilesize' parameter into a `tilesize' field inside the draw
+state; for some more complex games it might also involve setting up
+other dimension fields, or possibly allocating a blitter (see section
+3.1.13).
+
+The parameter `dr' is a drawing object (see chapter 3), which is
+required if a blitter needs to be allocated.
+
+Back ends may assume (and may enforce by assertion) that this function
+will be called at most once for any `game_drawstate'. If a puzzle needs
+to be redrawn at a different size, the mid-end will create a fresh
+drawstate.
+
+#2.8.6. colours()
+
+ float *(*colours)(frontend *fe, int *ncolours);
+
+This function is responsible for telling the front end what colours the
+puzzle will need to draw itself.
+
+It returns the number of colours required in `*ncolours', and the return
+value from the function itself is a dynamically allocated array of three
+times that many `float's, containing the red, green and blue components
+of each colour respectively as numbers in the range [0,1].
+
+The second parameter passed to this function is a front end handle.
+The only things it is permitted to do with this handle are to call the
+front-end function called frontend_default_colour() (see section 4.39)
+or the utility function called game_mkhighlight() (see section 5.5.7).
+(The latter is a wrapper on the former, so front end implementors only
+need to provide frontend_default_colour().) This allows colours() to
+take local configuration into account when deciding on its own colour
+allocations. Most games use the front end's default colour as their
+background, apart from a few which depend on drawing relief highlights
+so they adjust the background colour if it's too light for highlights to
+show up against it.
+
+Note that the colours returned from this function are for _drawing_,
+not for printing. Printing has an entirely different colour allocation
+policy.
+
+#2.8.7. anim_length()
+
+ float (*anim_length)(const game_state *oldstate,
+ const game_state *newstate,
+ int dir, game_ui *ui);
+
+This function is called when a move is made, undone or redone. It is
+given the old and the new `game_state', and its job is to decide whether
+the transition between the two needs to be animated or can be instant.
+
+`oldstate' is the state that was current until this call; `newstate'
+is the state that will be current after it. `dir' specifies the
+chronological order of those states: if it is positive, then the
+transition is the result of a move or a redo (and so `newstate' is the
+later of the two moves), whereas if it is negative then the transition
+is the result of an undo (so that `newstate' is the _earlier_ move).
+
+If this function decides the transition should be animated, it returns
+the desired length of the animation in seconds. If not, it returns zero.
+
+State changes as a result of a Restart operation are never animated; the
+mid-end will handle them internally and never consult this function at
+all. State changes as a result of Solve operations are also not animated
+by default, although you can change this for a particular game by
+setting a flag in `flags' (section 2.10.7).
+
+The function is also passed a pointer to the local `game_ui'. It may
+refer to information in here to help with its decision (see section
+6.3.7 for an example of this), and/or it may _write_ information about
+the nature of the animation which will be read later by redraw().
+
+When this function is called, it may rely on changed_state() having been
+called previously, so if anim_length() needs to refer to information in
+the `game_ui', then changed_state() is a reliable place to have set that
+information up.
+
+Move animations do not inhibit further input events. If the user
+continues playing before a move animation is complete, the animation
+will be abandoned and the display will jump straight to the final state.
+
+#2.8.8. flash_length()
+
+ float (*flash_length)(const game_state *oldstate,
+ const game_state *newstate,
+ int dir, game_ui *ui);
+
+This function is called when a move is completed. (`Completed'
+means that not only has the move been made, but any animation which
+accompanied it has finished.) It decides whether the transition from
+`oldstate' to `newstate' merits a `flash'.
+
+A flash is much like a move animation, but it is _not_ interrupted by
+further user interface activity; it runs to completion in parallel with
+whatever else might be going on on the display. The only thing which
+will rush a flash to completion is another flash.
+
+The purpose of flashes is to indicate that the game has been completed.
+They were introduced as a separate concept from move animations because
+of Net: the habit of most Net players (and certainly me) is to rotate a
+tile into place and immediately lock it, then move on to another tile.
+When you make your last move, at the instant the final tile is rotated
+into place the screen starts to flash to indicate victory - but if you
+then press the lock button out of habit, then the move animation is
+cancelled, and the victory flash does not complete. (And if you _don't_
+press the lock button, the completed grid will look untidy because there
+will be one unlocked square.) Therefore, I introduced a specific concept
+of a `flash' which is separate from a move animation and can proceed in
+parallel with move animations and any other display activity, so that
+the victory flash in Net is not cancelled by that final locking move.
+
+The input parameters to flash_length() are exactly the same as the ones
+to anim_length().
+
+Just like anim_length(), when this function is called, it may rely on
+changed_state() having been called previously, so if it needs to refer
+to information in the `game_ui' then changed_state() is a reliable place
+to have set that information up.
+
+(Some games use flashes to indicate defeat as well as victory; Mines,
+for example, flashes in a different colour when you tread on a mine from
+the colour it uses when you complete the game. In order to achieve this,
+its flash_length() function has to store a flag in the `game_ui' to
+indicate which flash type is required.)
+
+#2.8.9. status()
+
+ int (*status)(const game_state *state);
+
+This function returns a status value indicating whether the current game
+is still in play, or has been won, or has been conclusively lost. The
+mid-end uses this to implement midend_status() (section 4.26).
+
+The return value should be +1 if the game has been successfully solved.
+If the game has been lost in a situation where further play is unlikely,
+the return value should be -1. If neither is true (so play is still
+ongoing), return zero.
+
+Front ends may wish to use a non-zero status as a cue to proactively
+offer the option of starting a new game. Therefore, back ends should
+not return -1 if the game has been _technically_ lost but undoing and
+continuing is still a realistic possibility.
+
+(For instance, games with hidden information such as Guess or Mines
+might well return a non-zero status whenever they reveal the solution,
+whether or not the player guessed it correctly, on the grounds that a
+player would be unlikely to hide the solution and continue playing after
+the answer was spoiled. On the other hand, games where you can merely
+get into a dead end such as Same Game or Inertia might choose to return
+0 in that situation, on the grounds that the player would quite likely
+press Undo and carry on playing.)
+
+#2.8.10. redraw()
+
+ void (*redraw)(drawing *dr, game_drawstate *ds,
+ const game_state *oldstate,
+ const game_state *newstate,
+ int dir, const game_ui *ui,
+ float anim_time, float flash_time);
+
+This function is responsible for actually drawing the contents of
+the game window, and for redrawing every time the game state or the
+`game_ui' changes.
+
+The parameter `dr' is a drawing object which may be passed to the
+drawing API functions (see chapter 3 for documentation of the drawing
+API). This function may not save `dr' and use it elsewhere; it must only
+use it for calling back to the drawing API functions within its own
+lifetime.
+
+`ds' is the local `game_drawstate', of course, and `ui' is the local
+`game_ui'.
+
+`newstate' is the semantically-current game state, and is always non-
+NULL. If `oldstate' is also non-NULL, it means that a move has recently
+been made and the game is still in the process of displaying an
+animation linking the old and new states; in this situation, `anim_time'
+will give the length of time (in seconds) that the animation has already
+been running. If `oldstate' is NULL, then `anim_time' is unused (and
+will hopefully be set to zero to avoid confusion).
+
+`flash_time', if it is is non-zero, denotes that the game is in the
+middle of a flash, and gives the time since the start of the flash. See
+section 2.8.8 for general discussion of flashes.
+
+The very first time this function is called for a new `game_drawstate',
+it is expected to redraw the _entire_ drawing area. Since this often
+involves drawing visual furniture which is never subsequently altered,
+it is often simplest to arrange this by having a special `first time'
+flag in the draw state, and resetting it after the first redraw.
+
+When this function (or any subfunction) calls the drawing API, it is
+expected to pass colour indices which were previously defined by the
+colours() function.
+
+#2.9. Printing functions
+
+This section discusses the back end functions that deal with printing
+puzzles out on paper.
+
+#2.9.1. `can_print'
+
+ int can_print;
+
+This flag is set to TRUE if the puzzle is capable of printing itself
+on paper. (This makes sense for some puzzles, such as Solo, which can
+be filled in with a pencil. Other puzzles, such as Twiddle, inherently
+involve moving things around and so would not make sense to print.)
+
+If this flag is FALSE, then the functions print_size() and print() will
+never be called.
+
+#2.9.2. `can_print_in_colour'
+
+ int can_print_in_colour;
+
+This flag is set to TRUE if the puzzle is capable of printing itself
+differently when colour is available. For example, Map can actually
+print coloured regions in different _colours_ rather than resorting to
+cross-hatching.
+
+If the `can_print' flag is FALSE, then this flag will be ignored.
+
+#2.9.3. print_size()
+
+ void (*print_size)(const game_params *params, float *x, float *y);
+
+This function is passed a `game_params' structure and a tile size. It
+returns, in `*x' and `*y', the preferred size in _millimetres_ of that
+puzzle if it were to be printed out on paper.
+
+If the `can_print' flag is FALSE, this function will never be called.
+
+#2.9.4. print()
+
+ void (*print)(drawing *dr, const game_state *state, int tilesize);
+
+This function is called when a puzzle is to be printed out on paper. It
+should use the drawing API functions (see chapter 3) to print itself.
+
+This function is separate from redraw() because it is often very
+different:
+
+ - The printing function may not depend on pixel accuracy, since
+ printer resolution is variable. Draw as if your canvas had infinite
+ resolution.
+
+ - The printing function sometimes needs to display things in a
+ completely different style. Net, for example, is very different as
+ an on-screen puzzle and as a printed one.
+
+ - The printing function is often much simpler since it has no need to
+ deal with repeated partial redraws.
+
+However, there's no reason the printing and redraw functions can't share
+some code if they want to.
+
+When this function (or any subfunction) calls the drawing API, the
+colour indices it passes should be colours which have been allocated by
+the print_*_colour() functions within this execution of print(). This is
+very different from the fixed small number of colours used in redraw(),
+because printers do not have a limitation on the total number of colours
+that may be used. Some puzzles' printing functions might wish to
+allocate only one `ink' colour and use it for all drawing; others might
+wish to allocate _more_ colours than are used on screen.
+
+One possible colour policy worth mentioning specifically is that a
+puzzle's printing function might want to allocate the _same_ colour
+indices as are used by the redraw function, so that code shared between
+drawing and printing does not have to keep switching its colour indices.
+In order to do this, the simplest thing is to make use of the fact that
+colour indices returned from print_*_colour() are guaranteed to be in
+increasing order from zero. So if you have declared an `enum' defining
+three colours COL_BACKGROUND, COL_THIS and COL_THAT, you might then
+write
+
+ int c;
+ c = print_mono_colour(dr, 1); assert(c == COL_BACKGROUND);
+ c = print_mono_colour(dr, 0); assert(c == COL_THIS);
+ c = print_mono_colour(dr, 0); assert(c == COL_THAT);
+
+If the `can_print' flag is FALSE, this function will never be called.
+
+#2.10. Miscellaneous
+
+#2.10.1. `can_format_as_text_ever'
+
+ int can_format_as_text_ever;
+
+This boolean field is TRUE if the game supports formatting a game state
+as ASCII text (typically ASCII art) for copying to the clipboard and
+pasting into other applications. If it is FALSE, front ends will not
+offer the `Copy' command at all.
+
+If this field is TRUE, the game does not necessarily have to support
+text formatting for _all_ games: e.g. a game which can be played on
+a square grid or a triangular one might only support copy and paste
+for the former, because triangular grids in ASCII art are just too
+difficult.
+
+If this field is FALSE, the functions can_format_as_text_now() (section
+2.10.2) and text_format() (section 2.10.3) are never called.
+
+#2.10.2. `can_format_as_text_now()'
+
+ int (*can_format_as_text_now)(const game_params *params);
+
+This function is passed a `game_params' and returns a boolean, which is
+TRUE if the game can support ASCII text output for this particular game
+type. If it returns FALSE, front ends will grey out or otherwise disable
+the `Copy' command.
+
+Games may enable and disable the copy-and-paste function for different
+game _parameters_, but are currently constrained to return the same
+answer from this function for all game _states_ sharing the same
+parameters. In other words, the `Copy' function may enable or disable
+itself when the player changes game preset, but will never change during
+play of a single game or when another game of exactly the same type is
+generated.
+
+This function should not take into account aspects of the game
+parameters which are not encoded by encode_params() (section 2.3.4)
+when the `full' parameter is set to FALSE. Such parameters will not
+necessarily match up between a call to this function and a subsequent
+call to text_format() itself. (For instance, game _difficulty_ should
+not affect whether the game can be copied to the clipboard. Only the
+actual visible _shape_ of the game can affect that.)
+
+#2.10.3. text_format()
+
+ char *(*text_format)(const game_state *state);
+
+This function is passed a `game_state', and returns a newly allocated C
+string containing an ASCII representation of that game state. It is used
+to implement the `Copy' operation in many front ends.
+
+This function will only ever be called if the back end field
+`can_format_as_text_ever' (section 2.10.1) is TRUE _and_ the function
+can_format_as_text_now() (section 2.10.2) has returned TRUE for the
+currently selected game parameters.
+
+The returned string may contain line endings (and will probably want
+to), using the normal C internal `\n' convention. For consistency
+between puzzles, all multi-line textual puzzle representations should
+_end_ with a newline as well as containing them internally. (There are
+currently no puzzles which have a one-line ASCII representation, so
+there's no precedent yet for whether that should come with a newline or
+not.)
+
+#2.10.4. wants_statusbar
+
+ int wants_statusbar;
+
+This boolean field is set to TRUE if the puzzle has a use for a textual
+status line (to display score, completion status, currently active
+tiles, etc).
+
+#2.10.5. `is_timed'
+
+ int is_timed;
+
+This boolean field is TRUE if the puzzle is time-critical. If so, the
+mid-end will maintain a game timer while the user plays.
+
+If this field is FALSE, then timing_state() will never be called and
+need not do anything.
+
+#2.10.6. timing_state()
+
+ int (*timing_state)(const game_state *state, game_ui *ui);
+
+This function is passed the current `game_state' and the local
+`game_ui'; it returns TRUE if the game timer should currently be
+running.
+
+A typical use for the `game_ui' in this function is to note when the
+game was first completed (by setting a flag in changed_state() - see
+section 2.6.5), and freeze the timer thereafter so that the user can
+undo back through their solution process without altering their time.
+
+#2.10.7. `flags'
+
+ int flags;
+
+This field contains miscellaneous per-backend flags. It consists of the
+bitwise OR of some combination of the following:
+
+BUTTON_BEATS(x,y)
+
+ Given any x and y from the set {LEFT_BUTTON, MIDDLE_BUTTON,
+ RIGHT_BUTTON}, this macro evaluates to a bit flag which indicates
+ that when buttons x and y are both pressed simultaneously, the mid-
+ end should consider x to have priority. (In the absence of any such
+ flags, the mid-end will always consider the most recently pressed
+ button to have priority.)
+
+SOLVE_ANIMATES
+
+ This flag indicates that moves generated by solve() (section 2.7.4)
+ are candidates for animation just like any other move. For most
+ games, solve moves should not be animated, so the mid-end doesn't
+ even bother calling anim_length() (section 2.8.7), thus saving some
+ special-case code in each game. On the rare occasion that animated
+ solve moves are actually required, you can set this flag.
+
+REQUIRE_RBUTTON
+
+ This flag indicates that the puzzle cannot be usefully played
+ without the use of mouse buttons other than the left one. On some
+ PDA platforms, this flag is used by the front end to enable right-
+ button emulation through an appropriate gesture. Note that a puzzle
+ is not required to set this just because it _uses_ the right button,
+ but only if its use of the right button is critical to playing the
+ game. (Slant, for example, uses the right button to cycle through
+ the three square states in the opposite order from the left button,
+ and hence can manage fine without it.)
+
+REQUIRE_NUMPAD
+
+ This flag indicates that the puzzle cannot be usefully played
+ without the use of number-key input. On some PDA platforms it
+ causes an emulated number pad to appear on the screen. Similarly to
+ REQUIRE_RBUTTON, a puzzle need not specify this simply if its use of
+ the number keys is not critical.
+
+#2.11. Things a back end may do on its own initiative
+
+This section describes a couple of things that a back end may choose
+to do by calling functions elsewhere in the program, which would not
+otherwise be obvious.
+
+#2.11.1. Create a random state
+
+If a back end needs random numbers at some point during normal play, it
+can create a fresh `random_state' by first calling `get_random_seed'
+(section 4.35) and then passing the returned seed data to random_new().
+
+This is likely not to be what you want. If a puzzle needs randomness in
+the middle of play, it's likely to be more sensible to store some sort
+of random state within the `game_state', so that the random numbers are
+tied to the particular game state and hence the player can't simply keep
+undoing their move until they get numbers they like better.
+
+This facility is currently used only in Net, to implement the `jumble'
+command, which sets every unlocked tile to a new random orientation.
+This randomness _is_ a reasonable use of the feature, because it's non-
+adversarial - there's no advantage to the user in getting different
+random numbers.
+
+#2.11.2. Supersede its own game description
+
+In response to a move, a back end is (reluctantly) permitted to call
+midend_supersede_game_desc():
+
+ void midend_supersede_game_desc(midend *me,
+ char *desc, char *privdesc);
+
+When the user selects `New Game', the mid-end calls new_desc()
+(section 2.4.1) to get a new game description, and (as well as using
+that to generate an initial game state) stores it for the save file
+and for telling to the user. The function above overwrites that
+game description, and also splits it in two. `desc' becomes the new
+game description which is provided to the user on request, and is
+also the one used to construct a new initial game state if the user
+selects `Restart'. `privdesc' is a `private' game description, used to
+reconstruct the game's initial state when reloading.
+
+The distinction between the two, as well as the need for this function
+at all, comes from Mines. Mines begins with a blank grid and no
+idea of where the mines actually are; new_desc() does almost no
+work in interactive mode, and simply returns a string encoding the
+`random_state'. When the user first clicks to open a tile, _then_ Mines
+generates the mine positions, in such a way that the game is soluble
+from that starting point. Then it uses this function to supersede the
+random-state game description with a proper one. But it needs two: one
+containing the initial click location (because that's what you want to
+happen if you restart the game, and also what you want to send to a
+friend so that they play _the same game_ as you), and one without the
+initial click location (because when you save and reload the game, you
+expect to see the same blank initial state as you had before saving).
+
+I should stress again that this function is a horrid hack. Nobody should
+use it if they're not Mines; if you think you need to use it, think
+again repeatedly in the hope of finding a better way to do whatever it
+was you needed to do.
+
+#3. The drawing API
+
+The back end function redraw() (section 2.8.10) is required to draw
+the puzzle's graphics on the window's drawing area, or on paper if the
+puzzle is printable. To do this portably, it is provided with a drawing
+API allowing it to talk directly to the front end. In this chapter I
+document that API, both for the benefit of back end authors trying to
+use it and for front end authors trying to implement it.
+
+The drawing API as seen by the back end is a collection of global
+functions, each of which takes a pointer to a `drawing' structure (a
+`drawing object'). These objects are supplied as parameters to the back
+end's redraw() and print() functions.
+
+In fact these global functions are not implemented directly by the front
+end; instead, they are implemented centrally in `drawing.c' and form a
+small piece of middleware. The drawing API as supplied by the front end
+is a structure containing a set of function pointers, plus a `void *'
+handle which is passed to each of those functions. This enables a single
+front end to switch between multiple implementations of the drawing API
+if necessary. For example, the Windows API supplies a printing mechanism
+integrated into the same GDI which deals with drawing in windows, and
+therefore the same API implementation can handle both drawing and
+printing; but on Unix, the most common way for applications to print
+is by producing PostScript output directly, and although it would be
+_possible_ to write a single (say) draw_rect() function which checked
+a global flag to decide whether to do GTK drawing operations or output
+PostScript to a file, it's much nicer to have two separate functions and
+switch between them as appropriate.
+
+When drawing, the puzzle window is indexed by pixel coordinates, with
+the top left pixel defined as (0,0) and the bottom right pixel (w-1,h-
+1), where `w' and `h' are the width and height values returned by the
+back end function compute_size() (section 2.8.4).
+
+When printing, the puzzle's print area is indexed in exactly the same
+way (with an arbitrary tile size provided by the printing module
+`printing.c'), to facilitate sharing of code between the drawing and
+printing routines. However, when printing, puzzles may no longer assume
+that the coordinate unit has any relationship to a pixel; the printer's
+actual resolution might very well not even be known at print time, so
+the coordinate unit might be smaller or larger than a pixel. Puzzles'
+print functions should restrict themselves to drawing geometric shapes
+rather than fiddly pixel manipulation.
+
+_Puzzles' redraw functions may assume that the surface they draw on is
+persistent_. It is the responsibility of every front end to preserve
+the puzzle's window contents in the face of GUI window expose issues
+and similar. It is not permissible to request that the back end redraw
+any part of a window that it has already drawn, unless something has
+actually changed as a result of making moves in the puzzle.
+
+Most front ends accomplish this by having the drawing routines draw on a
+stored bitmap rather than directly on the window, and copying the bitmap
+to the window every time a part of the window needs to be redrawn.
+Therefore, it is vitally important that whenever the back end does any
+drawing it informs the front end of which parts of the window it has
+accessed, and hence which parts need repainting. This is done by calling
+draw_update() (section 3.1.11).
+
+Persistence of old drawing is convenient. However, a puzzle should be
+very careful about how it updates its drawing area. The problem is that
+some front ends do anti-aliased drawing: rather than simply choosing
+between leaving each pixel untouched or painting it a specified colour,
+an antialiased drawing function will _blend_ the original and new
+colours in pixels at a figure's boundary according to the proportion of
+the pixel occupied by the figure (probably modified by some heuristic
+fudge factors). All of this produces a smoother appearance for curves
+and diagonal lines.
+
+An unfortunate effect of drawing an anti-aliased figure repeatedly
+is that the pixels around the figure's boundary come steadily more
+saturated with `ink' and the boundary appears to `spread out'. Worse,
+redrawing a figure in a different colour won't fully paint over the old
+boundary pixels, so the end result is a rather ugly smudge.
+
+A good strategy to avoid unpleasant anti-aliasing artifacts is to
+identify a number of rectangular areas which need to be redrawn, clear
+them to the background colour, and then redraw their contents from
+scratch, being careful all the while not to stray beyond the boundaries
+of the original rectangles. The clip() function (section 3.1.9) comes in
+very handy here. Games based on a square grid can often do this fairly
+easily. Other games may need to be somewhat more careful. For example,
+Loopy's redraw function first identifies portions of the display which
+need to be updated. Then, if the changes are fairly well localised, it
+clears and redraws a rectangle containing each changed area. Otherwise,
+it gives up and redraws the entire grid from scratch.
+
+It is possible to avoid clearing to background and redrawing from
+scratch if one is very careful about which drawing functions one
+uses: if a function is documented as not anti-aliasing under some
+circumstances, you can rely on each pixel in a drawing either being left
+entirely alone or being set to the requested colour, with no blending
+being performed.
+
+In the following sections I first discuss the drawing API as seen by the
+back end, and then the _almost_ identical function-pointer form seen by
+the front end.
+
+#3.1. Drawing API as seen by the back end
+
+This section documents the back-end drawing API, in the form of
+functions which take a `drawing' object as an argument.
+
+#3.1.1. draw_rect()
+
+ void draw_rect(drawing *dr, int x, int y, int w, int h,
+ int colour);
+
+Draws a filled rectangle in the puzzle window.
+
+`x' and `y' give the coordinates of the top left pixel of the rectangle.
+`w' and `h' give its width and height. Thus, the horizontal extent of
+the rectangle runs from `x' to `x+w-1' inclusive, and the vertical
+extent from `y' to `y+h-1' inclusive.
+
+`colour' is an integer index into the colours array returned by the back
+end function colours() (section 2.8.6).
+
+There is no separate pixel-plotting function. If you want to plot a
+single pixel, the approved method is to use draw_rect() with width and
+height set to 1.
+
+Unlike many of the other drawing functions, this function is guaranteed
+to be pixel-perfect: the rectangle will be sharply defined and not anti-
+aliased or anything like that.
+
+This function may be used for both drawing and printing.
+
+#3.1.2. draw_rect_outline()
+
+ void draw_rect_outline(drawing *dr, int x, int y, int w, int h,
+ int colour);
+
+Draws an outline rectangle in the puzzle window.
+
+`x' and `y' give the coordinates of the top left pixel of the rectangle.
+`w' and `h' give its width and height. Thus, the horizontal extent of
+the rectangle runs from `x' to `x+w-1' inclusive, and the vertical
+extent from `y' to `y+h-1' inclusive.
+
+`colour' is an integer index into the colours array returned by the back
+end function colours() (section 2.8.6).
+
+From a back end perspective, this function may be considered to be part
+of the drawing API. However, front ends are not required to implement
+it, since it is actually implemented centrally (in misc.c) as a wrapper
+on draw_polygon().
+
+This function may be used for both drawing and printing.
+
+#3.1.3. draw_line()
+
+ void draw_line(drawing *dr, int x1, int y1, int x2, int y2,
+ int colour);
+
+Draws a straight line in the puzzle window.
+
+`x1' and `y1' give the coordinates of one end of the line. `x2' and `y2'
+give the coordinates of the other end. The line drawn includes both
+those points.
+
+`colour' is an integer index into the colours array returned by the back
+end function colours() (section 2.8.6).
+
+Some platforms may perform anti-aliasing on this function. Therefore,
+do not assume that you can erase a line by drawing the same line over
+it in the background colour; anti-aliasing might lead to perceptible
+ghost artefacts around the vanished line. Horizontal and vertical lines,
+however, are pixel-perfect and not anti-aliased.
+
+This function may be used for both drawing and printing.
+
+#3.1.4. draw_polygon()
+
+ void draw_polygon(drawing *dr, int *coords, int npoints,
+ int fillcolour, int outlinecolour);
+
+Draws an outlined or filled polygon in the puzzle window.
+
+`coords' is an array of (2*npoints) integers, containing the `x' and `y'
+coordinates of `npoints' vertices.
+
+`fillcolour' and `outlinecolour' are integer indices into the colours
+array returned by the back end function colours() (section 2.8.6).
+`fillcolour' may also be -1 to indicate that the polygon should be
+outlined only.
+
+The polygon defined by the specified list of vertices is first filled in
+`fillcolour', if specified, and then outlined in `outlinecolour'.
+
+`outlinecolour' may _not_ be -1; it must be a valid colour (and front
+ends are permitted to enforce this by assertion). This is because
+different platforms disagree on whether a filled polygon should include
+its boundary line or not, so drawing _only_ a filled polygon would
+have non-portable effects. If you want your filled polygon not to
+have a visible outline, you must set `outlinecolour' to the same as
+`fillcolour'.
+
+Some platforms may perform anti-aliasing on this function. Therefore, do
+not assume that you can erase a polygon by drawing the same polygon over
+it in the background colour. Also, be prepared for the polygon to extend
+a pixel beyond its obvious bounding box as a result of this; if you
+really need it not to do this to avoid interfering with other delicate
+graphics, you should probably use clip() (section 3.1.9). You can rely
+on horizontal and vertical lines not being anti-aliased.
+
+This function may be used for both drawing and printing.
+
+#3.1.5. draw_circle()
+
+ void draw_circle(drawing *dr, int cx, int cy, int radius,
+ int fillcolour, int outlinecolour);
+
+Draws an outlined or filled circle in the puzzle window.
+
+`cx' and `cy' give the coordinates of the centre of the circle. `radius'
+gives its radius. The total horizontal pixel extent of the circle is
+from `cx-radius+1' to `cx+radius-1' inclusive, and the vertical extent
+similarly around `cy'.
+
+`fillcolour' and `outlinecolour' are integer indices into the colours
+array returned by the back end function colours() (section 2.8.6).
+`fillcolour' may also be -1 to indicate that the circle should be
+outlined only.
+
+The circle is first filled in `fillcolour', if specified, and then
+outlined in `outlinecolour'.
+
+`outlinecolour' may _not_ be -1; it must be a valid colour (and front
+ends are permitted to enforce this by assertion). This is because
+different platforms disagree on whether a filled circle should include
+its boundary line or not, so drawing _only_ a filled circle would
+have non-portable effects. If you want your filled circle not to
+have a visible outline, you must set `outlinecolour' to the same as
+`fillcolour'.
+
+Some platforms may perform anti-aliasing on this function. Therefore, do
+not assume that you can erase a circle by drawing the same circle over
+it in the background colour. Also, be prepared for the circle to extend
+a pixel beyond its obvious bounding box as a result of this; if you
+really need it not to do this to avoid interfering with other delicate
+graphics, you should probably use clip() (section 3.1.9).
+
+This function may be used for both drawing and printing.
+
+#3.1.6. draw_thick_line()
+
+ void draw_thick_line(drawing *dr, float thickness,
+ float x1, float y1, float x2, float y2,
+ int colour)
+
+Draws a line in the puzzle window, giving control over the line's
+thickness.
+
+`x1' and `y1' give the coordinates of one end of the line. `x2' and `y2'
+give the coordinates of the other end. `thickness' gives the thickness
+of the line, in pixels.
+
+Note that the coordinates and thickness are floating-point: the
+continuous coordinate system is in effect here. It's important to be
+able to address points with better-than-pixel precision in this case,
+because one can't otherwise properly express the endpoints of lines with
+both odd and even thicknesses.
+
+Some platforms may perform anti-aliasing on this function. The precise
+pixels affected by a thick-line drawing operation may vary between
+platforms, and no particular guarantees are provided. Indeed, even
+horizontal or vertical lines may be anti-aliased.
+
+This function may be used for both drawing and printing.
+
+If the specified thickness is less than 1.0, 1.0 is used. This ensures
+that thin lines are visible even at small scales.
+
+#3.1.7. draw_text()
+
+ void draw_text(drawing *dr, int x, int y, int fonttype,
+ int fontsize, int align, int colour,
+ const char *text);
+
+Draws text in the puzzle window.
+
+`x' and `y' give the coordinates of a point. The relation of this point
+to the location of the text is specified by `align', which is a bitwise
+OR of horizontal and vertical alignment flags:
+
+ALIGN_VNORMAL
+
+ Indicates that `y' is aligned with the baseline of the text.
+
+ALIGN_VCENTRE
+
+ Indicates that `y' is aligned with the vertical centre of the
+ text. (In fact, it's aligned with the vertical centre of normal
+ _capitalised_ text: displaying two pieces of text with ALIGN_VCENTRE
+ at the same y-coordinate will cause their baselines to be aligned
+ with one another, even if one is an ascender and the other a
+ descender.)
+
+ALIGN_HLEFT
+
+ Indicates that `x' is aligned with the left-hand end of the text.
+
+ALIGN_HCENTRE
+
+ Indicates that `x' is aligned with the horizontal centre of the
+ text.
+
+ALIGN_HRIGHT
+
+ Indicates that `x' is aligned with the right-hand end of the text.
+
+`fonttype' is either FONT_FIXED or FONT_VARIABLE, for a monospaced
+or proportional font respectively. (No more detail than that may be
+specified; it would only lead to portability issues between different
+platforms.)
+
+`fontsize' is the desired size, in pixels, of the text. This size
+corresponds to the overall point size of the text, not to any internal
+dimension such as the cap-height.
+
+`colour' is an integer index into the colours array returned by the back
+end function colours() (section 2.8.6).
+
+This function may be used for both drawing and printing.
+
+The character set used to encode the text passed to this function is
+specified _by the drawing object_, although it must be a superset of
+ASCII. If a puzzle wants to display text that is not contained in ASCII,
+it should use the text_fallback() function (section 3.1.8) to query the
+drawing object for an appropriate representation of the characters it
+wants.
+
+#3.1.8. text_fallback()
+
+ char *text_fallback(drawing *dr, const char *const *strings,
+ int nstrings);
+
+This function is used to request a translation of UTF-8 text into
+whatever character encoding is expected by the drawing object's
+implementation of draw_text().
+
+The input is a list of strings encoded in UTF-8: nstrings gives the
+number of strings in the list, and strings[0], strings[1], ...,
+strings[nstrings-1] are the strings themselves.
+
+The returned string (which is dynamically allocated and must be freed
+when finished with) is derived from the first string in the list that
+the drawing object expects to be able to display reliably; it will
+consist of that string translated into the character set expected by
+draw_text().
+
+Drawing implementations are not required to handle anything outside
+ASCII, but are permitted to assume that _some_ string will be
+successfully translated. So every call to this function must include
+a string somewhere in the list (presumably the last element) which
+consists of nothing but ASCII, to be used by any front end which cannot
+handle anything else.
+
+For example, if a puzzle wished to display a string including a
+multiplication sign (U+00D7 in Unicode, represented by the bytes C3 97
+in UTF-8), it might do something like this:
+
+ static const char *const times_signs[] = { "\xC3\x97", "x" };
+ char *times_sign = text_fallback(dr, times_signs, 2);
+ sprintf(buffer, "%d%s%d", width, times_sign, height);
+ draw_text(dr, x, y, font, size, align, colour, buffer);
+ sfree(buffer);
+
+which would draw a string with a times sign in the middle on platforms
+that support it, and fall back to a simple ASCII `x' where there was no
+alternative.
+
+#3.1.9. clip()
+
+ void clip(drawing *dr, int x, int y, int w, int h);
+
+Establishes a clipping rectangle in the puzzle window.
+
+`x' and `y' give the coordinates of the top left pixel of the clipping
+rectangle. `w' and `h' give its width and height. Thus, the horizontal
+extent of the rectangle runs from `x' to `x+w-1' inclusive, and the
+vertical extent from `y' to `y+h-1' inclusive. (These are exactly the
+same semantics as draw_rect().)
+
+After this call, no drawing operation will affect anything outside the
+specified rectangle. The effect can be reversed by calling unclip()
+(section 3.1.10). The clipping rectangle is pixel-perfect: pixels within
+the rectangle are affected as usual by drawing functions; pixels outside
+are completely untouched.
+
+Back ends should not assume that a clipping rectangle will be
+automatically cleared up by the front end if it's left lying around;
+that might work on current front ends, but shouldn't be relied upon.
+Always explicitly call unclip().
+
+This function may be used for both drawing and printing.
+
+#3.1.10. unclip()
+
+ void unclip(drawing *dr);
+
+Reverts the effect of a previous call to clip(). After this call, all
+drawing operations will be able to affect the entire puzzle window
+again.
+
+This function may be used for both drawing and printing.
+
+#3.1.11. draw_update()
+
+ void draw_update(drawing *dr, int x, int y, int w, int h);
+
+Informs the front end that a rectangular portion of the puzzle window
+has been drawn on and needs to be updated.
+
+`x' and `y' give the coordinates of the top left pixel of the update
+rectangle. `w' and `h' give its width and height. Thus, the horizontal
+extent of the rectangle runs from `x' to `x+w-1' inclusive, and the
+vertical extent from `y' to `y+h-1' inclusive. (These are exactly the
+same semantics as draw_rect().)
+
+The back end redraw function _must_ call this function to report any
+changes it has made to the window. Otherwise, those changes may not
+become immediately visible, and may then appear at an unpredictable
+subsequent time such as the next time the window is covered and re-
+exposed.
+
+This function is only important when drawing. It may be called when
+printing as well, but doing so is not compulsory, and has no effect.
+(So if you have a shared piece of code between the drawing and printing
+routines, that code may safely call draw_update().)
+
+#3.1.12. status_bar()
+
+ void status_bar(drawing *dr, const char *text);
+
+Sets the text in the game's status bar to `text'. The text is copied
+from the supplied buffer, so the caller is free to deallocate or modify
+the buffer after use.
+
+(This function is not exactly a _drawing_ function, but it shares with
+the drawing API the property that it may only be called from within the
+back end redraw function, so this is as good a place as any to document
+it.)
+
+The supplied text is filtered through the mid-end for optional rewriting
+before being passed on to the front end; the mid-end will prepend the
+current game time if the game is timed (and may in future perform other
+rewriting if it seems like a good idea).
+
+This function is for drawing only; it must never be called during
+printing.
+
+#3.1.13. Blitter functions
+
+This section describes a group of related functions which save and
+restore a section of the puzzle window. This is most commonly used to
+implement user interfaces involving dragging a puzzle element around the
+window: at the end of each call to redraw(), if an object is currently
+being dragged, the back end saves the window contents under that
+location and then draws the dragged object, and at the start of the next
+redraw() the first thing it does is to restore the background.
+
+The front end defines an opaque type called a `blitter', which is
+capable of storing a rectangular area of a specified size.
+
+Blitter functions are for drawing only; they must never be called during
+printing.
+
+#3.1.13.1. blitter_new()
+
+ blitter *blitter_new(drawing *dr, int w, int h);
+
+Creates a new blitter object which stores a rectangle of size `w' by `h'
+pixels. Returns a pointer to the blitter object.
+
+Blitter objects are best stored in the `game_drawstate'. A good time to
+create them is in the set_size() function (section 2.8.5), since it is
+at this point that you first know how big a rectangle they will need to
+save.
+
+#3.1.13.2. blitter_free()
+
+ void blitter_free(drawing *dr, blitter *bl);
+
+Disposes of a blitter object. Best called in free_drawstate(). (However,
+check that the blitter object is not NULL before attempting to free it;
+it is possible that a draw state might be created and freed without ever
+having set_size() called on it in between.)
+
+#3.1.13.3. blitter_save()
+
+ void blitter_save(drawing *dr, blitter *bl, int x, int y);
+
+This is a true drawing API function, in that it may only be called from
+within the game redraw routine. It saves a rectangular portion of the
+puzzle window into the specified blitter object.
+
+`x' and `y' give the coordinates of the top left corner of the saved
+rectangle. The rectangle's width and height are the ones specified when
+the blitter object was created.
+
+This function is required to cope and do the right thing if `x' and `y'
+are out of range. (The right thing probably means saving whatever part
+of the blitter rectangle overlaps with the visible area of the puzzle
+window.)
+
+#3.1.13.4. blitter_load()
+
+ void blitter_load(drawing *dr, blitter *bl, int x, int y);
+
+This is a true drawing API function, in that it may only be called from
+within the game redraw routine. It restores a rectangular portion of the
+puzzle window from the specified blitter object.
+
+`x' and `y' give the coordinates of the top left corner of the rectangle
+to be restored. The rectangle's width and height are the ones specified
+when the blitter object was created.
+
+Alternatively, you can specify both `x' and `y' as the special value
+BLITTER_FROMSAVED, in which case the rectangle will be restored to
+exactly where it was saved from. (This is probably what you want to do
+almost all the time, if you're using blitters to implement draggable
+puzzle elements.)
+
+This function is required to cope and do the right thing if `x' and
+`y' (or the equivalent ones saved in the blitter) are out of range.
+(The right thing probably means restoring whatever part of the blitter
+rectangle overlaps with the visible area of the puzzle window.)
+
+If this function is called on a blitter which had previously been saved
+from a partially out-of-range rectangle, then the parts of the saved
+bitmap which were not visible at save time are undefined. If the blitter
+is restored to a different position so as to make those parts visible,
+the effect on the drawing area is undefined.
+
+#3.1.14. print_mono_colour()
+
+ int print_mono_colour(drawing *dr, int grey);
+
+This function allocates a colour index for a simple monochrome colour
+during printing.
+
+`grey' must be 0 or 1. If `grey' is 0, the colour returned is black; if
+`grey' is 1, the colour is white.
+
+#3.1.15. print_grey_colour()
+
+ int print_grey_colour(drawing *dr, float grey);
+
+This function allocates a colour index for a grey-scale colour during
+printing.
+
+`grey' may be any number between 0 (black) and 1 (white); for example,
+0.5 indicates a medium grey.
+
+The chosen colour will be rendered to the limits of the printer's
+halftoning capability.
+
+#3.1.16. print_hatched_colour()
+
+ int print_hatched_colour(drawing *dr, int hatch);
+
+This function allocates a colour index which does not represent a
+literal _colour_. Instead, regions shaded in this colour will be hatched
+with parallel lines. The `hatch' parameter defines what type of hatching
+should be used in place of this colour:
+
+HATCH_SLASH
+
+ This colour will be hatched by lines slanting to the right at 45
+ degrees.
+
+HATCH_BACKSLASH
+
+ This colour will be hatched by lines slanting to the left at 45
+ degrees.
+
+HATCH_HORIZ
+
+ This colour will be hatched by horizontal lines.
+
+HATCH_VERT
+
+ This colour will be hatched by vertical lines.
+
+HATCH_PLUS
+
+ This colour will be hatched by criss-crossing horizontal and
+ vertical lines.
+
+HATCH_X
+
+ This colour will be hatched by criss-crossing diagonal lines.
+
+Colours defined to use hatching may not be used for drawing lines or
+text; they may only be used for filling areas. That is, they may be
+used as the `fillcolour' parameter to draw_circle() and draw_polygon(),
+and as the colour parameter to draw_rect(), but may not be used as the
+`outlinecolour' parameter to draw_circle() or draw_polygon(), or with
+draw_line() or draw_text().
+
+#3.1.17. print_rgb_mono_colour()
+
+ int print_rgb_mono_colour(drawing *dr, float r, float g,
+ float b, float grey);
+
+This function allocates a colour index for a fully specified RGB colour
+during printing.
+
+`r', `g' and `b' may each be anywhere in the range from 0 to 1.
+
+If printing in black and white only, these values will be ignored, and
+either pure black or pure white will be used instead, according to the
+`grey' parameter. (The fallback colour is the same as the one which
+would be allocated by print_mono_colour(grey).)
+
+#3.1.18. print_rgb_grey_colour()
+
+ int print_rgb_grey_colour(drawing *dr, float r, float g,
+ float b, float grey);
+
+This function allocates a colour index for a fully specified RGB colour
+during printing.
+
+`r', `g' and `b' may each be anywhere in the range from 0 to 1.
+
+If printing in black and white only, these values will be ignored, and
+a shade of grey given by the `grey' parameter will be used instead.
+(The fallback colour is the same as the one which would be allocated by
+print_grey_colour(grey).)
+
+#3.1.19. print_rgb_hatched_colour()
+
+ int print_rgb_hatched_colour(drawing *dr, float r, float g,
+ float b, float hatched);
+
+This function allocates a colour index for a fully specified RGB colour
+during printing.
+
+`r', `g' and `b' may each be anywhere in the range from 0 to 1.
+
+If printing in black and white only, these values will be ignored, and
+a form of cross-hatching given by the `hatch' parameter will be used
+instead; see section 3.1.16 for the possible values of this parameter.
+(The fallback colour is the same as the one which would be allocated by
+print_hatched_colour(hatch).)
+
+#3.1.20. print_line_width()
+
+ void print_line_width(drawing *dr, int width);
+
+This function is called to set the thickness of lines drawn during
+printing. It is meaningless in drawing: all lines drawn by draw_line(),
+draw_circle and draw_polygon() are one pixel in thickness. However, in
+printing there is no clear definition of a pixel and so line widths must
+be explicitly specified.
+
+The line width is specified in the usual coordinate system. Note,
+however, that it is a hint only: the central printing system may choose
+to vary line thicknesses at user request or due to printer capabilities.
+
+#3.1.21. print_line_dotted()
+
+ void print_line_dotted(drawing *dr, int dotted);
+
+This function is called to toggle the drawing of dotted lines during
+printing. It is not supported during drawing.
+
+The parameter `dotted' is a boolean; TRUE means that future lines drawn
+by draw_line(), draw_circle and draw_polygon() will be dotted, and FALSE
+means that they will be solid.
+
+Some front ends may impose restrictions on the width of dotted lines.
+Asking for a dotted line via this front end will override any line width
+request if the front end requires it.
+
+#3.2. The drawing API as implemented by the front end
+
+This section describes the drawing API in the function-pointer form in
+which it is implemented by a front end.
+
+(It isn't only platform-specific front ends which implement this API;
+the platform-independent module `ps.c' also provides an implementation
+of it which outputs PostScript. Thus, any platform which wants to do PS
+printing can do so with minimum fuss.)
+
+The following entries all describe function pointer fields in a
+structure called `drawing_api'. Each of the functions takes a `void *'
+context pointer, which it should internally cast back to a more useful
+type. Thus, a drawing _object_ (`drawing *)' suitable for passing to
+the back end redraw or printing functions is constructed by passing a
+`drawing_api' and a `void *' to the function drawing_new() (see section
+3.3.1).
+
+#3.2.1. draw_text()
+
+ void (*draw_text)(void *handle, int x, int y, int fonttype,
+ int fontsize, int align, int colour,
+ const char *text);
+
+This function behaves exactly like the back end draw_text() function;
+see section 3.1.7.
+
+#3.2.2. draw_rect()
+
+ void (*draw_rect)(void *handle, int x, int y, int w, int h,
+ int colour);
+
+This function behaves exactly like the back end draw_rect() function;
+see section 3.1.1.
+
+#3.2.3. draw_line()
+
+ void (*draw_line)(void *handle, int x1, int y1, int x2, int y2,
+ int colour);
+
+This function behaves exactly like the back end draw_line() function;
+see section 3.1.3.
+
+#3.2.4. draw_polygon()
+
+ void (*draw_polygon)(void *handle, int *coords, int npoints,
+ int fillcolour, int outlinecolour);
+
+This function behaves exactly like the back end draw_polygon() function;
+see section 3.1.4.
+
+#3.2.5. draw_circle()
+
+ void (*draw_circle)(void *handle, int cx, int cy, int radius,
+ int fillcolour, int outlinecolour);
+
+This function behaves exactly like the back end draw_circle() function;
+see section 3.1.5.
+
+#3.2.6. draw_thick_line()
+
+ void draw_thick_line(drawing *dr, float thickness,
+ float x1, float y1, float x2, float y2,
+ int colour)
+
+This function behaves exactly like the back end draw_thick_line()
+function; see section 3.1.6.
+
+An implementation of this API which doesn't provide high-quality
+rendering of thick lines is permitted to define this function pointer
+to be NULL. The middleware in drawing.c will notice and provide a low-
+quality alternative using draw_polygon().
+
+#3.2.7. draw_update()
+
+ void (*draw_update)(void *handle, int x, int y, int w, int h);
+
+This function behaves exactly like the back end draw_update() function;
+see section 3.1.11.
+
+An implementation of this API which only supports printing is permitted
+to define this function pointer to be NULL rather than bothering to
+define an empty function. The middleware in drawing.c will notice and
+avoid calling it.
+
+#3.2.8. clip()
+
+ void (*clip)(void *handle, int x, int y, int w, int h);
+
+This function behaves exactly like the back end clip() function; see
+section 3.1.9.
+
+#3.2.9. unclip()
+
+ void (*unclip)(void *handle);
+
+This function behaves exactly like the back end unclip() function; see
+section 3.1.10.
+
+#3.2.10. start_draw()
+
+ void (*start_draw)(void *handle);
+
+This function is called at the start of drawing. It allows the front end
+to initialise any temporary data required to draw with, such as device
+contexts.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.11. end_draw()
+
+ void (*end_draw)(void *handle);
+
+This function is called at the end of drawing. It allows the front end
+to do cleanup tasks such as deallocating device contexts and scheduling
+appropriate GUI redraw events.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.12. status_bar()
+
+ void (*status_bar)(void *handle, const char *text);
+
+This function behaves exactly like the back end status_bar() function;
+see section 3.1.12.
+
+Front ends implementing this function need not worry about it
+being called repeatedly with the same text; the middleware code in
+status_bar() will take care of this.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.13. blitter_new()
+
+ blitter *(*blitter_new)(void *handle, int w, int h);
+
+This function behaves exactly like the back end blitter_new() function;
+see section 3.1.13.1.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.14. blitter_free()
+
+ void (*blitter_free)(void *handle, blitter *bl);
+
+This function behaves exactly like the back end blitter_free() function;
+see section 3.1.13.2.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.15. blitter_save()
+
+ void (*blitter_save)(void *handle, blitter *bl, int x, int y);
+
+This function behaves exactly like the back end blitter_save() function;
+see section 3.1.13.3.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.16. blitter_load()
+
+ void (*blitter_load)(void *handle, blitter *bl, int x, int y);
+
+This function behaves exactly like the back end blitter_load() function;
+see section 3.1.13.4.
+
+Implementations of this API which do not provide drawing services may
+define this function pointer to be NULL; it will never be called unless
+drawing is attempted.
+
+#3.2.17. begin_doc()
+
+ void (*begin_doc)(void *handle, int pages);
+
+This function is called at the beginning of a printing run. It gives the
+front end an opportunity to initialise any required printing subsystem.
+It also provides the number of pages in advance.
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.18. begin_page()
+
+ void (*begin_page)(void *handle, int number);
+
+This function is called during printing, at the beginning of each page.
+It gives the page number (numbered from 1 rather than 0, so suitable for
+use in user-visible contexts).
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.19. begin_puzzle()
+
+ void (*begin_puzzle)(void *handle, float xm, float xc,
+ float ym, float yc, int pw, int ph, float wmm);
+
+This function is called during printing, just before printing a single
+puzzle on a page. It specifies the size and location of the puzzle on
+the page.
+
+`xm' and `xc' specify the horizontal position of the puzzle on the page,
+as a linear function of the page width. The front end is expected to
+multiply the page width by `xm', add `xc' (measured in millimetres), and
+use the resulting x-coordinate as the left edge of the puzzle.
+
+Similarly, `ym' and `yc' specify the vertical position of the puzzle as
+a function of the page height: the page height times `ym', plus `yc'
+millimetres, equals the desired distance from the top of the page to the
+top of the puzzle.
+
+(This unwieldy mechanism is required because not all printing systems
+can communicate the page size back to the software. The PostScript back
+end, for example, writes out PS which determines the page size at print
+time by means of calling `clippath', and centres the puzzles within
+that. Thus, exactly the same PS file works on A4 or on US Letter paper
+without needing local configuration, which simplifies matters.)
+
+pw and ph give the size of the puzzle in drawing API coordinates. The
+printing system will subsequently call the puzzle's own print function,
+which will in turn call drawing API functions in the expectation that an
+area pw by ph units is available to draw the puzzle on.
+
+Finally, wmm gives the desired width of the puzzle in millimetres. (The
+aspect ratio is expected to be preserved, so if the desired puzzle
+height is also needed then it can be computed as wmm*ph/pw.)
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.20. end_puzzle()
+
+ void (*end_puzzle)(void *handle);
+
+This function is called after the printing of a specific puzzle is
+complete.
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.21. end_page()
+
+ void (*end_page)(void *handle, int number);
+
+This function is called after the printing of a page is finished.
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.22. end_doc()
+
+ void (*end_doc)(void *handle);
+
+This function is called after the printing of the entire document is
+finished. This is the moment to close files, send things to the print
+spooler, or whatever the local convention is.
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.23. line_width()
+
+ void (*line_width)(void *handle, float width);
+
+This function is called to set the line thickness, during printing only.
+Note that the width is a float here, where it was an int as seen by the
+back end. This is because drawing.c may have scaled it on the way past.
+
+However, the width is still specified in the same coordinate system as
+the rest of the drawing.
+
+Implementations of this API which do not provide printing services may
+define this function pointer to be NULL; it will never be called unless
+printing is attempted.
+
+#3.2.24. text_fallback()
+
+ char *(*text_fallback)(void *handle, const char *const *strings,
+ int nstrings);
+
+This function behaves exactly like the back end text_fallback()
+function; see section 3.1.8.
+
+Implementations of this API which do not support any characters outside
+ASCII may define this function pointer to be NULL, in which case the
+central code in drawing.c will provide a default implementation.
+
+#3.3. The drawing API as called by the front end
+
+There are a small number of functions provided in drawing.c which the
+front end needs to _call_, rather than helping to implement. They are
+described in this section.
+
+#3.3.1. drawing_new()
+
+ drawing *drawing_new(const drawing_api *api, midend *me,
+ void *handle);
+
+This function creates a drawing object. It is passed a `drawing_api',
+which is a structure containing nothing but function pointers; and also
+a `void *' handle. The handle is passed back to each function pointer
+when it is called.
+
+The `midend' parameter is used for rewriting the status bar contents:
+status_bar() (see section 3.1.12) has to call a function in the mid-
+end which might rewrite the status bar text. If the drawing object
+is to be used only for printing, or if the game is known not to call
+status_bar(), this parameter may be NULL.
+
+#3.3.2. drawing_free()
+
+ void drawing_free(drawing *dr);
+
+This function frees a drawing object. Note that the `void *' handle is
+not freed; if that needs cleaning up it must be done by the front end.
+
+#3.3.3. print_get_colour()
+
+ void print_get_colour(drawing *dr, int colour, int printincolour,
+ int *hatch, float *r, float *g, float *b)
+
+This function is called by the implementations of the drawing API
+functions when they are called in a printing context. It takes a colour
+index as input, and returns the description of the colour as requested
+by the back end.
+
+`printincolour' is TRUE iff the implementation is printing in colour.
+This will alter the results returned if the colour in question was
+specified with a black-and-white fallback value.
+
+If the colour should be rendered by hatching, `*hatch' is filled with
+the type of hatching desired. See section 3.1.15 for details of the
+values this integer can take.
+
+If the colour should be rendered as solid colour, `*hatch' is given a
+negative value, and `*r', `*g' and `*b' are filled with the RGB values
+of the desired colour (if printing in colour), or all filled with the
+grey-scale value (if printing in black and white).
+
+#4. The API provided by the mid-end
+
+This chapter documents the API provided by the mid-end to be called by
+the front end. You probably only need to read this if you are a front
+end implementor, i.e. you are porting Puzzles to a new platform. If
+you're only interested in writing new puzzles, you can safely skip this
+chapter.
+
+All the persistent state in the mid-end is encapsulated within a
+`midend' structure, to facilitate having multiple mid-ends in any
+port which supports multiple puzzle windows open simultaneously. Each
+`midend' is intended to handle the contents of a single puzzle window.
+
+#4.1. midend_new()
+
+ midend *midend_new(frontend *fe, const game *ourgame,
+ const drawing_api *drapi, void *drhandle)
+
+Allocates and returns a new mid-end structure.
+
+The `fe' argument is stored in the mid-end. It will be used when calling
+back to functions such as activate_timer() (section 4.36), and will be
+passed on to the back end function colours() (section 2.8.6).
+
+The parameters `drapi' and `drhandle' are passed to drawing_new()
+(section 3.3.1) to construct a drawing object which will be passed to
+the back end function redraw() (section 2.8.10). Hence, all drawing-
+related function pointers defined in `drapi' can expect to be called
+with `drhandle' as their first argument.
+
+The `ourgame' argument points to a container structure describing a game
+back end. The mid-end thus created will only be capable of handling that
+one game. (So even in a monolithic front end containing all the games,
+this imposes the constraint that any individual puzzle window is tied to
+a single game. Unless, of course, you feel brave enough to change the
+mid-end for the window without closing the window...)
+
+#4.2. midend_free()
+
+ void midend_free(midend *me);
+
+Frees a mid-end structure and all its associated data.
+
+#4.3. midend_tilesize()
+
+ int midend_tilesize(midend *me);
+
+Returns the `tilesize' parameter being used to display the current
+puzzle (section 2.8.3).
+
+#4.4. midend_set_params()
+
+ void midend_set_params(midend *me, game_params *params);
+
+Sets the current game parameters for a mid-end. Subsequent games
+generated by midend_new_game() (section 4.8) will use these parameters
+until further notice.
+
+The usual way in which the front end will have an actual `game_params'
+structure to pass to this function is if it had previously got it from
+midend_get_presets() (section 4.15). Thus, this function is usually
+called in response to the user making a selection from the presets menu.
+
+#4.5. midend_get_params()
+
+ game_params *midend_get_params(midend *me);
+
+Returns the current game parameters stored in this mid-end.
+
+The returned value is dynamically allocated, and should be freed when
+finished with by passing it to the game's own free_params() function
+(see section 2.3.6).
+
+#4.6. midend_size()
+
+ void midend_size(midend *me, int *x, int *y, int user_size);
+
+Tells the mid-end to figure out its window size.
+
+On input, `*x' and `*y' should contain the maximum or requested size
+for the window. (Typically this will be the size of the screen that the
+window has to fit on, or similar.) The mid-end will repeatedly call the
+back end function compute_size() (section 2.8.4), searching for a tile
+size that best satisfies the requirements. On exit, `*x' and `*y' will
+contain the size needed for the puzzle window's drawing area. (It is
+of course up to the front end to adjust this for any additional window
+furniture such as menu bars and window borders, if necessary. The status
+bar is also not included in this size.)
+
+Use `user_size' to indicate whether `*x' and `*y' are a requested size,
+or just a maximum size.
+
+If `user_size' is set to TRUE, the mid-end will treat the input size as
+a request, and will pick a tile size which approximates it _as closely
+as possible_, going over the game's preferred tile size if necessary to
+achieve this. The mid-end will also use the resulting tile size as its
+preferred one until further notice, on the assumption that this size was
+explicitly requested by the user. Use this option if you want your front
+end to support dynamic resizing of the puzzle window with automatic
+scaling of the puzzle to fit.
+
+If `user_size' is set to FALSE, then the game's tile size will never go
+over its preferred one, although it may go under in order to fit within
+the maximum bounds specified by `*x' and `*y'. This is the recommended
+approach when opening a new window at default size: the game will use
+its preferred size unless it has to use a smaller one to fit on the
+screen. If the tile size is shrunk for this reason, the change will not
+persist; if a smaller grid is subsequently chosen, the tile size will
+recover.
+
+The mid-end will try as hard as it can to return a size which is
+less than or equal to the input size, in both dimensions. In extreme
+circumstances it may fail (if even the lowest possible tile size gives
+window dimensions greater than the input), in which case it will return
+a size greater than the input size. Front ends should be prepared
+for this to happen (i.e. don't crash or fail an assertion), but may
+handle it in any way they see fit: by rejecting the game parameters
+which caused the problem, by opening a window larger than the screen
+regardless of inconvenience, by introducing scroll bars on the window,
+by drawing on a large bitmap and scaling it into a smaller window, or by
+any other means you can think of. It is likely that when the tile size
+is that small the game will be unplayable anyway, so don't put _too_
+much effort into handling it creatively.
+
+If your platform has no limit on window size (or if you're planning to
+use scroll bars for large puzzles), you can pass dimensions of INT_MAX
+as input to this function. You should probably not do that _and_ set the
+`user_size' flag, though!
+
+The midend relies on the frontend calling midend_new_game() (section
+4.8) before calling midend_size().
+
+#4.7. midend_reset_tilesize()
+
+ void midend_reset_tilesize(midend *me);
+
+This function resets the midend's preferred tile size to that of the
+standard puzzle.
+
+As discussed in section 4.6, puzzle resizes are typically 'sticky',
+in that once the user has dragged the puzzle to a different window
+size, the resulting tile size will be remembered and used when the
+puzzle configuration changes. If you _don't_ want that, e.g. if you
+want to provide a command to explicitly reset the puzzle size back to
+its default, then you can call this just before calling midend_size()
+(which, in turn, you would probably call with `user_size' set to FALSE).
+
+#4.8. midend_new_game()
+
+ void midend_new_game(midend *me);
+
+Causes the mid-end to begin a new game. Normally the game will be a
+new randomly generated puzzle. However, if you have previously called
+midend_game_id() or midend_set_config(), the game generated might be
+dictated by the results of those functions. (In particular, you _must_
+call midend_new_game() after calling either of those functions, or else
+no immediate effect will be visible.)
+
+You will probably need to call midend_size() after calling this
+function, because if the game parameters have been changed since the
+last new game then the window size might need to change. (If you know
+the parameters _haven't_ changed, you don't need to do this.)
+
+This function will create a new `game_drawstate', but does not actually
+perform a redraw (since you often need to call midend_size() before
+the redraw can be done). So after calling this function and after
+calling midend_size(), you should then call midend_redraw(). (It is not
+necessary to call midend_force_redraw(); that will discard the draw
+state and create a fresh one, which is unnecessary in this case since
+there's a fresh one already. It would work, but it's usually excessive.)
+
+#4.9. midend_restart_game()
+
+ void midend_restart_game(midend *me);
+
+This function causes the current game to be restarted. This is done by
+placing a new copy of the original game state on the end of the undo
+list (so that an accidental restart can be undone).
+
+This function automatically causes a redraw, i.e. the front end can
+expect its drawing API to be called from _within_ a call to this
+function. Some back ends require that midend_size() (section 4.6) is
+called before midend_restart_game().
+
+#4.10. midend_force_redraw()
+
+ void midend_force_redraw(midend *me);
+
+Forces a complete redraw of the puzzle window, by means of discarding
+the current `game_drawstate' and creating a new one from scratch before
+calling the game's redraw() function.
+
+The front end can expect its drawing API to be called from within a call
+to this function. Some back ends require that midend_size() (section
+4.6) is called before midend_force_redraw().
+
+#4.11. midend_redraw()
+
+ void midend_redraw(midend *me);
+
+Causes a partial redraw of the puzzle window, by means of simply calling
+the game's redraw() function. (That is, the only things redrawn will be
+things that have changed since the last redraw.)
+
+The front end can expect its drawing API to be called from within a call
+to this function. Some back ends require that midend_size() (section
+4.6) is called before midend_redraw().
+
+#4.12. midend_process_key()
+
+ int midend_process_key(midend *me, int x, int y, int button);
+
+The front end calls this function to report a mouse or keyboard event.
+The parameters `x', `y' and `button' are almost identical to the ones
+passed to the back end function interpret_move() (section 2.7.1), except
+that the front end is _not_ required to provide the guarantees about
+mouse event ordering. The mid-end will sort out multiple simultaneous
+button presses and changes of button; the front end's responsibility
+is simply to pass on the mouse events it receives as accurately as
+possible.
+
+(Some platforms may need to emulate absent mouse buttons by means of
+using a modifier key such as Shift with another mouse button. This tends
+to mean that if Shift is pressed or released in the middle of a mouse
+drag, the mid-end will suddenly stop receiving, say, LEFT_DRAG events
+and start receiving RIGHT_DRAGs, with no intervening button release or
+press events. This too is something which the mid-end will sort out for
+you; the front end has no obligation to maintain sanity in this area.)
+
+The front end _should_, however, always eventually send some kind of
+button release. On some platforms this requires special effort: Windows,
+for example, requires a call to the system API function SetCapture() in
+order to ensure that your window receives a mouse-up event even if the
+pointer has left the window by the time the mouse button is released.
+On any platform that requires this sort of thing, the front end _is_
+responsible for doing it.
+
+Calling this function is very likely to result in calls back to the
+front end's drawing API and/or activate_timer() (section 4.36).
+
+The return value from midend_process_key() is non-zero, unless the
+effect of the keypress was to request termination of the program. A
+front end should shut down the puzzle in response to a zero return.
+
+#4.13. midend_colours()
+
+ float *midend_colours(midend *me, int *ncolours);
+
+Returns an array of the colours required by the game, in exactly
+the same format as that returned by the back end function colours()
+(section 2.8.6). Front ends should call this function rather than
+calling the back end's version directly, since the mid-end adds standard
+customisation facilities. (At the time of writing, those customisation
+facilities are implemented hackily by means of environment variables,
+but it's not impossible that they may become more full and formal in
+future.)
+
+#4.14. midend_timer()
+
+ void midend_timer(midend *me, float tplus);
+
+If the mid-end has called activate_timer() (section 4.36) to request
+regular callbacks for purposes of animation or timing, this is the
+function the front end should call on a regular basis. The argument
+`tplus' gives the time, in seconds, since the last time either this
+function was called or activate_timer() was invoked.
+
+One of the major purposes of timing in the mid-end is to perform move
+animation. Therefore, calling this function is very likely to result in
+calls back to the front end's drawing API.
+
+#4.15. midend_get_presets()
+
+ struct preset_menu *midend_get_presets(midend *me, int *id_limit);
+
+Returns a data structure describing this game's collection of preset
+game parameters, organised into a hierarchical structure of menus and
+submenus.
+
+The return value is a pointer to a data structure containing the
+following fields (among others, which are not intended for front end
+use):
+
+ struct preset_menu {
+ int n_entries;
+ struct preset_menu_entry *entries;
+ /* and other things */
+ };
+
+Those fields describe the intended contents of one particular menu in
+the hierarchy. `entries' points to an array of `n_entries' items, each
+of which is a structure containing the following fields:
+
+ struct preset_menu_entry {
+ char *title;
+ game_params *params;
+ struct preset_menu *submenu;
+ int id;
+ };
+
+Of these fields, `title' and `id' are present in every entry, giving
+(respectively) the textual name of the menu item and an integer
+identifier for it. The integer id will correspond to the one returned
+by `midend_which_preset' (section 4.16), when that preset is the one
+selected.
+
+The other two fields are mutually exclusive. Each
+`struct preset_menu_entry' will have one of those fields NULL and the
+other one non-null. If the menu item is an actual preset, then `params'
+will point to the set of game parameters that go with the name; if it's
+a submenu, then `submenu' instead will be non-null, and will point at a
+subsidiary `struct preset_menu'.
+
+The complete hierarchy of these structures is owned by the mid-end,
+and will be freed when the mid-end is freed. The front end should not
+attempt to free any of it.
+
+The integer identifiers will be allocated densely from 0 upwards, so
+that it's reasonable for the front end to allocate an array which uses
+them as indices, if it needs to store information per preset menu item.
+For this purpose, the front end may pass the second parameter `id_limit'
+to midend_get_presets as the address of an `int' variable, into which
+midend_get_presets will write an integer one larger than the largest id
+number actually used (i.e. the number of elements the front end would
+need in the array).
+
+Submenu-type entries also have integer identifiers.
+
+#4.16. midend_which_preset()
+
+ int midend_which_preset(midend *me);
+
+Returns the numeric index of the preset game parameter structure which
+matches the current game parameters, or a negative number if no preset
+matches. Front ends could use this to maintain a tick beside one of the
+items in the menu (or tick the `Custom' option if the return value is
+less than zero).
+
+The returned index value (if non-negative) will match the `id'
+field of the corresponding struct preset_menu_entry returned by
+`midend_get_presets()' (section 4.15).
+
+#4.17. midend_wants_statusbar()
+
+ int midend_wants_statusbar(midend *me);
+
+This function returns TRUE if the puzzle has a use for a textual status
+line (to display score, completion status, currently active tiles, time,
+or anything else).
+
+Front ends should call this function rather than talking directly to the
+back end.
+
+#4.18. midend_get_config()
+
+ config_item *midend_get_config(midend *me, int which,
+ char **wintitle);
+
+Returns a dialog box description for user configuration.
+
+On input, which should be set to one of three values, which select which
+of the various dialog box descriptions is returned:
+
+CFG_SETTINGS
+
+ Requests the GUI parameter configuration box generated by the puzzle
+ itself. This should be used when the user selects `Custom' from the
+ game types menu (or equivalent). The mid-end passes this request on
+ to the back end function configure() (section 2.3.9).
+
+CFG_DESC
+
+ Requests a box suitable for entering a descriptive game ID (and
+ viewing the existing one). The mid-end generates this dialog box
+ description itself. This should be used when the user selects
+ `Specific' from the game menu (or equivalent).
+
+CFG_SEED
+
+ Requests a box suitable for entering a random-seed game ID (and
+ viewing the existing one). The mid-end generates this dialog box
+ description itself. This should be used when the user selects
+ `Random Seed' from the game menu (or equivalent).
+
+The returned value is an array of config_items, exactly as described
+in section 2.3.9. Another returned value is an ASCII string giving a
+suitable title for the configuration window, in `*wintitle'.
+
+Both returned values are dynamically allocated and will need to be
+freed. The window title can be freed in the obvious way; the config_item
+array is a slightly complex structure, so a utility function free_cfg()
+is provided to free it for you. See section 5.3.6.
+
+(Of course, you will probably not want to free the config_item array
+until the dialog box is dismissed, because before then you will probably
+need to pass it to midend_set_config.)
+
+#4.19. midend_set_config()
+
+ const char *midend_set_config(midend *me, int which,
+ config_item *cfg);
+
+Passes the mid-end the results of a configuration dialog box. `which'
+should have the same value which it had when midend_get_config() was
+called; `cfg' should be the array of `config_item's returned from
+midend_get_config(), modified to contain the results of the user's
+editing operations.
+
+This function returns NULL on success, or otherwise (if the
+configuration data was in some way invalid) an ASCII string containing
+an error message suitable for showing to the user.
+
+If the function succeeds, it is likely that the game parameters will
+have been changed and it is certain that a new game will be requested.
+The front end should therefore call midend_new_game(), and probably also
+re-think the window size using midend_size() and eventually perform a
+refresh using midend_redraw().
+
+#4.20. midend_game_id()
+
+ const char *midend_game_id(midend *me, const char *id);
+
+Passes the mid-end a string game ID (of any of the valid forms `params',
+`params:description' or `params#seed') which the mid-end will process
+and use for the next generated game.
+
+This function returns NULL on success, or otherwise (if the
+configuration data was in some way invalid) an ASCII string containing
+an error message (not dynamically allocated) suitable for showing to the
+user. In the event of an error, the mid-end's internal state will be
+left exactly as it was before the call.
+
+If the function succeeds, it is likely that the game parameters will
+have been changed and it is certain that a new game will be requested.
+The front end should therefore call midend_new_game(), and probably
+also re-think the window size using midend_size() and eventually case a
+refresh using midend_redraw().
+
+#4.21. midend_get_game_id()
+
+ char *midend_get_game_id(midend *me)
+
+Returns a descriptive game ID (i.e. one in the form
+`params:description') describing the game currently active in the mid-
+end. The returned string is dynamically allocated.
+
+#4.22. midend_get_random_seed()
+
+ char *midend_get_random_seed(midend *me)
+
+Returns a random game ID (i.e. one in the form `params#seedstring')
+describing the game currently active in the mid-end, if there is one.
+If the game was created by entering a description, no random seed will
+currently exist and this function will return NULL.
+
+The returned string, if it is non-NULL, is dynamically allocated.
+
+#4.23. midend_can_format_as_text_now()
+
+ int midend_can_format_as_text_now(midend *me);
+
+Returns TRUE if the game code is capable of formatting puzzles of the
+currently selected game type as ASCII.
+
+If this returns FALSE, then midend_text_format() (section 4.24) will
+return NULL.
+
+#4.24. midend_text_format()
+
+ char *midend_text_format(midend *me);
+
+Formats the current game's current state as ASCII text suitable for
+copying to the clipboard. The returned string is dynamically allocated.
+
+If the game's `can_format_as_text_ever' flag is FALSE, or if its
+can_format_as_text_now() function returns FALSE, then this function will
+return NULL.
+
+If the returned string contains multiple lines (which is likely), it
+will use the normal C line ending convention (\n only). On platforms
+which use a different line ending convention for data in the clipboard,
+it is the front end's responsibility to perform the conversion.
+
+#4.25. midend_solve()
+
+ const char *midend_solve(midend *me);
+
+Requests the mid-end to perform a Solve operation.
+
+On success, NULL is returned. On failure, an error message (not
+dynamically allocated) is returned, suitable for showing to the user.
+
+The front end can expect its drawing API and/or activate_timer() to be
+called from within a call to this function. Some back ends require that
+midend_size() (section 4.6) is called before midend_solve().
+
+#4.26. midend_status()
+
+ int midend_status(midend *me);
+
+This function returns +1 if the midend is currently displaying a game
+in a solved state, -1 if the game is in a permanently lost state, or 0
+otherwise. This function just calls the back end's status() function.
+Front ends may wish to use this as a cue to proactively offer the option
+of starting a new game.
+
+(See section 2.8.9 for more detail about the back end's status()
+function and discussion of what should count as which status code.)
+
+#4.27. midend_can_undo()
+
+ int midend_can_undo(midend *me);
+
+Returns TRUE if the midend is currently in a state where the undo
+operation is meaningful (i.e. at least one position exists on the undo
+chain before the present one). Front ends may wish to use this to
+visually activate and deactivate an undo button.
+
+#4.28. midend_can_redo()
+
+ int midend_can_redo(midend *me);
+
+Returns TRUE if the midend is currently in a state where the redo
+operation is meaningful (i.e. at least one position exists on the
+redo chain after the present one). Front ends may wish to use this to
+visually activate and deactivate a redo button.
+
+#4.29. midend_serialise()
+
+ void midend_serialise(midend *me,
+ void (*write)(void *ctx, const void *buf, int len), void *wctx);
+
+Calling this function causes the mid-end to convert its entire internal
+state into a long ASCII text string, and to pass that string (piece by
+piece) to the supplied `write' function.
+
+Desktop implementations can use this function to save a game in any
+state (including half-finished) to a disk file, by supplying a `write'
+function which is a wrapper on fwrite() (or local equivalent). Other
+implementations may find other uses for it, such as compressing the
+large and sprawling mid-end state into a manageable amount of memory
+when a palmtop application is suspended so that another one can run; in
+this case write might want to write to a memory buffer rather than a
+file. There may be other uses for it as well.
+
+This function will call back to the supplied `write' function a number
+of times, with the first parameter (`ctx') equal to `wctx', and the
+other two parameters pointing at a piece of the output string.
+
+#4.30. midend_deserialise()
+
+ const char *midend_deserialise(midend *me,
+ int (*read)(void *ctx, void *buf, int len), void *rctx);
+
+This function is the counterpart to midend_serialise(). It calls the
+supplied read function repeatedly to read a quantity of data, and
+attempts to interpret that data as a serialised mid-end as output by
+midend_serialise().
+
+The read function is called with the first parameter (`ctx') equal
+to `rctx', and should attempt to read `len' bytes of data into the
+buffer pointed to by `buf'. It should return FALSE on failure or TRUE
+on success. It should not report success unless it has filled the
+entire buffer; on platforms which might be reading from a pipe or other
+blocking data source, `read' is responsible for looping until the whole
+buffer has been filled.
+
+If the de-serialisation operation is successful, the mid-end's internal
+data structures will be replaced by the results of the load, and NULL
+will be returned. Otherwise, the mid-end's state will be completely
+unchanged and an error message (typically some variation on `save file
+is corrupt') will be returned. As usual, the error message string is not
+dynamically allocated.
+
+If this function succeeds, it is likely that the game parameters will
+have been changed. The front end should therefore probably re-think the
+window size using midend_size(), and probably cause a refresh using
+midend_redraw().
+
+Because each mid-end is tied to a specific game back end, this function
+will fail if you attempt to read in a save file generated by a different
+game from the one configured in this mid-end, even if your application
+is a monolithic one containing all the puzzles. See section 4.31 for a
+helper function which will allow you to identify a save file before you
+instantiate your mid-end in the first place.
+
+#4.31. identify_game()
+
+ const char *identify_game(char **name,
+ int (*read)(void *ctx, void *buf, int len), void *rctx);
+
+This function examines a serialised midend stream, of the same kind used
+by midend_serialise() and midend_deserialise(), and returns the name
+field of the game back end from which it was saved.
+
+You might want this if your front end was a monolithic one containing
+all the puzzles, and you wanted to be able to load an arbitrary save
+file and automatically switch to the right game. Probably your next step
+would be to iterate through gamelist (section 4.33) looking for a game
+structure whose name field matched the returned string, and give an
+error if you didn't find one.
+
+On success, the return value of this function is NULL, and the game name
+string is written into *name. The caller should free that string after
+using it.
+
+On failure, *name is NULL, and the return value is an error message
+(which does not need freeing at all).
+
+(This isn't strictly speaking a midend function, since it doesn't accept
+or return a pointer to a midend. You'd probably call it just _before_
+deciding what kind of midend you wanted to instantiate.)
+
+#4.32. midend_request_id_changes()
+
+ void midend_request_id_changes(midend *me,
+ void (*notify)(void *), void *ctx);
+
+This function is called by the front end to request notification by the
+mid-end when the current game IDs (either descriptive or random-seed)
+change. This can occur as a result of keypresses ('n' for New Game, for
+example) or when a puzzle supersedes its game description (see section
+2.11.2). After this function is called, any change of the game ids will
+cause the mid-end to call notify(ctx) after the change.
+
+This is for use by puzzles which want to present the game description to
+the user constantly (e.g. as an HTML hyperlink) instead of only showing
+it when the user explicitly requests it.
+
+This is a function I anticipate few front ends needing to implement, so
+I make it a callback rather than a static function in order to relieve
+most front ends of the need to provide an empty implementation.
+
+#4.33. Direct reference to the back end structure by the front end
+
+Although _most_ things the front end needs done should be done by
+calling the mid-end, there are a few situations in which the front end
+needs to refer directly to the game back end structure.
+
+The most obvious of these is
+
+ - passing the game back end as a parameter to midend_new().
+
+There are a few other back end features which are not wrapped by the
+mid-end because there didn't seem much point in doing so:
+
+ - fetching the `name' field to use in window titles and similar
+
+ - reading the `can_configure', `can_solve' and
+ `can_format_as_text_ever' fields to decide whether to add those
+ items to the menu bar or equivalent
+
+ - reading the `winhelp_topic' field (Windows only)
+
+ - the GTK front end provides a `--generate' command-line option which
+ directly calls the back end to do most of its work. This is not
+ really part of the main front end code, though, and I'm not sure it
+ counts.
+
+In order to find the game back end structure, the front end does one of
+two things:
+
+ - If the particular front end is compiling a separate binary per game,
+ then the back end structure is a global variable with the standard
+ name `thegame':
+
+ extern const game thegame;
+
+ - If the front end is compiled as a monolithic application containing
+ all the puzzles together (in which case the preprocessor symbol
+ COMBINED must be defined when compiling most of the code base), then
+ there will be two global variables defined:
+
+ extern const game *gamelist[];
+ extern const int gamecount;
+
+ `gamelist' will be an array of `gamecount' game structures, declared
+ in the automatically constructed source module `list.c'. The
+ application should search that array for the game it wants, probably
+ by reaching into each game structure and looking at its `name'
+ field.
+
+#4.34. Mid-end to front-end calls
+
+This section describes the small number of functions which a front end
+must provide to be called by the mid-end or other standard utility
+modules.
+
+#4.35. get_random_seed()
+
+ void get_random_seed(void **randseed, int *randseedsize);
+
+This function is called by a new mid-end, and also occasionally by game
+back ends. Its job is to return a piece of data suitable for using as a
+seed for initialisation of a new `random_state'.
+
+On exit, `*randseed' should be set to point at a newly allocated piece
+of memory containing some seed data, and `*randseedsize' should be set
+to the length of that data.
+
+A simple and entirely adequate implementation is to return a piece of
+data containing the current system time at the highest conveniently
+available resolution.
+
+#4.36. activate_timer()
+
+ void activate_timer(frontend *fe);
+
+This is called by the mid-end to request that the front end begin
+calling it back at regular intervals.
+
+The timeout interval is left up to the front end; the finer it is, the
+smoother move animations will be, but the more CPU time will be used.
+Current front ends use values around 20ms (i.e. 50Hz).
+
+After this function is called, the mid-end will expect to receive calls
+to midend_timer() on a regular basis.
+
+#4.37. deactivate_timer()
+
+ void deactivate_timer(frontend *fe);
+
+This is called by the mid-end to request that the front end stop calling
+midend_timer().
+
+#4.38. fatal()
+
+ void fatal(const char *fmt, ...);
+
+This is called by some utility functions if they encounter a genuinely
+fatal error such as running out of memory. It is a variadic function
+in the style of printf(), and is expected to show the formatted error
+message to the user any way it can and then terminate the application.
+It must not return.
+
+#4.39. frontend_default_colour()
+
+ void frontend_default_colour(frontend *fe, float *output);
+
+This function expects to be passed a pointer to an array of three
+floats. It returns the platform's local preferred background colour
+in those three floats, as red, green and blue values (in that order)
+ranging from 0.0 to 1.0.
+
+This function should only ever be called by the back end function
+colours() (section 2.8.6). (Thus, it isn't a _midend_-to-frontend
+function as such, but there didn't seem to be anywhere else particularly
+good to put it. Sorry.)
+
+#5. Utility APIs
+
+This chapter documents a variety of utility APIs provided for the
+general use of the rest of the Puzzles code.
+
+#5.1. Random number generation
+
+Platforms' local random number generators vary widely in quality and
+seed size. Puzzles therefore supplies its own high-quality random number
+generator, with the additional advantage of giving the same results if
+fed the same seed data on different platforms. This allows game random
+seeds to be exchanged between different ports of Puzzles and still
+generate the same games.
+
+Unlike the ANSI C rand() function, the Puzzles random number generator
+has an _explicit_ state object called a `random_state'. One of these
+is managed by each mid-end, for example, and passed to the back end to
+generate a game with.
+
+#5.1.1. random_new()
+
+ random_state *random_new(char *seed, int len);
+
+Allocates, initialises and returns a new `random_state'. The input data
+is used as the seed for the random number stream (i.e. using the same
+seed at a later time will generate the same stream).
+
+The seed data can be any data at all; there is no requirement to use
+printable ASCII, or NUL-terminated strings, or anything like that.
+
+#5.1.2. random_copy()
+
+ random_state *random_copy(random_state *tocopy);
+
+Allocates a new `random_state', copies the contents of another
+`random_state' into it, and returns the new state. If exactly the
+same sequence of functions is subseqently called on both the copy and
+the original, the results will be identical. This may be useful for
+speculatively performing some operation using a given random state, and
+later replaying that operation precisely.
+
+#5.1.3. random_free()
+
+ void random_free(random_state *state);
+
+Frees a `random_state'.
+
+#5.1.4. random_bits()
+
+ unsigned long random_bits(random_state *state, int bits);
+
+Returns a random number from 0 to 2^bits-1 inclusive. `bits' should be
+between 1 and 32 inclusive.
+
+#5.1.5. random_upto()
+
+ unsigned long random_upto(random_state *state, unsigned long limit);
+
+Returns a random number from 0 to limit-1 inclusive.
+
+#5.1.6. random_state_encode()
+
+ char *random_state_encode(random_state *state);
+
+Encodes the entire contents of a `random_state' in printable ASCII.
+Returns a dynamically allocated string containing that encoding. This
+can subsequently be passed to random_state_decode() to reconstruct the
+same `random_state'.
+
+#5.1.7. random_state_decode()
+
+ random_state *random_state_decode(char *input);
+
+Decodes a string generated by random_state_encode() and reconstructs an
+equivalent `random_state' to the one encoded, i.e. it should produce the
+same stream of random numbers.
+
+This function has no error reporting; if you pass it an invalid string
+it will simply generate an arbitrary random state, which may turn out to
+be noticeably non-random.
+
+#5.1.8. shuffle()
+
+ void shuffle(void *array, int nelts, int eltsize, random_state *rs);
+
+Shuffles an array into a random order. The interface is much like ANSI C
+qsort(), except that there's no need for a compare function.
+
+`array' is a pointer to the first element of the array. `nelts' is the
+number of elements in the array; `eltsize' is the size of a single
+element (typically measured using `sizeof'). `rs' is a `random_state'
+used to generate all the random numbers for the shuffling process.
+
+#5.2. Presets menu management
+
+The function `midend_get_presets()' (section 4.15) returns a data
+structure describing a menu hierarchy. Back ends can also choose to
+provide such a structure to the mid-end, if they want to group their
+presets hierarchically. To make this easy, there are a few utility
+functions to construct preset menu structures, and also one intended for
+front-end use.
+
+#5.2.1. preset_menu_new()
+
+ struct preset_menu *preset_menu_new(void);
+
+Allocates a new `struct preset_menu', and initialises it to hold no menu
+items.
+
+#5.2.2. preset_menu_add_submenu()
+
+ struct preset_menu *preset_menu_add_submenu
+ (struct preset_menu *parent, char *title);
+
+Adds a new submenu to the end of an existing preset menu, and returns
+a pointer to a newly allocated `struct preset_menu' describing the
+submenu.
+
+The string parameter `title' must be dynamically allocated by the
+caller. The preset-menu structure will take ownership of it, so the
+caller must not free it.
+
+#5.2.3. preset_menu_add_preset()
+
+ void preset_menu_add_preset
+ (struct preset_menu *menu, char *title, game_params *params);
+
+Adds a preset game configuration to the end of a preset menu.
+
+Both the string parameter `title' and the game parameter structure
+`params' itself must be dynamically allocated by the caller. The preset-
+menu structure will take ownership of it, so the caller must not free
+it.
+
+#5.2.4. preset_menu_lookup_by_id()
+
+ game_params *preset_menu_lookup_by_id
+ (struct preset_menu *menu, int id);
+
+Given a numeric index, searches recursively through a preset menu
+hierarchy to find the corresponding menu entry, and returns a pointer to
+its existing `game_params' structure.
+
+This function is intended for front end use (but front ends need not use
+it if they prefer to do things another way). If a front end finds it
+inconvenient to store anything more than a numeric index alongside each
+menu item, then this function provides an easy way for the front end to
+get back the actual game parameters corresponding to a menu item that
+the user has selected.
+
+#5.3. Memory allocation
+
+Puzzles has some central wrappers on the standard memory allocation
+functions, which provide compile-time type checking, and run-time error
+checking by means of quitting the application if it runs out of memory.
+This doesn't provide the best possible recovery from memory shortage,
+but on the other hand it greatly simplifies the rest of the code,
+because nothing else anywhere needs to worry about NULL returns from
+allocation.
+
+#5.3.1. snew()
+
+ var = snew(type);
+
+This macro takes a single argument which is a _type name_. It allocates
+space for one object of that type. If allocation fails it will call
+fatal() and not return; so if it does return, you can be confident that
+its return value is non-NULL.
+
+The return value is cast to the specified type, so that the compiler
+will type-check it against the variable you assign it into. Thus, this
+ensures you don't accidentally allocate memory the size of the wrong
+type and assign it into a variable of the right one (or vice versa!).
+
+#5.3.2. snewn()
+
+ var = snewn(n, type);
+
+This macro is the array form of snew(). It takes two arguments; the
+first is a number, and the second is a type name. It allocates space
+for that many objects of that type, and returns a type-checked non-NULL
+pointer just as snew() does.
+
+#5.3.3. sresize()
+
+ var = sresize(var, n, type);
+
+This macro is a type-checked form of realloc(). It takes three
+arguments: an input memory block, a new size in elements, and a type.
+It re-sizes the input memory block to a size sufficient to contain that
+many elements of that type. It returns a type-checked non-NULL pointer,
+like snew() and snewn().
+
+The input memory block can be NULL, in which case this function will
+behave exactly like snewn(). (In principle any ANSI-compliant realloc()
+implementation ought to cope with this, but I've never quite trusted it
+to work everywhere.)
+
+#5.3.4. sfree()
+
+ void sfree(void *p);
+
+This function is pretty much equivalent to free(). It is provided with a
+dynamically allocated block, and frees it.
+
+The input memory block can be NULL, in which case this function will do
+nothing. (In principle any ANSI-compliant free() implementation ought to
+cope with this, but I've never quite trusted it to work everywhere.)
+
+#5.3.5. dupstr()
+
+ char *dupstr(const char *s);
+
+This function dynamically allocates a duplicate of a C string. Like the
+snew() functions, it guarantees to return non-NULL or not return at all.
+
+(Many platforms provide the function strdup(). As well as guaranteeing
+never to return NULL, my version has the advantage of being defined
+_everywhere_, rather than inconveniently not quite everywhere.)
+
+#5.3.6. free_cfg()
+
+ void free_cfg(config_item *cfg);
+
+This function correctly frees an array of `config_item's, including
+walking the array until it gets to the end and freeing any subsidiary
+data items in each `u' sub-union which are expected to be dynamically
+allocated.
+
+(See section 2.3.9 for details of the `config_item' structure.)
+
+#5.4. Sorted and counted tree functions
+
+Many games require complex algorithms for generating random puzzles, and
+some require moderately complex algorithms even during play. A common
+requirement during these algorithms is for a means of maintaining sorted
+or unsorted lists of items, such that items can be removed and added
+conveniently.
+
+For general use, Puzzles provides the following set of functions which
+maintain 2-3-4 trees in memory. (A 2-3-4 tree is a balanced tree
+structure, with the property that all lookups, insertions, deletions,
+splits and joins can be done in O(log N) time.)
+
+All these functions expect you to be storing a tree of `void *'
+pointers. You can put anything you like in those pointers.
+
+By the use of per-node element counts, these tree structures have the
+slightly unusual ability to look elements up by their numeric index
+within the list represented by the tree. This means that they can be
+used to store an unsorted list (in which case, every time you insert a
+new element, you must explicitly specify the position where you wish to
+insert it). They can also do numeric lookups in a sorted tree, which
+might be useful for (for example) tracking the median of a changing data
+set.
+
+As well as storing sorted lists, these functions can be used for storing
+`maps' (associative arrays), by defining each element of a tree to be a
+(key, value) pair.
+
+#5.4.1. newtree234()
+
+ tree234 *newtree234(cmpfn234 cmp);
+
+Creates a new empty tree, and returns a pointer to it.
+
+The parameter `cmp' determines the sorting criterion on the tree. Its
+prototype is
+
+ typedef int (*cmpfn234)(void *, void *);
+
+If you want a sorted tree, you should provide a function matching this
+prototype, which returns like strcmp() does (negative if the first
+argument is smaller than the second, positive if it is bigger, zero if
+they compare equal). In this case, the function addpos234() will not be
+usable on your tree (because all insertions must respect the sorting
+order).
+
+If you want an unsorted tree, pass NULL. In this case you will not be
+able to use either add234() or del234(), or any other function such
+as find234() which depends on a sorting order. Your tree will become
+something more like an array, except that it will efficiently support
+insertion and deletion as well as lookups by numeric index.
+
+#5.4.2. freetree234()
+
+ void freetree234(tree234 *t);
+
+Frees a tree. This function will not free the _elements_ of the tree
+(because they might not be dynamically allocated, or you might be
+storing the same set of elements in more than one tree); it will just
+free the tree structure itself. If you want to free all the elements of
+a tree, you should empty it before passing it to freetree234(), by means
+of code along the lines of
+
+ while ((element = delpos234(tree, 0)) != NULL)
+ sfree(element); /* or some more complicated free function */
+
+#5.4.3. add234()
+
+ void *add234(tree234 *t, void *e);
+
+Inserts a new element `e' into the tree `t'. This function expects the
+tree to be sorted; the new element is inserted according to the sort
+order.
+
+If an element comparing equal to `e' is already in the tree, then the
+insertion will fail, and the return value will be the existing element.
+Otherwise, the insertion succeeds, and `e' is returned.
+
+#5.4.4. addpos234()
+
+ void *addpos234(tree234 *t, void *e, int index);
+
+Inserts a new element into an unsorted tree. Since there is no sorting
+order to dictate where the new element goes, you must specify where you
+want it to go. Setting `index' to zero puts the new element right at the
+start of the list; setting `index' to the current number of elements in
+the tree puts the new element at the end.
+
+Return value is `e', in line with add234() (although this function
+cannot fail except by running out of memory, in which case it will bomb
+out and die rather than returning an error indication).
+
+#5.4.5. index234()
+
+ void *index234(tree234 *t, int index);
+
+Returns a pointer to the `index'th element of the tree, or NULL if
+`index' is out of range. Elements of the tree are numbered from zero.
+
+#5.4.6. find234()
+
+ void *find234(tree234 *t, void *e, cmpfn234 cmp);
+
+Searches for an element comparing equal to `e' in a sorted tree.
+
+If `cmp' is NULL, the tree's ordinary comparison function will be used
+to perform the search. However, sometimes you don't want that; suppose,
+for example, each of your elements is a big structure containing a
+`char *' name field, and you want to find the element with a given name.
+You _could_ achieve this by constructing a fake element structure,
+setting its name field appropriately, and passing it to find234(),
+but you might find it more convenient to pass _just_ a name string to
+find234(), supplying an alternative comparison function which expects
+one of its arguments to be a bare name and the other to be a large
+structure containing a name field.
+
+Therefore, if `cmp' is not NULL, then it will be used to compare `e' to
+elements of the tree. The first argument passed to `cmp' will always be
+`e'; the second will be an element of the tree.
+
+(See section 5.4.1 for the definition of the `cmpfn234' function pointer
+type.)
+
+The returned value is the element found, or NULL if the search is
+unsuccessful.
+
+#5.4.7. findrel234()
+
+ void *findrel234(tree234 *t, void *e, cmpfn234 cmp, int relation);
+
+This function is like find234(), but has the additional ability to do a
+_relative_ search. The additional parameter `relation' can be one of the
+following values:
+
+REL234_EQ
+
+ Find only an element that compares equal to `e'. This is exactly the
+ behaviour of find234().
+
+REL234_LT
+
+ Find the greatest element that compares strictly less than `e'. `e'
+ may be NULL, in which case it finds the greatest element in the
+ whole tree (which could also be done by index234(t, count234(t)-1)).
+
+REL234_LE
+
+ Find the greatest element that compares less than or equal to `e'.
+ (That is, find an element that compares equal to `e' if possible,
+ but failing that settle for something just less than it.)
+
+REL234_GT
+
+ Find the smallest element that compares strictly greater than `e'.
+ `e' may be NULL, in which case it finds the smallest element in the
+ whole tree (which could also be done by index234(t, 0)).
+
+REL234_GE
+
+ Find the smallest element that compares greater than or equal
+ to `e'. (That is, find an element that compares equal to `e' if
+ possible, but failing that settle for something just bigger than
+ it.)
+
+Return value, as before, is the element found or NULL if no element
+satisfied the search criterion.
+
+#5.4.8. findpos234()
+
+ void *findpos234(tree234 *t, void *e, cmpfn234 cmp, int *index);
+
+This function is like find234(), but has the additional feature of
+returning the index of the element found in the tree; that index is
+written to `*index' in the event of a successful search (a non-NULL
+return value).
+
+`index' may be NULL, in which case this function behaves exactly like
+find234().
+
+#5.4.9. findrelpos234()
+
+ void *findrelpos234(tree234 *t, void *e, cmpfn234 cmp, int relation,
+ int *index);
+
+This function combines all the features of findrel234() and
+findpos234().
+
+#5.4.10. del234()
+
+ void *del234(tree234 *t, void *e);
+
+Finds an element comparing equal to `e' in the tree, deletes it, and
+returns it.
+
+The input tree must be sorted.
+
+The element found might be `e' itself, or might merely compare equal to
+it.
+
+Return value is NULL if no such element is found.
+
+#5.4.11. delpos234()
+
+ void *delpos234(tree234 *t, int index);
+
+Deletes the element at position `index' in the tree, and returns it.
+
+Return value is NULL if the index is out of range.
+
+#5.4.12. count234()
+
+ int count234(tree234 *t);
+
+Returns the number of elements currently in the tree.
+
+#5.4.13. splitpos234()
+
+ tree234 *splitpos234(tree234 *t, int index, int before);
+
+Splits the input tree into two pieces at a given position, and creates a
+new tree containing all the elements on one side of that position.
+
+If `before' is TRUE, then all the items at or after position `index' are
+left in the input tree, and the items before that point are returned in
+the new tree. Otherwise, the reverse happens: all the items at or after
+`index' are moved into the new tree, and those before that point are
+left in the old one.
+
+If `index' is equal to 0 or to the number of elements in the input tree,
+then one of the two trees will end up empty (and this is not an error
+condition). If `index' is further out of range in either direction, the
+operation will fail completely and return NULL.
+
+This operation completes in O(log N) time, no matter how large the tree
+or how balanced or unbalanced the split.
+
+#5.4.14. split234()
+
+ tree234 *split234(tree234 *t, void *e, cmpfn234 cmp, int rel);
+
+Splits a sorted tree according to its sort order.
+
+`rel' can be any of the relation constants described in section 5.4.7,
+_except_ for REL234_EQ. All the elements having that relation to `e'
+will be transferred into the new tree; the rest will be left in the old
+one.
+
+The parameter `cmp' has the same semantics as it does in find234(): if
+it is not NULL, it will be used in place of the tree's own comparison
+function when comparing elements to `e', in such a way that `e' itself
+is always the first of its two operands.
+
+Again, this operation completes in O(log N) time, no matter how large
+the tree or how balanced or unbalanced the split.
+
+#5.4.15. join234()
+
+ tree234 *join234(tree234 *t1, tree234 *t2);
+
+Joins two trees together by concatenating the lists they represent. All
+the elements of `t2' are moved into `t1', in such a way that they appear
+_after_ the elements of `t1'. The tree `t2' is freed; the return value
+is `t1'.
+
+If you apply this function to a sorted tree and it violates the sort
+order (i.e. the smallest element in `t2' is smaller than or equal to the
+largest element in `t1'), the operation will fail and return NULL.
+
+This operation completes in O(log N) time, no matter how large the trees
+being joined together.
+
+#5.4.16. join234r()
+
+ tree234 *join234r(tree234 *t1, tree234 *t2);
+
+Joins two trees together in exactly the same way as join234(), but this
+time the combined tree is returned in `t2', and `t1' is destroyed. The
+elements in `t1' still appear before those in `t2'.
+
+Again, this operation completes in O(log N) time, no matter how large
+the trees being joined together.
+
+#5.4.17. copytree234()
+
+ tree234 *copytree234(tree234 *t, copyfn234 copyfn,
+ void *copyfnstate);
+
+Makes a copy of an entire tree.
+
+If `copyfn' is NULL, the tree will be copied but the elements will not
+be; i.e. the new tree will contain pointers to exactly the same physical
+elements as the old one.
+
+If you want to copy each actual element during the operation, you can
+instead pass a function in `copyfn' which makes a copy of each element.
+That function has the prototype
+
+ typedef void *(*copyfn234)(void *state, void *element);
+
+and every time it is called, the `state' parameter will be set to the
+value you passed in as `copyfnstate'.
+
+#5.5. Miscellaneous utility functions and macros
+
+This section contains all the utility functions which didn't sensibly
+fit anywhere else.
+
+#5.5.1. TRUE and FALSE
+
+The main Puzzles header file defines the macros TRUE and FALSE, which
+are used throughout the code in place of 1 and 0 (respectively) to
+indicate that the values are in a boolean context. For code base
+consistency, I'd prefer it if submissions of new code followed this
+convention as well.
+
+#5.5.2. max() and min()
+
+The main Puzzles header file defines the pretty standard macros max()
+and min(), each of which is given two arguments and returns the one
+which compares greater or less respectively.
+
+These macros may evaluate their arguments multiple times. Avoid side
+effects.
+
+#5.5.3. PI
+
+The main Puzzles header file defines a macro PI which expands to a
+floating-point constant representing pi.
+
+(I've never understood why ANSI's <math.h> doesn't define this. It'd be
+so useful!)
+
+#5.5.4. obfuscate_bitmap()
+
+ void obfuscate_bitmap(unsigned char *bmp, int bits, int decode);
+
+This function obscures the contents of a piece of data, by cryptographic
+methods. It is useful for games of hidden information (such as Mines,
+Guess or Black Box), in which the game ID theoretically reveals all the
+information the player is supposed to be trying to guess. So in order
+that players should be able to send game IDs to one another without
+accidentally spoiling the resulting game by looking at them, these games
+obfuscate their game IDs using this function.
+
+Although the obfuscation function is cryptographic, it cannot properly
+be called encryption because it has no key. Therefore, anybody motivated
+enough can re-implement it, or hack it out of the Puzzles source,
+and strip the obfuscation off one of these game IDs to see what lies
+beneath. (Indeed, they could usually do it much more easily than that,
+by entering the game ID into their own copy of the puzzle and hitting
+Solve.) The aim is not to protect against a determined attacker; the aim
+is simply to protect people who wanted to play the game honestly from
+_accidentally_ spoiling their own fun.
+
+The input argument `bmp' points at a piece of memory to be obfuscated.
+`bits' gives the length of the data. Note that that length is in _bits_
+rather than bytes: if you ask for obfuscation of a partial number of
+bytes, then you will get it. Bytes are considered to be used from the
+top down: thus, for example, setting `bits' to 10 will cover the whole
+of bmp[0] and the _top two_ bits of bmp[1]. The remainder of a partially
+used byte is undefined (i.e. it may be corrupted by the function).
+
+The parameter `decode' is FALSE for an encoding operation, and TRUE
+for a decoding operation. Each is the inverse of the other. (There's
+no particular reason you shouldn't obfuscate by decoding and restore
+cleartext by encoding, if you really wanted to; it should still work.)
+
+The input bitmap is processed in place.
+
+#5.5.5. bin2hex()
+
+ char *bin2hex(const unsigned char *in, int inlen);
+
+This function takes an input byte array and converts it into an
+ASCII string encoding those bytes in (lower-case) hex. It returns a
+dynamically allocated string containing that encoding.
+
+This function is useful for encoding the result of obfuscate_bitmap() in
+printable ASCII for use in game IDs.
+
+#5.5.6. hex2bin()
+
+ unsigned char *hex2bin(const char *in, int outlen);
+
+This function takes an ASCII string containing hex digits, and converts
+it back into a byte array of length `outlen'. If there aren't enough
+hex digits in the string, the contents of the resulting array will be
+undefined.
+
+This function is the inverse of bin2hex().
+
+#5.5.7. game_mkhighlight()
+
+ void game_mkhighlight(frontend *fe, float *ret,
+ int background, int highlight, int lowlight);
+
+It's reasonably common for a puzzle game's graphics to use highlights
+and lowlights to indicate `raised' or `lowered' sections. Fifteen,
+Sixteen and Twiddle are good examples of this.
+
+Puzzles using this graphical style are running a risk if they just use
+whatever background colour is supplied to them by the front end, because
+that background colour might be too light to see any highlights on at
+all. (In particular, it's not unheard of for the front end to specify a
+default background colour of white.)
+
+Therefore, such puzzles can call this utility function from their
+colours() routine (section 2.8.6). You pass it your front end handle, a
+pointer to the start of your return array, and three colour indices. It
+will:
+
+ - call frontend_default_colour() (section 4.39) to fetch the front
+ end's default background colour
+
+ - alter the brightness of that colour if it's unsuitable
+
+ - define brighter and darker variants of the colour to be used as
+ highlights and lowlights
+
+ - write those results into the relevant positions in the `ret' array.
+
+Thus, ret[background*3] to ret[background*3+2] will be set to RGB values
+defining a sensible background colour, and similary `highlight' and
+`lowlight' will be set to sensible colours.
+
+#6. How to write a new puzzle
+
+This chapter gives a guide to how to actually write a new puzzle: where
+to start, what to do first, how to solve common problems.
+
+The previous chapters have been largely composed of facts. This one is
+mostly advice.
+
+#6.1. Choosing a puzzle
+
+Before you start writing a puzzle, you have to choose one. Your taste
+in puzzle games is up to you, of course; and, in fact, you're probably
+reading this guide because you've _already_ thought of a game you want
+to write. But if you want to get it accepted into the official Puzzles
+distribution, then there's a criterion it has to meet.
+
+The current Puzzles editorial policy is that all games should be _fair_.
+A fair game is one which a player can only fail to complete through
+demonstrable lack of skill - that is, such that a better player in the
+same situation would have _known_ to do something different.
+
+For a start, that means every game presented to the user must have _at
+least one solution_. Giving the unsuspecting user a puzzle which is
+actually impossible is not acceptable. (There is an exception: if the
+user has selected some non-default option which is clearly labelled as
+potentially unfair, _then_ you're allowed to generate possibly insoluble
+puzzles, because the user isn't unsuspecting any more. Same Game and
+Mines both have options of this type.)
+
+Also, this actually _rules out_ games such as Klondike, or the normal
+form of Mahjong Solitaire. Those games have the property that even if
+there is a solution (i.e. some sequence of moves which will get from
+the start state to the solved state), the player doesn't necessarily
+have enough information to _find_ that solution. In both games, it is
+possible to reach a dead end because you had an arbitrary choice to make
+and made it the wrong way. This violates the fairness criterion, because
+a better player couldn't have known they needed to make the other
+choice.
+
+(GNOME has a variant on Mahjong Solitaire which makes it fair: there
+is a Shuffle operation which randomly permutes all the remaining tiles
+without changing their positions, which allows you to get out of a
+sticky situation. Using this operation adds a 60-second penalty to your
+solution time, so it's to the player's advantage to try to minimise
+the chance of having to use it. It's still possible to render the game
+uncompletable if you end up with only two tiles vertically stacked,
+but that's easy to foresee and avoid using a shuffle operation. This
+form of the game _is_ fair. Implementing it in Puzzles would require
+an infrastructure change so that the back end could communicate time
+penalties to the mid-end, but that would be easy enough.)
+
+Providing a _unique_ solution is a little more negotiable; it depends
+on the puzzle. Solo would have been of unacceptably low quality if it
+didn't always have a unique solution, whereas Twiddle inherently has
+multiple solutions by its very nature and it would have been meaningless
+to even _suggest_ making it uniquely soluble. Somewhere in between, Flip
+could reasonably be made to have unique solutions (by enforcing a zero-
+dimension kernel in every generated matrix) but it doesn't seem like a
+serious quality problem that it doesn't.
+
+Of course, you don't _have_ to care about all this. There's nothing
+stopping you implementing any puzzle you want to if you're happy to
+maintain your puzzle yourself, distribute it from your own web site,
+fork the Puzzles code completely, or anything like that. It's free
+software; you can do what you like with it. But any game that you want
+to be accepted into _my_ Puzzles code base has to satisfy the fairness
+criterion, which means all randomly generated puzzles must have a
+solution (unless the user has deliberately chosen otherwise) and it must
+be possible _in theory_ to find that solution without having to guess.
+
+#6.2. Getting started
+
+The simplest way to start writing a new puzzle is to copy `nullgame.c'.
+This is a template puzzle source file which does almost nothing, but
+which contains all the back end function prototypes and declares the
+back end data structure correctly. It is built every time the rest of
+Puzzles is built, to ensure that it doesn't get out of sync with the
+code and remains buildable.
+
+So start by copying `nullgame.c' into your new source file. Then you'll
+gradually add functionality until the very boring Null Game turns into
+your real game.
+
+Next you'll need to add your puzzle to the Makefiles, in order to
+compile it conveniently. _Do not edit the Makefiles_: they are created
+automatically by the script `mkfiles.pl', from the file called `Recipe'.
+Edit `Recipe', and then re-run `mkfiles.pl'.
+
+Also, don't forget to add your puzzle to `list.c': if you don't, then it
+will still run fine on platforms which build each puzzle separately, but
+Mac OS X and other monolithic platforms will not include your new puzzle
+in their single binary.
+
+Once your source file is building, you can move on to the fun bit.
+
+#6.2.1. Puzzle generation
+
+Randomly generating instances of your puzzle is almost certain to be
+the most difficult part of the code, and also the task with the highest
+chance of turning out to be completely infeasible. Therefore I strongly
+recommend doing it _first_, so that if it all goes horribly wrong you
+haven't wasted any more time than you absolutely had to. What I usually
+do is to take an unmodified `nullgame.c', and start adding code to
+new_game_desc() which tries to generate a puzzle instance and print it
+out using printf(). Once that's working, _then_ I start connecting it up
+to the return value of new_game_desc(), populating other structures like
+`game_params', and generally writing the rest of the source file.
+
+There are many ways to generate a puzzle which is known to be soluble.
+In this section I list all the methods I currently know of, in case any
+of them can be applied to your puzzle. (Not all of these methods will
+work, or in some cases even make sense, for all puzzles.)
+
+Some puzzles are mathematically tractable, meaning you can work out in
+advance which instances are soluble. Sixteen, for example, has a parity
+constraint in some settings which renders exactly half the game space
+unreachable, but it can be mathematically proved that any position
+not in that half _is_ reachable. Therefore, Sixteen's grid generation
+simply consists of selecting at random from a well defined subset of the
+game space. Cube in its default state is even easier: _every_ possible
+arrangement of the blue squares and the cube's starting position is
+soluble!
+
+Another option is to redefine what you mean by `soluble'. Black Box
+takes this approach. There are layouts of balls in the box which are
+completely indistinguishable from one another no matter how many beams
+you fire into the box from which angles, which would normally be grounds
+for declaring those layouts unfair; but fortunately, detecting that
+indistinguishability is computationally easy. So Black Box doesn't
+demand that your ball placements match its own; it merely demands
+that your ball placements be _indistinguishable_ from the ones it was
+thinking of. If you have an ambiguous puzzle, then any of the possible
+answers is considered to be a solution. Having redefined the rules in
+that way, any puzzle is soluble again.
+
+Those are the simple techniques. If they don't work, you have to get
+cleverer.
+
+One way to generate a soluble puzzle is to start from the solved state
+and make inverse moves until you reach a starting state. Then you know
+there's a solution, because you can just list the inverse moves you made
+and make them in the opposite order to return to the solved state.
+
+This method can be simple and effective for puzzles where you get to
+decide what's a starting state and what's not. In Pegs, for example,
+the generator begins with one peg in the centre of the board and makes
+inverse moves until it gets bored; in this puzzle, valid inverse moves
+are easy to detect, and _any_ state that's reachable from the solved
+state by inverse moves is a reasonable starting position. So Pegs just
+continues making inverse moves until the board satisfies some criteria
+about extent and density, and then stops and declares itself done.
+
+For other puzzles, it can be a lot more difficult. Same Game uses
+this strategy too, and it's lucky to get away with it at all: valid
+inverse moves aren't easy to find (because although it's easy to insert
+additional squares in a Same Game position, it's difficult to arrange
+that _after_ the insertion they aren't adjacent to any other squares of
+the same colour), so you're constantly at risk of running out of options
+and having to backtrack or start again. Also, Same Game grids never
+start off half-empty, which means you can't just stop when you run out
+of moves - you have to find a way to fill the grid up _completely_.
+
+The other way to generate a puzzle that's soluble is to start from the
+other end, and actually write a _solver_. This tends to ensure that a
+puzzle has a _unique_ solution over and above having a solution at all,
+so it's a good technique to apply to puzzles for which that's important.
+
+One theoretical drawback of generating soluble puzzles by using a solver
+is that your puzzles are restricted in difficulty to those which the
+solver can handle. (Most solvers are not fully general: many sets of
+puzzle rules are NP-complete or otherwise nasty, so most solvers can
+only handle a subset of the theoretically soluble puzzles.) It's been
+my experience in practice, however, that this usually isn't a problem;
+computers are good at very different things from humans, and what the
+computer thinks is nice and easy might still be pleasantly challenging
+for a human. For example, when solving Dominosa puzzles I frequently
+find myself using a variety of reasoning techniques that my solver
+doesn't know about; in principle, therefore, I should be able to solve
+the puzzle using only those techniques it _does_ know about, but this
+would involve repeatedly searching the entire grid for the one simple
+deduction I can make. Computers are good at this sort of exhaustive
+search, but it's been my experience that human solvers prefer to do more
+complex deductions than to spend ages searching for simple ones. So in
+many cases I don't find my own playing experience to be limited by the
+restrictions on the solver.
+
+(This isn't _always_ the case. Solo is a counter-example; generating
+Solo puzzles using a simple solver does lead to qualitatively easier
+puzzles. Therefore I had to make the Solo solver rather more advanced
+than most of them.)
+
+There are several different ways to apply a solver to the problem of
+generating a soluble puzzle. I list a few of them below.
+
+The simplest approach is brute force: randomly generate a puzzle, use
+the solver to see if it's soluble, and if not, throw it away and try
+again until you get lucky. This is often a viable technique if all
+else fails, but it tends not to scale well: for many puzzle types, the
+probability of finding a uniquely soluble instance decreases sharply
+as puzzle size goes up, so this technique might work reasonably fast
+for small puzzles but take (almost) forever at larger sizes. Still, if
+there's no other alternative it can be usable: Pattern and Dominosa
+both use this technique. (However, Dominosa has a means of tweaking the
+randomly generated grids to increase the _probability_ of them being
+soluble, by ruling out one of the most common ambiguous cases. This
+improved generation speed by over a factor of 10 on the highest preset!)
+
+An approach which can be more scalable involves generating a grid and
+then tweaking it to make it soluble. This is the technique used by Mines
+and also by Net: first a random puzzle is generated, and then the solver
+is run to see how far it gets. Sometimes the solver will get stuck;
+when that happens, examine the area it's having trouble with, and make
+a small random change in that area to allow it to make more progress.
+Continue solving (possibly even without restarting the solver), tweaking
+as necessary, until the solver finishes. Then restart the solver from
+the beginning to ensure that the tweaks haven't caused new problems in
+the process of solving old ones (which can sometimes happen).
+
+This strategy works well in situations where the usual solver failure
+mode is to get stuck in an easily localised spot. Thus it works well
+for Net and Mines, whose most common failure mode tends to be that most
+of the grid is fine but there are a few widely separated ambiguous
+sections; but it would work less well for Dominosa, in which the way you
+get stuck is to have scoured the whole grid and not found anything you
+can deduce _anywhere_. Also, it relies on there being a low probability
+that tweaking the grid introduces a new problem at the same time as
+solving the old one; Mines and Net also have the property that most of
+their deductions are local, so that it's very unlikely for a tweak to
+affect something half way across the grid from the location where it was
+applied. In Dominosa, by contrast, a lot of deductions use information
+about half the grid (`out of all the sixes, only one is next to a
+three', which can depend on the values of up to 32 of the 56 squares in
+the default setting!), so this tweaking strategy would be rather less
+likely to work well.
+
+A more specialised strategy is that used in Solo and Slant. These
+puzzles have the property that they derive their difficulty from not
+presenting all the available clues. (In Solo's case, if all the possible
+clues were provided then the puzzle would already be solved; in Slant
+it would still require user action to fill in the lines, but it would
+present no challenge at all). Therefore, a simple generation technique
+is to leave the decision of which clues to provide until the last
+minute. In other words, first generate a random _filled_ grid with all
+possible clues present, and then gradually remove clues for as long as
+the solver reports that it's still soluble. Unlike the methods described
+above, this technique _cannot_ fail - once you've got a filled grid,
+nothing can stop you from being able to convert it into a viable puzzle.
+However, it wouldn't even be meaningful to apply this technique to (say)
+Pattern, in which clues can never be left out, so the only way to affect
+the set of clues is by altering the solution.
+
+(Unfortunately, Solo is complicated by the need to provide puzzles at
+varying difficulty levels. It's easy enough to generate a puzzle of
+_at most_ a given level of difficulty; you just have a solver with
+configurable intelligence, and you set it to a given level and apply the
+above technique, thus guaranteeing that the resulting grid is solvable
+by someone with at most that much intelligence. However, generating a
+puzzle of _at least_ a given level of difficulty is rather harder; if
+you go for _at most_ Intermediate level, you're likely to find that
+you've accidentally generated a Trivial grid a lot of the time, because
+removing just one number is sufficient to take the puzzle from Trivial
+straight to Ambiguous. In that situation Solo has no remaining options
+but to throw the puzzle away and start again.)
+
+A final strategy is to use the solver _during_ puzzle construction:
+lay out a bit of the grid, run the solver to see what it allows you to
+deduce, and then lay out a bit more to allow the solver to make more
+progress. There are articles on the web that recommend constructing
+Sudoku puzzles by this method (which is completely the opposite way
+round to how Solo does it); for Sudoku it has the advantage that you
+get to specify your clue squares in advance (so you can have them make
+pretty patterns).
+
+Rectangles uses a strategy along these lines. First it generates a grid
+by placing the actual rectangles; then it has to decide where in each
+rectangle to place a number. It uses a solver to help it place the
+numbers in such a way as to ensure a unique solution. It does this by
+means of running a test solver, but it runs the solver _before_ it's
+placed any of the numbers - which means the solver must be capable of
+coping with uncertainty about exactly where the numbers are! It runs
+the solver as far as it can until it gets stuck; then it narrows down
+the possible positions of a number in order to allow the solver to make
+more progress, and so on. Most of the time this process terminates with
+the grid fully solved, at which point any remaining number-placement
+decisions can be made at random from the options not so far ruled out.
+Note that unlike the Net/Mines tweaking strategy described above, this
+algorithm does not require a checking run after it completes: if it
+finishes successfully at all, then it has definitely produced a uniquely
+soluble puzzle.
+
+Most of the strategies described above are not 100% reliable. Each
+one has a failure rate: every so often it has to throw out the whole
+grid and generate a fresh one from scratch. (Solo's strategy would
+be the exception, if it weren't for the need to provide configurable
+difficulty levels.) Occasional failures are not a fundamental problem in
+this sort of work, however: it's just a question of dividing the grid
+generation time by the success rate (if it takes 10ms to generate a
+candidate grid and 1/5 of them work, then it will take 50ms on average
+to generate a viable one), and seeing whether the expected time taken
+to _successfully_ generate a puzzle is unacceptably slow. Dominosa's
+generator has a very low success rate (about 1 out of 20 candidate grids
+turn out to be usable, and if you think _that's_ bad then go and look
+at the source code and find the comment showing what the figures were
+before the generation-time tweaks!), but the generator itself is very
+fast so this doesn't matter. Rectangles has a slower generator, but
+fails well under 50% of the time.
+
+So don't be discouraged if you have an algorithm that doesn't always
+work: if it _nearly_ always works, that's probably good enough. The one
+place where reliability is important is that your algorithm must never
+produce false positives: it must not claim a puzzle is soluble when it
+isn't. It can produce false negatives (failing to notice that a puzzle
+is soluble), and it can fail to generate a puzzle at all, provided it
+doesn't do either so often as to become slow.
+
+One last piece of advice: for grid-based puzzles, when writing and
+testing your generation algorithm, it's almost always a good idea _not_
+to test it initially on a grid that's square (i.e. w==h), because if the
+grid is square then you won't notice if you mistakenly write `h' instead
+of `w' (or vice versa) somewhere in the code. Use a rectangular grid for
+testing, and any size of grid will be likely to work after that.
+
+#6.2.2. Designing textual description formats
+
+Another aspect of writing a puzzle which is worth putting some thought
+into is the design of the various text description formats: the format
+of the game parameter encoding, the game description encoding, and the
+move encoding.
+
+The first two of these should be reasonably intuitive for a user to type
+in; so provide some flexibility where possible. Suppose, for example,
+your parameter format consists of two numbers separated by an `x' to
+specify the grid dimensions (`10x10' or `20x15'), and then has some
+suffixes to specify other aspects of the game type. It's almost always a
+good idea in this situation to arrange that decode_params() can handle
+the suffixes appearing in any order, even if encode_params() only ever
+generates them in one order.
+
+These formats will also be expected to be reasonably stable: users will
+expect to be able to exchange game IDs with other users who aren't
+running exactly the same version of your game. So make them robust and
+stable: don't build too many assumptions into the game ID format which
+will have to be changed every time something subtle changes in the
+puzzle code.
+
+#6.3. Common how-to questions
+
+This section lists some common things people want to do when writing a
+puzzle, and describes how to achieve them within the Puzzles framework.
+
+#6.3.1. Drawing objects at only one position
+
+A common phenomenon is to have an object described in the `game_state'
+or the `game_ui' which can only be at one position. A cursor - probably
+specified in the `game_ui' - is a good example.
+
+In the `game_ui', it would _obviously_ be silly to have an array
+covering the whole game grid with a boolean flag stating whether the
+cursor was at each position. Doing that would waste space, would make
+it difficult to find the cursor in order to do anything with it, and
+would introduce the potential for synchronisation bugs in which you
+ended up with two cursors or none. The obviously sensible way to store a
+cursor in the `game_ui' is to have fields directly encoding the cursor's
+coordinates.
+
+However, it is a mistake to assume that the same logic applies to the
+`game_drawstate'. If you replicate the cursor position fields in the
+draw state, the redraw code will get very complicated. In the draw
+state, in fact, it _is_ probably the right thing to have a cursor flag
+for every position in the grid. You probably have an array for the whole
+grid in the drawstate already (stating what is currently displayed in
+the window at each position); the sensible approach is to add a `cursor'
+flag to each element of that array. Then the main redraw loop will look
+something like this (pseudo-code):
+
+ for (y = 0; y < h; y++) {
+ for (x = 0; x < w; x++) {
+ int value = state->symbol_at_position[y][x];
+ if (x == ui->cursor_x && y == ui->cursor_y)
+ value |= CURSOR;
+ if (ds->symbol_at_position[y][x] != value) {
+ symbol_drawing_subroutine(dr, ds, x, y, value);
+ ds->symbol_at_position[y][x] = value;
+ }
+ }
+ }
+
+This loop is very simple, pretty hard to get wrong, and _automatically_
+deals both with erasing the previous cursor and drawing the new one,
+with no special case code required.
+
+This type of loop is generally a sensible way to write a redraw
+function, in fact. The best thing is to ensure that the information
+stored in the draw state for each position tells you _everything_ about
+what was drawn there. A good way to ensure that is to pass precisely
+the same information, and _only_ that information, to a subroutine that
+does the actual drawing; then you know there's no additional information
+which affects the drawing but which you don't notice changes in.
+
+#6.3.2. Implementing a keyboard-controlled cursor
+
+It is often useful to provide a keyboard control method in a basically
+mouse-controlled game. A keyboard-controlled cursor is best implemented
+by storing its location in the `game_ui' (since if it were in the
+`game_state' then the user would have to separately undo every cursor
+move operation). So the procedure would be:
+
+ - Put cursor position fields in the `game_ui'.
+
+ - interpret_move() responds to arrow keys by modifying the cursor
+ position fields and returning "".
+
+ - interpret_move() responds to some sort of fire button by actually
+ performing a move based on the current cursor location.
+
+ - You might want an additional `game_ui' field stating whether the
+ cursor is currently visible, and having it disappear when a mouse
+ action occurs (so that it doesn't clutter the display when not
+ actually in use).
+
+ - You might also want to automatically hide the cursor in
+ changed_state() when the current game state changes to one in
+ which there is no move to make (which is the case in some types of
+ completed game).
+
+ - redraw() draws the cursor using the technique described in section
+ 6.3.1.
+
+#6.3.3. Implementing draggable sprites
+
+Some games have a user interface which involves dragging some sort of
+game element around using the mouse. If you need to show a graphic
+moving smoothly over the top of other graphics, use a blitter (see
+section 3.1.13 for the blitter API) to save the background underneath
+it. The typical scenario goes:
+
+ - Have a blitter field in the `game_drawstate'.
+
+ - Set the blitter field to NULL in the game's new_drawstate()
+ function, since you don't yet know how big the piece of saved
+ background needs to be.
+
+ - In the game's set_size() function, once you know the size of the
+ object you'll be dragging around the display and hence the required
+ size of the blitter, actually allocate the blitter.
+
+ - In free_drawstate(), free the blitter if it's not NULL.
+
+ - In interpret_move(), respond to mouse-down and mouse-drag events by
+ updating some fields in the game_ui which indicate that a drag is in
+ progress.
+
+ - At the _very end_ of redraw(), after all other drawing has been
+ done, draw the moving object if there is one. First save the
+ background under the object in the blitter; then set a clip
+ rectangle covering precisely the area you just saved (just in case
+ anti-aliasing or some other error causes your drawing to go beyond
+ the area you saved). Then draw the object, and call unclip().
+ Finally, set a flag in the game_drawstate that indicates that the
+ blitter needs restoring.
+
+ - At the very start of redraw(), before doing anything else at all,
+ check the flag in the game_drawstate, and if it says the blitter
+ needs restoring then restore it. (Then clear the flag, so that this
+ won't happen again in the next redraw if no moving object is drawn
+ this time.)
+
+This way, you will be able to write the rest of the redraw function
+completely ignoring the dragged object, as if it were floating above
+your bitmap and being completely separate.
+
+#6.3.4. Sharing large invariant data between all game states
+
+In some puzzles, there is a large amount of data which never changes
+between game states. The array of numbers in Dominosa is a good example.
+
+You _could_ dynamically allocate a copy of that array in every
+`game_state', and have dup_game() make a fresh copy of it for every new
+`game_state'; but it would waste memory and time. A more efficient way
+is to use a reference-counted structure.
+
+ - Define a structure type containing the data in question, and also
+ containing an integer reference count.
+
+ - Have a field in `game_state' which is a pointer to this structure.
+
+ - In new_game(), when creating a fresh game state at the start of a
+ new game, create an instance of this structure, initialise it with
+ the invariant data, and set its reference count to 1.
+
+ - In dup_game(), rather than making a copy of the structure for the
+ new game state, simply set the new game state to point at the same
+ copy of the structure, and increment its reference count.
+
+ - In free_game(), decrement the reference count in the structure
+ pointed to by the game state; if the count reaches zero, free the
+ structure.
+
+This way, the invariant data will persist for only as long as it's
+genuinely needed; _as soon_ as the last game state for a particular
+puzzle instance is freed, the invariant data for that puzzle will
+vanish as well. Reference counting is a very efficient form of garbage
+collection, when it works at all. (Which it does in this instance, of
+course, because there's no possibility of circular references.)
+
+#6.3.5. Implementing multiple types of flash
+
+In some games you need to flash in more than one different way. Mines,
+for example, flashes white when you win, and flashes red when you tread
+on a mine and die.
+
+The simple way to do this is:
+
+ - Have a field in the `game_ui' which describes the type of flash.
+
+ - In flash_length(), examine the old and new game states to decide
+ whether a flash is required and what type. Write the type of flash
+ to the `game_ui' field whenever you return non-zero.
+
+ - In redraw(), when you detect that `flash_time' is non-zero, examine
+ the field in `game_ui' to decide which type of flash to draw.
+
+redraw() will never be called with `flash_time' non-zero unless
+flash_length() was first called to tell the mid-end that a flash was
+required; so whenever redraw() notices that `flash_time' is non-zero,
+you can be sure that the field in `game_ui' is correctly set.
+
+#6.3.6. Animating game moves
+
+A number of puzzle types benefit from a quick animation of each move you
+make.
+
+For some games, such as Fifteen, this is particularly easy. Whenever
+redraw() is called with `oldstate' non-NULL, Fifteen simply compares the
+position of each tile in the two game states, and if the tile is not in
+the same place then it draws it some fraction of the way from its old
+position to its new position. This method copes automatically with undo.
+
+Other games are less obvious. In Sixteen, for example, you can't just
+draw each tile a fraction of the way from its old to its new position:
+if you did that, the end tile would zip very rapidly past all the others
+to get to the other end and that would look silly. (Worse, it would look
+inconsistent if the end tile was drawn on top going one way and on the
+bottom going the other way.)
+
+A useful trick here is to define a field or two in the game state that
+indicates what the last move was.
+
+ - Add a `last move' field to the `game_state' (or two or more fields
+ if the move is complex enough to need them).
+
+ - new_game() initialises this field to a null value for a new game
+ state.
+
+ - execute_move() sets up the field to reflect the move it just
+ performed.
+
+ - redraw() now needs to examine its `dir' parameter. If `dir' is
+ positive, it determines the move being animated by looking at the
+ last-move field in `newstate'; but if `dir' is negative, it has to
+ look at the last-move field in `oldstate', and invert whatever move
+ it finds there.
+
+Note also that Sixteen needs to store the _direction_ of the move,
+because you can't quite determine it by examining the row or column in
+question. You can in almost all cases, but when the row is precisely
+two squares long it doesn't work since a move in either direction looks
+the same. (You could argue that since moving a 2-element row left and
+right has the same effect, it doesn't matter which one you animate; but
+in fact it's very disorienting to click the arrow left and find the row
+moving right, and almost as bad to undo a move to the right and find the
+game animating _another_ move to the right.)
+
+#6.3.7. Animating drag operations
+
+In Untangle, moves are made by dragging a node from an old position to a
+new position. Therefore, at the time when the move is initially made, it
+should not be animated, because the node has already been dragged to the
+right place and doesn't need moving there. However, it's nice to animate
+the same move if it's later undone or redone. This requires a bit of
+fiddling.
+
+The obvious approach is to have a flag in the `game_ui' which inhibits
+move animation, and to set that flag in interpret_move(). The question
+is, when would the flag be reset again? The obvious place to do so
+is changed_state(), which will be called once per move. But it will
+be called _before_ anim_length(), so if it resets the flag then
+anim_length() will never see the flag set at all.
+
+The solution is to have _two_ flags in a queue.
+
+ - Define two flags in `game_ui'; let's call them `current' and `next'.
+
+ - Set both to FALSE in `new_ui()'.
+
+ - When a drag operation completes in interpret_move(), set the `next'
+ flag to TRUE.
+
+ - Every time changed_state() is called, set the value of `current' to
+ the value in `next', and then set the value of `next' to FALSE.
+
+ - That way, `current' will be TRUE _after_ a call to changed_state()
+ if and only if that call to changed_state() was the result of a
+ drag operation processed by interpret_move(). Any other call to
+ changed_state(), due to an Undo or a Redo or a Restart or a Solve,
+ will leave `current' FALSE.
+
+ - So now anim_length() can request a move animation if and only if the
+ `current' flag is _not_ set.
+
+#6.3.8. Inhibiting the victory flash when Solve is used
+
+Many games flash when you complete them, as a visual congratulation for
+having got to the end of the puzzle. It often seems like a good idea to
+disable that flash when the puzzle is brought to a solved state by means
+of the Solve operation.
+
+This is easily done:
+
+ - Add a `cheated' flag to the `game_state'.
+
+ - Set this flag to FALSE in new_game().
+
+ - Have solve() return a move description string which clearly
+ identifies the move as a solve operation.
+
+ - Have execute_move() respond to that clear identification by setting
+ the `cheated' flag in the returned `game_state'. The flag will
+ then be propagated to all subsequent game states, even if the user
+ continues fiddling with the game after it is solved.
+
+ - flash_length() now returns non-zero if `oldstate' is not completed
+ and `newstate' is, _and_ neither state has the `cheated' flag set.
+
+#6.4. Things to test once your puzzle is written
+
+Puzzle implementations written in this framework are self-testing as far
+as I could make them.
+
+Textual game and move descriptions, for example, are generated and
+parsed as part of the normal process of play. Therefore, if you can make
+moves in the game _at all_ you can be reasonably confident that the
+mid-end serialisation interface will function correctly and you will
+be able to save your game. (By contrast, if I'd stuck with a single
+make_move() function performing the jobs of both interpret_move() and
+execute_move(), and had separate functions to encode and decode a game
+state in string form, then those functions would not be used during
+normal play; so they could have been completely broken, and you'd never
+know it until you tried to save the game - which would have meant you'd
+have to test game saving _extensively_ and make sure to test every
+possible type of game state. As an added bonus, doing it the way I did
+leads to smaller save files.)
+
+There is one exception to this, which is the string encoding of the
+`game_ui'. Most games do not store anything permanent in the `game_ui',
+and hence do not need to put anything in its encode and decode
+functions; but if there is anything in there, you do need to test game
+loading and saving to ensure those functions work properly.
+
+It's also worth testing undo and redo of all operations, to ensure that
+the redraw and the animations (if any) work properly. Failing to animate
+undo properly seems to be a common error.
+
+Other than that, just use your common sense.
+
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 @@
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Makefile.am for puzzles under Unix with Autoconf/Automake.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+
+
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/puzzles
+pkgincludedir = $(includedir)/puzzles
+pkglibdir = $(libdir)/puzzles
+pkglibexecdir = $(libexecdir)/puzzles
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+noinst_PROGRAMS = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
+ dominosa$(EXEEXT) fifteen$(EXEEXT) fifteensolver$(EXEEXT) \
+ filling$(EXEEXT) fillingsolver$(EXEEXT) flip$(EXEEXT) \
+ flood$(EXEEXT) galaxies$(EXEEXT) galaxiespicture$(EXEEXT) \
+ galaxiessolver$(EXEEXT) guess$(EXEEXT) inertia$(EXEEXT) \
+ keen$(EXEEXT) keensolver$(EXEEXT) latincheck$(EXEEXT) \
+ lightup$(EXEEXT) lightupsolver$(EXEEXT) loopy$(EXEEXT) \
+ loopysolver$(EXEEXT) magnets$(EXEEXT) magnetssolver$(EXEEXT) \
+ map$(EXEEXT) mapsolver$(EXEEXT) mineobfusc$(EXEEXT) \
+ mines$(EXEEXT) net$(EXEEXT) netslide$(EXEEXT) \
+ nullgame$(EXEEXT) obfusc$(EXEEXT) palisade$(EXEEXT) \
+ pattern$(EXEEXT) patternpicture$(EXEEXT) \
+ patternsolver$(EXEEXT) pearl$(EXEEXT) pearlbench$(EXEEXT) \
+ pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \
+ signpost$(EXEEXT) signpostsolver$(EXEEXT) singles$(EXEEXT) \
+ singlessolver$(EXEEXT) sixteen$(EXEEXT) slant$(EXEEXT) \
+ slantsolver$(EXEEXT) solo$(EXEEXT) solosolver$(EXEEXT) \
+ tents$(EXEEXT) tentssolver$(EXEEXT) towers$(EXEEXT) \
+ towerssolver$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
+ undead$(EXEEXT) unequal$(EXEEXT) unequalsolver$(EXEEXT) \
+ unruly$(EXEEXT) unrulysolver$(EXEEXT) untangle$(EXEEXT)
+bin_PROGRAMS = $(am__EXEEXT_1)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libfifteen2_a_AR = $(AR) $(ARFLAGS)
+libfifteen2_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libfifteen2_a_OBJECTS = ./libfifteen2_a-fifteen.$(OBJEXT)
+libfifteen2_a_OBJECTS = $(am_libfifteen2_a_OBJECTS)
+libfilling2_a_AR = $(AR) $(ARFLAGS)
+libfilling2_a_LIBADD =
+am_libfilling2_a_OBJECTS = ./libfilling2_a-filling.$(OBJEXT)
+libfilling2_a_OBJECTS = $(am_libfilling2_a_OBJECTS)
+libgalaxie2_a_AR = $(AR) $(ARFLAGS)
+libgalaxie2_a_LIBADD =
+am_libgalaxie2_a_OBJECTS = ./libgalaxie2_a-galaxies.$(OBJEXT)
+libgalaxie2_a_OBJECTS = $(am_libgalaxie2_a_OBJECTS)
+libgalaxie4_a_AR = $(AR) $(ARFLAGS)
+libgalaxie4_a_LIBADD =
+am_libgalaxie4_a_OBJECTS = ./libgalaxie4_a-galaxies.$(OBJEXT)
+libgalaxie4_a_OBJECTS = $(am_libgalaxie4_a_OBJECTS)
+libkeen2_a_AR = $(AR) $(ARFLAGS)
+libkeen2_a_LIBADD =
+am_libkeen2_a_OBJECTS = ./libkeen2_a-keen.$(OBJEXT)
+libkeen2_a_OBJECTS = $(am_libkeen2_a_OBJECTS)
+liblatin6_a_AR = $(AR) $(ARFLAGS)
+liblatin6_a_LIBADD =
+am_liblatin6_a_OBJECTS = ./liblatin6_a-latin.$(OBJEXT)
+liblatin6_a_OBJECTS = $(am_liblatin6_a_OBJECTS)
+liblatin8_a_AR = $(AR) $(ARFLAGS)
+liblatin8_a_LIBADD =
+am_liblatin8_a_OBJECTS = ./liblatin8_a-latin.$(OBJEXT)
+liblatin8_a_OBJECTS = $(am_liblatin8_a_OBJECTS)
+liblightup2_a_AR = $(AR) $(ARFLAGS)
+liblightup2_a_LIBADD =
+am_liblightup2_a_OBJECTS = ./liblightup2_a-lightup.$(OBJEXT)
+liblightup2_a_OBJECTS = $(am_liblightup2_a_OBJECTS)
+libloopy2_a_AR = $(AR) $(ARFLAGS)
+libloopy2_a_LIBADD =
+am_libloopy2_a_OBJECTS = ./libloopy2_a-loopy.$(OBJEXT)
+libloopy2_a_OBJECTS = $(am_libloopy2_a_OBJECTS)
+libmagnets2_a_AR = $(AR) $(ARFLAGS)
+libmagnets2_a_LIBADD =
+am_libmagnets2_a_OBJECTS = ./libmagnets2_a-magnets.$(OBJEXT)
+libmagnets2_a_OBJECTS = $(am_libmagnets2_a_OBJECTS)
+libmap2_a_AR = $(AR) $(ARFLAGS)
+libmap2_a_LIBADD =
+am_libmap2_a_OBJECTS = ./libmap2_a-map.$(OBJEXT)
+libmap2_a_OBJECTS = $(am_libmap2_a_OBJECTS)
+libmines2_a_AR = $(AR) $(ARFLAGS)
+libmines2_a_LIBADD =
+am_libmines2_a_OBJECTS = ./libmines2_a-mines.$(OBJEXT)
+libmines2_a_OBJECTS = $(am_libmines2_a_OBJECTS)
+libpattern2_a_AR = $(AR) $(ARFLAGS)
+libpattern2_a_LIBADD =
+am_libpattern2_a_OBJECTS = ./libpattern2_a-pattern.$(OBJEXT)
+libpattern2_a_OBJECTS = $(am_libpattern2_a_OBJECTS)
+libpattern4_a_AR = $(AR) $(ARFLAGS)
+libpattern4_a_LIBADD =
+am_libpattern4_a_OBJECTS = ./libpattern4_a-pattern.$(OBJEXT)
+libpattern4_a_OBJECTS = $(am_libpattern4_a_OBJECTS)
+libpearl2_a_AR = $(AR) $(ARFLAGS)
+libpearl2_a_LIBADD =
+am_libpearl2_a_OBJECTS = ./libpearl2_a-pearl.$(OBJEXT)
+libpearl2_a_OBJECTS = $(am_libpearl2_a_OBJECTS)
+libsignpos2_a_AR = $(AR) $(ARFLAGS)
+libsignpos2_a_LIBADD =
+am_libsignpos2_a_OBJECTS = ./libsignpos2_a-signpost.$(OBJEXT)
+libsignpos2_a_OBJECTS = $(am_libsignpos2_a_OBJECTS)
+libsingles3_a_AR = $(AR) $(ARFLAGS)
+libsingles3_a_LIBADD =
+am_libsingles3_a_OBJECTS = ./libsingles3_a-singles.$(OBJEXT)
+libsingles3_a_OBJECTS = $(am_libsingles3_a_OBJECTS)
+libslant2_a_AR = $(AR) $(ARFLAGS)
+libslant2_a_LIBADD =
+am_libslant2_a_OBJECTS = ./libslant2_a-slant.$(OBJEXT)
+libslant2_a_OBJECTS = $(am_libslant2_a_OBJECTS)
+libsolo2_a_AR = $(AR) $(ARFLAGS)
+libsolo2_a_LIBADD =
+am_libsolo2_a_OBJECTS = ./libsolo2_a-solo.$(OBJEXT)
+libsolo2_a_OBJECTS = $(am_libsolo2_a_OBJECTS)
+libtents3_a_AR = $(AR) $(ARFLAGS)
+libtents3_a_LIBADD =
+am_libtents3_a_OBJECTS = ./libtents3_a-tents.$(OBJEXT)
+libtents3_a_OBJECTS = $(am_libtents3_a_OBJECTS)
+libtowers2_a_AR = $(AR) $(ARFLAGS)
+libtowers2_a_LIBADD =
+am_libtowers2_a_OBJECTS = ./libtowers2_a-towers.$(OBJEXT)
+libtowers2_a_OBJECTS = $(am_libtowers2_a_OBJECTS)
+libunequal2_a_AR = $(AR) $(ARFLAGS)
+libunequal2_a_LIBADD =
+am_libunequal2_a_OBJECTS = ./libunequal2_a-unequal.$(OBJEXT)
+libunequal2_a_OBJECTS = $(am_libunequal2_a_OBJECTS)
+libunruly2_a_AR = $(AR) $(ARFLAGS)
+libunruly2_a_LIBADD =
+am_libunruly2_a_OBJECTS = ./libunruly2_a-unruly.$(OBJEXT)
+libunruly2_a_OBJECTS = $(am_libunruly2_a_OBJECTS)
+am__EXEEXT_1 = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
+ dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \
+ flip$(EXEEXT) flood$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \
+ inertia$(EXEEXT) keen$(EXEEXT) lightup$(EXEEXT) loopy$(EXEEXT) \
+ magnets$(EXEEXT) map$(EXEEXT) mines$(EXEEXT) net$(EXEEXT) \
+ netslide$(EXEEXT) palisade$(EXEEXT) pattern$(EXEEXT) \
+ pearl$(EXEEXT) pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) \
+ samegame$(EXEEXT) signpost$(EXEEXT) singles$(EXEEXT) \
+ sixteen$(EXEEXT) slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) \
+ towers$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
+ undead$(EXEEXT) unequal$(EXEEXT) unruly$(EXEEXT) \
+ untangle$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am_blackbox_OBJECTS = ./blackbox.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+blackbox_OBJECTS = $(am_blackbox_OBJECTS)
+am__DEPENDENCIES_1 =
+blackbox_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_bridges_OBJECTS = ./bridges.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./version.$(OBJEXT)
+bridges_OBJECTS = $(am_bridges_OBJECTS)
+bridges_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_cube_OBJECTS = ./cube.$(OBJEXT) ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./version.$(OBJEXT)
+cube_OBJECTS = $(am_cube_OBJECTS)
+cube_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_dominosa_OBJECTS = ./dominosa.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+dominosa_OBJECTS = $(am_dominosa_OBJECTS)
+dominosa_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_fifteen_OBJECTS = ./drawing.$(OBJEXT) ./fifteen.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+fifteen_OBJECTS = $(am_fifteen_OBJECTS)
+fifteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_fifteensolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+fifteensolver_OBJECTS = $(am_fifteensolver_OBJECTS)
+fifteensolver_DEPENDENCIES = libfifteen2_a-fifteen.$(OBJEXT)
+am_filling_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./filling.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+filling_OBJECTS = $(am_filling_OBJECTS)
+filling_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_fillingsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+fillingsolver_OBJECTS = $(am_fillingsolver_OBJECTS)
+fillingsolver_DEPENDENCIES = libfilling2_a-filling.$(OBJEXT)
+am_flip_OBJECTS = ./drawing.$(OBJEXT) ./flip.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+flip_OBJECTS = $(am_flip_OBJECTS)
+flip_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_flood_OBJECTS = ./drawing.$(OBJEXT) ./flood.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+flood_OBJECTS = $(am_flood_OBJECTS)
+flood_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_galaxies_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./galaxies.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+galaxies_OBJECTS = $(am_galaxies_OBJECTS)
+galaxies_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_galaxiespicture_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+galaxiespicture_OBJECTS = $(am_galaxiespicture_OBJECTS)
+galaxiespicture_DEPENDENCIES = libgalaxie4_a-galaxies.$(OBJEXT)
+am_galaxiessolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+galaxiessolver_OBJECTS = $(am_galaxiessolver_OBJECTS)
+galaxiessolver_DEPENDENCIES = libgalaxie2_a-galaxies.$(OBJEXT)
+am_guess_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./guess.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+guess_OBJECTS = $(am_guess_OBJECTS)
+guess_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_inertia_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./inertia.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+inertia_OBJECTS = $(am_inertia_OBJECTS)
+inertia_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_keen_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./keen.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+keen_OBJECTS = $(am_keen_OBJECTS)
+keen_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_keensolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT)
+keensolver_OBJECTS = $(am_keensolver_OBJECTS)
+keensolver_DEPENDENCIES = libkeen2_a-keen.$(OBJEXT) \
+ liblatin6_a-latin.$(OBJEXT)
+am_latincheck_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+latincheck_OBJECTS = $(am_latincheck_OBJECTS)
+latincheck_DEPENDENCIES = liblatin8_a-latin.$(OBJEXT)
+am_lightup_OBJECTS = ./combi.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./lightup.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+lightup_OBJECTS = $(am_lightup_OBJECTS)
+lightup_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_lightupsolver_OBJECTS = ./combi.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+lightupsolver_OBJECTS = $(am_lightupsolver_OBJECTS)
+lightupsolver_DEPENDENCIES = liblightup2_a-lightup.$(OBJEXT)
+am_loopy_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
+ ./loopy.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./penrose.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+loopy_OBJECTS = $(am_loopy_OBJECTS)
+loopy_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_loopysolver_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
+ ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+loopysolver_OBJECTS = $(am_loopysolver_OBJECTS)
+loopysolver_DEPENDENCIES = libloopy2_a-loopy.$(OBJEXT)
+am_magnets_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./laydomino.$(OBJEXT) ./magnets.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+magnets_OBJECTS = $(am_magnets_OBJECTS)
+magnets_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_magnetssolver_OBJECTS = ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+magnetssolver_OBJECTS = $(am_magnetssolver_OBJECTS)
+magnetssolver_DEPENDENCIES = libmagnets2_a-magnets.$(OBJEXT)
+am_map_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./map.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+map_OBJECTS = $(am_map_OBJECTS)
+map_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_mapsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+mapsolver_OBJECTS = $(am_mapsolver_OBJECTS)
+mapsolver_DEPENDENCIES = libmap2_a-map.$(OBJEXT)
+am_mineobfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
+mineobfusc_OBJECTS = $(am_mineobfusc_OBJECTS)
+mineobfusc_DEPENDENCIES = libmines2_a-mines.$(OBJEXT)
+am_mines_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./mines.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+mines_OBJECTS = $(am_mines_OBJECTS)
+mines_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./net.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+net_OBJECTS = $(am_net_OBJECTS)
+net_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_netslide_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./netslide.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+netslide_OBJECTS = $(am_netslide_OBJECTS)
+netslide_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_nullgame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./nullgame.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+nullgame_OBJECTS = $(am_nullgame_OBJECTS)
+nullgame_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_obfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./obfusc.$(OBJEXT) ./random.$(OBJEXT)
+obfusc_OBJECTS = $(am_obfusc_OBJECTS)
+obfusc_DEPENDENCIES =
+am_palisade_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./palisade.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./version.$(OBJEXT)
+palisade_OBJECTS = $(am_palisade_OBJECTS)
+palisade_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_pattern_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./pattern.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+pattern_OBJECTS = $(am_pattern_OBJECTS)
+pattern_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_patternpicture_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+patternpicture_OBJECTS = $(am_patternpicture_OBJECTS)
+patternpicture_DEPENDENCIES = libpattern4_a-pattern.$(OBJEXT)
+am_patternsolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+patternsolver_OBJECTS = $(am_patternsolver_OBJECTS)
+patternsolver_DEPENDENCIES = libpattern2_a-pattern.$(OBJEXT)
+am_pearl_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./pearl.$(OBJEXT) ./penrose.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tdq.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+pearl_OBJECTS = $(am_pearl_OBJECTS)
+pearl_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_pearlbench_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
+ ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tdq.$(OBJEXT) ./tree234.$(OBJEXT)
+pearlbench_OBJECTS = $(am_pearlbench_OBJECTS)
+pearlbench_DEPENDENCIES = libpearl2_a-pearl.$(OBJEXT)
+am_pegs_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./pegs.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+pegs_OBJECTS = $(am_pegs_OBJECTS)
+pegs_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_range_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./range.$(OBJEXT) ./version.$(OBJEXT)
+range_OBJECTS = $(am_range_OBJECTS)
+range_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_rect_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./rect.$(OBJEXT) ./version.$(OBJEXT)
+rect_OBJECTS = $(am_rect_OBJECTS)
+rect_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_samegame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./samegame.$(OBJEXT) ./version.$(OBJEXT)
+samegame_OBJECTS = $(am_samegame_OBJECTS)
+samegame_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_signpost_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./signpost.$(OBJEXT) \
+ ./version.$(OBJEXT)
+signpost_OBJECTS = $(am_signpost_OBJECTS)
+signpost_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_signpostsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+signpostsolver_OBJECTS = $(am_signpostsolver_OBJECTS)
+signpostsolver_DEPENDENCIES = libsignpos2_a-signpost.$(OBJEXT)
+am_singles_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./singles.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+singles_OBJECTS = $(am_singles_OBJECTS)
+singles_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_singlessolver_OBJECTS = ./dsf.$(OBJEXT) ./latin.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
+singlessolver_OBJECTS = $(am_singlessolver_OBJECTS)
+singlessolver_DEPENDENCIES = libsingles3_a-singles.$(OBJEXT)
+am_sixteen_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./sixteen.$(OBJEXT) ./version.$(OBJEXT)
+sixteen_OBJECTS = $(am_sixteen_OBJECTS)
+sixteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./slant.$(OBJEXT) ./version.$(OBJEXT)
+slant_OBJECTS = $(am_slant_OBJECTS)
+slant_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT)
+slantsolver_OBJECTS = $(am_slantsolver_OBJECTS)
+slantsolver_DEPENDENCIES = libslant2_a-slant.$(OBJEXT)
+am_solo_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./solo.$(OBJEXT) ./version.$(OBJEXT)
+solo_OBJECTS = $(am_solo_OBJECTS)
+solo_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_solosolver_OBJECTS = ./divvy.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT)
+solosolver_OBJECTS = $(am_solosolver_OBJECTS)
+solosolver_DEPENDENCIES = libsolo2_a-solo.$(OBJEXT)
+am_tents_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tents.$(OBJEXT) \
+ ./version.$(OBJEXT)
+tents_OBJECTS = $(am_tents_OBJECTS)
+tents_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_tentssolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT)
+tentssolver_OBJECTS = $(am_tentssolver_OBJECTS)
+tentssolver_DEPENDENCIES = libtents3_a-tents.$(OBJEXT)
+am_towers_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./towers.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+towers_OBJECTS = $(am_towers_OBJECTS)
+towers_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_towerssolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+towerssolver_OBJECTS = $(am_towerssolver_OBJECTS)
+towerssolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
+ libtowers2_a-towers.$(OBJEXT)
+am_tracks_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tracks.$(OBJEXT) ./version.$(OBJEXT)
+tracks_OBJECTS = $(am_tracks_OBJECTS)
+tracks_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_twiddle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./twiddle.$(OBJEXT) ./version.$(OBJEXT)
+twiddle_OBJECTS = $(am_twiddle_OBJECTS)
+twiddle_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_undead_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./undead.$(OBJEXT) ./version.$(OBJEXT)
+undead_OBJECTS = $(am_undead_OBJECTS)
+undead_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_unequal_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT) ./unequal.$(OBJEXT) ./version.$(OBJEXT)
+unequal_OBJECTS = $(am_unequal_OBJECTS)
+unequal_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_unequalsolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+unequalsolver_OBJECTS = $(am_unequalsolver_OBJECTS)
+unequalsolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
+ libunequal2_a-unequal.$(OBJEXT)
+am_unruly_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./unruly.$(OBJEXT) ./version.$(OBJEXT)
+unruly_OBJECTS = $(am_unruly_OBJECTS)
+unruly_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_unrulysolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+unrulysolver_OBJECTS = $(am_unrulysolver_OBJECTS)
+unrulysolver_DEPENDENCIES = libunruly2_a-unruly.$(OBJEXT)
+am_untangle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./untangle.$(OBJEXT) \
+ ./version.$(OBJEXT)
+untangle_OBJECTS = $(am_untangle_OBJECTS)
+untangle_DEPENDENCIES = $(am__DEPENDENCIES_1)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am__v_lt_1 =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
+ $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
+ $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
+ $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
+ $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
+ $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
+ $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
+ $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
+ $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
+ $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
+ $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
+ $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
+ $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
+ $(fifteensolver_SOURCES) $(filling_SOURCES) \
+ $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
+ $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
+ $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
+ $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
+ $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
+ $(loopysolver_SOURCES) $(magnets_SOURCES) \
+ $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
+ $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
+ $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
+ $(palisade_SOURCES) $(pattern_SOURCES) \
+ $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
+ $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
+ $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
+ $(signpost_SOURCES) $(signpostsolver_SOURCES) \
+ $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
+ $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
+ $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
+ $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
+ $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
+ $(unequalsolver_SOURCES) $(unruly_SOURCES) \
+ $(unrulysolver_SOURCES) $(untangle_SOURCES)
+DIST_SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
+ $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
+ $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
+ $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
+ $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
+ $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
+ $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
+ $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
+ $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
+ $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
+ $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
+ $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
+ $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
+ $(fifteensolver_SOURCES) $(filling_SOURCES) \
+ $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
+ $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
+ $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
+ $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
+ $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
+ $(loopysolver_SOURCES) $(magnets_SOURCES) \
+ $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
+ $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
+ $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
+ $(palisade_SOURCES) $(pattern_SOURCES) \
+ $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
+ $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
+ $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
+ $(signpost_SOURCES) $(signpostsolver_SOURCES) \
+ $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
+ $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
+ $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
+ $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
+ $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
+ $(unequalsolver_SOURCES) $(unruly_SOURCES) \
+ $(unrulysolver_SOURCES) $(untangle_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.in README compile depcomp \
+ install-sh missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = ${SHELL} /home/franklin/puzzles/missing aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AUTOCONF = ${SHELL} /home/franklin/puzzles/missing autoconf
+AUTOHEADER = ${SHELL} /home/franklin/puzzles/missing autoheader
+AUTOMAKE = ${SHELL} /home/franklin/puzzles/missing automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2 -Wall -Werror -std=c89
+CPPFLAGS =
+CYGPATH_W = echo
+DEFS = -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\"
+DEPDIR = .deps
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EXEEXT =
+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/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
+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
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS =
+LIBOBJS =
+LIBS =
+LTLIBOBJS =
+MAKEINFO = ${SHELL} /home/franklin/puzzles/missing makeinfo
+MKDIR_P = /usr/bin/mkdir -p
+OBJEXT = o
+PACKAGE = puzzles
+PACKAGE_BUGREPORT = anakin@pobox.com
+PACKAGE_NAME = puzzles
+PACKAGE_STRING = puzzles 6.66
+PACKAGE_TARNAME = puzzles
+PACKAGE_URL =
+PACKAGE_VERSION = 6.66
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR =
+PKG_CONFIG_PATH =
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/sh
+STRIP =
+VERSION = 6.66
+abs_builddir = /home/franklin/puzzles
+abs_srcdir = /home/franklin/puzzles
+abs_top_builddir = /home/franklin/puzzles
+abs_top_srcdir = /home/franklin/puzzles
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build_alias =
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host_alias =
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/franklin/puzzles/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix =
+top_builddir = .
+top_srcdir = .
+GAMES = blackbox bridges cube dominosa fifteen filling flip flood \
+ galaxies guess inertia keen lightup loopy magnets map mines \
+ net netslide palisade pattern pearl pegs range rect samegame \
+ signpost singles sixteen slant solo tents towers tracks \
+ twiddle undead unequal unruly untangle
+AUTOMAKE_OPTIONS = subdir-objects
+allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \
+ ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \
+ ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \
+ ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \
+ ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \
+ ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \
+ ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \
+ ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \
+ ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \
+ ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \
+ ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \
+ ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \
+ ./untangle.c ./version.c ./version.h ./windows.c
+
+AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/
+AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS)
+blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+blackbox_LDADD = $(GTK_LIBS) -lm
+bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \
+ ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
+
+bridges_LDADD = $(GTK_LIBS) -lm
+cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+
+cube_LDADD = $(GTK_LIBS) -lm
+dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+dominosa_LDADD = $(GTK_LIBS) -lm
+fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+fifteen_LDADD = $(GTK_LIBS) -lm
+fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm
+filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+filling_LDADD = $(GTK_LIBS) -lm
+fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm
+flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+flip_LDADD = $(GTK_LIBS) -lm
+flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+
+flood_LDADD = $(GTK_LIBS) -lm
+galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+galaxies_LDADD = $(GTK_LIBS) -lm
+galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm
+galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm
+guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+
+guess_LDADD = $(GTK_LIBS) -lm
+inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+inertia_LDADD = $(GTK_LIBS) -lm
+keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \
+ ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+keen_LDADD = $(GTK_LIBS) -lm
+keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm
+latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm
+lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+lightup_LDADD = $(GTK_LIBS) -lm
+lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm
+loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
+ ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \
+ ./version.h
+
+loopy_LDADD = $(GTK_LIBS) -lm
+loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
+ ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm
+magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+magnets_LDADD = $(GTK_LIBS) -lm
+magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+
+magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm
+map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+map_LDADD = $(GTK_LIBS) -lm
+mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm
+mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h
+
+mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm
+mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+mines_LDADD = $(GTK_LIBS) -lm
+net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+
+net_LDADD = $(GTK_LIBS) -lm
+netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+
+netslide_LDADD = $(GTK_LIBS) -lm
+nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+nullgame_LDADD = $(GTK_LIBS) -lm
+obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \
+ ./random.c
+
+obfusc_LDADD = -lm
+palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
+
+palisade_LDADD = $(GTK_LIBS) -lm
+pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+pattern_LDADD = $(GTK_LIBS) -lm
+patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm
+patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm
+pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
+ ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \
+ ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \
+ ./version.c ./version.h
+
+pearl_LDADD = $(GTK_LIBS) -lm
+pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
+ ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
+ ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h
+
+pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm
+pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+
+pegs_LDADD = $(GTK_LIBS) -lm
+range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./range.c ./version.c ./version.h
+
+range_LDADD = $(GTK_LIBS) -lm
+rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./rect.c ./version.c ./version.h
+
+rect_LDADD = $(GTK_LIBS) -lm
+samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./samegame.c ./version.c ./version.h
+
+samegame_LDADD = $(GTK_LIBS) -lm
+signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./signpost.c ./version.c ./version.h
+
+signpost_LDADD = $(GTK_LIBS) -lm
+signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm
+singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+singles_LDADD = $(GTK_LIBS) -lm
+singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \
+ ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h
+
+singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm
+sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./sixteen.c ./version.c ./version.h
+
+sixteen_LDADD = $(GTK_LIBS) -lm
+slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./slant.c ./version.c ./version.h
+
+slant_LDADD = $(GTK_LIBS) -lm
+slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+
+slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm
+solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./solo.c ./version.c ./version.h
+
+solo_LDADD = $(GTK_LIBS) -lm
+solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+
+solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm
+tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \
+ ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \
+ ./version.h
+
+tents_LDADD = $(GTK_LIBS) -lm
+tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c
+
+tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm
+towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+towers_LDADD = $(GTK_LIBS) -lm
+towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
+ libtowers2_a-towers.$(OBJEXT) -lm
+
+tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h
+
+tracks_LDADD = $(GTK_LIBS) -lm
+twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./twiddle.c ./version.c ./version.h
+
+twiddle_LDADD = $(GTK_LIBS) -lm
+undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./undead.c ./version.c ./version.h
+
+undead_LDADD = $(GTK_LIBS) -lm
+unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \
+ ./tree234.h ./unequal.c ./version.c ./version.h
+
+unequal_LDADD = $(GTK_LIBS) -lm
+unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
+ libunequal2_a-unequal.$(OBJEXT) -lm
+
+unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./unruly.c ./version.c ./version.h
+
+unruly_LDADD = $(GTK_LIBS) -lm
+unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c
+unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm
+untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h
+
+untangle_LDADD = $(GTK_LIBS) -lm
+libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h
+libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libfilling2_a_SOURCES = ./filling.c ./puzzles.h
+libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h
+libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h
+libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
+ -DSTANDALONE_PICTURE_GENERATOR
+
+libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h
+libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+
+liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+
+liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST
+liblightup2_a_SOURCES = ./lightup.c ./puzzles.h
+liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h
+libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmap2_a_SOURCES = ./map.c ./puzzles.h
+libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h
+libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR
+libpattern2_a_SOURCES = ./pattern.c ./puzzles.h
+libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libpattern4_a_SOURCES = ./pattern.c ./puzzles.h
+libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
+ -DSTANDALONE_PICTURE_GENERATOR
+
+libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h
+libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h
+libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libslant2_a_SOURCES = ./slant.c ./puzzles.h
+libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsolo2_a_SOURCES = ./solo.c ./puzzles.h
+libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h
+libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h
+libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h
+libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libunruly2_a_SOURCES = ./unruly.c ./puzzles.h
+libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \
+ libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \
+ libmagnets2.a libmap2.a libmines2.a libpattern2.a \
+ libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \
+ libslant2.a libsolo2.a libtents3.a libtowers2.a \
+ libunequal2.a libunruly2.a
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+./$(am__dirstamp):
+ @$(MKDIR_P) .
+ @: > ./$(am__dirstamp)
+$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) ./$(DEPDIR)
+ @: > $(DEPDIR)/$(am__dirstamp)
+./libfifteen2_a-fifteen.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libfifteen2.a: $(libfifteen2_a_OBJECTS) $(libfifteen2_a_DEPENDENCIES) $(EXTRA_libfifteen2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libfifteen2.a
+ $(AM_V_AR)$(libfifteen2_a_AR) libfifteen2.a $(libfifteen2_a_OBJECTS) $(libfifteen2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libfifteen2.a
+./libfilling2_a-filling.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libfilling2.a: $(libfilling2_a_OBJECTS) $(libfilling2_a_DEPENDENCIES) $(EXTRA_libfilling2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libfilling2.a
+ $(AM_V_AR)$(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libfilling2.a
+./libgalaxie2_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libgalaxie2.a: $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_DEPENDENCIES) $(EXTRA_libgalaxie2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libgalaxie2.a
+ $(AM_V_AR)$(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libgalaxie2.a
+./libgalaxie4_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libgalaxie4.a: $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_DEPENDENCIES) $(EXTRA_libgalaxie4_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libgalaxie4.a
+ $(AM_V_AR)$(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libgalaxie4.a
+./libkeen2_a-keen.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libkeen2.a: $(libkeen2_a_OBJECTS) $(libkeen2_a_DEPENDENCIES) $(EXTRA_libkeen2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libkeen2.a
+ $(AM_V_AR)$(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libkeen2.a
+./liblatin6_a-latin.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+liblatin6.a: $(liblatin6_a_OBJECTS) $(liblatin6_a_DEPENDENCIES) $(EXTRA_liblatin6_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f liblatin6.a
+ $(AM_V_AR)$(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD)
+ $(AM_V_at)$(RANLIB) liblatin6.a
+./liblatin8_a-latin.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+liblatin8.a: $(liblatin8_a_OBJECTS) $(liblatin8_a_DEPENDENCIES) $(EXTRA_liblatin8_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f liblatin8.a
+ $(AM_V_AR)$(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD)
+ $(AM_V_at)$(RANLIB) liblatin8.a
+./liblightup2_a-lightup.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+liblightup2.a: $(liblightup2_a_OBJECTS) $(liblightup2_a_DEPENDENCIES) $(EXTRA_liblightup2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f liblightup2.a
+ $(AM_V_AR)$(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) liblightup2.a
+./libloopy2_a-loopy.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libloopy2.a: $(libloopy2_a_OBJECTS) $(libloopy2_a_DEPENDENCIES) $(EXTRA_libloopy2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libloopy2.a
+ $(AM_V_AR)$(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libloopy2.a
+./libmagnets2_a-magnets.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libmagnets2.a: $(libmagnets2_a_OBJECTS) $(libmagnets2_a_DEPENDENCIES) $(EXTRA_libmagnets2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libmagnets2.a
+ $(AM_V_AR)$(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libmagnets2.a
+./libmap2_a-map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+libmap2.a: $(libmap2_a_OBJECTS) $(libmap2_a_DEPENDENCIES) $(EXTRA_libmap2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libmap2.a
+ $(AM_V_AR)$(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libmap2.a
+./libmines2_a-mines.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libmines2.a: $(libmines2_a_OBJECTS) $(libmines2_a_DEPENDENCIES) $(EXTRA_libmines2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libmines2.a
+ $(AM_V_AR)$(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libmines2.a
+./libpattern2_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libpattern2.a: $(libpattern2_a_OBJECTS) $(libpattern2_a_DEPENDENCIES) $(EXTRA_libpattern2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpattern2.a
+ $(AM_V_AR)$(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpattern2.a
+./libpattern4_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libpattern4.a: $(libpattern4_a_OBJECTS) $(libpattern4_a_DEPENDENCIES) $(EXTRA_libpattern4_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpattern4.a
+ $(AM_V_AR)$(libpattern4_a_AR) libpattern4.a $(libpattern4_a_OBJECTS) $(libpattern4_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpattern4.a
+./libpearl2_a-pearl.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libpearl2.a: $(libpearl2_a_OBJECTS) $(libpearl2_a_DEPENDENCIES) $(EXTRA_libpearl2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpearl2.a
+ $(AM_V_AR)$(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpearl2.a
+./libsignpos2_a-signpost.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libsignpos2.a: $(libsignpos2_a_OBJECTS) $(libsignpos2_a_DEPENDENCIES) $(EXTRA_libsignpos2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libsignpos2.a
+ $(AM_V_AR)$(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libsignpos2.a
+./libsingles3_a-singles.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libsingles3.a: $(libsingles3_a_OBJECTS) $(libsingles3_a_DEPENDENCIES) $(EXTRA_libsingles3_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libsingles3.a
+ $(AM_V_AR)$(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libsingles3.a
+./libslant2_a-slant.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libslant2.a: $(libslant2_a_OBJECTS) $(libslant2_a_DEPENDENCIES) $(EXTRA_libslant2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libslant2.a
+ $(AM_V_AR)$(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libslant2.a
+./libsolo2_a-solo.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libsolo2.a: $(libsolo2_a_OBJECTS) $(libsolo2_a_DEPENDENCIES) $(EXTRA_libsolo2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libsolo2.a
+ $(AM_V_AR)$(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libsolo2.a
+./libtents3_a-tents.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libtents3.a: $(libtents3_a_OBJECTS) $(libtents3_a_DEPENDENCIES) $(EXTRA_libtents3_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtents3.a
+ $(AM_V_AR)$(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtents3.a
+./libtowers2_a-towers.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libtowers2.a: $(libtowers2_a_OBJECTS) $(libtowers2_a_DEPENDENCIES) $(EXTRA_libtowers2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtowers2.a
+ $(AM_V_AR)$(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtowers2.a
+./libunequal2_a-unequal.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libunequal2.a: $(libunequal2_a_OBJECTS) $(libunequal2_a_DEPENDENCIES) $(EXTRA_libunequal2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libunequal2.a
+ $(AM_V_AR)$(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libunequal2.a
+./libunruly2_a-unruly.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libunruly2.a: $(libunruly2_a_OBJECTS) $(libunruly2_a_DEPENDENCIES) $(EXTRA_libunruly2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libunruly2.a
+ $(AM_V_AR)$(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libunruly2.a
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+./blackbox.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./drawing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./gtk.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./malloc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./midend.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./misc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./no-icon.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./printing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./ps.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./random.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./version.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+blackbox$(EXEEXT): $(blackbox_OBJECTS) $(blackbox_DEPENDENCIES) $(EXTRA_blackbox_DEPENDENCIES)
+ @rm -f blackbox$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS)
+./bridges.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./dsf.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./findloop.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+bridges$(EXEEXT): $(bridges_OBJECTS) $(bridges_DEPENDENCIES) $(EXTRA_bridges_DEPENDENCIES)
+ @rm -f bridges$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS)
+./cube.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+cube$(EXEEXT): $(cube_OBJECTS) $(cube_DEPENDENCIES) $(EXTRA_cube_DEPENDENCIES)
+ @rm -f cube$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS)
+./dominosa.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./laydomino.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+dominosa$(EXEEXT): $(dominosa_OBJECTS) $(dominosa_DEPENDENCIES) $(EXTRA_dominosa_DEPENDENCIES)
+ @rm -f dominosa$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS)
+./fifteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+fifteen$(EXEEXT): $(fifteen_OBJECTS) $(fifteen_DEPENDENCIES) $(EXTRA_fifteen_DEPENDENCIES)
+ @rm -f fifteen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS)
+./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+fifteensolver$(EXEEXT): $(fifteensolver_OBJECTS) $(fifteensolver_DEPENDENCIES) $(EXTRA_fifteensolver_DEPENDENCIES)
+ @rm -f fifteensolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fifteensolver_OBJECTS) $(fifteensolver_LDADD) $(LIBS)
+./filling.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+filling$(EXEEXT): $(filling_OBJECTS) $(filling_DEPENDENCIES) $(EXTRA_filling_DEPENDENCIES)
+ @rm -f filling$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS)
+
+fillingsolver$(EXEEXT): $(fillingsolver_OBJECTS) $(fillingsolver_DEPENDENCIES) $(EXTRA_fillingsolver_DEPENDENCIES)
+ @rm -f fillingsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS)
+./flip.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./tree234.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+flip$(EXEEXT): $(flip_OBJECTS) $(flip_DEPENDENCIES) $(EXTRA_flip_DEPENDENCIES)
+ @rm -f flip$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS)
+./flood.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+flood$(EXEEXT): $(flood_OBJECTS) $(flood_DEPENDENCIES) $(EXTRA_flood_DEPENDENCIES)
+ @rm -f flood$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(flood_OBJECTS) $(flood_LDADD) $(LIBS)
+./galaxies.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+galaxies$(EXEEXT): $(galaxies_OBJECTS) $(galaxies_DEPENDENCIES) $(EXTRA_galaxies_DEPENDENCIES)
+ @rm -f galaxies$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS)
+
+galaxiespicture$(EXEEXT): $(galaxiespicture_OBJECTS) $(galaxiespicture_DEPENDENCIES) $(EXTRA_galaxiespicture_DEPENDENCIES)
+ @rm -f galaxiespicture$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS)
+
+galaxiessolver$(EXEEXT): $(galaxiessolver_OBJECTS) $(galaxiessolver_DEPENDENCIES) $(EXTRA_galaxiessolver_DEPENDENCIES)
+ @rm -f galaxiessolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS)
+./guess.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+guess$(EXEEXT): $(guess_OBJECTS) $(guess_DEPENDENCIES) $(EXTRA_guess_DEPENDENCIES)
+ @rm -f guess$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS)
+./inertia.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+inertia$(EXEEXT): $(inertia_OBJECTS) $(inertia_DEPENDENCIES) $(EXTRA_inertia_DEPENDENCIES)
+ @rm -f inertia$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS)
+./keen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./latin.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./maxflow.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+keen$(EXEEXT): $(keen_OBJECTS) $(keen_DEPENDENCIES) $(EXTRA_keen_DEPENDENCIES)
+ @rm -f keen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS)
+
+keensolver$(EXEEXT): $(keensolver_OBJECTS) $(keensolver_DEPENDENCIES) $(EXTRA_keensolver_DEPENDENCIES)
+ @rm -f keensolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS)
+
+latincheck$(EXEEXT): $(latincheck_OBJECTS) $(latincheck_DEPENDENCIES) $(EXTRA_latincheck_DEPENDENCIES)
+ @rm -f latincheck$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS)
+./combi.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./lightup.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+lightup$(EXEEXT): $(lightup_OBJECTS) $(lightup_DEPENDENCIES) $(EXTRA_lightup_DEPENDENCIES)
+ @rm -f lightup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS)
+
+lightupsolver$(EXEEXT): $(lightupsolver_OBJECTS) $(lightupsolver_DEPENDENCIES) $(EXTRA_lightupsolver_DEPENDENCIES)
+ @rm -f lightupsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS)
+./grid.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./loopgen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./loopy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./penrose.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+loopy$(EXEEXT): $(loopy_OBJECTS) $(loopy_DEPENDENCIES) $(EXTRA_loopy_DEPENDENCIES)
+ @rm -f loopy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS)
+
+loopysolver$(EXEEXT): $(loopysolver_OBJECTS) $(loopysolver_DEPENDENCIES) $(EXTRA_loopysolver_DEPENDENCIES)
+ @rm -f loopysolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS)
+./magnets.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+magnets$(EXEEXT): $(magnets_OBJECTS) $(magnets_DEPENDENCIES) $(EXTRA_magnets_DEPENDENCIES)
+ @rm -f magnets$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS)
+
+magnetssolver$(EXEEXT): $(magnetssolver_OBJECTS) $(magnetssolver_DEPENDENCIES) $(EXTRA_magnetssolver_DEPENDENCIES)
+ @rm -f magnetssolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS)
+./map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+map$(EXEEXT): $(map_OBJECTS) $(map_DEPENDENCIES) $(EXTRA_map_DEPENDENCIES)
+ @rm -f map$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS)
+
+mapsolver$(EXEEXT): $(mapsolver_OBJECTS) $(mapsolver_DEPENDENCIES) $(EXTRA_mapsolver_DEPENDENCIES)
+ @rm -f mapsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS)
+
+mineobfusc$(EXEEXT): $(mineobfusc_OBJECTS) $(mineobfusc_DEPENDENCIES) $(EXTRA_mineobfusc_DEPENDENCIES)
+ @rm -f mineobfusc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS)
+./mines.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+mines$(EXEEXT): $(mines_OBJECTS) $(mines_DEPENDENCIES) $(EXTRA_mines_DEPENDENCIES)
+ @rm -f mines$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS)
+./net.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+net$(EXEEXT): $(net_OBJECTS) $(net_DEPENDENCIES) $(EXTRA_net_DEPENDENCIES)
+ @rm -f net$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS)
+./netslide.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+netslide$(EXEEXT): $(netslide_OBJECTS) $(netslide_DEPENDENCIES) $(EXTRA_netslide_DEPENDENCIES)
+ @rm -f netslide$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS)
+./nullgame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+nullgame$(EXEEXT): $(nullgame_OBJECTS) $(nullgame_DEPENDENCIES) $(EXTRA_nullgame_DEPENDENCIES)
+ @rm -f nullgame$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS)
+./obfusc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+obfusc$(EXEEXT): $(obfusc_OBJECTS) $(obfusc_DEPENDENCIES) $(EXTRA_obfusc_DEPENDENCIES)
+ @rm -f obfusc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS)
+./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./palisade.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+palisade$(EXEEXT): $(palisade_OBJECTS) $(palisade_DEPENDENCIES) $(EXTRA_palisade_DEPENDENCIES)
+ @rm -f palisade$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(palisade_OBJECTS) $(palisade_LDADD) $(LIBS)
+./pattern.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES)
+ @rm -f pattern$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS)
+
+patternpicture$(EXEEXT): $(patternpicture_OBJECTS) $(patternpicture_DEPENDENCIES) $(EXTRA_patternpicture_DEPENDENCIES)
+ @rm -f patternpicture$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(patternpicture_OBJECTS) $(patternpicture_LDADD) $(LIBS)
+
+patternsolver$(EXEEXT): $(patternsolver_OBJECTS) $(patternsolver_DEPENDENCIES) $(EXTRA_patternsolver_DEPENDENCIES)
+ @rm -f patternsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS)
+./pearl.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./tdq.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+pearl$(EXEEXT): $(pearl_OBJECTS) $(pearl_DEPENDENCIES) $(EXTRA_pearl_DEPENDENCIES)
+ @rm -f pearl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS)
+
+pearlbench$(EXEEXT): $(pearlbench_OBJECTS) $(pearlbench_DEPENDENCIES) $(EXTRA_pearlbench_DEPENDENCIES)
+ @rm -f pearlbench$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS)
+./pegs.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+pegs$(EXEEXT): $(pegs_OBJECTS) $(pegs_DEPENDENCIES) $(EXTRA_pegs_DEPENDENCIES)
+ @rm -f pegs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS)
+./range.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+range$(EXEEXT): $(range_OBJECTS) $(range_DEPENDENCIES) $(EXTRA_range_DEPENDENCIES)
+ @rm -f range$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS)
+./rect.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+rect$(EXEEXT): $(rect_OBJECTS) $(rect_DEPENDENCIES) $(EXTRA_rect_DEPENDENCIES)
+ @rm -f rect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS)
+./samegame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+samegame$(EXEEXT): $(samegame_OBJECTS) $(samegame_DEPENDENCIES) $(EXTRA_samegame_DEPENDENCIES)
+ @rm -f samegame$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS)
+./signpost.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+signpost$(EXEEXT): $(signpost_OBJECTS) $(signpost_DEPENDENCIES) $(EXTRA_signpost_DEPENDENCIES)
+ @rm -f signpost$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS)
+
+signpostsolver$(EXEEXT): $(signpostsolver_OBJECTS) $(signpostsolver_DEPENDENCIES) $(EXTRA_signpostsolver_DEPENDENCIES)
+ @rm -f signpostsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS)
+./singles.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+singles$(EXEEXT): $(singles_OBJECTS) $(singles_DEPENDENCIES) $(EXTRA_singles_DEPENDENCIES)
+ @rm -f singles$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS)
+
+singlessolver$(EXEEXT): $(singlessolver_OBJECTS) $(singlessolver_DEPENDENCIES) $(EXTRA_singlessolver_DEPENDENCIES)
+ @rm -f singlessolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS)
+./sixteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+sixteen$(EXEEXT): $(sixteen_OBJECTS) $(sixteen_DEPENDENCIES) $(EXTRA_sixteen_DEPENDENCIES)
+ @rm -f sixteen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS)
+./slant.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+slant$(EXEEXT): $(slant_OBJECTS) $(slant_DEPENDENCIES) $(EXTRA_slant_DEPENDENCIES)
+ @rm -f slant$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS)
+
+slantsolver$(EXEEXT): $(slantsolver_OBJECTS) $(slantsolver_DEPENDENCIES) $(EXTRA_slantsolver_DEPENDENCIES)
+ @rm -f slantsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS)
+./solo.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+solo$(EXEEXT): $(solo_OBJECTS) $(solo_DEPENDENCIES) $(EXTRA_solo_DEPENDENCIES)
+ @rm -f solo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS)
+
+solosolver$(EXEEXT): $(solosolver_OBJECTS) $(solosolver_DEPENDENCIES) $(EXTRA_solosolver_DEPENDENCIES)
+ @rm -f solosolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS)
+./tents.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+tents$(EXEEXT): $(tents_OBJECTS) $(tents_DEPENDENCIES) $(EXTRA_tents_DEPENDENCIES)
+ @rm -f tents$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS)
+
+tentssolver$(EXEEXT): $(tentssolver_OBJECTS) $(tentssolver_DEPENDENCIES) $(EXTRA_tentssolver_DEPENDENCIES)
+ @rm -f tentssolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS)
+./towers.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+towers$(EXEEXT): $(towers_OBJECTS) $(towers_DEPENDENCIES) $(EXTRA_towers_DEPENDENCIES)
+ @rm -f towers$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS)
+
+towerssolver$(EXEEXT): $(towerssolver_OBJECTS) $(towerssolver_DEPENDENCIES) $(EXTRA_towerssolver_DEPENDENCIES)
+ @rm -f towerssolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS)
+./tracks.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES) $(EXTRA_tracks_DEPENDENCIES)
+ @rm -f tracks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS)
+./twiddle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+twiddle$(EXEEXT): $(twiddle_OBJECTS) $(twiddle_DEPENDENCIES) $(EXTRA_twiddle_DEPENDENCIES)
+ @rm -f twiddle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS)
+./undead.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+undead$(EXEEXT): $(undead_OBJECTS) $(undead_DEPENDENCIES) $(EXTRA_undead_DEPENDENCIES)
+ @rm -f undead$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS)
+./unequal.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+unequal$(EXEEXT): $(unequal_OBJECTS) $(unequal_DEPENDENCIES) $(EXTRA_unequal_DEPENDENCIES)
+ @rm -f unequal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS)
+
+unequalsolver$(EXEEXT): $(unequalsolver_OBJECTS) $(unequalsolver_DEPENDENCIES) $(EXTRA_unequalsolver_DEPENDENCIES)
+ @rm -f unequalsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS)
+./unruly.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+unruly$(EXEEXT): $(unruly_OBJECTS) $(unruly_DEPENDENCIES) $(EXTRA_unruly_DEPENDENCIES)
+ @rm -f unruly$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS)
+
+unrulysolver$(EXEEXT): $(unrulysolver_OBJECTS) $(unrulysolver_DEPENDENCIES) $(EXTRA_unrulysolver_DEPENDENCIES)
+ @rm -f unrulysolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS)
+./untangle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+untangle$(EXEEXT): $(untangle_OBJECTS) $(untangle_DEPENDENCIES) $(EXTRA_untangle_DEPENDENCIES)
+ @rm -f untangle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f ./*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/blackbox.Po
+include ./$(DEPDIR)/bridges.Po
+include ./$(DEPDIR)/combi.Po
+include ./$(DEPDIR)/cube.Po
+include ./$(DEPDIR)/divvy.Po
+include ./$(DEPDIR)/dominosa.Po
+include ./$(DEPDIR)/drawing.Po
+include ./$(DEPDIR)/dsf.Po
+include ./$(DEPDIR)/fifteen.Po
+include ./$(DEPDIR)/filling.Po
+include ./$(DEPDIR)/findloop.Po
+include ./$(DEPDIR)/flip.Po
+include ./$(DEPDIR)/flood.Po
+include ./$(DEPDIR)/galaxies.Po
+include ./$(DEPDIR)/grid.Po
+include ./$(DEPDIR)/gtk.Po
+include ./$(DEPDIR)/guess.Po
+include ./$(DEPDIR)/inertia.Po
+include ./$(DEPDIR)/keen.Po
+include ./$(DEPDIR)/latin.Po
+include ./$(DEPDIR)/laydomino.Po
+include ./$(DEPDIR)/libfifteen2_a-fifteen.Po
+include ./$(DEPDIR)/libfilling2_a-filling.Po
+include ./$(DEPDIR)/libgalaxie2_a-galaxies.Po
+include ./$(DEPDIR)/libgalaxie4_a-galaxies.Po
+include ./$(DEPDIR)/libkeen2_a-keen.Po
+include ./$(DEPDIR)/liblatin6_a-latin.Po
+include ./$(DEPDIR)/liblatin8_a-latin.Po
+include ./$(DEPDIR)/liblightup2_a-lightup.Po
+include ./$(DEPDIR)/libloopy2_a-loopy.Po
+include ./$(DEPDIR)/libmagnets2_a-magnets.Po
+include ./$(DEPDIR)/libmap2_a-map.Po
+include ./$(DEPDIR)/libmines2_a-mines.Po
+include ./$(DEPDIR)/libpattern2_a-pattern.Po
+include ./$(DEPDIR)/libpattern4_a-pattern.Po
+include ./$(DEPDIR)/libpearl2_a-pearl.Po
+include ./$(DEPDIR)/libsignpos2_a-signpost.Po
+include ./$(DEPDIR)/libsingles3_a-singles.Po
+include ./$(DEPDIR)/libslant2_a-slant.Po
+include ./$(DEPDIR)/libsolo2_a-solo.Po
+include ./$(DEPDIR)/libtents3_a-tents.Po
+include ./$(DEPDIR)/libtowers2_a-towers.Po
+include ./$(DEPDIR)/libunequal2_a-unequal.Po
+include ./$(DEPDIR)/libunruly2_a-unruly.Po
+include ./$(DEPDIR)/lightup.Po
+include ./$(DEPDIR)/loopgen.Po
+include ./$(DEPDIR)/loopy.Po
+include ./$(DEPDIR)/magnets.Po
+include ./$(DEPDIR)/malloc.Po
+include ./$(DEPDIR)/map.Po
+include ./$(DEPDIR)/maxflow.Po
+include ./$(DEPDIR)/midend.Po
+include ./$(DEPDIR)/mines.Po
+include ./$(DEPDIR)/misc.Po
+include ./$(DEPDIR)/net.Po
+include ./$(DEPDIR)/netslide.Po
+include ./$(DEPDIR)/no-icon.Po
+include ./$(DEPDIR)/nullfe.Po
+include ./$(DEPDIR)/nullgame.Po
+include ./$(DEPDIR)/obfusc.Po
+include ./$(DEPDIR)/palisade.Po
+include ./$(DEPDIR)/pattern.Po
+include ./$(DEPDIR)/pearl.Po
+include ./$(DEPDIR)/pegs.Po
+include ./$(DEPDIR)/penrose.Po
+include ./$(DEPDIR)/printing.Po
+include ./$(DEPDIR)/ps.Po
+include ./$(DEPDIR)/random.Po
+include ./$(DEPDIR)/range.Po
+include ./$(DEPDIR)/rect.Po
+include ./$(DEPDIR)/samegame.Po
+include ./$(DEPDIR)/signpost.Po
+include ./$(DEPDIR)/singles.Po
+include ./$(DEPDIR)/sixteen.Po
+include ./$(DEPDIR)/slant.Po
+include ./$(DEPDIR)/solo.Po
+include ./$(DEPDIR)/tdq.Po
+include ./$(DEPDIR)/tents.Po
+include ./$(DEPDIR)/towers.Po
+include ./$(DEPDIR)/tracks.Po
+include ./$(DEPDIR)/tree234.Po
+include ./$(DEPDIR)/twiddle.Po
+include ./$(DEPDIR)/undead.Po
+include ./$(DEPDIR)/unequal.Po
+include ./$(DEPDIR)/unruly.Po
+include ./$(DEPDIR)/untangle.Po
+include ./$(DEPDIR)/version.Po
+
+.c.o:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+./libfifteen2_a-fifteen.o: ./fifteen.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
+# $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libfifteen2_a-fifteen.obj: ./fifteen.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
+# $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libfilling2_a-filling.o: ./filling.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
+# $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libfilling2_a-filling.obj: ./filling.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
+# $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libgalaxie2_a-galaxies.o: ./galaxies.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
+# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libgalaxie2_a-galaxies.obj: ./galaxies.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
+# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libgalaxie4_a-galaxies.o: ./galaxies.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
+# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libgalaxie4_a-galaxies.obj: ./galaxies.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
+# $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libkeen2_a-keen.o: ./keen.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
+# $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libkeen2_a-keen.obj: ./keen.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
+# $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./liblatin6_a-latin.o: ./latin.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
+# $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./liblatin6_a-latin.obj: ./latin.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
+# $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./liblatin8_a-latin.o: ./latin.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
+# $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./liblatin8_a-latin.obj: ./latin.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
+# $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./liblightup2_a-lightup.o: ./lightup.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
+# $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./liblightup2_a-lightup.obj: ./lightup.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
+# $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libloopy2_a-loopy.o: ./loopy.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
+# $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libloopy2_a-loopy.obj: ./loopy.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
+# $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libmagnets2_a-magnets.o: ./magnets.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
+# $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libmagnets2_a-magnets.obj: ./magnets.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
+# $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libmap2_a-map.o: ./map.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
+# $(AM_V_CC)source='./map.c' object='./libmap2_a-map.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libmap2_a-map.obj: ./map.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
+# $(AM_V_CC)source='./map.c' object='./libmap2_a-map.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libmines2_a-mines.o: ./mines.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
+# $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libmines2_a-mines.obj: ./mines.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
+# $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libpattern2_a-pattern.o: ./pattern.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
+# $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libpattern2_a-pattern.obj: ./pattern.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
+# $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libpattern4_a-pattern.o: ./pattern.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
+# $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libpattern4_a-pattern.obj: ./pattern.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
+# $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libpearl2_a-pearl.o: ./pearl.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
+# $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libpearl2_a-pearl.obj: ./pearl.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
+# $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libsignpos2_a-signpost.o: ./signpost.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
+# $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libsignpos2_a-signpost.obj: ./signpost.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
+# $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libsingles3_a-singles.o: ./singles.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
+# $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libsingles3_a-singles.obj: ./singles.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
+# $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libslant2_a-slant.o: ./slant.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
+# $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libslant2_a-slant.obj: ./slant.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
+# $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libsolo2_a-solo.o: ./solo.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
+# $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libsolo2_a-solo.obj: ./solo.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
+# $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libtents3_a-tents.o: ./tents.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
+# $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libtents3_a-tents.obj: ./tents.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
+# $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libtowers2_a-towers.o: ./towers.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
+# $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libtowers2_a-towers.obj: ./towers.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
+# $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libunequal2_a-unequal.o: ./unequal.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
+# $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libunequal2_a-unequal.obj: ./unequal.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
+# $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+./libunruly2_a-unruly.o: ./unruly.c
+ $(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
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
+# $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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
+
+./libunruly2_a-unruly.obj: ./unruly.c
+ $(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`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
+# $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(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`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f ./$(am__dirstamp)
+ -test -z "$(DEPDIR)/$(am__dirstamp)" || rm -f $(DEPDIR)/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
+ clean-binPROGRAMS clean-cscope clean-generic \
+ clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
+ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+ distcheck distclean distclean-compile distclean-generic \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
+
+test: benchmark.html benchmark.txt
+
+benchmark.html: benchmark.txt benchmark.pl
+ ./benchmark.pl benchmark.txt > $@
+
+benchmark.txt: benchmark.sh $(GAMES)
+ ./benchmark.sh > $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.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 @@
+# Makefile.am for puzzles under Unix with Autoconf/Automake.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+GAMES =
+noinst_PROGRAMS = blackbox bridges cube dominosa fifteen fifteensolver \
+ filling fillingsolver flip flood galaxies galaxiespicture \
+ galaxiessolver guess inertia keen keensolver latincheck \
+ lightup lightupsolver loopy loopysolver magnets \
+ magnetssolver map mapsolver mineobfusc mines net netslide \
+ nullgame obfusc palisade pattern patternpicture \
+ patternsolver pearl pearlbench pegs range rect samegame \
+ signpost signpostsolver singles singlessolver sixteen slant \
+ slantsolver solo solosolver tents tentssolver towers \
+ towerssolver tracks twiddle undead unequal unequalsolver \
+ unruly unrulysolver untangle
+AUTOMAKE_OPTIONS = subdir-objects
+
+allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \
+ ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \
+ ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \
+ ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \
+ ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \
+ ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \
+ ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \
+ ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \
+ ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \
+ ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \
+ ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \
+ ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \
+ ./untangle.c ./version.c ./version.h ./windows.c
+
+AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/
+AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS)
+blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+blackbox_LDADD = $(GTK_LIBS) -lm
+
+bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \
+ ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
+bridges_LDADD = $(GTK_LIBS) -lm
+
+cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+cube_LDADD = $(GTK_LIBS) -lm
+
+dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+dominosa_LDADD = $(GTK_LIBS) -lm
+
+fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+fifteen_LDADD = $(GTK_LIBS) -lm
+
+fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm
+
+filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+filling_LDADD = $(GTK_LIBS) -lm
+
+fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm
+
+flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+flip_LDADD = $(GTK_LIBS) -lm
+
+flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+flood_LDADD = $(GTK_LIBS) -lm
+
+galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+galaxies_LDADD = $(GTK_LIBS) -lm
+
+galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm
+
+galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm
+
+guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+guess_LDADD = $(GTK_LIBS) -lm
+
+inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+inertia_LDADD = $(GTK_LIBS) -lm
+
+keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \
+ ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+keen_LDADD = $(GTK_LIBS) -lm
+
+keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm
+
+latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h
+latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm
+
+lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+lightup_LDADD = $(GTK_LIBS) -lm
+
+lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm
+
+loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
+ ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \
+ ./version.h
+loopy_LDADD = $(GTK_LIBS) -lm
+
+loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
+ ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h
+loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm
+
+magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+magnets_LDADD = $(GTK_LIBS) -lm
+
+magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm
+
+map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+map_LDADD = $(GTK_LIBS) -lm
+
+mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm
+
+mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h
+mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm
+
+mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+mines_LDADD = $(GTK_LIBS) -lm
+
+net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+net_LDADD = $(GTK_LIBS) -lm
+
+netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+netslide_LDADD = $(GTK_LIBS) -lm
+
+nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+nullgame_LDADD = $(GTK_LIBS) -lm
+
+obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \
+ ./random.c
+obfusc_LDADD = -lm
+
+palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
+palisade_LDADD = $(GTK_LIBS) -lm
+
+pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+pattern_LDADD = $(GTK_LIBS) -lm
+
+patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm
+
+patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm
+
+pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
+ ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \
+ ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \
+ ./version.c ./version.h
+pearl_LDADD = $(GTK_LIBS) -lm
+
+pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
+ ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
+ ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h
+pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm
+
+pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+pegs_LDADD = $(GTK_LIBS) -lm
+
+range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./range.c ./version.c ./version.h
+range_LDADD = $(GTK_LIBS) -lm
+
+rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./rect.c ./version.c ./version.h
+rect_LDADD = $(GTK_LIBS) -lm
+
+samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./samegame.c ./version.c ./version.h
+samegame_LDADD = $(GTK_LIBS) -lm
+
+signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./signpost.c ./version.c ./version.h
+signpost_LDADD = $(GTK_LIBS) -lm
+
+signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm
+
+singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+singles_LDADD = $(GTK_LIBS) -lm
+
+singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \
+ ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h
+singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm
+
+sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./sixteen.c ./version.c ./version.h
+sixteen_LDADD = $(GTK_LIBS) -lm
+
+slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./slant.c ./version.c ./version.h
+slant_LDADD = $(GTK_LIBS) -lm
+
+slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm
+
+solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./solo.c ./version.c ./version.h
+solo_LDADD = $(GTK_LIBS) -lm
+
+solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm
+
+tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \
+ ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \
+ ./version.h
+tents_LDADD = $(GTK_LIBS) -lm
+
+tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c
+tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm
+
+towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+towers_LDADD = $(GTK_LIBS) -lm
+
+towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
+ libtowers2_a-towers.$(OBJEXT) -lm
+
+tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h
+tracks_LDADD = $(GTK_LIBS) -lm
+
+twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./twiddle.c ./version.c ./version.h
+twiddle_LDADD = $(GTK_LIBS) -lm
+
+undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./undead.c ./version.c ./version.h
+undead_LDADD = $(GTK_LIBS) -lm
+
+unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \
+ ./tree234.h ./unequal.c ./version.c ./version.h
+unequal_LDADD = $(GTK_LIBS) -lm
+
+unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
+ libunequal2_a-unequal.$(OBJEXT) -lm
+
+unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./unruly.c ./version.c ./version.h
+unruly_LDADD = $(GTK_LIBS) -lm
+
+unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c
+unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm
+
+untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h
+untangle_LDADD = $(GTK_LIBS) -lm
+
+libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h
+libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libfilling2_a_SOURCES = ./filling.c ./puzzles.h
+libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h
+libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h
+libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
+ -DSTANDALONE_PICTURE_GENERATOR
+libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h
+libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST
+liblightup2_a_SOURCES = ./lightup.c ./puzzles.h
+liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h
+libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmap2_a_SOURCES = ./map.c ./puzzles.h
+libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h
+libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR
+libpattern2_a_SOURCES = ./pattern.c ./puzzles.h
+libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libpattern4_a_SOURCES = ./pattern.c ./puzzles.h
+libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
+ -DSTANDALONE_PICTURE_GENERATOR
+libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h
+libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h
+libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libslant2_a_SOURCES = ./slant.c ./puzzles.h
+libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsolo2_a_SOURCES = ./solo.c ./puzzles.h
+libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h
+libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h
+libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h
+libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libunruly2_a_SOURCES = ./unruly.c ./puzzles.h
+libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \
+ libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \
+ libmagnets2.a libmap2.a libmines2.a libpattern2.a \
+ libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \
+ libslant2.a libsolo2.a libtents3.a libtowers2.a \
+ libunequal2.a libunruly2.a
+
+GAMES += blackbox
+GAMES += bridges
+GAMES += cube
+GAMES += dominosa
+GAMES += fifteen
+GAMES += filling
+GAMES += flip
+GAMES += flood
+GAMES += galaxies
+GAMES += guess
+GAMES += inertia
+GAMES += keen
+GAMES += lightup
+GAMES += loopy
+GAMES += magnets
+GAMES += map
+GAMES += mines
+GAMES += net
+GAMES += netslide
+GAMES += palisade
+GAMES += pattern
+GAMES += pearl
+GAMES += pegs
+GAMES += range
+GAMES += rect
+GAMES += samegame
+GAMES += signpost
+GAMES += singles
+GAMES += sixteen
+GAMES += slant
+GAMES += solo
+GAMES += tents
+GAMES += towers
+GAMES += tracks
+GAMES += twiddle
+GAMES += undead
+GAMES += unequal
+GAMES += unruly
+GAMES += untangle
+bin_PROGRAMS = $(GAMES)
+test: benchmark.html benchmark.txt
+
+benchmark.html: benchmark.txt benchmark.pl
+ ./benchmark.pl benchmark.txt > $@
+
+benchmark.txt: benchmark.sh $(GAMES)
+ ./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 @@
+# Makefile for cross-compiling puzzles using clang-cl, lld-link,
+# and MinGW's windres, using GNU make on Linux.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+CCCMD = clang-cl
+ifeq ($(Platform),x64)
+CCTARGET = x86_64-pc-windows-msvc18.0.0
+RCCMD = x86_64-w64-mingw32-windres
+else
+CCTARGET = i386-pc-windows-msvc18.0.0
+RCCMD = i686-w64-mingw32-windres
+endif
+CC = $(CCCMD) --target=$(CCTARGET)
+RC = $(RCCMD) --preprocessor=$(CCCMD) --preprocessor-arg=/TC \
+ --preprocessor-arg=/E
+LD = lld-link
+
+# C compilation flags
+CFLAGS = /nologo /W3 /O1 -I./ -Iicons/ /D_WINDOWS /D_WIN32_WINDOWS=0x401 \
+ /DWINVER=0x401 /D_CRT_SECURE_NO_WARNINGS
+LFLAGS = /incremental:no /dynamicbase /nxcompat
+RCFLAGS = -I./ -Iicons/ -DWIN32 -D_WIN32 -DWINVER=0x0400 --define \
+ MINGW32_FIX=1
+
+
+all: $(BUILDDIR)blackbox.exe $(BUILDDIR)bridges.exe $(BUILDDIR)cube.exe \
+ $(BUILDDIR)dominosa.exe $(BUILDDIR)fifteen.exe \
+ $(BUILDDIR)fifteensolver.exe $(BUILDDIR)filling.exe \
+ $(BUILDDIR)fillingsolver.exe $(BUILDDIR)flip.exe \
+ $(BUILDDIR)flood.exe $(BUILDDIR)galaxies.exe \
+ $(BUILDDIR)galaxiespicture.exe $(BUILDDIR)galaxiessolver.exe \
+ $(BUILDDIR)guess.exe $(BUILDDIR)inertia.exe \
+ $(BUILDDIR)keen.exe $(BUILDDIR)keensolver.exe \
+ $(BUILDDIR)latincheck.exe $(BUILDDIR)lightup.exe \
+ $(BUILDDIR)lightupsolver.exe $(BUILDDIR)loopy.exe \
+ $(BUILDDIR)loopysolver.exe $(BUILDDIR)magnets.exe \
+ $(BUILDDIR)magnetssolver.exe $(BUILDDIR)map.exe \
+ $(BUILDDIR)mapsolver.exe $(BUILDDIR)mineobfusc.exe \
+ $(BUILDDIR)mines.exe $(BUILDDIR)netgame.exe \
+ $(BUILDDIR)netslide.exe $(BUILDDIR)nullgame.exe \
+ $(BUILDDIR)palisade.exe $(BUILDDIR)pattern.exe \
+ $(BUILDDIR)patternpicture.exe $(BUILDDIR)patternsolver.exe \
+ $(BUILDDIR)pearl.exe $(BUILDDIR)pearlbench.exe \
+ $(BUILDDIR)pegs.exe $(BUILDDIR)puzzles.exe \
+ $(BUILDDIR)range.exe $(BUILDDIR)rect.exe \
+ $(BUILDDIR)samegame.exe $(BUILDDIR)signpost.exe \
+ $(BUILDDIR)signpostsolver.exe $(BUILDDIR)singles.exe \
+ $(BUILDDIR)singlessolver.exe $(BUILDDIR)sixteen.exe \
+ $(BUILDDIR)slant.exe $(BUILDDIR)slantsolver.exe \
+ $(BUILDDIR)solo.exe $(BUILDDIR)solosolver.exe \
+ $(BUILDDIR)tents.exe $(BUILDDIR)tentssolver.exe \
+ $(BUILDDIR)towers.exe $(BUILDDIR)towerssolver.exe \
+ $(BUILDDIR)tracks.exe $(BUILDDIR)twiddle.exe \
+ $(BUILDDIR)undead.exe $(BUILDDIR)unequal.exe \
+ $(BUILDDIR)unequalsolver.exe $(BUILDDIR)unruly.exe \
+ $(BUILDDIR)unrulysolver.exe $(BUILDDIR)untangle.exe
+
+$(BUILDDIR)blackbox.exe: $(BUILDDIR)blackbox.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)blackbox.exe \
+ /lldmap:$(BUILDDIR)blackbox.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
+ $(BUILDDIR)blackbox.obj comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)bridges.exe: $(BUILDDIR)bridges.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)findloop.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)bridges.exe \
+ /lldmap:$(BUILDDIR)bridges.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
+ $(BUILDDIR)bridges.obj comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)cube.exe: $(BUILDDIR)cube.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)cube.exe \
+ /lldmap:$(BUILDDIR)cube.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)cube.obj $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)dominosa.exe: $(BUILDDIR)dominosa.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)laydomino.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)dominosa.exe \
+ /lldmap:$(BUILDDIR)dominosa.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)dominosa.obj $(BUILDDIR)drawing.obj \
+ gdi32.lib $(BUILDDIR)laydomino.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)fifteen.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)fifteen.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)fifteen.exe \
+ /lldmap:$(BUILDDIR)fifteen.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)fifteen.obj \
+ gdi32.lib $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)fifteensolver.exe: $(BUILDDIR)fifteen2.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)fifteensolver.exe \
+ /lldmap:$(BUILDDIR)fifteensolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)fifteen2.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj
+
+$(BUILDDIR)filling.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)filling.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)filling.exe \
+ /lldmap:$(BUILDDIR)filling.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)filling.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)fillingsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)filling2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)fillingsolver.exe \
+ /lldmap:$(BUILDDIR)fillingsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)filling2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+
+$(BUILDDIR)flip.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)flip.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)flip.exe \
+ /lldmap:$(BUILDDIR)flip.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)flip.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)flood.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)flood.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)flood.exe \
+ /lldmap:$(BUILDDIR)flood.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)flood.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)galaxies.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)galaxies.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)galaxies.exe \
+ /lldmap:$(BUILDDIR)galaxies.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)galaxies.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)galaxiespicture.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie4.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)galaxiespicture.exe \
+ /lldmap:$(BUILDDIR)galaxiespicture.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie4.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+
+$(BUILDDIR)galaxiessolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)galaxiessolver.exe \
+ /lldmap:$(BUILDDIR)galaxiessolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)galaxie2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+
+$(BUILDDIR)guess.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)guess.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)guess.exe \
+ /lldmap:$(BUILDDIR)guess.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)guess.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)inertia.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)inertia.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)inertia.exe \
+ /lldmap:$(BUILDDIR)inertia.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)inertia.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)keen.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)keen.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)keen.exe \
+ /lldmap:$(BUILDDIR)keen.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
+ $(BUILDDIR)keen.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)keensolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)keen2.obj \
+ $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)keensolver.exe \
+ /lldmap:$(BUILDDIR)keensolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)keen2.obj \
+ $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)latincheck.exe: $(BUILDDIR)latin8.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)latincheck.exe \
+ /lldmap:$(BUILDDIR)latincheck.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)latin8.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)lightup.exe: $(BUILDDIR)combi.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)lightup.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)lightup.exe \
+ /lldmap:$(BUILDDIR)lightup.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
+ $(BUILDDIR)combi.obj comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)lightup.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)lightupsolver.exe: $(BUILDDIR)combi.obj $(BUILDDIR)lightup2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)lightupsolver.exe \
+ /lldmap:$(BUILDDIR)lightupsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)combi.obj $(BUILDDIR)lightup2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+
+$(BUILDDIR)loopy.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
+ $(BUILDDIR)loopy.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)loopy.exe \
+ /lldmap:$(BUILDDIR)loopy.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
+ $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
+ $(BUILDDIR)loopy.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)loopysolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
+ $(BUILDDIR)loopgen.obj $(BUILDDIR)loopy2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)loopysolver.exe \
+ /lldmap:$(BUILDDIR)loopysolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
+ $(BUILDDIR)loopgen.obj $(BUILDDIR)loopy2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)magnets.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)laydomino.obj \
+ $(BUILDDIR)magnets.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)magnets.exe \
+ /lldmap:$(BUILDDIR)magnets.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)laydomino.obj $(BUILDDIR)magnets.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)magnetssolver.exe: $(BUILDDIR)laydomino.obj \
+ $(BUILDDIR)magnets2.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)magnetssolver.exe \
+ /lldmap:$(BUILDDIR)magnetssolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)laydomino.obj $(BUILDDIR)magnets2.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+
+$(BUILDDIR)map.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)map.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)map.exe \
+ /lldmap:$(BUILDDIR)map.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)map.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)mapsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)map2.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)mapsolver.exe \
+ /lldmap:$(BUILDDIR)mapsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj $(BUILDDIR)map2.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj
+
+$(BUILDDIR)mineobfusc.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)mines2.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)mineobfusc.exe \
+ /lldmap:$(BUILDDIR)mineobfusc.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)mines2.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)mines.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)mines.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)mines.exe \
+ /lldmap:$(BUILDDIR)mines.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)mines.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)netgame.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj $(BUILDDIR)net.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)netgame.exe \
+ /lldmap:$(BUILDDIR)netgame.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj $(BUILDDIR)net.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)netslide.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)netslide.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)netslide.exe \
+ /lldmap:$(BUILDDIR)netslide.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)netslide.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)nullgame.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)nullgame.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)nullgame.exe \
+ /lldmap:$(BUILDDIR)nullgame.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)nullgame.obj $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)palisade.exe: $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)palisade.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)palisade.exe \
+ /lldmap:$(BUILDDIR)palisade.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)dsf.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)palisade.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)pattern.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)pattern.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pattern.exe \
+ /lldmap:$(BUILDDIR)pattern.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)pattern.obj $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)patternpicture.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern4.obj \
+ $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)patternpicture.exe \
+ /lldmap:$(BUILDDIR)patternpicture.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern4.obj \
+ $(BUILDDIR)random.obj
+
+$(BUILDDIR)patternsolver.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern2.obj \
+ $(BUILDDIR)random.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)patternsolver.exe \
+ /lldmap:$(BUILDDIR)patternsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)pattern2.obj \
+ $(BUILDDIR)random.obj
+
+$(BUILDDIR)pearl.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)pearl.obj \
+ $(BUILDDIR)penrose.obj $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pearl.exe \
+ /lldmap:$(BUILDDIR)pearl.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
+ $(BUILDDIR)grid.obj $(BUILDDIR)loopgen.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)pearl.obj \
+ $(BUILDDIR)penrose.obj $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
+ $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)pearlbench.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
+ $(BUILDDIR)loopgen.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)pearl2.obj $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
+ $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pearlbench.exe \
+ /lldmap:$(BUILDDIR)pearlbench.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)grid.obj \
+ $(BUILDDIR)loopgen.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)pearl2.obj $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tdq.obj \
+ $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)pegs.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)pegs.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)pegs.exe \
+ /lldmap:$(BUILDDIR)pegs.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)pegs.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)puzzles.exe: $(BUILDDIR)blackbo3.obj $(BUILDDIR)bridges3.obj \
+ $(BUILDDIR)combi.obj $(BUILDDIR)cube3.obj \
+ $(BUILDDIR)divvy.obj $(BUILDDIR)dominos3.obj \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)fifteen5.obj $(BUILDDIR)filling5.obj \
+ $(BUILDDIR)findloop.obj $(BUILDDIR)flip3.obj \
+ $(BUILDDIR)flood3.obj $(BUILDDIR)galaxie7.obj \
+ $(BUILDDIR)grid.obj $(BUILDDIR)guess3.obj \
+ $(BUILDDIR)inertia3.obj $(BUILDDIR)keen5.obj \
+ $(BUILDDIR)latin.obj $(BUILDDIR)laydomino.obj \
+ $(BUILDDIR)lightup5.obj $(BUILDDIR)list.obj \
+ $(BUILDDIR)loopgen.obj $(BUILDDIR)loopy5.obj \
+ $(BUILDDIR)magnets5.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)map5.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)mines5.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)net3.obj \
+ $(BUILDDIR)netslid3.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)palisad3.obj $(BUILDDIR)pattern7.obj \
+ $(BUILDDIR)pearl5.obj $(BUILDDIR)pegs3.obj \
+ $(BUILDDIR)penrose.obj $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)range3.obj \
+ $(BUILDDIR)rect3.obj $(BUILDDIR)samegam3.obj \
+ $(BUILDDIR)signpos5.obj $(BUILDDIR)singles5.obj \
+ $(BUILDDIR)sixteen3.obj $(BUILDDIR)slant5.obj \
+ $(BUILDDIR)solo5.obj $(BUILDDIR)tdq.obj \
+ $(BUILDDIR)tents5.obj $(BUILDDIR)towers5.obj \
+ $(BUILDDIR)tracks3.obj $(BUILDDIR)tree234.obj \
+ $(BUILDDIR)twiddle3.obj $(BUILDDIR)undead3.obj \
+ $(BUILDDIR)unequal5.obj $(BUILDDIR)unruly5.obj \
+ $(BUILDDIR)untangl3.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows1.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)puzzles.exe \
+ /lldmap:$(BUILDDIR)puzzles.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) \
+ $(BUILDDIR)blackbo3.obj $(BUILDDIR)bridges3.obj \
+ $(BUILDDIR)combi.obj comctl32.lib comdlg32.lib \
+ $(BUILDDIR)cube3.obj $(BUILDDIR)divvy.obj \
+ $(BUILDDIR)dominos3.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)fifteen5.obj \
+ $(BUILDDIR)filling5.obj $(BUILDDIR)findloop.obj \
+ $(BUILDDIR)flip3.obj $(BUILDDIR)flood3.obj \
+ $(BUILDDIR)galaxie7.obj gdi32.lib $(BUILDDIR)grid.obj \
+ $(BUILDDIR)guess3.obj $(BUILDDIR)inertia3.obj \
+ $(BUILDDIR)keen5.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)laydomino.obj $(BUILDDIR)lightup5.obj \
+ $(BUILDDIR)list.obj $(BUILDDIR)loopgen.obj \
+ $(BUILDDIR)loopy5.obj $(BUILDDIR)magnets5.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)map5.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)mines5.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)net3.obj $(BUILDDIR)netslid3.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)palisad3.obj \
+ $(BUILDDIR)pattern7.obj $(BUILDDIR)pearl5.obj \
+ $(BUILDDIR)pegs3.obj $(BUILDDIR)penrose.obj \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)range3.obj $(BUILDDIR)rect3.obj \
+ $(BUILDDIR)samegam3.obj $(BUILDDIR)signpos5.obj \
+ $(BUILDDIR)singles5.obj $(BUILDDIR)sixteen3.obj \
+ $(BUILDDIR)slant5.obj $(BUILDDIR)solo5.obj \
+ $(BUILDDIR)tdq.obj $(BUILDDIR)tents5.obj \
+ $(BUILDDIR)towers5.obj $(BUILDDIR)tracks3.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)twiddle3.obj \
+ $(BUILDDIR)undead3.obj $(BUILDDIR)unequal5.obj \
+ $(BUILDDIR)unruly5.obj $(BUILDDIR)untangl3.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows1.obj winspool.lib
+
+$(BUILDDIR)range.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)range.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)range.exe \
+ /lldmap:$(BUILDDIR)range.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)range.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)rect.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)rect.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)rect.exe \
+ /lldmap:$(BUILDDIR)rect.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)rect.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)samegame.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)samegame.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)samegame.exe \
+ /lldmap:$(BUILDDIR)samegame.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)samegame.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)signpost.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)signpost.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)signpost.exe \
+ /lldmap:$(BUILDDIR)signpost.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ gdi32.lib $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)signpost.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)signpostsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)signpos2.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)signpostsolver.exe \
+ /lldmap:$(BUILDDIR)signpostsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)signpos2.obj
+
+$(BUILDDIR)singles.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)latin.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)singles.obj $(BUILDDIR)tree234.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)singles.exe \
+ /lldmap:$(BUILDDIR)singles.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ gdi32.lib $(BUILDDIR)latin.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)singles.obj $(BUILDDIR)tree234.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)singlessolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)singles3.obj \
+ $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)singlessolver.exe \
+ /lldmap:$(BUILDDIR)singlessolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)nullfe.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)singles3.obj \
+ $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)sixteen.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)sixteen.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)sixteen.exe \
+ /lldmap:$(BUILDDIR)sixteen.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)sixteen.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)slant.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)slant.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)slant.exe \
+ /lldmap:$(BUILDDIR)slant.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)slant.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)slantsolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)findloop.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)slant2.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)slantsolver.exe \
+ /lldmap:$(BUILDDIR)slantsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)findloop.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)slant2.obj
+
+$(BUILDDIR)solo.exe: $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)solo.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)solo.exe \
+ /lldmap:$(BUILDDIR)solo.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)divvy.obj $(BUILDDIR)drawing.obj \
+ $(BUILDDIR)dsf.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)solo.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)solosolver.exe: $(BUILDDIR)divvy.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)solo2.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)solosolver.exe \
+ /lldmap:$(BUILDDIR)solosolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)divvy.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)solo2.obj
+
+$(BUILDDIR)tents.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tents.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)tents.exe \
+ /lldmap:$(BUILDDIR)tents.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tents.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)tentssolver.exe: $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tents3.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)tentssolver.exe \
+ /lldmap:$(BUILDDIR)tentssolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)dsf.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tents3.obj
+
+$(BUILDDIR)towers.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)towers.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)towers.exe \
+ /lldmap:$(BUILDDIR)towers.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)towers.obj \
+ $(BUILDDIR)tree234.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)towerssolver.exe: $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)towers2.obj $(BUILDDIR)tree234.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)towerssolver.exe \
+ /lldmap:$(BUILDDIR)towerssolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)towers2.obj $(BUILDDIR)tree234.obj
+
+$(BUILDDIR)tracks.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tracks.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)tracks.exe \
+ /lldmap:$(BUILDDIR)tracks.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj $(BUILDDIR)dsf.obj \
+ $(BUILDDIR)findloop.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tracks.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)twiddle.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)twiddle.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)twiddle.exe \
+ /lldmap:$(BUILDDIR)twiddle.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)twiddle.obj user32.lib $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)undead.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)undead.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)undead.exe \
+ /lldmap:$(BUILDDIR)undead.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)undead.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)unequal.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)latin.obj \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)maxflow.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
+ $(BUILDDIR)unequal.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unequal.exe \
+ /lldmap:$(BUILDDIR)unequal.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)latin.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)unequal.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)unequalsolver.exe: $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)unequal2.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unequalsolver.exe \
+ /lldmap:$(BUILDDIR)unequalsolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)latin6.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)maxflow.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)unequal2.obj
+
+$(BUILDDIR)unruly.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)unruly.obj \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unruly.exe \
+ /lldmap:$(BUILDDIR)unruly.map /subsystem:windows$(SUBSYSVER) \
+ $(EXTRA_windows) comctl32.lib comdlg32.lib \
+ $(BUILDDIR)drawing.obj gdi32.lib $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)unruly.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)unrulysolver.exe: $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)unruly2.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)unrulysolver.exe \
+ /lldmap:$(BUILDDIR)unrulysolver.map \
+ /subsystem:console$(SUBSYSVER) $(EXTRA_console) \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)nullfe.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)unruly2.obj
+
+$(BUILDDIR)untangle.exe: $(BUILDDIR)drawing.obj $(BUILDDIR)malloc.obj \
+ $(BUILDDIR)midend.obj $(BUILDDIR)misc.obj \
+ $(BUILDDIR)noicon.res $(BUILDDIR)printing.obj \
+ $(BUILDDIR)random.obj $(BUILDDIR)tree234.obj \
+ $(BUILDDIR)untangle.obj $(BUILDDIR)version.obj \
+ $(BUILDDIR)windows.obj
+ $(LD) $(LFLAGS) $(XLFLAGS) /out:$(BUILDDIR)untangle.exe \
+ /lldmap:$(BUILDDIR)untangle.map \
+ /subsystem:windows$(SUBSYSVER) $(EXTRA_windows) comctl32.lib \
+ comdlg32.lib $(BUILDDIR)drawing.obj gdi32.lib \
+ $(BUILDDIR)malloc.obj $(BUILDDIR)midend.obj \
+ $(BUILDDIR)misc.obj $(BUILDDIR)noicon.res \
+ $(BUILDDIR)printing.obj $(BUILDDIR)random.obj \
+ $(BUILDDIR)tree234.obj $(BUILDDIR)untangle.obj user32.lib \
+ $(BUILDDIR)version.obj $(BUILDDIR)windows.obj winspool.lib
+
+$(BUILDDIR)blackbox.obj: ./blackbox.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)blackbox.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)blackbo3.obj: ./blackbox.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)blackbo3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)bridges.obj: ./bridges.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)bridges.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)bridges3.obj: ./bridges.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)bridges3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)combi.obj: ./combi.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)combi.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)cube.obj: ./cube.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)cube.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)cube3.obj: ./cube.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)cube3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)divvy.obj: ./divvy.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)divvy.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)dominosa.obj: ./dominosa.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)dominosa.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)dominos3.obj: ./dominosa.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)dominos3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)drawing.obj: ./drawing.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)drawing.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)dsf.obj: ./dsf.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)dsf.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)fifteen.obj: ./fifteen.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)fifteen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)fifteen5.obj: ./fifteen.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)fifteen5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)fifteen2.obj: ./fifteen.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)fifteen2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)filling.obj: ./filling.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)filling.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)filling5.obj: ./filling.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)filling5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)filling2.obj: ./filling.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)filling2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)findloop.obj: ./findloop.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)findloop.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)flip.obj: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flip.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)flip3.obj: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flip3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)flood.obj: ./flood.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flood.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)flood3.obj: ./flood.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)flood3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)galaxies.obj: ./galaxies.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxies.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)galaxie7.obj: ./galaxies.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxie7.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)galaxie4.obj: ./galaxies.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxie4.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c $<
+
+$(BUILDDIR)galaxie2.obj: ./galaxies.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)galaxie2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)grid.obj: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)grid.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)gtk.obj: ./gtk.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)gtk.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)guess.obj: ./guess.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)guess.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)guess3.obj: ./guess.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)guess3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)inertia.obj: ./inertia.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)inertia.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)inertia3.obj: ./inertia.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)inertia3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)keen.obj: ./keen.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)keen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)keen5.obj: ./keen.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)keen5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)keen2.obj: ./keen.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)keen2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)latin.obj: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)latin.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)latin8.obj: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)latin8.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_LATIN_TEST /c $<
+
+$(BUILDDIR)latin6.obj: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)latin6.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)laydomino.obj: ./laydomino.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)laydomino.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)lightup.obj: ./lightup.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)lightup.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)lightup5.obj: ./lightup.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)lightup5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)lightup2.obj: ./lightup.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)lightup2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)list.obj: ./list.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)list.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)loopgen.obj: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h \
+ ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopgen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)loopy.obj: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopy.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)loopy5.obj: ./loopy.c ./puzzles.h ./tree234.h ./grid.h \
+ ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopy5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)loopy2.obj: ./loopy.c ./puzzles.h ./tree234.h ./grid.h \
+ ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)loopy2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)magnets.obj: ./magnets.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)magnets.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)magnets5.obj: ./magnets.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)magnets5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)magnets2.obj: ./magnets.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)magnets2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)malloc.obj: ./malloc.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)malloc.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)map.obj: ./map.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)map.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)map5.obj: ./map.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)map5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)map2.obj: ./map.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)map2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)maxflow.obj: ./maxflow.c ./maxflow.h ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)maxflow.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)midend.obj: ./midend.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)midend.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)mines.obj: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)mines.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)mines5.obj: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)mines5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)mines2.obj: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)mines2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_OBFUSCATOR /c $<
+
+$(BUILDDIR)misc.obj: ./misc.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)misc.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)net.obj: ./net.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)net.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)net3.obj: ./net.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)net3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)netslide.obj: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)netslide.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)netslid3.obj: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)netslid3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)no-icon.obj: ./no-icon.c
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)no-icon.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)noicon.res: ./noicon.rc ./puzzles.rc2 ./resource.h
+ $(RC) $(RCFLAGS) ./noicon.rc -o $(BUILDDIR)noicon.res
+
+$(BUILDDIR)nullfe.obj: ./nullfe.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)nullfe.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)nullgame.obj: ./nullgame.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)nullgame.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)obfusc.obj: ./obfusc.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)obfusc.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)osx.obj: ./osx.m ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)osx.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)palisade.obj: ./palisade.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)palisade.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)palisad3.obj: ./palisade.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)palisad3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)pattern.obj: ./pattern.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)pattern7.obj: ./pattern.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern7.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)pattern4.obj: ./pattern.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern4.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c $<
+
+$(BUILDDIR)pattern2.obj: ./pattern.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pattern2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)pearl.obj: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pearl.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)pearl5.obj: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pearl5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)pearl2.obj: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pearl2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)pegs.obj: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pegs.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)pegs3.obj: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)pegs3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)penrose.obj: ./penrose.c ./puzzles.h ./penrose.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)penrose.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)printing.obj: ./printing.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)printing.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)ps.obj: ./ps.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)ps.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)random.obj: ./random.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)random.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)range.obj: ./range.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)range.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)range3.obj: ./range.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)range3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)rect.obj: ./rect.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)rect.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)rect3.obj: ./rect.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)rect3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)samegame.obj: ./samegame.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)samegame.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)samegam3.obj: ./samegame.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)samegam3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)signpost.obj: ./signpost.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)signpost.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)signpos5.obj: ./signpost.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)signpos5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)signpos2.obj: ./signpost.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)signpos2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)singles.obj: ./singles.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)singles.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)singles5.obj: ./singles.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)singles5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)singles3.obj: ./singles.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)singles3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)sixteen.obj: ./sixteen.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)sixteen.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)sixteen3.obj: ./sixteen.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)sixteen3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)slant.obj: ./slant.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)slant.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)slant5.obj: ./slant.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)slant5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)slant2.obj: ./slant.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)slant2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)solo.obj: ./solo.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)solo.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)solo5.obj: ./solo.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)solo5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)solo2.obj: ./solo.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)solo2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)tdq.obj: ./tdq.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tdq.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)tents.obj: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tents.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)tents5.obj: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tents5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)tents3.obj: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tents3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)towers.obj: ./towers.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)towers.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)towers5.obj: ./towers.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)towers5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)towers2.obj: ./towers.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)towers2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)tracks.obj: ./tracks.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tracks.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)tracks3.obj: ./tracks.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tracks3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)tree234.obj: ./tree234.c ./tree234.h ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)tree234.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)twiddle.obj: ./twiddle.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)twiddle.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)twiddle3.obj: ./twiddle.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)twiddle3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)undead.obj: ./undead.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)undead.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)undead3.obj: ./undead.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)undead3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)unequal.obj: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unequal.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)unequal5.obj: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unequal5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)unequal2.obj: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unequal2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)unruly.obj: ./unruly.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unruly.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)unruly5.obj: ./unruly.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unruly5.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)unruly2.obj: ./unruly.c ./puzzles.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)unruly2.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c $<
+
+$(BUILDDIR)untangle.obj: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)untangle.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)untangl3.obj: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)untangl3.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+$(BUILDDIR)version.obj: ./version.c ./version.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)version.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)windows.obj: ./windows.c ./puzzles.h ./resource.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)windows.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /c $<
+
+$(BUILDDIR)windows1.obj: ./windows.c ./puzzles.h ./resource.h
+ $(CC) /Fo$(BUILDDIR)$(BUILDDIR)windows1.obj $(COMPAT) $(CFLAGS) $(XFLAGS) /DCOMBINED /c $<
+
+
+clean:
+ rm -f $(BUILDDIR)*.obj $(BUILDDIR)*.exe $(BUILDDIR)*.res $(BUILDDIR)*.map \
+ $(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 @@
+# Makefile for puzzles under cygwin.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+# You can define this path to point at your tools if you need to
+# TOOLPATH = c:\cygwin\bin\ # or similar, if you're running Windows
+# TOOLPATH = /pkg/mingw32msvc/i386-mingw32msvc/bin/
+CC = $(TOOLPATH)gcc
+RC = $(TOOLPATH)windres
+# Uncomment the following two lines to compile under Winelib
+# CC = winegcc
+# RC = wrc
+# You may also need to tell windres where to find include files:
+# RCINC = --include-dir c:\cygwin\include\
+
+CFLAGS = -mno-cygwin -Wall -O2 -D_WINDOWS -DDEBUG -DWIN32S_COMPAT \
+ -D_NO_OLDNAMES -DNO_MULTIMON -DNO_HTMLHELP -I./ -Iicons/
+LDFLAGS = -mno-cygwin -s
+RCFLAGS = $(RCINC) --define WIN32=1 --define _WIN32=1 --define WINVER=0x0400 \
+ --define MINGW32_FIX=1 --include ./ --include icons/
+
+all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe \
+ fifteensolver.exe filling.exe fillingsolver.exe flip.exe \
+ flood.exe galaxies.exe galaxiespicture.exe \
+ galaxiessolver.exe guess.exe inertia.exe keen.exe \
+ keensolver.exe latincheck.exe lightup.exe lightupsolver.exe \
+ loopy.exe loopysolver.exe magnets.exe magnetssolver.exe \
+ map.exe mapsolver.exe mineobfusc.exe mines.exe netgame.exe \
+ netslide.exe nullgame.exe palisade.exe pattern.exe \
+ patternpicture.exe patternsolver.exe pearl.exe \
+ pearlbench.exe pegs.exe puzzles.exe range.exe rect.exe \
+ samegame.exe signpost.exe signpostsolver.exe singles.exe \
+ singlessolver.exe sixteen.exe slant.exe slantsolver.exe \
+ solo.exe solosolver.exe tents.exe tentssolver.exe towers.exe \
+ towerssolver.exe tracks.exe twiddle.exe undead.exe \
+ unequal.exe unequalsolver.exe unruly.exe unrulysolver.exe \
+ untangle.exe
+
+blackbox.exe: blackbox.o drawing.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,blackbox.map blackbox.o \
+ drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+bridges.exe: bridges.o drawing.o dsf.o findloop.o malloc.o midend.o misc.o \
+ noicon.res.o printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,bridges.map bridges.o \
+ drawing.o dsf.o findloop.o malloc.o midend.o misc.o \
+ noicon.res.o printing.o random.o version.o windows.o \
+ -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+cube.exe: cube.o drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,cube.map cube.o drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 \
+ -lwinspool
+
+dominosa.exe: dominosa.o drawing.o laydomino.o malloc.o midend.o misc.o \
+ noicon.res.o printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,dominosa.map dominosa.o \
+ drawing.o laydomino.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+fifteen.exe: drawing.o fifteen.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,fifteen.map drawing.o \
+ fifteen.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+fifteensolver.exe: fifteen2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,fifteensolver.map fifteen2.o \
+ malloc.o misc.o nullfe.o random.o
+
+filling.exe: drawing.o dsf.o filling.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,filling.map drawing.o \
+ dsf.o filling.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+fillingsolver.exe: dsf.o filling2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,fillingsolver.map dsf.o filling2.o \
+ malloc.o misc.o nullfe.o random.o
+
+flip.exe: drawing.o flip.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o tree234.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,flip.map drawing.o flip.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ tree234.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+flood.exe: drawing.o flood.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,flood.map drawing.o \
+ flood.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+galaxies.exe: drawing.o dsf.o galaxies.o malloc.o midend.o misc.o \
+ noicon.res.o printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,galaxies.map drawing.o \
+ dsf.o galaxies.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+galaxiespicture.exe: dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,galaxiespicture.map dsf.o galaxie4.o \
+ malloc.o misc.o nullfe.o random.o
+
+galaxiessolver.exe: dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,galaxiessolver.map dsf.o galaxie2.o \
+ malloc.o misc.o nullfe.o random.o
+
+guess.exe: drawing.o guess.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,guess.map drawing.o \
+ guess.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+inertia.exe: drawing.o inertia.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,inertia.map drawing.o \
+ inertia.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+keen.exe: drawing.o dsf.o keen.o latin.o malloc.o maxflow.o midend.o misc.o \
+ noicon.res.o printing.o random.o tree234.o version.o \
+ windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,keen.map drawing.o dsf.o \
+ keen.o latin.o malloc.o maxflow.o midend.o misc.o \
+ noicon.res.o printing.o random.o tree234.o version.o \
+ windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+keensolver.exe: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,keensolver.map dsf.o keen2.o \
+ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o
+
+latincheck.exe: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,latincheck.map latin8.o malloc.o \
+ maxflow.o misc.o nullfe.o random.o tree234.o
+
+lightup.exe: combi.o drawing.o lightup.o malloc.o midend.o misc.o \
+ noicon.res.o printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,lightup.map combi.o \
+ drawing.o lightup.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+lightupsolver.exe: combi.o lightup2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,lightupsolver.map combi.o lightup2.o \
+ malloc.o misc.o nullfe.o random.o
+
+loopy.exe: drawing.o dsf.o grid.o loopgen.o loopy.o malloc.o midend.o misc.o \
+ noicon.res.o penrose.o printing.o random.o tree234.o \
+ version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,loopy.map drawing.o dsf.o \
+ grid.o loopgen.o loopy.o malloc.o midend.o misc.o \
+ noicon.res.o penrose.o printing.o random.o tree234.o \
+ version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 \
+ -lwinspool
+
+loopysolver.exe: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \
+ penrose.o random.o tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,loopysolver.map dsf.o grid.o \
+ loopgen.o loopy2.o malloc.o misc.o nullfe.o penrose.o \
+ random.o tree234.o
+
+magnets.exe: drawing.o laydomino.o magnets.o malloc.o midend.o misc.o \
+ noicon.res.o printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,magnets.map drawing.o \
+ laydomino.o magnets.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+magnetssolver.exe: laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,magnetssolver.map laydomino.o \
+ magnets2.o malloc.o misc.o nullfe.o random.o
+
+map.exe: drawing.o dsf.o malloc.o map.o midend.o misc.o noicon.res.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,map.map drawing.o dsf.o \
+ malloc.o map.o midend.o misc.o noicon.res.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+mapsolver.exe: dsf.o malloc.o map2.o misc.o nullfe.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,mapsolver.map dsf.o malloc.o map2.o \
+ misc.o nullfe.o random.o
+
+mineobfusc.exe: malloc.o mines2.o misc.o nullfe.o random.o tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,mineobfusc.map malloc.o mines2.o \
+ misc.o nullfe.o random.o tree234.o
+
+mines.exe: drawing.o malloc.o midend.o mines.o misc.o noicon.res.o \
+ printing.o random.o tree234.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,mines.map drawing.o \
+ malloc.o midend.o mines.o misc.o noicon.res.o printing.o \
+ random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+netgame.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o net.o \
+ noicon.res.o printing.o random.o tree234.o version.o \
+ windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,netgame.map drawing.o \
+ dsf.o findloop.o malloc.o midend.o misc.o net.o noicon.res.o \
+ printing.o random.o tree234.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+netslide.exe: drawing.o malloc.o midend.o misc.o netslide.o noicon.res.o \
+ printing.o random.o tree234.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,netslide.map drawing.o \
+ malloc.o midend.o misc.o netslide.o noicon.res.o printing.o \
+ random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+nullgame.exe: drawing.o malloc.o midend.o misc.o noicon.res.o nullgame.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,nullgame.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o nullgame.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+palisade.exe: divvy.o drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
+ palisade.o printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,palisade.map divvy.o \
+ drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
+ palisade.o printing.o random.o version.o windows.o \
+ -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+pattern.exe: drawing.o malloc.o midend.o misc.o noicon.res.o pattern.o \
+ printing.o random.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pattern.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o pattern.o printing.o \
+ random.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+patternpicture.exe: malloc.o misc.o nullfe.o pattern4.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,patternpicture.map malloc.o misc.o \
+ nullfe.o pattern4.o random.o
+
+patternsolver.exe: malloc.o misc.o nullfe.o pattern2.o random.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,patternsolver.map malloc.o misc.o \
+ nullfe.o pattern2.o random.o
+
+pearl.exe: drawing.o dsf.o grid.o loopgen.o malloc.o midend.o misc.o pearl.o \
+ penrose.o printing.o random.o tdq.o tree234.o version.o \
+ windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pearl.map drawing.o dsf.o \
+ grid.o loopgen.o malloc.o midend.o misc.o pearl.o penrose.o \
+ printing.o random.o tdq.o tree234.o version.o windows.o \
+ -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+pearlbench.exe: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \
+ penrose.o random.o tdq.o tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,pearlbench.map dsf.o grid.o \
+ loopgen.o malloc.o misc.o nullfe.o pearl2.o penrose.o \
+ random.o tdq.o tree234.o
+
+pegs.exe: drawing.o malloc.o midend.o misc.o noicon.res.o pegs.o printing.o \
+ random.o tree234.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,pegs.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o pegs.o printing.o \
+ random.o tree234.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+puzzles.exe: blackbo3.o bridges3.o combi.o cube3.o divvy.o dominos3.o \
+ drawing.o dsf.o fifteen5.o filling5.o findloop.o flip3.o \
+ flood3.o galaxie7.o grid.o guess3.o inertia3.o keen5.o \
+ latin.o laydomino.o lightup5.o list.o loopgen.o loopy5.o \
+ magnets5.o malloc.o map5.o maxflow.o midend.o mines5.o \
+ misc.o net3.o netslid3.o noicon.res.o palisad3.o pattern7.o \
+ pearl5.o pegs3.o penrose.o printing.o random.o range3.o \
+ rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \
+ solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \
+ twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \
+ version.o windows1.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,puzzles.map blackbo3.o \
+ bridges3.o combi.o cube3.o divvy.o dominos3.o drawing.o \
+ dsf.o fifteen5.o filling5.o findloop.o flip3.o flood3.o \
+ galaxie7.o grid.o guess3.o inertia3.o keen5.o latin.o \
+ laydomino.o lightup5.o list.o loopgen.o loopy5.o magnets5.o \
+ malloc.o map5.o maxflow.o midend.o mines5.o misc.o net3.o \
+ netslid3.o noicon.res.o palisad3.o pattern7.o pearl5.o \
+ pegs3.o penrose.o printing.o random.o range3.o rect3.o \
+ samegam3.o signpos5.o singles5.o sixteen3.o slant5.o solo5.o \
+ tdq.o tents5.o towers5.o tracks3.o tree234.o twiddle3.o \
+ undead3.o unequal5.o unruly5.o untangl3.o version.o \
+ windows1.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+range.exe: drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o range.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,range.map drawing.o dsf.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ range.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+rect.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o rect.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,rect.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ rect.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+samegame.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o samegame.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,samegame.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ samegame.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+signpost.exe: drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o signpost.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,signpost.map drawing.o \
+ dsf.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o signpost.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+signpostsolver.exe: dsf.o malloc.o misc.o nullfe.o random.o signpos2.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,signpostsolver.map dsf.o malloc.o \
+ misc.o nullfe.o random.o signpos2.o
+
+singles.exe: drawing.o dsf.o latin.o malloc.o maxflow.o midend.o misc.o \
+ noicon.res.o printing.o random.o singles.o tree234.o \
+ version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,singles.map drawing.o \
+ dsf.o latin.o malloc.o maxflow.o midend.o misc.o \
+ noicon.res.o printing.o random.o singles.o tree234.o \
+ version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 -luser32 \
+ -lwinspool
+
+singlessolver.exe: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ singles3.o tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,singlessolver.map dsf.o latin.o \
+ malloc.o maxflow.o misc.o nullfe.o random.o singles3.o \
+ tree234.o
+
+sixteen.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o sixteen.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,sixteen.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ sixteen.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+slant.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o slant.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,slant.map drawing.o dsf.o \
+ findloop.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o slant.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+slantsolver.exe: dsf.o findloop.o malloc.o misc.o nullfe.o random.o slant2.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,slantsolver.map dsf.o findloop.o \
+ malloc.o misc.o nullfe.o random.o slant2.o
+
+solo.exe: divvy.o drawing.o dsf.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o solo.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,solo.map divvy.o drawing.o \
+ dsf.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o solo.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+solosolver.exe: divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,solosolver.map divvy.o dsf.o \
+ malloc.o misc.o nullfe.o random.o solo2.o
+
+tents.exe: drawing.o dsf.o malloc.o maxflow.o midend.o misc.o noicon.res.o \
+ printing.o random.o tents.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,tents.map drawing.o dsf.o \
+ malloc.o maxflow.o midend.o misc.o noicon.res.o printing.o \
+ random.o tents.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+tentssolver.exe: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o tents3.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,tentssolver.map dsf.o malloc.o \
+ maxflow.o misc.o nullfe.o random.o tents3.o
+
+towers.exe: drawing.o latin.o malloc.o maxflow.o midend.o misc.o \
+ noicon.res.o printing.o random.o towers.o tree234.o \
+ version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,towers.map drawing.o \
+ latin.o malloc.o maxflow.o midend.o misc.o noicon.res.o \
+ printing.o random.o towers.o tree234.o version.o windows.o \
+ -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+towerssolver.exe: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ towers2.o tree234.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,towerssolver.map latin6.o malloc.o \
+ maxflow.o misc.o nullfe.o random.o towers2.o tree234.o
+
+tracks.exe: drawing.o dsf.o findloop.o malloc.o midend.o misc.o noicon.res.o \
+ printing.o random.o tracks.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,tracks.map drawing.o dsf.o \
+ findloop.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o tracks.o version.o windows.o -lcomctl32 -lcomdlg32 \
+ -lgdi32 -luser32 -lwinspool
+
+twiddle.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o twiddle.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,twiddle.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ twiddle.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+undead.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o undead.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,undead.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ undead.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+unequal.exe: drawing.o latin.o malloc.o maxflow.o midend.o misc.o \
+ noicon.res.o printing.o random.o tree234.o unequal.o \
+ version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,unequal.map drawing.o \
+ latin.o malloc.o maxflow.o midend.o misc.o noicon.res.o \
+ printing.o random.o tree234.o unequal.o version.o windows.o \
+ -lcomctl32 -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+unequalsolver.exe: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o unequal2.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,unequalsolver.map latin6.o malloc.o \
+ maxflow.o misc.o nullfe.o random.o tree234.o unequal2.o
+
+unruly.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o unruly.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,unruly.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ unruly.o version.o windows.o -lcomctl32 -lcomdlg32 -lgdi32 \
+ -luser32 -lwinspool
+
+unrulysolver.exe: malloc.o misc.o nullfe.o random.o unruly2.o
+ $(CC) $(LDFLAGS) -o $@ -Wl,-Map,unrulysolver.map malloc.o misc.o \
+ nullfe.o random.o unruly2.o
+
+untangle.exe: drawing.o malloc.o midend.o misc.o noicon.res.o printing.o \
+ random.o tree234.o untangle.o version.o windows.o
+ $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,untangle.map drawing.o \
+ malloc.o midend.o misc.o noicon.res.o printing.o random.o \
+ tree234.o untangle.o version.o windows.o -lcomctl32 \
+ -lcomdlg32 -lgdi32 -luser32 -lwinspool
+
+blackbox.o: ./blackbox.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+blackbo3.o: ./blackbox.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+bridges.o: ./bridges.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+bridges3.o: ./bridges.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+combi.o: ./combi.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube.o: ./cube.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube3.o: ./cube.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+divvy.o: ./divvy.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominosa.o: ./dominosa.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominos3.o: ./dominosa.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+drawing.o: ./drawing.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dsf.o: ./dsf.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen.o: ./fifteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen5.o: ./fifteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+fifteen2.o: ./fifteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+filling.o: ./filling.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+filling5.o: ./filling.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+filling2.o: ./filling.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+findloop.o: ./findloop.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip.o: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip3.o: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+flood.o: ./flood.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flood3.o: ./flood.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxies.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+galaxie7.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxie4.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+galaxie2.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+gtk.o: ./gtk.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess.o: ./guess.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess3.o: ./guess.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+inertia.o: ./inertia.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+inertia3.o: ./inertia.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+keen5.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen2.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
+latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+laydomino.o: ./laydomino.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup.o: ./lightup.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup5.o: ./lightup.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+lightup2.o: ./lightup.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+list.o: ./list.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+magnets.o: ./magnets.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+magnets5.o: ./magnets.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+magnets2.o: ./magnets.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+malloc.o: ./malloc.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map.o: ./map.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map5.o: ./map.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+map2.o: ./map.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+midend.o: ./midend.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines5.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+mines2.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
+misc.o: ./misc.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net.o: ./net.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net3.o: ./net.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+netslide.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+no-icon.o: ./no-icon.c
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+noicon.res.o: ./noicon.rc ./puzzles.rc2 ./resource.h
+ $(RC) $(FWHACK) $(RCFL) $(RCFLAGS) $< $@
+nullfe.o: ./nullfe.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullgame.o: ./nullgame.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+obfusc.o: ./obfusc.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+osx.o: ./osx.m ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisade.o: ./palisade.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisad3.o: ./palisade.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pattern7.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern4.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+pattern2.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pegs.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+penrose.o: ./penrose.c ./puzzles.h ./penrose.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+printing.o: ./printing.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+ps.o: ./ps.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+random.o: ./random.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range.o: ./range.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range3.o: ./range.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+rect.o: ./rect.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+rect3.o: ./rect.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+samegame.o: ./samegame.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+samegam3.o: ./samegame.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpost.o: ./signpost.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+signpos5.o: ./signpost.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpos2.o: ./signpost.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+singles.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+singles5.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+singles3.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+sixteen.o: ./sixteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+sixteen3.o: ./sixteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant.o: ./slant.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+slant5.o: ./slant.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant2.o: ./slant.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+solo.o: ./solo.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+solo5.o: ./solo.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+solo2.o: ./solo.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tdq.o: ./tdq.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents5.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tents3.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+towers.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+towers5.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+towers2.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tracks.o: ./tracks.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tracks3.o: ./tracks.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tree234.o: ./tree234.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle.o: ./twiddle.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle3.o: ./twiddle.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+undead.o: ./undead.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+undead3.o: ./undead.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unequal5.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal2.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+unruly.o: ./unruly.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unruly5.o: ./unruly.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unruly2.o: ./unruly.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+untangle.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+version.o: ./version.c ./version.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows.o: ./windows.c ./puzzles.h ./resource.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows1.o: ./windows.c ./puzzles.h ./resource.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+
+
+clean:
+ rm -f *.o *.exe *.res.o *.map
+
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 @@
+# Makefile for puzzles using Emscripten. Requires GNU make.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+# This can be set on the command line to point at the emcc command,
+# if it is not on your PATH.
+EMCC = emcc
+
+CFLAGS = -DSLOW_SYSTEM -I./ -Iicons/
+
+all: $(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
+
+$(OUTPREFIX)blackbox.js: blackbox.o drawing.o emcc.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)bridges.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)cube.js: cube.o drawing.o emcc.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)dominosa.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)fifteen.js: drawing.o fifteen.o emcc.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)filling.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)flip.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)flood.js: drawing.o flood.o emcc.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)galaxies.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)guess.js: drawing.o emcc.o guess.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)inertia.js: drawing.o emcc.o inertia.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)keen.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)lightup.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)loopy.js: 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 emccpre.js emcclib.js \
+ emccx.json
+ $(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
+
+$(OUTPREFIX)magnets.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)map.js: 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 emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)mines.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)net.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)netslide.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)nullgame.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ nullgame.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)palisade.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)pattern.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ pattern.o printing.o ps.o random.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)pearl.js: 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 emccpre.js emcclib.js \
+ emccx.json
+ $(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
+
+$(OUTPREFIX)pegs.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)range.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)rect.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o rect.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)samegame.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o samegame.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)signpost.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)singles.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)sixteen.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o sixteen.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)slant.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)solo.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)tents.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)towers.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)tracks.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)twiddle.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o twiddle.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)undead.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o undead.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)unequal.js: 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 emccpre.js emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)unruly.js: drawing.o emcc.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o unruly.o version.o emccpre.js \
+ emcclib.js emccx.json
+ $(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
+
+$(OUTPREFIX)untangle.js: 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 \
+ emccpre.js emcclib.js emccx.json
+ $(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
+
+blackbox.o: ./blackbox.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+blackbo3.o: ./blackbox.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+bridges.o: ./bridges.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+bridges3.o: ./bridges.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+combi.o: ./combi.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube.o: ./cube.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube3.o: ./cube.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+divvy.o: ./divvy.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominosa.o: ./dominosa.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominos3.o: ./dominosa.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+drawing.o: ./drawing.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dsf.o: ./dsf.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen.o: ./fifteen.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen5.o: ./fifteen.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+fifteen2.o: ./fifteen.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+filling.o: ./filling.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+filling5.o: ./filling.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+filling2.o: ./filling.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+findloop.o: ./findloop.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip.o: ./flip.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip3.o: ./flip.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+flood.o: ./flood.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flood3.o: ./flood.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxies.o: ./galaxies.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+galaxie7.o: ./galaxies.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxie4.o: ./galaxies.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+galaxie2.o: ./galaxies.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+emcc.o: ./emcc.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess.o: ./guess.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess3.o: ./guess.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+inertia.o: ./inertia.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+inertia3.o: ./inertia.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen.o: ./keen.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+keen5.o: ./keen.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen2.o: ./keen.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
+latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+laydomino.o: ./laydomino.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup.o: ./lightup.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup5.o: ./lightup.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+lightup2.o: ./lightup.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+list.o: ./list.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+magnets.o: ./magnets.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+magnets5.o: ./magnets.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+magnets2.o: ./magnets.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+malloc.o: ./malloc.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map.o: ./map.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map5.o: ./map.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+map2.o: ./map.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+midend.o: ./midend.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines.o: ./mines.c ./tree234.h ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines5.o: ./mines.c ./tree234.h ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+mines2.o: ./mines.c ./tree234.h ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
+misc.o: ./misc.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net.o: ./net.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net3.o: ./net.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+netslide.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+no-icon.o: ./no-icon.c
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullfe.o: ./nullfe.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullgame.o: ./nullgame.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+obfusc.o: ./obfusc.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+osx.o: ./osx.m ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisade.o: ./palisade.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisad3.o: ./palisade.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern.o: ./pattern.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pattern7.o: ./pattern.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern4.o: ./pattern.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+pattern2.o: ./pattern.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pegs.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+penrose.o: ./penrose.c ./puzzles.h ./penrose.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+printing.o: ./printing.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+ps.o: ./ps.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+random.o: ./random.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range.o: ./range.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range3.o: ./range.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+rect.o: ./rect.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+rect3.o: ./rect.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+samegame.o: ./samegame.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+samegam3.o: ./samegame.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpost.o: ./signpost.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+signpos5.o: ./signpost.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpos2.o: ./signpost.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+singles.o: ./singles.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+singles5.o: ./singles.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+singles3.o: ./singles.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+sixteen.o: ./sixteen.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+sixteen3.o: ./sixteen.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant.o: ./slant.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+slant5.o: ./slant.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant2.o: ./slant.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+solo.o: ./solo.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+solo5.o: ./solo.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+solo2.o: ./solo.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tdq.o: ./tdq.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents5.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tents3.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+towers.o: ./towers.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+towers5.o: ./towers.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+towers2.o: ./towers.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tracks.o: ./tracks.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tracks3.o: ./tracks.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tree234.o: ./tree234.c ./tree234.h ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle.o: ./twiddle.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle3.o: ./twiddle.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+undead.o: ./undead.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+undead3.o: ./undead.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal.o: ./unequal.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unequal5.o: ./unequal.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal2.o: ./unequal.c ./puzzles.h ./latin.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+unruly.o: ./unruly.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unruly5.o: ./unruly.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unruly2.o: ./unruly.c ./puzzles.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+untangle.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+version.o: ./version.c ./version.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows.o: ./windows.c ./puzzles.h ./resource.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows1.o: ./windows.c ./puzzles.h ./resource.h
+ $(EMCC) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+
+
+clean:
+ 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 @@
+# Makefile for puzzles under GNUstep.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+NEEDS_GUI=yes
+include $(GNUSTEP_MAKEFILES)/common.make
+include $(GNUSTEP_MAKEFILES)/rules.make
+include $(GNUSTEP_MAKEFILES)/Instance/rules.make
+
+all:: Puzzles fifteensolver fillingsolver galaxiespicture galaxiessolver \
+ keensolver latincheck lightupsolver loopysolver \
+ magnetssolver mapsolver mineobfusc obfusc patternpicture \
+ patternsolver pearlbench signpostsolver singlessolver \
+ slantsolver solosolver tentssolver towerssolver \
+ unequalsolver unrulysolver
+
+.SUFFIXES: .o .c .m
+
+
+
+Puzzles.app:
+ mkdir -p $@
+Puzzles.app/Resources: Puzzles.app
+ mkdir -p $@
+Puzzles.app/Resources/Puzzles.icns: Puzzles.app/Resources osx.icns
+ cp osx.icns $@
+Puzzles.app/Info.plist: Puzzles.app osx-info.plist
+ cp osx-info.plist $@
+Puzzles: Puzzles.app Puzzles.app/Puzzles \
+ Puzzles.app/Resources/Puzzles.icns Puzzles.app/Info.plist \
+ $(Puzzles_extra)
+
+Puzzles.app/Puzzles: blackbo3.o bridges3.o combi.o cube3.o divvy.o \
+ dominos3.o drawing.o dsf.o fifteen5.o filling5.o findloop.o \
+ flip3.o flood3.o galaxie7.o grid.o guess3.o inertia3.o \
+ keen5.o latin.o laydomino.o lightup5.o list.o loopgen.o \
+ loopy5.o magnets5.o malloc.o map5.o maxflow.o midend.o \
+ mines5.o misc.o net3.o netslid3.o osx.o palisad3.o \
+ pattern7.o pearl5.o pegs3.o penrose.o random.o range3.o \
+ rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \
+ solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \
+ twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \
+ version.o
+ $(CC) $(ALL_LDFLAGS) -o $@ blackbo3.o bridges3.o combi.o cube3.o \
+ divvy.o dominos3.o drawing.o dsf.o fifteen5.o filling5.o \
+ findloop.o flip3.o flood3.o galaxie7.o grid.o guess3.o \
+ inertia3.o keen5.o latin.o laydomino.o lightup5.o list.o \
+ loopgen.o loopy5.o magnets5.o malloc.o map5.o maxflow.o \
+ midend.o mines5.o misc.o net3.o netslid3.o osx.o palisad3.o \
+ pattern7.o pearl5.o pegs3.o penrose.o random.o range3.o \
+ rect3.o samegam3.o signpos5.o singles5.o sixteen3.o slant5.o \
+ solo5.o tdq.o tents5.o towers5.o tracks3.o tree234.o \
+ twiddle3.o undead3.o unequal5.o unruly5.o untangl3.o \
+ version.o $(ALL_LIB_DIRS) $(ALL_LIBS)
+
+fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o
+
+fillingsolver: dsf.o filling2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o filling2.o malloc.o misc.o nullfe.o \
+ random.o
+
+galaxiespicture: dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o galaxie4.o malloc.o misc.o nullfe.o \
+ random.o -lm
+
+galaxiessolver: dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o galaxie2.o malloc.o misc.o nullfe.o \
+ random.o -lm
+
+keensolver: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o tree234.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o keen2.o latin6.o malloc.o maxflow.o \
+ misc.o nullfe.o random.o tree234.o
+
+latincheck: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o tree234.o
+ $(CC) $(ULDFLAGS) -o $@ latin8.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o tree234.o
+
+lightupsolver: combi.o lightup2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ combi.o lightup2.o malloc.o misc.o nullfe.o \
+ random.o
+
+loopysolver: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \
+ penrose.o random.o tree234.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o grid.o loopgen.o loopy2.o malloc.o \
+ misc.o nullfe.o penrose.o random.o tree234.o -lm
+
+magnetssolver: laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ laydomino.o magnets2.o malloc.o misc.o \
+ nullfe.o random.o -lm
+
+mapsolver: dsf.o malloc.o map2.o misc.o nullfe.o random.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o map2.o misc.o nullfe.o \
+ random.o -lm
+
+mineobfusc: malloc.o mines2.o misc.o nullfe.o random.o tree234.o
+ $(CC) $(ULDFLAGS) -o $@ malloc.o mines2.o misc.o nullfe.o random.o \
+ tree234.o
+
+obfusc: malloc.o misc.o nullfe.o obfusc.o random.o
+ $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o
+
+patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o
+ $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o
+
+patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o
+ $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o
+
+pearlbench: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \
+ penrose.o random.o tdq.o tree234.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o grid.o loopgen.o malloc.o misc.o \
+ nullfe.o pearl2.o penrose.o random.o tdq.o tree234.o -lm
+
+signpostsolver: dsf.o malloc.o misc.o nullfe.o random.o signpos2.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o misc.o nullfe.o random.o \
+ signpos2.o -lm
+
+singlessolver: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ singles3.o tree234.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o latin.o malloc.o maxflow.o misc.o \
+ nullfe.o random.o singles3.o tree234.o
+
+slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o slant2.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o \
+ random.o slant2.o
+
+solosolver: divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o
+ $(CC) $(ULDFLAGS) -o $@ divvy.o dsf.o malloc.o misc.o nullfe.o \
+ random.o solo2.o
+
+tentssolver: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o tents3.o
+ $(CC) $(ULDFLAGS) -o $@ dsf.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o tents3.o
+
+towerssolver: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o towers2.o \
+ tree234.o
+ $(CC) $(ULDFLAGS) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o towers2.o tree234.o
+
+unequalsolver: latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o unequal2.o
+ $(CC) $(ULDFLAGS) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o tree234.o unequal2.o
+
+unrulysolver: malloc.o misc.o nullfe.o random.o unruly2.o
+ $(CC) $(ULDFLAGS) -o $@ malloc.o misc.o nullfe.o random.o unruly2.o
+
+blackbox.o: ./blackbox.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+blackbo3.o: ./blackbox.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+bridges.o: ./bridges.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+bridges3.o: ./bridges.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+combi.o: ./combi.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube.o: ./cube.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube3.o: ./cube.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+divvy.o: ./divvy.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominosa.o: ./dominosa.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominos3.o: ./dominosa.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+drawing.o: ./drawing.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dsf.o: ./dsf.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen.o: ./fifteen.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen5.o: ./fifteen.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+fifteen2.o: ./fifteen.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+filling.o: ./filling.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+filling5.o: ./filling.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+filling2.o: ./filling.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+findloop.o: ./findloop.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip.o: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip3.o: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+flood.o: ./flood.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flood3.o: ./flood.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxies.o: ./galaxies.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+galaxie7.o: ./galaxies.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxie4.o: ./galaxies.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+galaxie2.o: ./galaxies.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+gtk.o: ./gtk.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess.o: ./guess.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess3.o: ./guess.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+inertia.o: ./inertia.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+inertia3.o: ./inertia.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+keen5.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen2.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
+latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+laydomino.o: ./laydomino.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup.o: ./lightup.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup5.o: ./lightup.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+lightup2.o: ./lightup.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+list.o: ./list.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+magnets.o: ./magnets.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+magnets5.o: ./magnets.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+magnets2.o: ./magnets.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+malloc.o: ./malloc.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map.o: ./map.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map5.o: ./map.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+map2.o: ./map.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+midend.o: ./midend.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines5.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+mines2.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
+misc.o: ./misc.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net.o: ./net.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net3.o: ./net.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+netslide.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+no-icon.o: ./no-icon.c
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullfe.o: ./nullfe.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullgame.o: ./nullgame.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+obfusc.o: ./obfusc.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+osx.o: ./osx.m ./puzzles.h
+ $(CC) -DGNUSTEP $(ALL_OBJCFLAGS) $(COMPAT) $(FWHACK) $(OBJCFLAGS) $(XFLAGS) -c $< -o $@
+palisade.o: ./palisade.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisad3.o: ./palisade.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern.o: ./pattern.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pattern7.o: ./pattern.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern4.o: ./pattern.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+pattern2.o: ./pattern.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pegs.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+penrose.o: ./penrose.c ./puzzles.h ./penrose.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+printing.o: ./printing.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+ps.o: ./ps.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+random.o: ./random.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range.o: ./range.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range3.o: ./range.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+rect.o: ./rect.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+rect3.o: ./rect.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+samegame.o: ./samegame.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+samegam3.o: ./samegame.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpost.o: ./signpost.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+signpos5.o: ./signpost.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpos2.o: ./signpost.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+singles.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+singles5.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+singles3.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+sixteen.o: ./sixteen.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+sixteen3.o: ./sixteen.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant.o: ./slant.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+slant5.o: ./slant.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant2.o: ./slant.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+solo.o: ./solo.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+solo5.o: ./solo.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+solo2.o: ./solo.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tdq.o: ./tdq.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents5.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tents3.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+towers.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+towers5.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+towers2.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tracks.o: ./tracks.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tracks3.o: ./tracks.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tree234.o: ./tree234.c ./tree234.h ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle.o: ./twiddle.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle3.o: ./twiddle.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+undead.o: ./undead.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+undead3.o: ./undead.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unequal5.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal2.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+unruly.o: ./unruly.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unruly5.o: ./unruly.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unruly2.o: ./unruly.c ./puzzles.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+untangle.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+version.o: ./version.c ./version.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows.o: ./windows.c ./puzzles.h ./resource.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows1.o: ./windows.c ./puzzles.h ./resource.h
+ $(CC) $(ALL_CFLAGS) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+
+clean::
+ 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
+ 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 @@
+# Makefile for puzzles under X/GTK and Unix.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+# You can define this path to point at your tools if you need to
+# TOOLPATH = /opt/gcc/bin
+CC := $(TOOLPATH)$(CC)
+# You can manually set this to `gtk-config' or `pkg-config gtk+-1.2'
+# (depending on what works on your system) if you want to enforce
+# building with GTK 1.2, or you can set it to `pkg-config gtk+-2.0'
+# if you want to enforce 2.0. The default is to try 2.0 and fall back
+# to 1.2 if it isn't found.
+GTK_CONFIG = sh -c 'pkg-config gtk+-2.0 $$0 2>/dev/null || gtk-config $$0'
+
+CFLAGS := -O2 -Wall -Werror -ansi -pedantic -g -I./ -Iicons/ `$(GTK_CONFIG) \
+ --cflags` $(CFLAGS)
+XLIBS = `$(GTK_CONFIG) --libs` -lm
+ULIBS = -lm#
+INSTALL=install
+INSTALL_PROGRAM=$(INSTALL)
+INSTALL_DATA=$(INSTALL)
+prefix=/usr/local
+exec_prefix=$(prefix)
+bindir=$(exec_prefix)/bin
+gamesdir=$(exec_prefix)/games
+mandir=$(prefix)/man
+man1dir=$(mandir)/man1
+
+all: $(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
+
+$(BINPREFIX)blackbox: blackbox.o drawing.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ blackbox.o drawing.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)bridges: bridges.o drawing.o dsf.o findloop.o gtk.o malloc.o \
+ midend.o misc.o no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ bridges.o drawing.o dsf.o findloop.o gtk.o malloc.o \
+ midend.o misc.o no-icon.o printing.o ps.o random.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)cube: cube.o drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o version.o
+ $(CC) -o $@ cube.o drawing.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)dominosa: dominosa.o drawing.o gtk.o laydomino.o malloc.o \
+ midend.o misc.o no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ dominosa.o drawing.o gtk.o laydomino.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)fifteen: drawing.o fifteen.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o fifteen.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)fifteensolver: fifteen2.o malloc.o misc.o nullfe.o random.o
+ $(CC) -o $@ fifteen2.o malloc.o misc.o nullfe.o random.o $(XLFLAGS) \
+ $(ULIBS)
+
+$(BINPREFIX)filling: drawing.o dsf.o filling.o gtk.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o dsf.o filling.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)fillingsolver: dsf.o filling2.o malloc.o misc.o nullfe.o \
+ random.o
+ $(CC) -o $@ dsf.o filling2.o malloc.o misc.o nullfe.o random.o \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)flip: drawing.o flip.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o tree234.o version.o
+ $(CC) -o $@ drawing.o flip.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o tree234.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)flood: drawing.o flood.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o flood.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)galaxies: drawing.o dsf.o galaxies.o gtk.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o dsf.o galaxies.o gtk.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)galaxiespicture: dsf.o galaxie4.o malloc.o misc.o nullfe.o \
+ random.o
+ $(CC) -o $@ dsf.o galaxie4.o malloc.o misc.o nullfe.o random.o -lm \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)galaxiessolver: dsf.o galaxie2.o malloc.o misc.o nullfe.o \
+ random.o
+ $(CC) -o $@ dsf.o galaxie2.o malloc.o misc.o nullfe.o random.o -lm \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)guess: drawing.o gtk.o guess.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o gtk.o guess.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)inertia: drawing.o gtk.o inertia.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o gtk.o inertia.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)keen: drawing.o dsf.o gtk.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
+ $(CC) -o $@ drawing.o dsf.o gtk.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 $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)keensolver: dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o \
+ nullfe.o random.o tree234.o
+ $(CC) -o $@ dsf.o keen2.o latin6.o malloc.o maxflow.o misc.o \
+ nullfe.o random.o tree234.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)latincheck: latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o
+ $(CC) -o $@ latin8.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)lightup: combi.o drawing.o gtk.o lightup.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ combi.o drawing.o gtk.o lightup.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)lightupsolver: combi.o lightup2.o malloc.o misc.o nullfe.o \
+ random.o
+ $(CC) -o $@ combi.o lightup2.o malloc.o misc.o nullfe.o random.o \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)loopy: drawing.o dsf.o grid.o gtk.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
+ $(CC) -o $@ drawing.o dsf.o grid.o gtk.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 $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)loopysolver: dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o \
+ nullfe.o penrose.o random.o tree234.o
+ $(CC) -o $@ dsf.o grid.o loopgen.o loopy2.o malloc.o misc.o nullfe.o \
+ penrose.o random.o tree234.o -lm $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)magnets: drawing.o gtk.o laydomino.o magnets.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o gtk.o laydomino.o magnets.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)magnetssolver: laydomino.o magnets2.o malloc.o misc.o nullfe.o \
+ random.o
+ $(CC) -o $@ laydomino.o magnets2.o malloc.o misc.o nullfe.o random.o \
+ -lm $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)map: drawing.o dsf.o gtk.o malloc.o map.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o map.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)mapsolver: dsf.o malloc.o map2.o misc.o nullfe.o random.o
+ $(CC) -o $@ dsf.o malloc.o map2.o misc.o nullfe.o random.o -lm \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)mineobfusc: malloc.o mines2.o misc.o nullfe.o random.o tree234.o
+ $(CC) -o $@ malloc.o mines2.o misc.o nullfe.o random.o tree234.o \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)mines: drawing.o gtk.o malloc.o midend.o mines.o misc.o \
+ no-icon.o printing.o ps.o random.o tree234.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o mines.o misc.o \
+ no-icon.o printing.o ps.o random.o tree234.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)net: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \
+ net.o no-icon.o printing.o ps.o random.o tree234.o version.o
+ $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
+ misc.o net.o no-icon.o printing.o ps.o random.o tree234.o \
+ version.o $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)netslide: drawing.o gtk.o malloc.o midend.o misc.o netslide.o \
+ no-icon.o printing.o ps.o random.o tree234.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o netslide.o \
+ no-icon.o printing.o ps.o random.o tree234.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)nullgame: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ nullgame.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ nullgame.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)obfusc: malloc.o misc.o nullfe.o obfusc.o random.o
+ $(CC) -o $@ malloc.o misc.o nullfe.o obfusc.o random.o $(XLFLAGS) \
+ $(ULIBS)
+
+$(BINPREFIX)palisade: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o palisade.o printing.o ps.o random.o version.o
+ $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o palisade.o printing.o ps.o random.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)pattern: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ pattern.o printing.o ps.o random.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ pattern.o printing.o ps.o random.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)patternpicture: malloc.o misc.o nullfe.o pattern4.o random.o
+ $(CC) -o $@ malloc.o misc.o nullfe.o pattern4.o random.o $(XLFLAGS) \
+ $(ULIBS)
+
+$(BINPREFIX)patternsolver: malloc.o misc.o nullfe.o pattern2.o random.o
+ $(CC) -o $@ malloc.o misc.o nullfe.o pattern2.o random.o $(XLFLAGS) \
+ $(ULIBS)
+
+$(BINPREFIX)pearl: drawing.o dsf.o grid.o gtk.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
+ $(CC) -o $@ drawing.o dsf.o grid.o gtk.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 $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)pearlbench: dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o \
+ pearl2.o penrose.o random.o tdq.o tree234.o
+ $(CC) -o $@ dsf.o grid.o loopgen.o malloc.o misc.o nullfe.o pearl2.o \
+ penrose.o random.o tdq.o tree234.o -lm $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)pegs: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o pegs.o \
+ printing.o ps.o random.o tree234.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ pegs.o printing.o ps.o random.o tree234.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)range: drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o range.o version.o
+ $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o range.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)rect: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o rect.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o rect.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)samegame: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o samegame.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o samegame.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)signpost: drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o signpost.o version.o
+ $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o signpost.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)signpostsolver: dsf.o malloc.o misc.o nullfe.o random.o \
+ signpos2.o
+ $(CC) -o $@ dsf.o malloc.o misc.o nullfe.o random.o signpos2.o -lm \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)singles: drawing.o dsf.o gtk.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
+ $(CC) -o $@ drawing.o dsf.o gtk.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 $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)singlessolver: dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o singles3.o tree234.o
+ $(CC) -o $@ dsf.o latin.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o singles3.o tree234.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)sixteen: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o sixteen.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o sixteen.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)slant: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o slant.o version.o
+ $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o slant.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)slantsolver: dsf.o findloop.o malloc.o misc.o nullfe.o random.o \
+ slant2.o
+ $(CC) -o $@ dsf.o findloop.o malloc.o misc.o nullfe.o random.o \
+ slant2.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)solo: divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o solo.o version.o
+ $(CC) -o $@ divvy.o drawing.o dsf.o gtk.o malloc.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o solo.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)solosolver: divvy.o dsf.o malloc.o misc.o nullfe.o random.o \
+ solo2.o
+ $(CC) -o $@ divvy.o dsf.o malloc.o misc.o nullfe.o random.o solo2.o \
+ $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)tents: drawing.o dsf.o gtk.o malloc.o maxflow.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o tents.o version.o
+ $(CC) -o $@ drawing.o dsf.o gtk.o malloc.o maxflow.o midend.o misc.o \
+ no-icon.o printing.o ps.o random.o tents.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)tentssolver: dsf.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tents3.o
+ $(CC) -o $@ dsf.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tents3.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)towers: drawing.o gtk.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
+ $(CC) -o $@ drawing.o gtk.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 $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)towerssolver: latin6.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o towers2.o tree234.o
+ $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ towers2.o tree234.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)tracks: drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o tracks.o version.o
+ $(CC) -o $@ drawing.o dsf.o findloop.o gtk.o malloc.o midend.o \
+ misc.o no-icon.o printing.o ps.o random.o tracks.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)twiddle: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o twiddle.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o twiddle.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)undead: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o undead.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o undead.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)unequal: drawing.o gtk.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
+ $(CC) -o $@ drawing.o gtk.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 $(XLFLAGS) $(XLIBS)
+
+$(BINPREFIX)unequalsolver: latin6.o malloc.o maxflow.o misc.o nullfe.o \
+ random.o tree234.o unequal2.o
+ $(CC) -o $@ latin6.o malloc.o maxflow.o misc.o nullfe.o random.o \
+ tree234.o unequal2.o $(XLFLAGS) $(ULIBS)
+
+$(BINPREFIX)unruly: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o unruly.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o unruly.o version.o $(XLFLAGS) \
+ $(XLIBS)
+
+$(BINPREFIX)unrulysolver: malloc.o misc.o nullfe.o random.o unruly2.o
+ $(CC) -o $@ malloc.o misc.o nullfe.o random.o unruly2.o $(XLFLAGS) \
+ $(ULIBS)
+
+$(BINPREFIX)untangle: drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o tree234.o untangle.o version.o
+ $(CC) -o $@ drawing.o gtk.o malloc.o midend.o misc.o no-icon.o \
+ printing.o ps.o random.o tree234.o untangle.o version.o \
+ $(XLFLAGS) $(XLIBS)
+
+blackbox.o: ./blackbox.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+blackbo3.o: ./blackbox.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+bridges.o: ./bridges.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+bridges3.o: ./bridges.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+combi.o: ./combi.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube.o: ./cube.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+cube3.o: ./cube.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+divvy.o: ./divvy.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominosa.o: ./dominosa.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dominos3.o: ./dominosa.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+drawing.o: ./drawing.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+dsf.o: ./dsf.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen.o: ./fifteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+fifteen5.o: ./fifteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+fifteen2.o: ./fifteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+filling.o: ./filling.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+filling5.o: ./filling.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+filling2.o: ./filling.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+findloop.o: ./findloop.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip.o: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flip3.o: ./flip.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+flood.o: ./flood.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+flood3.o: ./flood.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxies.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+galaxie7.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+galaxie4.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+galaxie2.o: ./galaxies.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+grid.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+gtk.o: ./gtk.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess.o: ./guess.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+guess3.o: ./guess.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+inertia.o: ./inertia.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+inertia3.o: ./inertia.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+keen5.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+keen2.o: ./keen.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+latin.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+latin8.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@
+latin6.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+laydomino.o: ./laydomino.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup.o: ./lightup.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+lightup5.o: ./lightup.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+lightup2.o: ./lightup.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+list.o: ./list.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopgen.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+loopy5.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+loopy2.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+magnets.o: ./magnets.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+magnets5.o: ./magnets.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+magnets2.o: ./magnets.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+malloc.o: ./malloc.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map.o: ./map.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+map5.o: ./map.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+map2.o: ./map.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+maxflow.o: ./maxflow.c ./maxflow.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+midend.o: ./midend.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+mines5.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+mines2.o: ./mines.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@
+misc.o: ./misc.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net.o: ./net.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+net3.o: ./net.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+netslide.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+netslid3.o: ./netslide.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+no-icon.o: ./no-icon.c
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullfe.o: ./nullfe.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+nullgame.o: ./nullgame.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+obfusc.o: ./obfusc.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+osx.o: ./osx.m ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisade.o: ./palisade.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+palisad3.o: ./palisade.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pattern7.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pattern4.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@
+pattern2.o: ./pattern.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pearl.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pearl5.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+pearl2.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+pegs.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+pegs3.o: ./pegs.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+penrose.o: ./penrose.c ./puzzles.h ./penrose.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+printing.o: ./printing.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+ps.o: ./ps.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+random.o: ./random.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range.o: ./range.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+range3.o: ./range.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+rect.o: ./rect.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+rect3.o: ./rect.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+samegame.o: ./samegame.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+samegam3.o: ./samegame.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpost.o: ./signpost.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+signpos5.o: ./signpost.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+signpos2.o: ./signpost.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+singles.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+singles5.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+singles3.o: ./singles.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+sixteen.o: ./sixteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+sixteen3.o: ./sixteen.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant.o: ./slant.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+slant5.o: ./slant.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+slant2.o: ./slant.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+solo.o: ./solo.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+solo5.o: ./solo.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+solo2.o: ./solo.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tdq.o: ./tdq.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tents5.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tents3.o: ./tents.c ./puzzles.h ./maxflow.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+towers.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+towers5.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+towers2.o: ./towers.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+tracks.o: ./tracks.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+tracks3.o: ./tracks.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+tree234.o: ./tree234.c ./tree234.h ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle.o: ./twiddle.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+twiddle3.o: ./twiddle.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+undead.o: ./undead.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+undead3.o: ./undead.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unequal5.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unequal2.o: ./unequal.c ./puzzles.h ./latin.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+unruly.o: ./unruly.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+unruly5.o: ./unruly.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+unruly2.o: ./unruly.c ./puzzles.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@
+untangle.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+untangl3.o: ./untangle.c ./puzzles.h ./tree234.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+version.o: ./version.c ./version.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows.o: ./windows.c ./puzzles.h ./resource.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@
+windows1.o: ./windows.c ./puzzles.h ./resource.h
+ $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@
+
+GAMES += blackbox
+GAMES += bridges
+GAMES += cube
+GAMES += dominosa
+GAMES += fifteen
+GAMES += filling
+GAMES += flip
+GAMES += flood
+GAMES += galaxies
+GAMES += guess
+GAMES += inertia
+GAMES += keen
+GAMES += lightup
+GAMES += loopy
+GAMES += magnets
+GAMES += map
+GAMES += mines
+GAMES += net
+GAMES += netslide
+GAMES += palisade
+GAMES += pattern
+GAMES += pearl
+GAMES += pegs
+GAMES += range
+GAMES += rect
+GAMES += samegame
+GAMES += signpost
+GAMES += singles
+GAMES += sixteen
+GAMES += slant
+GAMES += solo
+GAMES += tents
+GAMES += towers
+GAMES += tracks
+GAMES += twiddle
+GAMES += undead
+GAMES += unequal
+GAMES += unruly
+GAMES += untangle
+install:
+ for i in $(GAMES); do \
+ $(INSTALL_PROGRAM) -m 755 $(BINPREFIX)$$i $(DESTDIR)$(gamesdir)/$(BINPREFIX)$$i \
+ || exit 1; \
+ done
+test: benchmark.html benchmark.txt
+
+benchmark.html: benchmark.txt benchmark.pl
+ ./benchmark.pl benchmark.txt > $@
+
+benchmark.txt: benchmark.sh $(GAMES)
+ ./benchmark.sh > $@
+
+
+clean:
+ 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 @@
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile.am for puzzles under Unix with Autoconf/Automake.
+#
+# This file was created by `mkfiles.pl' from the `Recipe' file.
+# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+noinst_PROGRAMS = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
+ dominosa$(EXEEXT) fifteen$(EXEEXT) fifteensolver$(EXEEXT) \
+ filling$(EXEEXT) fillingsolver$(EXEEXT) flip$(EXEEXT) \
+ flood$(EXEEXT) galaxies$(EXEEXT) galaxiespicture$(EXEEXT) \
+ galaxiessolver$(EXEEXT) guess$(EXEEXT) inertia$(EXEEXT) \
+ keen$(EXEEXT) keensolver$(EXEEXT) latincheck$(EXEEXT) \
+ lightup$(EXEEXT) lightupsolver$(EXEEXT) loopy$(EXEEXT) \
+ loopysolver$(EXEEXT) magnets$(EXEEXT) magnetssolver$(EXEEXT) \
+ map$(EXEEXT) mapsolver$(EXEEXT) mineobfusc$(EXEEXT) \
+ mines$(EXEEXT) net$(EXEEXT) netslide$(EXEEXT) \
+ nullgame$(EXEEXT) obfusc$(EXEEXT) palisade$(EXEEXT) \
+ pattern$(EXEEXT) patternpicture$(EXEEXT) \
+ patternsolver$(EXEEXT) pearl$(EXEEXT) pearlbench$(EXEEXT) \
+ pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) samegame$(EXEEXT) \
+ signpost$(EXEEXT) signpostsolver$(EXEEXT) singles$(EXEEXT) \
+ singlessolver$(EXEEXT) sixteen$(EXEEXT) slant$(EXEEXT) \
+ slantsolver$(EXEEXT) solo$(EXEEXT) solosolver$(EXEEXT) \
+ tents$(EXEEXT) tentssolver$(EXEEXT) towers$(EXEEXT) \
+ towerssolver$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
+ undead$(EXEEXT) unequal$(EXEEXT) unequalsolver$(EXEEXT) \
+ unruly$(EXEEXT) unrulysolver$(EXEEXT) untangle$(EXEEXT)
+bin_PROGRAMS = $(am__EXEEXT_1)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libfifteen2_a_AR = $(AR) $(ARFLAGS)
+libfifteen2_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libfifteen2_a_OBJECTS = ./libfifteen2_a-fifteen.$(OBJEXT)
+libfifteen2_a_OBJECTS = $(am_libfifteen2_a_OBJECTS)
+libfilling2_a_AR = $(AR) $(ARFLAGS)
+libfilling2_a_LIBADD =
+am_libfilling2_a_OBJECTS = ./libfilling2_a-filling.$(OBJEXT)
+libfilling2_a_OBJECTS = $(am_libfilling2_a_OBJECTS)
+libgalaxie2_a_AR = $(AR) $(ARFLAGS)
+libgalaxie2_a_LIBADD =
+am_libgalaxie2_a_OBJECTS = ./libgalaxie2_a-galaxies.$(OBJEXT)
+libgalaxie2_a_OBJECTS = $(am_libgalaxie2_a_OBJECTS)
+libgalaxie4_a_AR = $(AR) $(ARFLAGS)
+libgalaxie4_a_LIBADD =
+am_libgalaxie4_a_OBJECTS = ./libgalaxie4_a-galaxies.$(OBJEXT)
+libgalaxie4_a_OBJECTS = $(am_libgalaxie4_a_OBJECTS)
+libkeen2_a_AR = $(AR) $(ARFLAGS)
+libkeen2_a_LIBADD =
+am_libkeen2_a_OBJECTS = ./libkeen2_a-keen.$(OBJEXT)
+libkeen2_a_OBJECTS = $(am_libkeen2_a_OBJECTS)
+liblatin6_a_AR = $(AR) $(ARFLAGS)
+liblatin6_a_LIBADD =
+am_liblatin6_a_OBJECTS = ./liblatin6_a-latin.$(OBJEXT)
+liblatin6_a_OBJECTS = $(am_liblatin6_a_OBJECTS)
+liblatin8_a_AR = $(AR) $(ARFLAGS)
+liblatin8_a_LIBADD =
+am_liblatin8_a_OBJECTS = ./liblatin8_a-latin.$(OBJEXT)
+liblatin8_a_OBJECTS = $(am_liblatin8_a_OBJECTS)
+liblightup2_a_AR = $(AR) $(ARFLAGS)
+liblightup2_a_LIBADD =
+am_liblightup2_a_OBJECTS = ./liblightup2_a-lightup.$(OBJEXT)
+liblightup2_a_OBJECTS = $(am_liblightup2_a_OBJECTS)
+libloopy2_a_AR = $(AR) $(ARFLAGS)
+libloopy2_a_LIBADD =
+am_libloopy2_a_OBJECTS = ./libloopy2_a-loopy.$(OBJEXT)
+libloopy2_a_OBJECTS = $(am_libloopy2_a_OBJECTS)
+libmagnets2_a_AR = $(AR) $(ARFLAGS)
+libmagnets2_a_LIBADD =
+am_libmagnets2_a_OBJECTS = ./libmagnets2_a-magnets.$(OBJEXT)
+libmagnets2_a_OBJECTS = $(am_libmagnets2_a_OBJECTS)
+libmap2_a_AR = $(AR) $(ARFLAGS)
+libmap2_a_LIBADD =
+am_libmap2_a_OBJECTS = ./libmap2_a-map.$(OBJEXT)
+libmap2_a_OBJECTS = $(am_libmap2_a_OBJECTS)
+libmines2_a_AR = $(AR) $(ARFLAGS)
+libmines2_a_LIBADD =
+am_libmines2_a_OBJECTS = ./libmines2_a-mines.$(OBJEXT)
+libmines2_a_OBJECTS = $(am_libmines2_a_OBJECTS)
+libpattern2_a_AR = $(AR) $(ARFLAGS)
+libpattern2_a_LIBADD =
+am_libpattern2_a_OBJECTS = ./libpattern2_a-pattern.$(OBJEXT)
+libpattern2_a_OBJECTS = $(am_libpattern2_a_OBJECTS)
+libpattern4_a_AR = $(AR) $(ARFLAGS)
+libpattern4_a_LIBADD =
+am_libpattern4_a_OBJECTS = ./libpattern4_a-pattern.$(OBJEXT)
+libpattern4_a_OBJECTS = $(am_libpattern4_a_OBJECTS)
+libpearl2_a_AR = $(AR) $(ARFLAGS)
+libpearl2_a_LIBADD =
+am_libpearl2_a_OBJECTS = ./libpearl2_a-pearl.$(OBJEXT)
+libpearl2_a_OBJECTS = $(am_libpearl2_a_OBJECTS)
+libsignpos2_a_AR = $(AR) $(ARFLAGS)
+libsignpos2_a_LIBADD =
+am_libsignpos2_a_OBJECTS = ./libsignpos2_a-signpost.$(OBJEXT)
+libsignpos2_a_OBJECTS = $(am_libsignpos2_a_OBJECTS)
+libsingles3_a_AR = $(AR) $(ARFLAGS)
+libsingles3_a_LIBADD =
+am_libsingles3_a_OBJECTS = ./libsingles3_a-singles.$(OBJEXT)
+libsingles3_a_OBJECTS = $(am_libsingles3_a_OBJECTS)
+libslant2_a_AR = $(AR) $(ARFLAGS)
+libslant2_a_LIBADD =
+am_libslant2_a_OBJECTS = ./libslant2_a-slant.$(OBJEXT)
+libslant2_a_OBJECTS = $(am_libslant2_a_OBJECTS)
+libsolo2_a_AR = $(AR) $(ARFLAGS)
+libsolo2_a_LIBADD =
+am_libsolo2_a_OBJECTS = ./libsolo2_a-solo.$(OBJEXT)
+libsolo2_a_OBJECTS = $(am_libsolo2_a_OBJECTS)
+libtents3_a_AR = $(AR) $(ARFLAGS)
+libtents3_a_LIBADD =
+am_libtents3_a_OBJECTS = ./libtents3_a-tents.$(OBJEXT)
+libtents3_a_OBJECTS = $(am_libtents3_a_OBJECTS)
+libtowers2_a_AR = $(AR) $(ARFLAGS)
+libtowers2_a_LIBADD =
+am_libtowers2_a_OBJECTS = ./libtowers2_a-towers.$(OBJEXT)
+libtowers2_a_OBJECTS = $(am_libtowers2_a_OBJECTS)
+libunequal2_a_AR = $(AR) $(ARFLAGS)
+libunequal2_a_LIBADD =
+am_libunequal2_a_OBJECTS = ./libunequal2_a-unequal.$(OBJEXT)
+libunequal2_a_OBJECTS = $(am_libunequal2_a_OBJECTS)
+libunruly2_a_AR = $(AR) $(ARFLAGS)
+libunruly2_a_LIBADD =
+am_libunruly2_a_OBJECTS = ./libunruly2_a-unruly.$(OBJEXT)
+libunruly2_a_OBJECTS = $(am_libunruly2_a_OBJECTS)
+am__EXEEXT_1 = blackbox$(EXEEXT) bridges$(EXEEXT) cube$(EXEEXT) \
+ dominosa$(EXEEXT) fifteen$(EXEEXT) filling$(EXEEXT) \
+ flip$(EXEEXT) flood$(EXEEXT) galaxies$(EXEEXT) guess$(EXEEXT) \
+ inertia$(EXEEXT) keen$(EXEEXT) lightup$(EXEEXT) loopy$(EXEEXT) \
+ magnets$(EXEEXT) map$(EXEEXT) mines$(EXEEXT) net$(EXEEXT) \
+ netslide$(EXEEXT) palisade$(EXEEXT) pattern$(EXEEXT) \
+ pearl$(EXEEXT) pegs$(EXEEXT) range$(EXEEXT) rect$(EXEEXT) \
+ samegame$(EXEEXT) signpost$(EXEEXT) singles$(EXEEXT) \
+ sixteen$(EXEEXT) slant$(EXEEXT) solo$(EXEEXT) tents$(EXEEXT) \
+ towers$(EXEEXT) tracks$(EXEEXT) twiddle$(EXEEXT) \
+ undead$(EXEEXT) unequal$(EXEEXT) unruly$(EXEEXT) \
+ untangle$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am_blackbox_OBJECTS = ./blackbox.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+blackbox_OBJECTS = $(am_blackbox_OBJECTS)
+am__DEPENDENCIES_1 =
+blackbox_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_bridges_OBJECTS = ./bridges.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./version.$(OBJEXT)
+bridges_OBJECTS = $(am_bridges_OBJECTS)
+bridges_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_cube_OBJECTS = ./cube.$(OBJEXT) ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./version.$(OBJEXT)
+cube_OBJECTS = $(am_cube_OBJECTS)
+cube_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_dominosa_OBJECTS = ./dominosa.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+dominosa_OBJECTS = $(am_dominosa_OBJECTS)
+dominosa_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_fifteen_OBJECTS = ./drawing.$(OBJEXT) ./fifteen.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+fifteen_OBJECTS = $(am_fifteen_OBJECTS)
+fifteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_fifteensolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+fifteensolver_OBJECTS = $(am_fifteensolver_OBJECTS)
+fifteensolver_DEPENDENCIES = libfifteen2_a-fifteen.$(OBJEXT)
+am_filling_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./filling.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+filling_OBJECTS = $(am_filling_OBJECTS)
+filling_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_fillingsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+fillingsolver_OBJECTS = $(am_fillingsolver_OBJECTS)
+fillingsolver_DEPENDENCIES = libfilling2_a-filling.$(OBJEXT)
+am_flip_OBJECTS = ./drawing.$(OBJEXT) ./flip.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+flip_OBJECTS = $(am_flip_OBJECTS)
+flip_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_flood_OBJECTS = ./drawing.$(OBJEXT) ./flood.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+flood_OBJECTS = $(am_flood_OBJECTS)
+flood_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_galaxies_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./galaxies.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+galaxies_OBJECTS = $(am_galaxies_OBJECTS)
+galaxies_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_galaxiespicture_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+galaxiespicture_OBJECTS = $(am_galaxiespicture_OBJECTS)
+galaxiespicture_DEPENDENCIES = libgalaxie4_a-galaxies.$(OBJEXT)
+am_galaxiessolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+galaxiessolver_OBJECTS = $(am_galaxiessolver_OBJECTS)
+galaxiessolver_DEPENDENCIES = libgalaxie2_a-galaxies.$(OBJEXT)
+am_guess_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./guess.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+guess_OBJECTS = $(am_guess_OBJECTS)
+guess_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_inertia_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./inertia.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+inertia_OBJECTS = $(am_inertia_OBJECTS)
+inertia_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_keen_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./keen.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+keen_OBJECTS = $(am_keen_OBJECTS)
+keen_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_keensolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT)
+keensolver_OBJECTS = $(am_keensolver_OBJECTS)
+keensolver_DEPENDENCIES = libkeen2_a-keen.$(OBJEXT) \
+ liblatin6_a-latin.$(OBJEXT)
+am_latincheck_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+latincheck_OBJECTS = $(am_latincheck_OBJECTS)
+latincheck_DEPENDENCIES = liblatin8_a-latin.$(OBJEXT)
+am_lightup_OBJECTS = ./combi.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./lightup.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+lightup_OBJECTS = $(am_lightup_OBJECTS)
+lightup_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_lightupsolver_OBJECTS = ./combi.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+lightupsolver_OBJECTS = $(am_lightupsolver_OBJECTS)
+lightupsolver_DEPENDENCIES = liblightup2_a-lightup.$(OBJEXT)
+am_loopy_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
+ ./loopy.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./penrose.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+loopy_OBJECTS = $(am_loopy_OBJECTS)
+loopy_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_loopysolver_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
+ ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+loopysolver_OBJECTS = $(am_loopysolver_OBJECTS)
+loopysolver_DEPENDENCIES = libloopy2_a-loopy.$(OBJEXT)
+am_magnets_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./laydomino.$(OBJEXT) ./magnets.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./version.$(OBJEXT)
+magnets_OBJECTS = $(am_magnets_OBJECTS)
+magnets_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_magnetssolver_OBJECTS = ./laydomino.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+magnetssolver_OBJECTS = $(am_magnetssolver_OBJECTS)
+magnetssolver_DEPENDENCIES = libmagnets2_a-magnets.$(OBJEXT)
+am_map_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./map.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+map_OBJECTS = $(am_map_OBJECTS)
+map_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_mapsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+mapsolver_OBJECTS = $(am_mapsolver_OBJECTS)
+mapsolver_DEPENDENCIES = libmap2_a-map.$(OBJEXT)
+am_mineobfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
+mineobfusc_OBJECTS = $(am_mineobfusc_OBJECTS)
+mineobfusc_DEPENDENCIES = libmines2_a-mines.$(OBJEXT)
+am_mines_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./mines.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+mines_OBJECTS = $(am_mines_OBJECTS)
+mines_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_net_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./net.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+net_OBJECTS = $(am_net_OBJECTS)
+net_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_netslide_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./netslide.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+netslide_OBJECTS = $(am_netslide_OBJECTS)
+netslide_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_nullgame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./nullgame.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+nullgame_OBJECTS = $(am_nullgame_OBJECTS)
+nullgame_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_obfusc_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./obfusc.$(OBJEXT) ./random.$(OBJEXT)
+obfusc_OBJECTS = $(am_obfusc_OBJECTS)
+obfusc_DEPENDENCIES =
+am_palisade_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./palisade.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./version.$(OBJEXT)
+palisade_OBJECTS = $(am_palisade_OBJECTS)
+palisade_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_pattern_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./pattern.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./version.$(OBJEXT)
+pattern_OBJECTS = $(am_pattern_OBJECTS)
+pattern_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_patternpicture_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+patternpicture_OBJECTS = $(am_patternpicture_OBJECTS)
+patternpicture_DEPENDENCIES = libpattern4_a-pattern.$(OBJEXT)
+am_patternsolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+patternsolver_OBJECTS = $(am_patternsolver_OBJECTS)
+patternsolver_DEPENDENCIES = libpattern2_a-pattern.$(OBJEXT)
+am_pearl_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./grid.$(OBJEXT) ./gtk.$(OBJEXT) ./loopgen.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./pearl.$(OBJEXT) ./penrose.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tdq.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+pearl_OBJECTS = $(am_pearl_OBJECTS)
+pearl_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_pearlbench_OBJECTS = ./dsf.$(OBJEXT) ./grid.$(OBJEXT) \
+ ./loopgen.$(OBJEXT) ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./penrose.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tdq.$(OBJEXT) ./tree234.$(OBJEXT)
+pearlbench_OBJECTS = $(am_pearlbench_OBJECTS)
+pearlbench_DEPENDENCIES = libpearl2_a-pearl.$(OBJEXT)
+am_pegs_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./pegs.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+pegs_OBJECTS = $(am_pegs_OBJECTS)
+pegs_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_range_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./range.$(OBJEXT) ./version.$(OBJEXT)
+range_OBJECTS = $(am_range_OBJECTS)
+range_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_rect_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./rect.$(OBJEXT) ./version.$(OBJEXT)
+rect_OBJECTS = $(am_rect_OBJECTS)
+rect_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_samegame_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./samegame.$(OBJEXT) ./version.$(OBJEXT)
+samegame_OBJECTS = $(am_samegame_OBJECTS)
+samegame_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_signpost_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./signpost.$(OBJEXT) \
+ ./version.$(OBJEXT)
+signpost_OBJECTS = $(am_signpost_OBJECTS)
+signpost_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_signpostsolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+signpostsolver_OBJECTS = $(am_signpostsolver_OBJECTS)
+signpostsolver_DEPENDENCIES = libsignpos2_a-signpost.$(OBJEXT)
+am_singles_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./gtk.$(OBJEXT) ./latin.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./singles.$(OBJEXT) ./tree234.$(OBJEXT) \
+ ./version.$(OBJEXT)
+singles_OBJECTS = $(am_singles_OBJECTS)
+singles_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_singlessolver_OBJECTS = ./dsf.$(OBJEXT) ./latin.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT) ./tree234.$(OBJEXT)
+singlessolver_OBJECTS = $(am_singlessolver_OBJECTS)
+singlessolver_DEPENDENCIES = libsingles3_a-singles.$(OBJEXT)
+am_sixteen_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./sixteen.$(OBJEXT) ./version.$(OBJEXT)
+sixteen_OBJECTS = $(am_sixteen_OBJECTS)
+sixteen_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_slant_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./slant.$(OBJEXT) ./version.$(OBJEXT)
+slant_OBJECTS = $(am_slant_OBJECTS)
+slant_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_slantsolver_OBJECTS = ./dsf.$(OBJEXT) ./findloop.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT)
+slantsolver_OBJECTS = $(am_slantsolver_OBJECTS)
+slantsolver_DEPENDENCIES = libslant2_a-slant.$(OBJEXT)
+am_solo_OBJECTS = ./divvy.$(OBJEXT) ./drawing.$(OBJEXT) \
+ ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./solo.$(OBJEXT) ./version.$(OBJEXT)
+solo_OBJECTS = $(am_solo_OBJECTS)
+solo_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_solosolver_OBJECTS = ./divvy.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT)
+solosolver_OBJECTS = $(am_solosolver_OBJECTS)
+solosolver_DEPENDENCIES = libsolo2_a-solo.$(OBJEXT)
+am_tents_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) ./midend.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) \
+ ./ps.$(OBJEXT) ./random.$(OBJEXT) ./tents.$(OBJEXT) \
+ ./version.$(OBJEXT)
+tents_OBJECTS = $(am_tents_OBJECTS)
+tents_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_tentssolver_OBJECTS = ./dsf.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./maxflow.$(OBJEXT) ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) \
+ ./random.$(OBJEXT)
+tentssolver_OBJECTS = $(am_tentssolver_OBJECTS)
+tentssolver_DEPENDENCIES = libtents3_a-tents.$(OBJEXT)
+am_towers_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./towers.$(OBJEXT) ./tree234.$(OBJEXT) ./version.$(OBJEXT)
+towers_OBJECTS = $(am_towers_OBJECTS)
+towers_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_towerssolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+towerssolver_OBJECTS = $(am_towerssolver_OBJECTS)
+towerssolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
+ libtowers2_a-towers.$(OBJEXT)
+am_tracks_OBJECTS = ./drawing.$(OBJEXT) ./dsf.$(OBJEXT) \
+ ./findloop.$(OBJEXT) ./gtk.$(OBJEXT) ./malloc.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tracks.$(OBJEXT) ./version.$(OBJEXT)
+tracks_OBJECTS = $(am_tracks_OBJECTS)
+tracks_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_twiddle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./twiddle.$(OBJEXT) ./version.$(OBJEXT)
+twiddle_OBJECTS = $(am_twiddle_OBJECTS)
+twiddle_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_undead_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./undead.$(OBJEXT) ./version.$(OBJEXT)
+undead_OBJECTS = $(am_undead_OBJECTS)
+undead_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_unequal_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./latin.$(OBJEXT) ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./midend.$(OBJEXT) ./misc.$(OBJEXT) ./no-icon.$(OBJEXT) \
+ ./printing.$(OBJEXT) ./ps.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT) ./unequal.$(OBJEXT) ./version.$(OBJEXT)
+unequal_OBJECTS = $(am_unequal_OBJECTS)
+unequal_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_unequalsolver_OBJECTS = ./malloc.$(OBJEXT) ./maxflow.$(OBJEXT) \
+ ./misc.$(OBJEXT) ./nullfe.$(OBJEXT) ./random.$(OBJEXT) \
+ ./tree234.$(OBJEXT)
+unequalsolver_OBJECTS = $(am_unequalsolver_OBJECTS)
+unequalsolver_DEPENDENCIES = liblatin6_a-latin.$(OBJEXT) \
+ libunequal2_a-unequal.$(OBJEXT)
+am_unruly_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./unruly.$(OBJEXT) ./version.$(OBJEXT)
+unruly_OBJECTS = $(am_unruly_OBJECTS)
+unruly_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_unrulysolver_OBJECTS = ./malloc.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./nullfe.$(OBJEXT) ./random.$(OBJEXT)
+unrulysolver_OBJECTS = $(am_unrulysolver_OBJECTS)
+unrulysolver_DEPENDENCIES = libunruly2_a-unruly.$(OBJEXT)
+am_untangle_OBJECTS = ./drawing.$(OBJEXT) ./gtk.$(OBJEXT) \
+ ./malloc.$(OBJEXT) ./midend.$(OBJEXT) ./misc.$(OBJEXT) \
+ ./no-icon.$(OBJEXT) ./printing.$(OBJEXT) ./ps.$(OBJEXT) \
+ ./random.$(OBJEXT) ./tree234.$(OBJEXT) ./untangle.$(OBJEXT) \
+ ./version.$(OBJEXT)
+untangle_OBJECTS = $(am_untangle_OBJECTS)
+untangle_DEPENDENCIES = $(am__DEPENDENCIES_1)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
+ $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
+ $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
+ $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
+ $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
+ $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
+ $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
+ $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
+ $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
+ $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
+ $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
+ $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
+ $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
+ $(fifteensolver_SOURCES) $(filling_SOURCES) \
+ $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
+ $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
+ $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
+ $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
+ $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
+ $(loopysolver_SOURCES) $(magnets_SOURCES) \
+ $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
+ $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
+ $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
+ $(palisade_SOURCES) $(pattern_SOURCES) \
+ $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
+ $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
+ $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
+ $(signpost_SOURCES) $(signpostsolver_SOURCES) \
+ $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
+ $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
+ $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
+ $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
+ $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
+ $(unequalsolver_SOURCES) $(unruly_SOURCES) \
+ $(unrulysolver_SOURCES) $(untangle_SOURCES)
+DIST_SOURCES = $(libfifteen2_a_SOURCES) $(libfilling2_a_SOURCES) \
+ $(libgalaxie2_a_SOURCES) $(libgalaxie4_a_SOURCES) \
+ $(libkeen2_a_SOURCES) $(liblatin6_a_SOURCES) \
+ $(liblatin8_a_SOURCES) $(liblightup2_a_SOURCES) \
+ $(libloopy2_a_SOURCES) $(libmagnets2_a_SOURCES) \
+ $(libmap2_a_SOURCES) $(libmines2_a_SOURCES) \
+ $(libpattern2_a_SOURCES) $(libpattern4_a_SOURCES) \
+ $(libpearl2_a_SOURCES) $(libsignpos2_a_SOURCES) \
+ $(libsingles3_a_SOURCES) $(libslant2_a_SOURCES) \
+ $(libsolo2_a_SOURCES) $(libtents3_a_SOURCES) \
+ $(libtowers2_a_SOURCES) $(libunequal2_a_SOURCES) \
+ $(libunruly2_a_SOURCES) $(blackbox_SOURCES) $(bridges_SOURCES) \
+ $(cube_SOURCES) $(dominosa_SOURCES) $(fifteen_SOURCES) \
+ $(fifteensolver_SOURCES) $(filling_SOURCES) \
+ $(fillingsolver_SOURCES) $(flip_SOURCES) $(flood_SOURCES) \
+ $(galaxies_SOURCES) $(galaxiespicture_SOURCES) \
+ $(galaxiessolver_SOURCES) $(guess_SOURCES) $(inertia_SOURCES) \
+ $(keen_SOURCES) $(keensolver_SOURCES) $(latincheck_SOURCES) \
+ $(lightup_SOURCES) $(lightupsolver_SOURCES) $(loopy_SOURCES) \
+ $(loopysolver_SOURCES) $(magnets_SOURCES) \
+ $(magnetssolver_SOURCES) $(map_SOURCES) $(mapsolver_SOURCES) \
+ $(mineobfusc_SOURCES) $(mines_SOURCES) $(net_SOURCES) \
+ $(netslide_SOURCES) $(nullgame_SOURCES) $(obfusc_SOURCES) \
+ $(palisade_SOURCES) $(pattern_SOURCES) \
+ $(patternpicture_SOURCES) $(patternsolver_SOURCES) \
+ $(pearl_SOURCES) $(pearlbench_SOURCES) $(pegs_SOURCES) \
+ $(range_SOURCES) $(rect_SOURCES) $(samegame_SOURCES) \
+ $(signpost_SOURCES) $(signpostsolver_SOURCES) \
+ $(singles_SOURCES) $(singlessolver_SOURCES) $(sixteen_SOURCES) \
+ $(slant_SOURCES) $(slantsolver_SOURCES) $(solo_SOURCES) \
+ $(solosolver_SOURCES) $(tents_SOURCES) $(tentssolver_SOURCES) \
+ $(towers_SOURCES) $(towerssolver_SOURCES) $(tracks_SOURCES) \
+ $(twiddle_SOURCES) $(undead_SOURCES) $(unequal_SOURCES) \
+ $(unequalsolver_SOURCES) $(unruly_SOURCES) \
+ $(unrulysolver_SOURCES) $(untangle_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.in README compile depcomp \
+ install-sh missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+GAMES = blackbox bridges cube dominosa fifteen filling flip flood \
+ galaxies guess inertia keen lightup loopy magnets map mines \
+ net netslide palisade pattern pearl pegs range rect samegame \
+ signpost singles sixteen slant solo tents towers tracks \
+ twiddle undead unequal unruly untangle
+AUTOMAKE_OPTIONS = subdir-objects
+allsources = ./blackbox.c ./bridges.c ./combi.c ./cube.c ./divvy.c \
+ ./dominosa.c ./drawing.c ./dsf.c ./fifteen.c ./filling.c \
+ ./findloop.c ./flip.c ./flood.c ./galaxies.c ./grid.c \
+ ./grid.h ./gtk.c ./guess.c ./inertia.c ./keen.c ./latin.c \
+ ./latin.h ./laydomino.c ./lightup.c ./list.c ./loopgen.c \
+ ./loopgen.h ./loopy.c ./magnets.c ./malloc.c ./map.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./mines.c ./misc.c \
+ ./net.c ./netslide.c ./no-icon.c ./nullfe.c ./nullgame.c \
+ ./obfusc.c ./osx.m ./palisade.c ./pattern.c ./pearl.c \
+ ./pegs.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./range.c ./rect.c ./resource.h \
+ ./samegame.c ./signpost.c ./singles.c ./sixteen.c ./slant.c \
+ ./solo.c ./tdq.c ./tents.c ./towers.c ./tracks.c ./tree234.c \
+ ./tree234.h ./twiddle.c ./undead.c ./unequal.c ./unruly.c \
+ ./untangle.c ./version.c ./version.h ./windows.c
+
+AM_CPPFLAGS = -I$(srcdir)/./ -I$(srcdir)/icons/
+AM_CFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS)
+blackbox_SOURCES = ./blackbox.c ./drawing.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+blackbox_LDADD = $(GTK_LIBS) -lm
+bridges_SOURCES = ./bridges.c ./drawing.c ./dsf.c ./findloop.c ./gtk.c \
+ ./malloc.c ./midend.c ./misc.c ./no-icon.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
+
+bridges_LDADD = $(GTK_LIBS) -lm
+cube_SOURCES = ./cube.c ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+
+cube_LDADD = $(GTK_LIBS) -lm
+dominosa_SOURCES = ./dominosa.c ./drawing.c ./gtk.c ./laydomino.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+dominosa_LDADD = $(GTK_LIBS) -lm
+fifteen_SOURCES = ./drawing.c ./fifteen.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+fifteen_LDADD = $(GTK_LIBS) -lm
+fifteensolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+fifteensolver_LDADD = libfifteen2_a-fifteen.$(OBJEXT) -lm
+filling_SOURCES = ./drawing.c ./dsf.c ./filling.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+filling_LDADD = $(GTK_LIBS) -lm
+fillingsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+fillingsolver_LDADD = libfilling2_a-filling.$(OBJEXT) -lm
+flip_SOURCES = ./drawing.c ./flip.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+flip_LDADD = $(GTK_LIBS) -lm
+flood_SOURCES = ./drawing.c ./flood.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+
+flood_LDADD = $(GTK_LIBS) -lm
+galaxies_SOURCES = ./drawing.c ./dsf.c ./galaxies.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+galaxies_LDADD = $(GTK_LIBS) -lm
+galaxiespicture_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+galaxiespicture_LDADD = libgalaxie4_a-galaxies.$(OBJEXT) -lm
+galaxiessolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+galaxiessolver_LDADD = libgalaxie2_a-galaxies.$(OBJEXT) -lm
+guess_SOURCES = ./drawing.c ./gtk.c ./guess.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./version.c ./version.h
+
+guess_LDADD = $(GTK_LIBS) -lm
+inertia_SOURCES = ./drawing.c ./gtk.c ./inertia.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+inertia_LDADD = $(GTK_LIBS) -lm
+keen_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./keen.c ./latin.c ./latin.h \
+ ./malloc.c ./maxflow.c ./maxflow.h ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+keen_LDADD = $(GTK_LIBS) -lm
+keensolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+keensolver_LDADD = libkeen2_a-keen.$(OBJEXT) liblatin6_a-latin.$(OBJEXT) -lm
+latincheck_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+latincheck_LDADD = liblatin8_a-latin.$(OBJEXT) -lm
+lightup_SOURCES = ./combi.c ./drawing.c ./gtk.c ./lightup.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+lightup_LDADD = $(GTK_LIBS) -lm
+lightupsolver_SOURCES = ./combi.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+lightupsolver_LDADD = liblightup2_a-lightup.$(OBJEXT) -lm
+loopy_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
+ ./loopgen.h ./loopy.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h ./version.c \
+ ./version.h
+
+loopy_LDADD = $(GTK_LIBS) -lm
+loopysolver_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
+ ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
+ ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+loopysolver_LDADD = libloopy2_a-loopy.$(OBJEXT) -lm
+magnets_SOURCES = ./drawing.c ./gtk.c ./laydomino.c ./magnets.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./version.c ./version.h
+
+magnets_LDADD = $(GTK_LIBS) -lm
+magnetssolver_SOURCES = ./laydomino.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+
+magnetssolver_LDADD = libmagnets2_a-magnets.$(OBJEXT) -lm
+map_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./map.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+map_LDADD = $(GTK_LIBS) -lm
+mapsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+mapsolver_LDADD = libmap2_a-map.$(OBJEXT) -lm
+mineobfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h
+
+mineobfusc_LDADD = libmines2_a-mines.$(OBJEXT) -lm
+mines_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./mines.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+mines_LDADD = $(GTK_LIBS) -lm
+net_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./net.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+
+net_LDADD = $(GTK_LIBS) -lm
+netslide_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./netslide.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+
+netslide_LDADD = $(GTK_LIBS) -lm
+nullgame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./nullgame.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+nullgame_LDADD = $(GTK_LIBS) -lm
+obfusc_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./obfusc.c ./puzzles.h \
+ ./random.c
+
+obfusc_LDADD = -lm
+palisade_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./palisade.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./version.c ./version.h
+
+palisade_LDADD = $(GTK_LIBS) -lm
+pattern_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./pattern.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./version.c ./version.h
+
+pattern_LDADD = $(GTK_LIBS) -lm
+patternpicture_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+patternpicture_LDADD = libpattern4_a-pattern.$(OBJEXT) -lm
+patternsolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+patternsolver_LDADD = libpattern2_a-pattern.$(OBJEXT) -lm
+pearl_SOURCES = ./drawing.c ./dsf.c ./grid.c ./grid.h ./gtk.c ./loopgen.c \
+ ./loopgen.h ./malloc.c ./midend.c ./misc.c ./no-icon.c \
+ ./pearl.c ./penrose.c ./penrose.h ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h \
+ ./version.c ./version.h
+
+pearl_LDADD = $(GTK_LIBS) -lm
+pearlbench_SOURCES = ./dsf.c ./grid.c ./grid.h ./loopgen.c ./loopgen.h \
+ ./malloc.c ./misc.c ./nullfe.c ./penrose.c ./penrose.h \
+ ./puzzles.h ./random.c ./tdq.c ./tree234.c ./tree234.h
+
+pearlbench_LDADD = libpearl2_a-pearl.$(OBJEXT) -lm
+pegs_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./pegs.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./tree234.c ./tree234.h ./version.c ./version.h
+
+pegs_LDADD = $(GTK_LIBS) -lm
+range_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./range.c ./version.c ./version.h
+
+range_LDADD = $(GTK_LIBS) -lm
+rect_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./rect.c ./version.c ./version.h
+
+rect_LDADD = $(GTK_LIBS) -lm
+samegame_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./samegame.c ./version.c ./version.h
+
+samegame_LDADD = $(GTK_LIBS) -lm
+signpost_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./signpost.c ./version.c ./version.h
+
+signpost_LDADD = $(GTK_LIBS) -lm
+signpostsolver_SOURCES = ./dsf.c ./malloc.c ./misc.c ./nullfe.c ./puzzles.h \
+ ./random.c
+
+signpostsolver_LDADD = libsignpos2_a-signpost.$(OBJEXT) -lm
+singles_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./singles.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+singles_LDADD = $(GTK_LIBS) -lm
+singlessolver_SOURCES = ./dsf.c ./latin.c ./latin.h ./malloc.c ./maxflow.c \
+ ./maxflow.h ./misc.c ./nullfe.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h
+
+singlessolver_LDADD = libsingles3_a-singles.$(OBJEXT) -lm
+sixteen_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./sixteen.c ./version.c ./version.h
+
+sixteen_LDADD = $(GTK_LIBS) -lm
+slant_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./slant.c ./version.c ./version.h
+
+slant_LDADD = $(GTK_LIBS) -lm
+slantsolver_SOURCES = ./dsf.c ./findloop.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+
+slantsolver_LDADD = libslant2_a-slant.$(OBJEXT) -lm
+solo_SOURCES = ./divvy.c ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./midend.c \
+ ./misc.c ./no-icon.c ./printing.c ./ps.c ./puzzles.h \
+ ./random.c ./solo.c ./version.c ./version.h
+
+solo_LDADD = $(GTK_LIBS) -lm
+solosolver_SOURCES = ./divvy.c ./dsf.c ./malloc.c ./misc.c ./nullfe.c \
+ ./puzzles.h ./random.c
+
+solosolver_LDADD = libsolo2_a-solo.$(OBJEXT) -lm
+tents_SOURCES = ./drawing.c ./dsf.c ./gtk.c ./malloc.c ./maxflow.c \
+ ./maxflow.h ./midend.c ./misc.c ./no-icon.c ./printing.c \
+ ./ps.c ./puzzles.h ./random.c ./tents.c ./version.c \
+ ./version.h
+
+tents_LDADD = $(GTK_LIBS) -lm
+tentssolver_SOURCES = ./dsf.c ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c
+
+tentssolver_LDADD = libtents3_a-tents.$(OBJEXT) -lm
+towers_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./towers.c \
+ ./tree234.c ./tree234.h ./version.c ./version.h
+
+towers_LDADD = $(GTK_LIBS) -lm
+towerssolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+towerssolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
+ libtowers2_a-towers.$(OBJEXT) -lm
+
+tracks_SOURCES = ./drawing.c ./dsf.c ./findloop.c ./gtk.c ./malloc.c \
+ ./midend.c ./misc.c ./no-icon.c ./printing.c ./ps.c \
+ ./puzzles.h ./random.c ./tracks.c ./version.c ./version.h
+
+tracks_LDADD = $(GTK_LIBS) -lm
+twiddle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./twiddle.c ./version.c ./version.h
+
+twiddle_LDADD = $(GTK_LIBS) -lm
+undead_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./undead.c ./version.c ./version.h
+
+undead_LDADD = $(GTK_LIBS) -lm
+unequal_SOURCES = ./drawing.c ./gtk.c ./latin.c ./latin.h ./malloc.c \
+ ./maxflow.c ./maxflow.h ./midend.c ./misc.c ./no-icon.c \
+ ./printing.c ./ps.c ./puzzles.h ./random.c ./tree234.c \
+ ./tree234.h ./unequal.c ./version.c ./version.h
+
+unequal_LDADD = $(GTK_LIBS) -lm
+unequalsolver_SOURCES = ./malloc.c ./maxflow.c ./maxflow.h ./misc.c \
+ ./nullfe.c ./puzzles.h ./random.c ./tree234.c ./tree234.h
+
+unequalsolver_LDADD = liblatin6_a-latin.$(OBJEXT) \
+ libunequal2_a-unequal.$(OBJEXT) -lm
+
+unruly_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./unruly.c ./version.c ./version.h
+
+unruly_LDADD = $(GTK_LIBS) -lm
+unrulysolver_SOURCES = ./malloc.c ./misc.c ./nullfe.c ./puzzles.h ./random.c
+unrulysolver_LDADD = libunruly2_a-unruly.$(OBJEXT) -lm
+untangle_SOURCES = ./drawing.c ./gtk.c ./malloc.c ./midend.c ./misc.c \
+ ./no-icon.c ./printing.c ./ps.c ./puzzles.h ./random.c \
+ ./tree234.c ./tree234.h ./untangle.c ./version.c ./version.h
+
+untangle_LDADD = $(GTK_LIBS) -lm
+libfifteen2_a_SOURCES = ./fifteen.c ./puzzles.h
+libfifteen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libfilling2_a_SOURCES = ./filling.c ./puzzles.h
+libfilling2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libgalaxie2_a_SOURCES = ./galaxies.c ./puzzles.h
+libgalaxie2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libgalaxie4_a_SOURCES = ./galaxies.c ./puzzles.h
+libgalaxie4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
+ -DSTANDALONE_PICTURE_GENERATOR
+
+libkeen2_a_SOURCES = ./keen.c ./puzzles.h ./latin.h
+libkeen2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+liblatin6_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+
+liblatin6_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+liblatin8_a_SOURCES = ./latin.c ./puzzles.h ./tree234.h ./maxflow.h \
+ ./latin.h
+
+liblatin8_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_LATIN_TEST
+liblightup2_a_SOURCES = ./lightup.c ./puzzles.h
+liblightup2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libloopy2_a_SOURCES = ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h
+libloopy2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmagnets2_a_SOURCES = ./magnets.c ./puzzles.h
+libmagnets2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmap2_a_SOURCES = ./map.c ./puzzles.h
+libmap2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libmines2_a_SOURCES = ./mines.c ./tree234.h ./puzzles.h
+libmines2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_OBFUSCATOR
+libpattern2_a_SOURCES = ./pattern.c ./puzzles.h
+libpattern2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libpattern4_a_SOURCES = ./pattern.c ./puzzles.h
+libpattern4_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) \
+ -DSTANDALONE_PICTURE_GENERATOR
+
+libpearl2_a_SOURCES = ./pearl.c ./puzzles.h ./grid.h ./loopgen.h
+libpearl2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsignpos2_a_SOURCES = ./signpost.c ./puzzles.h
+libsignpos2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsingles3_a_SOURCES = ./singles.c ./puzzles.h ./latin.h
+libsingles3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libslant2_a_SOURCES = ./slant.c ./puzzles.h
+libslant2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libsolo2_a_SOURCES = ./solo.c ./puzzles.h
+libsolo2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libtents3_a_SOURCES = ./tents.c ./puzzles.h ./maxflow.h
+libtents3_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libtowers2_a_SOURCES = ./towers.c ./puzzles.h ./latin.h
+libtowers2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libunequal2_a_SOURCES = ./unequal.c ./puzzles.h ./latin.h
+libunequal2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+libunruly2_a_SOURCES = ./unruly.c ./puzzles.h
+libunruly2_a_CPPFLAGS = $(GTK_CFLAGS) $(WARNINGOPTS) -DSTANDALONE_SOLVER
+noinst_LIBRARIES = libfifteen2.a libfilling2.a libgalaxie2.a libgalaxie4.a \
+ libkeen2.a liblatin6.a liblatin8.a liblightup2.a libloopy2.a \
+ libmagnets2.a libmap2.a libmines2.a libpattern2.a \
+ libpattern4.a libpearl2.a libsignpos2.a libsingles3.a \
+ libslant2.a libsolo2.a libtents3.a libtowers2.a \
+ libunequal2.a libunruly2.a
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+./$(am__dirstamp):
+ @$(MKDIR_P) .
+ @: > ./$(am__dirstamp)
+$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) ./$(DEPDIR)
+ @: > $(DEPDIR)/$(am__dirstamp)
+./libfifteen2_a-fifteen.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libfifteen2.a: $(libfifteen2_a_OBJECTS) $(libfifteen2_a_DEPENDENCIES) $(EXTRA_libfifteen2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libfifteen2.a
+ $(AM_V_AR)$(libfifteen2_a_AR) libfifteen2.a $(libfifteen2_a_OBJECTS) $(libfifteen2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libfifteen2.a
+./libfilling2_a-filling.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libfilling2.a: $(libfilling2_a_OBJECTS) $(libfilling2_a_DEPENDENCIES) $(EXTRA_libfilling2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libfilling2.a
+ $(AM_V_AR)$(libfilling2_a_AR) libfilling2.a $(libfilling2_a_OBJECTS) $(libfilling2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libfilling2.a
+./libgalaxie2_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libgalaxie2.a: $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_DEPENDENCIES) $(EXTRA_libgalaxie2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libgalaxie2.a
+ $(AM_V_AR)$(libgalaxie2_a_AR) libgalaxie2.a $(libgalaxie2_a_OBJECTS) $(libgalaxie2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libgalaxie2.a
+./libgalaxie4_a-galaxies.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libgalaxie4.a: $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_DEPENDENCIES) $(EXTRA_libgalaxie4_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libgalaxie4.a
+ $(AM_V_AR)$(libgalaxie4_a_AR) libgalaxie4.a $(libgalaxie4_a_OBJECTS) $(libgalaxie4_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libgalaxie4.a
+./libkeen2_a-keen.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libkeen2.a: $(libkeen2_a_OBJECTS) $(libkeen2_a_DEPENDENCIES) $(EXTRA_libkeen2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libkeen2.a
+ $(AM_V_AR)$(libkeen2_a_AR) libkeen2.a $(libkeen2_a_OBJECTS) $(libkeen2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libkeen2.a
+./liblatin6_a-latin.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+liblatin6.a: $(liblatin6_a_OBJECTS) $(liblatin6_a_DEPENDENCIES) $(EXTRA_liblatin6_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f liblatin6.a
+ $(AM_V_AR)$(liblatin6_a_AR) liblatin6.a $(liblatin6_a_OBJECTS) $(liblatin6_a_LIBADD)
+ $(AM_V_at)$(RANLIB) liblatin6.a
+./liblatin8_a-latin.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+liblatin8.a: $(liblatin8_a_OBJECTS) $(liblatin8_a_DEPENDENCIES) $(EXTRA_liblatin8_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f liblatin8.a
+ $(AM_V_AR)$(liblatin8_a_AR) liblatin8.a $(liblatin8_a_OBJECTS) $(liblatin8_a_LIBADD)
+ $(AM_V_at)$(RANLIB) liblatin8.a
+./liblightup2_a-lightup.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+liblightup2.a: $(liblightup2_a_OBJECTS) $(liblightup2_a_DEPENDENCIES) $(EXTRA_liblightup2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f liblightup2.a
+ $(AM_V_AR)$(liblightup2_a_AR) liblightup2.a $(liblightup2_a_OBJECTS) $(liblightup2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) liblightup2.a
+./libloopy2_a-loopy.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libloopy2.a: $(libloopy2_a_OBJECTS) $(libloopy2_a_DEPENDENCIES) $(EXTRA_libloopy2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libloopy2.a
+ $(AM_V_AR)$(libloopy2_a_AR) libloopy2.a $(libloopy2_a_OBJECTS) $(libloopy2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libloopy2.a
+./libmagnets2_a-magnets.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libmagnets2.a: $(libmagnets2_a_OBJECTS) $(libmagnets2_a_DEPENDENCIES) $(EXTRA_libmagnets2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libmagnets2.a
+ $(AM_V_AR)$(libmagnets2_a_AR) libmagnets2.a $(libmagnets2_a_OBJECTS) $(libmagnets2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libmagnets2.a
+./libmap2_a-map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+libmap2.a: $(libmap2_a_OBJECTS) $(libmap2_a_DEPENDENCIES) $(EXTRA_libmap2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libmap2.a
+ $(AM_V_AR)$(libmap2_a_AR) libmap2.a $(libmap2_a_OBJECTS) $(libmap2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libmap2.a
+./libmines2_a-mines.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libmines2.a: $(libmines2_a_OBJECTS) $(libmines2_a_DEPENDENCIES) $(EXTRA_libmines2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libmines2.a
+ $(AM_V_AR)$(libmines2_a_AR) libmines2.a $(libmines2_a_OBJECTS) $(libmines2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libmines2.a
+./libpattern2_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libpattern2.a: $(libpattern2_a_OBJECTS) $(libpattern2_a_DEPENDENCIES) $(EXTRA_libpattern2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpattern2.a
+ $(AM_V_AR)$(libpattern2_a_AR) libpattern2.a $(libpattern2_a_OBJECTS) $(libpattern2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpattern2.a
+./libpattern4_a-pattern.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libpattern4.a: $(libpattern4_a_OBJECTS) $(libpattern4_a_DEPENDENCIES) $(EXTRA_libpattern4_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpattern4.a
+ $(AM_V_AR)$(libpattern4_a_AR) libpattern4.a $(libpattern4_a_OBJECTS) $(libpattern4_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpattern4.a
+./libpearl2_a-pearl.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libpearl2.a: $(libpearl2_a_OBJECTS) $(libpearl2_a_DEPENDENCIES) $(EXTRA_libpearl2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpearl2.a
+ $(AM_V_AR)$(libpearl2_a_AR) libpearl2.a $(libpearl2_a_OBJECTS) $(libpearl2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpearl2.a
+./libsignpos2_a-signpost.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libsignpos2.a: $(libsignpos2_a_OBJECTS) $(libsignpos2_a_DEPENDENCIES) $(EXTRA_libsignpos2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libsignpos2.a
+ $(AM_V_AR)$(libsignpos2_a_AR) libsignpos2.a $(libsignpos2_a_OBJECTS) $(libsignpos2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libsignpos2.a
+./libsingles3_a-singles.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libsingles3.a: $(libsingles3_a_OBJECTS) $(libsingles3_a_DEPENDENCIES) $(EXTRA_libsingles3_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libsingles3.a
+ $(AM_V_AR)$(libsingles3_a_AR) libsingles3.a $(libsingles3_a_OBJECTS) $(libsingles3_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libsingles3.a
+./libslant2_a-slant.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libslant2.a: $(libslant2_a_OBJECTS) $(libslant2_a_DEPENDENCIES) $(EXTRA_libslant2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libslant2.a
+ $(AM_V_AR)$(libslant2_a_AR) libslant2.a $(libslant2_a_OBJECTS) $(libslant2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libslant2.a
+./libsolo2_a-solo.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libsolo2.a: $(libsolo2_a_OBJECTS) $(libsolo2_a_DEPENDENCIES) $(EXTRA_libsolo2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libsolo2.a
+ $(AM_V_AR)$(libsolo2_a_AR) libsolo2.a $(libsolo2_a_OBJECTS) $(libsolo2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libsolo2.a
+./libtents3_a-tents.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libtents3.a: $(libtents3_a_OBJECTS) $(libtents3_a_DEPENDENCIES) $(EXTRA_libtents3_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtents3.a
+ $(AM_V_AR)$(libtents3_a_AR) libtents3.a $(libtents3_a_OBJECTS) $(libtents3_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtents3.a
+./libtowers2_a-towers.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libtowers2.a: $(libtowers2_a_OBJECTS) $(libtowers2_a_DEPENDENCIES) $(EXTRA_libtowers2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtowers2.a
+ $(AM_V_AR)$(libtowers2_a_AR) libtowers2.a $(libtowers2_a_OBJECTS) $(libtowers2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtowers2.a
+./libunequal2_a-unequal.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libunequal2.a: $(libunequal2_a_OBJECTS) $(libunequal2_a_DEPENDENCIES) $(EXTRA_libunequal2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libunequal2.a
+ $(AM_V_AR)$(libunequal2_a_AR) libunequal2.a $(libunequal2_a_OBJECTS) $(libunequal2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libunequal2.a
+./libunruly2_a-unruly.$(OBJEXT): ./$(am__dirstamp) \
+ $(DEPDIR)/$(am__dirstamp)
+
+libunruly2.a: $(libunruly2_a_OBJECTS) $(libunruly2_a_DEPENDENCIES) $(EXTRA_libunruly2_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libunruly2.a
+ $(AM_V_AR)$(libunruly2_a_AR) libunruly2.a $(libunruly2_a_OBJECTS) $(libunruly2_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libunruly2.a
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+./blackbox.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./drawing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./gtk.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./malloc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./midend.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./misc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./no-icon.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./printing.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./ps.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./random.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./version.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+blackbox$(EXEEXT): $(blackbox_OBJECTS) $(blackbox_DEPENDENCIES) $(EXTRA_blackbox_DEPENDENCIES)
+ @rm -f blackbox$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(blackbox_OBJECTS) $(blackbox_LDADD) $(LIBS)
+./bridges.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./dsf.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./findloop.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+bridges$(EXEEXT): $(bridges_OBJECTS) $(bridges_DEPENDENCIES) $(EXTRA_bridges_DEPENDENCIES)
+ @rm -f bridges$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bridges_OBJECTS) $(bridges_LDADD) $(LIBS)
+./cube.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+cube$(EXEEXT): $(cube_OBJECTS) $(cube_DEPENDENCIES) $(EXTRA_cube_DEPENDENCIES)
+ @rm -f cube$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(cube_OBJECTS) $(cube_LDADD) $(LIBS)
+./dominosa.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./laydomino.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+dominosa$(EXEEXT): $(dominosa_OBJECTS) $(dominosa_DEPENDENCIES) $(EXTRA_dominosa_DEPENDENCIES)
+ @rm -f dominosa$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dominosa_OBJECTS) $(dominosa_LDADD) $(LIBS)
+./fifteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+fifteen$(EXEEXT): $(fifteen_OBJECTS) $(fifteen_DEPENDENCIES) $(EXTRA_fifteen_DEPENDENCIES)
+ @rm -f fifteen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fifteen_OBJECTS) $(fifteen_LDADD) $(LIBS)
+./nullfe.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+fifteensolver$(EXEEXT): $(fifteensolver_OBJECTS) $(fifteensolver_DEPENDENCIES) $(EXTRA_fifteensolver_DEPENDENCIES)
+ @rm -f fifteensolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fifteensolver_OBJECTS) $(fifteensolver_LDADD) $(LIBS)
+./filling.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+filling$(EXEEXT): $(filling_OBJECTS) $(filling_DEPENDENCIES) $(EXTRA_filling_DEPENDENCIES)
+ @rm -f filling$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(filling_OBJECTS) $(filling_LDADD) $(LIBS)
+
+fillingsolver$(EXEEXT): $(fillingsolver_OBJECTS) $(fillingsolver_DEPENDENCIES) $(EXTRA_fillingsolver_DEPENDENCIES)
+ @rm -f fillingsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fillingsolver_OBJECTS) $(fillingsolver_LDADD) $(LIBS)
+./flip.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./tree234.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+flip$(EXEEXT): $(flip_OBJECTS) $(flip_DEPENDENCIES) $(EXTRA_flip_DEPENDENCIES)
+ @rm -f flip$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(flip_OBJECTS) $(flip_LDADD) $(LIBS)
+./flood.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+flood$(EXEEXT): $(flood_OBJECTS) $(flood_DEPENDENCIES) $(EXTRA_flood_DEPENDENCIES)
+ @rm -f flood$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(flood_OBJECTS) $(flood_LDADD) $(LIBS)
+./galaxies.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+galaxies$(EXEEXT): $(galaxies_OBJECTS) $(galaxies_DEPENDENCIES) $(EXTRA_galaxies_DEPENDENCIES)
+ @rm -f galaxies$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(galaxies_OBJECTS) $(galaxies_LDADD) $(LIBS)
+
+galaxiespicture$(EXEEXT): $(galaxiespicture_OBJECTS) $(galaxiespicture_DEPENDENCIES) $(EXTRA_galaxiespicture_DEPENDENCIES)
+ @rm -f galaxiespicture$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(galaxiespicture_OBJECTS) $(galaxiespicture_LDADD) $(LIBS)
+
+galaxiessolver$(EXEEXT): $(galaxiessolver_OBJECTS) $(galaxiessolver_DEPENDENCIES) $(EXTRA_galaxiessolver_DEPENDENCIES)
+ @rm -f galaxiessolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(galaxiessolver_OBJECTS) $(galaxiessolver_LDADD) $(LIBS)
+./guess.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+guess$(EXEEXT): $(guess_OBJECTS) $(guess_DEPENDENCIES) $(EXTRA_guess_DEPENDENCIES)
+ @rm -f guess$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(guess_OBJECTS) $(guess_LDADD) $(LIBS)
+./inertia.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+inertia$(EXEEXT): $(inertia_OBJECTS) $(inertia_DEPENDENCIES) $(EXTRA_inertia_DEPENDENCIES)
+ @rm -f inertia$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inertia_OBJECTS) $(inertia_LDADD) $(LIBS)
+./keen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./latin.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./maxflow.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+keen$(EXEEXT): $(keen_OBJECTS) $(keen_DEPENDENCIES) $(EXTRA_keen_DEPENDENCIES)
+ @rm -f keen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(keen_OBJECTS) $(keen_LDADD) $(LIBS)
+
+keensolver$(EXEEXT): $(keensolver_OBJECTS) $(keensolver_DEPENDENCIES) $(EXTRA_keensolver_DEPENDENCIES)
+ @rm -f keensolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(keensolver_OBJECTS) $(keensolver_LDADD) $(LIBS)
+
+latincheck$(EXEEXT): $(latincheck_OBJECTS) $(latincheck_DEPENDENCIES) $(EXTRA_latincheck_DEPENDENCIES)
+ @rm -f latincheck$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(latincheck_OBJECTS) $(latincheck_LDADD) $(LIBS)
+./combi.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./lightup.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+lightup$(EXEEXT): $(lightup_OBJECTS) $(lightup_DEPENDENCIES) $(EXTRA_lightup_DEPENDENCIES)
+ @rm -f lightup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lightup_OBJECTS) $(lightup_LDADD) $(LIBS)
+
+lightupsolver$(EXEEXT): $(lightupsolver_OBJECTS) $(lightupsolver_DEPENDENCIES) $(EXTRA_lightupsolver_DEPENDENCIES)
+ @rm -f lightupsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lightupsolver_OBJECTS) $(lightupsolver_LDADD) $(LIBS)
+./grid.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./loopgen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./loopy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./penrose.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+loopy$(EXEEXT): $(loopy_OBJECTS) $(loopy_DEPENDENCIES) $(EXTRA_loopy_DEPENDENCIES)
+ @rm -f loopy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(loopy_OBJECTS) $(loopy_LDADD) $(LIBS)
+
+loopysolver$(EXEEXT): $(loopysolver_OBJECTS) $(loopysolver_DEPENDENCIES) $(EXTRA_loopysolver_DEPENDENCIES)
+ @rm -f loopysolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(loopysolver_OBJECTS) $(loopysolver_LDADD) $(LIBS)
+./magnets.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+magnets$(EXEEXT): $(magnets_OBJECTS) $(magnets_DEPENDENCIES) $(EXTRA_magnets_DEPENDENCIES)
+ @rm -f magnets$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(magnets_OBJECTS) $(magnets_LDADD) $(LIBS)
+
+magnetssolver$(EXEEXT): $(magnetssolver_OBJECTS) $(magnetssolver_DEPENDENCIES) $(EXTRA_magnetssolver_DEPENDENCIES)
+ @rm -f magnetssolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(magnetssolver_OBJECTS) $(magnetssolver_LDADD) $(LIBS)
+./map.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+map$(EXEEXT): $(map_OBJECTS) $(map_DEPENDENCIES) $(EXTRA_map_DEPENDENCIES)
+ @rm -f map$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(map_OBJECTS) $(map_LDADD) $(LIBS)
+
+mapsolver$(EXEEXT): $(mapsolver_OBJECTS) $(mapsolver_DEPENDENCIES) $(EXTRA_mapsolver_DEPENDENCIES)
+ @rm -f mapsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mapsolver_OBJECTS) $(mapsolver_LDADD) $(LIBS)
+
+mineobfusc$(EXEEXT): $(mineobfusc_OBJECTS) $(mineobfusc_DEPENDENCIES) $(EXTRA_mineobfusc_DEPENDENCIES)
+ @rm -f mineobfusc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mineobfusc_OBJECTS) $(mineobfusc_LDADD) $(LIBS)
+./mines.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+mines$(EXEEXT): $(mines_OBJECTS) $(mines_DEPENDENCIES) $(EXTRA_mines_DEPENDENCIES)
+ @rm -f mines$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mines_OBJECTS) $(mines_LDADD) $(LIBS)
+./net.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+net$(EXEEXT): $(net_OBJECTS) $(net_DEPENDENCIES) $(EXTRA_net_DEPENDENCIES)
+ @rm -f net$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_OBJECTS) $(net_LDADD) $(LIBS)
+./netslide.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+netslide$(EXEEXT): $(netslide_OBJECTS) $(netslide_DEPENDENCIES) $(EXTRA_netslide_DEPENDENCIES)
+ @rm -f netslide$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netslide_OBJECTS) $(netslide_LDADD) $(LIBS)
+./nullgame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+nullgame$(EXEEXT): $(nullgame_OBJECTS) $(nullgame_DEPENDENCIES) $(EXTRA_nullgame_DEPENDENCIES)
+ @rm -f nullgame$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nullgame_OBJECTS) $(nullgame_LDADD) $(LIBS)
+./obfusc.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+obfusc$(EXEEXT): $(obfusc_OBJECTS) $(obfusc_DEPENDENCIES) $(EXTRA_obfusc_DEPENDENCIES)
+ @rm -f obfusc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(obfusc_OBJECTS) $(obfusc_LDADD) $(LIBS)
+./divvy.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./palisade.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+palisade$(EXEEXT): $(palisade_OBJECTS) $(palisade_DEPENDENCIES) $(EXTRA_palisade_DEPENDENCIES)
+ @rm -f palisade$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(palisade_OBJECTS) $(palisade_LDADD) $(LIBS)
+./pattern.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES)
+ @rm -f pattern$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS)
+
+patternpicture$(EXEEXT): $(patternpicture_OBJECTS) $(patternpicture_DEPENDENCIES) $(EXTRA_patternpicture_DEPENDENCIES)
+ @rm -f patternpicture$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(patternpicture_OBJECTS) $(patternpicture_LDADD) $(LIBS)
+
+patternsolver$(EXEEXT): $(patternsolver_OBJECTS) $(patternsolver_DEPENDENCIES) $(EXTRA_patternsolver_DEPENDENCIES)
+ @rm -f patternsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(patternsolver_OBJECTS) $(patternsolver_LDADD) $(LIBS)
+./pearl.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+./tdq.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+pearl$(EXEEXT): $(pearl_OBJECTS) $(pearl_DEPENDENCIES) $(EXTRA_pearl_DEPENDENCIES)
+ @rm -f pearl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pearl_OBJECTS) $(pearl_LDADD) $(LIBS)
+
+pearlbench$(EXEEXT): $(pearlbench_OBJECTS) $(pearlbench_DEPENDENCIES) $(EXTRA_pearlbench_DEPENDENCIES)
+ @rm -f pearlbench$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pearlbench_OBJECTS) $(pearlbench_LDADD) $(LIBS)
+./pegs.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+pegs$(EXEEXT): $(pegs_OBJECTS) $(pegs_DEPENDENCIES) $(EXTRA_pegs_DEPENDENCIES)
+ @rm -f pegs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pegs_OBJECTS) $(pegs_LDADD) $(LIBS)
+./range.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+range$(EXEEXT): $(range_OBJECTS) $(range_DEPENDENCIES) $(EXTRA_range_DEPENDENCIES)
+ @rm -f range$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(range_OBJECTS) $(range_LDADD) $(LIBS)
+./rect.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+rect$(EXEEXT): $(rect_OBJECTS) $(rect_DEPENDENCIES) $(EXTRA_rect_DEPENDENCIES)
+ @rm -f rect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rect_OBJECTS) $(rect_LDADD) $(LIBS)
+./samegame.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+samegame$(EXEEXT): $(samegame_OBJECTS) $(samegame_DEPENDENCIES) $(EXTRA_samegame_DEPENDENCIES)
+ @rm -f samegame$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(samegame_OBJECTS) $(samegame_LDADD) $(LIBS)
+./signpost.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+signpost$(EXEEXT): $(signpost_OBJECTS) $(signpost_DEPENDENCIES) $(EXTRA_signpost_DEPENDENCIES)
+ @rm -f signpost$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signpost_OBJECTS) $(signpost_LDADD) $(LIBS)
+
+signpostsolver$(EXEEXT): $(signpostsolver_OBJECTS) $(signpostsolver_DEPENDENCIES) $(EXTRA_signpostsolver_DEPENDENCIES)
+ @rm -f signpostsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signpostsolver_OBJECTS) $(signpostsolver_LDADD) $(LIBS)
+./singles.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+singles$(EXEEXT): $(singles_OBJECTS) $(singles_DEPENDENCIES) $(EXTRA_singles_DEPENDENCIES)
+ @rm -f singles$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(singles_OBJECTS) $(singles_LDADD) $(LIBS)
+
+singlessolver$(EXEEXT): $(singlessolver_OBJECTS) $(singlessolver_DEPENDENCIES) $(EXTRA_singlessolver_DEPENDENCIES)
+ @rm -f singlessolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(singlessolver_OBJECTS) $(singlessolver_LDADD) $(LIBS)
+./sixteen.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+sixteen$(EXEEXT): $(sixteen_OBJECTS) $(sixteen_DEPENDENCIES) $(EXTRA_sixteen_DEPENDENCIES)
+ @rm -f sixteen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sixteen_OBJECTS) $(sixteen_LDADD) $(LIBS)
+./slant.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+slant$(EXEEXT): $(slant_OBJECTS) $(slant_DEPENDENCIES) $(EXTRA_slant_DEPENDENCIES)
+ @rm -f slant$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(slant_OBJECTS) $(slant_LDADD) $(LIBS)
+
+slantsolver$(EXEEXT): $(slantsolver_OBJECTS) $(slantsolver_DEPENDENCIES) $(EXTRA_slantsolver_DEPENDENCIES)
+ @rm -f slantsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(slantsolver_OBJECTS) $(slantsolver_LDADD) $(LIBS)
+./solo.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+solo$(EXEEXT): $(solo_OBJECTS) $(solo_DEPENDENCIES) $(EXTRA_solo_DEPENDENCIES)
+ @rm -f solo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(solo_OBJECTS) $(solo_LDADD) $(LIBS)
+
+solosolver$(EXEEXT): $(solosolver_OBJECTS) $(solosolver_DEPENDENCIES) $(EXTRA_solosolver_DEPENDENCIES)
+ @rm -f solosolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(solosolver_OBJECTS) $(solosolver_LDADD) $(LIBS)
+./tents.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+tents$(EXEEXT): $(tents_OBJECTS) $(tents_DEPENDENCIES) $(EXTRA_tents_DEPENDENCIES)
+ @rm -f tents$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tents_OBJECTS) $(tents_LDADD) $(LIBS)
+
+tentssolver$(EXEEXT): $(tentssolver_OBJECTS) $(tentssolver_DEPENDENCIES) $(EXTRA_tentssolver_DEPENDENCIES)
+ @rm -f tentssolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tentssolver_OBJECTS) $(tentssolver_LDADD) $(LIBS)
+./towers.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+towers$(EXEEXT): $(towers_OBJECTS) $(towers_DEPENDENCIES) $(EXTRA_towers_DEPENDENCIES)
+ @rm -f towers$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(towers_OBJECTS) $(towers_LDADD) $(LIBS)
+
+towerssolver$(EXEEXT): $(towerssolver_OBJECTS) $(towerssolver_DEPENDENCIES) $(EXTRA_towerssolver_DEPENDENCIES)
+ @rm -f towerssolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(towerssolver_OBJECTS) $(towerssolver_LDADD) $(LIBS)
+./tracks.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES) $(EXTRA_tracks_DEPENDENCIES)
+ @rm -f tracks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS)
+./twiddle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+twiddle$(EXEEXT): $(twiddle_OBJECTS) $(twiddle_DEPENDENCIES) $(EXTRA_twiddle_DEPENDENCIES)
+ @rm -f twiddle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(twiddle_OBJECTS) $(twiddle_LDADD) $(LIBS)
+./undead.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+undead$(EXEEXT): $(undead_OBJECTS) $(undead_DEPENDENCIES) $(EXTRA_undead_DEPENDENCIES)
+ @rm -f undead$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(undead_OBJECTS) $(undead_LDADD) $(LIBS)
+./unequal.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+unequal$(EXEEXT): $(unequal_OBJECTS) $(unequal_DEPENDENCIES) $(EXTRA_unequal_DEPENDENCIES)
+ @rm -f unequal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unequal_OBJECTS) $(unequal_LDADD) $(LIBS)
+
+unequalsolver$(EXEEXT): $(unequalsolver_OBJECTS) $(unequalsolver_DEPENDENCIES) $(EXTRA_unequalsolver_DEPENDENCIES)
+ @rm -f unequalsolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unequalsolver_OBJECTS) $(unequalsolver_LDADD) $(LIBS)
+./unruly.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+unruly$(EXEEXT): $(unruly_OBJECTS) $(unruly_DEPENDENCIES) $(EXTRA_unruly_DEPENDENCIES)
+ @rm -f unruly$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unruly_OBJECTS) $(unruly_LDADD) $(LIBS)
+
+unrulysolver$(EXEEXT): $(unrulysolver_OBJECTS) $(unrulysolver_DEPENDENCIES) $(EXTRA_unrulysolver_DEPENDENCIES)
+ @rm -f unrulysolver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unrulysolver_OBJECTS) $(unrulysolver_LDADD) $(LIBS)
+./untangle.$(OBJEXT): ./$(am__dirstamp) $(DEPDIR)/$(am__dirstamp)
+
+untangle$(EXEEXT): $(untangle_OBJECTS) $(untangle_DEPENDENCIES) $(EXTRA_untangle_DEPENDENCIES)
+ @rm -f untangle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(untangle_OBJECTS) $(untangle_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f ./*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blackbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bridges.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/combi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cube.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/divvy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dominosa.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drawing.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fifteen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filling.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findloop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flood.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/galaxies.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guess.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inertia.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/laydomino.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfifteen2_a-fifteen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfilling2_a-filling.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgalaxie2_a-galaxies.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgalaxie4_a-galaxies.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkeen2_a-keen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblatin6_a-latin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblatin8_a-latin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightup2_a-lightup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libloopy2_a-loopy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmagnets2_a-magnets.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmap2_a-map.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmines2_a-mines.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpattern2_a-pattern.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpattern4_a-pattern.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpearl2_a-pearl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsignpos2_a-signpost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsingles3_a-singles.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libslant2_a-slant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsolo2_a-solo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtents3_a-tents.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtowers2_a-towers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunequal2_a-unequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunruly2_a-unruly.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lightup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loopgen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loopy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/magnets.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/map.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxflow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mines.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netslide.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/no-icon.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullfe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullgame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obfusc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palisade.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pearl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pegs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/penrose.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printing.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/range.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/samegame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signpost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/singles.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sixteen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/solo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tdq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tents.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/towers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree234.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twiddle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/undead.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unruly.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/untangle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+./libfifteen2_a-fifteen.o: ./fifteen.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libfifteen2_a-fifteen.obj: ./fifteen.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfifteen2_a-fifteen.Tpo $(DEPDIR)/libfifteen2_a-fifteen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./fifteen.c' object='./libfifteen2_a-fifteen.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libfilling2_a-filling.o: ./filling.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libfilling2_a-filling.obj: ./filling.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfilling2_a-filling.Tpo $(DEPDIR)/libfilling2_a-filling.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./filling.c' object='./libfilling2_a-filling.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libgalaxie2_a-galaxies.o: ./galaxies.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libgalaxie2_a-galaxies.obj: ./galaxies.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie2_a-galaxies.Tpo $(DEPDIR)/libgalaxie2_a-galaxies.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie2_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libgalaxie4_a-galaxies.o: ./galaxies.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libgalaxie4_a-galaxies.obj: ./galaxies.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgalaxie4_a-galaxies.Tpo $(DEPDIR)/libgalaxie4_a-galaxies.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./galaxies.c' object='./libgalaxie4_a-galaxies.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libkeen2_a-keen.o: ./keen.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libkeen2_a-keen.obj: ./keen.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkeen2_a-keen.Tpo $(DEPDIR)/libkeen2_a-keen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./keen.c' object='./libkeen2_a-keen.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./liblatin6_a-latin.o: ./latin.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./liblatin6_a-latin.obj: ./latin.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin6_a-latin.Tpo $(DEPDIR)/liblatin6_a-latin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin6_a-latin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./liblatin8_a-latin.o: ./latin.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./liblatin8_a-latin.obj: ./latin.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblatin8_a-latin.Tpo $(DEPDIR)/liblatin8_a-latin.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./latin.c' object='./liblatin8_a-latin.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./liblightup2_a-lightup.o: ./lightup.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./liblightup2_a-lightup.obj: ./lightup.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblightup2_a-lightup.Tpo $(DEPDIR)/liblightup2_a-lightup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./lightup.c' object='./liblightup2_a-lightup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libloopy2_a-loopy.o: ./loopy.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libloopy2_a-loopy.obj: ./loopy.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libloopy2_a-loopy.Tpo $(DEPDIR)/libloopy2_a-loopy.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./loopy.c' object='./libloopy2_a-loopy.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libmagnets2_a-magnets.o: ./magnets.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libmagnets2_a-magnets.obj: ./magnets.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagnets2_a-magnets.Tpo $(DEPDIR)/libmagnets2_a-magnets.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./magnets.c' object='./libmagnets2_a-magnets.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libmap2_a-map.o: ./map.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./map.c' object='./libmap2_a-map.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libmap2_a-map.obj: ./map.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmap2_a-map.Tpo $(DEPDIR)/libmap2_a-map.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./map.c' object='./libmap2_a-map.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libmines2_a-mines.o: ./mines.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libmines2_a-mines.obj: ./mines.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmines2_a-mines.Tpo $(DEPDIR)/libmines2_a-mines.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./mines.c' object='./libmines2_a-mines.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libpattern2_a-pattern.o: ./pattern.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libpattern2_a-pattern.obj: ./pattern.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern2_a-pattern.Tpo $(DEPDIR)/libpattern2_a-pattern.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern2_a-pattern.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libpattern4_a-pattern.o: ./pattern.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libpattern4_a-pattern.obj: ./pattern.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpattern4_a-pattern.Tpo $(DEPDIR)/libpattern4_a-pattern.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pattern.c' object='./libpattern4_a-pattern.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libpearl2_a-pearl.o: ./pearl.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libpearl2_a-pearl.obj: ./pearl.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpearl2_a-pearl.Tpo $(DEPDIR)/libpearl2_a-pearl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./pearl.c' object='./libpearl2_a-pearl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libsignpos2_a-signpost.o: ./signpost.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libsignpos2_a-signpost.obj: ./signpost.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsignpos2_a-signpost.Tpo $(DEPDIR)/libsignpos2_a-signpost.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./signpost.c' object='./libsignpos2_a-signpost.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libsingles3_a-singles.o: ./singles.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libsingles3_a-singles.obj: ./singles.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsingles3_a-singles.Tpo $(DEPDIR)/libsingles3_a-singles.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./singles.c' object='./libsingles3_a-singles.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libslant2_a-slant.o: ./slant.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libslant2_a-slant.obj: ./slant.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libslant2_a-slant.Tpo $(DEPDIR)/libslant2_a-slant.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./slant.c' object='./libslant2_a-slant.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libsolo2_a-solo.o: ./solo.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libsolo2_a-solo.obj: ./solo.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsolo2_a-solo.Tpo $(DEPDIR)/libsolo2_a-solo.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./solo.c' object='./libsolo2_a-solo.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libtents3_a-tents.o: ./tents.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libtents3_a-tents.obj: ./tents.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtents3_a-tents.Tpo $(DEPDIR)/libtents3_a-tents.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./tents.c' object='./libtents3_a-tents.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libtowers2_a-towers.o: ./towers.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libtowers2_a-towers.obj: ./towers.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtowers2_a-towers.Tpo $(DEPDIR)/libtowers2_a-towers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./towers.c' object='./libtowers2_a-towers.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libunequal2_a-unequal.o: ./unequal.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libunequal2_a-unequal.obj: ./unequal.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunequal2_a-unequal.Tpo $(DEPDIR)/libunequal2_a-unequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unequal.c' object='./libunequal2_a-unequal.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+./libunruly2_a-unruly.o: ./unruly.c
+@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
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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
+
+./libunruly2_a-unruly.obj: ./unruly.c
+@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`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libunruly2_a-unruly.Tpo $(DEPDIR)/libunruly2_a-unruly.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='./unruly.c' object='./libunruly2_a-unruly.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@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`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
+installd