1
0
Fork 0
forked from len0rd/rockbox

puzzles: refactor and resync with upstream

This brings puzzles up-to-date with upstream revision
2d333750272c3967cfd5cd3677572cddeaad5932, though certain changes made
by me, including cursor-only Untangle and some compilation fixes
remain. Upstream code has been moved to its separate subdirectory and
future syncs can be done by simply copying over the new sources.

Change-Id: Ia6506ca5f78c3627165ea6791d38db414ace0804
This commit is contained in:
Franklin Wei 2017-04-29 18:21:56 -04:00
parent 03dd4b92be
commit 881746789a
329 changed files with 27350 additions and 1043 deletions

View file

@ -19,3 +19,10 @@ out how to do that with a wildcard or something.
Kudos to Simon (duh), and Frank, for telling me about it.
Franklin Wei (__builtin)
April 2017: Changes made to move upstream sources to a separate
subdirectory, where they are completely unmodified from the
original. Updating the upstream version is now as simple as copying a
fresh set of sources to src/. Several hacks were used to accomplish
this: a global include specified on the command line, and a directory
of dummy header files.

View file

@ -1,26 +1,26 @@
rockbox.c
rbwrappers.c
combi.c
divvy.c
drawing.c
dsf.c
findloop.c
grid.c
latin.c
laydomino.c
loopgen.c
malloc.c
maxflow.c
midend.c
misc.c
penrose.c
printing.c
random.c
tdq.c
tree234.c
version.c
rbmalloc.c
src/combi.c
src/divvy.c
src/drawing.c
src/dsf.c
src/findloop.c
src/grid.c
src/latin.c
src/laydomino.c
src/loopgen.c
/*src/malloc.c*/ /* we have our own */
src/maxflow.c
src/midend.c
src/misc.c
src/penrose.c
src/printing.c
src/random.c
src/tdq.c
src/tree234.c
src/version.c
#ifdef COMBINED
list.c
src/list.c
#endif

View file

@ -1,51 +1,51 @@
blackbox.c
bridges.c
cube.c
dominosa.c
fifteen.c
/*filling.c*/
flip.c
flood.c
galaxies.c
guess.c
inertia.c
/*keen.c*/
lightup.c
/*loopy.c*/
magnets.c
map.c
/*mines.c*/
net.c
netslide.c
/*palisade.c*/
pattern.c
pegs.c
range.c
rect.c
samegame.c
signpost.c
singles.c
sixteen.c
slant.c
/*solo.c*/
tents.c
/*towers.c*/
tracks.c
twiddle.c
/*undead.c*/
/*unequal.c*/
unruly.c
untangle.c
src/blackbox.c
src/bridges.c
src/cube.c
src/dominosa.c
src/fifteen.c
/*src/filling.c*/
src/flip.c
src/flood.c
src/galaxies.c
src/guess.c
src/inertia.c
/*src/keen.c*/
src/lightup.c
/*src/loopy.c*/
src/magnets.c
src/map.c
/*src/mines.c*/
src/net.c
src/netslide.c
/*src/palisade.c*/
src/pattern.c
src/pegs.c
src/range.c
src/rect.c
src/samegame.c
src/signpost.c
src/singles.c
src/sixteen.c
src/slant.c
/*src/solo.c*/
src/tents.c
/*src/towers.c*/
src/tracks.c
src/twiddle.c
/*src/undead.c*/
/*src/unequal.c*/
src/unruly.c
src/untangle.c
/* disabled for now */
/*unfinished/group.c*/
/*unfinished/separate.c*/
/*unfinished/slide.c*/
/*unfinished/sokoban.c*/
/*src/unfinished/group.c*/
/*src/unfinished/separate.c*/
/*src/unfinished/slide.c*/
/*src/unfinished/sokoban.c*/
/* no c200v2 */
#if PLUGIN_BUFFER_SIZE > 0x14000
pearl.c
/*loopy.c*/
/*solo.c*/
src/pearl.c
/*src/loopy.c*/
/*src/solo.c*/
#endif

View file

@ -0,0 +1 @@

View file

View file

View file

@ -1,120 +0,0 @@
#!/usr/bin/perl
use strict;
use warnings;
open my $footerfile, "<", shift @ARGV or die "footer: open: $!\n";
my $footer = "";
$footer .= $_ while <$footerfile>;
close $footerfile;
for my $arg (@ARGV) {
$arg =~ /(.*\/)?([^\/]+)\.html$/ or die;
my $filename = $2;
open my $gamefile, "<", $arg or die "$arg: open: $!\n";
my $unfinished = 0;
my $docname = $filename;
chomp(my $puzzlename = <$gamefile>);
while ($puzzlename =~ s/^([^:=]+)(=([^:]+))?://) {
if ($1 eq "unfinished") {
$unfinished = 1;
} elsif ($1 eq "docname") {
$docname = $3;
} else {
die "$arg: unknown keyword '$1'\n";
}
}
my $instructions = "";
$instructions .= $_ while <$gamefile>;
close $gamefile;
open my $outpage, ">", "${filename}.html";
my $unfinishedtitlefragment = $unfinished ? "an unfinished puzzle " : "";
my $unfinishedheading = $unfinished ? "<h2 align=center>an unfinished puzzle</h2>\n" : "";
my $unfinishedpara;
my $links;
if ($unfinished) {
$unfinishedpara = <<EOF;
<p>
You have found your way to a page containing an <em>unfinished</em>
puzzle in my collection, not linked from the <a href="../">main
puzzles page</a>. Don't be surprised if things are hard to understand
or don't work as you expect.
EOF
$links = <<EOF;
<p align="center">
<a href="../">Back to main puzzles page</a> (which does not link to this)
EOF
} else {
$unfinishedpara = "";
$links = <<EOF;
<p align="center">
<a href="../doc/${docname}.html#${docname}">Full instructions</a>
|
<a href="../">Back to main puzzles page</a>
EOF
}
print $outpage <<EOF;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ASCII" />
<title>${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection</title>
<script type="text/javascript" src="${filename}.js"></script>
</head>
<body onLoad="initPuzzle();">
<h1 align=center>${puzzlename}</h1>
${unfinishedheading}
<h2 align=center>from Simon Tatham's Portable Puzzle Collection</h2>
${unfinishedpara}
<hr>
<div id="puzzle" style="display: none">
<p align=center>
<input type="button" id="new" value="New game">
<input type="button" id="restart" value="Restart game">
<input type="button" id="undo" value="Undo move">
<input type="button" id="redo" value="Redo move">
<input type="button" id="solve" value="Solve game">
<input type="button" id="specific" value="Enter game ID">
<input type="button" id="random" value="Enter random seed">
<select id="gametype"></select>
</p>
<div align=center>
<div id="resizable" style="position:relative; left:0; top:0">
<canvas style="display: block" id="puzzlecanvas" width="1px" height="1px" tabindex="1">
</canvas>
<div id="statusbarholder" style="display: block">
</div>
</div>
<p>
Link to this puzzle:
<a id="permalink-desc">by game ID</a>
<a id="permalink-seed">by random seed</a>
</p>
</div>
</div>
<div id="apology">
Sorry, this Javascript puzzle doesn't seem to work in your web
browser. Perhaps you have Javascript disabled, or perhaps your browser
doesn't provide a feature that the puzzle code requires (such as
<a href="https://developer.mozilla.org/en-US/docs/JavaScript/Typed_arrays">typed arrays</a>).
These puzzles have been successfully run in Firefox 19, Chrome 26,
Internet Explorer 10 and Safari 6.
</div>
<hr>
${instructions}
${links}
${footer}
</body>
</html>
EOF
close $outpage;
}

View file

@ -1,206 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2014 Franklin Wei, Benjamin Brown
*
* 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
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#ifndef _XWORLD_KEYMAPS_H
#define _XWORLD_KEYMAPS_H
/* Handle the "nice" targets that have directional buttons with normal names */
#if (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) || \
(CONFIG_KEYPAD == PHILIPS_HDD6330_PAD) || \
(CONFIG_KEYPAD == PHILIPS_SA9200_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) || \
(CONFIG_KEYPAD == SANSA_CONNECT_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
(CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_FUZE_PAD) || \
(CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) || \
(CONFIG_KEYPAD == GIGABEAT_PAD) || \
(CONFIG_KEYPAD == GIGABEAT_S_PAD) || \
(CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) || \
(CONFIG_KEYPAD == SAMSUNG_YH820_PAD) || \
(CONFIG_KEYPAD == IAUDIO_X5M5_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZEN_PAD) || \
(CONFIG_KEYPAD == SONY_NWZ_PAD) || \
(CONFIG_KEYPAD == CREATIVEZVM_PAD) || \
(CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD) || \
(CONFIG_KEYPAD == HM801_PAD) || \
(CONFIG_KEYPAD == HM60X_PAD)
#define BTN_UP BUTTON_UP
#define BTN_DOWN BUTTON_DOWN
#define BTN_LEFT BUTTON_LEFT
#define BTN_RIGHT BUTTON_RIGHT
#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD)
#define BTN_UP_LEFT BUTTON_BACK
#define BTN_UP_RIGHT BUTTON_PLAYPAUSE
#define BTN_DOWN_LEFT BUTTON_BOTTOMLEFT
#define BTN_DOWN_RIGHT BUTTON_BOTTOMRIGHT
#endif
#if (CONFIG_KEYPAD == HM60X_PAD)
#define BTN_FIRE BUTTON_POWER
#define BTN_PAUSE BUTTON_SELECT
#endif
#if (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) || \
(CONFIG_KEYPAD == PHILIPS_HDD6330_PAD) || \
(CONFIG_KEYPAD == PHILIPS_SA9200_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) || \
(CONFIG_KEYPAD == SANSA_CONNECT_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD) || \
(CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) || \
(CONFIG_KEYPAD == ONDAVX747_PAD)
#define BTN_FIRE BUTTON_VOL_UP
#define BTN_PAUSE BUTTON_VOL_DOWN
#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define BTN_FIRE BUTTON_HOME
#define BTN_PAUSE BUTTON_SELECT
#elif (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD)
#define BTN_FIRE BUTTON_FFWD
#define BTN_PAUSE BUTTON_REW
#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
#define BTN_FIRE BUTTON_REC
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD)
#define BTN_FIRE BUTTON_SELECT
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == CREATIVE_ZEN_PAD)
#define BTN_FIRE BUTTON_SELECT
#define BTN_PAUSE BUTTON_BACK
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_MENU
#elif (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD)
#define BTN_FIRE BUTTON_USER
#define BTN_PAUSE BUTTON_MENU
#elif (CONFIG_KEYPAD == SONY_NWZ_PAD)
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_BACK
#elif (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define BTN_FIRE BUTTON_REC
#define BTN_PAUSE BUTTON_MODE
#elif (CONFIG_KEYPAD == HM801_PAD)
#define BTN_FIRE BUTTON_PREV
#define BTN_PAUSE BUTTON_NEXT
#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) || \
(CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
#define BTN_FIRE BUTTON_REC
#define BTN_PAUSE BUTTON_PLAY
#elif (CONFIG_KEYPAD == GIGABEAT_PAD) || \
(CONFIG_KEYPAD == GIGABEAT_S_PAD)
#define BTN_FIRE BUTTON_VOL_UP
#define BTN_PAUSE BUTTON_MENU
/* #if CONFIG_KEYPAD == PHILIPS_HDD1630_PAD */
#endif
/* ... and now for the bad ones that don't have
* standard names for the directional buttons */
#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD)
#define BTN_UP BUTTON_OK
#define BTN_DOWN BUTTON_CANCEL
#define BTN_LEFT BUTTON_MENU
#define BTN_RIGHT BUTTON_PLAY
#define BTN_FIRE BUTTON_POWER
#define BTN_PAUSE BUTTON_REC
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define BTN_UP BUTTON_SCROLL_UP
#define BTN_DOWN BUTTON_SCROLL_DOWN
#define BTN_LEFT BUTTON_LEFT
#define BTN_RIGHT BUTTON_RIGHT
#define BTN_FIRE BUTTON_REW
#define BTN_PAUSE BUTTON_PLAY
#elif (CONFIG_KEYPAD == MROBE500_PAD)
#define BTN_FIRE BUTTON_POWER
#elif (CONFIG_KEYPAD == MROBE_REMOTE)
#define BTN_UP BUTTON_RC_PLAY
#define BTN_DOWN BUTTON_RC_DOWN
#define BTN_LEFT BUTTON_RC_REW
#define BTN_RIGHT BUTTON_RC_FF
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define BTN_UP BUTTON_MENU
#define BTN_DOWN BUTTON_PLAY
#define BTN_LEFT BUTTON_LEFT
#define BTN_RIGHT BUTTON_RIGHT
#define BTN_FIRE BUTTON_SELECT
#define BTN_PAUSE (BUTTON_MENU | BUTTON_SELECT)
#elif (CONFIG_KEYPAD == ONDAVX777_PAD)
#define BTN_FIRE BUTTON_POWER
#elif (CONFIG_KEYPAD == COWON_D2_PAD)
#define BTN_FIRE BUTTON_PLUS
#define BTN_PAUSE BUTTON_MINUS
#elif (CONFIG_KEYPAD == ONDAVX747_PAD) || \
(CONFIG_KEYPAD == DX50_PAD)
#define BTN_LEFT BUTTON_LEFT
#define BTN_RIGHT BUTTON_RIGHT
#define BTN_FIRE BUTTON_BOTTOMLEFT
#define BTN_PAUSE BUTTON_TOPLEFT
#else
#error Unsupported keypad
#endif
#ifdef HAVE_TOUCHSCREEN
#define BTN_UP BUTTON_TOPMIDDLE
#define BTN_DOWN BUTTON_BOTTOMMIDDLE
#define BTN_LEFT BUTTON_LEFT
#define BTN_RIGHT BUTTON_RIGHT
#if (CONFIG_KEYPAD == MROBE500_PAD) || \
(CONFIG_KEYPAD == ONDAVX777_PAD)
#define BTN_PAUSE BUTTON_BOTTOMLEFT
#elif (CONFIG_KEYPAD != COWON_D2_PAD) && \
(CONFIG_KEYPAD != DX50_PAD) && \
(CONFIG_KEYPAD != ONDAVX777_PAD)
#define BTN_FIRE BUTTON_BOTTOMLEFT
#define BTN_PAUSE BUTTON_TOPLEFT
#endif
/* HAVE_TOUCHSCREEN */
#endif
/* _XWORLD_KEYMAPS_H */
#endif

View file

@ -48,9 +48,11 @@ PUZZLESOPTIMIZE := -Os # tiny plugin buffer
endif
# we suppress all warnings
PUZZLESFLAGS = $(filter-out -O%,$(PLUGINFLAGS)) $(PUZZLESOPTIMIZE) \
-Wno-unused-parameter -Wno-sign-compare -Wno-strict-aliasing -w \
-DFOR_REAL -I$(PUZZLES_SRCDIR)
PUZZLESFLAGS = -I$(PUZZLES_SRCDIR)/dummy \
$(filter-out -O%,$(PLUGINFLAGS)) $(PUZZLESOPTIMIZE) \
-Wno-unused-parameter -Wno-sign-compare -Wno-strict-aliasing \
-DFOR_REAL -I$(PUZZLES_SRCDIR)/src \
-include $(PUZZLES_SRCDIR)/rbcompat.h
ifdef PUZZLES_COMBINED
PUZZLESFLAGS += -DCOMBINED
endif
@ -71,11 +73,11 @@ $(PUZZLES_OBJDIR)/puzzles.ovl: $(PUZZLES_OBJ) $(PUZZLES_OUTLDS) $(TLSFLIB)
-lgcc $(PUZZLES_OVLFLAGS)
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
else
$(PUZZLES_OBJDIR)/sgt-%.rock: $(PUZZLES_OBJDIR)/%.o $(PUZZLES_SHARED_OBJ) $(TLSFLIB)
$(PUZZLES_OBJDIR)/sgt-%.rock: $(PUZZLES_OBJDIR)/src/%.o $(PUZZLES_SHARED_OBJ) $(TLSFLIB)
$(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(PUZZLES_OBJDIR)/$*.elf \
$(filter %.o, $^) \
$(filter %.a, $+) \
-lgcc $(filter-out -Wl%.map, $(PLUGINLDFLAGS)) -Wl,-Map,$(PUZZLES_OBJDIR)/$*.map
-lgcc $(filter-out -Wl%.map, $(PLUGINLDFLAGS)) -Wl,-Map,$(PUZZLES_OBJDIR)/src/$*.map
$(SILENT)$(call objcopy,$(PUZZLES_OBJDIR)/$*.elf,$@)
endif
@ -87,3 +89,7 @@ $(PUZZLES_OBJDIR)/%.o: $(PUZZLES_SRCDIR)/%.c $(PUZZLES_SRCDIR)/puzzles.make
$(PUZZLES_OBJDIR)/unfinished/%.o: $(PUZZLES_SRCDIR)/unfinished/%.c $(PUZZLES_SRCDIR)/puzzles.make
$(SILENT)mkdir -p $(dir $@)
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) -I$(dir $<) $(PUZZLESFLAGS) -c $< -o $@
$(PUZZLES_OBJDIR)/src/%.o: $(PUZZLES_SRCDIR)/src/%.c $(PUZZLES_SRCDIR)/puzzles.make
$(SILENT)mkdir -p $(dir $@)
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) -I$(dir $<) $(PUZZLESFLAGS) -c $< -o $@

