From 8f23493e08febc09c370b1d90d891953fa43ddf7 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Tue, 24 Apr 2018 18:06:44 -0400 Subject: 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 --- apps/plugins/puzzles/src/Buildscr | 32 +- apps/plugins/puzzles/src/HACKING | 4661 +++++++++++++++++++ apps/plugins/puzzles/src/Makefile | 2611 +++++++++++ apps/plugins/puzzles/src/Makefile.am | 446 ++ apps/plugins/puzzles/src/Makefile.clangcl | 1415 ++++++ apps/plugins/puzzles/src/Makefile.cyg | 718 +++ apps/plugins/puzzles/src/Makefile.emcc | 497 ++ apps/plugins/puzzles/src/Makefile.gnustep | 412 ++ apps/plugins/puzzles/src/Makefile.gtk | 727 +++ apps/plugins/puzzles/src/Makefile.in | 2611 +++++++++++ apps/plugins/puzzles/src/Makefile.nestedvm | 556 +++ apps/plugins/puzzles/src/Makefile.osx | 574 +++ apps/plugins/puzzles/src/Makefile.vc | 1040 +++++ apps/plugins/puzzles/src/Makefile.wce | 808 ++++ apps/plugins/puzzles/src/Recipe | 12 + apps/plugins/puzzles/src/aclocal.m4 | 1832 ++++++++ apps/plugins/puzzles/src/compile | 348 ++ apps/plugins/puzzles/src/config.log | 445 ++ apps/plugins/puzzles/src/config.status | 1059 +++++ apps/plugins/puzzles/src/configure | 5739 ++++++++++++++++++++++++ apps/plugins/puzzles/src/depcomp | 791 ++++ apps/plugins/puzzles/src/devel.but | 65 + apps/plugins/puzzles/src/filling.c | 17 +- apps/plugins/puzzles/src/gamedesc.txt | 39 + apps/plugins/puzzles/src/gtk.c | 19 - apps/plugins/puzzles/src/html/galaxies.html | 10 +- apps/plugins/puzzles/src/icons/Makefile | 17 +- apps/plugins/puzzles/src/install-sh | 501 +++ apps/plugins/puzzles/src/keen.R | 8 +- apps/plugins/puzzles/src/keen.c | 21 +- apps/plugins/puzzles/src/latin.c | 135 +- apps/plugins/puzzles/src/list.c | 55 + apps/plugins/puzzles/src/matching.c | 753 ++++ apps/plugins/puzzles/src/matching.h | 80 + apps/plugins/puzzles/src/maxflow.c | 461 -- apps/plugins/puzzles/src/maxflow.h | 95 - apps/plugins/puzzles/src/midend.c | 21 + apps/plugins/puzzles/src/misc.c | 66 + apps/plugins/puzzles/src/missing | 215 + apps/plugins/puzzles/src/mkfiles.pl | 2 +- apps/plugins/puzzles/src/puzzles.but | 23 +- apps/plugins/puzzles/src/puzzles.cnt | 167 + apps/plugins/puzzles/src/puzzles.h | 28 +- apps/plugins/puzzles/src/puzzles.hlp | Bin 0 -> 201514 bytes apps/plugins/puzzles/src/puzzles.txt | 3120 +++++++++++++ apps/plugins/puzzles/src/singles.R | 2 +- apps/plugins/puzzles/src/solo.c | 18 +- apps/plugins/puzzles/src/tents.R | 2 +- apps/plugins/puzzles/src/tents.c | 241 +- apps/plugins/puzzles/src/towers.R | 8 +- apps/plugins/puzzles/src/towers.c | 20 +- apps/plugins/puzzles/src/undead.c | 19 +- apps/plugins/puzzles/src/unequal.R | 10 +- apps/plugins/puzzles/src/unequal.c | 18 +- apps/plugins/puzzles/src/unfinished/group.R | 8 +- apps/plugins/puzzles/src/unfinished/group.c | 1 + apps/plugins/puzzles/src/unfinished/separate.c | 1 + apps/plugins/puzzles/src/unfinished/slide.c | 1 + apps/plugins/puzzles/src/unfinished/sokoban.c | 1 + apps/plugins/puzzles/src/unruly.c | 2 +- apps/plugins/puzzles/src/winwix.mc | 20 +- 61 files changed, 32740 insertions(+), 884 deletions(-) create mode 100644 apps/plugins/puzzles/src/HACKING create mode 100644 apps/plugins/puzzles/src/Makefile create mode 100644 apps/plugins/puzzles/src/Makefile.am create mode 100644 apps/plugins/puzzles/src/Makefile.clangcl create mode 100644 apps/plugins/puzzles/src/Makefile.cyg create mode 100644 apps/plugins/puzzles/src/Makefile.emcc create mode 100644 apps/plugins/puzzles/src/Makefile.gnustep create mode 100644 apps/plugins/puzzles/src/Makefile.gtk create mode 100644 apps/plugins/puzzles/src/Makefile.in create mode 100644 apps/plugins/puzzles/src/Makefile.nestedvm create mode 100644 apps/plugins/puzzles/src/Makefile.osx create mode 100644 apps/plugins/puzzles/src/Makefile.vc create mode 100644 apps/plugins/puzzles/src/Makefile.wce create mode 100644 apps/plugins/puzzles/src/aclocal.m4 create mode 100755 apps/plugins/puzzles/src/compile create mode 100644 apps/plugins/puzzles/src/config.log create mode 100755 apps/plugins/puzzles/src/config.status create mode 100755 apps/plugins/puzzles/src/configure create mode 100755 apps/plugins/puzzles/src/depcomp create mode 100644 apps/plugins/puzzles/src/gamedesc.txt create mode 100755 apps/plugins/puzzles/src/install-sh create mode 100644 apps/plugins/puzzles/src/list.c create mode 100644 apps/plugins/puzzles/src/matching.c create mode 100644 apps/plugins/puzzles/src/matching.h delete mode 100644 apps/plugins/puzzles/src/maxflow.c delete mode 100644 apps/plugins/puzzles/src/maxflow.h create mode 100755 apps/plugins/puzzles/src/missing create mode 100644 apps/plugins/puzzles/src/puzzles.cnt create mode 100644 apps/plugins/puzzles/src/puzzles.hlp create mode 100644 apps/plugins/puzzles/src/puzzles.txt (limited to 'apps/plugins/puzzles/src') 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 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) +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.nestedvm b/apps/plugins/puzzles/src/Makefile.nestedvm new file mode 100644 index 0000000000..cf91de2e53 --- /dev/null +++ b/apps/plugins/puzzles/src/Makefile.nestedvm @@ -0,0 +1,556 @@ +# Makefile for puzzles under NestedVM. +# +# This file was created by `mkfiles.pl' from the `Recipe' file. +# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead. + +# This path points at the nestedvm root directory +NESTEDVM = /opt/nestedvm +# You can define this path to point at your tools if you need to +TOOLPATH = $(NESTEDVM)/upstream/install/bin +CC = $(TOOLPATH)/mips-unknown-elf-gcc + +CFLAGS = -O2 -Wall -Werror -DSLOW_SYSTEM -g -I./ -Iicons/ + +all: blackbox.jar bridges.jar cube.jar dominosa.jar fifteen.jar filling.jar \ + flip.jar flood.jar galaxies.jar guess.jar inertia.jar \ + keen.jar lightup.jar loopy.jar magnets.jar map.jar mines.jar \ + net.jar netslide.jar nullgame.jar palisade.jar pattern.jar \ + pearl.jar pegs.jar range.jar rect.jar samegame.jar \ + signpost.jar singles.jar sixteen.jar slant.jar solo.jar \ + tents.jar towers.jar tracks.jar twiddle.jar undead.jar \ + unequal.jar unruly.jar untangle.jar + +blackbox.mips: blackbox.o drawing.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ blackbox.o drawing.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +bridges.mips: bridges.o drawing.o dsf.o findloop.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ bridges.o drawing.o dsf.o findloop.o \ + nestedvm.o malloc.o midend.o misc.o no-icon.o printing.o \ + ps.o random.o version.o -lm + +cube.mips: cube.o drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ cube.o drawing.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +dominosa.mips: dominosa.o drawing.o nestedvm.o laydomino.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ dominosa.o drawing.o nestedvm.o laydomino.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + version.o -lm + +fifteen.mips: drawing.o fifteen.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o fifteen.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +filling.mips: drawing.o dsf.o filling.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o filling.o nestedvm.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + version.o -lm + +flip.mips: drawing.o flip.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o tree234.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o flip.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o tree234.o \ + version.o -lm + +flood.mips: drawing.o flood.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o flood.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +galaxies.mips: drawing.o dsf.o galaxies.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o galaxies.o nestedvm.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + version.o -lm + +guess.mips: drawing.o nestedvm.o guess.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o guess.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +inertia.mips: drawing.o nestedvm.o inertia.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o inertia.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +keen.mips: drawing.o dsf.o nestedvm.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) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.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 -lm + +lightup.mips: combi.o drawing.o nestedvm.o lightup.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ combi.o drawing.o nestedvm.o lightup.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + version.o -lm + +loopy.mips: drawing.o dsf.o grid.o nestedvm.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) $(XLDFLAGS) -o $@ drawing.o dsf.o grid.o nestedvm.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 -lm + +magnets.mips: drawing.o nestedvm.o laydomino.o magnets.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o laydomino.o magnets.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + version.o -lm + +map.mips: drawing.o dsf.o nestedvm.o malloc.o map.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o map.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o version.o \ + -lm + +mines.mips: drawing.o nestedvm.o malloc.o midend.o mines.o misc.o no-icon.o \ + printing.o ps.o random.o tree234.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + mines.o misc.o no-icon.o printing.o ps.o random.o tree234.o \ + version.o -lm + +net.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \ + net.o no-icon.o printing.o ps.o random.o tree234.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o net.o no-icon.o printing.o ps.o \ + random.o tree234.o version.o -lm + +netslide.mips: drawing.o nestedvm.o malloc.o midend.o misc.o netslide.o \ + no-icon.o printing.o ps.o random.o tree234.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o netslide.o no-icon.o printing.o ps.o random.o \ + tree234.o version.o -lm + +nullgame.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + nullgame.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o nullgame.o printing.o ps.o random.o \ + version.o -lm + +palisade.mips: divvy.o drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o palisade.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ divvy.o drawing.o dsf.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o palisade.o printing.o ps.o \ + random.o version.o -lm + +pattern.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + pattern.o printing.o ps.o random.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o pattern.o printing.o ps.o random.o \ + version.o -lm + +pearl.mips: drawing.o dsf.o grid.o nestedvm.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) $(XLDFLAGS) -o $@ drawing.o dsf.o grid.o nestedvm.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 -lm + +pegs.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o pegs.o \ + printing.o ps.o random.o tree234.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o pegs.o printing.o ps.o random.o tree234.o \ + version.o -lm + +range.mips: drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o range.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o range.o version.o \ + -lm + +rect.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o rect.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o rect.o version.o \ + -lm + +samegame.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o samegame.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o samegame.o \ + version.o -lm + +signpost.mips: drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o signpost.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o signpost.o \ + version.o -lm + +singles.mips: drawing.o dsf.o nestedvm.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) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.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 -lm + +sixteen.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o sixteen.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o sixteen.o \ + version.o -lm + +slant.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o slant.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + slant.o version.o -lm + +solo.mips: divvy.o drawing.o dsf.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o solo.o version.o + $(CC) $(XLDFLAGS) -o $@ divvy.o drawing.o dsf.o nestedvm.o malloc.o \ + midend.o misc.o no-icon.o printing.o ps.o random.o solo.o \ + version.o -lm + +tents.mips: drawing.o dsf.o nestedvm.o malloc.o maxflow.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o tents.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o nestedvm.o malloc.o \ + maxflow.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + tents.o version.o -lm + +towers.mips: drawing.o nestedvm.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) $(XLDFLAGS) -o $@ drawing.o nestedvm.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 -lm + +tracks.mips: drawing.o dsf.o findloop.o nestedvm.o malloc.o midend.o misc.o \ + no-icon.o printing.o ps.o random.o tracks.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o dsf.o findloop.o nestedvm.o \ + malloc.o midend.o misc.o no-icon.o printing.o ps.o random.o \ + tracks.o version.o -lm + +twiddle.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o twiddle.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o twiddle.o \ + version.o -lm + +undead.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o undead.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o undead.o version.o \ + -lm + +unequal.mips: drawing.o nestedvm.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) $(XLDFLAGS) -o $@ drawing.o nestedvm.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 -lm + +unruly.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o unruly.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o unruly.o version.o \ + -lm + +untangle.mips: drawing.o nestedvm.o malloc.o midend.o misc.o no-icon.o \ + printing.o ps.o random.o tree234.o untangle.o version.o + $(CC) $(XLDFLAGS) -o $@ drawing.o nestedvm.o malloc.o midend.o \ + misc.o no-icon.o printing.o ps.o random.o tree234.o \ + untangle.o version.o -lm + +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 $@ +nestedvm.o: ./nestedvm.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 $@ + +.PRECIOUS: %.class +%.class: %.mips + java -cp $(NESTEDVM)/build:$(NESTEDVM)/upstream/build/classgen/build \ + org.ibex.nestedvm.Compiler -outformat class -d . \ + PuzzleEngine $< + mv PuzzleEngine.class $@ + +org: + mkdir -p org/ibex/nestedvm/util + cp $(NESTEDVM)/build/org/ibex/nestedvm/Registers.class org/ibex/nestedvm + cp $(NESTEDVM)/build/org/ibex/nestedvm/UsermodeConstants.class org/ibex/nestedvm + cp $(NESTEDVM)/build/org/ibex/nestedvm/Runtime*.class org/ibex/nestedvm + cp $(NESTEDVM)/build/org/ibex/nestedvm/util/Platform*.class org/ibex/nestedvm/util + cp $(NESTEDVM)/build/org/ibex/nestedvm/util/Seekable*.class org/ibex/nestedvm/util + echo "Main-Class: PuzzleApplet" >applet.manifest + +PuzzleApplet.class: PuzzleApplet.java org + javac -source 1.3 -target 1.3 PuzzleApplet.java + +%.jar: %.class PuzzleApplet.class org + mv $< PuzzleEngine.class + jar cfm $@ applet.manifest PuzzleEngine.class PuzzleApplet*.class org + echo '' >$*.html + mv PuzzleEngine.class $< + +clean: + rm -rf *.o *.mips *.class *.html *.jar org applet.manifest diff --git a/apps/plugins/puzzles/src/Makefile.osx b/apps/plugins/puzzles/src/Makefile.osx new file mode 100644 index 0000000000..5d607d88e3 --- /dev/null +++ b/apps/plugins/puzzles/src/Makefile.osx @@ -0,0 +1,574 @@ +# Makefile for puzzles under Mac OS X. +# +# This file was created by `mkfiles.pl' from the `Recipe' file. +# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead. +CC = $(TOOLPATH)gcc +LIPO = $(TOOLPATH)lipo + +CFLAGS = -O2 -Wall -Werror -g -I./ -Iicons/ +LDFLAGS = -framework Cocoa +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 +Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html +Puzzles.app/Contents/Resources/Help/index.html: \ + Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but + cd Puzzles.app/Contents/Resources/Help; \ + halibut --html ../../../../osx-help.but ../../../../puzzles.but +Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources + mkdir -p Puzzles.app/Contents/Resources/Help + +release: Puzzles.dmg +Puzzles.dmg: Puzzles + rm -f raw.dmg + hdiutil create -megabytes 5 -layout NONE raw.dmg + hdid -nomount raw.dmg > devicename + newfs_hfs -v "Simon Tatham's Puzzle Collection" `cat devicename` + hdiutil eject `cat devicename` + hdid raw.dmg | cut -f1 -d' ' > devicename + cp -R Puzzles.app /Volumes/"Simon Tatham's Puzzle Collection" + hdiutil eject `cat devicename` + rm -f Puzzles.dmg + hdiutil convert -format UDCO raw.dmg -o Puzzles.dmg + rm -f raw.dmg devicename + +.SUFFIXES: .o .c .m + + + +Puzzles.app: + mkdir -p $@ +Puzzles.app/Contents: Puzzles.app + mkdir -p $@ +Puzzles.app/Contents/MacOS: Puzzles.app/Contents + mkdir -p $@ +Puzzles.app/Contents/Resources: Puzzles.app/Contents + mkdir -p $@ +Puzzles.app/Contents/Resources/Puzzles.icns: Puzzles.app/Contents/Resources osx.icns + cp osx.icns $@ +Puzzles.app/Contents/Info.plist: Puzzles.app/Contents/Resources osx-info.plist + cp osx-info.plist $@ +Puzzles: Puzzles.app/Contents/MacOS/Puzzles \ + Puzzles.app/Contents/Resources/Puzzles.icns \ + Puzzles.app/Contents/Info.plist $(Puzzles_extra) + +Puzzles.i386.bin: blackbo3.i386.o bridges3.i386.o combi.i386.o cube3.i386.o \ + divvy.i386.o dominos3.i386.o drawing.i386.o dsf.i386.o \ + fifteen5.i386.o filling5.i386.o findloop.i386.o flip3.i386.o \ + flood3.i386.o galaxie7.i386.o grid.i386.o guess3.i386.o \ + inertia3.i386.o keen5.i386.o latin.i386.o laydomino.i386.o \ + lightup5.i386.o list.i386.o loopgen.i386.o loopy5.i386.o \ + magnets5.i386.o malloc.i386.o map5.i386.o maxflow.i386.o \ + midend.i386.o mines5.i386.o misc.i386.o net3.i386.o \ + netslid3.i386.o osx.i386.o palisad3.i386.o pattern7.i386.o \ + pearl5.i386.o pegs3.i386.o penrose.i386.o random.i386.o \ + range3.i386.o rect3.i386.o samegam3.i386.o signpos5.i386.o \ + singles5.i386.o sixteen3.i386.o slant5.i386.o solo5.i386.o \ + tdq.i386.o tents5.i386.o towers5.i386.o tracks3.i386.o \ + tree234.i386.o twiddle3.i386.o undead3.i386.o \ + unequal5.i386.o unruly5.i386.o untangl3.i386.o \ + version.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(LDFLAGS) -o $@ \ + blackbo3.i386.o bridges3.i386.o combi.i386.o cube3.i386.o \ + divvy.i386.o dominos3.i386.o drawing.i386.o dsf.i386.o \ + fifteen5.i386.o filling5.i386.o findloop.i386.o flip3.i386.o \ + flood3.i386.o galaxie7.i386.o grid.i386.o guess3.i386.o \ + inertia3.i386.o keen5.i386.o latin.i386.o laydomino.i386.o \ + lightup5.i386.o list.i386.o loopgen.i386.o loopy5.i386.o \ + magnets5.i386.o malloc.i386.o map5.i386.o maxflow.i386.o \ + midend.i386.o mines5.i386.o misc.i386.o net3.i386.o \ + netslid3.i386.o osx.i386.o palisad3.i386.o pattern7.i386.o \ + pearl5.i386.o pegs3.i386.o penrose.i386.o random.i386.o \ + range3.i386.o rect3.i386.o samegam3.i386.o signpos5.i386.o \ + singles5.i386.o sixteen3.i386.o slant5.i386.o solo5.i386.o \ + tdq.i386.o tents5.i386.o towers5.i386.o tracks3.i386.o \ + tree234.i386.o twiddle3.i386.o undead3.i386.o \ + unequal5.i386.o unruly5.i386.o untangl3.i386.o \ + version.i386.o + +Puzzles.app/Contents/MacOS/Puzzles: Puzzles.app/Contents/MacOS \ + Puzzles.i386.bin + $(LIPO) -create Puzzles.i386.bin -output $@ + +fifteensolver.i386: fifteen2.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + fifteen2.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o + +fifteensolver: fifteensolver.i386 + $(LIPO) -create fifteensolver.i386 -output $@ + +fillingsolver.i386: dsf.i386.o filling2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o filling2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + +fillingsolver: fillingsolver.i386 + $(LIPO) -create fillingsolver.i386 -output $@ + +galaxiespicture.i386: dsf.i386.o galaxie4.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o galaxie4.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o -lm + +galaxiespicture: galaxiespicture.i386 + $(LIPO) -create galaxiespicture.i386 -output $@ + +galaxiessolver.i386: dsf.i386.o galaxie2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o galaxie2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o -lm + +galaxiessolver: galaxiessolver.i386 + $(LIPO) -create galaxiessolver.i386 -output $@ + +keensolver.i386: dsf.i386.o keen2.i386.o latin6.i386.o malloc.i386.o \ + maxflow.i386.o misc.i386.o nullfe.i386.o random.i386.o \ + tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o keen2.i386.o latin6.i386.o malloc.i386.o \ + maxflow.i386.o misc.i386.o nullfe.i386.o random.i386.o \ + tree234.i386.o + +keensolver: keensolver.i386 + $(LIPO) -create keensolver.i386 -output $@ + +latincheck.i386: latin8.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + latin8.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o tree234.i386.o + +latincheck: latincheck.i386 + $(LIPO) -create latincheck.i386 -output $@ + +lightupsolver.i386: combi.i386.o lightup2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + combi.i386.o lightup2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + +lightupsolver: lightupsolver.i386 + $(LIPO) -create lightupsolver.i386 -output $@ + +loopysolver.i386: dsf.i386.o grid.i386.o loopgen.i386.o loopy2.i386.o \ + malloc.i386.o misc.i386.o nullfe.i386.o penrose.i386.o \ + random.i386.o tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o grid.i386.o loopgen.i386.o loopy2.i386.o \ + malloc.i386.o misc.i386.o nullfe.i386.o penrose.i386.o \ + random.i386.o tree234.i386.o -lm + +loopysolver: loopysolver.i386 + $(LIPO) -create loopysolver.i386 -output $@ + +magnetssolver.i386: laydomino.i386.o magnets2.i386.o malloc.i386.o \ + misc.i386.o nullfe.i386.o random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + laydomino.i386.o magnets2.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o -lm + +magnetssolver: magnetssolver.i386 + $(LIPO) -create magnetssolver.i386 -output $@ + +mapsolver.i386: dsf.i386.o malloc.i386.o map2.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o malloc.i386.o map2.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o -lm + +mapsolver: mapsolver.i386 + $(LIPO) -create mapsolver.i386 -output $@ + +mineobfusc.i386: malloc.i386.o mines2.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + malloc.i386.o mines2.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o tree234.i386.o + +mineobfusc: mineobfusc.i386 + $(LIPO) -create mineobfusc.i386 -output $@ + +obfusc.i386: malloc.i386.o misc.i386.o nullfe.i386.o obfusc.i386.o \ + random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + malloc.i386.o misc.i386.o nullfe.i386.o obfusc.i386.o \ + random.i386.o + +obfusc: obfusc.i386 + $(LIPO) -create obfusc.i386 -output $@ + +patternpicture.i386: malloc.i386.o misc.i386.o nullfe.i386.o pattern4.i386.o \ + random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + malloc.i386.o misc.i386.o nullfe.i386.o pattern4.i386.o \ + random.i386.o + +patternpicture: patternpicture.i386 + $(LIPO) -create patternpicture.i386 -output $@ + +patternsolver.i386: malloc.i386.o misc.i386.o nullfe.i386.o pattern2.i386.o \ + random.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + malloc.i386.o misc.i386.o nullfe.i386.o pattern2.i386.o \ + random.i386.o + +patternsolver: patternsolver.i386 + $(LIPO) -create patternsolver.i386 -output $@ + +pearlbench.i386: dsf.i386.o grid.i386.o loopgen.i386.o malloc.i386.o \ + misc.i386.o nullfe.i386.o pearl2.i386.o penrose.i386.o \ + random.i386.o tdq.i386.o tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o grid.i386.o loopgen.i386.o malloc.i386.o \ + misc.i386.o nullfe.i386.o pearl2.i386.o penrose.i386.o \ + random.i386.o tdq.i386.o tree234.i386.o -lm + +pearlbench: pearlbench.i386 + $(LIPO) -create pearlbench.i386 -output $@ + +signpostsolver.i386: dsf.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o signpos2.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o malloc.i386.o misc.i386.o nullfe.i386.o \ + random.i386.o signpos2.i386.o -lm + +signpostsolver: signpostsolver.i386 + $(LIPO) -create signpostsolver.i386 -output $@ + +singlessolver.i386: dsf.i386.o latin.i386.o malloc.i386.o maxflow.i386.o \ + misc.i386.o nullfe.i386.o random.i386.o singles3.i386.o \ + tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o latin.i386.o malloc.i386.o maxflow.i386.o \ + misc.i386.o nullfe.i386.o random.i386.o singles3.i386.o \ + tree234.i386.o + +singlessolver: singlessolver.i386 + $(LIPO) -create singlessolver.i386 -output $@ + +slantsolver.i386: dsf.i386.o findloop.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o slant2.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o findloop.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o slant2.i386.o + +slantsolver: slantsolver.i386 + $(LIPO) -create slantsolver.i386 -output $@ + +solosolver.i386: divvy.i386.o dsf.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o solo2.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + divvy.i386.o dsf.i386.o malloc.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o solo2.i386.o + +solosolver: solosolver.i386 + $(LIPO) -create solosolver.i386 -output $@ + +tentssolver.i386: dsf.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o tents3.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + dsf.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o tents3.i386.o + +tentssolver: tentssolver.i386 + $(LIPO) -create tentssolver.i386 -output $@ + +towerssolver.i386: latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o towers2.i386.o tree234.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o towers2.i386.o tree234.i386.o + +towerssolver: towerssolver.i386 + $(LIPO) -create towerssolver.i386 -output $@ + +unequalsolver.i386: latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o tree234.i386.o unequal2.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + latin6.i386.o malloc.i386.o maxflow.i386.o misc.i386.o \ + nullfe.i386.o random.i386.o tree234.i386.o unequal2.i386.o + +unequalsolver: unequalsolver.i386 + $(LIPO) -create unequalsolver.i386 -output $@ + +unrulysolver.i386: malloc.i386.o misc.i386.o nullfe.i386.o random.i386.o \ + unruly2.i386.o + $(CC) -arch i386 -mmacosx-version-min=10.4 $(ULDFLAGS) -o $@ \ + malloc.i386.o misc.i386.o nullfe.i386.o random.i386.o \ + unruly2.i386.o + +unrulysolver: unrulysolver.i386 + $(LIPO) -create unrulysolver.i386 -output $@ + +blackbox.i386.o: ./blackbox.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +blackbo3.i386.o: ./blackbox.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +bridges.i386.o: ./bridges.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +bridges3.i386.o: ./bridges.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +combi.i386.o: ./combi.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +cube.i386.o: ./cube.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +cube3.i386.o: ./cube.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +divvy.i386.o: ./divvy.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +dominosa.i386.o: ./dominosa.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +dominos3.i386.o: ./dominosa.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +drawing.i386.o: ./drawing.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +dsf.i386.o: ./dsf.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +fifteen.i386.o: ./fifteen.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +fifteen5.i386.o: ./fifteen.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +fifteen2.i386.o: ./fifteen.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +filling.i386.o: ./filling.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +filling5.i386.o: ./filling.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +filling2.i386.o: ./filling.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +findloop.i386.o: ./findloop.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flip.i386.o: ./flip.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flip3.i386.o: ./flip.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +flood.i386.o: ./flood.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +flood3.i386.o: ./flood.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +galaxies.i386.o: ./galaxies.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +galaxie7.i386.o: ./galaxies.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +galaxie4.i386.o: ./galaxies.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ +galaxie2.i386.o: ./galaxies.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +grid.i386.o: ./grid.c ./puzzles.h ./tree234.h ./grid.h ./penrose.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +gtk.i386.o: ./gtk.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +guess.i386.o: ./guess.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +guess3.i386.o: ./guess.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +inertia.i386.o: ./inertia.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +inertia3.i386.o: ./inertia.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +keen.i386.o: ./keen.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +keen5.i386.o: ./keen.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +keen2.i386.o: ./keen.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +latin.i386.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +latin8.i386.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_LATIN_TEST -c $< -o $@ +latin6.i386.o: ./latin.c ./puzzles.h ./tree234.h ./maxflow.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +laydomino.i386.o: ./laydomino.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +lightup.i386.o: ./lightup.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +lightup5.i386.o: ./lightup.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +lightup2.i386.o: ./lightup.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +list.i386.o: ./list.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +loopgen.i386.o: ./loopgen.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +loopy.i386.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +loopy5.i386.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +loopy2.i386.o: ./loopy.c ./puzzles.h ./tree234.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +magnets.i386.o: ./magnets.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +magnets5.i386.o: ./magnets.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +magnets2.i386.o: ./magnets.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +malloc.i386.o: ./malloc.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +map.i386.o: ./map.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +map5.i386.o: ./map.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +map2.i386.o: ./map.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +maxflow.i386.o: ./maxflow.c ./maxflow.h ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +midend.i386.o: ./midend.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +mines.i386.o: ./mines.c ./tree234.h ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +mines5.i386.o: ./mines.c ./tree234.h ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +mines2.i386.o: ./mines.c ./tree234.h ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_OBFUSCATOR -c $< -o $@ +misc.i386.o: ./misc.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +net.i386.o: ./net.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +net3.i386.o: ./net.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +netslide.i386.o: ./netslide.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +netslid3.i386.o: ./netslide.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +no-icon.i386.o: ./no-icon.c + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +nullfe.i386.o: ./nullfe.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +nullgame.i386.o: ./nullgame.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +obfusc.i386.o: ./obfusc.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +osx.i386.o: ./osx.m ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 -x objective-c $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisade.i386.o: ./palisade.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +palisad3.i386.o: ./palisade.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern.i386.o: ./pattern.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +pattern7.i386.o: ./pattern.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pattern4.i386.o: ./pattern.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_PICTURE_GENERATOR -c $< -o $@ +pattern2.i386.o: ./pattern.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +pearl.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +pearl5.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +pearl2.i386.o: ./pearl.c ./puzzles.h ./grid.h ./loopgen.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +pegs.i386.o: ./pegs.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +pegs3.i386.o: ./pegs.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +penrose.i386.o: ./penrose.c ./puzzles.h ./penrose.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +printing.i386.o: ./printing.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +ps.i386.o: ./ps.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +random.i386.o: ./random.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +range.i386.o: ./range.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +range3.i386.o: ./range.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +rect.i386.o: ./rect.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +rect3.i386.o: ./rect.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +samegame.i386.o: ./samegame.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +samegam3.i386.o: ./samegame.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +signpost.i386.o: ./signpost.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +signpos5.i386.o: ./signpost.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +signpos2.i386.o: ./signpost.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +singles.i386.o: ./singles.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +singles5.i386.o: ./singles.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +singles3.i386.o: ./singles.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +sixteen.i386.o: ./sixteen.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +sixteen3.i386.o: ./sixteen.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +slant.i386.o: ./slant.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +slant5.i386.o: ./slant.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +slant2.i386.o: ./slant.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +solo.i386.o: ./solo.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +solo5.i386.o: ./solo.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +solo2.i386.o: ./solo.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tdq.i386.o: ./tdq.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tents.i386.o: ./tents.c ./puzzles.h ./maxflow.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tents5.i386.o: ./tents.c ./puzzles.h ./maxflow.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +tents3.i386.o: ./tents.c ./puzzles.h ./maxflow.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +towers.i386.o: ./towers.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +towers5.i386.o: ./towers.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +towers2.i386.o: ./towers.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +tracks.i386.o: ./tracks.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +tracks3.i386.o: ./tracks.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +tree234.i386.o: ./tree234.c ./tree234.h ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +twiddle.i386.o: ./twiddle.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +twiddle3.i386.o: ./twiddle.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +undead.i386.o: ./undead.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +undead3.i386.o: ./undead.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +unequal.i386.o: ./unequal.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +unequal5.i386.o: ./unequal.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +unequal2.i386.o: ./unequal.c ./puzzles.h ./latin.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +unruly.i386.o: ./unruly.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +unruly5.i386.o: ./unruly.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +unruly2.i386.o: ./unruly.c ./puzzles.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DSTANDALONE_SOLVER -c $< -o $@ +untangle.i386.o: ./untangle.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +untangl3.i386.o: ./untangle.c ./puzzles.h ./tree234.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ +version.i386.o: ./version.c ./version.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +windows.i386.o: ./windows.c ./puzzles.h ./resource.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -c $< -o $@ +windows1.i386.o: ./windows.c ./puzzles.h ./resource.h + $(CC) -arch i386 -mmacosx-version-min=10.4 $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) -DCOMBINED -c $< -o $@ + +clean: + rm -f *.o *.dmg fifteensolver fifteensolver.i386 fillingsolver fillingsolver.i386 galaxiespicture galaxiespicture.i386 galaxiessolver galaxiessolver.i386 keensolver keensolver.i386 latincheck latincheck.i386 lightupsolver lightupsolver.i386 loopysolver loopysolver.i386 magnetssolver magnetssolver.i386 mapsolver mapsolver.i386 mineobfusc mineobfusc.i386 obfusc obfusc.i386 patternpicture patternpicture.i386 patternsolver patternsolver.i386 pearlbench pearlbench.i386 signpostsolver signpostsolver.i386 singlessolver singlessolver.i386 slantsolver slantsolver.i386 solosolver solosolver.i386 tentssolver tentssolver.i386 towerssolver towerssolver.i386 unequalsolver unequalsolver.i386 unrulysolver unrulysolver.i386 + rm -rf *.app diff --git a/apps/plugins/puzzles/src/Makefile.vc b/apps/plugins/puzzles/src/Makefile.vc new file mode 100644 index 0000000000..45e77a5d8a --- /dev/null +++ b/apps/plugins/puzzles/src/Makefile.vc @@ -0,0 +1,1040 @@ +# Makefile for puzzles under Visual C. +# +# This file was created by `mkfiles.pl' from the `Recipe' file. +# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead. + +# If you rename this file to `Makefile', you should change this line, +# so that the .rsp files still depend on the correct makefile. +MAKEFILE = Makefile.vc + +# C compilation flags +CFLAGS = /nologo /W3 /O1 /D_WINDOWS /D_WIN32_WINDOWS=0x401 /DWINVER=0x401 /I. +LFLAGS = /incremental:no /fixed + +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.obj drawing.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + blackbox.rsp + link $(LFLAGS) -out:blackbox.exe -map:blackbox.map @blackbox.rsp + +bridges.exe: bridges.obj drawing.obj dsf.obj findloop.obj malloc.obj \ + midend.obj misc.obj noicon.res printing.obj random.obj \ + version.obj windows.obj bridges.rsp + link $(LFLAGS) -out:bridges.exe -map:bridges.map @bridges.rsp + +cube.exe: cube.obj drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj version.obj windows.obj cube.rsp + link $(LFLAGS) -out:cube.exe -map:cube.map @cube.rsp + +dominosa.exe: dominosa.obj drawing.obj laydomino.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj dominosa.rsp + link $(LFLAGS) -out:dominosa.exe -map:dominosa.map @dominosa.rsp + +fifteen.exe: drawing.obj fifteen.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + fifteen.rsp + link $(LFLAGS) -out:fifteen.exe -map:fifteen.map @fifteen.rsp + +fifteensolver.exe: fifteen2.obj malloc.obj misc.obj nullfe.obj random.obj \ + fifteensolver.rsp + link $(LFLAGS) -out:fifteensolver.exe -map:fifteensolver.map @fifteensolver.rsp + +filling.exe: drawing.obj dsf.obj filling.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + filling.rsp + link $(LFLAGS) -out:filling.exe -map:filling.map @filling.rsp + +fillingsolver.exe: dsf.obj filling2.obj malloc.obj misc.obj nullfe.obj \ + random.obj fillingsolver.rsp + link $(LFLAGS) -out:fillingsolver.exe -map:fillingsolver.map @fillingsolver.rsp + +flip.exe: drawing.obj flip.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj tree234.obj version.obj windows.obj \ + flip.rsp + link $(LFLAGS) -out:flip.exe -map:flip.map @flip.rsp + +flood.exe: drawing.obj flood.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj version.obj windows.obj flood.rsp + link $(LFLAGS) -out:flood.exe -map:flood.map @flood.rsp + +galaxies.exe: drawing.obj dsf.obj galaxies.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj galaxies.rsp + link $(LFLAGS) -out:galaxies.exe -map:galaxies.map @galaxies.rsp + +galaxiespicture.exe: dsf.obj galaxie4.obj malloc.obj misc.obj nullfe.obj \ + random.obj galaxiespicture.rsp + link $(LFLAGS) -out:galaxiespicture.exe -map:galaxiespicture.map @galaxiespicture.rsp + +galaxiessolver.exe: dsf.obj galaxie2.obj malloc.obj misc.obj nullfe.obj \ + random.obj galaxiessolver.rsp + link $(LFLAGS) -out:galaxiessolver.exe -map:galaxiessolver.map @galaxiessolver.rsp + +guess.exe: drawing.obj guess.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj version.obj windows.obj guess.rsp + link $(LFLAGS) -out:guess.exe -map:guess.map @guess.rsp + +inertia.exe: drawing.obj inertia.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + inertia.rsp + link $(LFLAGS) -out:inertia.exe -map:inertia.map @inertia.rsp + +keen.exe: drawing.obj dsf.obj keen.obj latin.obj malloc.obj maxflow.obj \ + midend.obj misc.obj noicon.res printing.obj random.obj \ + tree234.obj version.obj windows.obj keen.rsp + link $(LFLAGS) -out:keen.exe -map:keen.map @keen.rsp + +keensolver.exe: dsf.obj keen2.obj latin6.obj malloc.obj maxflow.obj misc.obj \ + nullfe.obj random.obj tree234.obj keensolver.rsp + link $(LFLAGS) -out:keensolver.exe -map:keensolver.map @keensolver.rsp + +latincheck.exe: latin8.obj malloc.obj maxflow.obj misc.obj nullfe.obj \ + random.obj tree234.obj latincheck.rsp + link $(LFLAGS) -out:latincheck.exe -map:latincheck.map @latincheck.rsp + +lightup.exe: combi.obj drawing.obj lightup.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj lightup.rsp + link $(LFLAGS) -out:lightup.exe -map:lightup.map @lightup.rsp + +lightupsolver.exe: combi.obj lightup2.obj malloc.obj misc.obj nullfe.obj \ + random.obj lightupsolver.rsp + link $(LFLAGS) -out:lightupsolver.exe -map:lightupsolver.map @lightupsolver.rsp + +loopy.exe: drawing.obj dsf.obj grid.obj loopgen.obj loopy.obj malloc.obj \ + midend.obj misc.obj noicon.res penrose.obj printing.obj \ + random.obj tree234.obj version.obj windows.obj loopy.rsp + link $(LFLAGS) -out:loopy.exe -map:loopy.map @loopy.rsp + +loopysolver.exe: dsf.obj grid.obj loopgen.obj loopy2.obj malloc.obj misc.obj \ + nullfe.obj penrose.obj random.obj tree234.obj \ + loopysolver.rsp + link $(LFLAGS) -out:loopysolver.exe -map:loopysolver.map @loopysolver.rsp + +magnets.exe: drawing.obj laydomino.obj magnets.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj magnets.rsp + link $(LFLAGS) -out:magnets.exe -map:magnets.map @magnets.rsp + +magnetssolver.exe: laydomino.obj magnets2.obj malloc.obj misc.obj nullfe.obj \ + random.obj magnetssolver.rsp + link $(LFLAGS) -out:magnetssolver.exe -map:magnetssolver.map @magnetssolver.rsp + +map.exe: drawing.obj dsf.obj malloc.obj map.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + map.rsp + link $(LFLAGS) -out:map.exe -map:map.map @map.rsp + +mapsolver.exe: dsf.obj malloc.obj map2.obj misc.obj nullfe.obj random.obj \ + mapsolver.rsp + link $(LFLAGS) -out:mapsolver.exe -map:mapsolver.map @mapsolver.rsp + +mineobfusc.exe: malloc.obj mines2.obj misc.obj nullfe.obj random.obj \ + tree234.obj mineobfusc.rsp + link $(LFLAGS) -out:mineobfusc.exe -map:mineobfusc.map @mineobfusc.rsp + +mines.exe: drawing.obj malloc.obj midend.obj mines.obj misc.obj noicon.res \ + printing.obj random.obj tree234.obj version.obj windows.obj \ + mines.rsp + link $(LFLAGS) -out:mines.exe -map:mines.map @mines.rsp + +netgame.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + net.obj noicon.res printing.obj random.obj tree234.obj \ + version.obj windows.obj netgame.rsp + link $(LFLAGS) -out:netgame.exe -map:netgame.map @netgame.rsp + +netslide.exe: drawing.obj malloc.obj midend.obj misc.obj netslide.obj \ + noicon.res printing.obj random.obj tree234.obj version.obj \ + windows.obj netslide.rsp + link $(LFLAGS) -out:netslide.exe -map:netslide.map @netslide.rsp + +nullgame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + nullgame.obj printing.obj random.obj version.obj windows.obj \ + nullgame.rsp + link $(LFLAGS) -out:nullgame.exe -map:nullgame.map @nullgame.rsp + +palisade.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ + noicon.res palisade.obj printing.obj random.obj version.obj \ + windows.obj palisade.rsp + link $(LFLAGS) -out:palisade.exe -map:palisade.map @palisade.rsp + +pattern.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + pattern.obj printing.obj random.obj version.obj windows.obj \ + pattern.rsp + link $(LFLAGS) -out:pattern.exe -map:pattern.map @pattern.rsp + +patternpicture.exe: malloc.obj misc.obj nullfe.obj pattern4.obj random.obj \ + patternpicture.rsp + link $(LFLAGS) -out:patternpicture.exe -map:patternpicture.map @patternpicture.rsp + +patternsolver.exe: malloc.obj misc.obj nullfe.obj pattern2.obj random.obj \ + patternsolver.rsp + link $(LFLAGS) -out:patternsolver.exe -map:patternsolver.map @patternsolver.rsp + +pearl.exe: drawing.obj dsf.obj grid.obj loopgen.obj malloc.obj midend.obj \ + misc.obj pearl.obj penrose.obj printing.obj random.obj \ + tdq.obj tree234.obj version.obj windows.obj pearl.rsp + link $(LFLAGS) -out:pearl.exe -map:pearl.map @pearl.rsp + +pearlbench.exe: dsf.obj grid.obj loopgen.obj malloc.obj misc.obj nullfe.obj \ + pearl2.obj penrose.obj random.obj tdq.obj tree234.obj \ + pearlbench.rsp + link $(LFLAGS) -out:pearlbench.exe -map:pearlbench.map @pearlbench.rsp + +pegs.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res pegs.obj \ + printing.obj random.obj tree234.obj version.obj windows.obj \ + pegs.rsp + link $(LFLAGS) -out:pegs.exe -map:pegs.map @pegs.rsp + +puzzles.exe: blackbo3.obj bridges3.obj combi.obj cube3.obj divvy.obj \ + dominos3.obj drawing.obj dsf.obj fifteen5.obj filling5.obj \ + findloop.obj flip3.obj flood3.obj galaxie7.obj grid.obj \ + guess3.obj inertia3.obj keen5.obj latin.obj laydomino.obj \ + lightup5.obj list.obj loopgen.obj loopy5.obj magnets5.obj \ + malloc.obj map5.obj maxflow.obj midend.obj mines5.obj \ + misc.obj net3.obj netslid3.obj noicon.res palisad3.obj \ + pattern7.obj pearl5.obj pegs3.obj penrose.obj printing.obj \ + random.obj range3.obj rect3.obj samegam3.obj signpos5.obj \ + singles5.obj sixteen3.obj slant5.obj solo5.obj tdq.obj \ + tents5.obj towers5.obj tracks3.obj tree234.obj twiddle3.obj \ + undead3.obj unequal5.obj unruly5.obj untangl3.obj \ + version.obj windows1.obj puzzles.rsp + link $(LFLAGS) -out:puzzles.exe -map:puzzles.map @puzzles.rsp + +range.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj range.obj version.obj windows.obj \ + range.rsp + link $(LFLAGS) -out:range.exe -map:range.map @range.rsp + +rect.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res printing.obj \ + random.obj rect.obj version.obj windows.obj rect.rsp + link $(LFLAGS) -out:rect.exe -map:rect.map @rect.rsp + +samegame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj samegame.obj version.obj windows.obj \ + samegame.rsp + link $(LFLAGS) -out:samegame.exe -map:samegame.map @samegame.rsp + +signpost.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj signpost.obj version.obj windows.obj \ + signpost.rsp + link $(LFLAGS) -out:signpost.exe -map:signpost.map @signpost.rsp + +signpostsolver.exe: dsf.obj malloc.obj misc.obj nullfe.obj random.obj \ + signpos2.obj signpostsolver.rsp + link $(LFLAGS) -out:signpostsolver.exe -map:signpostsolver.map @signpostsolver.rsp + +singles.exe: drawing.obj dsf.obj latin.obj malloc.obj maxflow.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj singles.obj \ + tree234.obj version.obj windows.obj singles.rsp + link $(LFLAGS) -out:singles.exe -map:singles.map @singles.rsp + +singlessolver.exe: dsf.obj latin.obj malloc.obj maxflow.obj misc.obj \ + nullfe.obj random.obj singles3.obj tree234.obj \ + singlessolver.rsp + link $(LFLAGS) -out:singlessolver.exe -map:singlessolver.map @singlessolver.rsp + +sixteen.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj sixteen.obj version.obj windows.obj \ + sixteen.rsp + link $(LFLAGS) -out:sixteen.exe -map:sixteen.map @sixteen.rsp + +slant.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj slant.obj version.obj \ + windows.obj slant.rsp + link $(LFLAGS) -out:slant.exe -map:slant.map @slant.rsp + +slantsolver.exe: dsf.obj findloop.obj malloc.obj misc.obj nullfe.obj \ + random.obj slant2.obj slantsolver.rsp + link $(LFLAGS) -out:slantsolver.exe -map:slantsolver.map @slantsolver.rsp + +solo.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj solo.obj version.obj \ + windows.obj solo.rsp + link $(LFLAGS) -out:solo.exe -map:solo.map @solo.rsp + +solosolver.exe: divvy.obj dsf.obj malloc.obj misc.obj nullfe.obj random.obj \ + solo2.obj solosolver.rsp + link $(LFLAGS) -out:solosolver.exe -map:solosolver.map @solosolver.rsp + +tents.exe: drawing.obj dsf.obj malloc.obj maxflow.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj tents.obj version.obj \ + windows.obj tents.rsp + link $(LFLAGS) -out:tents.exe -map:tents.map @tents.rsp + +tentssolver.exe: dsf.obj malloc.obj maxflow.obj misc.obj nullfe.obj \ + random.obj tents3.obj tentssolver.rsp + link $(LFLAGS) -out:tentssolver.exe -map:tentssolver.map @tentssolver.rsp + +towers.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj towers.obj tree234.obj \ + version.obj windows.obj towers.rsp + link $(LFLAGS) -out:towers.exe -map:towers.map @towers.rsp + +towerssolver.exe: latin6.obj malloc.obj maxflow.obj misc.obj nullfe.obj \ + random.obj towers2.obj tree234.obj towerssolver.rsp + link $(LFLAGS) -out:towerssolver.exe -map:towerssolver.map @towerssolver.rsp + +tracks.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj tracks.obj version.obj \ + windows.obj tracks.rsp + link $(LFLAGS) -out:tracks.exe -map:tracks.map @tracks.rsp + +twiddle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj twiddle.obj version.obj windows.obj \ + twiddle.rsp + link $(LFLAGS) -out:twiddle.exe -map:twiddle.map @twiddle.rsp + +undead.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj undead.obj version.obj windows.obj \ + undead.rsp + link $(LFLAGS) -out:undead.exe -map:undead.map @undead.rsp + +unequal.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj tree234.obj \ + unequal.obj version.obj windows.obj unequal.rsp + link $(LFLAGS) -out:unequal.exe -map:unequal.map @unequal.rsp + +unequalsolver.exe: latin6.obj malloc.obj maxflow.obj misc.obj nullfe.obj \ + random.obj tree234.obj unequal2.obj unequalsolver.rsp + link $(LFLAGS) -out:unequalsolver.exe -map:unequalsolver.map @unequalsolver.rsp + +unruly.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj unruly.obj version.obj windows.obj \ + unruly.rsp + link $(LFLAGS) -out:unruly.exe -map:unruly.map @unruly.rsp + +unrulysolver.exe: malloc.obj misc.obj nullfe.obj random.obj unruly2.obj \ + unrulysolver.rsp + link $(LFLAGS) -out:unrulysolver.exe -map:unrulysolver.map @unrulysolver.rsp + +untangle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj tree234.obj untangle.obj version.obj \ + windows.obj untangle.rsp + link $(LFLAGS) -out:untangle.exe -map:untangle.map @untangle.rsp + +blackbox.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > blackbox.rsp + echo blackbox.obj comctl32.lib comdlg32.lib >> blackbox.rsp + echo drawing.obj gdi32.lib malloc.obj midend.obj >> blackbox.rsp + echo misc.obj noicon.res printing.obj random.obj >> blackbox.rsp + echo user32.lib version.obj windows.obj winspool.lib >> blackbox.rsp + +bridges.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > bridges.rsp + echo bridges.obj comctl32.lib comdlg32.lib drawing.obj >> bridges.rsp + echo dsf.obj findloop.obj gdi32.lib malloc.obj >> bridges.rsp + echo midend.obj misc.obj noicon.res printing.obj >> bridges.rsp + echo random.obj user32.lib version.obj windows.obj >> bridges.rsp + echo winspool.lib >> bridges.rsp + +cube.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > cube.rsp + echo comctl32.lib comdlg32.lib cube.obj drawing.obj >> cube.rsp + echo gdi32.lib malloc.obj midend.obj misc.obj >> cube.rsp + echo noicon.res printing.obj random.obj user32.lib >> cube.rsp + echo version.obj windows.obj winspool.lib >> cube.rsp + +dominosa.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > dominosa.rsp + echo comctl32.lib comdlg32.lib dominosa.obj >> dominosa.rsp + echo drawing.obj gdi32.lib laydomino.obj malloc.obj >> dominosa.rsp + echo midend.obj misc.obj noicon.res printing.obj >> dominosa.rsp + echo random.obj user32.lib version.obj windows.obj >> dominosa.rsp + echo winspool.lib >> dominosa.rsp + +fifteen.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > fifteen.rsp + echo comctl32.lib comdlg32.lib drawing.obj fifteen.obj >> fifteen.rsp + echo gdi32.lib malloc.obj midend.obj misc.obj >> fifteen.rsp + echo noicon.res printing.obj random.obj user32.lib >> fifteen.rsp + echo version.obj windows.obj winspool.lib >> fifteen.rsp + +fifteensolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > fifteensolver.rsp + echo fifteen2.obj malloc.obj misc.obj nullfe.obj >> fifteensolver.rsp + echo random.obj >> fifteensolver.rsp + +filling.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > filling.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> filling.rsp + echo filling.obj gdi32.lib malloc.obj midend.obj >> filling.rsp + echo misc.obj noicon.res printing.obj random.obj >> filling.rsp + echo user32.lib version.obj windows.obj winspool.lib >> filling.rsp + +fillingsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > fillingsolver.rsp + echo dsf.obj filling2.obj malloc.obj misc.obj >> fillingsolver.rsp + echo nullfe.obj random.obj >> fillingsolver.rsp + +flip.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > flip.rsp + echo comctl32.lib comdlg32.lib drawing.obj flip.obj >> flip.rsp + echo gdi32.lib malloc.obj midend.obj misc.obj >> flip.rsp + echo noicon.res printing.obj random.obj tree234.obj >> flip.rsp + echo user32.lib version.obj windows.obj winspool.lib >> flip.rsp + +flood.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > flood.rsp + echo comctl32.lib comdlg32.lib drawing.obj flood.obj >> flood.rsp + echo gdi32.lib malloc.obj midend.obj misc.obj >> flood.rsp + echo noicon.res printing.obj random.obj user32.lib >> flood.rsp + echo version.obj windows.obj winspool.lib >> flood.rsp + +galaxies.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > galaxies.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> galaxies.rsp + echo galaxies.obj gdi32.lib malloc.obj midend.obj >> galaxies.rsp + echo misc.obj noicon.res printing.obj random.obj >> galaxies.rsp + echo user32.lib version.obj windows.obj winspool.lib >> galaxies.rsp + +galaxiespicture.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > galaxiespicture.rsp + echo dsf.obj galaxie4.obj malloc.obj misc.obj >> galaxiespicture.rsp + echo nullfe.obj random.obj >> galaxiespicture.rsp + +galaxiessolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > galaxiessolver.rsp + echo dsf.obj galaxie2.obj malloc.obj misc.obj >> galaxiessolver.rsp + echo nullfe.obj random.obj >> galaxiessolver.rsp + +guess.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > guess.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> guess.rsp + echo guess.obj malloc.obj midend.obj misc.obj >> guess.rsp + echo noicon.res printing.obj random.obj user32.lib >> guess.rsp + echo version.obj windows.obj winspool.lib >> guess.rsp + +inertia.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > inertia.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> inertia.rsp + echo inertia.obj malloc.obj midend.obj misc.obj >> inertia.rsp + echo noicon.res printing.obj random.obj user32.lib >> inertia.rsp + echo version.obj windows.obj winspool.lib >> inertia.rsp + +keen.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > keen.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> keen.rsp + echo gdi32.lib keen.obj latin.obj malloc.obj >> keen.rsp + echo maxflow.obj midend.obj misc.obj noicon.res >> keen.rsp + echo printing.obj random.obj tree234.obj user32.lib >> keen.rsp + echo version.obj windows.obj winspool.lib >> keen.rsp + +keensolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > keensolver.rsp + echo dsf.obj keen2.obj latin6.obj malloc.obj >> keensolver.rsp + echo maxflow.obj misc.obj nullfe.obj random.obj >> keensolver.rsp + echo tree234.obj >> keensolver.rsp + +latincheck.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > latincheck.rsp + echo latin8.obj malloc.obj maxflow.obj misc.obj >> latincheck.rsp + echo nullfe.obj random.obj tree234.obj >> latincheck.rsp + +lightup.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > lightup.rsp + echo combi.obj comctl32.lib comdlg32.lib drawing.obj >> lightup.rsp + echo gdi32.lib lightup.obj malloc.obj midend.obj >> lightup.rsp + echo misc.obj noicon.res printing.obj random.obj >> lightup.rsp + echo user32.lib version.obj windows.obj winspool.lib >> lightup.rsp + +lightupsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > lightupsolver.rsp + echo combi.obj lightup2.obj malloc.obj misc.obj >> lightupsolver.rsp + echo nullfe.obj random.obj >> lightupsolver.rsp + +loopy.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > loopy.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> loopy.rsp + echo gdi32.lib grid.obj loopgen.obj loopy.obj >> loopy.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> loopy.rsp + echo penrose.obj printing.obj random.obj tree234.obj >> loopy.rsp + echo user32.lib version.obj windows.obj winspool.lib >> loopy.rsp + +loopysolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > loopysolver.rsp + echo dsf.obj grid.obj loopgen.obj loopy2.obj >> loopysolver.rsp + echo malloc.obj misc.obj nullfe.obj penrose.obj >> loopysolver.rsp + echo random.obj tree234.obj >> loopysolver.rsp + +magnets.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > magnets.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> magnets.rsp + echo laydomino.obj magnets.obj malloc.obj midend.obj >> magnets.rsp + echo misc.obj noicon.res printing.obj random.obj >> magnets.rsp + echo user32.lib version.obj windows.obj winspool.lib >> magnets.rsp + +magnetssolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > magnetssolver.rsp + echo laydomino.obj magnets2.obj malloc.obj misc.obj >> magnetssolver.rsp + echo nullfe.obj random.obj >> magnetssolver.rsp + +map.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > map.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> map.rsp + echo gdi32.lib malloc.obj map.obj midend.obj misc.obj >> map.rsp + echo noicon.res printing.obj random.obj user32.lib >> map.rsp + echo version.obj windows.obj winspool.lib >> map.rsp + +mapsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > mapsolver.rsp + echo dsf.obj malloc.obj map2.obj misc.obj nullfe.obj >> mapsolver.rsp + echo random.obj >> mapsolver.rsp + +mineobfusc.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > mineobfusc.rsp + echo malloc.obj mines2.obj misc.obj nullfe.obj >> mineobfusc.rsp + echo random.obj tree234.obj >> mineobfusc.rsp + +mines.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > mines.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> mines.rsp + echo malloc.obj midend.obj mines.obj misc.obj >> mines.rsp + echo noicon.res printing.obj random.obj tree234.obj >> mines.rsp + echo user32.lib version.obj windows.obj winspool.lib >> mines.rsp + +netgame.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > netgame.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> netgame.rsp + echo findloop.obj gdi32.lib malloc.obj midend.obj >> netgame.rsp + echo misc.obj net.obj noicon.res printing.obj >> netgame.rsp + echo random.obj tree234.obj user32.lib version.obj >> netgame.rsp + echo windows.obj winspool.lib >> netgame.rsp + +netslide.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > netslide.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> netslide.rsp + echo malloc.obj midend.obj misc.obj netslide.obj >> netslide.rsp + echo noicon.res printing.obj random.obj tree234.obj >> netslide.rsp + echo user32.lib version.obj windows.obj winspool.lib >> netslide.rsp + +nullgame.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > nullgame.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> nullgame.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> nullgame.rsp + echo nullgame.obj printing.obj random.obj user32.lib >> nullgame.rsp + echo version.obj windows.obj winspool.lib >> nullgame.rsp + +palisade.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > palisade.rsp + echo comctl32.lib comdlg32.lib divvy.obj drawing.obj >> palisade.rsp + echo dsf.obj gdi32.lib malloc.obj midend.obj misc.obj >> palisade.rsp + echo noicon.res palisade.obj printing.obj random.obj >> palisade.rsp + echo user32.lib version.obj windows.obj winspool.lib >> palisade.rsp + +pattern.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > pattern.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> pattern.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> pattern.rsp + echo pattern.obj printing.obj random.obj user32.lib >> pattern.rsp + echo version.obj windows.obj winspool.lib >> pattern.rsp + +patternpicture.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > patternpicture.rsp + echo malloc.obj misc.obj nullfe.obj pattern4.obj >> patternpicture.rsp + echo random.obj >> patternpicture.rsp + +patternsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > patternsolver.rsp + echo malloc.obj misc.obj nullfe.obj pattern2.obj >> patternsolver.rsp + echo random.obj >> patternsolver.rsp + +pearl.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > pearl.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> pearl.rsp + echo gdi32.lib grid.obj loopgen.obj malloc.obj >> pearl.rsp + echo midend.obj misc.obj pearl.obj penrose.obj >> pearl.rsp + echo printing.obj random.obj tdq.obj tree234.obj >> pearl.rsp + echo user32.lib version.obj windows.obj winspool.lib >> pearl.rsp + +pearlbench.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > pearlbench.rsp + echo dsf.obj grid.obj loopgen.obj malloc.obj misc.obj >> pearlbench.rsp + echo nullfe.obj pearl2.obj penrose.obj random.obj >> pearlbench.rsp + echo tdq.obj tree234.obj >> pearlbench.rsp + +pegs.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > pegs.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> pegs.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> pegs.rsp + echo pegs.obj printing.obj random.obj tree234.obj >> pegs.rsp + echo user32.lib version.obj windows.obj winspool.lib >> pegs.rsp + +puzzles.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > puzzles.rsp + echo blackbo3.obj bridges3.obj combi.obj comctl32.lib >> puzzles.rsp + echo comdlg32.lib cube3.obj divvy.obj dominos3.obj >> puzzles.rsp + echo drawing.obj dsf.obj fifteen5.obj filling5.obj >> puzzles.rsp + echo findloop.obj flip3.obj flood3.obj galaxie7.obj >> puzzles.rsp + echo gdi32.lib grid.obj guess3.obj inertia3.obj >> puzzles.rsp + echo keen5.obj latin.obj laydomino.obj lightup5.obj >> puzzles.rsp + echo list.obj loopgen.obj loopy5.obj magnets5.obj >> puzzles.rsp + echo malloc.obj map5.obj maxflow.obj midend.obj >> puzzles.rsp + echo mines5.obj misc.obj net3.obj netslid3.obj >> puzzles.rsp + echo noicon.res palisad3.obj pattern7.obj pearl5.obj >> puzzles.rsp + echo pegs3.obj penrose.obj printing.obj random.obj >> puzzles.rsp + echo range3.obj rect3.obj samegam3.obj signpos5.obj >> puzzles.rsp + echo singles5.obj sixteen3.obj slant5.obj solo5.obj >> puzzles.rsp + echo tdq.obj tents5.obj towers5.obj tracks3.obj >> puzzles.rsp + echo tree234.obj twiddle3.obj undead3.obj unequal5.obj >> puzzles.rsp + echo unruly5.obj untangl3.obj user32.lib version.obj >> puzzles.rsp + echo windows1.obj winspool.lib >> puzzles.rsp + +range.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > range.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> range.rsp + echo gdi32.lib malloc.obj midend.obj misc.obj >> range.rsp + echo noicon.res printing.obj random.obj range.obj >> range.rsp + echo user32.lib version.obj windows.obj winspool.lib >> range.rsp + +rect.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > rect.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> rect.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> rect.rsp + echo printing.obj random.obj rect.obj user32.lib >> rect.rsp + echo version.obj windows.obj winspool.lib >> rect.rsp + +samegame.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > samegame.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> samegame.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> samegame.rsp + echo printing.obj random.obj samegame.obj user32.lib >> samegame.rsp + echo version.obj windows.obj winspool.lib >> samegame.rsp + +signpost.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > signpost.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> signpost.rsp + echo gdi32.lib malloc.obj midend.obj misc.obj >> signpost.rsp + echo noicon.res printing.obj random.obj signpost.obj >> signpost.rsp + echo user32.lib version.obj windows.obj winspool.lib >> signpost.rsp + +signpostsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > signpostsolver.rsp + echo dsf.obj malloc.obj misc.obj nullfe.obj random.obj >> signpostsolver.rsp + echo signpos2.obj >> signpostsolver.rsp + +singles.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > singles.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> singles.rsp + echo gdi32.lib latin.obj malloc.obj maxflow.obj >> singles.rsp + echo midend.obj misc.obj noicon.res printing.obj >> singles.rsp + echo random.obj singles.obj tree234.obj user32.lib >> singles.rsp + echo version.obj windows.obj winspool.lib >> singles.rsp + +singlessolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > singlessolver.rsp + echo dsf.obj latin.obj malloc.obj maxflow.obj misc.obj >> singlessolver.rsp + echo nullfe.obj random.obj singles3.obj tree234.obj >> singlessolver.rsp + +sixteen.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > sixteen.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> sixteen.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> sixteen.rsp + echo printing.obj random.obj sixteen.obj user32.lib >> sixteen.rsp + echo version.obj windows.obj winspool.lib >> sixteen.rsp + +slant.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > slant.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> slant.rsp + echo findloop.obj gdi32.lib malloc.obj midend.obj >> slant.rsp + echo misc.obj noicon.res printing.obj random.obj >> slant.rsp + echo slant.obj user32.lib version.obj windows.obj >> slant.rsp + echo winspool.lib >> slant.rsp + +slantsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > slantsolver.rsp + echo dsf.obj findloop.obj malloc.obj misc.obj >> slantsolver.rsp + echo nullfe.obj random.obj slant2.obj >> slantsolver.rsp + +solo.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > solo.rsp + echo comctl32.lib comdlg32.lib divvy.obj drawing.obj >> solo.rsp + echo dsf.obj gdi32.lib malloc.obj midend.obj misc.obj >> solo.rsp + echo noicon.res printing.obj random.obj solo.obj >> solo.rsp + echo user32.lib version.obj windows.obj winspool.lib >> solo.rsp + +solosolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > solosolver.rsp + echo divvy.obj dsf.obj malloc.obj misc.obj nullfe.obj >> solosolver.rsp + echo random.obj solo2.obj >> solosolver.rsp + +tents.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > tents.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> tents.rsp + echo gdi32.lib malloc.obj maxflow.obj midend.obj >> tents.rsp + echo misc.obj noicon.res printing.obj random.obj >> tents.rsp + echo tents.obj user32.lib version.obj windows.obj >> tents.rsp + echo winspool.lib >> tents.rsp + +tentssolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > tentssolver.rsp + echo dsf.obj malloc.obj maxflow.obj misc.obj >> tentssolver.rsp + echo nullfe.obj random.obj tents3.obj >> tentssolver.rsp + +towers.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > towers.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> towers.rsp + echo latin.obj malloc.obj maxflow.obj midend.obj >> towers.rsp + echo misc.obj noicon.res printing.obj random.obj >> towers.rsp + echo towers.obj tree234.obj user32.lib version.obj >> towers.rsp + echo windows.obj winspool.lib >> towers.rsp + +towerssolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > towerssolver.rsp + echo latin6.obj malloc.obj maxflow.obj misc.obj >> towerssolver.rsp + echo nullfe.obj random.obj towers2.obj tree234.obj >> towerssolver.rsp + +tracks.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > tracks.rsp + echo comctl32.lib comdlg32.lib drawing.obj dsf.obj >> tracks.rsp + echo findloop.obj gdi32.lib malloc.obj midend.obj >> tracks.rsp + echo misc.obj noicon.res printing.obj random.obj >> tracks.rsp + echo tracks.obj user32.lib version.obj windows.obj >> tracks.rsp + echo winspool.lib >> tracks.rsp + +twiddle.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > twiddle.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> twiddle.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> twiddle.rsp + echo printing.obj random.obj twiddle.obj user32.lib >> twiddle.rsp + echo version.obj windows.obj winspool.lib >> twiddle.rsp + +undead.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > undead.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> undead.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> undead.rsp + echo printing.obj random.obj undead.obj user32.lib >> undead.rsp + echo version.obj windows.obj winspool.lib >> undead.rsp + +unequal.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > unequal.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> unequal.rsp + echo latin.obj malloc.obj maxflow.obj midend.obj >> unequal.rsp + echo misc.obj noicon.res printing.obj random.obj >> unequal.rsp + echo tree234.obj unequal.obj user32.lib version.obj >> unequal.rsp + echo windows.obj winspool.lib >> unequal.rsp + +unequalsolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > unequalsolver.rsp + echo latin6.obj malloc.obj maxflow.obj misc.obj >> unequalsolver.rsp + echo nullfe.obj random.obj tree234.obj unequal2.obj >> unequalsolver.rsp + +unruly.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > unruly.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> unruly.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> unruly.rsp + echo printing.obj random.obj unruly.obj user32.lib >> unruly.rsp + echo version.obj windows.obj winspool.lib >> unruly.rsp + +unrulysolver.rsp: $(MAKEFILE) + echo /nologo /subsystem:console > unrulysolver.rsp + echo malloc.obj misc.obj nullfe.obj random.obj >> unrulysolver.rsp + echo unruly2.obj >> unrulysolver.rsp + +untangle.rsp: $(MAKEFILE) + echo /nologo /subsystem:windows > untangle.rsp + echo comctl32.lib comdlg32.lib drawing.obj gdi32.lib >> untangle.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> untangle.rsp + echo printing.obj random.obj tree234.obj untangle.obj >> untangle.rsp + echo user32.lib version.obj windows.obj winspool.lib >> untangle.rsp + +blackbox.obj: .\blackbox.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\blackbox.c /Foblackbox.obj +blackbo3.obj: .\blackbox.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\blackbox.c /Foblackbo3.obj +bridges.obj: .\bridges.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\bridges.c /Fobridges.obj +bridges3.obj: .\bridges.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\bridges.c /Fobridges3.obj +combi.obj: .\combi.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\combi.c /Focombi.obj +cube.obj: .\cube.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\cube.c /Focube.obj +cube3.obj: .\cube.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\cube.c /Focube3.obj +divvy.obj: .\divvy.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\divvy.c /Fodivvy.obj +dominosa.obj: .\dominosa.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dominosa.c /Fodominosa.obj +dominos3.obj: .\dominosa.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\dominosa.c /Fodominos3.obj +drawing.obj: .\drawing.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\drawing.c /Fodrawing.obj +dsf.obj: .\dsf.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dsf.c /Fodsf.obj +fifteen.obj: .\fifteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\fifteen.c /Fofifteen.obj +fifteen5.obj: .\fifteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen5.obj +fifteen2.obj: .\fifteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\fifteen.c /Fofifteen2.obj +filling.obj: .\filling.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\filling.c /Fofilling.obj +filling5.obj: .\filling.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\filling.c /Fofilling5.obj +filling2.obj: .\filling.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\filling.c /Fofilling2.obj +findloop.obj: .\findloop.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\findloop.c /Fofindloop.obj +flip.obj: .\flip.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flip.c /Foflip.obj +flip3.obj: .\flip.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flip.c /Foflip3.obj +flood.obj: .\flood.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flood.c /Foflood.obj +flood3.obj: .\flood.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flood.c /Foflood3.obj +galaxies.obj: .\galaxies.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\galaxies.c /Fogalaxies.obj +galaxie7.obj: .\galaxies.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\galaxies.c /Fogalaxie7.obj +galaxie4.obj: .\galaxies.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\galaxies.c /Fogalaxie4.obj +galaxie2.obj: .\galaxies.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\galaxies.c /Fogalaxie2.obj +grid.obj: .\grid.c .\puzzles.h .\tree234.h .\grid.h .\penrose.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\grid.c /Fogrid.obj +gtk.obj: .\gtk.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\gtk.c /Fogtk.obj +guess.obj: .\guess.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\guess.c /Foguess.obj +guess3.obj: .\guess.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\guess.c /Foguess3.obj +inertia.obj: .\inertia.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\inertia.c /Foinertia.obj +inertia3.obj: .\inertia.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\inertia.c /Foinertia3.obj +keen.obj: .\keen.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\keen.c /Fokeen.obj +keen5.obj: .\keen.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\keen.c /Fokeen5.obj +keen2.obj: .\keen.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\keen.c /Fokeen2.obj +latin.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\latin.c /Folatin.obj +latin8.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_LATIN_TEST /c .\latin.c /Folatin8.obj +latin6.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\latin.c /Folatin6.obj +laydomino.obj: .\laydomino.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\laydomino.c /Folaydomino.obj +lightup.obj: .\lightup.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\lightup.c /Folightup.obj +lightup5.obj: .\lightup.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\lightup.c /Folightup5.obj +lightup2.obj: .\lightup.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\lightup.c /Folightup2.obj +list.obj: .\list.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\list.c /Folist.obj +loopgen.obj: .\loopgen.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopgen.c /Foloopgen.obj +loopy.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopy.c /Foloopy.obj +loopy5.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\loopy.c /Foloopy5.obj +loopy2.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\loopy.c /Foloopy2.obj +magnets.obj: .\magnets.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\magnets.c /Fomagnets.obj +magnets5.obj: .\magnets.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\magnets.c /Fomagnets5.obj +magnets2.obj: .\magnets.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\magnets.c /Fomagnets2.obj +malloc.obj: .\malloc.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\malloc.c /Fomalloc.obj +map.obj: .\map.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\map.c /Fomap.obj +map5.obj: .\map.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\map.c /Fomap5.obj +map2.obj: .\map.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\map.c /Fomap2.obj +maxflow.obj: .\maxflow.c .\maxflow.h .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\maxflow.c /Fomaxflow.obj +midend.obj: .\midend.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\midend.c /Fomidend.obj +mines.obj: .\mines.c .\tree234.h .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\mines.c /Fomines.obj +mines5.obj: .\mines.c .\tree234.h .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\mines.c /Fomines5.obj +mines2.obj: .\mines.c .\tree234.h .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_OBFUSCATOR /c .\mines.c /Fomines2.obj +misc.obj: .\misc.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\misc.c /Fomisc.obj +net.obj: .\net.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\net.c /Fonet.obj +net3.obj: .\net.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\net.c /Fonet3.obj +netslide.obj: .\netslide.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\netslide.c /Fonetslide.obj +netslid3.obj: .\netslide.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\netslide.c /Fonetslid3.obj +no-icon.obj: .\no-icon.c + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\no-icon.c /Fono-icon.obj +noicon.res: .\noicon.rc .\puzzles.rc2 .\resource.h + rc $(FWHACK) $(RCFL) -r -DWIN32 -D_WIN32 -DWINVER=0x0400 -fonoicon.res .\noicon.rc +nullfe.obj: .\nullfe.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullfe.c /Fonullfe.obj +nullgame.obj: .\nullgame.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullgame.c /Fonullgame.obj +obfusc.obj: .\obfusc.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\obfusc.c /Foobfusc.obj +osx.obj: .\osx.m .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\osx.m /Foosx.obj +palisade.obj: .\palisade.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\palisade.c /Fopalisade.obj +palisad3.obj: .\palisade.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\palisade.c /Fopalisad3.obj +pattern.obj: .\pattern.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pattern.c /Fopattern.obj +pattern7.obj: .\pattern.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern7.obj +pattern4.obj: .\pattern.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\pattern.c /Fopattern4.obj +pattern2.obj: .\pattern.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pattern.c /Fopattern2.obj +pearl.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pearl.c /Fopearl.obj +pearl5.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pearl.c /Fopearl5.obj +pearl2.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pearl.c /Fopearl2.obj +pegs.obj: .\pegs.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pegs.c /Fopegs.obj +pegs3.obj: .\pegs.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pegs.c /Fopegs3.obj +penrose.obj: .\penrose.c .\puzzles.h .\penrose.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\penrose.c /Fopenrose.obj +printing.obj: .\printing.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\printing.c /Foprinting.obj +ps.obj: .\ps.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\ps.c /Fops.obj +random.obj: .\random.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\random.c /Forandom.obj +range.obj: .\range.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\range.c /Forange.obj +range3.obj: .\range.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\range.c /Forange3.obj +rect.obj: .\rect.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\rect.c /Forect.obj +rect3.obj: .\rect.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\rect.c /Forect3.obj +samegame.obj: .\samegame.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\samegame.c /Fosamegame.obj +samegam3.obj: .\samegame.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\samegame.c /Fosamegam3.obj +signpost.obj: .\signpost.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\signpost.c /Fosignpost.obj +signpos5.obj: .\signpost.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\signpost.c /Fosignpos5.obj +signpos2.obj: .\signpost.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\signpost.c /Fosignpos2.obj +singles.obj: .\singles.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\singles.c /Fosingles.obj +singles5.obj: .\singles.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\singles.c /Fosingles5.obj +singles3.obj: .\singles.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\singles.c /Fosingles3.obj +sixteen.obj: .\sixteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\sixteen.c /Fosixteen.obj +sixteen3.obj: .\sixteen.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\sixteen.c /Fosixteen3.obj +slant.obj: .\slant.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\slant.c /Foslant.obj +slant5.obj: .\slant.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\slant.c /Foslant5.obj +slant2.obj: .\slant.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\slant.c /Foslant2.obj +solo.obj: .\solo.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\solo.c /Fosolo.obj +solo5.obj: .\solo.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\solo.c /Fosolo5.obj +solo2.obj: .\solo.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\solo.c /Fosolo2.obj +tdq.obj: .\tdq.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tdq.c /Fotdq.obj +tents.obj: .\tents.c .\puzzles.h .\maxflow.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tents.c /Fotents.obj +tents5.obj: .\tents.c .\puzzles.h .\maxflow.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tents.c /Fotents5.obj +tents3.obj: .\tents.c .\puzzles.h .\maxflow.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\tents.c /Fotents3.obj +towers.obj: .\towers.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\towers.c /Fotowers.obj +towers5.obj: .\towers.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\towers.c /Fotowers5.obj +towers2.obj: .\towers.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\towers.c /Fotowers2.obj +tracks.obj: .\tracks.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tracks.c /Fotracks.obj +tracks3.obj: .\tracks.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tracks.c /Fotracks3.obj +tree234.obj: .\tree234.c .\tree234.h .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tree234.c /Fotree234.obj +twiddle.obj: .\twiddle.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\twiddle.c /Fotwiddle.obj +twiddle3.obj: .\twiddle.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\twiddle.c /Fotwiddle3.obj +undead.obj: .\undead.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\undead.c /Foundead.obj +undead3.obj: .\undead.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\undead.c /Foundead3.obj +unequal.obj: .\unequal.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unequal.c /Founequal.obj +unequal5.obj: .\unequal.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unequal.c /Founequal5.obj +unequal2.obj: .\unequal.c .\puzzles.h .\latin.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unequal.c /Founequal2.obj +unruly.obj: .\unruly.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unruly.c /Founruly.obj +unruly5.obj: .\unruly.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unruly.c /Founruly5.obj +unruly2.obj: .\unruly.c .\puzzles.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unruly.c /Founruly2.obj +untangle.obj: .\untangle.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\untangle.c /Fountangle.obj +untangl3.obj: .\untangle.c .\puzzles.h .\tree234.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\untangle.c /Fountangl3.obj +version.obj: .\version.c .\version.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\version.c /Foversion.obj +windows.obj: .\windows.c .\puzzles.h .\resource.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\windows.c /Fowindows.obj +windows1.obj: .\windows.c .\puzzles.h .\resource.h + cl $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\windows.c /Fowindows1.obj + + +clean: tidy + -del *.exe + +tidy: + -del *.obj + -del *.res + -del *.pch + -del *.aps + -del *.ilk + -del *.pdb + -del *.rsp + -del *.dsp + -del *.dsw + -del *.ncb + -del *.opt + -del *.plg + -del *.map + -del *.idb + -del debug.log diff --git a/apps/plugins/puzzles/src/Makefile.wce b/apps/plugins/puzzles/src/Makefile.wce new file mode 100644 index 0000000000..241e30b8df --- /dev/null +++ b/apps/plugins/puzzles/src/Makefile.wce @@ -0,0 +1,808 @@ +# Makefile for puzzles on PocketPC using eMbedded Visual C. +# +# This file was created by `mkfiles.pl' from the `Recipe' file. +# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead. + +# If you rename this file to `Makefile', you should change this line, +# so that the .rsp files still depend on the correct makefile. +MAKEFILE = Makefile.wce + +# This makefile expects the environment to have been set up by one +# of the PocketPC batch files wcearmv4.bat and wceemulator.bat. No +# other build targets are currently supported, because they would +# need a section in this if statement. +!if "$(TARGETCPU)" == "emulator" +PLATFORM_DEFS=/D "_i386_" /D "i_386_" /D "_X86_" /D "x86" +CC=cl +BASELIBS=commctrl.lib coredll.lib corelibc.lib aygshell.lib +MACHINE=IX86 +!else +PLATFORM_DEFS=/D "ARM" /D "_ARM_" /D "ARMV4" +CC=clarm +BASELIBS=commctrl.lib coredll.lib aygshell.lib +MACHINE=ARM +!endif + +# C compilation flags +CFLAGS = /nologo /W3 /O1 /MC /D _WIN32_WCE=420 /D "WIN32_PLATFORM_PSPC=400" /D UNDER_CE=420 \ + $(PLATFORM_DEFS) \ + /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "NO_HTMLHELP" + +LFLAGS = /nologo /incremental:no \ + /base:0x00010000 /stack:0x10000,0x1000 /entry:WinMainCRTStartup \ + /nodefaultlib:libc.lib /nodefaultlib:libcmt.lib /nodefaultlib:msvcrt.lib /nodefaultlib:OLDNAMES.lib \ + /subsystem:windowsce,4.20 /align:4096 /MACHINE:$(MACHINE) + +RCFL = /d UNDER_CE=420 /d _WIN32_WCE=420 /d "WIN32_PLATFORM_PSPC=400" \ + $(PLATFORM_DEFS) \ + /d "NDEBUG" /d "UNICODE" /d "_UNICODE" + +all: blackbox.exe bridges.exe cube.exe dominosa.exe fifteen.exe filling.exe \ + flip.exe flood.exe galaxies.exe guess.exe inertia.exe \ + keen.exe lightup.exe loopy.exe magnets.exe map.exe mines.exe \ + netgame.exe netslide.exe nullgame.exe palisade.exe \ + pattern.exe pearl.exe pegs.exe puzzles.exe range.exe \ + rect.exe samegame.exe signpost.exe singles.exe sixteen.exe \ + slant.exe solo.exe tents.exe towers.exe tracks.exe \ + twiddle.exe undead.exe unequal.exe unruly.exe untangle.exe + +blackbox.exe: blackbox.obj drawing.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + blackbox.rsp + link $(LFLAGS) -out:blackbox.exe -map:blackbox.map @blackbox.rsp + +bridges.exe: bridges.obj drawing.obj dsf.obj findloop.obj malloc.obj \ + midend.obj misc.obj noicon.res printing.obj random.obj \ + version.obj windows.obj bridges.rsp + link $(LFLAGS) -out:bridges.exe -map:bridges.map @bridges.rsp + +cube.exe: cube.obj drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj version.obj windows.obj cube.rsp + link $(LFLAGS) -out:cube.exe -map:cube.map @cube.rsp + +dominosa.exe: dominosa.obj drawing.obj laydomino.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj dominosa.rsp + link $(LFLAGS) -out:dominosa.exe -map:dominosa.map @dominosa.rsp + +fifteen.exe: drawing.obj fifteen.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + fifteen.rsp + link $(LFLAGS) -out:fifteen.exe -map:fifteen.map @fifteen.rsp + +filling.exe: drawing.obj dsf.obj filling.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + filling.rsp + link $(LFLAGS) -out:filling.exe -map:filling.map @filling.rsp + +flip.exe: drawing.obj flip.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj tree234.obj version.obj windows.obj \ + flip.rsp + link $(LFLAGS) -out:flip.exe -map:flip.map @flip.rsp + +flood.exe: drawing.obj flood.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj version.obj windows.obj flood.rsp + link $(LFLAGS) -out:flood.exe -map:flood.map @flood.rsp + +galaxies.exe: drawing.obj dsf.obj galaxies.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj galaxies.rsp + link $(LFLAGS) -out:galaxies.exe -map:galaxies.map @galaxies.rsp + +guess.exe: drawing.obj guess.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj version.obj windows.obj guess.rsp + link $(LFLAGS) -out:guess.exe -map:guess.map @guess.rsp + +inertia.exe: drawing.obj inertia.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + inertia.rsp + link $(LFLAGS) -out:inertia.exe -map:inertia.map @inertia.rsp + +keen.exe: drawing.obj dsf.obj keen.obj latin.obj malloc.obj maxflow.obj \ + midend.obj misc.obj noicon.res printing.obj random.obj \ + tree234.obj version.obj windows.obj keen.rsp + link $(LFLAGS) -out:keen.exe -map:keen.map @keen.rsp + +lightup.exe: combi.obj drawing.obj lightup.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj lightup.rsp + link $(LFLAGS) -out:lightup.exe -map:lightup.map @lightup.rsp + +loopy.exe: drawing.obj dsf.obj grid.obj loopgen.obj loopy.obj malloc.obj \ + midend.obj misc.obj noicon.res penrose.obj printing.obj \ + random.obj tree234.obj version.obj windows.obj loopy.rsp + link $(LFLAGS) -out:loopy.exe -map:loopy.map @loopy.rsp + +magnets.exe: drawing.obj laydomino.obj magnets.obj malloc.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj version.obj \ + windows.obj magnets.rsp + link $(LFLAGS) -out:magnets.exe -map:magnets.map @magnets.rsp + +map.exe: drawing.obj dsf.obj malloc.obj map.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj version.obj windows.obj \ + map.rsp + link $(LFLAGS) -out:map.exe -map:map.map @map.rsp + +mines.exe: drawing.obj malloc.obj midend.obj mines.obj misc.obj noicon.res \ + printing.obj random.obj tree234.obj version.obj windows.obj \ + mines.rsp + link $(LFLAGS) -out:mines.exe -map:mines.map @mines.rsp + +netgame.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + net.obj noicon.res printing.obj random.obj tree234.obj \ + version.obj windows.obj netgame.rsp + link $(LFLAGS) -out:netgame.exe -map:netgame.map @netgame.rsp + +netslide.exe: drawing.obj malloc.obj midend.obj misc.obj netslide.obj \ + noicon.res printing.obj random.obj tree234.obj version.obj \ + windows.obj netslide.rsp + link $(LFLAGS) -out:netslide.exe -map:netslide.map @netslide.rsp + +nullgame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + nullgame.obj printing.obj random.obj version.obj windows.obj \ + nullgame.rsp + link $(LFLAGS) -out:nullgame.exe -map:nullgame.map @nullgame.rsp + +palisade.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ + noicon.res palisade.obj printing.obj random.obj version.obj \ + windows.obj palisade.rsp + link $(LFLAGS) -out:palisade.exe -map:palisade.map @palisade.rsp + +pattern.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + pattern.obj printing.obj random.obj version.obj windows.obj \ + pattern.rsp + link $(LFLAGS) -out:pattern.exe -map:pattern.map @pattern.rsp + +pearl.exe: drawing.obj dsf.obj grid.obj loopgen.obj malloc.obj midend.obj \ + misc.obj pearl.obj penrose.obj printing.obj random.obj \ + tdq.obj tree234.obj version.obj windows.obj pearl.rsp + link $(LFLAGS) -out:pearl.exe -map:pearl.map @pearl.rsp + +pegs.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res pegs.obj \ + printing.obj random.obj tree234.obj version.obj windows.obj \ + pegs.rsp + link $(LFLAGS) -out:pegs.exe -map:pegs.map @pegs.rsp + +puzzles.exe: blackbo3.obj bridges3.obj combi.obj cube3.obj divvy.obj \ + dominos3.obj drawing.obj dsf.obj fifteen5.obj filling5.obj \ + findloop.obj flip3.obj flood3.obj galaxie7.obj grid.obj \ + guess3.obj inertia3.obj keen5.obj latin.obj laydomino.obj \ + lightup5.obj list.obj loopgen.obj loopy5.obj magnets5.obj \ + malloc.obj map5.obj maxflow.obj midend.obj mines5.obj \ + misc.obj net3.obj netslid3.obj noicon.res palisad3.obj \ + pattern7.obj pearl5.obj pegs3.obj penrose.obj printing.obj \ + random.obj range3.obj rect3.obj samegam3.obj signpos5.obj \ + singles5.obj sixteen3.obj slant5.obj solo5.obj tdq.obj \ + tents5.obj towers5.obj tracks3.obj tree234.obj twiddle3.obj \ + undead3.obj unequal5.obj unruly5.obj untangl3.obj \ + version.obj windows1.obj puzzles.rsp + link $(LFLAGS) -out:puzzles.exe -map:puzzles.map @puzzles.rsp + +range.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj range.obj version.obj windows.obj \ + range.rsp + link $(LFLAGS) -out:range.exe -map:range.map @range.rsp + +rect.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res printing.obj \ + random.obj rect.obj version.obj windows.obj rect.rsp + link $(LFLAGS) -out:rect.exe -map:rect.map @rect.rsp + +samegame.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj samegame.obj version.obj windows.obj \ + samegame.rsp + link $(LFLAGS) -out:samegame.exe -map:samegame.map @samegame.rsp + +signpost.exe: drawing.obj dsf.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj signpost.obj version.obj windows.obj \ + signpost.rsp + link $(LFLAGS) -out:signpost.exe -map:signpost.map @signpost.rsp + +singles.exe: drawing.obj dsf.obj latin.obj malloc.obj maxflow.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj singles.obj \ + tree234.obj version.obj windows.obj singles.rsp + link $(LFLAGS) -out:singles.exe -map:singles.map @singles.rsp + +sixteen.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj sixteen.obj version.obj windows.obj \ + sixteen.rsp + link $(LFLAGS) -out:sixteen.exe -map:sixteen.map @sixteen.rsp + +slant.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj slant.obj version.obj \ + windows.obj slant.rsp + link $(LFLAGS) -out:slant.exe -map:slant.map @slant.rsp + +solo.exe: divvy.obj drawing.obj dsf.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj solo.obj version.obj \ + windows.obj solo.rsp + link $(LFLAGS) -out:solo.exe -map:solo.map @solo.rsp + +tents.exe: drawing.obj dsf.obj malloc.obj maxflow.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj tents.obj version.obj \ + windows.obj tents.rsp + link $(LFLAGS) -out:tents.exe -map:tents.map @tents.rsp + +towers.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj towers.obj tree234.obj \ + version.obj windows.obj towers.rsp + link $(LFLAGS) -out:towers.exe -map:towers.map @towers.rsp + +tracks.exe: drawing.obj dsf.obj findloop.obj malloc.obj midend.obj misc.obj \ + noicon.res printing.obj random.obj tracks.obj version.obj \ + windows.obj tracks.rsp + link $(LFLAGS) -out:tracks.exe -map:tracks.map @tracks.rsp + +twiddle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj twiddle.obj version.obj windows.obj \ + twiddle.rsp + link $(LFLAGS) -out:twiddle.exe -map:twiddle.map @twiddle.rsp + +undead.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj undead.obj version.obj windows.obj \ + undead.rsp + link $(LFLAGS) -out:undead.exe -map:undead.map @undead.rsp + +unequal.exe: drawing.obj latin.obj malloc.obj maxflow.obj midend.obj \ + misc.obj noicon.res printing.obj random.obj tree234.obj \ + unequal.obj version.obj windows.obj unequal.rsp + link $(LFLAGS) -out:unequal.exe -map:unequal.map @unequal.rsp + +unruly.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj unruly.obj version.obj windows.obj \ + unruly.rsp + link $(LFLAGS) -out:unruly.exe -map:unruly.map @unruly.rsp + +untangle.exe: drawing.obj malloc.obj midend.obj misc.obj noicon.res \ + printing.obj random.obj tree234.obj untangle.obj version.obj \ + windows.obj untangle.rsp + link $(LFLAGS) -out:untangle.exe -map:untangle.map @untangle.rsp + +blackbox.rsp: $(MAKEFILE) + echo $(BASELIBS) > blackbox.rsp + echo blackbox.obj drawing.obj malloc.obj midend.obj >> blackbox.rsp + echo misc.obj noicon.res printing.obj random.obj >> blackbox.rsp + echo version.obj windows.obj >> blackbox.rsp + +bridges.rsp: $(MAKEFILE) + echo $(BASELIBS) > bridges.rsp + echo bridges.obj drawing.obj dsf.obj findloop.obj >> bridges.rsp + echo malloc.obj midend.obj misc.obj noicon.res >> bridges.rsp + echo printing.obj random.obj version.obj windows.obj >> bridges.rsp + +cube.rsp: $(MAKEFILE) + echo $(BASELIBS) > cube.rsp + echo cube.obj drawing.obj malloc.obj midend.obj >> cube.rsp + echo misc.obj noicon.res printing.obj random.obj >> cube.rsp + echo version.obj windows.obj >> cube.rsp + +dominosa.rsp: $(MAKEFILE) + echo $(BASELIBS) > dominosa.rsp + echo dominosa.obj drawing.obj laydomino.obj malloc.obj >> dominosa.rsp + echo midend.obj misc.obj noicon.res printing.obj >> dominosa.rsp + echo random.obj version.obj windows.obj >> dominosa.rsp + +fifteen.rsp: $(MAKEFILE) + echo $(BASELIBS) > fifteen.rsp + echo drawing.obj fifteen.obj malloc.obj midend.obj >> fifteen.rsp + echo misc.obj noicon.res printing.obj random.obj >> fifteen.rsp + echo version.obj windows.obj >> fifteen.rsp + +filling.rsp: $(MAKEFILE) + echo $(BASELIBS) > filling.rsp + echo drawing.obj dsf.obj filling.obj malloc.obj >> filling.rsp + echo midend.obj misc.obj noicon.res printing.obj >> filling.rsp + echo random.obj version.obj windows.obj >> filling.rsp + +flip.rsp: $(MAKEFILE) + echo $(BASELIBS) > flip.rsp + echo drawing.obj flip.obj malloc.obj midend.obj >> flip.rsp + echo misc.obj noicon.res printing.obj random.obj >> flip.rsp + echo tree234.obj version.obj windows.obj >> flip.rsp + +flood.rsp: $(MAKEFILE) + echo $(BASELIBS) > flood.rsp + echo drawing.obj flood.obj malloc.obj midend.obj >> flood.rsp + echo misc.obj noicon.res printing.obj random.obj >> flood.rsp + echo version.obj windows.obj >> flood.rsp + +galaxies.rsp: $(MAKEFILE) + echo $(BASELIBS) > galaxies.rsp + echo drawing.obj dsf.obj galaxies.obj malloc.obj >> galaxies.rsp + echo midend.obj misc.obj noicon.res printing.obj >> galaxies.rsp + echo random.obj version.obj windows.obj >> galaxies.rsp + +guess.rsp: $(MAKEFILE) + echo $(BASELIBS) > guess.rsp + echo drawing.obj guess.obj malloc.obj midend.obj >> guess.rsp + echo misc.obj noicon.res printing.obj random.obj >> guess.rsp + echo version.obj windows.obj >> guess.rsp + +inertia.rsp: $(MAKEFILE) + echo $(BASELIBS) > inertia.rsp + echo drawing.obj inertia.obj malloc.obj midend.obj >> inertia.rsp + echo misc.obj noicon.res printing.obj random.obj >> inertia.rsp + echo version.obj windows.obj >> inertia.rsp + +keen.rsp: $(MAKEFILE) + echo $(BASELIBS) > keen.rsp + echo drawing.obj dsf.obj keen.obj latin.obj malloc.obj >> keen.rsp + echo maxflow.obj midend.obj misc.obj noicon.res >> keen.rsp + echo printing.obj random.obj tree234.obj version.obj >> keen.rsp + echo windows.obj >> keen.rsp + +lightup.rsp: $(MAKEFILE) + echo $(BASELIBS) > lightup.rsp + echo combi.obj drawing.obj lightup.obj malloc.obj >> lightup.rsp + echo midend.obj misc.obj noicon.res printing.obj >> lightup.rsp + echo random.obj version.obj windows.obj >> lightup.rsp + +loopy.rsp: $(MAKEFILE) + echo $(BASELIBS) > loopy.rsp + echo drawing.obj dsf.obj grid.obj loopgen.obj >> loopy.rsp + echo loopy.obj malloc.obj midend.obj misc.obj >> loopy.rsp + echo noicon.res penrose.obj printing.obj random.obj >> loopy.rsp + echo tree234.obj version.obj windows.obj >> loopy.rsp + +magnets.rsp: $(MAKEFILE) + echo $(BASELIBS) > magnets.rsp + echo drawing.obj laydomino.obj magnets.obj malloc.obj >> magnets.rsp + echo midend.obj misc.obj noicon.res printing.obj >> magnets.rsp + echo random.obj version.obj windows.obj >> magnets.rsp + +map.rsp: $(MAKEFILE) + echo $(BASELIBS) > map.rsp + echo drawing.obj dsf.obj malloc.obj map.obj midend.obj >> map.rsp + echo misc.obj noicon.res printing.obj random.obj >> map.rsp + echo version.obj windows.obj >> map.rsp + +mines.rsp: $(MAKEFILE) + echo $(BASELIBS) > mines.rsp + echo drawing.obj malloc.obj midend.obj mines.obj >> mines.rsp + echo misc.obj noicon.res printing.obj random.obj >> mines.rsp + echo tree234.obj version.obj windows.obj >> mines.rsp + +netgame.rsp: $(MAKEFILE) + echo $(BASELIBS) > netgame.rsp + echo drawing.obj dsf.obj findloop.obj malloc.obj >> netgame.rsp + echo midend.obj misc.obj net.obj noicon.res >> netgame.rsp + echo printing.obj random.obj tree234.obj version.obj >> netgame.rsp + echo windows.obj >> netgame.rsp + +netslide.rsp: $(MAKEFILE) + echo $(BASELIBS) > netslide.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> netslide.rsp + echo netslide.obj noicon.res printing.obj random.obj >> netslide.rsp + echo tree234.obj version.obj windows.obj >> netslide.rsp + +nullgame.rsp: $(MAKEFILE) + echo $(BASELIBS) > nullgame.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> nullgame.rsp + echo noicon.res nullgame.obj printing.obj random.obj >> nullgame.rsp + echo version.obj windows.obj >> nullgame.rsp + +palisade.rsp: $(MAKEFILE) + echo $(BASELIBS) > palisade.rsp + echo divvy.obj drawing.obj dsf.obj malloc.obj >> palisade.rsp + echo midend.obj misc.obj noicon.res palisade.obj >> palisade.rsp + echo printing.obj random.obj version.obj windows.obj >> palisade.rsp + +pattern.rsp: $(MAKEFILE) + echo $(BASELIBS) > pattern.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> pattern.rsp + echo noicon.res pattern.obj printing.obj random.obj >> pattern.rsp + echo version.obj windows.obj >> pattern.rsp + +pearl.rsp: $(MAKEFILE) + echo $(BASELIBS) > pearl.rsp + echo drawing.obj dsf.obj grid.obj loopgen.obj >> pearl.rsp + echo malloc.obj midend.obj misc.obj pearl.obj >> pearl.rsp + echo penrose.obj printing.obj random.obj tdq.obj >> pearl.rsp + echo tree234.obj version.obj windows.obj >> pearl.rsp + +pegs.rsp: $(MAKEFILE) + echo $(BASELIBS) > pegs.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> pegs.rsp + echo noicon.res pegs.obj printing.obj random.obj >> pegs.rsp + echo tree234.obj version.obj windows.obj >> pegs.rsp + +puzzles.rsp: $(MAKEFILE) + echo $(BASELIBS) > puzzles.rsp + echo blackbo3.obj bridges3.obj combi.obj cube3.obj >> puzzles.rsp + echo divvy.obj dominos3.obj drawing.obj dsf.obj >> puzzles.rsp + echo fifteen5.obj filling5.obj findloop.obj flip3.obj >> puzzles.rsp + echo flood3.obj galaxie7.obj grid.obj guess3.obj >> puzzles.rsp + echo inertia3.obj keen5.obj latin.obj laydomino.obj >> puzzles.rsp + echo lightup5.obj list.obj loopgen.obj loopy5.obj >> puzzles.rsp + echo magnets5.obj malloc.obj map5.obj maxflow.obj >> puzzles.rsp + echo midend.obj mines5.obj misc.obj net3.obj >> puzzles.rsp + echo netslid3.obj noicon.res palisad3.obj pattern7.obj >> puzzles.rsp + echo pearl5.obj pegs3.obj penrose.obj printing.obj >> puzzles.rsp + echo random.obj range3.obj rect3.obj samegam3.obj >> puzzles.rsp + echo signpos5.obj singles5.obj sixteen3.obj slant5.obj >> puzzles.rsp + echo solo5.obj tdq.obj tents5.obj towers5.obj >> puzzles.rsp + echo tracks3.obj tree234.obj twiddle3.obj undead3.obj >> puzzles.rsp + echo unequal5.obj unruly5.obj untangl3.obj version.obj >> puzzles.rsp + echo windows1.obj >> puzzles.rsp + +range.rsp: $(MAKEFILE) + echo $(BASELIBS) > range.rsp + echo drawing.obj dsf.obj malloc.obj midend.obj >> range.rsp + echo misc.obj noicon.res printing.obj random.obj >> range.rsp + echo range.obj version.obj windows.obj >> range.rsp + +rect.rsp: $(MAKEFILE) + echo $(BASELIBS) > rect.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> rect.rsp + echo noicon.res printing.obj random.obj rect.obj >> rect.rsp + echo version.obj windows.obj >> rect.rsp + +samegame.rsp: $(MAKEFILE) + echo $(BASELIBS) > samegame.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> samegame.rsp + echo noicon.res printing.obj random.obj samegame.obj >> samegame.rsp + echo version.obj windows.obj >> samegame.rsp + +signpost.rsp: $(MAKEFILE) + echo $(BASELIBS) > signpost.rsp + echo drawing.obj dsf.obj malloc.obj midend.obj >> signpost.rsp + echo misc.obj noicon.res printing.obj random.obj >> signpost.rsp + echo signpost.obj version.obj windows.obj >> signpost.rsp + +singles.rsp: $(MAKEFILE) + echo $(BASELIBS) > singles.rsp + echo drawing.obj dsf.obj latin.obj malloc.obj >> singles.rsp + echo maxflow.obj midend.obj misc.obj noicon.res >> singles.rsp + echo printing.obj random.obj singles.obj tree234.obj >> singles.rsp + echo version.obj windows.obj >> singles.rsp + +sixteen.rsp: $(MAKEFILE) + echo $(BASELIBS) > sixteen.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> sixteen.rsp + echo noicon.res printing.obj random.obj sixteen.obj >> sixteen.rsp + echo version.obj windows.obj >> sixteen.rsp + +slant.rsp: $(MAKEFILE) + echo $(BASELIBS) > slant.rsp + echo drawing.obj dsf.obj findloop.obj malloc.obj >> slant.rsp + echo midend.obj misc.obj noicon.res printing.obj >> slant.rsp + echo random.obj slant.obj version.obj windows.obj >> slant.rsp + +solo.rsp: $(MAKEFILE) + echo $(BASELIBS) > solo.rsp + echo divvy.obj drawing.obj dsf.obj malloc.obj >> solo.rsp + echo midend.obj misc.obj noicon.res printing.obj >> solo.rsp + echo random.obj solo.obj version.obj windows.obj >> solo.rsp + +tents.rsp: $(MAKEFILE) + echo $(BASELIBS) > tents.rsp + echo drawing.obj dsf.obj malloc.obj maxflow.obj >> tents.rsp + echo midend.obj misc.obj noicon.res printing.obj >> tents.rsp + echo random.obj tents.obj version.obj windows.obj >> tents.rsp + +towers.rsp: $(MAKEFILE) + echo $(BASELIBS) > towers.rsp + echo drawing.obj latin.obj malloc.obj maxflow.obj >> towers.rsp + echo midend.obj misc.obj noicon.res printing.obj >> towers.rsp + echo random.obj towers.obj tree234.obj version.obj >> towers.rsp + echo windows.obj >> towers.rsp + +tracks.rsp: $(MAKEFILE) + echo $(BASELIBS) > tracks.rsp + echo drawing.obj dsf.obj findloop.obj malloc.obj >> tracks.rsp + echo midend.obj misc.obj noicon.res printing.obj >> tracks.rsp + echo random.obj tracks.obj version.obj windows.obj >> tracks.rsp + +twiddle.rsp: $(MAKEFILE) + echo $(BASELIBS) > twiddle.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> twiddle.rsp + echo noicon.res printing.obj random.obj twiddle.obj >> twiddle.rsp + echo version.obj windows.obj >> twiddle.rsp + +undead.rsp: $(MAKEFILE) + echo $(BASELIBS) > undead.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> undead.rsp + echo noicon.res printing.obj random.obj undead.obj >> undead.rsp + echo version.obj windows.obj >> undead.rsp + +unequal.rsp: $(MAKEFILE) + echo $(BASELIBS) > unequal.rsp + echo drawing.obj latin.obj malloc.obj maxflow.obj >> unequal.rsp + echo midend.obj misc.obj noicon.res printing.obj >> unequal.rsp + echo random.obj tree234.obj unequal.obj version.obj >> unequal.rsp + echo windows.obj >> unequal.rsp + +unruly.rsp: $(MAKEFILE) + echo $(BASELIBS) > unruly.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> unruly.rsp + echo noicon.res printing.obj random.obj unruly.obj >> unruly.rsp + echo version.obj windows.obj >> unruly.rsp + +untangle.rsp: $(MAKEFILE) + echo $(BASELIBS) > untangle.rsp + echo drawing.obj malloc.obj midend.obj misc.obj >> untangle.rsp + echo noicon.res printing.obj random.obj tree234.obj >> untangle.rsp + echo untangle.obj version.obj windows.obj >> untangle.rsp + +blackbox.obj: .\blackbox.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\blackbox.c /Foblackbox.obj +blackbo3.obj: .\blackbox.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\blackbox.c /Foblackbo3.obj +bridges.obj: .\bridges.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\bridges.c /Fobridges.obj +bridges3.obj: .\bridges.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\bridges.c /Fobridges3.obj +combi.obj: .\combi.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\combi.c /Focombi.obj +cube.obj: .\cube.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\cube.c /Focube.obj +cube3.obj: .\cube.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\cube.c /Focube3.obj +divvy.obj: .\divvy.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\divvy.c /Fodivvy.obj +dominosa.obj: .\dominosa.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dominosa.c /Fodominosa.obj +dominos3.obj: .\dominosa.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\dominosa.c /Fodominos3.obj +drawing.obj: .\drawing.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\drawing.c /Fodrawing.obj +dsf.obj: .\dsf.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\dsf.c /Fodsf.obj +fifteen.obj: .\fifteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\fifteen.c /Fofifteen.obj +fifteen5.obj: .\fifteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\fifteen.c /Fofifteen5.obj +fifteen2.obj: .\fifteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\fifteen.c /Fofifteen2.obj +filling.obj: .\filling.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\filling.c /Fofilling.obj +filling5.obj: .\filling.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\filling.c /Fofilling5.obj +filling2.obj: .\filling.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\filling.c /Fofilling2.obj +findloop.obj: .\findloop.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\findloop.c /Fofindloop.obj +flip.obj: .\flip.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flip.c /Foflip.obj +flip3.obj: .\flip.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flip.c /Foflip3.obj +flood.obj: .\flood.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\flood.c /Foflood.obj +flood3.obj: .\flood.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\flood.c /Foflood3.obj +galaxies.obj: .\galaxies.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\galaxies.c /Fogalaxies.obj +galaxie7.obj: .\galaxies.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\galaxies.c /Fogalaxie7.obj +galaxie4.obj: .\galaxies.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\galaxies.c /Fogalaxie4.obj +galaxie2.obj: .\galaxies.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\galaxies.c /Fogalaxie2.obj +grid.obj: .\grid.c .\puzzles.h .\tree234.h .\grid.h .\penrose.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\grid.c /Fogrid.obj +gtk.obj: .\gtk.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\gtk.c /Fogtk.obj +guess.obj: .\guess.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\guess.c /Foguess.obj +guess3.obj: .\guess.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\guess.c /Foguess3.obj +inertia.obj: .\inertia.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\inertia.c /Foinertia.obj +inertia3.obj: .\inertia.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\inertia.c /Foinertia3.obj +keen.obj: .\keen.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\keen.c /Fokeen.obj +keen5.obj: .\keen.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\keen.c /Fokeen5.obj +keen2.obj: .\keen.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\keen.c /Fokeen2.obj +latin.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\latin.c /Folatin.obj +latin8.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_LATIN_TEST /c .\latin.c /Folatin8.obj +latin6.obj: .\latin.c .\puzzles.h .\tree234.h .\maxflow.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\latin.c /Folatin6.obj +laydomino.obj: .\laydomino.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\laydomino.c /Folaydomino.obj +lightup.obj: .\lightup.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\lightup.c /Folightup.obj +lightup5.obj: .\lightup.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\lightup.c /Folightup5.obj +lightup2.obj: .\lightup.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\lightup.c /Folightup2.obj +list.obj: .\list.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\list.c /Folist.obj +loopgen.obj: .\loopgen.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopgen.c /Foloopgen.obj +loopy.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\loopy.c /Foloopy.obj +loopy5.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\loopy.c /Foloopy5.obj +loopy2.obj: .\loopy.c .\puzzles.h .\tree234.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\loopy.c /Foloopy2.obj +magnets.obj: .\magnets.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\magnets.c /Fomagnets.obj +magnets5.obj: .\magnets.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\magnets.c /Fomagnets5.obj +magnets2.obj: .\magnets.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\magnets.c /Fomagnets2.obj +malloc.obj: .\malloc.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\malloc.c /Fomalloc.obj +map.obj: .\map.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\map.c /Fomap.obj +map5.obj: .\map.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\map.c /Fomap5.obj +map2.obj: .\map.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\map.c /Fomap2.obj +maxflow.obj: .\maxflow.c .\maxflow.h .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\maxflow.c /Fomaxflow.obj +midend.obj: .\midend.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\midend.c /Fomidend.obj +mines.obj: .\mines.c .\tree234.h .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\mines.c /Fomines.obj +mines5.obj: .\mines.c .\tree234.h .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\mines.c /Fomines5.obj +mines2.obj: .\mines.c .\tree234.h .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_OBFUSCATOR /c .\mines.c /Fomines2.obj +misc.obj: .\misc.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\misc.c /Fomisc.obj +net.obj: .\net.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\net.c /Fonet.obj +net3.obj: .\net.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\net.c /Fonet3.obj +netslide.obj: .\netslide.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\netslide.c /Fonetslide.obj +netslid3.obj: .\netslide.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\netslide.c /Fonetslid3.obj +no-icon.obj: .\no-icon.c + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\no-icon.c /Fono-icon.obj +noicon.res: .\noicon.rc .\puzzles.rc2 .\resource.h + rc $(FWHACK) $(RCFL) -r -fonoicon.res .\noicon.rc +nullfe.obj: .\nullfe.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullfe.c /Fonullfe.obj +nullgame.obj: .\nullgame.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\nullgame.c /Fonullgame.obj +obfusc.obj: .\obfusc.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\obfusc.c /Foobfusc.obj +osx.obj: .\osx.m .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\osx.m /Foosx.obj +palisade.obj: .\palisade.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\palisade.c /Fopalisade.obj +palisad3.obj: .\palisade.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\palisade.c /Fopalisad3.obj +pattern.obj: .\pattern.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pattern.c /Fopattern.obj +pattern7.obj: .\pattern.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pattern.c /Fopattern7.obj +pattern4.obj: .\pattern.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_PICTURE_GENERATOR /c .\pattern.c /Fopattern4.obj +pattern2.obj: .\pattern.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pattern.c /Fopattern2.obj +pearl.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pearl.c /Fopearl.obj +pearl5.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pearl.c /Fopearl5.obj +pearl2.obj: .\pearl.c .\puzzles.h .\grid.h .\loopgen.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\pearl.c /Fopearl2.obj +pegs.obj: .\pegs.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\pegs.c /Fopegs.obj +pegs3.obj: .\pegs.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\pegs.c /Fopegs3.obj +penrose.obj: .\penrose.c .\puzzles.h .\penrose.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\penrose.c /Fopenrose.obj +printing.obj: .\printing.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\printing.c /Foprinting.obj +ps.obj: .\ps.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\ps.c /Fops.obj +random.obj: .\random.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\random.c /Forandom.obj +range.obj: .\range.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\range.c /Forange.obj +range3.obj: .\range.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\range.c /Forange3.obj +rect.obj: .\rect.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\rect.c /Forect.obj +rect3.obj: .\rect.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\rect.c /Forect3.obj +samegame.obj: .\samegame.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\samegame.c /Fosamegame.obj +samegam3.obj: .\samegame.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\samegame.c /Fosamegam3.obj +signpost.obj: .\signpost.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\signpost.c /Fosignpost.obj +signpos5.obj: .\signpost.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\signpost.c /Fosignpos5.obj +signpos2.obj: .\signpost.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\signpost.c /Fosignpos2.obj +singles.obj: .\singles.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\singles.c /Fosingles.obj +singles5.obj: .\singles.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\singles.c /Fosingles5.obj +singles3.obj: .\singles.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\singles.c /Fosingles3.obj +sixteen.obj: .\sixteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\sixteen.c /Fosixteen.obj +sixteen3.obj: .\sixteen.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\sixteen.c /Fosixteen3.obj +slant.obj: .\slant.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\slant.c /Foslant.obj +slant5.obj: .\slant.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\slant.c /Foslant5.obj +slant2.obj: .\slant.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\slant.c /Foslant2.obj +solo.obj: .\solo.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\solo.c /Fosolo.obj +solo5.obj: .\solo.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\solo.c /Fosolo5.obj +solo2.obj: .\solo.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\solo.c /Fosolo2.obj +tdq.obj: .\tdq.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tdq.c /Fotdq.obj +tents.obj: .\tents.c .\puzzles.h .\maxflow.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tents.c /Fotents.obj +tents5.obj: .\tents.c .\puzzles.h .\maxflow.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tents.c /Fotents5.obj +tents3.obj: .\tents.c .\puzzles.h .\maxflow.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\tents.c /Fotents3.obj +towers.obj: .\towers.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\towers.c /Fotowers.obj +towers5.obj: .\towers.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\towers.c /Fotowers5.obj +towers2.obj: .\towers.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\towers.c /Fotowers2.obj +tracks.obj: .\tracks.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tracks.c /Fotracks.obj +tracks3.obj: .\tracks.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\tracks.c /Fotracks3.obj +tree234.obj: .\tree234.c .\tree234.h .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\tree234.c /Fotree234.obj +twiddle.obj: .\twiddle.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\twiddle.c /Fotwiddle.obj +twiddle3.obj: .\twiddle.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\twiddle.c /Fotwiddle3.obj +undead.obj: .\undead.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\undead.c /Foundead.obj +undead3.obj: .\undead.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\undead.c /Foundead3.obj +unequal.obj: .\unequal.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unequal.c /Founequal.obj +unequal5.obj: .\unequal.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unequal.c /Founequal5.obj +unequal2.obj: .\unequal.c .\puzzles.h .\latin.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unequal.c /Founequal2.obj +unruly.obj: .\unruly.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\unruly.c /Founruly.obj +unruly5.obj: .\unruly.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\unruly.c /Founruly5.obj +unruly2.obj: .\unruly.c .\puzzles.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DSTANDALONE_SOLVER /c .\unruly.c /Founruly2.obj +untangle.obj: .\untangle.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\untangle.c /Fountangle.obj +untangl3.obj: .\untangle.c .\puzzles.h .\tree234.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\untangle.c /Fountangl3.obj +version.obj: .\version.c .\version.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\version.c /Foversion.obj +windows.obj: .\windows.c .\puzzles.h .\resource.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /c .\windows.c /Fowindows.obj +windows1.obj: .\windows.c .\puzzles.h .\resource.h + $(CC) $(COMPAT) $(FWHACK) $(CFLAGS) $(XFLAGS) /DCOMBINED /c .\windows.c /Fowindows1.obj + + +clean: tidy + -del *.exe + +tidy: + -del *.obj + -del *.res + -del *.pch + -del *.aps + -del *.ilk + -del *.pdb + -del *.rsp + -del *.dsp + -del *.dsw + -del *.ncb + -del *.opt + -del *.plg + -del *.map + -del *.idb + -del debug.log diff --git a/apps/plugins/puzzles/src/Recipe b/apps/plugins/puzzles/src/Recipe index 3b57ef5e54..fc9bc1b51d 100644 --- a/apps/plugins/puzzles/src/Recipe +++ b/apps/plugins/puzzles/src/Recipe @@ -31,6 +31,10 @@ STANDALONE = nullfe random misc malloc ALL = list +LATIN_DEPS = matching tree234 +LATIN = latin LATIN_DEPS +LATIN_SOLVER = latin[STANDALONE_SOLVER] LATIN_DEPS + # First half of list.c. !begin >list.c /* @@ -61,6 +65,14 @@ const int gamecount = lenof(gamelist); # Unix standalone application for special-purpose obfuscation. obfusc : [U] obfusc STANDALONE +# Test program built from latin.c. +latincheck : [U] latin[STANDALONE_LATIN_TEST] LATIN_DEPS STANDALONE +latincheck : [C] latin[STANDALONE_LATIN_TEST] LATIN_DEPS STANDALONE + +# Test program built from matching.c. +matching : [U] matching[STANDALONE_MATCHING_TEST] tree234 STANDALONE +matching : [C] matching[STANDALONE_MATCHING_TEST] tree234 STANDALONE + puzzles : [G] windows[COMBINED] WINDOWS_COMMON COMMON ALL noicon.res # Mac OS X unified application containing all the puzzles. diff --git a/apps/plugins/puzzles/src/aclocal.m4 b/apps/plugins/puzzles/src/aclocal.m4 new file mode 100644 index 0000000000..04369a2130 --- /dev/null +++ b/apps/plugins/puzzles/src/aclocal.m4 @@ -0,0 +1,1832 @@ +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. + +# This file 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Configure paths for GTK+ +# Owen Taylor 1997-2001 + +dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, +dnl pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GTK_2_0], +[dnl +dnl Get the cflags and libraries from pkg-config +dnl +AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], + , enable_gtktest=yes) + + pkg_config_args=gtk+-2.0 + for module in . $4 + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + PKG_PROG_PKG_CONFIG([0.7]) + + min_gtk_version=ifelse([$1], ,2.0.0,$1) + AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK+ is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.gtktest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +# Configure paths for GTK+ +# Owen Taylor 1997-2001 + +dnl AM_PATH_GTK_3_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, +dnl pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GTK_3_0], +[m4_warn([obsolete], [AM_PATH_GTK_3_0 is deprecated, use PKG_CHECK_MODULES([GTK], [gtk+-3.0]) instead]) +dnl Get the cflags and libraries from pkg-config +dnl +AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], + , enable_gtktest=yes) + min_gtk_version=ifelse([$1], [], [3.0.0], [$1]) + + pkg_config_args="gtk+-3.0 >= $min_gtk_version" + for module in . $4 + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + + if test x$PKG_CONFIG != xno ; then + if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then + : + else + echo "*** pkg-config too old; version 0.7 or better required." + no_gtk=yes + PKG_CONFIG=no + fi + else + no_gtk=yes + fi + + AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK+ is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include +#include +#include + +int +main () +{ + unsigned int major, minor, micro; + + fclose (fopen ("conf.gtktest", "w")); + + if (sscanf("$min_gtk_version", "%u.%u.%u", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-3.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%u.%u.%u) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %u.%u.%u. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occurred. This usually means GTK+ is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +dnl GTK_CHECK_BACKEND(BACKEND-NAME [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Tests for BACKEND-NAME in the GTK targets list +dnl +AC_DEFUN([GTK_CHECK_BACKEND], +[m4_warn([obsolete], [GTK_CHECK_BACKEND is deprecated, use PKG_CHECK_MODULES([GTK_X11], [gtk+-x11-3.0]) or similar instead]) + pkg_config_args=ifelse([$1],,gtk+-3.0, gtk+-$1-3.0) + min_gtk_version=ifelse([$2],,3.0.0,$2) + pkg_config_args="$pkg_config_args >= $min_gtk_version" + + AC_PATH_PROG(PKG_CONFIG, [pkg-config], [AC_MSG_ERROR([No pkg-config found])]) + + if $PKG_CONFIG $pkg_config_args ; then + target_found=yes + else + target_found=no + fi + + if test "x$target_found" = "xno"; then + ifelse([$4],,[AC_MSG_ERROR([Backend $backend not found.])],[$4]) + else + ifelse([$3],,[:],[$3]) + fi +]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +# Copyright (C) 2002-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file 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. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file 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. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file 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. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file 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 macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# +# This file 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. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file 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. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file 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. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file 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. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2017 Free Software Foundation, Inc. +# +# This file 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. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2017 Free Software Foundation, Inc. +# +# This file 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. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/apps/plugins/puzzles/src/compile b/apps/plugins/puzzles/src/compile new file mode 100755 index 0000000000..2ab71e4ea1 --- /dev/null +++ b/apps/plugins/puzzles/src/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2016-01-11.22; # UTC + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/apps/plugins/puzzles/src/config.log b/apps/plugins/puzzles/src/config.log new file mode 100644 index 0000000000..3fbbbbe19c --- /dev/null +++ b/apps/plugins/puzzles/src/config.log @@ -0,0 +1,445 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by puzzles configure 6.66, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = alpha +uname -m = x86_64 +uname -r = 4.11.9-1-ARCH +uname -s = Linux +uname -v = #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /opt/cuda/bin +PATH: /usr/lib/jvm/default/bin +PATH: /opt/kde/bin +PATH: /usr/bin/site_perl +PATH: /usr/bin/vendor_perl +PATH: /usr/bin/core_perl + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1943: checking for a BSD-compatible install +configure:2011: result: /usr/bin/install -c +configure:2022: checking whether build environment is sane +configure:2077: result: yes +configure:2228: checking for a thread-safe mkdir -p +configure:2267: result: /usr/bin/mkdir -p +configure:2274: checking for gawk +configure:2290: found /usr/bin/gawk +configure:2301: result: gawk +configure:2312: checking whether make sets $(MAKE) +configure:2334: result: yes +configure:2363: checking whether make supports nested variables +configure:2380: result: yes +configure:2554: checking for gcc +configure:2570: found /usr/bin/gcc +configure:2581: result: gcc +configure:2810: checking for C compiler version +configure:2819: gcc --version >&5 +gcc (GCC) 7.2.0 +Copyright (C) 2017 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2830: $? = 0 +configure:2819: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper +Target: x86_64-pc-linux-gnu +Configured with: /build/gcc-multilib/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp +Thread model: posix +gcc version 7.2.0 (GCC) +configure:2830: $? = 0 +configure:2819: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:2830: $? = 1 +configure:2819: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:2830: $? = 1 +configure:2850: checking whether the C compiler works +configure:2872: gcc conftest.c >&5 +configure:2876: $? = 0 +configure:2924: result: yes +configure:2927: checking for C compiler default output file name +configure:2929: result: a.out +configure:2935: checking for suffix of executables +configure:2942: gcc -o conftest conftest.c >&5 +configure:2946: $? = 0 +configure:2968: result: +configure:2990: checking whether we are cross compiling +configure:2998: gcc -o conftest conftest.c >&5 +configure:3002: $? = 0 +configure:3009: ./conftest +configure:3013: $? = 0 +configure:3028: result: no +configure:3033: checking for suffix of object files +configure:3055: gcc -c conftest.c >&5 +configure:3059: $? = 0 +configure:3080: result: o +configure:3084: checking whether we are using the GNU C compiler +configure:3103: gcc -c conftest.c >&5 +configure:3103: $? = 0 +configure:3112: result: yes +configure:3121: checking whether gcc accepts -g +configure:3141: gcc -c -g conftest.c >&5 +configure:3141: $? = 0 +configure:3182: result: yes +configure:3199: checking for gcc option to accept ISO C89 +configure:3262: gcc -c -g -O2 conftest.c >&5 +configure:3262: $? = 0 +configure:3275: result: none needed +configure:3300: checking whether gcc understands -c and -o together +configure:3322: gcc -c conftest.c -o conftest2.o +configure:3325: $? = 0 +configure:3322: gcc -c conftest.c -o conftest2.o +configure:3325: $? = 0 +configure:3337: result: yes +configure:3365: checking for style of include used by make +configure:3393: result: GNU +configure:3419: checking dependency style of gcc +configure:3530: result: gcc3 +configure:3591: checking for pkg-config +configure:3609: found /usr/bin/pkg-config +configure:3622: result: /usr/bin/pkg-config +configure:3643: checking for GTK+ - version >= 3.0.0 +configure:3750: gcc -o conftest -g -O2 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 >&5 +configure:3750: $? = 0 +configure:3750: ./conftest +configure:3750: $? = 0 +configure:3764: result: yes (version 3.22.16) +configure:4287: checking for usable gcc warning flags +configure:4330: gcc -c -g -O2 -Wall -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +configure:4330: $? = 0 +configure:4330: gcc -c -g -O2 -Wall -Werror -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +configure:4330: $? = 0 +configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +configure:4330: $? = 0 +configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pedantic -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5 +In file included from /usr/lib/glib-2.0/include/glibconfig.h:9:0, + from /usr/include/glib-2.0/glib/gtypes.h:32, + from /usr/include/glib-2.0/glib/galloca.h:32, + from /usr/include/glib-2.0/glib.h:30, + from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, + from /usr/include/gtk-3.0/gdk/gdk.h:30, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64': +/usr/include/glib-2.0/glib/gtypes.h:423:41: error: ISO C90 does not support 'long long' [-Werror=long-long] + G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64)); + ^ +/usr/include/glib-2.0/glib/gmacros.h:232:104: note: in definition of macro 'G_STATIC_ASSERT' + #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED + ^~~~ +In file included from /usr/include/glib-2.0/glib/galloca.h:32:0, + from /usr/include/glib-2.0/glib.h:30, + from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, + from /usr/include/gtk-3.0/gdk/gdk.h:30, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/glib-2.0/glib/gtypes.h:424:58: error: ISO C90 does not support 'long long' [-Werror=long-long] + return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); } + ^~~~ +/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_MUL_U64': +/usr/include/glib-2.0/glib/gtypes.h:426:58: error: ISO C90 does not support 'long long' [-Werror=long-long] + return !__builtin_umulll_overflow(a, b, (unsigned long long *) dest); } + ^~~~ +In file included from /usr/include/glib-2.0/glib.h:62:0, + from /usr/include/gtk-3.0/gdk/gdkconfig.h:13, + from /usr/include/gtk-3.0/gdk/gdk.h:30, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/glib-2.0/glib/gmessages.h: At top level: +/usr/include/glib-2.0/glib/gmessages.h:136:29: error: comma at end of enumerator list [-Werror=pedantic] + G_LOG_WRITER_UNHANDLED = 0, + ^ +/usr/include/glib-2.0/glib/gmessages.h:322:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_error(...) G_STMT_START { \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:328:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_message(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:331:20: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_critical(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:334:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_warning(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:337:16: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_info(...) g_log (G_LOG_DOMAIN, \ + ^~~ +/usr/include/glib-2.0/glib/gmessages.h:340:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros] + #define g_debug(...) g_log (G_LOG_DOMAIN, \ + ^~~ +In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30:0, + from /usr/include/gtk-3.0/gdk/gdk.h:32, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/gtk-3.0/gdk/gdktypes.h:319:39: error: comma at end of enumerator list [-Werror=pedantic] + GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK, + ^ +/usr/include/gtk-3.0/gdk/gdktypes.h:597:48: error: comma at end of enumerator list [-Werror=pedantic] + GDK_AXIS_FLAG_SLIDER = 1 << GDK_AXIS_SLIDER, + ^ +In file included from /usr/include/gtk-3.0/gdk/gdkevents.h:36:0, + from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31, + from /usr/include/gtk-3.0/gdk/gdkscreen.h:32, + from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31, + from /usr/include/gtk-3.0/gdk/gdk.h:32, + from /usr/include/gtk-3.0/gtk/gtk.h:30, + from conftest.c:24: +/usr/include/gtk-3.0/gdk/gdkdevicetool.h:61:28: error: comma at end of enumerator list [-Werror=pedantic] + GDK_DEVICE_TOOL_TYPE_LENS, + ^ +cc1: all warnings being treated as errors +configure:4330: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "puzzles" +| #define PACKAGE_TARNAME "puzzles" +| #define PACKAGE_VERSION "6.66" +| #define PACKAGE_STRING "puzzles 6.66" +| #define PACKAGE_BUGREPORT "anakin@pobox.com" +| #define PACKAGE_URL "" +| #define PACKAGE "puzzles" +| #define VERSION "6.66" +| /* end confdefs.h. */ +| +| #include +| #include +| #include +| #include +| #include +| #include +| #include +| #include +| +| #include +| #include +| +| #include +| #include +| +| #include +| +| #include +| #include +| #include +| #include +| +| int +| main () +| { +| +| return 0; +| +| ; +| return 0; +| } +configure:4337: result: -Wall -Werror -std=c89 +configure:4385: checking for ranlib +configure:4401: found /usr/bin/ranlib +configure:4412: result: ranlib +configure:4582: checking that generated files are newer than configure +configure:4588: result: done +configure:4611: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by puzzles config.status 6.66, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on alpha + +config.status:782: creating Makefile +config.status:954: executing depfiles commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_PKG_CONFIG_LIBDIR_set= +ac_cv_env_PKG_CONFIG_LIBDIR_value= +ac_cv_env_PKG_CONFIG_PATH_set= +ac_cv_env_PKG_CONFIG_PATH_value= +ac_cv_env_PKG_CONFIG_set= +ac_cv_env_PKG_CONFIG_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_objext=o +ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_AWK=gawk +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_make_make_set=yes +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_make_support_nested_variables=yes +am_cv_prog_cc_c_o=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/franklin/puzzles/missing aclocal-1.15' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AM_BACKSLASH='\' +AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +AM_DEFAULT_VERBOSITY='1' +AM_V='$(V)' +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_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' +ac_ct_CC='gcc' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' +bindir='${exec_prefix}/bin' +build_alias='' +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' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "puzzles" +#define PACKAGE_TARNAME "puzzles" +#define PACKAGE_VERSION "6.66" +#define PACKAGE_STRING "puzzles 6.66" +#define PACKAGE_BUGREPORT "anakin@pobox.com" +#define PACKAGE_URL "" +#define PACKAGE "puzzles" +#define VERSION "6.66" + +configure: exit 0 diff --git a/apps/plugins/puzzles/src/config.status b/apps/plugins/puzzles/src/config.status new file mode 100755 index 0000000000..9f22aa3722 --- /dev/null +++ b/apps/plugins/puzzles/src/config.status @@ -0,0 +1,1059 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by puzzles $as_me 6.66, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to ." + +ac_cs_config="" +ac_cs_version="\ +puzzles config.status 6.66 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/franklin/puzzles' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/sh './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="." + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["RANLIB"]="ranlib" +S["PKG_CONFIG_LIBDIR"]="" +S["PKG_CONFIG_PATH"]="" +S["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" +S["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/includ"\ +"e/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/inclu"\ +"de/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/incl"\ +"ude/glib-2.0 -I/usr/lib/glib-2.0/include" +S["PKG_CONFIG"]="/usr/bin/pkg-config" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="-g -O2 -Wall -Werror -std=c89" +S["CC"]="gcc" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="" +S["install_sh"]="${SHELL} /home/franklin/puzzles/install-sh" +S["MAKEINFO"]="${SHELL} /home/franklin/puzzles/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/franklin/puzzles/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/franklin/puzzles/missing automake-1.15" +S["AUTOCONF"]="${SHELL} /home/franklin/puzzles/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/franklin/puzzles/missing aclocal-1.15" +S["VERSION"]="6.66" +S["PACKAGE"]="puzzles" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["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\\\"" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="anakin@pobox.com" +S["PACKAGE_STRING"]="puzzles 6.66" +S["PACKAGE_VERSION"]="6.66" +S["PACKAGE_TARNAME"]="puzzles" +S["PACKAGE_NAME"]="puzzles" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/sh" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/apps/plugins/puzzles/src/configure b/apps/plugins/puzzles/src/configure new file mode 100755 index 0000000000..432ca273b3 --- /dev/null +++ b/apps/plugins/puzzles/src/configure @@ -0,0 +1,5739 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for puzzles 6.66. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and anakin@pobox.com +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='puzzles' +PACKAGE_TARNAME='puzzles' +PACKAGE_VERSION='6.66' +PACKAGE_STRING='puzzles 6.66' +PACKAGE_BUGREPORT='anakin@pobox.com' +PACKAGE_URL='' + +ac_unique_file="midend.c" +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +RANLIB +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +GTK_LIBS +GTK_CFLAGS +PKG_CONFIG +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +with_gtk +enable_gtktest +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures puzzles 6.66 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/puzzles] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of puzzles 6.66:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-gtktest do not try to compile and run a test GTK+ program + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gtk=VER specify GTK version to use (`2' or `3') + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +puzzles configure 6.66 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by puzzles $as_me 6.66, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +am__api_version='1.15' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='puzzles' + VERSION='6.66' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + + +# Check whether --with-gtk was given. +if test "${with_gtk+set}" = set; then : + withval=$with_gtk; gtk_version_desired="$withval" +else + gtk_version_desired="any" +fi + + +case "$gtk_version_desired" in + 2 | 3 | any) ;; + yes) gtk_version_desired="any" ;; + *) as_fn_error $? "Invalid GTK version specified" "$LINENO" 5 +esac + +gtk=none + +case "$gtk_version_desired:$gtk" in + 3:none | any:none) + + + +# Check whether --enable-gtktest was given. +if test "${enable_gtktest+set}" = set; then : + enableval=$enable_gtktest; +else + enable_gtktest=yes +fi + + min_gtk_version=3.0.0 + + pkg_config_args="gtk+-3.0 >= $min_gtk_version" + for module in . + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + if test x$PKG_CONFIG != xno ; then + if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then + : + else + echo "*** pkg-config too old; version 0.7 or better required." + no_gtk=yes + PKG_CONFIG=no + fi + else + no_gtk=yes + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 +$as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main () +{ + unsigned int major, minor, micro; + + fclose (fopen ("conf.gtktest", "w")); + + if (sscanf("$min_gtk_version", "%u.%u.%u", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-3.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%u.%u.%u) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %u.%u.%u. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + no_gtk=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 +$as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } + gtk=3 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occurred. This usually means GTK+ is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + : + fi + + + rm -f conf.gtktest + + + ;; +esac + +case "$gtk_version_desired:$gtk" in + 2:none | any:none) + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +# Check whether --enable-gtktest was given. +if test "${enable_gtktest+set}" = set; then : + enableval=$enable_gtktest; +else + enable_gtktest=yes +fi + + + pkg_config_args=gtk+-2.0 + for module in . + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.7 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + + min_gtk_version=2.0.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 +$as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.gtktest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + no_gtk=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 +$as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } + gtk=2 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + : + fi + + + rm -f conf.gtktest + + + ;; +esac + +if test "$gtk" = "none"; then + as_fn_error $? "cannot build without GTK 2 or GTK 3" "$LINENO" 5 +fi + +if test "x$GCC" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable gcc warning flags" >&5 +$as_echo_n "checking for usable gcc warning flags... " >&6; } + gccwarningflags= + for flag in -Wall -Werror -std=c89 -pedantic; do + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS$gccwarningflags $flag $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #include + #include + #include + #include + #include + + #include + #include + + #include + #include + + #include + + #include + #include + #include + #include + +int +main () +{ + + return 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gccwarningflags="$gccwarningflags $flag" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gccwarningflags" >&5 +$as_echo "$gccwarningflags" >&6; } + CFLAGS="$CFLAGS$gccwarningflags" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by puzzles $as_me 6.66, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +puzzles config.status 6.66 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/apps/plugins/puzzles/src/depcomp b/apps/plugins/puzzles/src/depcomp new file mode 100755 index 0000000000..b39f98f9ae --- /dev/null +++ b/apps/plugins/puzzles/src/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2016-01-11.22; # UTC + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/apps/plugins/puzzles/src/devel.but b/apps/plugins/puzzles/src/devel.but index 131678c17b..f30e8eecda 100644 --- a/apps/plugins/puzzles/src/devel.but +++ b/apps/plugins/puzzles/src/devel.but @@ -1560,6 +1560,41 @@ the game was first completed (by setting a flag in freeze the timer thereafter so that the user can undo back through their solution process without altering their time. +\S{backend-request-keys} \cw{request_keys()} + +\c key_label *(*request_keys)(const game_params *params, int *nkeys); + +This function returns a dynamically allocated array of \cw{key_label} +items containing the buttons the back end deems absolutely +\e{necessary} for gameplay, not an exhaustive list of every button the +back end could accept. For example, Keen only returns the digits up to +the game size and the backspace character, \cw{\\b}, even though it +\e{could} accept \cw{M}, as only these buttons are actually needed to +play the game. Each \cw{key_label} item contains the following fields: + +\c struct key_label { +\c const char *label; /* label for frontend use */ +\c int button; /* button to pass to midend */ +\c } key_label; + +The \cw{label} field of this structure can (and often will) be set by +the backend to \cw{NULL}, in which case the midend will instead call +\c{button2label()} (\k{utils-button2label}) and fill in a generic +label. The \cw{button} field is the associated code that can be passed +to the midend when the frontend deems appropriate. + +The backend should set \cw{*nkeys} to the number of elements in the +returned array. + +The field for this function point in the \cw{game} structure might be +set to \cw{NULL} (and indeed it is for the majority of the games) to +indicate that no additional buttons (apart from the cursor keys) are +required to play the game. + +This function should not be called directly by frontends. Instead, +frontends should use \cw{midend_request_keys()} +(\k{midend-request-keys}). + \S{backend-flags} \c{flags} \c int flags; @@ -2998,6 +3033,18 @@ 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. +\H{midend-request-keys} \cw{midend_request_keys()} + +\c key_label *midend_request_keys(midend *me, int *nkeys); + +This function behaves similarly to the backend's \cw{request_keys()} +function (\k{backend-request-keys}). If the backend does not provide +\cw{request_keys()}, this function will return \cw{NULL} and set +\cw{*nkeys} to zero. Otherwise, this function will fill in the generic +labels (i.e. the \cw{key_label} items that have their \cw{label} +fields set to \cw{NULL}) by using \cw{button2label()} +(\k{utils-button2label}). + \H{midend-colours} \cw{midend_colours()} \c float *midend_colours(midend *me, int *ncolours); @@ -4215,6 +4262,24 @@ Thus, \cw{ret[background*3]} to \cw{ret[background*3+2]} will be set to RGB values defining a sensible background colour, and similary \c{highlight} and \c{lowlight} will be set to sensible colours. +\S{utils-button2label} \cw{button2label()} + +\c char *button2label(int button); + +This function generates a descriptive text label for \cw{button}, +which should be a button code that can be passed to the midend. For +example, calling this function with \cw{CURSOR_UP} will result in the +string \cw{"Up"}. This function should only be called when the +\cw{key_label} item returned by a backend's \cw{request_keys()} +(\k{backend-request-keys}) function has its \cw{label} field set to +\cw{NULL}; in this case, the corresponding \cw{button} field can be +passed to this function to obtain an appropriate label. If, however, +the field is not \cw{NULL}, this function should not be called with +the corresponding \cw{button} field. + +The returned string is dynamically allocated and should be +\cw{sfree}'d by the caller. + \C{writing} How to write a new puzzle This chapter gives a guide to how to actually write a new puzzle: diff --git a/apps/plugins/puzzles/src/filling.c b/apps/plugins/puzzles/src/filling.c index c278adacff..0e8972883d 100644 --- a/apps/plugins/puzzles/src/filling.c +++ b/apps/plugins/puzzles/src/filling.c @@ -1287,9 +1287,22 @@ static const char *validate_desc(const game_params *params, const char *desc) return (area < sz) ? "Not enough data to fill grid" : NULL; } -static char *game_request_keys(const game_params *params) +static key_label *game_request_keys(const game_params *params, int *nkeys) { - return dupstr("1234567890\b"); + key_label *keys = snewn(11, key_label); + *nkeys = 11; + + int i; + + for(i = 0; i < 10; ++i) + { + keys[i].button = '0' + i; + keys[i].label = NULL; + } + keys[10].button = '\b'; + keys[10].label = NULL; + + return keys; } static game_state *new_game(midend *me, const game_params *params, diff --git a/apps/plugins/puzzles/src/gamedesc.txt b/apps/plugins/puzzles/src/gamedesc.txt new file mode 100644 index 0000000000..db0d9cbd01 --- /dev/null +++ b/apps/plugins/puzzles/src/gamedesc.txt @@ -0,0 +1,39 @@ +blackbox:blackbox.exe:Black Box:Ball-finding puzzle:Find the hidden balls in the box by bouncing laser beams off them. +bridges:bridges.exe:Bridges:Bridge-placing puzzle:Connect all the islands with a network of bridges. +cube:cube.exe:Cube:Rolling cube puzzle:Pick up all the blue squares by rolling the cube over them. +dominosa:dominosa.exe:Dominosa:Domino tiling puzzle:Tile the rectangle with a full set of dominoes. +fifteen:fifteen.exe:Fifteen:Sliding block puzzle:Slide the tiles around to arrange them into order. +filling:filling.exe:Filling:Polyomino puzzle:Mark every square with the area of its containing region. +flip:flip.exe:Flip:Tile inversion puzzle:Flip groups of squares to light them all up at once. +flood:flood.exe:Flood:Flood-filling puzzle:Turn the grid the same colour in as few flood fills as possible. +galaxies:galaxies.exe:Galaxies:Symmetric polyomino puzzle:Divide the grid into rotationally symmetric regions each centred on a dot. +guess:guess.exe:Guess:Combination-guessing puzzle:Guess the hidden combination of colours. +inertia:inertia.exe:Inertia:Gem-collecting puzzle:Collect all the gems without running into any of the mines. +keen:keen.exe:Keen:Arithmetic Latin square puzzle:Complete the latin square in accordance with the arithmetic clues. +lightup:lightup.exe:Light Up:Light-bulb placing puzzle:Place bulbs to light up all the squares. +loopy:loopy.exe:Loopy:Loop-drawing puzzle:Draw a single closed loop, given clues about number of adjacent edges. +magnets:magnets.exe:Magnets:Magnet-placing puzzle:Place magnets to satisfy the clues and avoid like poles touching. +map:map.exe:Map:Map-colouring puzzle:Colour the map so that adjacent regions are never the same colour. +mines:mines.exe:Mines:Mine-finding puzzle:Find all the mines without treading on any of them. +net:netgame.exe:Net:Network jigsaw puzzle:Rotate each tile to reassemble the network. +netslide:netslide.exe:Netslide:Toroidal sliding network puzzle:Slide a row at a time to reassemble the network. +palisade:palisade.exe:Palisade:Grid-division puzzle:Divide the grid into equal-sized areas in accordance with the clues. +pattern:pattern.exe:Pattern:Pattern puzzle:Fill in the pattern in the grid, given only the lengths of runs of black squares. +pearl:pearl.exe:Pearl:Loop-drawing puzzle:Draw a single closed loop, given clues about corner and straight squares. +pegs:pegs.exe:Pegs:Peg solitaire puzzle:Jump pegs over each other to remove all but one. +range:range.exe:Range:Visible-distance puzzle:Place black squares to limit the visible distance from each numbered cell. +rect:rect.exe:Rectangles:Rectangles puzzle:Divide the grid into rectangles with areas equal to the numbers. +samegame:samegame.exe:Same Game:Block-clearing puzzle:Clear the grid by removing touching groups of the same colour squares. +signpost:signpost.exe:Signpost:Square-connecting puzzle:Connect the squares into a path following the arrows. +singles:singles.exe:Singles:Number-removing puzzle:Black out the right set of duplicate numbers. +sixteen:sixteen.exe:Sixteen:Toroidal sliding block puzzle:Slide a row at a time to arrange the tiles into order. +slant:slant.exe:Slant:Maze-drawing puzzle:Draw a maze of slanting lines that matches the clues. +solo:solo.exe:Solo:Number placement puzzle:Fill in the grid so that each row, column and square block contains one of every digit. +tents:tents.exe:Tents:Tent-placing puzzle:Place a tent next to each tree. +towers:towers.exe:Towers:Tower-placing Latin square puzzle:Complete the latin square of towers in accordance with the clues. +tracks:tracks.exe:Tracks:Path-finding railway track puzzle:Fill in the railway track according to the clues. +twiddle:twiddle.exe:Twiddle:Rotational sliding block puzzle:Rotate the tiles around themselves to arrange them into order. +undead:undead.exe:Undead:Monster-placing puzzle:Place ghosts, vampires and zombies so that the right numbers of them can be seen in mirrors. +unequal:unequal.exe:Unequal:Latin square puzzle:Complete the latin square in accordance with the > signs. +unruly:unruly.exe:Unruly:Black and white grid puzzle:Fill in the black and white grid to avoid runs of three. +untangle:untangle.exe:Untangle:Planar graph layout puzzle:Reposition the points so that the lines do not cross. diff --git a/apps/plugins/puzzles/src/gtk.c b/apps/plugins/puzzles/src/gtk.c index 3078e517ba..7deb753744 100644 --- a/apps/plugins/puzzles/src/gtk.c +++ b/apps/plugins/puzzles/src/gtk.c @@ -2886,25 +2886,6 @@ static frontend *new_window(char *arg, int argtype, char **error) return fe; } -char *fgetline(FILE *fp) -{ - char *ret = snewn(512, char); - int size = 512, len = 0; - while (fgets(ret + len, size - len, fp)) { - len += strlen(ret + len); - if (ret[len-1] == '\n') - break; /* got a newline, we're done */ - size = len + 512; - ret = sresize(ret, size, char); - } - if (len == 0) { /* first fgets returned NULL */ - sfree(ret); - return NULL; - } - ret[len] = '\0'; - return ret; -} - static void list_presets_from_menu(struct preset_menu *menu) { int i; diff --git a/apps/plugins/puzzles/src/html/galaxies.html b/apps/plugins/puzzles/src/html/galaxies.html index 8041a95cee..32e4e1d14c 100644 --- a/apps/plugins/puzzles/src/html/galaxies.html +++ b/apps/plugins/puzzles/src/html/galaxies.html @@ -1,8 +1,12 @@ Galaxies

-Draw lines along grid edges so as to divide the grid up into -regions. Every region should have two-way rotational symmetry, and -should contain exactly one dot which is in its centre. +Draw lines along grid edges so as to divide the grid up into connected +regions of squares. +

+Every region should have two-way rotational symmetry, should contain +exactly one dot which is in its centre, and should contain no lines +separating two of its own squares from each other. A region satisfying +all of these requirements will be automatically highlighted.

Click on a grid edge to add or remove a line. Right-click on a dot and drag the mouse to place an arrow in a grid square pointing to diff --git a/apps/plugins/puzzles/src/icons/Makefile b/apps/plugins/puzzles/src/icons/Makefile index 00dae1f841..646580672c 100644 --- a/apps/plugins/puzzles/src/icons/Makefile +++ b/apps/plugins/puzzles/src/icons/Makefile @@ -11,6 +11,9 @@ WEB = $(patsubst %,%-web.png,$(PUZZLES)) IBASE = $(patsubst %,%-ibase.png,$(PUZZLES)) IBASE4 = $(patsubst %,%-ibase4.png,$(PUZZLES)) +P96D24 = $(patsubst %,%-96d24.png,$(PUZZLES)) +P96D8 = $(patsubst %,%-96d8.png,$(PUZZLES)) +P96D4 = $(patsubst %,%-96d4.png,$(PUZZLES)) P48D24 = $(patsubst %,%-48d24.png,$(PUZZLES)) P48D8 = $(patsubst %,%-48d8.png,$(PUZZLES)) P48D4 = $(patsubst %,%-48d4.png,$(PUZZLES)) @@ -33,7 +36,7 @@ CSP = -set colorspace RGB base: $(BASE) web: $(WEB) -pngicons: $(P48D24) $(P32D24) $(P16D24) +pngicons: $(P96D24) $(P48D24) $(P32D24) $(P16D24) winicons: $(ICONS) $(RC) gtkicons: $(CICONS) all: base web pngicons winicons gtkicons @@ -100,7 +103,9 @@ $(IBASE): %-ibase.png: %-base.png $(IBASE4): %-ibase4.png: %-ibase.png convert -colors 16 +dither $(CSP) -map $(PIC)win16pal.xpm $^ $@ -# Build the 24-bit PNGs for the icons, at three sizes. +# Build the 24-bit PNGs for the icons, at four sizes. +$(P96D24): %-96d24.png: %-ibase.png + $(PIC)square.pl 96 4 $^ $@ $(P48D24): %-48d24.png: %-ibase.png $(PIC)square.pl 48 4 $^ $@ $(P32D24): %-32d24.png: %-ibase.png @@ -110,7 +115,7 @@ $(P16D24): %-16d24.png: %-ibase.png # The 8-bit icon PNGs are just custom-paletted quantisations of the # 24-bit ones. -$(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png +$(P96D8) $(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png convert -colors 256 $^ $@ # But the depth-4 images work better if we re-shrink from the @@ -118,6 +123,10 @@ $(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png # again afterwards. (They're still not very good, but my hope is # that on most modern Windows machines this won't matter too # much...) +$(P96D4): %-96d4.png: %-ibase4.png + $(PIC)square.pl 96 1 $^ $@-tmp2.png + convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@ + rm -f $@-tmp2.png $(P48D4): %-48d4.png: %-ibase4.png $(PIC)square.pl 48 1 $^ $@-tmp2.png convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@ @@ -146,7 +155,7 @@ $(RC): %.rc: echo '200 ICON "$*.ico"' >> $@ # Build the GTK icon source files. -$(CICONS): %-icon.c: %-16d24.png %-32d24.png %-48d24.png +$(CICONS): %-icon.c: %-16d24.png %-32d24.png %-48d24.png %-96d24.png $(PIC)cicon.pl $^ > $@ clean: diff --git a/apps/plugins/puzzles/src/install-sh b/apps/plugins/puzzles/src/install-sh new file mode 100755 index 0000000000..0360b79e7d --- /dev/null +++ b/apps/plugins/puzzles/src/install-sh @@ -0,0 +1,501 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2016-01-11.22; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/apps/plugins/puzzles/src/keen.R b/apps/plugins/puzzles/src/keen.R index 77609bc7fa..46bd09a33d 100644 --- a/apps/plugins/puzzles/src/keen.R +++ b/apps/plugins/puzzles/src/keen.R @@ -1,14 +1,14 @@ # -*- makefile -*- -KEEN_LATIN_EXTRA = tree234 maxflow dsf -KEEN_EXTRA = latin KEEN_LATIN_EXTRA +KEEN_EXTRA = dsf LATIN +KEEN_EXTRA_SOLVER = dsf LATIN_SOLVER keen : [X] GTK COMMON keen KEEN_EXTRA keen-icon|no-icon keen : [G] WINDOWS COMMON keen KEEN_EXTRA keen.res|noicon.res -keensolver : [U] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE -keensolver : [C] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE +keensolver : [U] keen[STANDALONE_SOLVER] KEEN_EXTRA_SOLVER STANDALONE +keensolver : [C] keen[STANDALONE_SOLVER] KEEN_EXTRA_SOLVER STANDALONE ALL += keen[COMBINED] KEEN_EXTRA diff --git a/apps/plugins/puzzles/src/keen.c b/apps/plugins/puzzles/src/keen.c index f3142a0c00..be77b183ba 100644 --- a/apps/plugins/puzzles/src/keen.c +++ b/apps/plugins/puzzles/src/keen.c @@ -91,7 +91,7 @@ static game_params *default_params(void) return ret; } -const static struct game_params keen_presets[] = { +static const struct game_params keen_presets[] = { { 4, DIFF_EASY, FALSE }, { 5, DIFF_EASY, FALSE }, { 5, DIFF_EASY, TRUE }, @@ -1251,17 +1251,24 @@ static const char *validate_desc(const game_params *params, const char *desc) return NULL; } -static char *game_request_keys(const game_params *params) +static key_label *game_request_keys(const game_params *params, int *nkeys) { int i; int w = params->w; - char *keys = smalloc(w+2); + + key_label *keys = snewn(w+1, key_label); + *nkeys = w + 1; + for (i = 0; i < w; i++) { - if (i<9) keys[i] = '1' + i; - else keys[i] = 'a' + i - 9; + if (i<9) keys[i].button = '1' + i; + else keys[i].button = 'a' + i - 9; + + keys[i].label = NULL; } - keys[w] = '\b'; - keys[w+1] = '\0'; + keys[w].button = '\b'; + keys[w].label = NULL; + + return keys; } diff --git a/apps/plugins/puzzles/src/latin.c b/apps/plugins/puzzles/src/latin.c index 716064cab1..710be2c5ca 100644 --- a/apps/plugins/puzzles/src/latin.c +++ b/apps/plugins/puzzles/src/latin.c @@ -4,7 +4,7 @@ #include "puzzles.h" #include "tree234.h" -#include "maxflow.h" +#include "matching.h" #ifdef STANDALONE_LATIN_TEST #define STANDALONE_SOLVER @@ -1111,11 +1111,11 @@ void latin_debug(digit *sq, int o) digit *latin_generate(int o, random_state *rs) { digit *sq; - int *edges, *backedges, *capacity, *flow; + int *adjdata, *adjsizes, *matching; + int **adjlists; void *scratch; - int ne, scratchsize; int i, j, k; - digit *row, *col, *numinv, *num; + digit *row; /* * To efficiently generate a latin square in such a way that @@ -1128,123 +1128,76 @@ digit *latin_generate(int o, random_state *rs) * the theorem guarantees that we will never have to backtrack. * * To find a viable row at each stage, we can make use of the - * support functions in maxflow.c. + * support functions in matching.c. */ sq = snewn(o*o, digit); /* - * In case this method of generation introduces a really subtle - * top-to-bottom directional bias, we'll generate the rows in - * random order. + * matching.c will take care of randomising the generation of each + * row of the square, but in case this entire method of generation + * introduces a really subtle top-to-bottom directional bias, + * we'll also generate the rows themselves in random order. */ row = snewn(o, digit); - col = snewn(o, digit); - numinv = snewn(o, digit); - num = snewn(o, digit); for (i = 0; i < o; i++) row[i] = i; shuffle(row, i, sizeof(*row), rs); /* - * Set up the infrastructure for the maxflow algorithm. + * Set up the infrastructure for the matching subroutine. */ - scratchsize = maxflow_scratch_size(o * 2 + 2); - scratch = smalloc(scratchsize); - backedges = snewn(o*o + 2*o, int); - edges = snewn((o*o + 2*o) * 2, int); - capacity = snewn(o*o + 2*o, int); - flow = snewn(o*o + 2*o, int); - /* Set up the edge array, and the initial capacities. */ - ne = 0; - for (i = 0; i < o; i++) { - /* Each LHS vertex is connected to all RHS vertices. */ - for (j = 0; j < o; j++) { - edges[ne*2] = i; - edges[ne*2+1] = j+o; - /* capacity for this edge is set later on */ - ne++; - } - } - for (i = 0; i < o; i++) { - /* Each RHS vertex is connected to the distinguished sink vertex. */ - edges[ne*2] = i+o; - edges[ne*2+1] = o*2+1; - capacity[ne] = 1; - ne++; - } - for (i = 0; i < o; i++) { - /* And the distinguished source vertex connects to each LHS vertex. */ - edges[ne*2] = o*2; - edges[ne*2+1] = i; - capacity[ne] = 1; - ne++; - } - assert(ne == o*o + 2*o); - /* Now set up backedges. */ - maxflow_setup_backedges(ne, edges, backedges); - + scratch = smalloc(matching_scratch_size(o, o)); + adjdata = snewn(o*o, int); + adjlists = snewn(o, int *); + adjsizes = snewn(o, int); + matching = snewn(o, int); + /* * Now generate each row of the latin square. */ for (i = 0; i < o; i++) { - /* - * To prevent maxflow from behaving deterministically, we - * separately permute the columns and the digits for the - * purposes of the algorithm, differently for every row. - */ - for (j = 0; j < o; j++) - col[j] = num[j] = j; - shuffle(col, j, sizeof(*col), rs); - shuffle(num, j, sizeof(*num), rs); - /* We need the num permutation in both forward and inverse forms. */ - for (j = 0; j < o; j++) - numinv[num[j]] = j; - - /* - * Set up the capacities for the maxflow run, by examining - * the existing latin square. - */ - for (j = 0; j < o*o; j++) - capacity[j] = 1; - for (j = 0; j < i; j++) - for (k = 0; k < o; k++) { - int n = num[sq[row[j]*o + col[k]] - 1]; - capacity[k*o+n] = 0; - } + /* + * Make adjacency lists for a bipartite graph joining each + * column to all the numbers not yet placed in that column. + */ + for (j = 0; j < o; j++) { + int *p, *adj = adjdata + j*o; + for (k = 0; k < o; k++) + adj[k] = 1; + for (k = 0; k < i; k++) + adj[sq[row[k]*o + j] - 1] = 0; + adjlists[j] = p = adj; + for (k = 0; k < o; k++) + if (adj[k]) + *p++ = k; + adjsizes[j] = p - adjlists[j]; + *p = -1; + } /* - * Run maxflow. + * Run the matching algorithm. */ - j = maxflow_with_scratch(scratch, o*2+2, 2*o, 2*o+1, ne, - edges, backedges, capacity, flow, NULL); + j = matching_with_scratch(scratch, o, o, adjlists, adjsizes, + rs, matching, NULL); assert(j == o); /* by the above theorem, this must have succeeded */ /* - * And examine the flow array to pick out the new row of - * the latin square. + * And use the output to set up the new row of the latin + * square. */ - for (j = 0; j < o; j++) { - for (k = 0; k < o; k++) { - if (flow[j*o+k]) - break; - } - assert(k < o); - sq[row[i]*o + col[j]] = numinv[k] + 1; - } + for (j = 0; j < o; j++) + sq[row[i]*o + j] = matching[j] + 1; } /* * Done. Free our internal workspaces... */ - sfree(flow); - sfree(capacity); - sfree(edges); - sfree(backedges); + sfree(matching); + sfree(adjlists); + sfree(adjsizes); + sfree(adjdata); sfree(scratch); - sfree(numinv); - sfree(num); - sfree(col); sfree(row); /* diff --git a/apps/plugins/puzzles/src/list.c b/apps/plugins/puzzles/src/list.c new file mode 100644 index 0000000000..ec019c31b2 --- /dev/null +++ b/apps/plugins/puzzles/src/list.c @@ -0,0 +1,55 @@ +/* + * list.c: List of pointers to puzzle structures, for monolithic + * platforms. + * + * This file is automatically generated by mkfiles.pl. Do not edit + * it directly, or the changes will be lost next time mkfiles.pl runs. + * Instead, edit Recipe and/or its *.R subfiles. + */ +#include "puzzles.h" +#define GAMELIST(A) \ + A(blackbox) \ + A(bridges) \ + A(cube) \ + A(dominosa) \ + A(fifteen) \ + A(filling) \ + A(flip) \ + A(flood) \ + A(galaxies) \ + A(guess) \ + A(inertia) \ + A(keen) \ + A(lightup) \ + A(loopy) \ + A(magnets) \ + A(map) \ + A(mines) \ + A(net) \ + A(netslide) \ + A(palisade) \ + A(pattern) \ + A(pearl) \ + A(pegs) \ + A(range) \ + A(rect) \ + A(samegame) \ + A(signpost) \ + A(singles) \ + A(sixteen) \ + A(slant) \ + A(solo) \ + A(tents) \ + A(towers) \ + A(tracks) \ + A(twiddle) \ + A(undead) \ + A(unequal) \ + A(unruly) \ + A(untangle) \ + +#define DECL(x) extern const game x; +#define REF(x) &x, +GAMELIST(DECL) +const game *gamelist[] = { GAMELIST(REF) }; +const int gamecount = lenof(gamelist); diff --git a/apps/plugins/puzzles/src/matching.c b/apps/plugins/puzzles/src/matching.c new file mode 100644 index 0000000000..89f67ee83e --- /dev/null +++ b/apps/plugins/puzzles/src/matching.c @@ -0,0 +1,753 @@ +/* + * Implementation of matching.h. + */ + +#include +#include +#include + +#include "puzzles.h" +#include "matching.h" + +struct scratch { + /* + * Current contents of the in-progress matching. LtoR is an array + * of nl integers, each of which holds a value in {0,1,...,nr-1}, + * or -1 for no current assignment. RtoL is exactly the reverse. + * + * Invariant: LtoR[i] is non-empty and equal to j if and only if + * RtoL[j] is non-empty and equal to i. + */ + int *LtoR, *RtoL; + + /* + * Arrays of nl and nr integer respectively, giving the layer + * assigned to each integer in the breadth-first search step of + * the algorithm. + */ + int *Llayer, *Rlayer; + + /* + * Arrays of nl and nr integers respectively, used to hold the + * to-do queues in the breadth-first search. + */ + int *Lqueue, *Rqueue; + + /* + * An augmenting path of vertices, alternating between L vertices + * (in the even-numbered positions, starting at 0) and R (in the + * odd positions). Must be long enough to hold any such path that + * never repeats a vertex, i.e. must be at least 2*min(nl,nr) in + * size. + */ + int *augpath; + + /* + * Track the progress of the depth-first search at each + * even-numbered layer. Has one element for each even-numbered + * position in augpath. + */ + int *dfsstate; + + /* + * Store a random permutation of the L vertex indices, if we're + * randomising the dfs phase. + */ + int *Lorder; +}; + +size_t matching_scratch_size(int nl, int nr) +{ + size_t n; + int nmin = (nl < nr ? nl : nr); + + n = (sizeof(struct scratch) + sizeof(int)-1)/sizeof(int); + n += nl; /* LtoR */ + n += nr; /* RtoL */ + n += nl; /* Llayer */ + n += nr; /* Rlayer */ + n += nl; /* Lqueue */ + n += nr; /* Rqueue */ + n += 2*nmin; /* augpath */ + n += nmin; /* dfsstate */ + n += nl; /* Lorder */ + return n * sizeof(int); +} + +int matching_with_scratch(void *scratchv, + int nl, int nr, int **adjlists, int *adjsizes, + random_state *rs, int *outl, int *outr) +{ + struct scratch *s = (struct scratch *)scratchv; + int L, R, i, j; + + /* + * Set up the various array pointers in the scratch space. + */ + { + int *p = scratchv; + int nmin = (nl < nr ? nl : nr); + + p += (sizeof(struct scratch) + sizeof(int)-1)/sizeof(int); + s->LtoR = p; p += nl; + s->RtoL = p; p += nr; + s->Llayer = p; p += nl; + s->Rlayer = p; p += nr; + s->Lqueue = p; p += nl; + s->Rqueue = p; p += nr; + s->augpath = p; p += 2*nmin; + s->dfsstate = p; p += nmin; + s->Lorder = p; p += nl; + } + + /* + * Set up the initial matching, which is empty. + */ + for (L = 0; L < nl; L++) + s->LtoR[L] = -1; + for (R = 0; R < nr; R++) + s->RtoL[R] = -1; + + while (1) { + /* + * Breadth-first search starting from the unassigned left + * vertices, traversing edges from left to right only if they + * are _not_ part of the matching, and from right to left only + * if they _are_. We assign a 'layer number' to all vertices + * visited by this search, with the starting vertices being + * layer 0 and every successor of a layer-n node being layer + * n+1. + */ + int Lqs, Rqs, layer, target_layer; + + for (L = 0; L < nl; L++) + s->Llayer[L] = -1; + for (R = 0; R < nr; R++) + s->Rlayer[R] = -1; + + Lqs = 0; + for (L = 0; L < nl; L++) { + if (s->LtoR[L] == -1) { + s->Llayer[L] = 0; + s->Lqueue[Lqs++] = L; + } + } + + layer = 0; + while (1) { + int found_free_R_vertex = FALSE; + + Rqs = 0; + for (i = 0; i < Lqs; i++) { + L = s->Lqueue[i]; + assert(s->Llayer[L] == layer); + + for (j = 0; j < adjsizes[L]; j++) { + R = adjlists[L][j]; + if (R != s->LtoR[L] && s->Rlayer[R] == -1) { + s->Rlayer[R] = layer+1; + s->Rqueue[Rqs++] = R; + if (s->RtoL[R] == -1) + found_free_R_vertex = TRUE; + } + } + } + layer++; + + if (found_free_R_vertex) + break; + + if (Rqs == 0) + goto done; + + Lqs = 0; + for (j = 0; j < Rqs; j++) { + R = s->Rqueue[j]; + assert(s->Rlayer[R] == layer); + if ((L = s->RtoL[R]) != -1 && s->Llayer[L] == -1) { + s->Llayer[L] = layer+1; + s->Lqueue[Lqs++] = L; + } + } + layer++; + + if (Lqs == 0) + goto done; + } + + target_layer = layer; + + /* + * Vertices in the target layer are only interesting if + * they're actually unassigned. Blanking out the others here + * will save us a special case in the dfs loop below. + */ + for (R = 0; R < nr; R++) + if (s->Rlayer[R] == target_layer && s->RtoL[R] != -1) + s->Rlayer[R] = -1; + + /* + * Choose an ordering in which to try the L vertices at the + * start of the next pass. + */ + for (L = 0; L < nl; L++) + s->Lorder[L] = L; + if (rs) + shuffle(s->Lorder, nl, sizeof(*s->Lorder), rs); + + /* + * Now depth-first search through that layered set of vertices + * to find as many (vertex-)disjoint augmenting paths as we + * can, and for each one we find, augment the matching. + */ + s->dfsstate[0] = 0; + i = 0; + while (1) { + /* + * Find the next vertex to go on the end of augpath. + */ + if (i == 0) { + /* In this special case, we're just looking for L + * vertices that are not yet assigned. */ + if (s->dfsstate[i] == nl) + break; /* entire DFS has finished */ + + L = s->Lorder[s->dfsstate[i]++]; + + if (s->Llayer[L] != 2*i) + continue; /* skip this vertex */ + } else { + /* In the more usual case, we're going through the + * adjacency list for the previous L vertex. */ + L = s->augpath[2*i-2]; + j = s->dfsstate[i]++; + if (j == adjsizes[L]) { + /* Run out of neighbours of the previous vertex. */ + i--; + continue; + } + if (rs && adjsizes[L] - j > 1) { + int which = j + random_upto(rs, adjsizes[L] - j); + int tmp = adjlists[L][which]; + adjlists[L][which] = adjlists[L][j]; + adjlists[L][j] = tmp; + } + R = adjlists[L][j]; + + if (s->Rlayer[R] != 2*i-1) + continue; /* skip this vertex */ + + s->augpath[2*i-1] = R; + s->Rlayer[R] = -1; /* mark vertex as visited */ + + if (2*i-1 == target_layer) { + /* + * We've found an augmenting path, in the form of + * an even-sized list of vertices alternating + * L,R,...,L,R, with the initial L and final R + * vertex free and otherwise each R currently + * connected to the next L. Adjust so that each L + * connects to the next R, increasing the edge + * count in the matching by 1. + */ + for (j = 0; j < 2*i; j += 2) { + s->LtoR[s->augpath[j]] = s->augpath[j+1]; + s->RtoL[s->augpath[j+1]] = s->augpath[j]; + } + + /* + * Having dealt with that path, and already marked + * all its vertices as visited, rewind right to + * the start and resume our DFS from a new + * starting L-vertex. + */ + i = 0; + continue; + } + + L = s->RtoL[R]; + if (s->Llayer[L] != 2*i) + continue; /* skip this vertex */ + } + + s->augpath[2*i] = L; + s->Llayer[L] = -1; /* mark vertex as visited */ + i++; + s->dfsstate[i] = 0; + } + } + + done: + /* + * Fill in the output arrays. + */ + if (outl) { + for (i = 0; i < nl; i++) + outl[i] = s->LtoR[i]; + } + if (outr) { + for (j = 0; j < nr; j++) + outr[j] = s->RtoL[j]; + } + + /* + * Return the number of matching edges. + */ + for (i = j = 0; i < nl; i++) + if (s->LtoR[i] != -1) + j++; + return j; +} + +int matching(int nl, int nr, int **adjlists, int *adjsizes, + random_state *rs, int *outl, int *outr) +{ + void *scratch; + int size; + int ret; + + size = matching_scratch_size(nl, nr); + scratch = malloc(size); + if (!scratch) + return -1; + + ret = matching_with_scratch(scratch, nl, nr, adjlists, adjsizes, + rs, outl, outr); + + free(scratch); + + return ret; +} + +#ifdef STANDALONE_MATCHING_TEST + +/* + * Diagnostic routine used in testing this algorithm. It is passed a + * pointer to a piece of scratch space that's just been used by + * matching_with_scratch, and extracts from it a labelling of the + * input graph that acts as a 'witness' to the maximality of the + * returned matching. + * + * The output parameter 'witness' should be an array of (nl+nr) + * integers, indexed such that witness[L] corresponds to an L-vertex (for + * L=0,1,...,nl-1) and witness[nl+R] corresponds to an R-vertex (for + * R=0,1,...,nr-1). On return, this array will assign each vertex a + * label which is either 0 or 1, and the following properties will + * hold: + * + * + all vertices not paired up by the matching are type L0 or R1 + * + every L0->R1 edge is used by the matching + * + no L1->R0 edge is used by the matching. + * + * The mere existence of such a labelling is enough to prove the + * maximality of the matching, because if there is any larger matching + * then its symmetric difference with this one must include at least + * one 'augmenting path', which starts at a free L-vertex and ends at + * a free R-vertex, traversing only unused L->R edges and only used + * R->L edges. But that would mean it starts at an L0, ends at an R1, + * and never follows an edge that can get from an 0 to a 1. + */ +static void matching_witness(void *scratchv, int nl, int nr, int *witness) +{ + struct scratch *s = (struct scratch *)scratchv; + int i, j; + + for (i = 0; i < nl; i++) + witness[i] = s->Llayer[i] == -1; + for (j = 0; j < nr; j++) + witness[nl + j] = s->Rlayer[j] == -1; +} + +/* + * Standalone tool to run the matching algorithm. + */ + +#include +#include +#include + +#include "tree234.h" + +int nl, nr, count; +int **adjlists, *adjsizes; +int *adjdata, *outl, *outr, *witness; +void *scratch; +random_state *rs; + +void allocate(int nl_, int nr_, int maxedges) +{ + nl = nl_; + nr = nr_; + adjdata = snewn(maxedges, int); + adjlists = snewn(nl, int *); + adjsizes = snewn(nl, int); + outl = snewn(nl, int); + outr = snewn(nr, int); + witness = snewn(nl+nr, int); + scratch = smalloc(matching_scratch_size(nl, nr)); +} + +void deallocate(void) +{ + sfree(adjlists); + sfree(adjsizes); + sfree(adjdata); + sfree(outl); + sfree(outr); + sfree(witness); + sfree(scratch); +} + +void find_and_check_matching(void) +{ + int i, j, k; + + count = matching_with_scratch(scratch, nl, nr, adjlists, adjsizes, + rs, outl, outr); + matching_witness(scratch, nl, nr, witness); + + for (i = j = 0; i < nl; i++) { + if (outl[i] != -1) { + assert(0 <= outl[i] && outl[i] < nr); + assert(outr[outl[i]] == i); + j++; + + for (k = 0; k < adjsizes[i]; k++) + if (adjlists[i][k] == outl[i]) + break; + assert(k < adjsizes[i]); + } + } + assert(j == count); + + for (i = j = 0; i < nr; i++) { + if (outr[i] != -1) { + assert(0 <= outr[i] && outr[i] < nl); + assert(outl[outr[i]] == i); + j++; + } + } + assert(j == count); + + for (i = 0; i < nl; i++) { + if (outl[i] == -1) + assert(witness[i] == 0); + } + for (i = 0; i < nr; i++) { + if (outr[i] == -1) + assert(witness[nl+i] == 1); + } + for (i = 0; i < nl; i++) { + for (j = 0; j < adjsizes[i]; j++) { + k = adjlists[i][j]; + + if (outl[i] == k) + assert(!(witness[i] == 1 && witness[nl+k] == 0)); + else + assert(!(witness[i] == 0 && witness[nl+k] == 1)); + } + } +} + +struct nodename { + const char *name; + int index; +}; + +int compare_nodes(void *av, void *bv) +{ + const struct nodename *a = (const struct nodename *)av; + const struct nodename *b = (const struct nodename *)bv; + return strcmp(a->name, b->name); +} + +int node_index(tree234 *n2i, tree234 *i2n, const char *name) +{ + struct nodename *nn, *nn_prev; + char *namedup = dupstr(name); + + nn = snew(struct nodename); + nn->name = namedup; + nn->index = count234(n2i); + + nn_prev = add234(n2i, nn); + if (nn_prev != nn) { + sfree(nn); + sfree(namedup); + } else { + addpos234(i2n, nn, nn->index); + } + + return nn_prev->index; +} + +struct edge { + int L, R; +}; + +int compare_edges(void *av, void *bv) +{ + const struct edge *a = (const struct edge *)av; + const struct edge *b = (const struct edge *)bv; + if (a->L < b->L) return -1; + if (a->L > b->L) return +1; + if (a->R < b->R) return -1; + if (a->R > b->R) return +1; + return 0; +} + +void matching_from_user_input(FILE *fp, const char *filename) +{ + tree234 *Ln2i, *Li2n, *Rn2i, *Ri2n, *edges; + char *line = NULL; + struct edge *e; + int i, lineno = 0; + int *adjptr; + + Ln2i = newtree234(compare_nodes); + Rn2i = newtree234(compare_nodes); + Li2n = newtree234(NULL); + Ri2n = newtree234(NULL); + edges = newtree234(compare_edges); + + while (sfree(line), lineno++, (line = fgetline(fp)) != NULL) { + char *p, *Lname, *Rname; + + p = line; + while (*p && isspace((unsigned char)*p)) p++; + if (!*p) + continue; + + Lname = p; + while (*p && !isspace((unsigned char)*p)) p++; + if (*p) + *p++ = '\0'; + while (*p && isspace((unsigned char)*p)) p++; + + if (!*p) { + fprintf(stderr, "%s:%d: expected 2 words, found 1\n", + filename, lineno); + exit(1); + } + + Rname = p; + while (*p && !isspace((unsigned char)*p)) p++; + if (*p) + *p++ = '\0'; + while (*p && isspace((unsigned char)*p)) p++; + + if (*p) { + fprintf(stderr, "%s:%d: expected 2 words, found more\n", + filename, lineno); + exit(1); + } + + e = snew(struct edge); + e->L = node_index(Ln2i, Li2n, Lname); + e->R = node_index(Rn2i, Ri2n, Rname); + if (add234(edges, e) != e) { + fprintf(stderr, "%s:%d: duplicate edge\n", + filename, lineno); + exit(1); + } + } + + allocate(count234(Ln2i), count234(Rn2i), count234(edges)); + + adjptr = adjdata; + for (i = 0; i < nl; i++) + adjlists[i] = NULL; + for (i = 0; (e = index234(edges, i)) != NULL; i++) { + if (!adjlists[e->L]) + adjlists[e->L] = adjptr; + *adjptr++ = e->R; + adjsizes[e->L] = adjptr - adjlists[e->L]; + } + + find_and_check_matching(); + + for (i = 0; i < nl; i++) { + if (outl[i] != -1) { + struct nodename *Lnn = index234(Li2n, i); + struct nodename *Rnn = index234(Ri2n, outl[i]); + printf("%s %s\n", Lnn->name, Rnn->name); + } + } +} + +void test_subsets(void) +{ + int b = 8; + int n = 1 << b; + int i, j, nruns, expected_size; + int *adjptr; + int *edgecounts; + struct stats { + int min, max; + double n, sx, sxx; + } *stats; + static const char seed[] = "fixed random seed for repeatability"; + + /* + * Generate a graph in which every subset of [b] = {1,...,b} + * (represented as a b-bit integer 0 <= i < n) has an edge going + * to every subset obtained by removing exactly one element. + * + * This graph is the disjoint union of the corresponding graph for + * each layer (collection of same-sized subset) of the power set + * of [b]. Each of those graphs has a matching of size equal to + * the smaller of its vertex sets. So we expect the overall size + * of the output matching to be less than n by the size of the + * largest layer, that is, to be n - binomial(n, floor(n/2)). + * + * We run the generation repeatedly, randomising it every time, + * and we expect to see every possible edge appear sooner or + * later. + */ + + rs = random_new(seed, strlen(seed)); + + allocate(n, n, n*b); + adjptr = adjdata; + expected_size = 0; + for (i = 0; i < n; i++) { + adjlists[i] = adjptr; + for (j = 0; j < b; j++) { + if (i & (1 << j)) + *adjptr++ = i & ~(1 << j); + } + adjsizes[i] = adjptr - adjlists[i]; + if (adjsizes[i] != b/2) + expected_size++; + } + + edgecounts = snewn(n*b, int); + for (i = 0; i < n*b; i++) + edgecounts[i] = 0; + + stats = snewn(b, struct stats); + + nruns = 0; + while (nruns < 10000) { + nruns++; + find_and_check_matching(); + assert(count == expected_size); + + for (i = 0; i < n; i++) + for (j = 0; j < b; j++) + if ((i ^ outl[i]) == (1 << j)) + edgecounts[b*i+j]++; + + if (nruns % 1000 == 0) { + for (i = 0; i < b; i++) { + struct stats *st = &stats[i]; + st->min = st->max = -1; + st->n = st->sx = st->sxx = 0; + } + + for (i = 0; i < n; i++) { + int pop = 0; + for (j = 0; j < b; j++) + if (i & (1 << j)) + pop++; + pop--; + + for (j = 0; j < b; j++) { + if (i & (1 << j)) { + struct stats *st = &stats[pop]; + int x = edgecounts[b*i+j]; + if (st->max == -1 || st->max < x) + st->max = x; + if (st->min == -1 || st->min > x) + st->min = x; + st->n++; + st->sx += x; + st->sxx += (double)x*x; + } else { + assert(edgecounts[b*i+j] == 0); + } + } + } + } + } + + printf("after %d runs:\n", nruns); + for (j = 0; j < b; j++) { + struct stats *st = &stats[j]; + printf("edges between layers %d,%d:" + " min=%d max=%d mean=%f variance=%f\n", + j, j+1, st->min, st->max, st->sx/st->n, + (st->sxx - st->sx*st->sx/st->n) / st->n); + } +} + +int main(int argc, char **argv) +{ + static const char stdin_identifier[] = ""; + const char *infile = NULL; + int doing_opts = TRUE; + enum { USER_INPUT, AUTOTEST } mode = USER_INPUT; + + while (--argc > 0) { + const char *arg = *++argv; + + if (doing_opts && arg[0] == '-' && arg[1]) { + if (!strcmp(arg, "--")) { + doing_opts = FALSE; + } else if (!strcmp(arg, "--random")) { + char buf[64]; + int len = sprintf(buf, "%lu", (unsigned long)time(NULL)); + rs = random_new(buf, len); + } else if (!strcmp(arg, "--autotest")) { + mode = AUTOTEST; + } else { + fprintf(stderr, "matching: unrecognised option '%s'\n", arg); + return 1; + } + } else { + if (!infile) { + infile = (!strcmp(arg, "-") ? stdin_identifier : arg); + } else { + fprintf(stderr, "matching: too many arguments\n"); + return 1; + } + } + } + + if (mode == USER_INPUT) { + FILE *fp; + + if (!infile) + infile = stdin_identifier; + + if (infile != stdin_identifier) { + fp = fopen(infile, "r"); + if (!fp) { + fprintf(stderr, "matching: could not open input file '%s'\n", + infile); + return 1; + } + } else { + fp = stdin; + } + + matching_from_user_input(fp, infile); + + if (infile != stdin_identifier) + fclose(fp); + } + + if (mode == AUTOTEST) { + if (infile) { + fprintf(stderr, "matching: expected no filename argument " + "with --autotest\n"); + return 1; + } + + test_subsets(); + } + + return 0; +} + +#endif /* STANDALONE_MATCHING_TEST */ diff --git a/apps/plugins/puzzles/src/matching.h b/apps/plugins/puzzles/src/matching.h new file mode 100644 index 0000000000..a4d3098efa --- /dev/null +++ b/apps/plugins/puzzles/src/matching.h @@ -0,0 +1,80 @@ +/* + * Hopcroft-Karp algorithm for finding a maximal matching in a + * bipartite graph. + */ + +#ifndef MATCHING_MATCHING_H +#define MATCHING_MATCHING_H + +/* + * The actual algorithm. + * + * Inputs: + * + * - 'scratch' is previously allocated scratch space of a size + * previously determined by calling 'matching_scratch_size'. + * + * - 'nl' is the number of vertices on the left side of the graph. + * Left vertices are numbered from 0 to nl-1. + * + * - 'nr' is the number of vertices on the left side of the graph. + * Right vertices are numbered from 0 to nr-1. + * + * - 'adjlists' and 'adjsizes' represents the graph in adjacency-list + * form. For each left vertex L, adjlists[L] points to an array of + * adjsizes[L] integers giving the list of right vertices adjacent + * to L. + * + * - 'rs', if not NULL, is a random_state used to perturb the + * progress of the algorithm so as to choose randomly from the + * possible matchings if there's more than one. (The exact + * probability distribution can't be guaranteed, but at the very + * least, any matching that exists should be a _possible_ output.) + * + * If 'rs' is not NULL, then each list in adjlists[] will be permuted + * during the course of the algorithm as a side effect. (That's why + * it's not an array of _const_ int pointers.) + * + * Output: + * + * - 'outl' may be NULL. If non-NULL, it is an array of 'nl' + * integers, and outl[L] will be assigned the index of the right + * vertex that the output matching paired with the left vertex L, + * or -1 if L is unpaired. + * + * - 'outr' may be NULL. If non-NULL, it is an array of 'nr' + * integers, and outr[R] will be assigned the index of the left + * vertex that the output matching paired with the right vertex R, + * or -1 if R is unpaired. + * + * - the returned value from the function is the total number of + * edges in the matching. + */ +int matching_with_scratch(void *scratch, + int nl, int nr, int **adjlists, int *adjsizes, + random_state *rs, int *outl, int *outr); + +/* + * The above function expects its 'scratch' parameter to have already + * been set up. This function tells you how much space is needed for a + * given size of graph, so that you can allocate a single instance of + * scratch space and run the algorithm multiple times without the + * overhead of an alloc and free every time. + */ +size_t matching_scratch_size(int nl, int nr); + +/* + * Simplified version of the above function. All parameters are the + * same, except that 'scratch' is constructed internally and freed on + * exit. This is the simplest way to call the algorithm as a one-off; + * however, if you need to call it multiple times on the same size of + * graph, it is probably better to call the above version directly so + * that you only construct 'scratch' once. + * + * Additional return value is now -1, meaning that scratch space + * could not be allocated. + */ +int matching(int nl, int nr, int **adjlists, int *adjsizes, + random_state *rs, int *outl, int *outr); + +#endif /* MATCHING_MATCHING_H */ diff --git a/apps/plugins/puzzles/src/maxflow.c b/apps/plugins/puzzles/src/maxflow.c deleted file mode 100644 index 97ae8c487d..0000000000 --- a/apps/plugins/puzzles/src/maxflow.c +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Edmonds-Karp algorithm for finding a maximum flow and minimum - * cut in a network. Almost identical to the Ford-Fulkerson - * algorithm, but apparently using breadth-first search to find the - * _shortest_ augmenting path is a good way to guarantee - * termination and ensure the time complexity is not dependent on - * the actual value of the maximum flow. I don't understand why - * that should be, but it's claimed on the Internet that it's been - * proved, and that's good enough for me. I prefer BFS to DFS - * anyway :-) - */ - -#include -#include -#include - -#include "maxflow.h" - -#include "puzzles.h" /* for snewn/sfree */ - -int maxflow_with_scratch(void *scratch, int nv, int source, int sink, - int ne, const int *edges, const int *backedges, - const int *capacity, int *flow, int *cut) -{ - int *todo = (int *)scratch; - int *prev = todo + nv; - int *firstedge = todo + 2*nv; - int *firstbackedge = todo + 3*nv; - int i, j, head, tail, from, to; - int totalflow; - - /* - * Scan the edges array to find the index of the first edge - * from each node. - */ - j = 0; - for (i = 0; i < ne; i++) - while (j <= edges[2*i]) - firstedge[j++] = i; - while (j < nv) - firstedge[j++] = ne; - assert(j == nv); - - /* - * Scan the backedges array to find the index of the first edge - * _to_ each node. - */ - j = 0; - for (i = 0; i < ne; i++) - while (j <= edges[2*backedges[i]+1]) - firstbackedge[j++] = i; - while (j < nv) - firstbackedge[j++] = ne; - assert(j == nv); - - /* - * Start the flow off at zero on every edge. - */ - for (i = 0; i < ne; i++) - flow[i] = 0; - totalflow = 0; - - /* - * Repeatedly look for an augmenting path, and follow it. - */ - while (1) { - - /* - * Set up the prev array. - */ - for (i = 0; i < nv; i++) - prev[i] = -1; - - /* - * Initialise the to-do list for BFS. - */ - head = tail = 0; - todo[tail++] = source; - - /* - * Now do the BFS loop. - */ - while (head < tail && prev[sink] < 0) { - from = todo[head++]; - - /* - * Try all the forward edges out of node `from'. For a - * forward edge to be valid, it must have flow - * currently less than its capacity. - */ - for (i = firstedge[from]; i < ne && edges[2*i] == from; i++) { - to = edges[2*i+1]; - if (to == source || prev[to] >= 0) - continue; - if (capacity[i] >= 0 && flow[i] >= capacity[i]) - continue; - /* - * This is a valid augmenting edge. Visit node `to'. - */ - prev[to] = 2*i; - todo[tail++] = to; - } - - /* - * Try all the backward edges into node `from'. For a - * backward edge to be valid, it must have flow - * currently greater than zero. - */ - for (i = firstbackedge[from]; - j = backedges[i], i < ne && edges[2*j+1]==from; i++) { - to = edges[2*j]; - if (to == source || prev[to] >= 0) - continue; - if (flow[j] <= 0) - continue; - /* - * This is a valid augmenting edge. Visit node `to'. - */ - prev[to] = 2*j+1; - todo[tail++] = to; - } - } - - /* - * If prev[sink] is non-null, we have found an augmenting - * path. - */ - if (prev[sink] >= 0) { - int max; - - /* - * Work backwards along the path figuring out the - * maximum flow we can add. - */ - to = sink; - max = -1; - while (to != source) { - int spare; - - /* - * Find the edge we're currently moving along. - */ - i = prev[to]; - from = edges[i]; - assert(from != to); - - /* - * Determine the spare capacity of this edge. - */ - if (i & 1) - spare = flow[i / 2]; /* backward edge */ - else if (capacity[i / 2] >= 0) - spare = capacity[i / 2] - flow[i / 2]; /* forward edge */ - else - spare = -1; /* unlimited forward edge */ - - assert(spare != 0); - - if (max < 0 || (spare >= 0 && spare < max)) - max = spare; - - to = from; - } - /* - * Fail an assertion if max is still < 0, i.e. there is - * an entirely unlimited path from source to sink. Also - * max should not _be_ zero, because by construction - * this _should_ be an augmenting path. - */ - assert(max > 0); - - /* - * Now work backwards along the path again, this time - * actually adjusting the flow. - */ - to = sink; - while (to != source) { - /* - * Find the edge we're currently moving along. - */ - i = prev[to]; - from = edges[i]; - assert(from != to); - - /* - * Adjust the edge. - */ - if (i & 1) - flow[i / 2] -= max; /* backward edge */ - else - flow[i / 2] += max; /* forward edge */ - - to = from; - } - - /* - * And adjust the overall flow counter. - */ - totalflow += max; - - continue; - } - - /* - * If we reach here, we have failed to find an augmenting - * path, which means we're done. Output the `cut' array if - * required, and leave. - */ - if (cut) { - for (i = 0; i < nv; i++) { - if (i == source || prev[i] >= 0) - cut[i] = 0; - else - cut[i] = 1; - } - } - return totalflow; - } -} - -int maxflow_scratch_size(int nv) -{ - return (nv * 4) * sizeof(int); -} - -void maxflow_setup_backedges(int ne, const int *edges, int *backedges) -{ - int i, n; - - for (i = 0; i < ne; i++) - backedges[i] = i; - - /* - * We actually can't use the C qsort() function, because we'd - * need to pass `edges' as a context parameter to its - * comparator function. So instead I'm forced to implement my - * own sorting algorithm internally, which is a pest. I'll use - * heapsort, because I like it. - */ - -#define LESS(i,j) ( (edges[2*(i)+1] < edges[2*(j)+1]) || \ - (edges[2*(i)+1] == edges[2*(j)+1] && \ - edges[2*(i)] < edges[2*(j)]) ) -#define PARENT(n) ( ((n)-1)/2 ) -#define LCHILD(n) ( 2*(n)+1 ) -#define RCHILD(n) ( 2*(n)+2 ) -#define SWAP(i,j) do { int swaptmp = (i); (i) = (j); (j) = swaptmp; } while (0) - - /* - * Phase 1: build the heap. We want the _largest_ element at - * the top. - */ - n = 0; - while (n < ne) { - n++; - - /* - * Swap element n with its parent repeatedly to preserve - * the heap property. - */ - i = n-1; - - while (i > 0) { - int p = PARENT(i); - - if (LESS(backedges[p], backedges[i])) { - SWAP(backedges[p], backedges[i]); - i = p; - } else - break; - } - } - - /* - * Phase 2: repeatedly remove the largest element and stick it - * at the top of the array. - */ - while (n > 0) { - /* - * The largest element is at position 0. Put it at the top, - * and swap the arbitrary element from that position into - * position 0. - */ - n--; - SWAP(backedges[0], backedges[n]); - - /* - * Now repeatedly move that arbitrary element down the heap - * by swapping it with the more suitable of its children. - */ - i = 0; - while (1) { - int lc, rc; - - lc = LCHILD(i); - rc = RCHILD(i); - - if (lc >= n) - break; /* we've hit bottom */ - - if (rc >= n) { - /* - * Special case: there is only one child to check. - */ - if (LESS(backedges[i], backedges[lc])) - SWAP(backedges[i], backedges[lc]); - - /* _Now_ we've hit bottom. */ - break; - } else { - /* - * The common case: there are two children and we - * must check them both. - */ - if (LESS(backedges[i], backedges[lc]) || - LESS(backedges[i], backedges[rc])) { - /* - * Pick the more appropriate child to swap with - * (i.e. the one which would want to be the - * parent if one were above the other - as one - * is about to be). - */ - if (LESS(backedges[lc], backedges[rc])) { - SWAP(backedges[i], backedges[rc]); - i = rc; - } else { - SWAP(backedges[i], backedges[lc]); - i = lc; - } - } else { - /* This element is in the right place; we're done. */ - break; - } - } - } - } - -#undef LESS -#undef PARENT -#undef LCHILD -#undef RCHILD -#undef SWAP - -} - -int maxflow(int nv, int source, int sink, - int ne, const int *edges, const int *capacity, - int *flow, int *cut) -{ - void *scratch; - int *backedges; - int size; - int ret; - - /* - * Allocate the space. - */ - size = ne * sizeof(int) + maxflow_scratch_size(nv); - backedges = smalloc(size); - if (!backedges) - return -1; - scratch = backedges + ne; - - /* - * Set up the backedges array. - */ - maxflow_setup_backedges(ne, edges, backedges); - - /* - * Call the main function. - */ - ret = maxflow_with_scratch(scratch, nv, source, sink, ne, edges, - backedges, capacity, flow, cut); - - /* - * Free the scratch space. - */ - sfree(backedges); - - /* - * And we're done. - */ - return ret; -} - -#ifdef TESTMODE - -#define MAXEDGES 256 -#define MAXVERTICES 128 -#define ADDEDGE(i,j) do{edges[ne*2] = (i); edges[ne*2+1] = (j); ne++;}while(0) - -int compare_edge(const void *av, const void *bv) -{ - const int *a = (const int *)av; - const int *b = (const int *)bv; - - if (a[0] < b[0]) - return -1; - else if (a[0] > b[0]) - return +1; - else if (a[1] < b[1]) - return -1; - else if (a[1] > b[1]) - return +1; - else - return 0; -} - -int main(void) -{ - int edges[MAXEDGES*2], ne, nv; - int capacity[MAXEDGES], flow[MAXEDGES], cut[MAXVERTICES]; - int source, sink, p, q, i, j, ret; - - /* - * Use this algorithm to find a maximal complete matching in a - * bipartite graph. - */ - ne = 0; - nv = 0; - source = nv++; - p = nv; - nv += 5; - q = nv; - nv += 5; - sink = nv++; - for (i = 0; i < 5; i++) { - capacity[ne] = 1; - ADDEDGE(source, p+i); - } - for (i = 0; i < 5; i++) { - capacity[ne] = 1; - ADDEDGE(q+i, sink); - } - j = ne; - capacity[ne] = 1; ADDEDGE(p+0,q+0); - capacity[ne] = 1; ADDEDGE(p+1,q+0); - capacity[ne] = 1; ADDEDGE(p+1,q+1); - capacity[ne] = 1; ADDEDGE(p+2,q+1); - capacity[ne] = 1; ADDEDGE(p+2,q+2); - capacity[ne] = 1; ADDEDGE(p+3,q+2); - capacity[ne] = 1; ADDEDGE(p+3,q+3); - capacity[ne] = 1; ADDEDGE(p+4,q+3); - /* capacity[ne] = 1; ADDEDGE(p+2,q+4); */ - qsort(edges, ne, 2*sizeof(int), compare_edge); - - ret = maxflow(nv, source, sink, ne, edges, capacity, flow, cut); - - printf("ret = %d\n", ret); - - for (i = 0; i < ne; i++) - printf("flow %d: %d -> %d\n", flow[i], edges[2*i], edges[2*i+1]); - - for (i = 0; i < nv; i++) - if (cut[i] == 0) - printf("difficult set includes %d\n", i); - - return 0; -} - -#endif diff --git a/apps/plugins/puzzles/src/maxflow.h b/apps/plugins/puzzles/src/maxflow.h deleted file mode 100644 index d490f45421..0000000000 --- a/apps/plugins/puzzles/src/maxflow.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Edmonds-Karp algorithm for finding a maximum flow and minimum - * cut in a network. Almost identical to the Ford-Fulkerson - * algorithm, but apparently using breadth-first search to find the - * _shortest_ augmenting path is a good way to guarantee - * termination and ensure the time complexity is not dependent on - * the actual value of the maximum flow. I don't understand why - * that should be, but it's claimed on the Internet that it's been - * proved, and that's good enough for me. I prefer BFS to DFS - * anyway :-) - */ - -#ifndef MAXFLOW_MAXFLOW_H -#define MAXFLOW_MAXFLOW_H - -/* - * The actual algorithm. - * - * Inputs: - * - * - `scratch' is previously allocated scratch space of a size - * previously determined by calling `maxflow_scratch_size'. - * - * - `nv' is the number of vertices. Vertices are assumed to be - * numbered from 0 to nv-1. - * - * - `source' and `sink' are the distinguished source and sink - * vertices. - * - * - `ne' is the number of edges in the graph. - * - * - `edges' is an array of 2*ne integers, giving a (source, dest) - * pair for each network edge. Edge pairs are expected to be - * sorted in lexicographic order. - * - * - `backedges' is an array of `ne' integers, each a distinct - * index into `edges'. The edges in `edges', if permuted as - * specified by this array, should end up sorted in the _other_ - * lexicographic order, i.e. dest taking priority over source. - * - * - `capacity' is an array of `ne' integers, giving a maximum - * flow capacity for each edge. A negative value is taken to - * indicate unlimited capacity on that edge, but note that there - * may not be any unlimited-capacity _path_ from source to sink - * or an assertion will be failed. - * - * Output: - * - * - `flow' must be non-NULL. It is an array of `ne' integers, - * each giving the final flow along each edge. - * - * - `cut' may be NULL. If non-NULL, it is an array of `nv' - * integers, which will be set to zero or one on output, in such - * a way that: - * + the set of zero vertices includes the source - * + the set of one vertices includes the sink - * + the maximum flow capacity between the zero and one vertex - * sets is achieved (i.e. all edges from a zero vertex to a - * one vertex are at full capacity, while all edges from a - * one vertex to a zero vertex have no flow at all). - * - * - the returned value from the function is the total flow - * achieved. - */ -int maxflow_with_scratch(void *scratch, int nv, int source, int sink, - int ne, const int *edges, const int *backedges, - const int *capacity, int *flow, int *cut); - -/* - * The above function expects its `scratch' and `backedges' - * parameters to have already been set up. This allows you to set - * them up once and use them in multiple invocates of the - * algorithm. Now I provide functions to actually do the setting - * up. - */ -int maxflow_scratch_size(int nv); -void maxflow_setup_backedges(int ne, const int *edges, int *backedges); - -/* - * Simplified version of the above function. All parameters are the - * same, except that `scratch' and `backedges' are constructed - * internally. This is the simplest way to call the algorithm as a - * one-off; however, if you need to call it multiple times on the - * same network, it is probably better to call the above version - * directly so that you only construct `scratch' and `backedges' - * once. - * - * Additional return value is now -1, meaning that scratch space - * could not be allocated. - */ -int maxflow(int nv, int source, int sink, - int ne, const int *edges, const int *capacity, - int *flow, int *cut); - -#endif /* MAXFLOW_MAXFLOW_H */ diff --git a/apps/plugins/puzzles/src/midend.c b/apps/plugins/puzzles/src/midend.c index 0c91388d8f..a42e51639e 100644 --- a/apps/plugins/puzzles/src/midend.c +++ b/apps/plugins/puzzles/src/midend.c @@ -1104,6 +1104,27 @@ int midend_process_key(midend *me, int x, int y, int button) return ret; } +key_label *midend_request_keys(midend *me, int *n) +{ + key_label *keys = NULL; + int nkeys = 0, i; + + if(me->ourgame->request_keys) + { + keys = me->ourgame->request_keys(midend_get_params(me), &nkeys); + for(i = 0; i < nkeys; ++i) + { + if(!keys[i].label) + keys[i].label = button2label(keys[i].button); + } + } + + if(n) + *n = nkeys; + + return keys; +} + void midend_redraw(midend *me) { assert(me->drawing); diff --git a/apps/plugins/puzzles/src/misc.c b/apps/plugins/puzzles/src/misc.c index 83671a2744..6b4414f6e8 100644 --- a/apps/plugins/puzzles/src/misc.c +++ b/apps/plugins/puzzles/src/misc.c @@ -21,6 +21,15 @@ void free_cfg(config_item *cfg) sfree(cfg); } +void free_keys(key_label *keys, int nkeys) +{ + int i; + + for(i = 0; i < nkeys; i++) + sfree(keys->label); + sfree(keys); +} + /* * The Mines (among others) game descriptions contain the location of every * mine, and can therefore be used to cheat. @@ -169,6 +178,25 @@ unsigned char *hex2bin(const char *in, int outlen) return ret; } +char *fgetline(FILE *fp) +{ + char *ret = snewn(512, char); + int size = 512, len = 0; + while (fgets(ret + len, size - len, fp)) { + len += strlen(ret + len); + if (ret[len-1] == '\n') + break; /* got a newline, we're done */ + size = len + 512; + ret = sresize(ret, size, char); + } + if (len == 0) { /* first fgets returned NULL */ + sfree(ret); + return NULL; + } + ret[len] = '\0'; + return ret; +} + void game_mkhighlight_specific(frontend *fe, float *ret, int background, int highlight, int lowlight) { @@ -380,4 +408,42 @@ int ftoa(char *buf, float f) return sprintf(buf, "%d.%06d", (int)f, abs((int)((f - (int)f)*1e6))); } +/* Returns a dynamically allocated label for a generic button. + * Game-specific buttons should go into the `label' field of key_label + * instead. */ +char *button2label(int button) +{ + /* check if it's a keyboard button */ + if(('A' <= button && button <= 'Z') || + ('a' <= button && button <= 'z') || + ('0' <= button && button <= '9') ) + { + char str[2]; + str[0] = button; + str[1] = '\0'; + return dupstr(str); + } + + switch(button) + { + case CURSOR_UP: + return dupstr("Up"); + case CURSOR_DOWN: + return dupstr("Down"); + case CURSOR_LEFT: + return dupstr("Left"); + case CURSOR_RIGHT: + return dupstr("Right"); + case CURSOR_SELECT: + return dupstr("Select"); + case '\b': + return dupstr("Clear"); + default: + fatal("unknown generic key"); + } + + /* should never get here */ + return NULL; +} + /* vim: set shiftwidth=4 tabstop=8: */ diff --git a/apps/plugins/puzzles/src/missing b/apps/plugins/puzzles/src/missing new file mode 100755 index 0000000000..c6e379584b --- /dev/null +++ b/apps/plugins/puzzles/src/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2016-01-11.22; # UTC + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/apps/plugins/puzzles/src/mkfiles.pl b/apps/plugins/puzzles/src/mkfiles.pl index c0874ae07e..20fd7e0f46 100755 --- a/apps/plugins/puzzles/src/mkfiles.pl +++ b/apps/plugins/puzzles/src/mkfiles.pl @@ -638,7 +638,7 @@ if (defined $makefiles{'clangcl'}) { print "\t\$(RC) \$(RCFLAGS) ".$d->{deps}->[0]." -o ".$d->{obj}."\n\n"; } else { $deflist = join "", map { " /D$_" } @{$d->{defs}}; - print "\t\$(CC) /Fo\$(BUILDDIR)".$d->{obj}." \$(COMPAT) \$(CFLAGS) \$(XFLAGS)$deflist /c \$<\n\n"; + print "\t\$(CC) /Fo".$d->{obj}." \$(COMPAT) \$(CFLAGS) \$(XFLAGS)$deflist /c \$<\n\n"; } } print "\nclean:\n". diff --git a/apps/plugins/puzzles/src/puzzles.but b/apps/plugins/puzzles/src/puzzles.but index 2c448b8030..e22e63d544 100644 --- a/apps/plugins/puzzles/src/puzzles.but +++ b/apps/plugins/puzzles/src/puzzles.but @@ -2400,10 +2400,15 @@ increasingly complex reasoning to avoid having to backtrack. \cfg{winhelp-topic}{games.galaxies} You have a rectangular grid containing a number of dots. Your aim is -to draw edges along the grid lines which divide the rectangle into -regions in such a way that every region is 180\u00b0{-degree} -rotationally symmetric, and contains exactly one dot which is -located at its centre of symmetry. +to partition the rectangle into connected regions of squares, in such +a way that every region is 180\u00b0{-degree} rotationally symmetric, +and contains exactly one dot which is located at its centre of +symmetry. + +To enter your solution, you draw lines along the grid edges to mark +the boundaries of the regions. The puzzle is complete when the marked +lines on the grid are precisely those that separate two squares +belonging to different regions. This puzzle was invented by \i{Nikoli} \k{nikoli-galaxies}, under the name \q{Tentai Show}; its name is commonly translated into @@ -2418,11 +2423,11 @@ Galaxies was contributed to this collection by James Harvey. \IM{Galaxies controls} controls, for Galaxies Left-click on any grid line to draw an edge if there isn't one -already, or to remove one if there is. When you create a valid -region (one which is closed, contains exactly one dot, is -180\u00b0{-degree} symmetric about that dot, and contains no -extraneous edges inside it) it will be highlighted automatically; so -your aim is to have the whole grid highlighted in that way. +already, or to remove one if there is. When you create a valid region +(one which is closed, contains exactly one dot, is 180\u00b0{-degree} +symmetric about that dot, and contains no extraneous edges between two +of its own squares), it will be highlighted automatically; so your aim +is to have the whole grid highlighted in that way. During solving, you might know that a particular grid square belongs to a specific dot, but not be sure of where the edges go and which diff --git a/apps/plugins/puzzles/src/puzzles.cnt b/apps/plugins/puzzles/src/puzzles.cnt new file mode 100644 index 0000000000..fef32228ea --- /dev/null +++ b/apps/plugins/puzzles/src/puzzles.cnt @@ -0,0 +1,167 @@ +:Title Simon Tatham's Portable Puzzle Collection +1 Contents=Top +1 Chapter 1: Introduction +2 Chapter 1: Introduction=t00000000 +1 Chapter 2: Common features +2 Chapter 2: Common features=t00000001 +2 Section 2.1: Common actions=t00000002 +2 Section 2.2: Specifying games with the game ID=t00000003 +2 Section 2.3: The ‘Type’ menu=t00000004 +2 Section 2.4: Specifying game parameters on the command line=t00000005 +2 Section 2.5: Unix command-line options=t00000006 +1 Chapter 3: Net +2 Chapter 3: Net=games.net +2 Section 3.1: Net controls=t00000007 +2 Section 3.2: Net parameters=t00000008 +1 Chapter 4: Cube +2 Chapter 4: Cube=games.cube +2 Section 4.1: Cube controls=t00000009 +2 Section 4.2: Cube parameters=t00000010 +1 Chapter 5: Fifteen +2 Chapter 5: Fifteen=games.fifteen +2 Section 5.1: Fifteen controls=t00000011 +2 Section 5.2: Fifteen parameters=t00000012 +1 Chapter 6: Sixteen +2 Chapter 6: Sixteen=games.sixteen +2 Section 6.1: Sixteen controls=t00000013 +2 Section 6.2: Sixteen parameters=t00000014 +1 Chapter 7: Twiddle +2 Chapter 7: Twiddle=games.twiddle +2 Section 7.1: Twiddle controls=t00000015 +2 Section 7.2: Twiddle parameters=t00000016 +1 Chapter 8: Rectangles +2 Chapter 8: Rectangles=games.rectangles +2 Section 8.1: Rectangles controls=t00000017 +2 Section 8.2: Rectangles parameters=t00000018 +1 Chapter 9: Netslide +2 Chapter 9: Netslide=games.netslide +1 Chapter 10: Pattern +2 Chapter 10: Pattern=games.pattern +2 Section 10.1: Pattern controls=t00000019 +2 Section 10.2: Pattern parameters=t00000020 +1 Chapter 11: Solo +2 Chapter 11: Solo=games.solo +2 Section 11.1: Solo controls=t00000021 +2 Section 11.2: Solo parameters=t00000022 +1 Chapter 12: Mines +2 Chapter 12: Mines=games.mines +2 Section 12.1: Mines controls=t00000023 +2 Section 12.2: Mines parameters=t00000024 +1 Chapter 13: Same Game +2 Chapter 13: Same Game=games.samegame +2 Section 13.1: Same Game controls=t00000025 +2 Section 13.2: Same Game parameters=t00000026 +1 Chapter 14: Flip +2 Chapter 14: Flip=games.flip +2 Section 14.1: Flip controls=t00000027 +2 Section 14.2: Flip parameters=t00000028 +1 Chapter 15: Guess +2 Chapter 15: Guess=games.guess +2 Section 15.1: Guess controls=t00000029 +2 Section 15.2: Guess parameters=t00000030 +1 Chapter 16: Pegs +2 Chapter 16: Pegs=games.pegs +2 Section 16.1: Pegs controls=t00000031 +2 Section 16.2: Pegs parameters=t00000032 +1 Chapter 17: Dominosa +2 Chapter 17: Dominosa=games.dominosa +2 Section 17.1: Dominosa controls=t00000033 +2 Section 17.2: Dominosa parameters=t00000034 +1 Chapter 18: Untangle +2 Chapter 18: Untangle=games.untangle +2 Section 18.1: Untangle controls=t00000035 +2 Section 18.2: Untangle parameters=t00000036 +1 Chapter 19: Black Box +2 Chapter 19: Black Box=games.blackbox +2 Section 19.1: Black Box controls=t00000037 +2 Section 19.2: Black Box parameters=t00000038 +1 Chapter 20: Slant +2 Chapter 20: Slant=games.slant +2 Section 20.1: Slant controls=t00000039 +2 Section 20.2: Slant parameters=t00000040 +1 Chapter 21: Light Up +2 Chapter 21: Light Up=games.lightup +2 Section 21.1: Light Up controls=t00000041 +2 Section 21.2: Light Up parameters=t00000042 +1 Chapter 22: Map +2 Chapter 22: Map=games.map +2 Section 22.1: Map controls=t00000043 +2 Section 22.2: Map parameters=t00000044 +1 Chapter 23: Loopy +2 Chapter 23: Loopy=games.loopy +2 Section 23.1: Loopy controls=t00000045 +2 Section 23.2: Loopy parameters=t00000046 +1 Chapter 24: Inertia +2 Chapter 24: Inertia=games.inertia +2 Section 24.1: Inertia controls=t00000047 +2 Section 24.2: Inertia parameters=t00000048 +1 Chapter 25: Tents +2 Chapter 25: Tents=games.tents +2 Section 25.1: Tents controls=t00000049 +2 Section 25.2: Tents parameters=t00000050 +1 Chapter 26: Bridges +2 Chapter 26: Bridges=games.bridges +2 Section 26.1: Bridges controls=t00000051 +2 Section 26.2: Bridges parameters=t00000052 +1 Chapter 27: Unequal +2 Chapter 27: Unequal=games.unequal +2 Section 27.1: Unequal controls=t00000053 +2 Section 27.2: Unequal parameters=t00000054 +1 Chapter 28: Galaxies +2 Chapter 28: Galaxies=games.galaxies +2 Section 28.1: Galaxies controls=t00000055 +2 Section 28.2: Galaxies parameters=t00000056 +1 Chapter 29: Filling +2 Chapter 29: Filling=games.filling +2 Section 29.1: Filling controls=t00000057 +2 Section 29.2: Filling parameters=t00000058 +1 Chapter 30: Keen +2 Chapter 30: Keen=games.keen +2 Section 30.1: Keen controls=t00000059 +2 Section 30.2: Keen parameters=t00000060 +1 Chapter 31: Towers +2 Chapter 31: Towers=games.towers +2 Section 31.1: Towers controls=t00000061 +2 Section 31.2: Towers parameters=t00000062 +1 Chapter 32: Singles +2 Chapter 32: Singles=games.singles +2 Section 32.1: Singles controls=t00000063 +2 Section 32.2: Singles parameters=t00000064 +1 Chapter 33: Magnets +2 Chapter 33: Magnets=games.magnets +2 Section 33.1: Magnets controls=t00000065 +2 Section 33.2: Magnets parameters=t00000066 +1 Chapter 34: Signpost +2 Chapter 34: Signpost=games.signpost +2 Section 34.1: Signpost controls=t00000067 +2 Section 34.2: Signpost parameters=t00000068 +1 Chapter 35: Range +2 Chapter 35: Range=games.range +2 Section 35.1: Range controls=t00000069 +2 Section 35.2: Range parameters=t00000070 +1 Chapter 36: Pearl +2 Chapter 36: Pearl=games.pearl +2 Section 36.1: Pearl controls=t00000071 +2 Section 36.2: Pearl parameters=t00000072 +1 Chapter 37: Undead +2 Chapter 37: Undead=games.undead +2 Section 37.1: Undead controls=t00000073 +2 Section 37.2: Undead parameters=t00000074 +1 Chapter 38: Unruly +2 Chapter 38: Unruly=games.unruly +2 Section 38.1: Unruly controls=t00000075 +2 Section 38.2: Unruly parameters=t00000076 +1 Chapter 39: Flood +2 Chapter 39: Flood=games.flood +2 Section 39.1: Flood controls=t00000077 +2 Section 39.2: Flood parameters=t00000078 +1 Chapter 40: Tracks +2 Chapter 40: Tracks=games.tracks +2 Section 40.1: Tracks controls=t00000079 +2 Section 40.2: Tracks parameters=t00000080 +1 Chapter 41: Palisade +2 Chapter 41: Palisade=games.palisade +2 Section 41.1: Palisade controls=t00000081 +2 Section 41.2: Palisade parameters=t00000082 +1 Appendix A: Licence +2 Appendix A: Licence=t00000083 diff --git a/apps/plugins/puzzles/src/puzzles.h b/apps/plugins/puzzles/src/puzzles.h index 031bdfc2e8..8759139404 100644 --- a/apps/plugins/puzzles/src/puzzles.h +++ b/apps/plugins/puzzles/src/puzzles.h @@ -217,6 +217,24 @@ void preset_menu_add_preset(struct preset_menu *menu, * want to organise their preset menu usage */ game_params *preset_menu_lookup_by_id(struct preset_menu *menu, int id); +/* + * Small structure specifying a UI button in a keyboardless front + * end. The button will have the text of "label" written on it, and + * pressing it causes the value "button" to be passed to + * midend_process_key() as if typed at the keyboard. + * + * If `label' is NULL (which it likely will be), a generic label can + * be generated with the button2label() function. + */ +typedef struct key_label { + /* What should be displayed to the user by the frontend. Backends + * can set this field to NULL and have it filled in by the midend + * with a generic label. Dynamically allocated, but frontends + * should probably use free_keys() to free instead. */ + char *label; + int button; /* passed to midend_process_key when button is pressed */ +} key_label; + /* * Platform routines */ @@ -301,6 +319,7 @@ void midend_new_game(midend *me); void midend_restart_game(midend *me); void midend_stop_anim(midend *me); int midend_process_key(midend *me, int x, int y, int button); +key_label *midend_request_keys(midend *me, int *nkeys); void midend_force_redraw(midend *me); void midend_redraw(midend *me); float *midend_colours(midend *me, int *ncolours); @@ -356,7 +375,9 @@ char *dupstr(const char *s); * misc.c */ void free_cfg(config_item *cfg); +void free_keys(key_label *keys, int nkeys); void obfuscate_bitmap(unsigned char *bmp, int bits, int decode); +char *fgetline(FILE *fp); /* allocates output each time. len is always in bytes of binary data. * May assert (or just go wrong) if lengths are unchecked. */ @@ -403,6 +424,11 @@ void copy_left_justified(char *buf, size_t sz, const char *str); * that don't have one */ int ftoa(char *buf, float f); +/* Returns a generic label based on the value of `button.' To be used + whenever a `label' field returned by the request_keys() game + function is NULL. Dynamically allocated, to be freed by caller. */ +char *button2label(int button); + /* * dsf.c */ @@ -613,7 +639,7 @@ struct game { void (*free_ui)(game_ui *ui); char *(*encode_ui)(const game_ui *ui); void (*decode_ui)(game_ui *ui, const char *encoding); - char *(*request_keys)(const game_params *params); + key_label *(*request_keys)(const game_params *params, int *nkeys); void (*changed_state)(game_ui *ui, const game_state *oldstate, const game_state *newstate); char *(*interpret_move)(const game_state *state, game_ui *ui, diff --git a/apps/plugins/puzzles/src/puzzles.hlp b/apps/plugins/puzzles/src/puzzles.hlp new file mode 100644 index 0000000000..71151f15cf Binary files /dev/null and b/apps/plugins/puzzles/src/puzzles.hlp differ diff --git a/apps/plugins/puzzles/src/puzzles.txt b/apps/plugins/puzzles/src/puzzles.txt new file mode 100644 index 0000000000..23e29235cc --- /dev/null +++ b/apps/plugins/puzzles/src/puzzles.txt @@ -0,0 +1,3120 @@ +#Simon Tatham's Portable Puzzle Collection + +This is a collection of small one-player puzzle games. + +This manual is copyright 2004-2014 Simon Tatham. All rights reserved. You +may distribute this documentation under the MIT licence. See appendix A for +the licence text in full. + +#Chapter 1: Introduction + + I wrote this collection because I thought there should be more small + desktop toys available: little games you can pop up in a window and + play for two or three minutes while you take a break from whatever + else you were doing. And I was also annoyed that every time I found + a good game on (say) Unix, it wasn't available the next time I was + sitting at a Windows machine, or vice versa; so I arranged that + everything in my personal puzzle collection will happily run on + both, and have more recently done a port to Mac OS X as well. When I + find (or perhaps invent) further puzzle games that I like, they'll + be added to this collection and will immediately be available on + both platforms. And if anyone feels like writing any other front + ends - PocketPC, Mac OS pre-10, or whatever it might be - then all + the games in this framework will immediately become available on + another platform as well. + + The actual games in this collection were mostly not my invention; + they are re-implementations of existing game concepts within my + portable puzzle framework. I do not claim credit, in general, for + inventing the rules of any of these puzzles. (I don't even claim + authorship of all the code; some of the puzzles have been submitted + by other authors.) + + This collection is distributed under the MIT licence (see appendix + A). This means that you can do pretty much anything you like with + the game binaries or the code, except pretending you wrote them + yourself, or suing me if anything goes wrong. + + The most recent versions, and source code, can be found at + https://www.chiark.greenend.org.uk/~sgtatham/puzzles/. + + Please report bugs to anakin@pobox.com. You might find it helpful to + read this article before reporting a bug: + + https://www.chiark.greenend.org.uk/~sgtatham/bugs.html + + Patches are welcome. Especially if they provide a new front end (to + make all these games run on another platform), or a new game. + +#Chapter 2: Common features + + This chapter describes features that are common to all the games. + +#2.1 Common actions + + These actions are all available from the `Game' menu and via + keyboard shortcuts, in addition to any game-specific actions. + + (On Mac OS X, to conform with local user interface standards, these + actions are situated on the `File' and `Edit' menus instead.) + + _New game_ (`N', Ctrl+`N') + + Starts a new game, with a random initial state. + + _Restart game_ + + Resets the current game to its initial state. (This can be + undone.) + + _Load_ + + Loads a saved game from a file on disk. + + _Save_ + + Saves the current state of your game to a file on disk. + + The Load and Save operations preserve your entire game history + (so you can save, reload, and still Undo and Redo things you had + done before saving). + + _Print_ + + Where supported (currently only on Windows), brings up a dialog + allowing you to print an arbitrary number of puzzles randomly + generated from the current parameters, optionally including + the current puzzle. (Only for puzzles which make sense to + print, of course - it's hard to think of a sensible printable + representation of Fifteen!) + + _Undo_ (`U', Ctrl+`Z', Ctrl+`_') + + Undoes a single move. (You can undo moves back to the start of + the session.) + + _Redo_ (`R', Ctrl+`R') + + Redoes a previously undone move. + + _Copy_ + + Copies the current state of your game to the clipboard in text + format, so that you can paste it into (say) an e-mail client or + a web message board if you're discussing the game with someone + else. (Not all games support this feature.) + + _Solve_ + + Transforms the puzzle instantly into its solved state. For some + games (Cube) this feature is not supported at all because it is + of no particular use. For other games (such as Pattern), the + solved state can be used to give you information, if you can't + see how a solution can exist at all or you want to know where + you made a mistake. For still other games (such as Sixteen), + automatic solution tells you nothing about how to _get_ to + the solution, but it does provide a useful way to get there + quickly so that you can experiment with set-piece moves and + transformations. + + Some games (such as Solo) are capable of solving a game ID you + have typed in from elsewhere. Other games (such as Rectangles) + cannot solve a game ID they didn't invent themself, but when + they did invent the game ID they know what the solution is + already. Still other games (Pattern) can solve _some_ external + game IDs, but only if they aren't too difficult. + + The `Solve' command adds the solved state to the end of the undo + chain for the puzzle. In other words, if you want to go back to + solving it yourself after seeing the answer, you can just press + Undo. + + _Quit_ (`Q', Ctrl+`Q') + + Closes the application entirely. + +#2.2 Specifying games with the game ID + + There are two ways to save a game specification out of a puzzle and + recreate it later, or recreate it in somebody else's copy of the + same puzzle. + + The `Specific' and `Random Seed' options from the `Game' menu (or + the `File' menu, on Mac OS X) each show a piece of text (a `game + ID') which is sufficient to reconstruct precisely the same game at a + later date. + + You can enter either of these pieces of text back into the program + (via the same `Specific' or `Random Seed' menu options) at a later + point, and it will recreate the same game. You can also use either + one as a command line argument (on Windows or Unix); see section 2.4 + for more detail. + + The difference between the two forms is that a descriptive game ID + is a literal _description_ of the initial state of the game, whereas + a random seed is just a piece of arbitrary text which was provided + as input to the random number generator used to create the puzzle. + This means that: + + - Descriptive game IDs tend to be longer in many puzzles + (although some, such as Cube (chapter 4), only need very short + descriptions). So a random seed is often a _quicker_ way to + note down the puzzle you're currently playing, or to tell it to + somebody else so they can play the same one as you. + + - Any text at all is a valid random seed. The automatically + generated ones are fifteen-digit numbers, but anything will do; + you can type in your full name, or a word you just made up, and + a valid puzzle will be generated from it. This provides a way + for two or more people to race to complete the same puzzle: + you think of a random seed, then everybody types it in at the + same time, and nobody has an advantage due to having seen the + generated puzzle before anybody else. + + - It is often possible to convert puzzles from other sources (such + as `nonograms' or `sudoku' from newspapers) into descriptive + game IDs suitable for use with these programs. + + - Random seeds are not guaranteed to produce the same result + if you use them with a different _version_ of the puzzle + program. This is because the generation algorithm might have + been improved or modified in later versions of the code, and + will therefore produce a different result when given the same + sequence of random numbers. Use a descriptive game ID if you + aren't sure that it will be used on the same version of the + program as yours. + + (Use the `About' menu option to find out the version number of + the program. Programs with the same version number running on + different platforms should still be random-seed compatible.) + + A descriptive game ID starts with a piece of text which encodes the + _parameters_ of the current game (such as grid size). Then there is + a colon, and after that is the description of the game's initial + state. A random seed starts with a similar string of parameters, but + then it contains a hash sign followed by arbitrary data. + + If you enter a descriptive game ID, the program will not be able + to show you the random seed which generated it, since it wasn't + generated _from_ a random seed. If you _enter_ a random seed, + however, the program will be able to show you the descriptive game + ID derived from that random seed. + + Note that the game parameter strings are not always identical + between the two forms. For some games, there will be parameter + data provided with the random seed which is not included in the + descriptive game ID. This is because that parameter information is + only relevant when _generating_ puzzle grids, and is not important + when playing them. Thus, for example, the difficulty level in Solo + (chapter 11) is not mentioned in the descriptive game ID. + + These additional parameters are also not set permanently if you type + in a game ID. For example, suppose you have Solo set to `Advanced' + difficulty level, and then a friend wants your help with a `Trivial' + puzzle; so the friend reads out a random seed specifying `Trivial' + difficulty, and you type it in. The program will generate you the + same `Trivial' grid which your friend was having trouble with, but + once you have finished playing it, when you ask for a new game it + will automatically go back to the `Advanced' difficulty which it was + previously set on. + +#2.3 The `Type' menu + + The `Type' menu, if present, may contain a list of preset game + settings. Selecting one of these will start a new random game with + the parameters specified. + + The `Type' menu may also contain a `Custom' option which allows you + to fine-tune game parameters. The parameters available are specific + to each game and are described in the following sections. + +#2.4 Specifying game parameters on the command line + + (This section does not apply to the Mac OS X version.) + + The games in this collection deliberately do not ever save + information on to the computer they run on: they have no high score + tables and no saved preferences. (This is because I expect at least + some people to play them at work, and those people will probably + appreciate leaving as little evidence as possible!) + + However, if you do want to arrange for one of these games to default + to a particular set of parameters, you can specify them on the + command line. + + The easiest way to do this is to set up the parameters you want + using the `Type' menu (see section 2.3), and then to select `Random + Seed' from the `Game' or `File' menu (see section 2.2). The text + in the `Game ID' box will be composed of two parts, separated by a + hash. The first of these parts represents the game parameters (the + size of the playing area, for example, and anything else you set + using the `Type' menu). + + If you run the game with just that parameter text on the command + line, it will start up with the settings you specified. + + For example: if you run Cube (see chapter 4), select `Octahedron' + from the `Type' menu, and then go to the game ID selection, you + will see a string of the form `o2x2#338686542711620'. Take only the + part before the hash (`o2x2'), and start Cube with that text on the + command line: `PREFIX-cube o2x2'. + + If you copy the _entire_ game ID on to the command line, the game + will start up in the specific game that was described. This is + occasionally a more convenient way to start a particular game ID + than by pasting it into the game ID selection box. + + (You could also retrieve the encoded game parameters using the + `Specific' menu option instead of `Random Seed', but if you do then + some options, such as the difficulty level in Solo, will be missing. + See section 2.2 for more details on this.) + +#2.5 Unix command-line options + + (This section only applies to the Unix port.) + + In addition to being able to specify game parameters on the command + line (see section 2.4), there are various other options: + + --game + + --load + + These options respectively determine whether the command-line + argument is treated as specifying game parameters or a save + file to load. Only one should be specified. If neither of these + options is specified, a guess is made based on the format of the + argument. + + --generate _n_ + + If this option is specified, instead of a puzzle being + displayed, a number of descriptive game IDs will be invented and + printed on standard output. This is useful for gaining access + to the game generation algorithms without necessarily using the + frontend. + + If game parameters are specified on the command-line, they will + be used to generate the game IDs; otherwise a default set of + parameters will be used. + + The most common use of this option is in conjunction with `-- + print', in which case its behaviour is slightly different; see + below. + + --print _w_x_h_ + + If this option is specified, instead of a puzzle being + displayed, a printed representation of one or more unsolved + puzzles is sent to standard output, in PostScript format. + + On each page of puzzles, there will be _w_ across and _h_ down. + If there are more puzzles than _w_x_h_, more than one page will + be printed. + + If `--generate' has also been specified, the invented game + IDs will be used to generate the printed output. Otherwise, + a list of game IDs is expected on standard input (which can + be descriptive or random seeds; see section 2.2), in the same + format produced by `--generate'. + + For example: + + PREFIX-net --generate 12 --print 2x3 7x7w | lpr + + will generate two pages of printed Net puzzles (each of which + will have a 7x7 wrapping grid), and pipe the output to the `lpr' + command, which on many systems will send them to an actual + printer. + + There are various other options which affect printing; see + below. + + --save _file-prefix_ [ --save-suffix _file-suffix_ ] + + If this option is specified, instead of a puzzle being + displayed, saved-game files for one or more unsolved puzzles are + written to files constructed from the supplied prefix and/or + suffix. + + If `--generate' has also been specified, the invented game + IDs will be used to generate the printed output. Otherwise, + a list of game IDs is expected on standard input (which can + be descriptive or random seeds; see section 2.2), in the same + format produced by `--generate'. + + For example: + + PREFIX-net --generate 12 --save game --save-suffix .sav + + will generate twelve Net saved-game files with the names + game0.sav to game11.sav. + + --version + + Prints version information about the game, and then quits. + + The following options are only meaningful if `--print' is also + specified: + + --with-solutions + + The set of pages filled with unsolved puzzles will be followed + by the solutions to those puzzles. + + --scale _n_ + + Adjusts how big each puzzle is when printed. Larger numbers make + puzzles bigger; the default is 1.0. + + --colour + + Puzzles will be printed in colour, rather than in black and + white (if supported by the puzzle). + +#Chapter 3: Net + + (_Note:_ the Windows version of this game is called NETGAME.EXE to + avoid clashing with Windows's own NET.EXE.) + + I originally saw this in the form of a Flash game called + FreeNet [1], written by Pavils Jurjans; there are several other + implementations under the name NetWalk. The computer prepares a + network by connecting up the centres of squares in a grid, and then + shuffles the network by rotating every tile randomly. Your job is + to rotate it all back into place. The successful solution will be + an entirely connected network, with no closed loops. As a visual + aid, all tiles which are connected to the one in the middle are + highlighted. + + [1] http://www.jurjans.lv/stuff/net/FreeNet.htm + +#3.1 Net controls + + This game can be played with either the keyboard or the mouse. The + controls are: + + _Select tile_: mouse pointer, arrow keys + + _Rotate tile anticlockwise_: left mouse button, `A' key + + _Rotate tile clockwise_: right mouse button, `D' key + + _Rotate tile by 180 degrees_: `F' key + + _Lock (or unlock) tile_: middle mouse button, shift-click, `S' key + + You can lock a tile once you're sure of its orientation. You + can also unlock it again, but while it's locked you can't + accidentally turn it. + + The following controls are not necessary to complete the game, but + may be useful: + + _Shift grid_: Shift + arrow keys + + On grids that wrap, you can move the origin of the grid, so + that tiles that were on opposite sides of the grid can be seen + together. + + _Move centre_: Ctrl + arrow keys + + You can change which tile is used as the source of highlighting. + (It doesn't ultimately matter which tile this is, as every tile + will be connected to every other tile in a correct solution, + but it may be helpful in the intermediate stages of solving the + puzzle.) + + _Jumble tiles_: `J' key + + This key turns all tiles that are not locked to random + orientations. + + (All the actions described in section 2.1 are also available.) + +#3.2 Net parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in tiles. + + _Walls wrap around_ + + If checked, flow can pass from the left edge to the right edge, + and from top to bottom, and vice versa. + + _Barrier probability_ + + A number between 0.0 and 1.0 controlling whether an immovable + barrier is placed between two tiles to prevent flow between + them (a higher number gives more barriers). Since barriers + are immovable, they act as constraints on the solution (i.e., + hints). + + The grid generation in Net has been carefully arranged so that + the barriers are independent of the rest of the grid. This + means that if you note down the random seed used to generate + the current puzzle (see section 2.2), change the _Barrier + probability_ parameter, and then re-enter the same random seed, + you should see exactly the same starting grid, with the only + change being the number of barriers. So if you're stuck on a + particular grid and need a hint, you could start up another + instance of Net, set up the same parameters but a higher barrier + probability, and enter the game seed from the original Net + window. + + _Ensure unique solution_ + + Normally, Net will make sure that the puzzles it presents have + only one solution. Puzzles with ambiguous sections can be more + difficult and more subtle, so if you like you can turn off this + feature and risk having ambiguous puzzles. (Also, finding _all_ + the possible solutions can be an additional challenge for an + advanced player.) + +#Chapter 4: Cube + + This is another one I originally saw as a web game. This one was a + Java game [2], by Paul Scott. You have a grid of 16 squares, six of + which are blue; on one square rests a cube. Your move is to use the + arrow keys to roll the cube through 90 degrees so that it moves to + an adjacent square. If you roll the cube on to a blue square, the + blue square is picked up on one face of the cube; if you roll a blue + face of the cube on to a non-blue square, the blueness is put down + again. (In general, whenever you roll the cube, the two faces that + come into contact swap colours.) Your job is to get all six blue + squares on to the six faces of the cube at the same time. Count your + moves and try to do it in as few as possible. + + Unlike the original Java game, my version has an additional feature: + once you've mastered the game with a cube rolling on a square grid, + you can change to a triangular grid and roll any of a tetrahedron, + an octahedron or an icosahedron. + + [2] http://www3.sympatico.ca/paulscott/cube/cube.htm + +#4.1 Cube controls + + This game can be played with either the keyboard or the mouse. + + Left-clicking anywhere on the window will move the cube (or other + solid) towards the mouse pointer. + + The arrow keys can also used to roll the cube on its square grid in + the four cardinal directions. On the triangular grids, the mapping + of arrow keys to directions is more approximate. Vertical movement + is disallowed where it doesn't make sense. The four keys surrounding + the arrow keys on the numeric keypad (`7', `9', `1', `3') can be + used for diagonal movement. + + (All the actions described in section 2.1 are also available.) + +#4.2 Cube parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Type of solid_ + + Selects the solid to roll (and hence the shape of the grid): + tetrahedron, cube, octahedron, or icosahedron. + + _Width / top_, _Height / bottom_ + + On a square grid, horizontal and vertical dimensions. On a + triangular grid, the number of triangles on the top and bottom + rows respectively. + +#Chapter 5: Fifteen + + The old ones are the best: this is the good old `15-puzzle' with + sliding tiles. You have a 4x4 square grid; 15 squares contain + numbered tiles, and the sixteenth is empty. Your move is to choose a + tile next to the empty space, and slide it into the space. The aim + is to end up with the tiles in numerical order, with the space in + the bottom right (so that the top row reads 1,2,3,4 and the bottom + row reads 13,14,15,_space_). + +#5.1 Fifteen controls + + This game can be controlled with the mouse or the keyboard. + + A left-click with the mouse in the row or column containing the + empty space will move as many tiles as necessary to move the space + to the mouse pointer. + + The arrow keys will move a tile adjacent to the space in the + direction indicated (moving the space in the _opposite_ direction). + + Pressing `h' will make a suggested move. Pressing `h' enough times + will solve the game, but it may scramble your progress while doing + so. + + (All the actions described in section 2.1 are also available.) + +#5.2 Fifteen parameters + + The only options available from the `Custom...' option on the `Type' + menu are _Width_ and _Height_, which are self-explanatory. (Once + you've changed these, it's not a `15-puzzle' any more, of course!) + +#Chapter 6: Sixteen + + Another sliding tile puzzle, visually similar to Fifteen (see + chapter 5) but with a different type of move. This time, there is no + hole: all 16 squares on the grid contain numbered squares. Your move + is to shift an entire row left or right, or shift an entire column + up or down; every time you do that, the tile you shift off the grid + re-appears at the other end of the same row, in the space you just + vacated. To win, arrange the tiles into numerical order (1,2,3,4 on + the top row, 13,14,15,16 on the bottom). When you've done that, try + playing on different sizes of grid. + + I _might_ have invented this game myself, though only by accident + if so (and I'm sure other people have independently invented it). I + thought I was imitating a screensaver I'd seen, but I have a feeling + that the screensaver might actually have been a Fifteen-type puzzle + rather than this slightly different kind. So this might be the one + thing in my puzzle collection which represents creativity on my part + rather than just engineering. + +#6.1 Sixteen controls + + Left-clicking on an arrow will move the appropriate row or column in + the direction indicated. Right-clicking will move it in the opposite + direction. + + Alternatively, use the cursor keys to move the position indicator + around the edge of the grid, and use the return key to move the + row/column in the direction indicated. + + You can also move the tiles directly. Move the cursor onto a tile, + hold Control and press an arrow key to move the tile under the + cursor and move the cursor along with the tile. Or, hold Shift to + move only the tile. Pressing Enter simulates holding down Control + (press Enter again to release), while pressing Space simulates + holding down shift. + + (All the actions described in section 2.1 are also available.) + +#6.2 Sixteen parameters + + The parameters available from the `Custom...' option on the `Type' + menu are: + + - _Width_ and _Height_, which are self-explanatory. + + - You can ask for a limited shuffling operation to be performed on + the grid. By default, Sixteen will shuffle the grid in such a + way that any arrangement is about as probable as any other. You + can override this by requesting a precise number of shuffling + moves to be performed. Typically your aim is then to determine + the precise set of shuffling moves and invert them exactly, + so that you answer (say) a four-move shuffle with a four-move + solution. Note that the more moves you ask for, the more likely + it is that solutions shorter than the target length will turn + out to be possible. + +#Chapter 7: Twiddle + + Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen + (see chapter 6): you are given a grid of square tiles, each + containing a number, and your aim is to arrange the numbers into + ascending order. + + In basic Twiddle, your move is to rotate a square group of four + tiles about their common centre. (Orientation is not significant + in the basic puzzle, although you can select it.) On more advanced + settings, you can rotate a larger square group of tiles. + + I first saw this type of puzzle in the GameCube game `Metroid + Prime 2'. In the Main Gyro Chamber in that game, there is a puzzle + you solve to unlock a door, which is a special case of Twiddle. I + developed this game as a generalisation of that puzzle. + +#7.1 Twiddle controls + + To play Twiddle, click the mouse in the centre of the square group + you wish to rotate. In the basic mode, you rotate a 2x2 square, + which means you have to click at a corner point where four tiles + meet. + + In more advanced modes you might be rotating 3x3 or even more at a + time; if the size of the square is odd then you simply click in the + centre tile of the square you want to rotate. + + Clicking with the left mouse button rotates the group anticlockwise. + Clicking with the right button rotates it clockwise. + + You can also move an outline square around the grid with the cursor + keys; the square is the size above (2x2 by default, or larger). + Pressing the return key or space bar will rotate the current square + anticlockwise or clockwise respectively. + + (All the actions described in section 2.1 are also available.) + +#7.2 Twiddle parameters + + Twiddle provides several configuration options via the `Custom' + option on the `Type' menu: + + - You can configure the width and height of the puzzle grid. + + - You can configure the size of square block that rotates at a + time. + + - You can ask for every square in the grid to be distinguishable + (the default), or you can ask for a simplified puzzle in which + there are groups of identical numbers. In the simplified puzzle + your aim is just to arrange all the 1s into the first row, all + the 2s into the second row, and so on. + + - You can configure whether the orientation of tiles matters. If + you ask for an orientable puzzle, each tile will have a triangle + drawn in it. All the triangles must be pointing upwards to + complete the puzzle. + + - You can ask for a limited shuffling operation to be performed + on the grid. By default, Twiddle will shuffle the grid so much + that any arrangement is about as probable as any other. You can + override this by requesting a precise number of shuffling moves + to be performed. Typically your aim is then to determine the + precise set of shuffling moves and invert them exactly, so that + you answer (say) a four-move shuffle with a four-move solution. + Note that the more moves you ask for, the more likely it is that + solutions shorter than the target length will turn out to be + possible. + +#Chapter 8: Rectangles + + You have a grid of squares, with numbers written in some (but + not all) of the squares. Your task is to subdivide the grid into + rectangles of various sizes, such that (a) every rectangle contains + exactly one numbered square, and (b) the area of each rectangle is + equal to the number written in its numbered square. + + Credit for this game goes to the Japanese puzzle magazine Nikoli + [3]; I've also seen a Palm implementation at Puzzle Palace [4]. + Unlike Puzzle Palace's implementation, my version automatically + generates random grids of any size you like. The quality of puzzle + design is therefore not quite as good as hand-crafted puzzles would + be, but on the plus side you get an inexhaustible supply of puzzles + tailored to your own specification. + + [3] http://www.nikoli.co.jp/en/puzzles/shikaku.html (beware of + Flash) + + [4] + https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en + +#8.1 Rectangles controls + + This game is played with the mouse or cursor keys. + + Left-click any edge to toggle it on or off, or left-click and + drag to draw an entire rectangle (or line) on the grid in one go + (removing any existing edges within that rectangle). Right-clicking + and dragging will allow you to erase the contents of a rectangle + without affecting its edges. + + Alternatively, use the cursor keys to move the position indicator + around the board. Pressing the return key then allows you to use the + cursor keys to drag a rectangle out from that position, and pressing + the return key again completes the rectangle. Using the space bar + instead of the return key allows you to erase the contents of a + rectangle without affecting its edges, as above. Pressing escape + cancels a drag. + + When a rectangle of the correct size is completed, it will be + shaded. + + (All the actions described in section 2.1 are also available.) + +#8.2 Rectangles parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid, in squares. + + _Expansion factor_ + + This is a mechanism for changing the type of grids generated by + the program. Some people prefer a grid containing a few large + rectangles to one containing many small ones. So you can ask + Rectangles to essentially generate a _smaller_ grid than the + size you specified, and then to expand it by adding rows and + columns. + + The default expansion factor of zero means that Rectangles will + simply generate a grid of the size you ask for, and do nothing + further. If you set an expansion factor of (say) 0.5, it means + that each dimension of the grid will be expanded to half again + as big after generation. In other words, the initial grid will + be 2/3 the size in each dimension, and will be expanded to its + full size without adding any more rectangles. + + Setting an expansion factor of around 0.5 tends to make the + game more difficult, and also (in my experience) rewards a + less deductive and more intuitive playing style. If you set it + _too_ high, though, the game simply cannot generate more than a + few rectangles to cover the entire grid, and the game becomes + trivial. + + _Ensure unique solution_ + + Normally, Rectangles will make sure that the puzzles it presents + have only one solution. Puzzles with ambiguous sections can be + more difficult and more subtle, so if you like you can turn off + this feature and risk having ambiguous puzzles. Also, finding + _all_ the possible solutions can be an additional challenge for + an advanced player. Turning off this option can also speed up + puzzle generation. + +#Chapter 9: Netslide + + This game combines the grid generation of Net (see chapter 3) with + the movement of Sixteen (see chapter 6): you have a Net grid, but + instead of rotating tiles back into place you have to slide them + into place by moving a whole row at a time. + + As in Sixteen, control is with the mouse or cursor keys. See section + 6.1. + + The available game parameters have similar meanings to those in Net + (see section 3.2) and Sixteen (see section 6.2). + + Netslide was contributed to this collection by Richard Boulton. + +#Chapter 10: Pattern + + You have a grid of squares, which must all be filled in either black + or white. Beside each row of the grid are listed the lengths of the + runs of black squares on that row; above each column are listed the + lengths of the runs of black squares in that column. Your aim is to + fill in the entire grid black or white. + + I first saw this puzzle form around 1995, under the name + `nonograms'. I've seen it in various places since then, under + different names. + + Normally, puzzles of this type turn out to be a meaningful picture + of something once you've solved them. However, since this version + generates the puzzles automatically, they will just look like random + groupings of squares. (One user has suggested that this is actually + a _good_ thing, since it prevents you from guessing the colour of + squares based on the picture, and forces you to use logic instead.) + The advantage, though, is that you never run out of them. + +#10.1 Pattern controls + + This game is played with the mouse. + + Left-click in a square to colour it black. Right-click to colour it + white. If you make a mistake, you can middle-click, or hold down + Shift while clicking with any button, to colour the square in the + default grey (meaning `undecided') again. + + You can click and drag with the left or right mouse button to colour + a vertical or horizontal line of squares black or white at a time + (respectively). If you click and drag with the middle button, or + with Shift held down, you can colour a whole rectangle of squares + grey. + + You can also move around the grid with the cursor keys. Pressing the + return key will cycle the current cell through empty, then black, + then white, then empty, and the space bar does the same cycle in + reverse. + + Moving the cursor while holding Control will colour the moved-over + squares black. Holding Shift will colour the moved-over squares + white, and holding both will colour them grey. + + (All the actions described in section 2.1 are also available.) + +#10.2 Pattern parameters + + The only options available from the `Custom...' option on the `Type' + menu are _Width_ and _Height_, which are self-explanatory. + +#Chapter 11: Solo + + You have a square grid, which is divided into as many equally sized + sub-blocks as the grid has rows. Each square must be filled in with + a digit from 1 to the size of the grid, in such a way that + + - every row contains only one occurrence of each digit + + - every column contains only one occurrence of each digit + + - every block contains only one occurrence of each digit. + + - (optionally, by default off) each of the square's two main + diagonals contains only one occurrence of each digit. + + You are given some of the numbers as clues; your aim is to place the + rest of the numbers correctly. + + Under the default settings, the sub-blocks are square or + rectangular. The default puzzle size is 3x3 (a 9x9 actual grid, + divided into nine 3x3 blocks). You can also select sizes with + rectangular blocks instead of square ones, such as 2x3 (a 6x6 grid + divided into six 3x2 blocks). Alternatively, you can select `jigsaw' + mode, in which the sub-blocks are arbitrary shapes which differ + between individual puzzles. + + Another available mode is `killer'. In this mode, clues are not + given in the form of filled-in squares; instead, the grid is divided + into `cages' by coloured lines, and for each cage the game tells + you what the sum of all the digits in that cage should be. Also, + no digit may appear more than once within a cage, even if the cage + crosses the boundaries of existing regions. + + If you select a puzzle size which requires more than 9 digits, the + additional digits will be letters of the alphabet. For example, if + you select 3x4 then the digits which go in your grid will be 1 to 9, + plus `a', `b' and `c'. This cannot be selected for killer puzzles. + + I first saw this puzzle in Nikoli [5], although it's also been + popularised by various newspapers under the name `Sudoku' or `Su + Doku'. Howard Garns is considered the inventor of the modern form of + the puzzle, and it was first published in _Dell Pencil Puzzles and + Word Games_. A more elaborate treatment of the history of the puzzle + can be found on Wikipedia [6]. + + [5] http://www.nikoli.co.jp/en/puzzles/sudoku.html (beware of Flash) + + [6] http://en.wikipedia.org/wiki/Sudoku + +#11.1 Solo controls + + To play Solo, simply click the mouse in any empty square and then + type a digit or letter on the keyboard to fill that square. If you + make a mistake, click the mouse in the incorrect square and press + Space to clear it again (or use the Undo feature). + + If you _right_-click in a square and then type a number, that + number will be entered in the square as a `pencil mark'. You can + have pencil marks for multiple numbers in the same square. Squares + containing filled-in numbers cannot also contain pencil marks. + + The game pays no attention to pencil marks, so exactly what you + use them for is up to you: you can use them as reminders that a + particular square needs to be re-examined once you know more about + a particular number, or you can use them as lists of the possible + numbers in a given square, or anything else you feel like. + + To erase a single pencil mark, right-click in the square and type + the same number again. + + All pencil marks in a square are erased when you left-click and type + a number, or when you left-click and press space. Right-clicking and + pressing space will also erase pencil marks. + + Alternatively, use the cursor keys to move the mark around the grid. + Pressing the return key toggles the mark (from a normal mark to a + pencil mark), and typing a number in is entered in the square in the + appropriate way; typing in a 0 or using the space bar will clear a + filled square. + + (All the actions described in section 2.1 are also available.) + +#11.2 Solo parameters + + Solo allows you to configure two separate dimensions of the puzzle + grid on the `Type' menu: the number of columns, and the number of + rows, into which the main grid is divided. (The size of a block is + the inverse of this: for example, if you select 2 columns and 3 + rows, each actual block will have 3 columns and 2 rows.) + + If you tick the `X' checkbox, Solo will apply the optional extra + constraint that the two main diagonals of the grid also contain + one of every digit. (This is sometimes known as `Sudoku-X' in + newspapers.) In this mode, the squares on the two main diagonals + will be shaded slightly so that you know it's enabled. + + If you tick the `Jigsaw' checkbox, Solo will generate randomly + shaped sub-blocks. In this mode, the actual grid size will be taken + to be the product of the numbers entered in the `Columns' and `Rows' + boxes. There is no reason why you have to enter a number greater + than 1 in both boxes; Jigsaw mode has no constraint on the grid + size, and it can even be a prime number if you feel like it. + + If you tick the `Killer' checkbox, Solo will generate a set of + of cages, which are randomly shaped and drawn in an outline of a + different colour. Each of these regions contains a smaller clue + which shows the digit sum of all the squares in this region. + + You can also configure the type of symmetry shown in the generated + puzzles. More symmetry makes the puzzles look prettier but may also + make them easier, since the symmetry constraints can force more + clues than necessary to be present. Completely asymmetric puzzles + have the freedom to contain as few clues as possible. + + Finally, you can configure the difficulty of the generated puzzles. + Difficulty levels are judged by the complexity of the techniques + of deduction required to solve the puzzle: each level requires a + mode of reasoning which was not necessary in the previous one. In + particular, on difficulty levels `Trivial' and `Basic' there will be + a square you can fill in with a single number at all times, whereas + at `Intermediate' level and beyond you will have to make partial + deductions about the _set_ of squares a number could be in (or the + set of numbers that could be in a square). At `Unreasonable' level, + even this is not enough, and you will eventually have to make a + guess, and then backtrack if it turns out to be wrong. + + Generating difficult puzzles is itself difficult: if you select one + of the higher difficulty levels, Solo may have to make many attempts + at generating a puzzle before it finds one hard enough for you. Be + prepared to wait, especially if you have also configured a large + puzzle size. + +#Chapter 12: Mines + + You have a grid of covered squares, some of which contain mines, but + you don't know which. Your job is to uncover every square which does + _not_ contain a mine. If you uncover a square containing a mine, you + lose. If you uncover a square which does not contain a mine, you + are told how many mines are contained within the eight surrounding + squares. + + This game needs no introduction; popularised by Windows, it is + perhaps the single best known desktop puzzle game in existence. + + This version of it has an unusual property. By default, it will + generate its mine positions in such a way as to ensure that you + never need to _guess_ where a mine is: you will always be able + to deduce it somehow. So you will never, as can happen in other + versions, get to the last four squares and discover that there are + two mines left but you have no way of knowing for sure where they + are. + +#12.1 Mines controls + + This game is played with the mouse. + + If you left-click in a covered square, it will be uncovered. + + If you right-click in a covered square, it will place a flag which + indicates that the square is believed to be a mine. Left-clicking in + a marked square will not uncover it, for safety. You can right-click + again to remove a mark placed in error. + + If you left-click in an _uncovered_ square, it will `clear around' + the square. This means: if the square has exactly as many flags + surrounding it as it should have mines, then all the covered squares + next to it which are _not_ flagged will be uncovered. So once you + think you know the location of all the mines around a square, you + can use this function as a shortcut to avoid having to click on each + of the remaining squares one by one. + + If you uncover a square which has _no_ mines in the surrounding + eight squares, then it is obviously safe to uncover those squares in + turn, and so on if any of them also has no surrounding mines. This + will be done for you automatically; so sometimes when you uncover a + square, a whole new area will open up to be explored. + + You can also use the cursor keys to move around the minefield. + Pressing the return key in a covered square uncovers it, and in + an uncovered square will clear around it (so it acts as the left + button), pressing the space bar in a covered square will place a + flag (similarly, it acts as the right button). + + All the actions described in section 2.1 are also available. + + Even Undo is available, although you might consider it cheating to + use it. If you step on a mine, the program will only reveal the mine + in question (unlike most other implementations, which reveal all of + them). You can then Undo your fatal move and continue playing if you + like. The program will track the number of times you died (and Undo + will not reduce that counter), so when you get to the end of the + game you know whether or not you did it without making any errors. + + (If you really want to know the full layout of the grid, which other + implementations will show you after you die, you can always use the + Solve menu option.) + +#12.2 Mines parameters + + The options available from the `Custom...' option on the `Type' menu + are: + + _Width_, _Height_ + + Size of grid in squares. + + _Mines_ + + Number of mines in the grid. You can enter this as an absolute + mine count, or alternatively you can put a % sign on the end + in which case the game will arrange for that proportion of the + squares in the grid to be mines. + + Beware of setting the mine count too high. At very high + densities, the program may spend forever searching for a + solvable grid. + + _Ensure solubility_ + + When this option is enabled (as it is by default), Mines will + ensure that the entire grid can be fully deduced starting + from the initial open space. If you prefer the riskier grids + generated by other implementations, you can switch off this + option. + +#Chapter 13: Same Game + + You have a grid of coloured squares, which you have to clear by + highlighting contiguous regions of more than one coloured square; + the larger the region you highlight, the more points you get (and + the faster you clear the arena). + + If you clear the grid you win. If you end up with nothing but single + squares (i.e., there are no more clickable regions left) you lose. + + Removing a region causes the rest of the grid to shuffle up: blocks + that are suspended will fall down (first), and then empty columns + are filled from the right. + + Same Game was contributed to this collection by James Harvey. + +#13.1 Same Game controls + + This game can be played with either the keyboard or the mouse. + + If you left-click an unselected region, it becomes selected + (possibly clearing the current selection). + + If you left-click the selected region, it will be removed (and the + rest of the grid shuffled immediately). + + If you right-click the selected region, it will be unselected. + + The cursor keys move a cursor around the grid. Pressing the Space or + Enter keys while the cursor is in an unselected region selects it; + pressing Space or Enter again removes it as above. + + (All the actions described in section 2.1 are also available.) + +#13.2 Same Game parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _No. of colours_ + + Number of different colours used to fill the grid; the more + colours, the fewer large regions of colour and thus the more + difficult it is to successfully clear the grid. + + _Scoring system_ + + Controls the precise mechanism used for scoring. With the + default system, `(n-2)^2', only regions of three squares or more + will score any points at all. With the alternative `(n-1)^2' + system, regions of two squares score a point each, and larger + regions score relatively more points. + + _Ensure solubility_ + + If this option is ticked (the default state), generated grids + will be guaranteed to have at least one solution. + + If you turn it off, the game generator will not try to guarantee + soluble grids; it will, however, still ensure that there are at + least 2 squares of each colour on the grid at the start (since a + grid with exactly one square of a given colour is _definitely_ + insoluble). Grids generated with this option disabled may + contain more large areas of contiguous colour, leading to + opportunities for higher scores; they can also take less time to + generate. + +#Chapter 14: Flip + + You have a grid of squares, some light and some dark. Your aim is to + light all the squares up at the same time. You can choose any square + and flip its state from light to dark or dark to light, but when you + do so, other squares around it change state as well. + + Each square contains a small diagram showing which other squares + change when you flip it. + +#14.1 Flip controls + + This game can be played with either the keyboard or the mouse. + + Left-click in a square to flip it and its associated squares, or use + the cursor keys to choose a square and the space bar or Enter key to + flip. + + If you use the `Solve' function on this game, it will mark some of + the squares in red. If you click once in every square with a red + mark, the game should be solved. (If you click in a square _without_ + a red mark, a red mark will appear in it to indicate that you will + need to reverse that operation to reach the solution.) + + (All the actions described in section 2.1 are also available.) + +#14.2 Flip parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Shape type_ + + This control determines the shape of the region which is flipped + by clicking in any given square. The default setting, `Crosses', + causes every square to flip itself and its four immediate + neighbours (or three or two if it's at an edge or corner). The + other setting, `Random', causes a random shape to be chosen for + every square, so the game is different every time. + +#Chapter 15: Guess + + You have a set of coloured pegs, and have to reproduce a + predetermined sequence of them (chosen by the computer) within a + certain number of guesses. + + Each guess gets marked with the number of correctly-coloured pegs + in the correct places (in black), and also the number of correctly- + coloured pegs in the wrong places (in white). + + This game is also known (and marketed, by Hasbro, mainly) as a board + game `Mastermind', with 6 colours, 4 pegs per row, and 10 guesses. + However, this version allows custom settings of number of colours + (up to 10), number of pegs per row, and number of guesses. + + Guess was contributed to this collection by James Harvey. + +#15.1 Guess controls + + This game can be played with either the keyboard or the mouse. + + With the mouse, drag a coloured peg from the tray on the left-hand + side to its required position in the current guess; pegs may also + be dragged from current and past guesses to copy them elsewhere. To + remove a peg, drag it off its current position to somewhere invalid. + + Right-clicking in the current guess adds a `hold' marker; pegs that + have hold markers will be automatically added to the next guess + after marking. + + Alternatively, with the keyboard, the up and down cursor keys can + be used to select a peg colour, the left and right keys to select a + peg position, and the space bar or Enter key to place a peg of the + selected colour in the chosen position. `D' or Backspace removes a + peg, and Space adds a hold marker. + + Pressing `h' or `?' will fill the current guess with a suggested + guess. Using this is not recommended for 10 or more pegs as it is + slow. + + When the guess is complete, the smaller feedback pegs will be + highlighted; clicking on these (or moving the peg cursor to them + with the arrow keys and pressing the space bar or Enter key) will + mark the current guess, copy any held pegs to the next guess, and + move the `current guess' marker. + + If you correctly position all the pegs the solution will be + displayed below; if you run out of guesses (or select `Solve...') + the solution will also be revealed. + + (All the actions described in section 2.1 are also available.) + +#15.2 Guess parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. The default game matches the parameters for the board + game `Mastermind'. + + _Colours_ + + Number of colours the solution is chosen from; from 2 to 10 + (more is harder). + + _Pegs per guess_ + + Number of pegs per guess (more is harder). + + _Guesses_ + + Number of guesses you have to find the solution in (fewer is + harder). + + _Allow blanks_ + + Allows blank pegs to be given as part of a guess (makes it + easier, because you know that those will never be counted as + part of the solution). This is turned off by default. + + Note that this doesn't allow blank pegs in the solution; if you + really wanted that, use one extra colour. + + _Allow duplicates_ + + Allows the solution (and the guesses) to contain colours more + than once; this increases the search space (making things + harder), and is turned on by default. + +#Chapter 16: Pegs + + A number of pegs are placed in holes on a board. You can remove a + peg by jumping an adjacent peg over it (horizontally or vertically) + to a vacant hole on the other side. Your aim is to remove all but + one of the pegs initially present. + + This game, best known as `Peg Solitaire', is possibly one of the + oldest puzzle games still commonly known. + +#16.1 Pegs controls + + To move a peg, drag it with the mouse from its current position to + its final position. If the final position is exactly two holes away + from the initial position, is currently unoccupied by a peg, and + there is a peg in the intervening square, the move will be permitted + and the intervening peg will be removed. + + Vacant spaces which you can move a peg into are marked with holes. A + space with no peg and no hole is not available for moving at all: it + is an obstacle which you must work around. + + You can also use the cursor keys to move a position indicator around + the board. Pressing the return key while over a peg, followed by a + cursor key, will jump the peg in that direction (if that is a legal + move). + + (All the actions described in section 2.1 are also available.) + +#16.2 Pegs parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in holes. + + _Board type_ + + Controls whether you are given a board of a standard shape or + a randomly generated shape. The two standard shapes currently + supported are `Cross' and `Octagon' (also commonly known as the + English and European traditional board layouts respectively). + Selecting `Random' will give you a different board shape every + time (but always one that is known to have a solution). + +#Chapter 17: Dominosa + + A normal set of dominoes - that is, one instance of every + (unordered) pair of numbers from 0 to 6 - has been arranged + irregularly into a rectangle; then the number in each square has + been written down and the dominoes themselves removed. Your task is + to reconstruct the pattern by arranging the set of dominoes to match + the provided array of numbers. + + This puzzle is widely credited to O. S. Adler, and takes part of its + name from those initials. + +#17.1 Dominosa controls + + Left-clicking between any two adjacent numbers places a domino + covering them, or removes one if it is already present. Trying to + place a domino which overlaps existing dominoes will remove the ones + it overlaps. + + Right-clicking between two adjacent numbers draws a line between + them, which you can use to remind yourself that you know those two + numbers are _not_ covered by a single domino. Right-clicking again + removes the line. + + You can also use the cursor keys to move a cursor around the grid. + When the cursor is half way between two adjacent numbers, pressing + the return key will place a domino covering those numbers, or + pressing the space bar will lay a line between the two squares. + Repeating either action removes the domino or line. + + Pressing a number key will highlight all occurrences of that number. + Pressing that number again will clear the highlighting. Up to two + different numbers can be highlighted at any given time. + + (All the actions described in section 2.1 are also available.) + +#17.2 Dominosa parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Maximum number on dominoes_ + + Controls the size of the puzzle, by controlling the size of the + set of dominoes used to make it. Dominoes with numbers going + up to N will give rise to an (N+2) x (N+1) rectangle; so, in + particular, the default value of 6 gives an 8x7 grid. + + _Ensure unique solution_ + + Normally, Dominosa will make sure that the puzzles it presents + have only one solution. Puzzles with ambiguous sections can be + more difficult and sometimes more subtle, so if you like you + can turn off this feature. Also, finding _all_ the possible + solutions can be an additional challenge for an advanced player. + Turning off this option can also speed up puzzle generation. + +#Chapter 18: Untangle + + You are given a number of points, some of which have lines drawn + between them. You can move the points about arbitrarily; your aim is + to position the points so that no line crosses another. + + I originally saw this in the form of a Flash game called Planarity + [7], written by John Tantalo. + + [7] http://planarity.net + +#18.1 Untangle controls + + To move a point, click on it with the left mouse button and drag it + into a new position. + + (All the actions described in section 2.1 are also available.) + +#18.2 Untangle parameters + + There is only one parameter available from the `Custom...' option on + the `Type' menu: + + _Number of points_ + + Controls the size of the puzzle, by specifying the number of + points in the generated graph. + +#Chapter 19: Black Box + + A number of balls are hidden in a rectangular arena. You have to + deduce the positions of the balls by firing lasers positioned at the + edges of the arena and observing how their beams are deflected. + + Beams will travel straight from their origin until they hit the + opposite side of the arena (at which point they emerge), unless + affected by balls in one of the following ways: + + - A beam that hits a ball head-on is absorbed and will never re- + emerge. This includes beams that meet a ball on the first rank + of the arena. + + - A beam with a ball in its front-left square and no ball ahead of + it gets deflected 90 degrees to the right. + + - A beam with a ball in its front-right square and no ball ahead + of it gets similarly deflected to the left. + + - A beam that would re-emerge from its entry location is + considered to be `reflected'. + + - A beam which would get deflected before entering the arena by a + ball to the front-left or front-right of its entry point is also + considered to be `reflected'. + + Beams that are reflected appear as a `R'; beams that hit balls head- + on appear as `H'. Otherwise, a number appears at the firing point + and the location where the beam emerges (this number is unique to + that shot). + + You can place guesses as to the location of the balls, based on the + entry and exit patterns of the beams; once you have placed enough + balls a button appears enabling you to have your guesses checked. + + Here is a diagram showing how the positions of balls can create each + of the beam behaviours shown above: + + 1RHR---- + |..O.O...| + 2........3 + |........| + |........| + 3........| + |......O.| + H........| + |.....O..| + 12-RR--- + + As shown, it is possible for a beam to receive multiple reflections + before re-emerging (see turn 3). Similarly, a beam may be reflected + (possibly more than once) before receiving a hit (the `H' on the + left side of the example). + + Note that any layout with more than 4 balls may have a non-unique + solution. The following diagram illustrates this; if you know the + board contains 5 balls, it is impossible to determine where the + fifth ball is (possible positions marked with an x): + + -------- + |........| + |........| + |..O..O..| + |...xx...| + |...xx...| + |..O..O..| + |........| + |........| + -------- + + For this reason, when you have your guesses checked, the game + will check that your solution _produces the same results_ as the + computer's, rather than that your solution is identical to the + computer's. So in the above example, you could put the fifth ball at + _any_ of the locations marked with an x, and you would still win. + + Black Box was contributed to this collection by James Harvey. + +#19.1 Black Box controls + + To fire a laser beam, left-click in a square around the edge of + the arena. The results will be displayed immediately. Clicking or + holding the left button on one of these squares will highlight the + current go (or a previous go) to confirm the exit point for that + laser, if applicable. + + To guess the location of a ball, left-click within the arena and a + black circle will appear marking the guess; click again to remove + the guessed ball. + + Locations in the arena may be locked against modification by right- + clicking; whole rows and columns may be similarly locked by right- + clicking in the laser square above/below that column, or to the + left/right of that row. + + The cursor keys may also be used to move around the grid. Pressing + the Enter key will fire a laser or add a new ball-location guess, + and pressing Space will lock a cell, row, or column. + + When an appropriate number of balls have been guessed, a button will + appear at the top-left corner of the grid; clicking that (with mouse + or cursor) will check your guesses. + + If you click the `check' button and your guesses are not correct, + the game will show you the minimum information necessary to + demonstrate this to you, so you can try again. If your ball + positions are not consistent with the beam paths you already know + about, one beam path will be circled to indicate that it proves you + wrong. If your positions match all the existing beam paths but are + still wrong, one new beam path will be revealed (written in red) + which is not consistent with your current guesses. + + If you decide to give up completely, you can select Solve to reveal + the actual ball positions. At this point, correctly-placed balls + will be displayed as filled black circles, incorrectly-placed balls + as filled black circles with red crosses, and missing balls as + filled red circles. In addition, a red circle marks any laser you + had already fired which is not consistent with your ball layout + (just as when you press the `check' button), and red text marks + any laser you _could_ have fired in order to distinguish your ball + layout from the correct one. + + (All the actions described in section 2.1 are also available.) + +#19.2 Black Box parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. There are 2 x _Width_ x _Height_ lasers + per grid, two per row and two per column. + + _No. of balls_ + + Number of balls to place in the grid. This can be a single + number, or a range (separated with a hyphen, like `2-6'), + and determines the number of balls to place on the grid. + The `reveal' button is only enabled if you have guessed an + appropriate number of balls; a guess using a different number + to the original solution is still acceptable, if all the beam + inputs and outputs match. + +#Chapter 20: Slant + + You have a grid of squares. Your aim is to draw a diagonal line + through each square, and choose which way each line slants so that + the following conditions are met: + + - The diagonal lines never form a loop. + + - Any point with a circled number has precisely that many lines + meeting at it. (Thus, a 4 is the centre of a cross shape, + whereas a zero is the centre of a diamond shape - or rather, a + partial diamond shape, because a zero can never appear in the + middle of the grid because that would immediately cause a loop.) + + Credit for this puzzle goes to Nikoli [8]. + + [8] http://www.nikoli.co.jp/ja/puzzles/gokigen_naname (in Japanese) + +#20.1 Slant controls + + Left-clicking in a blank square will place a \ in it (a line leaning + to the left, i.e. running from the top left of the square to the + bottom right). Right-clicking in a blank square will place a / in it + (leaning to the right, running from top right to bottom left). + + Continuing to click either button will cycle between the three + possible square contents. Thus, if you left-click repeatedly in a + blank square it will change from blank to \ to / back to blank, and + if you right-click repeatedly the square will change from blank to / + to \ back to blank. (Therefore, you can play the game entirely with + one button if you need to.) + + You can also use the cursor keys to move around the grid. Pressing + the return or space keys will place a \ or a /, respectively, and + will then cycle them as above. You can also press / or \ to place a + / or \, respectively, independent of what is already in the cursor + square. Backspace removes any line from the cursor square. + + (All the actions described in section 2.1 are also available.) + +#20.2 Slant parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. At Hard + level, you are required to do deductions based on knowledge of + _relationships_ between squares rather than always being able to + deduce the exact contents of one square at a time. (For example, + you might know that two squares slant in the same direction, + even if you don't yet know what that direction is, and this + might enable you to deduce something about still other squares.) + Even at Hard level, guesswork and backtracking should never be + necessary. + +#Chapter 21: Light Up + + You have a grid of squares. Some are filled in black; some of the + black squares are numbered. Your aim is to `light up' all the empty + squares by placing light bulbs in some of them. + + Each light bulb illuminates the square it is on, plus all squares + in line with it horizontally or vertically unless a black square is + blocking the way. + + To win the game, you must satisfy the following conditions: + + - All non-black squares are lit. + + - No light is lit by another light. + + - All numbered black squares have exactly that number of lights + adjacent to them (in the four squares above, below, and to the + side). + + Non-numbered black squares may have any number of lights adjacent to + them. + + Credit for this puzzle goes to Nikoli [9]. + + Light Up was contributed to this collection by James Harvey. + + [9] http://www.nikoli.co.jp/en/puzzles/akari.html (beware of Flash) + +#21.1 Light Up controls + + Left-clicking in a non-black square will toggle the presence of a + light in that square. Right-clicking in a non-black square toggles a + mark there to aid solving; it can be used to highlight squares that + cannot be lit, for example. + + You may not place a light in a marked square, nor place a mark in a + lit square. + + The game will highlight obvious errors in red. Lights lit by other + lights are highlighted in this way, as are numbered squares which do + not (or cannot) have the right number of lights next to them. + + Thus, the grid is solved when all non-black squares have yellow + highlights and there are no red lights. + + (All the actions described in section 2.1 are also available.) + +#21.2 Light Up parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _%age of black squares_ + + Rough percentage of black squares in the grid. + + This is a hint rather than an instruction. If the grid generator + is unable to generate a puzzle to this precise specification, it + will increase the proportion of black squares until it can. + + _Symmetry_ + + Allows you to specify the required symmetry of the black squares + in the grid. (This does not affect the difficulty of the puzzles + noticeably.) + + _Difficulty_ + + `Easy' means that the puzzles should be soluble without + backtracking or guessing, `Hard' means that some guesses will + probably be necessary. + +#Chapter 22: Map + + You are given a map consisting of a number of regions. Your task is + to colour each region with one of four colours, in such a way that + no two regions sharing a boundary have the same colour. You are + provided with some regions already coloured, sufficient to make the + remainder of the solution unique. + + Only regions which share a length of border are required to be + different colours. Two regions which meet at only one _point_ (i.e. + are diagonally separated) may be the same colour. + + I believe this puzzle is original; I've never seen an implementation + of it anywhere else. The concept of a four-colouring puzzle was + suggested by Owen Dunn; credit must also go to Nikoli and to Verity + Allan for inspiring the train of thought that led to me realising + Owen's suggestion was a viable puzzle. Thanks also to Gareth Taylor + for many detailed suggestions. + +#22.1 Map controls + + To colour a region, click the left mouse button on an existing + region of the desired colour and drag that colour into the new + region. + + (The program will always ensure the starting puzzle has at least one + region of each colour, so that this is always possible!) + + If you need to clear a region, you can drag from an empty region, or + from the puzzle boundary if there are no empty regions left. + + Dragging a colour using the _right_ mouse button will stipple the + region in that colour, which you can use as a note to yourself that + you think the region _might_ be that colour. A region can contain + stipples in multiple colours at once. (This is often useful at the + harder difficulty levels.) + + You can also use the cursor keys to move around the map: the colour + of the cursor indicates the position of the colour you would drag + (which is not obvious if you're on a region's boundary, since it + depends on the direction from which you approached the boundary). + Pressing the return key starts a drag of that colour, as above, + which you control with the cursor keys; pressing the return key + again finishes the drag. The space bar can be used similarly to + create a stippled region. Double-pressing the return key (without + moving the cursor) will clear the region, as a drag from an empty + region does: this is useful with the cursor mode if you have filled + the entire map in but need to correct the layout. + + If you press L during play, the game will toggle display of a number + in each region of the map. This is useful if you want to discuss a + particular puzzle instance with a friend - having an unambiguous + name for each region is much easier than trying to refer to them all + by names such as `the one down and right of the brown one on the top + border'. + + (All the actions described in section 2.1 are also available.) + +#22.2 Map parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Regions_ + + Number of regions in the generated map. + + _Difficulty_ + + In `Easy' mode, there should always be at least one region whose + colour can be determined trivially. In `Normal' and `Hard' + modes, you will have to use increasingly complex logic to deduce + the colour of some regions. However, it will always be possible + without having to guess or backtrack. + + In `Unreasonable' mode, the program will feel free to generate + puzzles which are as hard as it can possibly make them: the + only constraint is that they should still have a unique + solution. Solving Unreasonable puzzles may require guessing and + backtracking. + +#Chapter 23: Loopy + + You are given a grid of dots, marked with yellow lines to indicate + which dots you are allowed to connect directly together. Your aim is + to use some subset of those yellow lines to draw a single unbroken + loop from dot to dot within the grid. + + Some of the spaces between the lines contain numbers. These numbers + indicate how many of the lines around that space form part of the + loop. The loop you draw must correctly satisfy all of these clues to + be considered a correct solution. + + In the default mode, the dots are arranged in a grid of squares; + however, you can also play on triangular or hexagonal grids, or even + more exotic ones. + + Credit for the basic puzzle idea goes to Nikoli [10]. + + Loopy was originally contributed to this collection by Mike Pinna, + and subsequently enhanced to handle various types of non-square grid + by Lambros Lambrou. + + [10] http://www.nikoli.co.jp/en/puzzles/slitherlink.html (beware of + Flash) + +#23.1 Loopy controls + + Click the left mouse button on a yellow line to turn it black, + indicating that you think it is part of the loop. Click again to + turn the line yellow again (meaning you aren't sure yet). + + If you are sure that a particular line segment is _not_ part of the + loop, you can click the right mouse button to remove it completely. + Again, clicking a second time will turn the line back to yellow. + + (All the actions described in section 2.1 are also available.) + +#23.2 Loopy parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid, measured in number of regions across and down. For + square grids, it's clear how this is counted; for other types of + grid you may have to think a bit to see how the dimensions are + measured. + + _Grid type_ + + Allows you to choose between a selection of types of tiling. + Some have all the faces the same but may have multiple different + types of vertex (e.g. the _Cairo_ or _Kites_ mode); others + have all the vertices the same but may have different types of + face (e.g. the _Great Hexagonal_). The square, triangular and + honeycomb grids are fully regular, and have all their vertices + _and_ faces the same; this makes them the least confusing to + play. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. + +#Chapter 24: Inertia + + You are a small green ball sitting in a grid full of obstacles. Your + aim is to collect all the gems without running into any mines. + + You can move the ball in any orthogonal _or diagonal_ direction. + Once the ball starts moving, it will continue until something stops + it. A wall directly in its path will stop it (but if it is moving + diagonally, it will move through a diagonal gap between two other + walls without stopping). Also, some of the squares are `stops'; when + the ball moves on to a stop, it will stop moving no matter what + direction it was going in. Gems do _not_ stop the ball; it picks + them up and keeps on going. + + Running into a mine is fatal. Even if you picked up the last gem in + the same move which then hit a mine, the game will count you as dead + rather than victorious. + + This game was originally implemented for Windows by Ben Olmstead + [11], who was kind enough to release his source code on request so + that it could be re-implemented for this collection. + + [11] http://xn13.com/ + +#24.1 Inertia controls + + You can move the ball in any of the eight directions using the + numeric keypad. Alternatively, if you click the left mouse button + on the grid, the ball will begin a move in the general direction of + where you clicked. + + If you use the `Solve' function on this game, the program will + compute a path through the grid which collects all the remaining + gems and returns to the current position. A hint arrow will appear + on the ball indicating the direction in which you should move to + begin on this path. If you then move in that direction, the arrow + will update to indicate the next direction on the path. You can + also press Space to automatically move in the direction of the hint + arrow. If you move in a different direction from the one shown + by the arrow, arrows will be shown only if the puzzle is still + solvable. + + All the actions described in section 2.1 are also available. In + particular, if you do run into a mine and die, you can use the Undo + function and resume playing from before the fatal move. The game + will keep track of the number of times you have done this. + +#24.2 Inertia parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + +#Chapter 25: Tents + + You have a grid of squares, some of which contain trees. Your aim is + to place tents in some of the remaining squares, in such a way that + the following conditions are met: + + - There are exactly as many tents as trees. + + - The tents and trees can be matched up in such a way that each + tent is directly adjacent (horizontally or vertically, but not + diagonally) to its own tree. However, a tent may be adjacent to + other trees as well as its own. + + - No two tents are adjacent horizontally, vertically _or + diagonally_. + + - The number of tents in each row, and in each column, matches the + numbers given round the sides of the grid. + + This puzzle can be found in several places on the Internet, and was + brought to my attention by e-mail. I don't know who I should credit + for inventing it. + +#25.1 Tents controls + + Left-clicking in a blank square will place a tent in it. Right- + clicking in a blank square will colour it green, indicating that you + are sure it _isn't_ a tent. Clicking either button in an occupied + square will clear it. + + If you _drag_ with the right button along a row or column, every + blank square in the region you cover will be turned green, and no + other squares will be affected. (This is useful for clearing the + remainder of a row once you have placed all its tents.) + + You can also use the cursor keys to move around the grid. Pressing + the return key over an empty square will place a tent, and pressing + the space bar over an empty square will colour it green; either key + will clear an occupied square. Holding Shift and pressing the cursor + keys will colour empty squares green. Holding Control and pressing + the cursor keys will colour green both empty squares and squares + with tents. + + (All the actions described in section 2.1 are also available.) + +#25.2 Tents parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. More difficult + puzzles require more complex deductions, but at present none + of the available difficulty levels requires guesswork or + backtracking. + +#Chapter 26: Bridges + + You have a set of islands distributed across the playing area. + Each island contains a number. Your aim is to connect the islands + together with bridges, in such a way that: + + - Bridges run horizontally or vertically. + + - The number of bridges terminating at any island is equal to the + number written in that island. + + - Two bridges may run in parallel between the same two islands, + but no more than two may do so. + + - No bridge crosses another bridge. + + - All the islands are connected together. + + There are some configurable alternative modes, which involve + changing the parallel-bridge limit to something other than 2, and + introducing the additional constraint that no sequence of bridges + may form a loop from one island back to the same island. The rules + stated above are the default ones. + + Credit for this puzzle goes to Nikoli [12]. + + Bridges was contributed to this collection by James Harvey. + + [12] http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html (beware + of Flash) + +#26.1 Bridges controls + + To place a bridge between two islands, click the mouse down on one + island and drag it towards the other. You do not need to drag all + the way to the other island; you only need to move the mouse far + enough for the intended bridge direction to be unambiguous. (So you + can keep the mouse near the starting island and conveniently throw + bridges out from it in many directions.) + + Doing this again when a bridge is already present will add another + parallel bridge. If there are already as many bridges between the + two islands as permitted by the current game rules (i.e. two by + default), the same dragging action will remove all of them. + + If you want to remind yourself that two islands definitely _do not_ + have a bridge between them, you can right-drag between them in the + same way to draw a `non-bridge' marker. + + If you think you have finished with an island (i.e. you have placed + all its bridges and are confident that they are in the right + places), you can mark the island as finished by left-clicking on it. + This will highlight it and all the bridges connected to it, and you + will be prevented from accidentally modifying any of those bridges + in future. Left-clicking again on a highlighted island will unmark + it and restore your ability to modify it. + + You can also use the cursor keys to move around the grid: if + possible the cursor will always move orthogonally, otherwise it + will move towards the nearest island to the indicated direction. + Holding Control and pressing a cursor key will lay a bridge in that + direction (if available); Shift and a cursor key will lay a `non- + bridge' marker. Pressing the return key followed by a cursor key + will also lay a bridge in that direction. + + You can mark an island as finished by pressing the space bar or by + pressing the return key twice. + + By pressing a number key, you can jump to the nearest island with + that number. Letters `a', ..., `f' count as 10, ..., 15 and `0' as + 16. + + Violations of the puzzle rules will be marked in red: + + - An island with too many bridges will be highlighted in red. + + - An island with too few bridges will be highlighted in red if it + is definitely an error (as opposed to merely not being finished + yet): if adding enough bridges would involve having to cross + another bridge or remove a non-bridge marker, or if the island + has been highlighted as complete. + + - A group of islands and bridges may be highlighted in red if it + is a closed subset of the puzzle with no way to connect it to + the rest of the islands. For example, if you directly connect + two 1s together with a bridge and they are not the only two + islands on the grid, they will light up red to indicate that + such a group cannot be contained in any valid solution. + + - If you have selected the (non-default) option to disallow loops + in the solution, a group of bridges which forms a loop will be + highlighted. + + (All the actions described in section 2.1 are also available.) + +#26.2 Bridges parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Difficulty_ + + Difficulty level of puzzle. + + _Allow loops_ + + This is set by default. If cleared, puzzles will be generated in + such a way that they are always soluble without creating a loop, + and solutions which do involve a loop will be disallowed. + + _Max. bridges per direction_ + + Maximum number of bridges in any particular direction. The + default is 2, but you can change it to 1, 3 or 4. In general, + fewer is easier. + + _%age of island squares_ + + Gives a rough percentage of islands the generator will try and + lay before finishing the puzzle. Certain layouts will not manage + to lay enough islands; this is an upper bound. + + _Expansion factor (%age)_ + + The grid generator works by picking an existing island at random + (after first creating an initial island somewhere). It then + decides on a direction (at random), and then works out how far + it could extend before creating another island. This parameter + determines how likely it is to extend as far as it can, rather + than choosing somewhere closer. + + High expansion factors usually mean easier puzzles with fewer + possible islands; low expansion factors can create lots of + tightly-packed islands. + +#Chapter 27: Unequal + + You have a square grid; each square may contain a digit from 1 to + the size of the grid, and some squares have clue signs between them. + Your aim is to fully populate the grid with numbers such that: + + - Each row contains only one occurrence of each digit + + - Each column contains only one occurrence of each digit + + - All the clue signs are satisfied. + + There are two modes for this game, `Unequal' and `Adjacent'. + + In `Unequal' mode, the clue signs are greater-than symbols + indicating one square's value is greater than its neighbour's. In + this mode not all clues may be visible, particularly at higher + difficulty levels. + + In `Adjacent' mode, the clue signs are bars indicating one square's + value is numerically adjacent (i.e. one higher or one lower) than + its neighbour. In this mode all clues are always visible: absence of + a bar thus means that a square's value is definitely not numerically + adjacent to that neighbour's. + + In `Trivial' difficulty level (available via the `Custom' game type + selector), there are no greater-than signs in `Unequal' mode; the + puzzle is to solve the Latin square only. + + At the time of writing, the `Unequal' mode of this puzzle is + appearing in the Guardian weekly under the name `Futoshiki'. + + Unequal was contributed to this collection by James Harvey. + +#27.1 Unequal controls + + Unequal shares much of its control system with Solo. + + To play Unequal, simply click the mouse in any empty square and then + type a digit or letter on the keyboard to fill that square. If you + make a mistake, click the mouse in the incorrect square and press + Space to clear it again (or use the Undo feature). + + If you _right_-click in a square and then type a number, that + number will be entered in the square as a `pencil mark'. You can + have pencil marks for multiple numbers in the same square. Squares + containing filled-in numbers cannot also contain pencil marks. + + The game pays no attention to pencil marks, so exactly what you + use them for is up to you: you can use them as reminders that a + particular square needs to be re-examined once you know more about + a particular number, or you can use them as lists of the possible + numbers in a given square, or anything else you feel like. + + To erase a single pencil mark, right-click in the square and type + the same number again. + + All pencil marks in a square are erased when you left-click and type + a number, or when you left-click and press space. Right-clicking and + pressing space will also erase pencil marks. + + As for Solo, the cursor keys can be used in conjunction with the + digit keys to set numbers or pencil marks. You can also use the `M' + key to auto-fill every numeric hint, ready for removal as required, + or the `H' key to do the same but also to remove all obvious hints. + + Alternatively, use the cursor keys to move the mark around the grid. + Pressing the return key toggles the mark (from a normal mark to a + pencil mark), and typing a number in is entered in the square in the + appropriate way; typing in a 0 or using the space bar will clear a + filled square. + + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. Holding Control or Shift and pressing + an arrow key likewise marks any clue adjacent to the cursor in the + given direction. + + (All the actions described in section 2.1 are also available.) + +#27.2 Unequal parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Mode_ + + Mode of the puzzle (`Unequal' or `Adjacent') + + _Size (s*s)_ + + Size of grid. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. At Trivial + level, there are no greater-than signs; the puzzle is to solve + the Latin square only. At Recursive level (only available via + the `Custom' game type selector) backtracking will be required, + but the solution should still be unique. The levels in between + require increasingly complex reasoning to avoid having to + backtrack. + +#Chapter 28: Galaxies + + You have a rectangular grid containing a number of dots. Your aim is + to draw edges along the grid lines which divide the rectangle into + regions in such a way that every region is 180-degree rotationally + symmetric, and contains exactly one dot which is located at its + centre of symmetry. + + This puzzle was invented by Nikoli [13], under the name `Tentai + Show'; its name is commonly translated into English as `Spiral + Galaxies'. + + Galaxies was contributed to this collection by James Harvey. + + [13] http://www.nikoli.co.jp/en/puzzles/astronomical_show.html + +#28.1 Galaxies controls + + Left-click on any grid line to draw an edge if there isn't one + already, or to remove one if there is. When you create a valid + region (one which is closed, contains exactly one dot, is 180-degree + symmetric about that dot, and contains no extraneous edges inside + it) it will be highlighted automatically; so your aim is to have the + whole grid highlighted in that way. + + During solving, you might know that a particular grid square belongs + to a specific dot, but not be sure of where the edges go and which + other squares are connected to the dot. In order to mark this so you + don't forget, you can right-click on the dot and drag, which will + create an arrow marker pointing at the dot. Drop that in a square of + your choice and it will remind you which dot it's associated with. + You can also right-click on existing arrows to pick them up and move + them, or destroy them by dropping them off the edge of the grid. + (Also, if you're not sure which dot an arrow is pointing at, you can + pick it up and move it around to make it clearer. It will swivel + constantly as you drag it, to stay pointed at its parent dot.) + + You can also use the cursor keys to move around the grid squares and + lines. Pressing the return key when over a grid line will draw or + clear its edge, as above. Pressing the return key when over a dot + will pick up an arrow, to be dropped the next time the return key + is pressed; this can also be used to move existing arrows around, + removing them by dropping them on a dot or another arrow. + + (All the actions described in section 2.1 are also available.) + +#28.2 Galaxies parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. More difficult + puzzles require more complex deductions, and the `Unreasonable' + difficulty level may require backtracking. + +#Chapter 29: Filling + + You have a grid of squares, some of which contain digits, and the + rest of which are empty. Your job is to fill in digits in the empty + squares, in such a way that each connected region of squares all + containing the same digit has an area equal to that digit. + + (`Connected region', for the purposes of this game, does not count + diagonally separated squares as adjacent.) + + For example, it follows that no square can contain a zero, and that + two adjacent squares can not both contain a one. No region has an + area greater than 9 (because then its area would not be a single + digit). + + Credit for this puzzle goes to Nikoli [14]. + + Filling was contributed to this collection by Jonas Koelker. + + [14] http://www.nikoli.co.jp/en/puzzles/fillomino.html + +#29.1 Filling controls + + To play Filling, simply click the mouse in any empty square and + then type a digit on the keyboard to fill that square. By dragging + the mouse, you can select multiple squares to fill with a single + keypress. If you make a mistake, click the mouse in the incorrect + square and press 0, Space, Backspace or Enter to clear it again (or + use the Undo feature). + + You can also move around the grid with the cursor keys; typing a + digit will fill the square containing the cursor with that number; + typing 0 will clear it. You can also select multiple squares for + numbering or clearing with the return and arrow keys, before typing + a digit to fill or clear the highlighted squares (as above). The + space bar adds and removes single squares to and from the selection. + Backspace and escape remove all squares from the selection. + + (All the actions described in section 2.1 are also available.) + +#29.2 Filling parameters + + Filling allows you to configure the number of rows and columns of + the grid, through the `Type' menu. + +#Chapter 30: Keen + + You have a square grid; each square may contain a digit from 1 to + the size of the grid. The grid is divided into blocks of varying + shape and size, with arithmetic clues written in them. Your aim is + to fully populate the grid with digits such that: + + - Each row contains only one occurrence of each digit + + - Each column contains only one occurrence of each digit + + - The digits in each block can be combined to form the number + stated in the clue, using the arithmetic operation given in the + clue. That is: + + - An addition clue means that the sum of the digits in the + block must be the given number. For example, `15+' means the + contents of the block adds up to fifteen. + + - A multiplication clue (e.g. `60*'), similarly, means that + the product of the digits in the block must be the given + number. + + - A subtraction clue will always be written in a block of + size two, and it means that one of the digits in the block + is greater than the other by the given amount. For example, + `2-' means that one of the digits in the block is 2 more + than the other, or equivalently that one digit minus the + other one is 2. The two digits could be either way round, + though. + + - A division clue (e.g. `3/'), similarly, is always in a block + of size two and means that one digit divided by the other is + equal to the given amount. + + Note that a block may contain the same digit more than once + (provided the identical ones are not in the same row and + column). This rule is precisely the opposite of the rule in + Solo's `Killer' mode (see chapter 11). + + This puzzle appears in the Times under the name `KenKen'. + +#30.1 Keen controls + + Keen shares much of its control system with Solo (and Unequal). + + To play Keen, simply click the mouse in any empty square and then + type a digit on the keyboard to fill that square. If you make a + mistake, click the mouse in the incorrect square and press Space to + clear it again (or use the Undo feature). + + If you _right_-click in a square and then type a number, that + number will be entered in the square as a `pencil mark'. You can + have pencil marks for multiple numbers in the same square. Squares + containing filled-in numbers cannot also contain pencil marks. + + The game pays no attention to pencil marks, so exactly what you + use them for is up to you: you can use them as reminders that a + particular square needs to be re-examined once you know more about + a particular number, or you can use them as lists of the possible + numbers in a given square, or anything else you feel like. + + To erase a single pencil mark, right-click in the square and type + the same number again. + + All pencil marks in a square are erased when you left-click and type + a number, or when you left-click and press space. Right-clicking and + pressing space will also erase pencil marks. + + As for Solo, the cursor keys can be used in conjunction with the + digit keys to set numbers or pencil marks. Use the cursor keys to + move a highlight around the grid, and type a digit to enter it in + the highlighted square. Pressing return toggles the highlight into a + mode in which you can enter or remove pencil marks. + + Pressing M will fill in a full set of pencil marks in every square + that does not have a main digit in it. + + (All the actions described in section 2.1 are also available.) + +#30.2 Keen parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Grid size_ + + Specifies the size of the grid. Lower limit is 3; upper limit is + 9 (because the user interface would become more difficult with + `digits' bigger than 9!). + + _Difficulty_ + + Controls the difficulty of the generated puzzle. At Unreasonable + level, some backtracking will be required, but the solution + should still be unique. The remaining levels require + increasingly complex reasoning to avoid having to backtrack. + + _Multiplication only_ + + If this is enabled, all boxes will be multiplication boxes. With + this rule, the puzzle is known as `Inshi No Heya'. + +#Chapter 31: Towers + + You have a square grid. On each square of the grid you can build + a tower, with its height ranging from 1 to the size of the grid. + Around the edge of the grid are some numeric clues. + + Your task is to build a tower on every square, in such a way that: + + - Each row contains every possible height of tower once + + - Each column contains every possible height of tower once + + - Each numeric clue describes the number of towers that can be + seen if you look into the square from that direction, assuming + that shorter towers are hidden behind taller ones. For example, + in a 5x5 grid, a clue marked `5' indicates that the five tower + heights must appear in increasing order (otherwise you would + not be able to see all five towers), whereas a clue marked `1' + indicates that the tallest tower (the one marked 5) must come + first. + + In harder or larger puzzles, some towers will be specified for you + as well as the clues round the edge, and some edge clues may be + missing. + + This puzzle appears on the web under various names, particularly + `Skyscrapers', but I don't know who first invented it. + +#31.1 Towers controls + + Towers shares much of its control system with Solo, Unequal and + Keen. + + To play Towers, simply click the mouse in any empty square and then + type a digit on the keyboard to fill that square with a tower of + the given height. If you make a mistake, click the mouse in the + incorrect square and press Space to clear it again (or use the Undo + feature). + + If you _right_-click in a square and then type a number, that + number will be entered in the square as a `pencil mark'. You can + have pencil marks for multiple numbers in the same square. A square + containing a tower cannot also contain pencil marks. + + The game pays no attention to pencil marks, so exactly what you + use them for is up to you: you can use them as reminders that a + particular square needs to be re-examined once you know more about + a particular number, or you can use them as lists of the possible + numbers in a given square, or anything else you feel like. + + To erase a single pencil mark, right-click in the square and type + the same number again. + + All pencil marks in a square are erased when you left-click and type + a number, or when you left-click and press space. Right-clicking and + pressing space will also erase pencil marks. + + As for Solo, the cursor keys can be used in conjunction with the + digit keys to set numbers or pencil marks. Use the cursor keys to + move a highlight around the grid, and type a digit to enter it in + the highlighted square. Pressing return toggles the highlight into a + mode in which you can enter or remove pencil marks. + + Pressing M will fill in a full set of pencil marks in every square + that does not have a main digit in it. + + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. Holding Control or Shift and pressing an + arrow key likewise marks any clue in the given direction. + + (All the actions described in section 2.1 are also available.) + +#31.2 Towers parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Grid size_ + + Specifies the size of the grid. Lower limit is 3; upper limit is + 9 (because the user interface would become more difficult with + `digits' bigger than 9!). + + _Difficulty_ + + Controls the difficulty of the generated puzzle. At Unreasonable + level, some backtracking will be required, but the solution + should still be unique. The remaining levels require + increasingly complex reasoning to avoid having to backtrack. + +#Chapter 32: Singles + + You have a grid of white squares, all of which contain numbers. Your + task is to colour some of the squares black (removing the number) so + as to satisfy all of the following conditions: + + - No number occurs more than once in any row or column. + + - No black square is horizontally or vertically adjacent to any + other black square. + + - The remaining white squares must all form one contiguous region + (connected by edges, not just touching at corners). + + Credit for this puzzle goes to Nikoli [15] who call it Hitori. + + Singles was contributed to this collection by James Harvey. + + [15] http://www.nikoli.com/en/puzzles/hitori.html (beware of Flash) + +#32.1 Singles controls + + Left-clicking on an empty square will colour it black; left-clicking + again will restore the number. Right-clicking will add a circle + (useful for indicating that a cell is definitely not black). + + You can also use the cursor keys to move around the grid. Pressing + the return or space keys will turn a square black or add a circle + respectively, and pressing the key again will restore the number or + remove the circle. + + (All the actions described in section 2.1 are also available.) + +#32.2 Singles parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. + +#Chapter 33: Magnets + + A rectangular grid has been filled with a mixture of magnets (that + is, dominoes with one positive end and one negative end) and blank + dominoes (that is, dominoes with two neutral poles). These dominoes + are initially only seen in silhouette. Around the grid are placed a + number of clues indicating the number of positive and negative poles + contained in certain columns and rows. + + Your aim is to correctly place the magnets and blank dominoes such + that all the clues are satisfied, with the additional constraint + that no two similar magnetic poles may be orthogonally adjacent + (since they repel). Neutral poles do not repel, and can be adjacent + to any other pole. + + Credit for this puzzle goes to Janko [16]. + + Magnets was contributed to this collection by James Harvey. + + [16] http://www.janko.at/Raetsel/Magnete/index.htm + +#33.1 Magnets controls + + Left-clicking on an empty square places a magnet at that position + with the positive pole on the square and the negative pole on the + other half of the magnet; left-clicking again reverses the polarity, + and a third click removes the magnet. + + Right-clicking on an empty square places a blank domino there. + Right-clicking again places two question marks on the domino, + signifying `this cannot be blank' (which can be useful to note + deductions while solving), and right-clicking again empties the + domino. + + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. + + You can also use the cursor keys to move a cursor around the grid. + Pressing the return key will lay a domino with a positive pole at + that position; pressing again reverses the polarity and then removes + the domino, as with left-clicking. Using the space bar allows + placement of blank dominoes and cannot-be-blank hints, as for right- + clicking. + + (All the actions described in section 2.1 are also available.) + +#33.2 Magnets parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. There will be half _Width_ x _Height_ + dominoes in the grid: if this number is odd then one square will + be blank. + + (Grids with at least one odd dimension tend to be easier to + solve.) + + _Difficulty_ + + Controls the difficulty of the generated puzzle. At Tricky + level, you are required to make more deductions about empty + dominoes and row/column counts. + + _Strip clues_ + + If true, some of the clues around the grid are removed at + generation time, making the puzzle more difficult. + +#Chapter 34: Signpost + + You have a grid of squares; each square (except the last one) + contains an arrow, and some squares also contain numbers. Your job + is to connect the squares to form a continuous list of numbers + starting at 1 and linked in the direction of the arrows - so the + arrow inside the square with the number 1 will point to the square + containing the number 2, which will point to the square containing + the number 3, etc. Each square can be any distance away from the + previous one, as long as it is somewhere in the direction of the + arrow. + + By convention the first and last numbers are shown; one or more + interim numbers may also appear at the beginning. + + Credit for this puzzle goes to Janko [17], who call it `Pfeilpfad' + (`arrow path'). + + Signpost was contributed to this collection by James Harvey. + + [17] http://janko.at/Raetsel/Pfeilpfad/index.htm + +#34.1 Signpost controls + + To play Signpost, you connect squares together by dragging from + one square to another, indicating that they are adjacent in the + sequence. Drag with the left button from a square to its successor, + or with the right button from a square to its predecessor. + + If you connect together two squares in this way and one of them has + a number in it, the appropriate number will appear in the other + square. If you connect two non-numbered squares, they will be + assigned temporary algebraic labels: on the first occasion, they + will be labelled `a' and `a+1', and then `b' and `b+1', and so on. + Connecting more squares on to the ends of such a chain will cause + them all to be labelled with the same letter. + + When you left-click or right-click in a square, the legal squares to + connect it to will be shown. + + The arrow in each square starts off black, and goes grey once you + connect the square to its successor. Also, each square which needs + a predecessor has a small dot in the bottom left corner, which + vanishes once you link a square to it. So your aim is always to + connect a square with a black arrow to a square with a dot. + + To remove any links for a particular square (both incoming and + outgoing), left-drag it off the grid. To remove a whole chain, + right-drag any square in the chain off the grid. + + You can also use the cursor keys to move around the grid squares + and lines. Pressing the return key when over a square starts a link + operation, and pressing the return key again over a square will + finish the link, if allowable. Pressing the space bar over a square + will show the other squares pointing to it, and allow you to form a + backward link, and pressing the space bar again cancels this. + + (All the actions described in section 2.1 are also available.) + +#34.2 Signpost parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Force start/end to corners_ + + If true, the start and end squares are always placed in opposite + corners (the start at the top left, and the end at the bottom + right). If false the start and end squares are placed randomly + (although always both shown). + +#Chapter 35: Range + + You have a grid of squares; some squares contain numbers. Your job + is to colour some of the squares black, such that several criteria + are satisfied: + + - no square with a number is coloured black. + + - no two black squares are adjacent (horizontally or vertically). + + - for any two white squares, there is a path between them using + only white squares. + + - for each square with a number, that number denotes the total + number of white squares reachable from that square going in a + straight line in any horizontal or vertical direction until + hitting a wall or a black square; the square with the number is + included in the total (once). + + For instance, a square containing the number one must have four + black squares as its neighbours by the last criterion; but then it's + impossible for it to be connected to any outside white square, which + violates the second to last criterion. So no square will contain the + number one. + + Credit for this puzzle goes to Nikoli, who have variously called it + `Kurodoko', `Kuromasu' or `Where is Black Cells'. [18]. + + Range was contributed to this collection by Jonas Koelker. + + [18] http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html + +#35.1 Range controls + + Click with the left button to paint a square black, or with the + right button to mark a square with a dot to indicate that you are + sure it should _not_ be painted black. Repeated clicking with either + button will cycle the square through the three possible states + (filled, dotted or empty) in opposite directions. + + You can also use the cursor keys to move around the grid squares. + Pressing Return does the same as clicking with the left button, + while pressing Space does the same as a right button click. Moving + with the cursor keys while holding Shift will place dots in all + squares that are moved through. + + (All the actions described in section 2.1 are also available.) + +#35.2 Range parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + +#Chapter 36: Pearl + + You have a grid of squares. Your job is to draw lines between the + centres of horizontally or vertically adjacent squares, so that the + lines form a single closed loop. In the resulting grid, some of the + squares that the loop passes through will contain corners, and some + will be straight horizontal or vertical lines. (And some squares can + be completely empty - the loop doesn't have to pass through every + square.) + + Some of the squares contain black and white circles, which are clues + that the loop must satisfy. + + A black circle in a square indicates that that square is a corner, + but neither of the squares adjacent to it in the loop is also a + corner. + + A white circle indicates that the square is a straight edge, but _at + least one_ of the squares adjacent to it in the loop is a corner. + + (In both cases, the clue only constrains the two squares adjacent + _in the loop_, that is, the squares that the loop passes into after + leaving the clue square. The squares that are only adjacent _in the + grid_ are not constrained.) + + Credit for this puzzle goes to Nikoli, who call it `Masyu'. [19] + + Thanks to James Harvey for assistance with the implementation. + + [19] http://www.nikoli.co.jp/en/puzzles/masyu.html (beware of Flash) + +#36.1 Pearl controls + + Click with the left button on a grid edge to draw a segment of the + loop through that edge, or to remove a segment once it is drawn. + + Drag with the left button through a series of squares to draw more + than one segment of the loop in one go. Alternatively, drag over an + existing part of the loop to undraw it, or to undraw part of it and + then go in a different direction. + + Click with the right button on a grid edge to mark it with a cross, + indicating that you are sure the loop does not go through that edge. + (For instance, if you have decided which of the squares adjacent + to a white clue has to be a corner, but don't yet know which way + the corner turns, you might mark the one way it _can't_ go with a + cross.) + + Alternatively, use the cursor keys to move the cursor. Use the Enter + key to begin and end keyboard `drag' operations. Use the Space, + Escape or Backspace keys to cancel the drag. Or, hold Control while + dragging with the cursor keys to toggle segments as you move between + squares. + + Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left + or right click, respectively, on the edge in the direction of the + key. + + (All the actions described in section 2.1 are also available.) + +#36.2 Pearl parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + +#Chapter 37: Undead + + You are given a grid of squares, some of which contain diagonal + mirrors. Every square which is not a mirror must be filled with one + of three types of undead monster: a ghost, a vampire, or a zombie. + + Vampires can be seen directly, but are invisible when reflected in + mirrors. Ghosts are the opposite way round: they can be seen in + mirrors, but are invisible when looked at directly. Zombies are + visible by any means. + + You are also told the total number of each type of monster in the + grid. Also around the edge of the grid are written numbers, which + indicate how many monsters can be seen if you look into the grid + along a row or column starting from that position. (The diagonal + mirrors are reflective on both sides. If your reflected line of + sight crosses the same monster more than once, the number will count + it each time it is visible, not just once.) + + This puzzle type was invented by David Millar, under the name + `Haunted Mirror Maze'. See [20] for more details. + + Undead was contributed to this collection by Steffen Bauer. + + [20] http://www.janko.at/Raetsel/Spukschloss/index.htm + +#37.1 Undead controls + + Undead has a similar control system to Solo, Unequal and Keen. + + To play Undead, click the mouse in any empty square and then type + a letter on the keyboard indicating the type of monster: `G' for + a ghost, `V' for a vampire, or `Z' for a zombie. If you make a + mistake, click the mouse in the incorrect square and press Space to + clear it again (or use the Undo feature). + + If you _right_-click in a square and then type a letter, the + corresponding monster will be shown in reduced size in that square, + as a `pencil mark'. You can have pencil marks for multiple monsters + in the same square. A square containing a full-size monster cannot + also contain pencil marks. + + The game pays no attention to pencil marks, so exactly what you + use them for is up to you: you can use them as reminders that a + particular square needs to be re-examined once you know more about + a particular monster, or you can use them as lists of the possible + monster in a given square, or anything else you feel like. + + To erase a single pencil mark, right-click in the square and type + the same letter again. + + All pencil marks in a square are erased when you left-click and type + a monster letter, or when you left-click and press Space. Right- + clicking and pressing space will also erase pencil marks. + + As for Solo, the cursor keys can be used in conjunction with the + letter keys to place monsters or pencil marks. Use the cursor keys + to move a highlight around the grid, and type a monster letter to + enter it in the highlighted square. Pressing return toggles the + highlight into a mode in which you can enter or remove pencil marks. + + If you prefer plain letters of the alphabet to cute monster + pictures, you can press `A' to toggle between showing the monsters + as monsters or showing them as letters. + + Left-clicking a clue will mark it as done (grey it out), or unmark + it if it is already marked. + + (All the actions described in section 2.1 are also available.) + +#37.2 Undead parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle. + +#Chapter 38: Unruly + + You are given a grid of squares, which you must colour either black + or white. Some squares are provided as clues; the rest are left for + you to fill in. Each row and column must contain the same number + of black and white squares, and no row or column may contain three + consecutive squares of the same colour. + + This puzzle type was invented by Adolfo Zanellati, under the name + `Tohu wa Vohu'. See [21] for more details. + + Unruly was contributed to this collection by Lennard Sprong. + + [21] http://www.janko.at/Raetsel/Tohu-Wa-Vohu/index.htm + +#38.1 Unruly controls + + To play Unruly, click the mouse in a square to change its colour. + Left-clicking an empty square will turn it black, and right-clicking + will turn it white. Keep clicking the same button to cycle through + the three possible states for the square. If you middle-click in a + square it will be reset to empty. + + You can also use the cursor keys to move around the grid. Pressing + the return or space keys will turn an empty square black or white + respectively (and then cycle the colours in the same way as the + mouse buttons), and pressing Backspace will reset a square to empty. + + (All the actions described in section 2.1 are also available.) + +#38.2 Unruly parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. (Note that the rules of the game + require both the width and height to be even numbers.) + + _Difficulty_ + + Controls the difficulty of the generated puzzle. + + _Unique rows and columns_ + + If enabled, no two rows are permitted to have exactly the same + pattern, and likewise columns. (A row and a column can match, + though.) + +#Chapter 39: Flood + + You are given a grid of squares, coloured at random in multiple + colours. In each move, you can flood-fill the top left square in a + colour of your choice (i.e. every square reachable from the starting + square by an orthogonally connected path of squares all the same + colour will be filled in the new colour). As you do this, more and + more of the grid becomes connected to the starting square. + + Your aim is to make the whole grid the same colour, in as few moves + as possible. The game will set a limit on the number of moves, based + on running its own internal solver. You win if you can make the + whole grid the same colour in that many moves or fewer. + + I saw this game (with a fixed grid size, fixed number of colours, + and fixed move limit) at http://floodit.appspot.com (no longer + accessible). + +#39.1 Flood controls + + To play Flood, click the mouse in a square. The top left corner and + everything connected to it will be flood-filled with the colour of + the square you clicked. Clicking a square the same colour as the top + left corner has no effect, and therefore does not count as a move. + + You can also use the cursor keys to move a cursor (outline black + square) around the grid. Pressing the return key will fill the top + left corner in the colour of the square under the cursor. + + (All the actions described in section 2.1 are also available.) + +#39.2 Flood parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of the grid, in squares. + + _Colours_ + + Number of colours used to fill the grid. Must be at least 3 + (with two colours there would only be one legal move at any + stage, hence no choice to make at all), and at most 10. + + _Extra moves permitted_ + + Controls the difficulty of the puzzle, by increasing the move + limit. In each new grid, Flood will run an internal solver to + generate its own solution, and then the value in this field + will be added to the length of Flood's solution to generate the + game's move limit. So a value of 0 requires you to be just as + efficient as Flood's automated solver, and a larger value makes + it easier. + + (Note that Flood's internal solver will not necessarily find the + shortest possible solution, though I believe it's pretty close. + For a real challenge, set this value to 0 and then try to solve + a grid in _strictly fewer_ moves than the limit you're given!) + +#Chapter 40: Tracks + + You are given a grid of squares, some of which are filled with train + tracks. You need to complete the track from A to B so that the + rows and columns contain the same number of track segments as are + indicated in the clues to the top and right of the grid. + + There are only straight and 90 degree curved rails, and the track + may not cross itself. + + Tracks was contributed to this collection by James Harvey. + +#40.1 Tracks controls + + Left-clicking on an edge between two squares adds a track segment + between the two squares. Right-clicking on an edge adds a cross on + the edge, indicating no track is possible there. + + Left-clicking in a square adds a colour indicator showing that + you know the square must contain a track, even if you don't know + which edges it crosses yet. Right-clicking in a square adds a cross + indicating it contains no track segment. + + Left- or right-dragging between squares allows you to lay a straight + line of is-track or is-not-track indicators, useful for filling in + rows or columns to match the clue. + + (All the actions described in section 2.1 are also available.) + +#40.2 Tracks parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of the grid, in squares. + + _Difficulty_ + + Controls the difficulty of the generated puzzle: at Tricky + level, you are required to make more deductions regarding + disregarding moves that would lead to impossible crossings + later. + + _Disallow consecutive 1 clues_ + + Controls whether the Tracks game generation permits two adjacent + rows or columns to have a 1 clue, or permits the row or column + of the track's endpoint to have a 1 clue. By default this is + not permitted, to avoid long straight boring segments of track + and make the games more twiddly and interesting. If you want to + restore the possibility, turn this option off. + +#Chapter 41: Palisade + + You're given a grid of squares, some of which contain numbers. Your + goal is to subdivide the grid into contiguous regions, all of the + same (given) size, such that each square containing a number is + adjacent to exactly that many edges (including those between the + inside and the outside of the grid). + + Credit for this puzzle goes to Nikoli, who call it `Five Cells'. + [22]. + + Palisade was contributed to this collection by Jonas Koelker. + + [22] http://nikoli.co.jp/en/puzzles/five_cells.html + +#41.1 Palisade controls + + Left-click to place an edge. Right-click to indicate `no edge'. + Alternatively, the arrow keys will move a keyboard cursor. Holding + Control while pressing an arrow key will place an edge. Press Shift- + arrowkey to switch off an edge. Repeat an action to perform its + inverse. + + (All the actions described in section 2.1 are also available.) + +#41.2 Palisade parameters + + These parameters are available from the `Custom...' option on the + `Type' menu. + + _Width_, _Height_ + + Size of grid in squares. + + _Region size_ + + The size of the regions into which the grid must be subdivided. + +#Appendix A: Licence + + This software is copyright 2004-2014 Simon Tatham. + + Portions copyright Richard Boulton, James Harvey, Mike Pinna, Jonas + Koelker, Dariusz Olszewski, Michael Schierl, Lambros Lambrou, Bernd + Schmidt, Steffen Bauer, Lennard Sprong and Rogier Goossens. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the `Software'), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED `AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + diff --git a/apps/plugins/puzzles/src/singles.R b/apps/plugins/puzzles/src/singles.R index 2d10c4b388..a67aed2fbc 100644 --- a/apps/plugins/puzzles/src/singles.R +++ b/apps/plugins/puzzles/src/singles.R @@ -1,6 +1,6 @@ # -*- makefile -*- -SINGLES_EXTRA = dsf latin maxflow tree234 +SINGLES_EXTRA = dsf LATIN singles : [X] GTK COMMON singles SINGLES_EXTRA singles-icon|no-icon singles : [G] WINDOWS COMMON singles SINGLES_EXTRA singles.res|noicon.res diff --git a/apps/plugins/puzzles/src/solo.c b/apps/plugins/puzzles/src/solo.c index ac0b807acd..69fd85b90b 100644 --- a/apps/plugins/puzzles/src/solo.c +++ b/apps/plugins/puzzles/src/solo.c @@ -3608,17 +3608,23 @@ static struct block_structure *gen_killer_cages(int cr, random_state *rs, return b; } -static char *game_request_keys(const game_params *params) +static key_label *game_request_keys(const game_params *params, int *nkeys) { int i; int cr = params->c * params->r; - char *keys = smalloc(cr+2); + key_label *keys = snewn(cr+1, key_label); + *nkeys = cr + 1; + for (i = 0; i < cr; i++) { - if (i<9) keys[i] = '1' + i; - else keys[i] = 'a' + i - 9; + if (i<9) keys[i].button = '1' + i; + else keys[i].button = 'a' + i - 9; + + keys[i].label = NULL; } - keys[cr] = '\b'; - keys[cr+1] = '\0'; + keys[cr].button = '\b'; + keys[cr].label = NULL; + + return keys; } diff --git a/apps/plugins/puzzles/src/tents.R b/apps/plugins/puzzles/src/tents.R index 557f929840..925661c761 100644 --- a/apps/plugins/puzzles/src/tents.R +++ b/apps/plugins/puzzles/src/tents.R @@ -1,6 +1,6 @@ # -*- makefile -*- -TENTS_EXTRA = maxflow dsf +TENTS_EXTRA = matching dsf tents : [X] GTK COMMON tents TENTS_EXTRA tents-icon|no-icon diff --git a/apps/plugins/puzzles/src/tents.c b/apps/plugins/puzzles/src/tents.c index 48da7f2a13..2f0977efbe 100644 --- a/apps/plugins/puzzles/src/tents.c +++ b/apps/plugins/puzzles/src/tents.c @@ -35,7 +35,7 @@ #include #include "puzzles.h" -#include "maxflow.h" +#include "matching.h" /* * Design discussion @@ -907,14 +907,17 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, char *puzzle = snewn(w*h, char); int *numbers = snewn(w+h, int); char *soln = snewn(w*h, char); - int *temp = snewn(2*w*h, int); + int *order = snewn(w*h, int); + int *treemap = snewn(w*h, int); int maxedges = ntrees*4 + w*h; - int *edges = snewn(2*maxedges, int); - int *capacity = snewn(maxedges, int); - int *flow = snewn(maxedges, int); + int *adjdata = snewn(maxedges, int); + int **adjlists = snewn(ntrees, int *); + int *adjsizes = snewn(ntrees, int); + int *outr = snewn(4*ntrees, int); struct solver_scratch *sc = new_scratch(w, h); char *ret, *p; - int i, j, nedges; + int i, j, nl, nr; + int *adjptr; /* * Since this puzzle has many global deductions and doesn't @@ -940,7 +943,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, * would make the grids emptier and more boring. * * Actually generating a grid is a matter of first placing the - * tents, and then placing the trees by the use of maxflow + * tents, and then placing the trees by the use of matching.c * (finding a distinct square adjacent to every tent). We do it * this way round because otherwise satisfying the tent * separation condition would become onerous: most randomly @@ -950,19 +953,12 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, * ensure they meet the separation criterion _before_ doing * lots of computation; this works much better. * - * The maxflow algorithm is not randomised, so employed naively - * it would give rise to grids with clear structure and - * directional bias. Hence, I assign the network nodes as seen - * by maxflow to be a _random_ permutation of the squares of - * the grid, so that any bias shown by maxflow towards - * low-numbered nodes is turned into a random bias. - * * This generation strategy can fail at many points, including * as early as tent placement (if you get a bad random order in * which to greedily try the grid squares, you won't even * manage to find enough mutually non-adjacent squares to put - * the tents in). Then it can fail if maxflow doesn't manage to - * find a good enough matching (i.e. the tent placements don't + * the tents in). Then it can fail if matching.c doesn't manage + * to find a good enough matching (i.e. the tent placements don't * admit any adequate tree placements); and finally it can fail * if the solver finds that the problem has the wrong * difficulty (including being actually non-unique). All of @@ -975,23 +971,38 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, while (1) { /* - * Arrange the grid squares into a random order. + * Make a list of grid squares which we'll permute as we pick + * the tent locations. + * + * We'll also need to index all the potential tree squares, + * i.e. the ones adjacent to the tents. */ - for (i = 0; i < w*h; i++) - temp[i] = i; - shuffle(temp, w*h, sizeof(*temp), rs); + for (i = 0; i < w*h; i++) { + order[i] = i; + treemap[i] = -1; + } /* - * The first `ntrees' entries in temp which we can get - * without making two tents adjacent will be the tent - * locations. + * Place tents at random without making any two adjacent. */ memset(grid, BLANK, w*h); j = ntrees; - for (i = 0; i < w*h && j > 0; i++) { - int x = temp[i] % w, y = temp[i] / w; + nr = 0; + /* Loop end condition: either j==0 (we've placed all the + * tents), or the number of grid squares we have yet to try + * is too few to fit the remaining tents into. */ + for (i = 0; j > 0 && i+j <= w*h; i++) { + int which, x, y, d, tmp; int dy, dx, ok = TRUE; + which = i + random_upto(rs, j); + tmp = order[which]; + order[which] = order[i]; + order[i] = tmp; + + x = order[i] % w; + y = order[i] / w; + for (dy = -1; dy <= +1; dy++) for (dx = -1; dx <= +1; dx++) if (x+dx >= 0 && x+dx < w && @@ -1000,7 +1011,14 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, ok = FALSE; if (ok) { - grid[temp[i]] = TENT; + grid[order[i]] = TENT; + for (d = 1; d < MAXDIR; d++) { + int x2 = x + dx(d), y2 = y + dy(d); + if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h && + treemap[y2*w+x2] == -1) { + treemap[y2*w+x2] = nr++; + } + } j--; } } @@ -1008,68 +1026,47 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, continue; /* couldn't place all the tents */ /* - * Now we build up the list of graph edges. + * Build up the graph for matching.c. */ - nedges = 0; + adjptr = adjdata; + nl = 0; for (i = 0; i < w*h; i++) { - if (grid[temp[i]] == TENT) { - for (j = 0; j < w*h; j++) { - if (grid[temp[j]] != TENT) { - int xi = temp[i] % w, yi = temp[i] / w; - int xj = temp[j] % w, yj = temp[j] / w; - if (abs(xi-xj) + abs(yi-yj) == 1) { - edges[nedges*2] = i; - edges[nedges*2+1] = j; - capacity[nedges] = 1; - nedges++; - } + if (grid[i] == TENT) { + int d, x = i % w, y = i / w; + adjlists[nl] = adjptr; + for (d = 1; d < MAXDIR; d++) { + int x2 = x + dx(d), y2 = y + dy(d); + if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h) { + assert(treemap[y2*w+x2] != -1); + *adjptr++ = treemap[y2*w+x2]; } } - } else { - /* - * Special node w*h is the sink node; any non-tent node - * has an edge going to it. - */ - edges[nedges*2] = i; - edges[nedges*2+1] = w*h; - capacity[nedges] = 1; - nedges++; + adjsizes[nl] = adjptr - adjlists[nl]; + nl++; } } /* - * Special node w*h+1 is the source node, with an edge going to - * every tent. + * Call the matching algorithm to actually place the trees. */ - for (i = 0; i < w*h; i++) { - if (grid[temp[i]] == TENT) { - edges[nedges*2] = w*h+1; - edges[nedges*2+1] = i; - capacity[nedges] = 1; - nedges++; - } - } - - assert(nedges <= maxedges); - - /* - * Now we're ready to call the maxflow algorithm to place the - * trees. - */ - j = maxflow(w*h+2, w*h+1, w*h, nedges, edges, capacity, flow, NULL); + j = matching(ntrees, nr, adjlists, adjsizes, rs, NULL, outr); if (j < ntrees) continue; /* couldn't place all the trees */ /* - * We've placed the trees. Now we need to work out _where_ - * we've placed them, which is a matter of reading back out - * from the `flow' array. + * Fill in the trees in the grid, by cross-referencing treemap + * (which maps a grid square to its index as known to + * matching()) against the output from matching(). + * + * Note that for these purposes we don't actually care _which_ + * tent each potential tree square is assigned to - we only + * care whether it was assigned to any tent at all, in order + * to decide whether to put a tree in it. */ - for (i = 0; i < nedges; i++) { - if (edges[2*i] < w*h && edges[2*i+1] < w*h && flow[i] > 0) - grid[temp[edges[2*i+1]]] = TREE; - } + for (i = 0; i < w*h; i++) + if (treemap[i] != -1 && outr[treemap[i]] != -1) + grid[i] = TREE; /* * I think it looks ugly if there isn't at least one of @@ -1174,10 +1171,12 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, *aux = sresize(*aux, p - *aux, char); free_scratch(sc); - sfree(flow); - sfree(capacity); - sfree(edges); - sfree(temp); + sfree(outr); + sfree(adjdata); + sfree(adjlists); + sfree(adjsizes); + sfree(treemap); + sfree(order); sfree(soln); sfree(numbers); sfree(puzzle); @@ -1748,7 +1747,7 @@ static game_state *execute_move(const game_state *state, const char *move) m++; } if (n == m) { - int nedges, maxedges, *edges, *capacity, *flow; + int *gridids, *adjdata, **adjlists, *adjsizes, *adjptr; /* * We have the right number of tents, which is a @@ -1800,28 +1799,33 @@ static game_state *execute_move(const game_state *state, const char *move) * every tent is orthogonally adjacent to its tree. * * This bit is where the hard work comes in: we have to do - * it by finding such a matching using maxflow. - * - * So we construct a network with one special source node, - * one special sink node, one node per tent, and one node - * per tree. - */ - maxedges = 6 * m; - edges = snewn(2 * maxedges, int); - capacity = snewn(maxedges, int); - flow = snewn(maxedges, int); - nedges = 0; - /* - * Node numbering: - * - * 0..w*h trees/tents - * w*h source - * w*h+1 sink + * it by finding such a matching using matching.c. */ + gridids = snewn(w*h, int); + adjdata = snewn(m*4, int); + adjlists = snewn(m, int *); + adjsizes = snewn(m, int); + + /* Assign each tent and tree a consecutive vertex id for + * matching(). */ + for (i = n = 0; i < w*h; i++) { + if (ret->grid[i] == TENT) + gridids[i] = n++; + } + assert(n == m); + for (i = n = 0; i < w*h; i++) { + if (ret->grid[i] == TREE) + gridids[i] = n++; + } + assert(n == m); + + /* Build the vertices' adjacency lists. */ + adjptr = adjdata; for (y = 0; y < h; y++) for (x = 0; x < w; x++) if (ret->grid[y*w+x] == TREE) { - int d; + int d, treeid = gridids[y*w+x]; + adjlists[treeid] = adjptr; /* * Here we use the direction enum declared for @@ -1835,34 +1839,18 @@ static game_state *execute_move(const game_state *state, const char *move) int x2 = x + dx(d), y2 = y + dy(d); if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h && ret->grid[y2*w+x2] == TENT) { - assert(nedges < maxedges); - edges[nedges*2] = y*w+x; - edges[nedges*2+1] = y2*w+x2; - capacity[nedges] = 1; - nedges++; + *adjptr++ = gridids[y2*w+x2]; } } - } else if (ret->grid[y*w+x] == TENT) { - assert(nedges < maxedges); - edges[nedges*2] = y*w+x; - edges[nedges*2+1] = w*h+1; /* edge going to sink */ - capacity[nedges] = 1; - nedges++; - } - for (y = 0; y < h; y++) - for (x = 0; x < w; x++) - if (ret->grid[y*w+x] == TREE) { - assert(nedges < maxedges); - edges[nedges*2] = w*h; /* edge coming from source */ - edges[nedges*2+1] = y*w+x; - capacity[nedges] = 1; - nedges++; + adjsizes[treeid] = adjptr - adjlists[treeid]; } - n = maxflow(w*h+2, w*h, w*h+1, nedges, edges, capacity, flow, NULL); - sfree(flow); - sfree(capacity); - sfree(edges); + n = matching(m, m, adjlists, adjsizes, NULL, NULL, NULL); + + sfree(gridids); + sfree(adjdata); + sfree(adjlists); + sfree(adjsizes); if (n != m) goto completion_check_done; @@ -2000,14 +1988,13 @@ static int *find_errors(const game_state *state, char *grid) * tents. The difficult bit is highlighting failures in the * tent/tree matching criterion. * - * A natural approach would seem to be to apply the maxflow + * A natural approach would seem to be to apply the matching.c * algorithm to find the tent/tree matching; if this fails, it - * must necessarily terminate with a min-cut which can be - * reinterpreted as some set of trees which have too few tents - * between them (or vice versa). However, it's bad for - * localising errors, because it's not easy to make the - * algorithm narrow down to the _smallest_ such set of trees: if - * trees A and B have only one tent between them, for instance, + * could be made to produce as a by-product some set of trees + * which have too few tents between them (or vice versa). However, + * it's bad for localising errors, because it's not easy to make + * the algorithm narrow down to the _smallest_ such set of trees: + * if trees A and B have only one tent between them, for instance, * it might perfectly well highlight not only A and B but also * trees C and D which are correctly matched on the far side of * the grid, on the grounds that those four trees between them diff --git a/apps/plugins/puzzles/src/towers.R b/apps/plugins/puzzles/src/towers.R index c060c697a7..c2bb78a2dc 100644 --- a/apps/plugins/puzzles/src/towers.R +++ b/apps/plugins/puzzles/src/towers.R @@ -1,14 +1,14 @@ # -*- makefile -*- -TOWERS_LATIN_EXTRA = tree234 maxflow -TOWERS_EXTRA = latin TOWERS_LATIN_EXTRA +TOWERS_EXTRA = LATIN +TOWERS_EXTRA_SOLVER = LATIN_SOLVER towers : [X] GTK COMMON towers TOWERS_EXTRA towers-icon|no-icon towers : [G] WINDOWS COMMON towers TOWERS_EXTRA towers.res|noicon.res -towerssolver : [U] towers[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] TOWERS_LATIN_EXTRA STANDALONE -towerssolver : [C] towers[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] TOWERS_LATIN_EXTRA STANDALONE +towerssolver : [U] towers[STANDALONE_SOLVER] TOWERS_EXTRA_SOLVER STANDALONE +towerssolver : [C] towers[STANDALONE_SOLVER] TOWERS_EXTRA_SOLVER STANDALONE ALL += towers[COMBINED] TOWERS_EXTRA diff --git a/apps/plugins/puzzles/src/towers.c b/apps/plugins/puzzles/src/towers.c index 14b12c6d89..62d4de7b8b 100644 --- a/apps/plugins/puzzles/src/towers.c +++ b/apps/plugins/puzzles/src/towers.c @@ -130,7 +130,7 @@ static game_params *default_params(void) return ret; } -const static struct game_params towers_presets[] = { +static const struct game_params towers_presets[] = { { 4, DIFF_EASY }, { 5, DIFF_EASY }, { 5, DIFF_HARD }, @@ -864,18 +864,22 @@ static const char *validate_desc(const game_params *params, const char *desc) return NULL; } -static char *game_request_keys(const game_params *params) +static key_label *game_request_keys(const game_params *params, int *nkeys) { int i; int w = params->w; - char *keys = smalloc(w+2); - keys[0] = '\b'; + key_label *keys = snewn(w+1, key_label); + *nkeys = w + 1; + for (i = 0; i < w; i++) { - if (i<9) keys[i] = '1' + i; - else keys[i] = 'a' + i - 9; + if (i<9) keys[i].button = '1' + i; + else keys[i].button = 'a' + i - 9; + + keys[i].label = NULL; } - keys[w] = '\b'; - keys[w+1] = '\0'; + keys[w].button = '\b'; + keys[w].label = NULL; + return keys; } diff --git a/apps/plugins/puzzles/src/undead.c b/apps/plugins/puzzles/src/undead.c index 87e559a354..03b014f5a1 100644 --- a/apps/plugins/puzzles/src/undead.c +++ b/apps/plugins/puzzles/src/undead.c @@ -1314,9 +1314,24 @@ void num2grid(int num, int width, int height, int *x, int *y) { return; } -static char *game_request_keys(const game_params *params) +static key_label *game_request_keys(const game_params *params, int *nkeys) { - return dupstr("GVZ\b"); + key_label *keys = snewn(4, key_label); + *nkeys = 4; + + keys[0].button = 'G'; + keys[0].label = dupstr("Ghost"); + + keys[1].button = 'V'; + keys[1].label = dupstr("Vampire"); + + keys[2].button = 'Z'; + keys[2].label = dupstr("Zombie"); + + keys[3].button = '\b'; + keys[3].label = NULL; + + return keys; } static game_state *new_game(midend *me, const game_params *params, diff --git a/apps/plugins/puzzles/src/unequal.R b/apps/plugins/puzzles/src/unequal.R index a061582768..077407ffff 100644 --- a/apps/plugins/puzzles/src/unequal.R +++ b/apps/plugins/puzzles/src/unequal.R @@ -1,16 +1,14 @@ # -*- makefile -*- -UNEQUAL_EXTRA = latin tree234 maxflow +UNEQUAL_EXTRA = LATIN +UNEQUAL_EXTRA_SOLVER = LATIN_SOLVER unequal : [X] GTK COMMON unequal UNEQUAL_EXTRA unequal-icon|no-icon unequal : [G] WINDOWS COMMON unequal UNEQUAL_EXTRA unequal.res|noicon.res -unequalsolver : [U] unequal[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] tree234 maxflow STANDALONE -unequalsolver : [C] unequal[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] tree234 maxflow STANDALONE - -latincheck : [U] latin[STANDALONE_LATIN_TEST] tree234 maxflow STANDALONE -latincheck : [C] latin[STANDALONE_LATIN_TEST] tree234 maxflow STANDALONE +unequalsolver : [U] unequal[STANDALONE_SOLVER] UNEQUAL_EXTRA_SOLVER STANDALONE +unequalsolver : [C] unequal[STANDALONE_SOLVER] UNEQUAL_EXTRA_SOLVER STANDALONE ALL += unequal[COMBINED] UNEQUAL_EXTRA diff --git a/apps/plugins/puzzles/src/unequal.c b/apps/plugins/puzzles/src/unequal.c index 5843ae2295..db309e2c58 100644 --- a/apps/plugins/puzzles/src/unequal.c +++ b/apps/plugins/puzzles/src/unequal.c @@ -111,7 +111,7 @@ static char const unequal_diffchars[] = DIFFLIST(ENCODE); #define DEFAULT_PRESET 0 -const static struct game_params unequal_presets[] = { +static const struct game_params unequal_presets[] = { { 4, DIFF_EASY, 0 }, { 5, DIFF_EASY, 0 }, { 5, DIFF_SET, 0 }, @@ -1280,18 +1280,22 @@ fail: return NULL; } -static char *game_request_keys(const game_params *params) +static key_label *game_request_keys(const game_params *params, int *nkeys) { int order = params->order; char off = (order > 9) ? '0' : '1'; - char *keys = smalloc(order + 2); + key_label *keys = snewn(order + 1, key_label); + *nkeys = order + 1; + int i; for(i = 0; i < order; i++) { - if (i==10) off = 'a'-10; - keys[i] = i + off; + if (i==10) off = 'a'-10; + keys[i].button = i + off; + keys[i].label = NULL; } - keys[order] = '\b'; - keys[order+1] = '\0'; + keys[order].button = '\b'; + keys[order].label = NULL; + return keys; } diff --git a/apps/plugins/puzzles/src/unfinished/group.R b/apps/plugins/puzzles/src/unfinished/group.R index a11d22e9b9..394e364a06 100644 --- a/apps/plugins/puzzles/src/unfinished/group.R +++ b/apps/plugins/puzzles/src/unfinished/group.R @@ -1,14 +1,14 @@ # -*- makefile -*- -GROUP_LATIN_EXTRA = tree234 maxflow -GROUP_EXTRA = latin GROUP_LATIN_EXTRA +GROUP_EXTRA = LATIN +GROUP_EXTRA_SOLVER = LATIN_SOLVER group : [X] GTK COMMON group GROUP_EXTRA group-icon|no-icon group : [G] WINDOWS COMMON group GROUP_EXTRA group.res|noicon.res -groupsolver : [U] group[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] GROUP_LATIN_EXTRA STANDALONE -groupsolver : [C] group[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] GROUP_LATIN_EXTRA STANDALONE +groupsolver : [U] group[STANDALONE_SOLVER] GROUP_EXTRA_SOLVER STANDALONE +groupsolver : [C] group[STANDALONE_SOLVER] GROUP_EXTRA_SOLVER STANDALONE ALL += group[COMBINED] GROUP_EXTRA diff --git a/apps/plugins/puzzles/src/unfinished/group.c b/apps/plugins/puzzles/src/unfinished/group.c index b812b041eb..72293dd4ea 100644 --- a/apps/plugins/puzzles/src/unfinished/group.c +++ b/apps/plugins/puzzles/src/unfinished/group.c @@ -2081,6 +2081,7 @@ const struct game thegame = { free_ui, encode_ui, decode_ui, + NULL, /* game_request_keys */ game_changed_state, interpret_move, execute_move, diff --git a/apps/plugins/puzzles/src/unfinished/separate.c b/apps/plugins/puzzles/src/unfinished/separate.c index 7fd8da8202..fc64d7fe37 100644 --- a/apps/plugins/puzzles/src/unfinished/separate.c +++ b/apps/plugins/puzzles/src/unfinished/separate.c @@ -841,6 +841,7 @@ const struct game thegame = { free_ui, encode_ui, decode_ui, + NULL, /* game_request_keys */ game_changed_state, interpret_move, execute_move, diff --git a/apps/plugins/puzzles/src/unfinished/slide.c b/apps/plugins/puzzles/src/unfinished/slide.c index 9770013235..504c4e95e5 100644 --- a/apps/plugins/puzzles/src/unfinished/slide.c +++ b/apps/plugins/puzzles/src/unfinished/slide.c @@ -2333,6 +2333,7 @@ const struct game thegame = { free_ui, encode_ui, decode_ui, + NULL, /* game_request_keys */ game_changed_state, interpret_move, execute_move, diff --git a/apps/plugins/puzzles/src/unfinished/sokoban.c b/apps/plugins/puzzles/src/unfinished/sokoban.c index 1264690416..a06ba7a662 100644 --- a/apps/plugins/puzzles/src/unfinished/sokoban.c +++ b/apps/plugins/puzzles/src/unfinished/sokoban.c @@ -1457,6 +1457,7 @@ const struct game thegame = { free_ui, encode_ui, decode_ui, + NULL, /* game_request_keys */ game_changed_state, interpret_move, execute_move, diff --git a/apps/plugins/puzzles/src/unruly.c b/apps/plugins/puzzles/src/unruly.c index b3057a7298..6506029d7e 100644 --- a/apps/plugins/puzzles/src/unruly.c +++ b/apps/plugins/puzzles/src/unruly.c @@ -94,7 +94,7 @@ static char const *const unruly_diffnames[] = { DIFFLIST(TITLE) }; static char const unruly_diffchars[] = DIFFLIST(ENCODE); #define DIFFCONFIG DIFFLIST(CONFIG) -const static struct game_params unruly_presets[] = { +static const struct game_params unruly_presets[] = { { 8, 8, FALSE, DIFF_EASY}, { 8, 8, FALSE, DIFF_NORMAL}, {10, 10, FALSE, DIFF_EASY}, diff --git a/apps/plugins/puzzles/src/winwix.mc b/apps/plugins/puzzles/src/winwix.mc index 4a72c09123..58dbdbeefb 100644 --- a/apps/plugins/puzzles/src/winwix.mc +++ b/apps/plugins/puzzles/src/winwix.mc @@ -12,6 +12,12 @@ has 'descfile' => (required => 1); + + + + + + % # Product tag. The Id component is set to "*", which causes WiX to @@ -61,7 +67,7 @@ has 'descfile' => (required => 1); % # (individual files or shortcuts or additions to PATH) that are % # installed. - + % # The following components all install things in the main @@ -71,12 +77,12 @@ has 'descfile' => (required => 1); % # the more obscure things like LICENCE are just there for % # the sake of being _somewhere_ and don't rate a shortcut. -<%method file_component ($filename, $shortcutname)> +<%method file_component ($prefix, $filename, $shortcutname)> % my $filename_id = file_component_name($filename); + Source="<% $prefix %><% $filename %>" KeyPath="yes"> % if (defined $shortcutname) { (required => 1); % for my $exe (@exes) { -<% $.file_component($exe, $names{$exe}) %> +<% $.file_component('$(var.Bindir)', $exe, $names{$exe}) %> % } -<% $.file_component("puzzles.chm", "Puzzles Manual") %> -<% $.file_component("website.url", "Puzzles Web Site") %> -<% $.file_component("LICENCE") %> +<% $.file_component('', "puzzles.chm", "Puzzles Manual") %> +<% $.file_component('', "website.url", "Puzzles Web Site") %> +<% $.file_component('', "LICENCE") %> -- cgit v1.2.3