View file

@ -1,5 +1,11 @@
#ifndef __RBCOMPAT_H__
#define __RBCOMPAT_H__
#include "plugin.h"
#include "rbassert.h"
#include "lib/pluginlib_exit.h"
#include <tlsf.h>
int sprintf_wrapper(char *str, const char *fmt, ...);
char *getenv_wrapper(const char *c);
@ -60,3 +66,9 @@ double acos_wrapper(double x);
#define strtoq strtoq_wrapper
#define strtouq strtouq_wrapper
#define vsprintf vsprintf_wrapper
#define abs(x) ((x)<0?-(x):(x))
/* work around compilation error */
typedef void FILE;
#endif

View file

@ -4,7 +4,7 @@
#include <stdlib.h>
#include <string.h>
#include "puzzles.h"
#include "src/puzzles.h"
/*
* smalloc should guarantee to return a useful pointer - Halibut

View file

@ -1346,9 +1346,12 @@ double scalbn_wrapper (double x, int n)
if (k > 0) /* normal result */
{__HI(x) = (hx&0x800fffff)|(k<<20); return x;}
if (k <= -54)
{
if (n > 50000) /* in case integer overflow in n+k */
return huge*copysign_wrapper(huge,x); /*overflow*/
else return tiny*copysign_wrapper(tiny,x); /*underflow*/
else
return tiny*copysign_wrapper(tiny,x); /*underflow*/
}
k += 54; /* subnormal result */
__HI(x) = (hx&0x800fffff)|(k<<20);
return x*twom54;
@ -1607,18 +1610,6 @@ static void bcopy_wrapper(const void *src, void *dst, size_t n)
memmove(dst, src, n);
}
int
sscanf_wrapper(const char *ibuf, const char *fmt, ...)
{
va_list ap;
int ret;
va_start(ap, fmt);
ret = rb_vsscanf(ibuf, fmt, ap);
va_end(ap);
return(ret);
}
int
rb_vsscanf(const char *inp, char const *fmt0, va_list ap)
{
@ -2065,6 +2056,18 @@ match_failure:
return (nassigned);
}
int
sscanf_wrapper(const char *ibuf, const char *fmt, ...)
{
va_list ap;
int ret;
va_start(ap, fmt);
ret = rb_vsscanf(ibuf, fmt, ap);
va_end(ap);
return(ret);
}
/*
* Fill in the given table from the scanset at the given format
* (just after `['). Return a pointer to the character past the

View file

@ -23,8 +23,8 @@
#include "plugin.h"
#include "puzzles.h"
#include "keymaps.h"
#include "src/puzzles.h"
#include "src/keymaps.h"
#ifndef COMBINED
#include "lib/playback_control.h"
@ -315,6 +315,7 @@ static void rb_draw_line(void *handle, int x1, int y1, int x2, int y2,
draw_antialiased_line(x1, y1, x2, y2);
}
#if 0
/*
* draw filled polygon
* originally by Sebastian Leonhardt (ulmutul)
@ -409,6 +410,7 @@ static void v_fillarea(int count, int *pxy)
fill_poly_line(i, count, pxy);
}
}
#endif
static void rb_draw_poly(void *handle, int *coords, int npoints,
int fillcolor, int outlinecolor)
@ -916,7 +918,7 @@ static bool config_menu(void)
config_item old;
int pos = rb->gui_synclist_get_sel_pos(&list);
memcpy(&old, config + pos, sizeof(old));
char *old_str;
char *old_str = NULL;
if(old.type == C_STRING)
old_str = dupstr(old.sval);
bool freed_str = do_configure_item(config + pos);
@ -928,13 +930,13 @@ static bool config_menu(void)
if(freed_str)
config[pos].sval = old_str;
}
else if(old.type == C_STRING)
else
{
if(old.type == C_STRING)
{
/* success, and we duplicated the old string, so free it */
sfree(old_str);
}
else
{
success = true;
}
break;
@ -956,33 +958,29 @@ done:
const char *preset_formatter(int sel, void *data, char *buf, size_t len)
{
char *name;
game_params *junk;
midend_fetch_preset(me, sel, &name, &junk);
rb->strlcpy(buf, name, len);
struct preset_menu *menu = data;
rb->snprintf(buf, len, "%s", menu->entries[sel].title);
return buf;
}
static bool presets_menu(void)
/* main worker function */
static bool do_preset_menu(struct preset_menu *menu, char *title)
{
if(!midend_num_presets(me))
{
rb->splash(HZ, "No presets!");
if(!menu->n_entries)
return false;
}
/* display a list */
struct gui_synclist list;
rb->gui_synclist_init(&list, &preset_formatter, NULL, false, 1, NULL);
rb->gui_synclist_init(&list, &preset_formatter, menu, false, 1, NULL);
rb->gui_synclist_set_icon_callback(&list, NULL);
rb->gui_synclist_set_nb_items(&list, midend_num_presets(me));
rb->gui_synclist_set_nb_items(&list, menu->n_entries);
rb->gui_synclist_limit_scroll(&list, false);
int current = midend_which_preset(me);
rb->gui_synclist_select_item(&list, current >= 0 ? current : 0);
rb->gui_synclist_select_item(&list, 0); /* we don't start with the current one selected */
rb->gui_synclist_set_title(&list, "Game Type", NOICON);
char def[] = "Game Type";
rb->gui_synclist_set_title(&list, title ? title : def, NOICON);
while(1)
{
rb->gui_synclist_draw(&list);
@ -994,12 +992,20 @@ static bool presets_menu(void)
case ACTION_STD_OK:
{
int sel = rb->gui_synclist_get_sel_pos(&list);
char *junk;
game_params *params;
midend_fetch_preset(me, sel, &junk, &params);
midend_set_params(me, params);
struct preset_menu_entry *entry = menu->entries + sel;
if(entry->params)
{
midend_set_params(me, entry->params);
return true;
}
else
{
/* recurse */
if(do_preset_menu(entry->submenu, entry->title))
return true;
}
break;
}
case ACTION_STD_PREV:
case ACTION_STD_CANCEL:
return false;
@ -1009,6 +1015,11 @@ static bool presets_menu(void)
}
}
static bool presets_menu(void)
{
return do_preset_menu(midend_get_presets(me, NULL), NULL);
}
static const struct {
const char *game, *help;
} quick_help_text[] = {
@ -1212,7 +1223,7 @@ static int pausemenu_cb(int action, const struct menu_item_ex *this_item)
return ACTION_EXIT_MENUITEM;
#endif
case 9:
if(!midend_num_presets(me))
if(!midend_get_presets(me, NULL)->n_entries)
return ACTION_EXIT_MENUITEM;
break;
case 10:
@ -1808,7 +1819,7 @@ static int mainmenu_cb(int action, const struct menu_item_ex *this_item)
return ACTION_EXIT_MENUITEM;
#endif
case 5:
if(!midend_num_presets(me))
if(!midend_get_presets(me, NULL)->n_entries)
return ACTION_EXIT_MENUITEM;
break;
case 6:

View file

@ -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 -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

View file

@ -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 > $@

View file

@ -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

View file

@ -0,0 +1,17 @@
all: puzzles.hlp puzzles.txt HACKING
preprocessed.but: puzzles.but
sed 's/PREFIX-/$(BINPREFIX)/g' puzzles.but > preprocessed.but
puzzles.hlp puzzles.txt: preprocessed.but
halibut --winhelp=puzzles.hlp --text=puzzles.txt preprocessed.but
HACKING: devel.but
halibut --text=HACKING devel.but
chm: puzzles.hhp
puzzles.hhp: puzzles.but chm.but
halibut --html puzzles.but chm.but
clean:
rm -f puzzles.hlp puzzles.txt preprocessed.but HACKING *.html *.hh[pck]

View file

@ -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

View file

@ -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

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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 '<applet archive="'$@'" code="PuzzleApplet" width="700" height="500"></applet>' >$*.html
mv PuzzleEngine.class $<
clean:
rm -rf *.o *.mips *.class *.html *.jar org applet.manifest

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -28,6 +28,9 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
private JFrame mainWindow;
private JMenu typeMenu;
private JMenuItem[] typeMenuItems;
private int customMenuItemIndex;
private JMenuItem solveCommand;
private Color[] colors;
private JLabel statusBar;
@ -219,17 +222,17 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
}
private JMenuItem addMenuItemCallback(JMenu jm, String name, final String callback, final int arg) {
return addMenuItemCallback(jm, name, callback, new int[] {arg});
return addMenuItemCallback(jm, name, callback, new int[] {arg}, false);
}
private JMenuItem addMenuItemCallback(JMenu jm, String name, final String callback) {
return addMenuItemCallback(jm, name, callback, new int[0]);
return addMenuItemCallback(jm, name, callback, new int[0], false);
}
private JMenuItem addMenuItemCallback(JMenu jm, String name, final String callback, final int[] args) {
private JMenuItem addMenuItemCallback(JMenu jm, String name, final String callback, final int[] args, boolean checkbox) {
JMenuItem jmi;
if (jm == typeMenu)
typeMenu.add(jmi = new JCheckBoxMenuItem(name));
if (checkbox)
jm.add(jmi = new JCheckBoxMenuItem(name));
else
jm.add(jmi = new JMenuItem(name));
jmi.addActionListener(new ActionListener() {
@ -261,12 +264,29 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
} else {
typeMenu.setVisible(true);
}
addMenuItemCallback(typeMenu, "Custom...", "jcallback_config_event", CFG_SETTINGS);
typeMenuItems[customMenuItemIndex] =
addMenuItemCallback(typeMenu, "Custom...",
"jcallback_config_event",
new int[] {CFG_SETTINGS}, true);
}
private void addTypeItem(String name, final int ptrGameParams) {
private void addTypeItem
(JMenu targetMenu, String name, int newId, final int ptrGameParams) {
typeMenu.setVisible(true);
addMenuItemCallback(typeMenu, name, "jcallback_preset_event", ptrGameParams);
typeMenuItems[newId] =
addMenuItemCallback(targetMenu, name,
"jcallback_preset_event",
new int[] {ptrGameParams}, true);
}
private void addTypeSubmenu
(JMenu targetMenu, String name, int newId) {
JMenu newMenu = new JMenu(name);
newMenu.setVisible(true);
typeMenuItems[newId] = newMenu;
targetMenu.add(newMenu);
}
public int call(int cmd, int arg1, int arg2, int arg3) {
@ -279,8 +299,20 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
if ((arg2 & 4) != 0) solveCommand.setEnabled(true);
colors = new Color[arg3];
return 0;
case 1: // Type menu item
addTypeItem(runtime.cstring(arg1), arg2);
case 1: // configure Type menu
if (arg1 == 0) {
// preliminary setup
typeMenuItems = new JMenuItem[arg2 + 2];
typeMenuItems[arg2] = typeMenu;
customMenuItemIndex = arg2 + 1;
return arg2;
} else if (xarg1 != 0) {
addTypeItem((JMenu)typeMenuItems[arg2],
runtime.cstring(arg1), arg3, xarg1);
} else {
addTypeSubmenu((JMenu)typeMenuItems[arg2],
runtime.cstring(arg1), arg3);
}
return 0;
case 2: // MessageBox
JOptionPane.showMessageDialog(this, runtime.cstring(arg2), runtime.cstring(arg1), arg3 == 0 ? JOptionPane.INFORMATION_MESSAGE : JOptionPane.ERROR_MESSAGE);
@ -432,10 +464,11 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
dlg = null;
return 0;
case 13: // tick a menu item
if (arg1 < 0) arg1 = typeMenu.getItemCount() - 1;
for (int i = 0; i < typeMenu.getItemCount(); i++) {
if (typeMenu.getMenuComponent(i) instanceof JCheckBoxMenuItem) {
((JCheckBoxMenuItem)typeMenu.getMenuComponent(i)).setSelected(arg1 == i);
if (arg1 < 0) arg1 = customMenuItemIndex;
for (int i = 0; i < typeMenuItems.length; i++) {
if (typeMenuItems[i] instanceof JCheckBoxMenuItem) {
((JCheckBoxMenuItem)typeMenuItems[i]).setSelected
(arg1 == i);
}
}
return 0;

1832
apps/plugins/puzzles/src/aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1505,7 +1505,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Black Box", "games.blackbox", "blackbox",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,125 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Black Box</title>
<link rel="previous" href="untangle.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="slant.html">
</head>
<body>
<p><a href="untangle.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="slant.html">Next</a></p>
<h1><a name="C19"></a>Chapter 19: <a name="i0"></a>Black Box</h1>
<p>
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.
</p>
<p>
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:
</p>
<ul><li>
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.
</li>
<li>
A beam with a ball in its front-left square and no ball ahead of it gets deflected 90 degrees to the right.
</li>
<li>
A beam with a ball in its front-right square and no ball ahead of it gets similarly deflected to the left.
</li>
<li>
A beam that would re-emerge from its entry location is considered to be &#8216;reflected&#8217;.
</li>
<li>
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 &#8216;reflected&#8217;.
</li>
</ul>
<p>
Beams that are reflected appear as a &#8216;R&#8217;; beams that hit balls head-on appear as &#8216;H&#8217;. Otherwise, a number appears at the firing point and the location where the beam emerges (this number is unique to that shot).
</p>
<p>
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.
</p>
<p>
Here is a diagram showing how the positions of balls can create each of the beam behaviours shown above:
</p>
<pre><code> 1RHR----
|..O.O...|
2........3
|........|
|........|
3........|
|......O.|
H........|
|.....O..|
12-RR---
</code></pre>
<p>
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 &#8216;H&#8217; on the left side of the example).
</p>
<p>
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 <code>x</code>):
</p>
<pre><code> --------
|........|
|........|
|..O..O..|
|...xx...|
|...xx...|
|..O..O..|
|........|
|........|
--------
</code></pre>
<p>
For this reason, when you have your guesses checked, the game will check that your solution <em>produces the same results</em> 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 <em>any</em> of the locations marked with an <code>x</code>, and you would still win.
</p>
<p>
Black Box was contributed to this collection by James Harvey.
</p>
<h2><a name="S19.1"></a>19.1 <a name="i1"></a>Black Box controls</h2>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
If you click the &#8216;check&#8217; 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.
</p>
<p>
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 &#8216;check&#8217; button), and red text marks any laser you <em>could</em> have fired in order to distinguish your ball layout from the correct one.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S19.2"></a>19.2 <a name="i2"></a>Black Box parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Width</em>, <em>Height</em>
</dt>
<dd>
Size of grid in squares. There are 2 &#215; <em>Width</em> &#215; <em>Height</em> lasers per grid, two per row and two per column.
</dd>
<dt>
<em>No. of balls</em>
</dt>
<dd>
Number of balls to place in the grid. This can be a single number, or a range (separated with a hyphen, like &#8216;2-6&#8217;), and determines the number of balls to place on the grid. The &#8216;reveal&#8217; 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.
</dd>
</dl>
<hr><address></address></body>
</html>

View file

@ -70,7 +70,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -3224,7 +3224,7 @@ static void game_print(drawing *dr, const game_state *state, int ts)
const struct game thegame = {
"Bridges", "games.bridges", "bridges",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,135 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Bridges</title>
<link rel="previous" href="tents.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="unequal.html">
</head>
<body>
<p><a href="tents.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="unequal.html">Next</a></p>
<h1><a name="C26"></a>Chapter 26: <a name="i0"></a>Bridges</h1>
<p>
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:
</p>
<ul><li>
Bridges run horizontally or vertically.
</li>
<li>
The number of bridges terminating at any island is equal to the number written in that island.
</li>
<li>
Two bridges may run in parallel between the same two islands, but no more than two may do so.
</li>
<li>
No bridge crosses another bridge.
</li>
<li>
All the islands are connected together.
</li>
</ul>
<p>
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.
</p>
<p>
Credit for this puzzle goes to <a name="i1"></a>Nikoli <a href="#p0">[12]</a>.
</p>
<p>
Bridges was contributed to this collection by James Harvey.
</p>
<p><a name="p0"></a>
[12] <a href="http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html"><code>http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html</code></a> (beware of Flash)
</p>
<h2><a name="S26.1"></a>26.1 <a name="i2"></a>Bridges controls</h2>
<p>
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.)
</p>
<p>
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.
</p>
<p>
If you want to remind yourself that two islands definitely <em>do not</em> have a bridge between them, you can right-drag between them in the same way to draw a &#8216;non-bridge&#8217; marker.
</p>
<p>
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.
</p>
<p>
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 &#8216;non-bridge&#8217; marker. Pressing the return key followed by a cursor key will also lay a bridge in that direction.
</p>
<p>
You can mark an island as finished by pressing the space bar or by pressing the return key twice.
</p>
<p>
By pressing a number key, you can jump to the nearest island with that number. Letters &#8216;a&#8217;, ..., &#8216;f&#8217; count as 10, ..., 15 and &#8216;0&#8217; as 16.
</p>
<p>
Violations of the puzzle rules will be marked in red:
</p>
<ul><li>
An island with too many bridges will be highlighted in red.
</li>
<li>
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.
</li>
<li>
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.
</li>
<li>
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.
</li>
</ul>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S26.2"></a>26.2 <a name="i3"></a>Bridges parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Width</em>, <em>Height</em>
</dt>
<dd>
Size of grid in squares.
</dd>
<dt>
<em>Difficulty</em>
</dt>
<dd>
Difficulty level of puzzle.
</dd>
<dt>
<em>Allow loops</em>
</dt>
<dd>
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.
</dd>
<dt>
<em>Max. bridges per direction</em>
</dt>
<dd>
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.
</dd>
<dt>
<em>%age of island squares</em>
</dt>
<dd>
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.
</dd>
<dt>
<em>Expansion factor (%age)</em>
</dt>
<dd>
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.
<p>
High expansion factors usually mean easier puzzles with fewer possible islands; low expansion factors can create lots of tightly-packed islands.
</p>
</dd>
</dl>
<hr><address></address></body>
</html>

View file

@ -1,4 +1,4 @@
#include "rbassert.h"
#include <assert.h>
#include <string.h>
#include "puzzles.h"

View file

@ -0,0 +1,285 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Common features</title>
<link rel="previous" href="intro.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="net.html">
</head>
<body>
<p><a href="intro.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="net.html">Next</a></p>
<ul>
<li><a href="#C2">Chapter 2: Common features</a>
<ul>
<li><a href="#S2.1">2.1 Common actions</a></li>
<li><a href="#S2.2">2.2 Specifying games with the game ID</a></li>
<li><a href="#S2.3">2.3 The &#8216;Type&#8217; menu</a></li>
<li><a href="#S2.4">2.4 Specifying game parameters on the command line</a></li>
<li><a href="#S2.5">2.5 Unix command-line options</a></li>
</ul></li>
</ul>
<h1><a name="C2"></a>Chapter 2: <a name="i0"></a>Common features</h1>
<p>
This chapter describes features that are common to all the games.
</p>
<h2><a name="S2.1"></a>2.1 <a name="i1"></a>Common actions</h2>
<p>
These actions are all available from the <a name="i2"></a>&#8216;Game&#8217; menu and via <a name="i3"></a>keyboard shortcuts, in addition to any game-specific actions.
</p>
<p>
(On <a name="i4"></a>Mac OS X, to conform with local user interface standards, these actions are situated on the <a name="i5"></a>&#8216;File&#8217; and <a name="i6"></a>&#8216;Edit&#8217; menus instead.)
</p>
<dl><dt>
<a name="i7"></a><em>New game</em> (&#8216;N&#8217;, Ctrl+&#8216;N&#8217;)
</dt>
<dd>
Starts a new game, with a random initial state.
</dd>
<dt>
<a name="i8"></a><em>Restart game</em>
</dt>
<dd>
Resets the current game to its initial state. (This can be undone.)
</dd>
<dt>
<a name="i9"></a><em>Load</em>
</dt>
<dd>
Loads a saved game from a file on disk.
</dd>
<dt>
<a name="i10"></a><em>Save</em>
</dt>
<dd>
Saves the current state of your game to a file on disk.
<p>
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).
</p>
</dd>
<dt>
<a name="i11"></a><em>Print</em>
</dt>
<dd>
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 &#8211; it's hard to think of a sensible printable representation of Fifteen!)
</dd>
<dt>
<a name="i12"></a><em>Undo</em> (&#8216;U&#8217;, Ctrl+&#8216;Z&#8217;, Ctrl+&#8216;_&#8217;)
</dt>
<dd>
Undoes a single move. (You can undo moves back to the start of the session.)
</dd>
<dt>
<a name="i13"></a><em>Redo</em> (&#8216;R&#8217;, Ctrl+&#8216;R&#8217;)
</dt>
<dd>
Redoes a previously undone move.
</dd>
<dt>
<a name="i14"></a><em>Copy</em>
</dt>
<dd>
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.)
</dd>
<dt>
<a name="i15"></a><em>Solve</em>
</dt>
<dd>
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 <em>get</em> 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.
<p>
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 <em>some</em> external game IDs, but only if they aren't too difficult.
</p>
<p>
The &#8216;Solve&#8217; 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.
</p>
</dd>
<dt>
<a name="i16"></a><a name="i17"></a><em>Quit</em> (&#8216;Q&#8217;, Ctrl+&#8216;Q&#8217;)
</dt>
<dd>
Closes the application entirely.
</dd>
</dl>
<h2><a name="S2.2"></a>2.2 Specifying games with the <a name="i18"></a>game ID</h2>
<p>
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.
</p>
<p>
The &#8216;<a name="i19"></a>Specific&#8217; and &#8216;<a name="i20"></a>Random Seed&#8217; options from the <a name="i21"></a>&#8216;Game&#8217; menu (or the &#8216;File&#8217; menu, on <a name="i22"></a>Mac OS X) each show a piece of text (a &#8216;game ID&#8217;) which is sufficient to reconstruct precisely the same game at a later date.
</p>
<p>
You can enter either of these pieces of text back into the program (via the same &#8216;Specific&#8217; or &#8216;Random Seed&#8217; menu options) at a later point, and it will recreate the same game. You can also use either one as a <a name="i23"></a>command line argument (on Windows or Unix); see <a href="#S2.4">section 2.4</a> for more detail.
</p>
<p>
The difference between the two forms is that a descriptive game ID is a literal <em>description</em> of the <a name="i24"></a>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:
</p>
<ul><li>
Descriptive game IDs tend to be longer in many puzzles (although some, such as Cube (<a href="cube.html#C4">chapter 4</a>), only need very short descriptions). So a random seed is often a <em>quicker</em> 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.
</li>
<li>
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.
</li>
<li>
It is often possible to convert puzzles from other sources (such as &#8216;nonograms&#8217; or &#8216;sudoku&#8217; from newspapers) into descriptive game IDs suitable for use with these programs.
</li>
<li>
Random seeds are not guaranteed to produce the same result if you use them with a different <a name="i25"></a><em>version</em> 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.
<p>
(Use the &#8216;About&#8217; 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.)
</p>
</li>
</ul>
<p>
<a name="i26"></a>A descriptive game ID starts with a piece of text which encodes the <a name="i27"></a><em>parameters</em> 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.
</p>
<p>
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 <em>from</em> a random seed. If you <em>enter</em> a random seed, however, the program will be able to show you the descriptive game ID derived from that random seed.
</p>
<p>
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 <em>generating</em> puzzle grids, and is not important when playing them. Thus, for example, the difficulty level in Solo (<a href="solo.html#C11">chapter 11</a>) is not mentioned in the descriptive game ID.
</p>
<p>
These additional parameters are also not set permanently if you type in a game ID. For example, suppose you have Solo set to &#8216;Advanced&#8217; difficulty level, and then a friend wants your help with a &#8216;Trivial&#8217; puzzle; so the friend reads out a random seed specifying &#8216;Trivial&#8217; difficulty, and you type it in. The program will generate you the same &#8216;Trivial&#8217; 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 &#8216;Advanced&#8217; difficulty which it was previously set on.
</p>
<h2><a name="S2.3"></a>2.3 The &#8216;Type&#8217; menu</h2>
<p>
The <a name="i28"></a>&#8216;Type&#8217; menu, if present, may contain a list of <a name="i29"></a>preset game settings. Selecting one of these will start a new random game with the parameters specified.
</p>
<p>
The &#8216;Type&#8217; menu may also contain a &#8216;<a name="i30"></a>Custom&#8217; option which allows you to fine-tune game <a name="i31"></a>parameters. The parameters available are specific to each game and are described in the following sections.
</p>
<h2><a name="S2.4"></a>2.4 Specifying game parameters on the <a name="i32"></a>command line</h2>
<p>
(This section does not apply to the <a name="i33"></a>Mac OS X version.)
</p>
<p>
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!)
</p>
<p>
However, if you do want to arrange for one of these games to <a name="i34"></a>default to a particular set of parameters, you can specify them on the command line.
</p>
<p>
The easiest way to do this is to set up the parameters you want using the &#8216;Type&#8217; menu (see <a href="#S2.3">section 2.3</a>), and then to select &#8216;Random Seed&#8217; from the &#8216;Game&#8217; or &#8216;File&#8217; menu (see <a href="#S2.2">section 2.2</a>). The text in the &#8216;Game ID&#8217; 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 &#8216;Type&#8217; menu).
</p>
<p>
If you run the game with just that parameter text on the command line, it will start up with the settings you specified.
</p>
<p>
For example: if you run Cube (see <a href="cube.html#C4">chapter 4</a>), select &#8216;Octahedron&#8217; from the &#8216;Type&#8217; menu, and then go to the game ID selection, you will see a string of the form &#8216;<code>o2x2#338686542711620</code>&#8217;. Take only the part before the hash (&#8216;<code>o2x2</code>&#8217;), and start Cube with that text on the command line: &#8216;<code>PREFIX-cube o2x2</code>&#8217;.
</p>
<p>
If you copy the <em>entire</em> 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.
</p>
<p>
(You could also retrieve the encoded game parameters using the &#8216;Specific&#8217; menu option instead of &#8216;Random Seed&#8217;, but if you do then some options, such as the difficulty level in Solo, will be missing. See <a href="#S2.2">section 2.2</a> for more details on this.)
</p>
<h2><a name="S2.5"></a>2.5 <a name="i35"></a>Unix <a name="i36"></a>command-line options</h2>
<p>
(This section only applies to the Unix port.)
</p>
<p>
In addition to being able to specify game parameters on the command line (see <a href="#S2.4">section 2.4</a>), there are various other options:
</p>
<dl><dt>
<code>--game</code>
</dt>
<dt>
<code>--load</code>
</dt>
<dd>
These options respectively determine whether the command-line argument is treated as specifying game parameters or a <a name="i37"></a>save file to <a name="i38"></a>load. Only one should be specified. If neither of these options is specified, a guess is made based on the format of the argument.
</dd>
<dt>
<code>--generate </code><em>n</em>
</dt>
<dd>
If this option is specified, instead of a puzzle being displayed, a number of descriptive game IDs will be <a name="i39"></a>invented and printed on standard output. This is useful for gaining access to the game generation algorithms without necessarily using the frontend.
<p>
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.
</p>
<p>
The most common use of this option is in conjunction with <code>--print</code>, in which case its behaviour is slightly different; see below.
</p>
</dd>
<dt>
<a name="i40"></a><code>--print </code><em>w</em><code>x</code><em>h</em>
</dt>
<dd>
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 <a name="i41"></a>PostScript format.
<p>
On each page of puzzles, there will be <em>w</em> across and <em>h</em> down. If there are more puzzles than <em>w</em>&#215;<em>h</em>, more than one page will be printed.
</p>
<p>
If <code>--generate</code> 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 <a href="#S2.2">section 2.2</a>), in the same format produced by <code>--generate</code>.
</p>
<p>
For example:
</p>
<pre><code>PREFIX-net --generate 12 --print 2x3 7x7w | lpr
</code></pre>
<p>
will generate two pages of printed Net puzzles (each of which will have a 7&#215;7 wrapping grid), and pipe the output to the <code>lpr</code> command, which on many systems will send them to an actual printer.
</p>
<p>
There are various other options which affect printing; see below.
</p>
</dd>
<dt>
<code>--save </code><em>file-prefix</em> [ <code>--save-suffix </code><em>file-suffix</em> ]
</dt>
<dd>
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.
<p>
If <code>--generate</code> 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 <a href="#S2.2">section 2.2</a>), in the same format produced by <code>--generate</code>.
</p>
<p>
For example:
</p>
<pre><code>PREFIX-net --generate 12 --save game --save-suffix .sav
</code></pre>
<p>
will generate twelve Net saved-game files with the names <code>game0.sav</code> to <code>game11.sav</code>.
</p>
</dd>
<dt>
<code>--version</code>
</dt>
<dd>
Prints version information about the game, and then quits.
</dd>
</dl>
<p>
The following options are only meaningful if <code>--print</code> is also specified:
</p>
<dl><dt>
<code>--with-solutions</code>
</dt>
<dd>
The set of pages filled with unsolved puzzles will be followed by the solutions to those puzzles.
</dd>
<dt>
<code>--scale </code><em>n</em>
</dt>
<dd>
Adjusts how big each puzzle is when printed. Larger numbers make puzzles bigger; the default is 1.0.
</dd>
<dt>
<code>--colour</code>
</dt>
<dd>
Puzzles will be printed in colour, rather than in black and white (if supported by the puzzle).
</dd>
</dl>
<hr><address></address></body>
</html>

347
apps/plugins/puzzles/src/compile Executable file
View file

@ -0,0 +1,347 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# 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 <http://www.gnu.org/licenses/>.
# 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 <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
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 <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.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: "UTC"
# time-stamp-end: "; # UTC"
# End:

View file

@ -0,0 +1,135 @@
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.8.4-1-ARCH
uname -s = Linux
uname -v = #1 SMP PREEMPT Sat Oct 22 18:26:57 CEST 2016
/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. ##
## ----------- ##
## ---------------- ##
## Cache variables. ##
## ---------------- ##
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_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=
## ----------------- ##
## Output variables. ##
## ----------------- ##
CC=''
CFLAGS=''
CPPFLAGS=''
DEFS=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EXEEXT=''
INSTALL_DATA=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
LDFLAGS=''
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
OBJEXT=''
PACKAGE_BUGREPORT='anakin@pobox.com'
PACKAGE_NAME='puzzles'
PACKAGE_STRING='puzzles 6.66'
PACKAGE_TARNAME='puzzles'
PACKAGE_URL=''
PACKAGE_VERSION='6.66'
PATH_SEPARATOR=':'
RANLIB=''
SHELL='/bin/sh'
ac_ct_CC=''
bindir='${exec_prefix}/bin'
build_alias=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
host_alias=''
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='NONE'
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 ""
configure: exit 2

5739
apps/plugins/puzzles/src/configure vendored Executable file

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1737,7 +1737,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Cube", "games.cube", "cube",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,57 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Cube</title>
<link rel="previous" href="net.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="fifteen.html">
</head>
<body>
<p><a href="net.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="fifteen.html">Next</a></p>
<h1><a name="C4"></a>Chapter 4: <a name="i0"></a>Cube</h1>
<p>
This is another one I originally saw as a web game. This one was a Java game <a href="#p0">[2]</a>, 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.
</p>
<p>
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.
</p>
<p><a name="p0"></a>
[2] <a href="http://www3.sympatico.ca/paulscott/cube/cube.htm"><code>http://www3.sympatico.ca/paulscott/cube/cube.htm</code></a>
</p>
<h2><a name="S4.1"></a>4.1 <a name="i1"></a>Cube controls</h2>
<p>
This game can be played with either the keyboard or the mouse.
</p>
<p>
Left-clicking anywhere on the window will move the cube (or other solid) towards the mouse pointer.
</p>
<p>
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 (&#8216;7&#8217;, &#8216;9&#8217;, &#8216;1&#8217;, &#8216;3&#8217;) can be used for diagonal movement.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S4.2"></a>4.2 <a name="i2"></a>Cube parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Type of solid</em>
</dt>
<dd>
Selects the solid to roll (and hence the shape of the grid): tetrahedron, cube, octahedron, or icosahedron.
</dd>
<dt>
<em>Width / top</em>, <em>Height / bottom</em>
</dt>
<dd>
On a square grid, horizontal and vertical dimensions. On a triangular grid, the number of triangles on the top and bottom rows respectively.
</dd>
</dl>
<hr><address></address></body>
</html>

791
apps/plugins/puzzles/src/depcomp Executable file
View file

@ -0,0 +1,791 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC
# Copyright (C) 1999-2014 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 <http://www.gnu.org/licenses/>.
# 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 <oliva@dcc.unicamp.br>.
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 <bug-automake@gnu.org>.
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: "UTC"
# time-stamp-end: "; # UTC"
# End:

View file

@ -391,8 +391,9 @@ with the default values, and returns a pointer to it.
\c int (*fetch_preset)(int i, char **name, game_params **params);
This function is used to populate the \q{Type} menu, which provides
a list of conveniently accessible preset parameters for most games.
This function is one of the two APIs a back end can provide to
populate the \q{Type} menu, which provides a list of conveniently
accessible preset parameters for most games.
The function is called with \c{i} equal to the index of the preset
required (numbering from zero). It returns \cw{FALSE} if that preset
@ -406,6 +407,33 @@ returns \cw{TRUE}.
If the game does not wish to support any presets at all, this
function is permitted to return \cw{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 \cw{NULL}, and instead fill in the
alternative function pointer \cw{preset_menu}
(\k{backend-preset-menu}).
\S{backend-preset-menu} \cw{preset_menu()}
\c 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 \c{struct preset_menu} (see \k{midend-get-presets}) and further
submenus (if it wishes) dangling off it. There are utility functions
described in \k{utils-presets} 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 \cw{fetch_preset()} function (see
\k{backend-fetch-preset}).
The game need not fill in the \c{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.
\S{backend-encode-params} \cw{encode_params()}
\c char *(*encode_params)(const game_params *params, int full);
@ -2743,8 +2771,8 @@ these parameters until further notice.
The usual way in which the front end will have an actual
\c{game_params} structure to pass to this function is if it had
previously got it from \cw{midend_fetch_preset()}
(\k{midend-fetch-preset}). Thus, this function is usually called in
previously got it from \cw{midend_get_presets()}
(\k{midend-get-presets}). Thus, this function is usually called in
response to the user making a selection from the presets menu.
\H{midend-get-params} \cw{midend_get_params()}
@ -2966,34 +2994,63 @@ 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.
\H{midend-num-presets} \cw{midend_num_presets()}
\H{midend-get-presets} \cw{midend_get_presets()}
\c int midend_num_presets(midend *me);
\c struct preset_menu *midend_get_presets(midend *me, int *id_limit);
Returns the number of game parameter presets supplied by this game.
Front ends should use this function and \cw{midend_fetch_preset()}
to configure their presets menu rather than calling the back end
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.)
Returns a data structure describing this game's collection of preset
game parameters, organised into a hierarchical structure of menus and
submenus.
\H{midend-fetch-preset} \cw{midend_fetch_preset()}
The return value is a pointer to a data structure containing the
following fields (among others, which are not intended for front end
use):
\c void midend_fetch_preset(midend *me, int n,
\c char **name, game_params **params);
\c struct preset_menu {
\c int n_entries;
\c struct preset_menu_entry *entries;
\c /* and other things */
\e iiiiiiiiiiiiiiiiiiiiii
\c };
Returns one of the preset game parameter structures for the game. On
input \c{n} must be a non-negative integer and less than the value
returned from \cw{midend_num_presets()}. On output, \c{*name} is set
to an ASCII string suitable for entering in the game's presets menu,
and \c{*params} is set to the corresponding \c{game_params}
structure.
Those fields describe the intended contents of one particular menu in
the hierarchy. \cq{entries} points to an array of \cq{n_entries}
items, each of which is a structure containing the following fields:
Both of the two output values are dynamically allocated, but they
are owned by the mid-end structure: the front end should not ever
free them directly, because they will be freed automatically during
\cw{midend_free()}.
\c struct preset_menu_entry {
\c char *title;
\c game_params *params;
\c struct preset_menu *submenu;
\c int id;
\c };
Of these fields, \cq{title} and \cq{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 \c{midend_which_preset} (\k{midend-which-preset}), when that preset
is the one selected.
The other two fields are mutually exclusive. Each \c{struct
preset_menu_entry} will have one of those fields \cw{NULL} and the
other one non-null. If the menu item is an actual preset, then
\cq{params} will point to the set of game parameters that go with the
name; if it's a submenu, then \cq{submenu} instead will be non-null,
and will point at a subsidiary \c{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
\cq{id_limit} to \cw{midend_get_presets} as the address of an \c{int}
variable, into which \cw{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.
\H{midend-which-preset} \cw{midend_which_preset()}
@ -3005,6 +3062,10 @@ no preset matches. Front ends could use this to maintain a tick
beside one of the items in the menu (or tick the \q{Custom} option
if the return value is less than zero).
The returned index value (if non-negative) will match the \c{id} field
of the corresponding \cw{struct preset_menu_entry} returned by
\c{midend_get_presets()} (\k{midend-get-presets}).
\H{midend-wants-statusbar} \cw{midend_wants_statusbar()}
\c int midend_wants_statusbar(midend *me);
@ -3535,6 +3596,63 @@ single element (typically measured using \c{sizeof}). \c{rs} is a
\c{random_state} used to generate all the random numbers for the
shuffling process.
\H{utils-presets} Presets menu management
The function \c{midend_get_presets()} (\k{midend-get-presets}) 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.
\S{utils-preset-menu-new} \cw{preset_menu_new()}
\c struct preset_menu *preset_menu_new(void);
Allocates a new \c{struct preset_menu}, and initialises it to hold no
menu items.
\S{utils-preset-menu-add_submenu} \cw{preset_menu_add_submenu()}
\c struct preset_menu *preset_menu_add_submenu
\c (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 \c{struct preset_menu} describing the
submenu.
The string parameter \cq{title} must be dynamically allocated by the
caller. The preset-menu structure will take ownership of it, so the
caller must not free it.
\S{utils-preset-menu-add-preset} \cw{preset_menu_add_preset()}
\c void preset_menu_add_preset
\c (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 \cq{title} and the game parameter structure
\cq{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.
\S{utils-preset-menu-lookup-by-id} \cw{preset_menu_lookup_by_id()}
\c game_params *preset_menu_lookup_by_id
\c (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 \c{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.
\H{utils-alloc} Memory allocation
Puzzles has some central wrappers on the standard memory allocation

View file

@ -185,7 +185,7 @@
* think of.
*/
#include "rbassert.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>

View file

@ -0,0 +1,217 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title></title>
<link rel="previous" href="licence.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
</head>
<body>
<p><a href="licence.html">Previous</a> | <a href="index.html">Contents</a> | Index | Next</p>
<h1><a name="Index"></a>Index</h1><p>
Black Box: <a href="blackbox.html#i0">Chapter 19</a><br>
Bridges: <a href="bridges.html#i0">Chapter 26</a><br>
bugs: <a href="intro.html#i7">Chapter 1</a><br>
command line: <a href="common.html#i23">Section 2.2</a>, <a href="common.html#i32">Section 2.4</a>, <a href="common.html#i36">Section 2.5</a><br>
common features: <a href="common.html#i0">Chapter 2</a><br>
controls: <a href="common.html#i1">Section 2.1</a><br>
controls, for Black Box: <a href="blackbox.html#i1">Section 19.1</a><br>
controls, for Bridges: <a href="bridges.html#i2">Section 26.1</a><br>
controls, for Cube: <a href="cube.html#i1">Section 4.1</a><br>
controls, for Dominosa: <a href="dominosa.html#i1">Section 17.1</a><br>
controls, for Fifteen: <a href="fifteen.html#i2">Section 5.1</a><br>
controls, for Filling: <a href="filling.html#i2">Section 29.1</a><br>
controls, for Flip: <a href="flip.html#i1">Section 14.1</a><br>
controls, for Flood: <a href="flood.html#i1">Section 39.1</a><br>
controls, for Galaxies: <a href="galaxies.html#i2">Section 28.1</a><br>
controls, for Guess: <a href="guess.html#i2">Section 15.1</a><br>
controls, for Inertia: <a href="inertia.html#i1">Section 24.1</a><br>
controls, for Keen: <a href="keen.html#i2">Section 30.1</a><br>
controls, for Light Up: <a href="lightup.html#i2">Section 21.1</a><br>
controls, for Loopy: <a href="loopy.html#i2">Section 23.1</a><br>
controls, for Magnets: <a href="magnets.html#i2">Section 33.1</a><br>
controls, for Map: <a href="map.html#i2">Section 22.1</a><br>
controls, for Mines: <a href="mines.html#i1">Section 12.1</a><br>
controls, for Net: <a href="net.html#i5">Section 3.1</a><br>
controls, for Netslide: <a href="netslide.html#i1">Chapter 9</a><br>
controls, for Palisade: <a href="palisade.html#i2">Section 41.1</a><br>
controls, for Pattern: <a href="pattern.html#i2">Section 10.1</a><br>
controls, for Pearl: <a href="pearl.html#i2">Section 36.1</a><br>
controls, for Pegs: <a href="pegs.html#i2">Section 16.1</a><br>
controls, for Range: <a href="range.html#i2">Section 35.1</a><br>
controls, for Rectangles: <a href="rect.html#i3">Section 8.1</a><br>
controls, for Same Game: <a href="samegame.html#i1">Section 13.1</a><br>
controls, for Signpost: <a href="signpost.html#i2">Section 34.1</a><br>
controls, for Singles: <a href="singles.html#i3">Section 32.1</a><br>
controls, for Sixteen: <a href="sixteen.html#i1">Section 6.1</a><br>
controls, for Slant: <a href="slant.html#i2">Section 20.1</a><br>
controls, for Solo: <a href="solo.html#i2">Section 11.1</a><br>
controls, for Tents: <a href="tents.html#i1">Section 25.1</a><br>
controls, for Towers: <a href="towers.html#i2">Section 31.1</a><br>
controls, for Tracks: <a href="tracks.html#i1">Section 40.1</a><br>
controls, for Twiddle: <a href="twiddle.html#i1">Section 7.1</a><br>
controls, for Undead: <a href="undead.html#i1">Section 37.1</a><br>
controls, for Unequal: <a href="unequal.html#i3">Section 27.1</a><br>
controls, for Unruly: <a href="unruly.html#i1">Section 38.1</a><br>
controls, for Untangle: <a href="untangle.html#i2">Section 18.1</a><br>
copy: <a href="common.html#i14">Section 2.1</a><br>
copyright: <a href="licence.html#i2">Appendix A</a><br>
Cube: <a href="cube.html#i0">Chapter 4</a><br>
&#8216;Custom&#8217;, menu option: <a href="common.html#i30">Section 2.3</a><br>
default parameters, specifying: <a href="common.html#i34">Section 2.4</a><br>
Dominosa: <a href="dominosa.html#i0">Chapter 17</a><br>
Edit menu: <a href="common.html#i6">Section 2.1</a><br>
exit: <a href="common.html#i16">Section 2.1</a><br>
feedback: <a href="intro.html#i6">Chapter 1</a><br>
Fifteen: <a href="fifteen.html#i0">Chapter 5</a><br>
File menu: <a href="common.html#i5">Section 2.1</a><br>
Filling: <a href="filling.html#i0">Chapter 29</a><br>
Flip: <a href="flip.html#i0">Chapter 14</a><br>
Flood: <a href="flood.html#i0">Chapter 39</a><br>
format, ID: <a href="common.html#i26">Section 2.2</a><br>
four-colouring: <a href="map.html#i1">Chapter 22</a><br>
FreeNet: <a href="net.html#i3">Chapter 3</a><br>
Futoshiki: <a href="unequal.html#i2">Chapter 27</a><br>
Galaxies: <a href="galaxies.html#i0">Chapter 28</a><br>
game ID: <a href="common.html#i18">Section 2.2</a><br>
game ID, format: <a href="common.html#i26">Section 2.2</a><br>
game ID, generating: <a href="common.html#i39">Section 2.5</a><br>
Game menu: <a href="common.html#i2">Section 2.1</a>, <a href="common.html#i21">Section 2.2</a><br>
generating game IDs: <a href="common.html#i39">Section 2.5</a><br>
Guess: <a href="guess.html#i0">Chapter 15</a><br>
Hitori: <a href="singles.html#i2">Chapter 32</a><br>
ID format: <a href="common.html#i26">Section 2.2</a><br>
ID, game: <a href="common.html#i18">Section 2.2</a><br>
Inertia: <a href="inertia.html#i0">Chapter 24</a><br>
initial state: <a href="common.html#i24">Section 2.2</a><br>
Janko: <a href="magnets.html#i1">Chapter 33</a>, <a href="signpost.html#i1">Chapter 34</a><br>
Keen: <a href="keen.html#i0">Chapter 30</a><br>
KenKen: <a href="keen.html#i1">Chapter 30</a><br>
keys: <a href="common.html#i3">Section 2.1</a><br>
keys, for Black Box: <a href="blackbox.html#i1">Section 19.1</a><br>
keys, for Cube: <a href="cube.html#i1">Section 4.1</a><br>
keys, for Fifteen: <a href="fifteen.html#i2">Section 5.1</a><br>
keys, for Flip: <a href="flip.html#i1">Section 14.1</a><br>
keys, for Guess: <a href="guess.html#i2">Section 15.1</a><br>
keys, for Inertia: <a href="inertia.html#i1">Section 24.1</a><br>
keys, for Net: <a href="net.html#i5">Section 3.1</a><br>
keys, for Same Game: <a href="samegame.html#i1">Section 13.1</a><br>
Latin square: <a href="unequal.html#i1">Chapter 27</a><br>
licence: <a href="licence.html#i1">Appendix A</a><br>
licence, MIT: <a href="intro.html#i3">Chapter 1</a>, <a href="licence.html#i0">Appendix A</a><br>
Light Up: <a href="lightup.html#i0">Chapter 21</a><br>
Linux: <a href="intro.html#i0">Chapter 1</a>, <a href="common.html#i35">Section 2.5</a><br>
load: <a href="common.html#i9">Section 2.1</a>, <a href="common.html#i38">Section 2.5</a><br>
Loopy: <a href="loopy.html#i0">Chapter 23</a><br>
Mac OS X: <a href="intro.html#i2">Chapter 1</a>, <a href="common.html#i4">Section 2.1</a>, <a href="common.html#i22">Section 2.2</a>, <a href="common.html#i33">Section 2.4</a><br>
Magnets: <a href="magnets.html#i0">Chapter 33</a><br>
Map: <a href="map.html#i0">Chapter 22</a><br>
Mastermind: <a href="guess.html#i1">Chapter 15</a><br>
Mines: <a href="mines.html#i0">Chapter 12</a><br>
MIT licence: <a href="intro.html#i3">Chapter 1</a>, <a href="licence.html#i0">Appendix A</a><br>
Net: <a href="net.html#i0">Chapter 3</a><br>
<code>NETGAME.EXE</code>: <a href="net.html#i2">Chapter 3</a><br>
Netslide: <a href="netslide.html#i0">Chapter 9</a><br>
NetWalk: <a href="net.html#i4">Chapter 3</a><br>
new game: <a href="common.html#i7">Section 2.1</a><br>
Nikoli: <a href="rect.html#i1">Chapter 8</a>, <a href="solo.html#i1">Chapter 11</a>, <a href="slant.html#i1">Chapter 20</a>, <a href="lightup.html#i1">Chapter 21</a>, <a href="loopy.html#i1">Chapter 23</a>, <a href="bridges.html#i1">Chapter 26</a>, <a href="galaxies.html#i1">Chapter 28</a>, <a href="filling.html#i1">Chapter 29</a>, <a href="singles.html#i1">Chapter 32</a>, <a href="range.html#i1">Chapter 35</a>, <a href="pearl.html#i1">Chapter 36</a>, <a href="palisade.html#i1">Chapter 41</a><br>
nonograms: <a href="pattern.html#i1">Chapter 10</a><br>
Palisade: <a href="palisade.html#i0">Chapter 41</a><br>
parameters: <a href="common.html#i27">Section 2.2</a>, <a href="common.html#i31">Section 2.3</a><br>
parameters, for Black Box: <a href="blackbox.html#i2">Section 19.2</a><br>
parameters, for Bridges: <a href="bridges.html#i3">Section 26.2</a><br>
parameters, for Cube: <a href="cube.html#i2">Section 4.2</a><br>
parameters, for Dominosa: <a href="dominosa.html#i2">Section 17.2</a><br>
parameters, for Fifteen: <a href="fifteen.html#i3">Section 5.2</a><br>
parameters, for Filling: <a href="filling.html#i3">Section 29.2</a><br>
parameters, for flip: <a href="flip.html#i2">Section 14.2</a><br>
parameters, for Flood: <a href="flood.html#i2">Section 39.2</a><br>
parameters, for Galaxies: <a href="galaxies.html#i3">Section 28.2</a><br>
parameters, for Guess: <a href="guess.html#i3">Section 15.2</a><br>
parameters, for Inertia: <a href="inertia.html#i2">Section 24.2</a><br>
parameters, for Keen: <a href="keen.html#i3">Section 30.2</a><br>
parameters, for Light Up: <a href="lightup.html#i3">Section 21.2</a><br>
parameters, for Loopy: <a href="loopy.html#i3">Section 23.2</a><br>
parameters, for Magnets: <a href="magnets.html#i3">Section 33.2</a><br>
parameters, for Map: <a href="map.html#i3">Section 22.2</a><br>
parameters, for Mines: <a href="mines.html#i2">Section 12.2</a><br>
parameters, for Net: <a href="net.html#i6">Section 3.2</a><br>
parameters, for Netslide: <a href="netslide.html#i2">Chapter 9</a><br>
parameters, for Palisade: <a href="palisade.html#i3">Section 41.2</a><br>
parameters, for Pattern: <a href="pattern.html#i3">Section 10.2</a><br>
parameters, for Pearl: <a href="pearl.html#i3">Section 36.2</a><br>
parameters, for Pegs: <a href="pegs.html#i3">Section 16.2</a><br>
parameters, for Range: <a href="range.html#i3">Section 35.2</a><br>
parameters, for Rectangles: <a href="rect.html#i4">Section 8.2</a><br>
parameters, for Same Game: <a href="samegame.html#i2">Section 13.2</a><br>
parameters, for Signpost: <a href="signpost.html#i3">Section 34.2</a><br>
parameters, for Singles: <a href="singles.html#i4">Section 32.2</a><br>
parameters, for Sixteen: <a href="sixteen.html#i2">Section 6.2</a><br>
parameters, for Slant: <a href="slant.html#i3">Section 20.2</a><br>
parameters, for Solo: <a href="solo.html#i3">Section 11.2</a><br>
parameters, for Tents: <a href="tents.html#i2">Section 25.2</a><br>
parameters, for Towers: <a href="towers.html#i3">Section 31.2</a><br>
parameters, for Tracks: <a href="tracks.html#i2">Section 40.2</a><br>
parameters, for Twiddle: <a href="twiddle.html#i2">Section 7.2</a><br>
parameters, for Undead: <a href="undead.html#i2">Section 37.2</a><br>
parameters, for Unequal: <a href="unequal.html#i4">Section 27.2</a><br>
parameters, for Unruly: <a href="unruly.html#i2">Section 38.2</a><br>
parameters, for Untangle: <a href="untangle.html#i3">Section 18.2</a><br>
patches: <a href="intro.html#i8">Chapter 1</a><br>
Pattern: <a href="pattern.html#i0">Chapter 10</a><br>
Pearl: <a href="pearl.html#i0">Chapter 36</a><br>
Pegs: <a href="pegs.html#i0">Chapter 16</a><br>
Planarity: <a href="untangle.html#i1">Chapter 18</a><br>
PostScript: <a href="common.html#i41">Section 2.5</a><br>
preferences, specifying default: <a href="common.html#i34">Section 2.4</a><br>
preset: <a href="common.html#i29">Section 2.3</a><br>
printing, on Unix: <a href="common.html#i40">Section 2.5</a><br>
printing, on Windows: <a href="common.html#i11">Section 2.1</a><br>
15-puzzle: <a href="fifteen.html#i1">Chapter 5</a><br>
Puzzle Palace: <a href="rect.html#i2">Chapter 8</a><br>
quit: <a href="common.html#i17">Section 2.1</a><br>
Random Seed: <a href="common.html#i20">Section 2.2</a><br>
Range: <a href="range.html#i0">Chapter 35</a><br>
Rectangles: <a href="rect.html#i0">Chapter 8</a><br>
redo: <a href="common.html#i13">Section 2.1</a><br>
restart game: <a href="common.html#i8">Section 2.1</a><br>
Same Game: <a href="samegame.html#i0">Chapter 13</a><br>
save: <a href="common.html#i10">Section 2.1</a>, <a href="common.html#i37">Section 2.5</a><br>
shortcuts (keyboard): <a href="common.html#i3">Section 2.1</a><br>
shortcuts (keyboard), for Black Box: <a href="blackbox.html#i1">Section 19.1</a><br>
shortcuts (keyboard), for Cube: <a href="cube.html#i1">Section 4.1</a><br>
shortcuts (keyboard), for Fifteen: <a href="fifteen.html#i2">Section 5.1</a><br>
shortcuts (keyboard), for Flip: <a href="flip.html#i1">Section 14.1</a><br>
shortcuts (keyboard), for Guess: <a href="guess.html#i2">Section 15.1</a><br>
shortcuts (keyboard), for Inertia: <a href="inertia.html#i1">Section 24.1</a><br>
shortcuts (keyboard), for Net: <a href="net.html#i5">Section 3.1</a><br>
shortcuts (keyboard), for Same Game: <a href="samegame.html#i1">Section 13.1</a><br>
Signpost: <a href="signpost.html#i0">Chapter 34</a><br>
Singles: <a href="singles.html#i0">Chapter 32</a><br>
Sixteen: <a href="sixteen.html#i0">Chapter 6</a><br>
Skyscrapers: <a href="towers.html#i1">Chapter 31</a><br>
Slant: <a href="slant.html#i0">Chapter 20</a><br>
Solitaire, Peg: <a href="pegs.html#i1">Chapter 16</a><br>
Solo: <a href="solo.html#i0">Chapter 11</a><br>
solve: <a href="common.html#i15">Section 2.1</a><br>
source code: <a href="intro.html#i4">Chapter 1</a><br>
&#8216;Specific&#8217;, menu option: <a href="common.html#i19">Section 2.2</a><br>
state, initial: <a href="common.html#i24">Section 2.2</a><br>
Tents: <a href="tents.html#i0">Chapter 25</a><br>
Towers: <a href="towers.html#i0">Chapter 31</a><br>
Tracks: <a href="tracks.html#i0">Chapter 40</a><br>
Twiddle: <a href="twiddle.html#i0">Chapter 7</a><br>
Type menu: <a href="common.html#i28">Section 2.3</a><br>
Undead: <a href="undead.html#i0">Chapter 37</a><br>
undo: <a href="common.html#i12">Section 2.1</a><br>
Unequal: <a href="unequal.html#i0">Chapter 27</a><br>
Unix: <a href="intro.html#i0">Chapter 1</a>, <a href="common.html#i35">Section 2.5</a><br>
Unruly: <a href="unruly.html#i0">Chapter 38</a><br>
Untangle: <a href="untangle.html#i0">Chapter 18</a><br>
version: <a href="common.html#i25">Section 2.2</a><br>
website: <a href="intro.html#i5">Chapter 1</a><br>
Windows: <a href="intro.html#i1">Chapter 1</a>, <a href="net.html#i1">Chapter 3</a></p>
<hr><address></address></body>
</html>

View file

@ -42,7 +42,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1709,7 +1709,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Dominosa", "games.dominosa", "dominosa",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,57 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Dominosa</title>
<link rel="previous" href="pegs.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="untangle.html">
</head>
<body>
<p><a href="pegs.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="untangle.html">Next</a></p>
<h1><a name="C17"></a>Chapter 17: <a name="i0"></a>Dominosa</h1>
<p>
A normal set of dominoes &#8211; that is, one instance of every (unordered) pair of numbers from 0 to 6 &#8211; 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.
</p>
<p>
This puzzle is widely credited to O. S. Adler, and takes part of its name from those initials.
</p>
<h2><a name="S17.1"></a>17.1 <a name="i1"></a>Dominosa controls</h2>
<p>
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.
</p>
<p>
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 <em>not</em> covered by a single domino. Right-clicking again removes the line.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S17.2"></a>17.2 <a name="i2"></a>Dominosa parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Maximum number on dominoes</em>
</dt>
<dd>
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) &#215; (N+1) rectangle; so, in particular, the default value of 6 gives an 8&#215;7 grid.
</dd>
<dt>
<em>Ensure unique solution</em>
</dt>
<dd>
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 <em>all</em> the possible solutions can be an additional challenge for an advanced player. Turning off this option can also speed up puzzle generation.
</dd>
</dl>
<hr><address></address></body>
</html>

View file

@ -26,7 +26,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <math.h>
#include "puzzles.h"

View file

@ -4,7 +4,7 @@
* worry about avoiding closed loops.
*/
#include "rbassert.h"
#include <assert.h>
#include <string.h>
#include "puzzles.h"

View file

@ -47,7 +47,7 @@
* that using whatever they normally use to print PDFs!)
*/
#include "rbassert.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
@ -61,7 +61,8 @@ extern void js_debug(const char *);
extern void js_error_box(const char *message);
extern void js_remove_type_dropdown(void);
extern void js_remove_solve_button(void);
extern void js_add_preset(const char *name);
extern void js_add_preset(int menuid, const char *name, int value);
extern int js_add_preset_submenu(int menuid, const char *name);
extern int js_get_selected_preset(void);
extern void js_select_preset(int n);
extern void js_get_date_64(unsigned *p);
@ -552,6 +553,21 @@ static game_params **presets;
static int npresets;
int have_presets_dropdown;
void populate_js_preset_menu(int menuid, struct preset_menu *menu)
{
int i;
for (i = 0; i < menu->n_entries; i++) {
struct preset_menu_entry *entry = &menu->entries[i];
if (entry->params) {
presets[entry->id] = entry->params;
js_add_preset(menuid, entry->title, entry->id);
} else {
int js_submenu = js_add_preset_submenu(menuid, entry->title);
populate_js_preset_menu(js_submenu, entry->submenu);
}
}
}
void select_appropriate_preset(void)
{
if (have_presets_dropdown) {
@ -696,7 +712,7 @@ void command(int n)
midend_redraw(me);
update_undo_redo();
js_focus_canvas();
select_appropriate_preset(); /* sort out Custom/Customise */
select_appropriate_preset();
}
}
break;
@ -787,23 +803,16 @@ int main(int argc, char **argv)
* Set up the game-type dropdown with presets and/or the Custom
* option.
*/
npresets = midend_num_presets(me);
if (npresets == 0) {
/*
* This puzzle doesn't have selectable game types at all.
* Completely remove the drop-down list from the page.
*/
js_remove_type_dropdown();
have_presets_dropdown = FALSE;
} else {
{
struct preset_menu *menu = midend_get_presets(me, &npresets);
presets = snewn(npresets, game_params *);
for (i = 0; i < npresets; i++) {
char *name;
midend_fetch_preset(me, i, &name, &presets[i]);
js_add_preset(name);
}
for (i = 0; i < npresets; i++)
presets[i] = NULL;
populate_js_preset_menu(0, menu);
if (thegame.can_configure)
js_add_preset(NULL); /* the 'Custom' entry in the dropdown */
js_add_preset(0, "Custom", -1);
have_presets_dropdown = TRUE;

View file

@ -45,7 +45,7 @@ mergeInto(LibraryManager.library, {
* provides neither presets nor configurability.
*/
js_remove_type_dropdown: function() {
document.getElementById("gametype").style.display = "none";
gametypelist.style.display = "none";
},
/*
@ -59,43 +59,61 @@ mergeInto(LibraryManager.library, {
},
/*
* void js_add_preset(const char *name);
* void js_add_preset(int menuid, const char *name, int value);
*
* Add a preset to the drop-down types menu. The provided text is
* the name of the preset. (The corresponding game_params stays on
* the C side and never comes out this far; we just pass a numeric
* index back to the C code when a selection is made.)
*
* The special 'Custom' preset is requested by passing NULL to
* this function, rather than the string "Custom", since in that
* case we need to do something special - see below.
* Add a preset to the drop-down types menu, or to a submenu of
* it. 'menuid' specifies an index into our array of submenus
* where the item might be placed; 'value' specifies the number
* that js_get_selected_preset() will return when this item is
* clicked.
*/
js_add_preset: function(ptr) {
var name = (ptr == 0 ? "Customise..." : Pointer_stringify(ptr));
var value = gametypeoptions.length;
js_add_preset: function(menuid, ptr, value) {
var name = Pointer_stringify(ptr);
var item = document.createElement("li");
item.setAttribute("data-index", value);
var tick = document.createElement("span");
tick.appendChild(document.createTextNode("\u2713"));
tick.style.color = "transparent";
tick.style.paddingRight = "0.5em";
item.appendChild(tick);
item.appendChild(document.createTextNode(name));
gametypesubmenus[menuid].appendChild(item);
gametypeitems.push(item);
var option = document.createElement("option");
option.value = value;
option.appendChild(document.createTextNode(name));
gametypeselector.appendChild(option);
gametypeoptions.push(option);
if (ptr == 0) {
// The option we've just created is the one for inventing
// a new custom setup.
gametypenewcustom = option;
option.value = -1;
// Now create another element called 'Custom', which will
// be auto-selected by us to indicate the custom settings
// you've previously selected. However, we don't add it to
// the game type selector; it will only appear when the
// user actually has custom settings selected.
option = document.createElement("option");
option.value = -2;
option.appendChild(document.createTextNode("Custom"));
gametypethiscustom = option;
item.onclick = function(event) {
if (dlg_dimmer === null) {
gametypeselectedindex = value;
command(2);
}
}
},
/*
* int js_add_preset_submenu(int menuid, const char *name);
*
* Add a submenu in the presets menu hierarchy. Returns its index,
* for passing as the 'menuid' argument in further calls to
* js_add_preset or this function.
*/
js_add_preset_submenu: function(menuid, ptr, value) {
var name = Pointer_stringify(ptr);
var item = document.createElement("li");
// We still create a transparent tick element, even though it
// won't ever be selected, to make submenu titles line up
// nicely with their neighbours.
var tick = document.createElement("span");
tick.appendChild(document.createTextNode("\u2713"));
tick.style.color = "transparent";
tick.style.paddingRight = "0.5em";
item.appendChild(tick);
item.appendChild(document.createTextNode(name));
var submenu = document.createElement("ul");
submenu.className = "left";
item.appendChild(submenu);
gametypesubmenus[menuid].appendChild(item);
var toret = gametypesubmenus.length;
gametypesubmenus.push(submenu);
return toret;
},
/*
@ -105,12 +123,7 @@ mergeInto(LibraryManager.library, {
* dropdown.
*/
js_get_selected_preset: function() {
for (var i in gametypeoptions) {
if (gametypeoptions[i].selected) {
return gametypeoptions[i].value;
}
}
return 0;
return gametypeselectedindex;
},
/*
@ -121,33 +134,15 @@ mergeInto(LibraryManager.library, {
* which turn out to exactly match a preset).
*/
js_select_preset: function(n) {
if (gametypethiscustom !== null) {
// Fiddle with the Custom/Customise options. If we're
// about to select the Custom option, then it should be in
// the menu, and the other one should read "Re-customise";
// if we're about to select another one, then the static
// Custom option should disappear and the other one should
// read "Customise".
if (gametypethiscustom.parentNode == gametypeselector)
gametypeselector.removeChild(gametypethiscustom);
if (gametypenewcustom.parentNode == gametypeselector)
gametypeselector.removeChild(gametypenewcustom);
if (n < 0) {
gametypeselector.appendChild(gametypethiscustom);
gametypenewcustom.lastChild.data = "Re-customise...";
gametypeselectedindex = n;
for (var i in gametypeitems) {
var item = gametypeitems[i];
var tick = item.firstChild;
if (item.getAttribute("data-index") == n) {
tick.style.color = "inherit";
} else {
gametypenewcustom.lastChild.data = "Customise...";
tick.style.color = "transparent";
}
gametypeselector.appendChild(gametypenewcustom);
gametypenewcustom.selected = false;
}
if (n < 0) {
gametypethiscustom.selected = true;
} else {
gametypeoptions[n].selected = true;
}
},
@ -192,8 +187,8 @@ mergeInto(LibraryManager.library, {
* after a move.
*/
js_enable_undo_redo: function(undo, redo) {
undo_button.disabled = (undo == 0);
redo_button.disabled = (redo == 0);
disable_menu_item(undo_button, (undo == 0));
disable_menu_item(redo_button, (redo == 0));
},
/*

View file

@ -79,22 +79,12 @@ var dlg_return_funcs = null;
// pass back the final value in each dialog control.
var dlg_return_sval, dlg_return_ival;
// The <select> object implementing the game-type drop-down, and a
// list of the <option> objects inside it. Used by js_add_preset(),
// The <ul> object implementing the game-type drop-down, and a list of
// the <li> objects inside it. Used by js_add_preset(),
// js_get_selected_preset() and js_select_preset().
//
// gametypethiscustom is an option which indicates some custom game
// params you've already set up, and which will be auto-selected on
// return from the customisation dialog; gametypenewcustom is an
// option which you select to indicate that you want to bring up the
// customisation dialog and select a new configuration. Ideally I'd do
// this with just one option serving both purposes, but instead we
// have to do this a bit oddly because browsers don't send 'onchange'
// events for a select element if you reselect the same one - so if
// you've picked a custom setup and now want to change it, you need a
// way to specify that.
var gametypeselector = null, gametypeoptions = [];
var gametypethiscustom = null, gametypehiddencustom = null;
var gametypelist = null, gametypeitems = [];
var gametypeselectedindex = null;
var gametypesubmenus = [];
// The two anchors used to give permalinks to the current puzzle. Used
// by js_update_permalinks().
@ -131,6 +121,14 @@ function relative_mouse_coords(event, element) {
y: event.pageY - ecoords.y};
}
// Enable and disable items in the CSS menus.
function disable_menu_item(item, disabledFlag) {
if (disabledFlag)
item.className = "disabled";
else
item.className = "";
}
// Init function called from body.onload.
function initPuzzle() {
// Construct the off-screen canvas used for double buffering.
@ -232,11 +230,8 @@ function initPuzzle() {
command(9);
};
gametypeselector = document.getElementById("gametype");
gametypeselector.onchange = function(event) {
if (dlg_dimmer === null)
command(2);
};
gametypelist = document.getElementById("gametype");
gametypesubmenus.push(gametypelist);
// In IE, the canvas doesn't automatically gain focus on a mouse
// click, so make sure it does

View file

@ -5,7 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1089,7 +1089,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Fifteen", "games.fifteen", "fifteen",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,41 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Fifteen</title>
<link rel="previous" href="cube.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="sixteen.html">
</head>
<body>
<p><a href="cube.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="sixteen.html">Next</a></p>
<h1><a name="C5"></a>Chapter 5: <a name="i0"></a>Fifteen</h1>
<p>
The old ones are the best: this is the good old &#8216;<a name="i1"></a>15-puzzle&#8217; with sliding tiles. You have a 4&#215;4 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,<em>space</em>).
</p>
<h2><a name="S5.1"></a>5.1 <a name="i2"></a>Fifteen controls</h2>
<p>
This game can be controlled with the mouse or the keyboard.
</p>
<p>
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.
</p>
<p>
The arrow keys will move a tile adjacent to the space in the direction indicated (moving the space in the <em>opposite</em> direction).
</p>
<p>
Pressing &#8216;h&#8217; will make a suggested move. Pressing &#8216;h&#8217; enough times will solve the game, but it may scramble your progress while doing so.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S5.2"></a>5.2 <a name="i3"></a>Fifteen parameters</h2>
<p>
The only options available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu are <em>Width</em> and <em>Height</em>, which are self-explanatory. (Once you've changed these, it's not a &#8216;15-puzzle&#8217; any more, of course!)
</p>
<hr><address></address></body>
</html>

View file

@ -56,7 +56,7 @@
* + but the hints are independent, not linear, so... what?
*/
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
#include <stdarg.h>
@ -1551,12 +1551,12 @@ static game_state *execute_move(const game_state *state, const char *move)
int value;
char *endptr, *delim = strchr(move, '_');
if (!delim) goto err;
value = strtol(delim+1, &endptr, 10);
value = strtol(delim+1, &endptr, 0);
if (*endptr || endptr == delim+1) goto err;
if (value < 0 || value > 9) goto err;
new_state = dup_game(state);
while (*move) {
const int i = strtol(move, &endptr, 10);
const int i = strtol(move, &endptr, 0);
if (endptr == move) goto err;
if (i < 0 || i >= sz) goto err;
new_state->board[i] = value;
@ -2111,7 +2111,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Filling", "games.filling", "filling",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,50 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Filling</title>
<link rel="previous" href="galaxies.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="keen.html">
</head>
<body>
<p><a href="galaxies.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="keen.html">Next</a></p>
<h1><a name="C29"></a>Chapter 29: <a name="i0"></a>Filling</h1>
<p>
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.
</p>
<p>
(&#8216;Connected region&#8217;, for the purposes of this game, does not count diagonally separated squares as adjacent.)
</p>
<p>
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).
</p>
<p>
Credit for this puzzle goes to <a name="i1"></a>Nikoli <a href="#p0">[14]</a>.
</p>
<p>
Filling was contributed to this collection by Jonas K&#246;lker.
</p>
<p><a name="p0"></a>
[14] <a href="http://www.nikoli.co.jp/en/puzzles/fillomino.html"><code>http://www.nikoli.co.jp/en/puzzles/fillomino.html</code></a>
</p>
<h2><a name="S29.1"></a>29.1 <a name="i2"></a>Filling controls</h2>
<p>
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).
</p>
<p>
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.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S29.2"></a>29.2 <a name="i3"></a>Filling parameters</h2>
<p>
Filling allows you to configure the number of rows and columns of the grid, through the &#8216;Type&#8217; menu.
</p>
<hr><address></address></body>
</html>

View file

@ -6,7 +6,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1313,7 +1313,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Flip", "games.flip", "flip",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,54 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Flip</title>
<link rel="previous" href="samegame.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="guess.html">
</head>
<body>
<p><a href="samegame.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="guess.html">Next</a></p>
<h1><a name="C14"></a>Chapter 14: <a name="i0"></a>Flip</h1>
<p>
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.
</p>
<p>
Each square contains a small diagram showing which other squares change when you flip it.
</p>
<h2><a name="S14.1"></a>14.1 <a name="i1"></a>Flip controls</h2>
<p>
This game can be played with either the keyboard or the mouse.
</p>
<p>
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.
</p>
<p>
If you use the &#8216;Solve&#8217; 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 <em>without</em> a red mark, a red mark will appear in it to indicate that you will need to reverse that operation to reach the solution.)
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S14.2"></a>14.2 <a name="i2"></a>Flip parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Width</em>, <em>Height</em>
</dt>
<dd>
Size of grid in squares.
</dd>
<dt>
<em>Shape type</em>
</dt>
<dd>
This control determines the shape of the region which is flipped by clicking in any given square. The default setting, &#8216;Crosses&#8217;, 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, &#8216;Random&#8217;, causes a random shape to be chosen for every square, so the game is different every time.
</dd>
</dl>
<hr><address></address></body>
</html>

View file

@ -29,7 +29,7 @@
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1336,7 +1336,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Flood", "games.flood", "flood",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,64 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Flood</title>
<link rel="previous" href="unruly.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="tracks.html">
</head>
<body>
<p><a href="unruly.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="tracks.html">Next</a></p>
<h1><a name="C39"></a>Chapter 39: <a name="i0"></a>Flood</h1>
<p>
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.
</p>
<p>
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.
</p>
<p>
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).
</p>
<h2><a name="S39.1"></a>39.1 <a name="i1"></a>Flood controls</h2>
<p>
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.
</p>
<p>
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.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S39.2"></a>39.2 <a name="i2"></a>Flood parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Width</em>, <em>Height</em>
</dt>
<dd>
Size of the grid, in squares.
</dd>
<dt>
<em>Colours</em>
</dt>
<dd>
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.
</dd>
<dt>
<em>Extra moves permitted</em>
</dt>
<dd>
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.
<p>
(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 <em>strictly fewer</em> moves than the limit you're given!)
</p>
</dd>
</dl>
<hr><address></address></body>
</html>

View file

@ -40,7 +40,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -3633,7 +3633,7 @@ static void game_print(drawing *dr, const game_state *state, int sz)
const struct game thegame = {
"Galaxies", "games.galaxies", "galaxies",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,60 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Galaxies</title>
<link rel="previous" href="unequal.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="filling.html">
</head>
<body>
<p><a href="unequal.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="filling.html">Next</a></p>
<h1><a name="C28"></a>Chapter 28: <a name="i0"></a>Galaxies</h1>
<p>
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&#176; rotationally symmetric, and contains exactly one dot which is located at its centre of symmetry.
</p>
<p>
This puzzle was invented by <a name="i1"></a>Nikoli <a href="#p0">[13]</a>, under the name &#8216;Tentai Show&#8217;; its name is commonly translated into English as &#8216;Spiral Galaxies&#8217;.
</p>
<p>
Galaxies was contributed to this collection by James Harvey.
</p>
<p><a name="p0"></a>
[13] <a href="http://www.nikoli.co.jp/en/puzzles/astronomical_show.html"><code>http://www.nikoli.co.jp/en/puzzles/astronomical_show.html</code></a>
</p>
<h2><a name="S28.1"></a>28.1 <a name="i2"></a>Galaxies controls</h2>
<p>
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&#176; 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.
</p>
<p>
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.)
</p>
<p>
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.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S28.2"></a>28.2 <a name="i3"></a>Galaxies parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu.
</p>
<dl><dt>
<em>Width</em>, <em>Height</em>
</dt>
<dd>
Size of grid in squares.
</dd>
<dt>
<em>Difficulty</em>
</dt>
<dd>
Controls the difficulty of the generated puzzle. More difficult puzzles require more complex deductions, and the &#8216;Unreasonable&#8217; difficulty level may require backtracking.
</dd>
</dl>
<hr><address></address></body>
</html>

View file

@ -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.

View file

@ -9,7 +9,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
#include <float.h>
@ -2571,6 +2571,175 @@ static grid *grid_new_greatdodecagonal(int width, int height, const char *desc)
return g;
}
static void grid_size_greatgreatdodecagonal(int width, int height,
int *tilesize, int *xextent, int *yextent)
{
int a = DODEC_A;
int b = DODEC_B;
*tilesize = DODEC_TILESIZE;
*xextent = (4*a + 4*b) * (width-1) + 2*(2*a + b) + 2*a + 2*b;
*yextent = (6*a + 2*b) * (height-1) + 2*(2*a + b);
}
static grid *grid_new_greatgreatdodecagonal(int width, int height, const char *desc)
{
int x, y;
/* Vector for side of triangle - ratio is close to sqrt(3) */
int a = DODEC_A;
int b = DODEC_B;
/* Upper bounds - don't have to be exact */
int max_faces = 50 * width * height;
int max_dots = 300 * width * height;
tree234 *points;
grid *g = grid_empty();
g->tilesize = DODEC_TILESIZE;
g->faces = snewn(max_faces, grid_face);
g->dots = snewn(max_dots, grid_dot);
points = newtree234(grid_point_cmp_fn);
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
grid_dot *d;
/* centre of dodecagon */
int px = (4*a + 4*b) * x;
int py = (6*a + 2*b) * y;
if (y % 2)
px += 2*a + 2*b;
/* dodecagon */
grid_face_add_new(g, 12);
d = grid_get_dot(g, points, px + ( a ), py - (2*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + ( a + b), py - ( a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + (2*a + b), py - ( a )); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px + (2*a + b), py + ( a )); grid_face_set_dot(g, d, 3);
d = grid_get_dot(g, points, px + ( a + b), py + ( a + b)); grid_face_set_dot(g, d, 4);
d = grid_get_dot(g, points, px + ( a ), py + (2*a + b)); grid_face_set_dot(g, d, 5);
d = grid_get_dot(g, points, px - ( a ), py + (2*a + b)); grid_face_set_dot(g, d, 6);
d = grid_get_dot(g, points, px - ( a + b), py + ( a + b)); grid_face_set_dot(g, d, 7);
d = grid_get_dot(g, points, px - (2*a + b), py + ( a )); grid_face_set_dot(g, d, 8);
d = grid_get_dot(g, points, px - (2*a + b), py - ( a )); grid_face_set_dot(g, d, 9);
d = grid_get_dot(g, points, px - ( a + b), py - ( a + b)); grid_face_set_dot(g, d, 10);
d = grid_get_dot(g, points, px - ( a ), py - (2*a + b)); grid_face_set_dot(g, d, 11);
/* hexagon on top right of dodecagon */
if (y && (x < width - 1 || !(y % 2))) {
grid_face_add_new(g, 6);
d = grid_get_dot(g, points, px + (a + 2*b), py - (4*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + (a + 2*b), py - (2*a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + (a + b), py - ( a + b)); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px + (a ), py - (2*a + b)); grid_face_set_dot(g, d, 3);
d = grid_get_dot(g, points, px + (a ), py - (4*a + b)); grid_face_set_dot(g, d, 4);
d = grid_get_dot(g, points, px + (a + b), py - (5*a + b)); grid_face_set_dot(g, d, 5);
}
/* hexagon on right of dodecagon*/
if (x < width - 1) {
grid_face_add_new(g, 6);
d = grid_get_dot(g, points, px + (2*a + 3*b), py - a); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + (2*a + 3*b), py + a); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + (2*a + 2*b), py + 2*a); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px + (2*a + b), py + a); grid_face_set_dot(g, d, 3);
d = grid_get_dot(g, points, px + (2*a + b), py - a); grid_face_set_dot(g, d, 4);
d = grid_get_dot(g, points, px + (2*a + 2*b), py - 2*a); grid_face_set_dot(g, d, 5);
}
/* hexagon on bottom right of dodecagon */
if ((y < height - 1) && (x < width - 1 || !(y % 2))) {
grid_face_add_new(g, 6);
d = grid_get_dot(g, points, px + (a + 2*b), py + (2*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + (a + 2*b), py + (4*a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + (a + b), py + (5*a + b)); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px + (a ), py + (4*a + b)); grid_face_set_dot(g, d, 3);
d = grid_get_dot(g, points, px + (a ), py + (2*a + b)); grid_face_set_dot(g, d, 4);
d = grid_get_dot(g, points, px + (a + b), py + ( a + b)); grid_face_set_dot(g, d, 5);
}
/* square on top right of dodecagon */
if (y && (x < width - 1 )) {
grid_face_add_new(g, 4);
d = grid_get_dot(g, points, px + ( a + 2*b), py - (2*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + (2*a + 2*b), py - (2*a )); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + (2*a + b), py - ( a )); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px + ( a + b), py - ( a + b)); grid_face_set_dot(g, d, 3);
}
/* square on bottom right of dodecagon */
if ((y < height - 1) && (x < width - 1 )) {
grid_face_add_new(g, 4);
d = grid_get_dot(g, points, px + (2*a + 2*b), py + (2*a )); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + ( a + 2*b), py + (2*a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + ( a + b), py + ( a + b)); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px + (2*a + b), py + ( a )); grid_face_set_dot(g, d, 3);
}
/* square below dodecagon */
if ((y < height - 1) && (x < width - 1 || !(y % 2)) && (x > 0 || (y % 2))) {
grid_face_add_new(g, 4);
d = grid_get_dot(g, points, px + a, py + (2*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + a, py + (4*a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px - a, py + (4*a + b)); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px - a, py + (2*a + b)); grid_face_set_dot(g, d, 3);
}
/* square on bottom left of dodecagon */
if (x && (y < height - 1)) {
grid_face_add_new(g, 4);
d = grid_get_dot(g, points, px - (2*a + b), py + ( a )); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px - ( a + b), py + ( a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px - ( a + 2*b), py + (2*a + b)); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px - (2*a + 2*b), py + (2*a )); grid_face_set_dot(g, d, 3);
}
/* square on top left of dodecagon */
if (x && y) {
grid_face_add_new(g, 4);
d = grid_get_dot(g, points, px - ( a + b), py - ( a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px - (2*a + b), py - ( a )); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px - (2*a + 2*b), py - (2*a )); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px - ( a + 2*b), py - (2*a + b)); grid_face_set_dot(g, d, 3);
}
/* square above dodecagon */
if (y && (x < width - 1 || !(y % 2)) && (x > 0 || (y % 2))) {
grid_face_add_new(g, 4);
d = grid_get_dot(g, points, px + a, py - (4*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + a, py - (2*a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px - a, py - (2*a + b)); grid_face_set_dot(g, d, 2);
d = grid_get_dot(g, points, px - a, py - (4*a + b)); grid_face_set_dot(g, d, 3);
}
/* upper triangle (v) */
if (y && (x < width - 1)) {
grid_face_add_new(g, 3);
d = grid_get_dot(g, points, px + (3*a + 2*b), py - (2*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + (2*a + 2*b), py - (2*a )); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + ( a + 2*b), py - (2*a + b)); grid_face_set_dot(g, d, 2);
}
/* lower triangle (^) */
if ((y < height - 1) && (x < width - 1)) {
grid_face_add_new(g, 3);
d = grid_get_dot(g, points, px + (3*a + 2*b), py + (2*a + b)); grid_face_set_dot(g, d, 0);
d = grid_get_dot(g, points, px + ( a + 2*b), py + (2*a + b)); grid_face_set_dot(g, d, 1);
d = grid_get_dot(g, points, px + (2*a + 2*b), py + (2*a )); grid_face_set_dot(g, d, 2);
}
}
}
freetree234(points);
assert(g->num_faces <= max_faces);
assert(g->num_dots <= max_dots);
grid_make_consistent(g);
return g;
}
typedef struct setface_ctx
{
int xmin, xmax, ymin, ymax;

View file

@ -105,6 +105,7 @@ typedef struct grid {
A(FLORET,floret) \
A(DODECAGONAL,dodecagonal) \
A(GREATDODECAGONAL,greatdodecagonal) \
A(GREATGREATDODECAGONAL,greatgreatdodecagonal) \
A(PENROSE_P2,penrose_p2_kite) \
A(PENROSE_P3,penrose_p3_thick)

View file

@ -3,7 +3,7 @@
*/
#include <stdio.h>
#include "rbassert.h"
#include <assert.h>
#include <stdlib.h>
#include <time.h>
#include <stdarg.h>
@ -144,6 +144,9 @@ struct frontend {
GtkWidget *area;
GtkWidget *statusbar;
GtkWidget *menubar;
#if GTK_CHECK_VERSION(3,20,0)
GtkCssProvider *css_provider;
#endif
guint statusctx;
int w, h;
midend *me;
@ -179,7 +182,6 @@ struct frontend {
char *filesel_name;
#endif
GSList *preset_radio;
int n_preset_menu_items;
int preset_threaded;
GtkWidget *preset_custom;
GtkWidget *copy_menu_item;
@ -290,7 +292,27 @@ static void set_colour(frontend *fe, int colour)
static void set_window_background(frontend *fe, int colour)
{
#if GTK_CHECK_VERSION(3,0,0)
#if GTK_CHECK_VERSION(3,20,0)
char css_buf[512];
sprintf(css_buf, ".background { "
"background-color: #%02x%02x%02x; }",
(unsigned)(fe->colours[3*colour + 0] * 255),
(unsigned)(fe->colours[3*colour + 1] * 255),
(unsigned)(fe->colours[3*colour + 2] * 255));
if (!fe->css_provider)
fe->css_provider = gtk_css_provider_new();
if (!gtk_css_provider_load_from_data(
GTK_CSS_PROVIDER(fe->css_provider), css_buf, -1, NULL))
assert(0 && "Couldn't load CSS");
gtk_style_context_add_provider(
gtk_widget_get_style_context(fe->window),
GTK_STYLE_PROVIDER(fe->css_provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
gtk_style_context_add_provider(
gtk_widget_get_style_context(fe->area),
GTK_STYLE_PROVIDER(fe->css_provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
#elif GTK_CHECK_VERSION(3,0,0)
GdkRGBA rgba;
rgba.red = fe->colours[3*colour + 0];
rgba.green = fe->colours[3*colour + 1];
@ -439,10 +461,12 @@ static void clear_backing_store(frontend *fe)
fe->image = NULL;
}
static void wipe_and_destroy_cairo(frontend *fe, cairo_t *cr)
static void wipe_and_maybe_destroy_cairo(frontend *fe, cairo_t *cr,
int destroy)
{
cairo_set_source_rgb(cr, fe->colours[0], fe->colours[1], fe->colours[2]);
cairo_paint(cr);
if (destroy)
cairo_destroy(cr);
}
@ -455,12 +479,29 @@ static void setup_backing_store(frontend *fe)
fe->image = cairo_image_surface_create(CAIRO_FORMAT_RGB24,
fe->pw, fe->ph);
wipe_and_destroy_cairo(fe, cairo_create(fe->image));
wipe_and_maybe_destroy_cairo(fe, cairo_create(fe->image), TRUE);
#ifndef USE_CAIRO_WITHOUT_PIXMAP
wipe_and_destroy_cairo(fe, gdk_cairo_create(fe->pixmap));
wipe_and_maybe_destroy_cairo(fe, gdk_cairo_create(fe->pixmap), TRUE);
#endif
#if GTK_CHECK_VERSION(3,22,0)
{
GdkWindow *gdkwin;
cairo_region_t *region;
GdkDrawingContext *drawctx;
cairo_t *cr;
gdkwin = gtk_widget_get_window(fe->area);
region = gdk_window_get_clip_region(gdkwin);
drawctx = gdk_window_begin_draw_frame(gdkwin, region);
cr = gdk_drawing_context_get_cairo_context(drawctx);
wipe_and_maybe_destroy_cairo(fe, cr, FALSE);
gdk_window_end_draw_frame(gdkwin, drawctx);
cairo_region_destroy(region);
}
#else
wipe_and_maybe_destroy_cairo(
fe, gdk_cairo_create(gtk_widget_get_window(fe->area)), TRUE);
#endif
wipe_and_destroy_cairo(fe, gdk_cairo_create
(gtk_widget_get_window(fe->area)));
}
static int backing_store_ok(frontend *fe)
@ -1842,20 +1883,22 @@ static void changed_preset(frontend *fe)
TRUE);
} else {
GSList *gs = fe->preset_radio;
int i = fe->n_preset_menu_items - 1 - n;
if (fe->preset_custom)
gs = gs->next;
while (i && gs) {
i--;
gs = gs->next;
}
if (gs) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gs->data),
TRUE);
} else for (gs = fe->preset_radio; gs; gs = gs->next) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gs->data),
FALSE);
GSList *found = NULL;
for (gs = fe->preset_radio; gs; gs = gs->next) {
struct preset_menu_entry *entry =
(struct preset_menu_entry *)g_object_get_data(
G_OBJECT(gs->data), "user-data");
if (entry && entry->id != n)
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(gs->data), FALSE);
else
found = gs;
}
if (found)
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(found->data), FALSE);
}
fe->preset_threaded = FALSE;
@ -1977,14 +2020,15 @@ static void resize_fe(frontend *fe)
static void menu_preset_event(GtkMenuItem *menuitem, gpointer data)
{
frontend *fe = (frontend *)data;
game_params *params =
(game_params *)g_object_get_data(G_OBJECT(menuitem), "user-data");
struct preset_menu_entry *entry =
(struct preset_menu_entry *)g_object_get_data(
G_OBJECT(menuitem), "user-data");
if (fe->preset_threaded ||
(GTK_IS_CHECK_MENU_ITEM(menuitem) &&
!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))))
return;
midend_set_params(fe->me, params);
midend_set_params(fe->me, entry->params);
midend_new_game(fe->me);
changed_preset(fe);
resize_fe(fe);
@ -2341,6 +2385,36 @@ static void add_menu_separator(GtkContainer *cont)
gtk_widget_show(menuitem);
}
static void populate_gtk_preset_menu(frontend *fe, struct preset_menu *menu,
GtkWidget *gtkmenu)
{
int i;
for (i = 0; i < menu->n_entries; i++) {
struct preset_menu_entry *entry = &menu->entries[i];
GtkWidget *menuitem;
if (entry->params) {
menuitem = gtk_radio_menu_item_new_with_label(
fe->preset_radio, entry->title);
fe->preset_radio = gtk_radio_menu_item_get_group(
GTK_RADIO_MENU_ITEM(menuitem));
g_object_set_data(G_OBJECT(menuitem), "user-data", entry);
g_signal_connect(G_OBJECT(menuitem), "activate",
G_CALLBACK(menu_preset_event), fe);
} else {
GtkWidget *submenu;
menuitem = gtk_menu_item_new_with_label(entry->title);
submenu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
populate_gtk_preset_menu(fe, entry->submenu, submenu);
}
gtk_container_add(GTK_CONTAINER(gtkmenu), menuitem);
gtk_widget_show(menuitem);
}
}
enum { ARG_EITHER, ARG_SAVE, ARG_ID }; /* for argtype */
static frontend *new_window(char *arg, int argtype, char **error)
@ -2353,8 +2427,12 @@ static frontend *new_window(char *arg, int argtype, char **error)
char errbuf[1024];
extern char *const *const xpm_icons[];
extern const int n_xpm_icons;
struct preset_menu *preset_menu;
fe = snew(frontend);
#if GTK_CHECK_VERSION(3,20,0)
fe->css_provider = NULL;
#endif
fe->timer_active = FALSE;
fe->timer_id = -1;
@ -2501,11 +2579,11 @@ static frontend *new_window(char *arg, int argtype, char **error)
fe->preset_radio = NULL;
fe->preset_custom = NULL;
fe->n_preset_menu_items = 0;
fe->preset_threaded = FALSE;
if ((n = midend_num_presets(fe->me)) > 0 || thegame.can_configure) {
preset_menu = midend_get_presets(fe->me, NULL);
if (preset_menu->n_entries > 0 || thegame.can_configure) {
GtkWidget *submenu;
int i;
menuitem = gtk_menu_item_new_with_mnemonic("_Type");
gtk_container_add(GTK_CONTAINER(fe->menubar), menuitem);
@ -2514,23 +2592,7 @@ static frontend *new_window(char *arg, int argtype, char **error)
submenu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
for (i = 0; i < n; i++) {
char *name;
game_params *params;
midend_fetch_preset(fe->me, i, &name, &params);
menuitem =
gtk_radio_menu_item_new_with_label(fe->preset_radio, name);
fe->preset_radio =
gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
fe->n_preset_menu_items++;
gtk_container_add(GTK_CONTAINER(submenu), menuitem);
g_object_set_data(G_OBJECT(menuitem), "user-data", params);
g_signal_connect(G_OBJECT(menuitem), "activate",
G_CALLBACK(menu_preset_event), fe);
gtk_widget_show(menuitem);
}
populate_gtk_preset_menu(fe, preset_menu, submenu);
if (thegame.can_configure) {
menuitem = fe->preset_custom =
@ -2781,6 +2843,22 @@ char *fgetline(FILE *fp)
return ret;
}
static void list_presets_from_menu(struct preset_menu *menu)
{
int i;
for (i = 0; i < menu->n_entries; i++) {
if (menu->entries[i].params) {
char *paramstr = thegame.encode_params(
menu->entries[i].params, TRUE);
printf("%s %s\n", paramstr, menu->entries[i].title);
sfree(paramstr);
} else {
list_presets_from_menu(menu->entries[i].submenu);
}
}
}
int main(int argc, char **argv)
{
char *pname = argv[0];
@ -3184,23 +3262,12 @@ int main(int argc, char **argv)
* Another specialist mode which causes the puzzle to list the
* game_params strings for all its preset configurations.
*/
int i, npresets;
midend *me;
struct preset_menu *menu;
me = midend_new(NULL, &thegame, NULL, NULL);
npresets = midend_num_presets(me);
for (i = 0; i < npresets; i++) {
game_params *params;
char *name, *paramstr;
midend_fetch_preset(me, i, &name, &params);
paramstr = thegame.encode_params(params, TRUE);
printf("%s %s\n", paramstr, name);
sfree(paramstr);
}
menu = midend_get_presets(me, NULL);
list_presets_from_menu(menu);
midend_free(me);
return 0;
} else {

View file

@ -5,7 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rbassert.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
@ -1480,7 +1480,7 @@ static void game_print(drawing *dr, const game_state *state, int tilesize)
const struct game thegame = {
"Guess", "games.guess", "guess",
default_params,
game_fetch_preset,
game_fetch_preset, NULL,
decode_params,
encode_params,
free_params,

View file

@ -0,0 +1,94 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
<title>Guess</title>
<link rel="previous" href="flip.html">
<link rel="ToC" href="index.html">
<link rel="up" href="index.html">
<link rel="index" href="docindex.html">
<link rel="next" href="pegs.html">
</head>
<body>
<p><a href="flip.html">Previous</a> | <a href="index.html">Contents</a> | <a href="docindex.html">Index</a> | <a href="pegs.html">Next</a></p>
<h1><a name="C15"></a>Chapter 15: <a name="i0"></a>Guess</h1>
<p>
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.
</p>
<p>
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).
</p>
<p>
This game is also known (and marketed, by Hasbro, mainly) as a board game &#8216;<a name="i1"></a>Mastermind&#8217;, 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.
</p>
<p>
Guess was contributed to this collection by James Harvey.
</p>
<h2><a name="S15.1"></a>15.1 <a name="i2"></a>Guess controls</h2>
<p>
This game can be played with either the keyboard or the mouse.
</p>
<p>
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.
</p>
<p>
Right-clicking in the current guess adds a &#8216;hold&#8217; marker; pegs that have hold markers will be automatically added to the next guess after marking.
</p>
<p>
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. &#8216;D&#8217; or Backspace removes a peg, and Space adds a hold marker.
</p>
<p>
Pressing &#8216;h&#8217; or &#8216;?&#8217; will fill the current guess with a suggested guess. Using this is not recommended for 10 or more pegs as it is slow.
</p>
<p>
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 &#8216;current guess&#8217; marker.
</p>
<p>
If you correctly position all the pegs the solution will be displayed below; if you run out of guesses (or select &#8216;Solve...&#8217;) the solution will also be revealed.
</p>
<p>
(All the actions described in <a href="common.html#S2.1">section 2.1</a> are also available.)
</p>
<h2><a name="S15.2"></a>15.2 <a name="i3"></a>Guess parameters</h2>
<p>
These parameters are available from the &#8216;Custom...&#8217; option on the &#8216;Type&#8217; menu. The default game matches the parameters for the board game &#8216;Mastermind&#8217;.
</p>
<dl><dt>
<em>Colours</em>
</dt>
<dd>
Number of colours the solution is chosen from; from 2 to 10 (more is harder).
</dd>
<dt>
<em>Pegs per guess</em>
</dt>
<dd>
Number of pegs per guess (more is harder).
</dd>
<dt>
<em>Guesses</em>
</dt>
<dd>
Number of guesses you have to find the solution in (fewer is harder).
</dd>
<dt>
<em>Allow blanks</em>
</dt>
<dd>
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.
<p>
Note that this doesn't allow blank pegs in the solution; if you really wanted that, use one extra colour.
</p>
</dd>
<dt>
<em>Allow duplicates</em>
</dt>
<dd>
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.
</dd>
</dl>
<hr><address></address></body>
</html>

Some files were not shown because too many files have changed in this diff Show more