puzzles: resync with upstream

This brings the upstream version to b3da238 (though some of my own
changes are included on top of that).

Change-Id: Ida73e8cd86765413147ce891af3cc2b7aeda2b2a
This commit is contained in:
Franklin Wei 2018-04-24 18:06:44 -04:00
parent ef0fb52113
commit 8f23493e08
61 changed files with 32740 additions and 884 deletions

View file

@ -55,30 +55,31 @@ in puzzles do make -f Makefile.doc # build help files for installer
in puzzles do mason.pl --args '{"version":"$(Version)","descfile":"gamedesc.txt"}' winwix.mc > puzzles.wxs
in puzzles do perl winiss.pl $(Version) gamedesc.txt > puzzles.iss
ifneq "$(VISUAL_STUDIO)" "yes" then
in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl clean
in puzzles with clangcl64 do Platform=x64 make -f Makefile.clangcl VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
in puzzles with clangcl64 do mkdir win64 && Platform=x64 make -f Makefile.clangcl BUILDDIR=win64/ VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
in puzzles with clangcl32 do mkdir win32 && Platform=x86 make -f Makefile.clangcl BUILDDIR=win32/ SUBSYSVER=,5.01 VER=-DVER=$(Version) XFLAGS='-Wwrite-strings -Werror'
# Code-sign the binaries, if the local bob config provides a script
# to do so. We assume here that the script accepts an -i option to
# provide a 'more info' URL, and an optional -n option to provide a
# program name, and that it can take multiple .exe filename
# arguments and sign them all in place.
ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ *.exe
ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ win64/*.exe win32/*.exe
# Build installers.
in puzzles with wixonlinux do candle -arch x64 puzzles.wxs && light -ext WixUIExtension -sval puzzles.wixobj
ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ -n "Simon Tatham's Portable Puzzle Collection Installer" puzzles.msi
in puzzles with wixonlinux do candle -arch x64 puzzles.wxs -dWin64=yes -dBindir=win64/ && light -ext WixUIExtension -sval puzzles.wixobj
in puzzles with wixonlinux do candle -arch x86 puzzles.wxs -dWin64=no -dBindir=win32/ && light -ext WixUIExtension -sval puzzles.wixobj -o puzzles32.msi
ifneq "$(cross_winsigncode)" "" in puzzles do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ -n "Simon Tatham's Portable Puzzle Collection Installer" puzzles.msi puzzles32.msi
else
delegate windows
in puzzles with visualstudio do/win nmake -f Makefile.vc clean
in puzzles with visualstudio do/win nmake -f Makefile.vc VER=-DVER=$(Version)
ifneq "$(winsigncode)" "" in puzzles do $(winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ *.exe
ifneq "$(winsigncode)" "" in puzzles do $(winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ win64/*.exe
# Build installers.
in puzzles with wix do/win candle puzzles.wxs && light -ext WixUIExtension -sval puzzles.wixobj
in puzzles with wix do/win candle puzzles.wxs -dWin64=yes -dBindir=win64/ && light -ext WixUIExtension -sval puzzles.wixobj
in puzzles with innosetup do/win iscc puzzles.iss
return puzzles/*.exe
return puzzles/win64/*.exe
return puzzles/puzzles.msi
enddelegate
endif
in puzzles do chmod +x *.exe
in puzzles do chmod +x win32/*.exe win64/*.exe
# Build the Pocket PC binaries and CAB.
#
@ -125,11 +126,13 @@ in puzzles/devel do halibut --html -Chtml-contents-filename:index.html -Chtml-in
# gamedesc.txt, which is generated by mkfiles.pl and helpfully
# excludes the command-line auxiliary utilities such as solosolver,
# and nullgame.exe) into a subdirectory for easy access.
in puzzles do mkdir winbin
in puzzles do mv `cut -f2 -d: gamedesc.txt` winbin
in puzzles do mkdir winbin64 winbin32
in puzzles/win64 do mv `cut -f2 -d: ../gamedesc.txt` ../winbin64
in puzzles/win32 do mv `cut -f2 -d: ../gamedesc.txt` ../winbin32
# Make a zip file of the Windows binaries and help files.
in puzzles do zip -j puzzles.zip winbin/*.exe puzzles.chm puzzles.hlp puzzles.cnt
in puzzles do zip -j puzzles.zip winbin64/*.exe puzzles.chm puzzles.hlp puzzles.cnt
in puzzles do zip -j puzzles32.zip winbin32/*.exe puzzles.chm puzzles.hlp puzzles.cnt
# Create the source archive. (That writes the archive into the
# _parent_ directory, so be careful when we deliver it.)
@ -177,7 +180,8 @@ in puzzles do echo RedirectMatch temp '(.*/)'puzzles-installer.msi '$$1'puzzles-
# Phew, we're done. Deliver everything!
deliver puzzles/icons/*-web.png $@
deliver puzzles/winbin/*.exe $@
deliver puzzles/winbin64/*.exe $@
deliver puzzles/winbin32/*.exe w32/$@
deliver puzzles/.htaccess $@
deliver puzzles/doc/*.html doc/$@
deliver puzzles/devel/*.html devel/$@
@ -186,7 +190,9 @@ deliver puzzles/puzzles.chm $@
deliver puzzles/puzzles.hlp $@
deliver puzzles/puzzles.cnt $@
deliver puzzles/puzzles.zip $@
deliver puzzles/puzzles32.zip w32/$@
deliver puzzles/puzzles.msi puzzles-$(Version)-installer.msi
deliver puzzles/puzzles32.msi w32/puzzles-$(Version)-32bit-installer.msi
deliver puzzles/*.jar java/$@
deliver puzzles/js/*.js js/$@
deliver puzzles/jstest/*.html jstest/$@

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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

File diff suppressed because it is too large Load diff

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

@ -31,6 +31,10 @@ STANDALONE = nullfe random misc malloc
ALL = list
LATIN_DEPS = matching tree234
LATIN = latin LATIN_DEPS
LATIN_SOLVER = latin[STANDALONE_SOLVER] LATIN_DEPS
# First half of list.c.
!begin >list.c
/*
@ -61,6 +65,14 @@ const int gamecount = lenof(gamelist);
# Unix standalone application for special-purpose obfuscation.
obfusc : [U] obfusc STANDALONE
# Test program built from latin.c.
latincheck : [U] latin[STANDALONE_LATIN_TEST] LATIN_DEPS STANDALONE
latincheck : [C] latin[STANDALONE_LATIN_TEST] LATIN_DEPS STANDALONE
# Test program built from matching.c.
matching : [U] matching[STANDALONE_MATCHING_TEST] tree234 STANDALONE
matching : [C] matching[STANDALONE_MATCHING_TEST] tree234 STANDALONE
puzzles : [G] windows[COMBINED] WINDOWS_COMMON COMMON ALL noicon.res
# Mac OS X unified application containing all the puzzles.

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

File diff suppressed because it is too large Load diff

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

@ -0,0 +1,348 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2016-01-11.22; # UTC
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
# Written by Tom Tromey <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 | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

View file

@ -0,0 +1,445 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by puzzles configure 6.66, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ ./configure
## --------- ##
## Platform. ##
## --------- ##
hostname = alpha
uname -m = x86_64
uname -r = 4.11.9-1-ARCH
uname -s = Linux
uname -v = #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /opt/cuda/bin
PATH: /usr/lib/jvm/default/bin
PATH: /opt/kde/bin
PATH: /usr/bin/site_perl
PATH: /usr/bin/vendor_perl
PATH: /usr/bin/core_perl
## ----------- ##
## Core tests. ##
## ----------- ##
configure:1943: checking for a BSD-compatible install
configure:2011: result: /usr/bin/install -c
configure:2022: checking whether build environment is sane
configure:2077: result: yes
configure:2228: checking for a thread-safe mkdir -p
configure:2267: result: /usr/bin/mkdir -p
configure:2274: checking for gawk
configure:2290: found /usr/bin/gawk
configure:2301: result: gawk
configure:2312: checking whether make sets $(MAKE)
configure:2334: result: yes
configure:2363: checking whether make supports nested variables
configure:2380: result: yes
configure:2554: checking for gcc
configure:2570: found /usr/bin/gcc
configure:2581: result: gcc
configure:2810: checking for C compiler version
configure:2819: gcc --version >&5
gcc (GCC) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:2830: $? = 0
configure:2819: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc-multilib/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp
Thread model: posix
gcc version 7.2.0 (GCC)
configure:2830: $? = 0
configure:2819: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:2830: $? = 1
configure:2819: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'; did you mean '--version'?
gcc: fatal error: no input files
compilation terminated.
configure:2830: $? = 1
configure:2850: checking whether the C compiler works
configure:2872: gcc conftest.c >&5
configure:2876: $? = 0
configure:2924: result: yes
configure:2927: checking for C compiler default output file name
configure:2929: result: a.out
configure:2935: checking for suffix of executables
configure:2942: gcc -o conftest conftest.c >&5
configure:2946: $? = 0
configure:2968: result:
configure:2990: checking whether we are cross compiling
configure:2998: gcc -o conftest conftest.c >&5
configure:3002: $? = 0
configure:3009: ./conftest
configure:3013: $? = 0
configure:3028: result: no
configure:3033: checking for suffix of object files
configure:3055: gcc -c conftest.c >&5
configure:3059: $? = 0
configure:3080: result: o
configure:3084: checking whether we are using the GNU C compiler
configure:3103: gcc -c conftest.c >&5
configure:3103: $? = 0
configure:3112: result: yes
configure:3121: checking whether gcc accepts -g
configure:3141: gcc -c -g conftest.c >&5
configure:3141: $? = 0
configure:3182: result: yes
configure:3199: checking for gcc option to accept ISO C89
configure:3262: gcc -c -g -O2 conftest.c >&5
configure:3262: $? = 0
configure:3275: result: none needed
configure:3300: checking whether gcc understands -c and -o together
configure:3322: gcc -c conftest.c -o conftest2.o
configure:3325: $? = 0
configure:3322: gcc -c conftest.c -o conftest2.o
configure:3325: $? = 0
configure:3337: result: yes
configure:3365: checking for style of include used by make
configure:3393: result: GNU
configure:3419: checking dependency style of gcc
configure:3530: result: gcc3
configure:3591: checking for pkg-config
configure:3609: found /usr/bin/pkg-config
configure:3622: result: /usr/bin/pkg-config
configure:3643: checking for GTK+ - version >= 3.0.0
configure:3750: gcc -o conftest -g -O2 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 >&5
configure:3750: $? = 0
configure:3750: ./conftest
configure:3750: $? = 0
configure:3764: result: yes (version 3.22.16)
configure:4287: checking for usable gcc warning flags
configure:4330: gcc -c -g -O2 -Wall -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
configure:4330: $? = 0
configure:4330: gcc -c -g -O2 -Wall -Werror -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
configure:4330: $? = 0
configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
configure:4330: $? = 0
configure:4330: gcc -c -g -O2 -Wall -Werror -std=c89 -pedantic -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include conftest.c >&5
In file included from /usr/lib/glib-2.0/include/glibconfig.h:9:0,
from /usr/include/glib-2.0/glib/gtypes.h:32,
from /usr/include/glib-2.0/glib/galloca.h:32,
from /usr/include/glib-2.0/glib.h:30,
from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
from /usr/include/gtk-3.0/gdk/gdk.h:30,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from conftest.c:24:
/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_ADD_U64':
/usr/include/glib-2.0/glib/gtypes.h:423:41: error: ISO C90 does not support 'long long' [-Werror=long-long]
G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
^
/usr/include/glib-2.0/glib/gmacros.h:232:104: note: in definition of macro 'G_STATIC_ASSERT'
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
^~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:32:0,
from /usr/include/glib-2.0/glib.h:30,
from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
from /usr/include/gtk-3.0/gdk/gdk.h:30,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from conftest.c:24:
/usr/include/glib-2.0/glib/gtypes.h:424:58: error: ISO C90 does not support 'long long' [-Werror=long-long]
return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); }
^~~~
/usr/include/glib-2.0/glib/gtypes.h: In function '_GLIB_CHECKED_MUL_U64':
/usr/include/glib-2.0/glib/gtypes.h:426:58: error: ISO C90 does not support 'long long' [-Werror=long-long]
return !__builtin_umulll_overflow(a, b, (unsigned long long *) dest); }
^~~~
In file included from /usr/include/glib-2.0/glib.h:62:0,
from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
from /usr/include/gtk-3.0/gdk/gdk.h:30,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from conftest.c:24:
/usr/include/glib-2.0/glib/gmessages.h: At top level:
/usr/include/glib-2.0/glib/gmessages.h:136:29: error: comma at end of enumerator list [-Werror=pedantic]
G_LOG_WRITER_UNHANDLED = 0,
^
/usr/include/glib-2.0/glib/gmessages.h:322:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
#define g_error(...) G_STMT_START { \
^~~
/usr/include/glib-2.0/glib/gmessages.h:328:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
#define g_message(...) g_log (G_LOG_DOMAIN, \
^~~
/usr/include/glib-2.0/glib/gmessages.h:331:20: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
#define g_critical(...) g_log (G_LOG_DOMAIN, \
^~~
/usr/include/glib-2.0/glib/gmessages.h:334:19: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
#define g_warning(...) g_log (G_LOG_DOMAIN, \
^~~
/usr/include/glib-2.0/glib/gmessages.h:337:16: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
#define g_info(...) g_log (G_LOG_DOMAIN, \
^~~
/usr/include/glib-2.0/glib/gmessages.h:340:17: error: anonymous variadic macros were introduced in C99 [-Werror=variadic-macros]
#define g_debug(...) g_log (G_LOG_DOMAIN, \
^~~
In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30:0,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from conftest.c:24:
/usr/include/gtk-3.0/gdk/gdktypes.h:319:39: error: comma at end of enumerator list [-Werror=pedantic]
GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK,
^
/usr/include/gtk-3.0/gdk/gdktypes.h:597:48: error: comma at end of enumerator list [-Werror=pedantic]
GDK_AXIS_FLAG_SLIDER = 1 << GDK_AXIS_SLIDER,
^
In file included from /usr/include/gtk-3.0/gdk/gdkevents.h:36:0,
from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from conftest.c:24:
/usr/include/gtk-3.0/gdk/gdkdevicetool.h:61:28: error: comma at end of enumerator list [-Werror=pedantic]
GDK_DEVICE_TOOL_TYPE_LENS,
^
cc1: all warnings being treated as errors
configure:4330: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "puzzles"
| #define PACKAGE_TARNAME "puzzles"
| #define PACKAGE_VERSION "6.66"
| #define PACKAGE_STRING "puzzles 6.66"
| #define PACKAGE_BUGREPORT "anakin@pobox.com"
| #define PACKAGE_URL ""
| #define PACKAGE "puzzles"
| #define VERSION "6.66"
| /* end confdefs.h. */
|
| #include <stdio.h>
| #include <assert.h>
| #include <stdlib.h>
| #include <time.h>
| #include <stdarg.h>
| #include <string.h>
| #include <errno.h>
| #include <math.h>
|
| #include <sys/time.h>
| #include <sys/resource.h>
|
| #include <gtk/gtk.h>
| #include <gdk/gdkkeysyms.h>
|
| #include <gdk-pixbuf/gdk-pixbuf.h>
|
| #include <gdk/gdkx.h>
| #include <X11/Xlib.h>
| #include <X11/Xutil.h>
| #include <X11/Xatom.h>
|
| int
| main ()
| {
|
| return 0;
|
| ;
| return 0;
| }
configure:4337: result: -Wall -Werror -std=c89
configure:4385: checking for ranlib
configure:4401: found /usr/bin/ranlib
configure:4412: result: ranlib
configure:4582: checking that generated files are newer than configure
configure:4588: result: done
configure:4611: creating ./config.status
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by puzzles config.status 6.66, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on alpha
config.status:782: creating Makefile
config.status:954: executing depfiles commands
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_PKG_CONFIG_LIBDIR_set=
ac_cv_env_PKG_CONFIG_LIBDIR_value=
ac_cv_env_PKG_CONFIG_PATH_set=
ac_cv_env_PKG_CONFIG_PATH_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_objext=o
ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/usr/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_make_make_set=yes
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_make_support_nested_variables=yes
am_cv_prog_cc_c_o=yes
## ----------------- ##
## Output variables. ##
## ----------------- ##
ACLOCAL='${SHELL} /home/franklin/puzzles/missing aclocal-1.15'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='1'
AM_V='$(V)'
AUTOCONF='${SHELL} /home/franklin/puzzles/missing autoconf'
AUTOHEADER='${SHELL} /home/franklin/puzzles/missing autoheader'
AUTOMAKE='${SHELL} /home/franklin/puzzles/missing automake-1.15'
AWK='gawk'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2 -Wall -Werror -std=c89'
CPPFLAGS=''
CYGPATH_W='echo'
DEFS='-DPACKAGE_NAME=\"puzzles\" -DPACKAGE_TARNAME=\"puzzles\" -DPACKAGE_VERSION=\"6.66\" -DPACKAGE_STRING=\"puzzles\ 6.66\" -DPACKAGE_BUGREPORT=\"anakin@pobox.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"puzzles\" -DVERSION=\"6.66\"'
DEPDIR='.deps'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EXEEXT=''
GTK_CFLAGS='-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/libdrm -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
GTK_LIBS='-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
MAKEINFO='${SHELL} /home/franklin/puzzles/missing makeinfo'
MKDIR_P='/usr/bin/mkdir -p'
OBJEXT='o'
PACKAGE='puzzles'
PACKAGE_BUGREPORT='anakin@pobox.com'
PACKAGE_NAME='puzzles'
PACKAGE_STRING='puzzles 6.66'
PACKAGE_TARNAME='puzzles'
PACKAGE_URL=''
PACKAGE_VERSION='6.66'
PATH_SEPARATOR=':'
PKG_CONFIG='/usr/bin/pkg-config'
PKG_CONFIG_LIBDIR=''
PKG_CONFIG_PATH=''
RANLIB='ranlib'
SET_MAKE=''
SHELL='/bin/sh'
STRIP=''
VERSION='6.66'
ac_ct_CC='gcc'
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE='#'
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__include='include'
am__isrc=''
am__leading_dot='.'
am__nodep='_no'
am__quote=''
am__tar='$${TAR-tar} chof - "$$tardir"'
am__untar='$${TAR-tar} xf -'
bindir='${exec_prefix}/bin'
build_alias=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host_alias=''
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /home/franklin/puzzles/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='$(MKDIR_P)'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''
## ----------- ##
## confdefs.h. ##
## ----------- ##
/* confdefs.h */
#define PACKAGE_NAME "puzzles"
#define PACKAGE_TARNAME "puzzles"
#define PACKAGE_VERSION "6.66"
#define PACKAGE_STRING "puzzles 6.66"
#define PACKAGE_BUGREPORT "anakin@pobox.com"
#define PACKAGE_URL ""
#define PACKAGE "puzzles"
#define VERSION "6.66"
configure: exit 0

File diff suppressed because it is too large Load diff

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

File diff suppressed because it is too large Load diff

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=2016-01-11.22; # UTC
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <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: "UTC0"
# time-stamp-end: "; # UTC"
# End:

View file

@ -1560,6 +1560,41 @@ the game was first completed (by setting a flag in
freeze the timer thereafter so that the user can undo back through
their solution process without altering their time.
\S{backend-request-keys} \cw{request_keys()}
\c key_label *(*request_keys)(const game_params *params, int *nkeys);
This function returns a dynamically allocated array of \cw{key_label}
items containing the buttons the back end deems absolutely
\e{necessary} for gameplay, not an exhaustive list of every button the
back end could accept. For example, Keen only returns the digits up to
the game size and the backspace character, \cw{\\b}, even though it
\e{could} accept \cw{M}, as only these buttons are actually needed to
play the game. Each \cw{key_label} item contains the following fields:
\c struct key_label {
\c const char *label; /* label for frontend use */
\c int button; /* button to pass to midend */
\c } key_label;
The \cw{label} field of this structure can (and often will) be set by
the backend to \cw{NULL}, in which case the midend will instead call
\c{button2label()} (\k{utils-button2label}) and fill in a generic
label. The \cw{button} field is the associated code that can be passed
to the midend when the frontend deems appropriate.
The backend should set \cw{*nkeys} to the number of elements in the
returned array.
The field for this function point in the \cw{game} structure might be
set to \cw{NULL} (and indeed it is for the majority of the games) to
indicate that no additional buttons (apart from the cursor keys) are
required to play the game.
This function should not be called directly by frontends. Instead,
frontends should use \cw{midend_request_keys()}
(\k{midend-request-keys}).
\S{backend-flags} \c{flags}
\c int flags;
@ -2998,6 +3033,18 @@ the effect of the keypress was to request termination of the
program. A front end should shut down the puzzle in response to a
zero return.
\H{midend-request-keys} \cw{midend_request_keys()}
\c key_label *midend_request_keys(midend *me, int *nkeys);
This function behaves similarly to the backend's \cw{request_keys()}
function (\k{backend-request-keys}). If the backend does not provide
\cw{request_keys()}, this function will return \cw{NULL} and set
\cw{*nkeys} to zero. Otherwise, this function will fill in the generic
labels (i.e. the \cw{key_label} items that have their \cw{label}
fields set to \cw{NULL}) by using \cw{button2label()}
(\k{utils-button2label}).
\H{midend-colours} \cw{midend_colours()}
\c float *midend_colours(midend *me, int *ncolours);
@ -4215,6 +4262,24 @@ Thus, \cw{ret[background*3]} to \cw{ret[background*3+2]} will be set
to RGB values defining a sensible background colour, and similary
\c{highlight} and \c{lowlight} will be set to sensible colours.
\S{utils-button2label} \cw{button2label()}
\c char *button2label(int button);
This function generates a descriptive text label for \cw{button},
which should be a button code that can be passed to the midend. For
example, calling this function with \cw{CURSOR_UP} will result in the
string \cw{"Up"}. This function should only be called when the
\cw{key_label} item returned by a backend's \cw{request_keys()}
(\k{backend-request-keys}) function has its \cw{label} field set to
\cw{NULL}; in this case, the corresponding \cw{button} field can be
passed to this function to obtain an appropriate label. If, however,
the field is not \cw{NULL}, this function should not be called with
the corresponding \cw{button} field.
The returned string is dynamically allocated and should be
\cw{sfree}'d by the caller.
\C{writing} How to write a new puzzle
This chapter gives a guide to how to actually write a new puzzle:

View file

@ -1287,9 +1287,22 @@ static const char *validate_desc(const game_params *params, const char *desc)
return (area < sz) ? "Not enough data to fill grid" : NULL;
}
static char *game_request_keys(const game_params *params)
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
return dupstr("1234567890\b");
key_label *keys = snewn(11, key_label);
*nkeys = 11;
int i;
for(i = 0; i < 10; ++i)
{
keys[i].button = '0' + i;
keys[i].label = NULL;
}
keys[10].button = '\b';
keys[10].label = NULL;
return keys;
}
static game_state *new_game(midend *me, const game_params *params,

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

@ -2886,25 +2886,6 @@ static frontend *new_window(char *arg, int argtype, char **error)
return fe;
}
char *fgetline(FILE *fp)
{
char *ret = snewn(512, char);
int size = 512, len = 0;
while (fgets(ret + len, size - len, fp)) {
len += strlen(ret + len);
if (ret[len-1] == '\n')
break; /* got a newline, we're done */
size = len + 512;
ret = sresize(ret, size, char);
}
if (len == 0) { /* first fgets returned NULL */
sfree(ret);
return NULL;
}
ret[len] = '\0';
return ret;
}
static void list_presets_from_menu(struct preset_menu *menu)
{
int i;

View file

@ -1,8 +1,12 @@
Galaxies
<p>
Draw lines along grid edges so as to divide the grid up into
regions. Every region should have two-way rotational symmetry, and
should contain exactly one dot which is in its centre.
Draw lines along grid edges so as to divide the grid up into connected
regions of squares.
<p>
Every region should have two-way rotational symmetry, should contain
exactly one dot which is in its centre, and should contain no lines
separating two of its own squares from each other. A region satisfying
all of these requirements will be automatically highlighted.
<p>
Click on a grid edge to add or remove a line. Right-click on a dot
and drag the mouse to place an arrow in a grid square pointing to

View file

@ -11,6 +11,9 @@ WEB = $(patsubst %,%-web.png,$(PUZZLES))
IBASE = $(patsubst %,%-ibase.png,$(PUZZLES))
IBASE4 = $(patsubst %,%-ibase4.png,$(PUZZLES))
P96D24 = $(patsubst %,%-96d24.png,$(PUZZLES))
P96D8 = $(patsubst %,%-96d8.png,$(PUZZLES))
P96D4 = $(patsubst %,%-96d4.png,$(PUZZLES))
P48D24 = $(patsubst %,%-48d24.png,$(PUZZLES))
P48D8 = $(patsubst %,%-48d8.png,$(PUZZLES))
P48D4 = $(patsubst %,%-48d4.png,$(PUZZLES))
@ -33,7 +36,7 @@ CSP = -set colorspace RGB
base: $(BASE)
web: $(WEB)
pngicons: $(P48D24) $(P32D24) $(P16D24)
pngicons: $(P96D24) $(P48D24) $(P32D24) $(P16D24)
winicons: $(ICONS) $(RC)
gtkicons: $(CICONS)
all: base web pngicons winicons gtkicons
@ -100,7 +103,9 @@ $(IBASE): %-ibase.png: %-base.png
$(IBASE4): %-ibase4.png: %-ibase.png
convert -colors 16 +dither $(CSP) -map $(PIC)win16pal.xpm $^ $@
# Build the 24-bit PNGs for the icons, at three sizes.
# Build the 24-bit PNGs for the icons, at four sizes.
$(P96D24): %-96d24.png: %-ibase.png
$(PIC)square.pl 96 4 $^ $@
$(P48D24): %-48d24.png: %-ibase.png
$(PIC)square.pl 48 4 $^ $@
$(P32D24): %-32d24.png: %-ibase.png
@ -110,7 +115,7 @@ $(P16D24): %-16d24.png: %-ibase.png
# The 8-bit icon PNGs are just custom-paletted quantisations of the
# 24-bit ones.
$(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png
$(P96D8) $(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png
convert -colors 256 $^ $@
# But the depth-4 images work better if we re-shrink from the
@ -118,6 +123,10 @@ $(P48D8) $(P32D8) $(P16D8): %d8.png: %d24.png
# again afterwards. (They're still not very good, but my hope is
# that on most modern Windows machines this won't matter too
# much...)
$(P96D4): %-96d4.png: %-ibase4.png
$(PIC)square.pl 96 1 $^ $@-tmp2.png
convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@
rm -f $@-tmp2.png
$(P48D4): %-48d4.png: %-ibase4.png
$(PIC)square.pl 48 1 $^ $@-tmp2.png
convert -colors 16 $(CSP) -map $(PIC)win16pal.xpm $@-tmp2.png $@
@ -146,7 +155,7 @@ $(RC): %.rc:
echo '200 ICON "$*.ico"' >> $@
# Build the GTK icon source files.
$(CICONS): %-icon.c: %-16d24.png %-32d24.png %-48d24.png
$(CICONS): %-icon.c: %-16d24.png %-32d24.png %-48d24.png %-96d24.png
$(PIC)cicon.pl $^ > $@
clean:

View file

@ -0,0 +1,501 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2016-01-11.22; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" $tab$nl"
# Set DOITPROG to "echo" to test this script.
doit=${DOITPROG-}
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
oIFS=$IFS
IFS=/
set -f
set fnord $dstdir
shift
set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

View file

@ -1,14 +1,14 @@
# -*- makefile -*-
KEEN_LATIN_EXTRA = tree234 maxflow dsf
KEEN_EXTRA = latin KEEN_LATIN_EXTRA
KEEN_EXTRA = dsf LATIN
KEEN_EXTRA_SOLVER = dsf LATIN_SOLVER
keen : [X] GTK COMMON keen KEEN_EXTRA keen-icon|no-icon
keen : [G] WINDOWS COMMON keen KEEN_EXTRA keen.res|noicon.res
keensolver : [U] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE
keensolver : [C] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE
keensolver : [U] keen[STANDALONE_SOLVER] KEEN_EXTRA_SOLVER STANDALONE
keensolver : [C] keen[STANDALONE_SOLVER] KEEN_EXTRA_SOLVER STANDALONE
ALL += keen[COMBINED] KEEN_EXTRA

View file

@ -91,7 +91,7 @@ static game_params *default_params(void)
return ret;
}
const static struct game_params keen_presets[] = {
static const struct game_params keen_presets[] = {
{ 4, DIFF_EASY, FALSE },
{ 5, DIFF_EASY, FALSE },
{ 5, DIFF_EASY, TRUE },
@ -1251,17 +1251,24 @@ static const char *validate_desc(const game_params *params, const char *desc)
return NULL;
}
static char *game_request_keys(const game_params *params)
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
int i;
int w = params->w;
char *keys = smalloc(w+2);
key_label *keys = snewn(w+1, key_label);
*nkeys = w + 1;
for (i = 0; i < w; i++) {
if (i<9) keys[i] = '1' + i;
else keys[i] = 'a' + i - 9;
if (i<9) keys[i].button = '1' + i;
else keys[i].button = 'a' + i - 9;
keys[i].label = NULL;
}
keys[w] = '\b';
keys[w+1] = '\0';
keys[w].button = '\b';
keys[w].label = NULL;
return keys;
}

View file

@ -4,7 +4,7 @@
#include "puzzles.h"
#include "tree234.h"
#include "maxflow.h"
#include "matching.h"
#ifdef STANDALONE_LATIN_TEST
#define STANDALONE_SOLVER
@ -1111,11 +1111,11 @@ void latin_debug(digit *sq, int o)
digit *latin_generate(int o, random_state *rs)
{
digit *sq;
int *edges, *backedges, *capacity, *flow;
int *adjdata, *adjsizes, *matching;
int **adjlists;
void *scratch;
int ne, scratchsize;
int i, j, k;
digit *row, *col, *numinv, *num;
digit *row;
/*
* To efficiently generate a latin square in such a way that
@ -1128,123 +1128,76 @@ digit *latin_generate(int o, random_state *rs)
* the theorem guarantees that we will never have to backtrack.
*
* To find a viable row at each stage, we can make use of the
* support functions in maxflow.c.
* support functions in matching.c.
*/
sq = snewn(o*o, digit);
/*
* In case this method of generation introduces a really subtle
* top-to-bottom directional bias, we'll generate the rows in
* random order.
* matching.c will take care of randomising the generation of each
* row of the square, but in case this entire method of generation
* introduces a really subtle top-to-bottom directional bias,
* we'll also generate the rows themselves in random order.
*/
row = snewn(o, digit);
col = snewn(o, digit);
numinv = snewn(o, digit);
num = snewn(o, digit);
for (i = 0; i < o; i++)
row[i] = i;
shuffle(row, i, sizeof(*row), rs);
/*
* Set up the infrastructure for the maxflow algorithm.
* Set up the infrastructure for the matching subroutine.
*/
scratchsize = maxflow_scratch_size(o * 2 + 2);
scratch = smalloc(scratchsize);
backedges = snewn(o*o + 2*o, int);
edges = snewn((o*o + 2*o) * 2, int);
capacity = snewn(o*o + 2*o, int);
flow = snewn(o*o + 2*o, int);
/* Set up the edge array, and the initial capacities. */
ne = 0;
for (i = 0; i < o; i++) {
/* Each LHS vertex is connected to all RHS vertices. */
for (j = 0; j < o; j++) {
edges[ne*2] = i;
edges[ne*2+1] = j+o;
/* capacity for this edge is set later on */
ne++;
}
}
for (i = 0; i < o; i++) {
/* Each RHS vertex is connected to the distinguished sink vertex. */
edges[ne*2] = i+o;
edges[ne*2+1] = o*2+1;
capacity[ne] = 1;
ne++;
}
for (i = 0; i < o; i++) {
/* And the distinguished source vertex connects to each LHS vertex. */
edges[ne*2] = o*2;
edges[ne*2+1] = i;
capacity[ne] = 1;
ne++;
}
assert(ne == o*o + 2*o);
/* Now set up backedges. */
maxflow_setup_backedges(ne, edges, backedges);
scratch = smalloc(matching_scratch_size(o, o));
adjdata = snewn(o*o, int);
adjlists = snewn(o, int *);
adjsizes = snewn(o, int);
matching = snewn(o, int);
/*
* Now generate each row of the latin square.
*/
for (i = 0; i < o; i++) {
/*
* To prevent maxflow from behaving deterministically, we
* separately permute the columns and the digits for the
* purposes of the algorithm, differently for every row.
* Make adjacency lists for a bipartite graph joining each
* column to all the numbers not yet placed in that column.
*/
for (j = 0; j < o; j++)
col[j] = num[j] = j;
shuffle(col, j, sizeof(*col), rs);
shuffle(num, j, sizeof(*num), rs);
/* We need the num permutation in both forward and inverse forms. */
for (j = 0; j < o; j++)
numinv[num[j]] = j;
/*
* Set up the capacities for the maxflow run, by examining
* the existing latin square.
*/
for (j = 0; j < o*o; j++)
capacity[j] = 1;
for (j = 0; j < i; j++)
for (k = 0; k < o; k++) {
int n = num[sq[row[j]*o + col[k]] - 1];
capacity[k*o+n] = 0;
for (j = 0; j < o; j++) {
int *p, *adj = adjdata + j*o;
for (k = 0; k < o; k++)
adj[k] = 1;
for (k = 0; k < i; k++)
adj[sq[row[k]*o + j] - 1] = 0;
adjlists[j] = p = adj;
for (k = 0; k < o; k++)
if (adj[k])
*p++ = k;
adjsizes[j] = p - adjlists[j];
*p = -1;
}
/*
* Run maxflow.
* Run the matching algorithm.
*/
j = maxflow_with_scratch(scratch, o*2+2, 2*o, 2*o+1, ne,
edges, backedges, capacity, flow, NULL);
j = matching_with_scratch(scratch, o, o, adjlists, adjsizes,
rs, matching, NULL);
assert(j == o); /* by the above theorem, this must have succeeded */
/*
* And examine the flow array to pick out the new row of
* the latin square.
* And use the output to set up the new row of the latin
* square.
*/
for (j = 0; j < o; j++) {
for (k = 0; k < o; k++) {
if (flow[j*o+k])
break;
}
assert(k < o);
sq[row[i]*o + col[j]] = numinv[k] + 1;
}
for (j = 0; j < o; j++)
sq[row[i]*o + j] = matching[j] + 1;
}
/*
* Done. Free our internal workspaces...
*/
sfree(flow);
sfree(capacity);
sfree(edges);
sfree(backedges);
sfree(matching);
sfree(adjlists);
sfree(adjsizes);
sfree(adjdata);
sfree(scratch);
sfree(numinv);
sfree(num);
sfree(col);
sfree(row);
/*

View file

@ -0,0 +1,55 @@
/*
* list.c: List of pointers to puzzle structures, for monolithic
* platforms.
*
* This file is automatically generated by mkfiles.pl. Do not edit
* it directly, or the changes will be lost next time mkfiles.pl runs.
* Instead, edit Recipe and/or its *.R subfiles.
*/
#include "puzzles.h"
#define GAMELIST(A) \
A(blackbox) \
A(bridges) \
A(cube) \
A(dominosa) \
A(fifteen) \
A(filling) \
A(flip) \
A(flood) \
A(galaxies) \
A(guess) \
A(inertia) \
A(keen) \
A(lightup) \
A(loopy) \
A(magnets) \
A(map) \
A(mines) \
A(net) \
A(netslide) \
A(palisade) \
A(pattern) \
A(pearl) \
A(pegs) \
A(range) \
A(rect) \
A(samegame) \
A(signpost) \
A(singles) \
A(sixteen) \
A(slant) \
A(solo) \
A(tents) \
A(towers) \
A(tracks) \
A(twiddle) \
A(undead) \
A(unequal) \
A(unruly) \
A(untangle) \
#define DECL(x) extern const game x;
#define REF(x) &x,
GAMELIST(DECL)
const game *gamelist[] = { GAMELIST(REF) };
const int gamecount = lenof(gamelist);

View file

@ -0,0 +1,753 @@
/*
* Implementation of matching.h.
*/
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include "puzzles.h"
#include "matching.h"
struct scratch {
/*
* Current contents of the in-progress matching. LtoR is an array
* of nl integers, each of which holds a value in {0,1,...,nr-1},
* or -1 for no current assignment. RtoL is exactly the reverse.
*
* Invariant: LtoR[i] is non-empty and equal to j if and only if
* RtoL[j] is non-empty and equal to i.
*/
int *LtoR, *RtoL;
/*
* Arrays of nl and nr integer respectively, giving the layer
* assigned to each integer in the breadth-first search step of
* the algorithm.
*/
int *Llayer, *Rlayer;
/*
* Arrays of nl and nr integers respectively, used to hold the
* to-do queues in the breadth-first search.
*/
int *Lqueue, *Rqueue;
/*
* An augmenting path of vertices, alternating between L vertices
* (in the even-numbered positions, starting at 0) and R (in the
* odd positions). Must be long enough to hold any such path that
* never repeats a vertex, i.e. must be at least 2*min(nl,nr) in
* size.
*/
int *augpath;
/*
* Track the progress of the depth-first search at each
* even-numbered layer. Has one element for each even-numbered
* position in augpath.
*/
int *dfsstate;
/*
* Store a random permutation of the L vertex indices, if we're
* randomising the dfs phase.
*/
int *Lorder;
};
size_t matching_scratch_size(int nl, int nr)
{
size_t n;
int nmin = (nl < nr ? nl : nr);
n = (sizeof(struct scratch) + sizeof(int)-1)/sizeof(int);
n += nl; /* LtoR */
n += nr; /* RtoL */
n += nl; /* Llayer */
n += nr; /* Rlayer */
n += nl; /* Lqueue */
n += nr; /* Rqueue */
n += 2*nmin; /* augpath */
n += nmin; /* dfsstate */
n += nl; /* Lorder */
return n * sizeof(int);
}
int matching_with_scratch(void *scratchv,
int nl, int nr, int **adjlists, int *adjsizes,
random_state *rs, int *outl, int *outr)
{
struct scratch *s = (struct scratch *)scratchv;
int L, R, i, j;
/*
* Set up the various array pointers in the scratch space.
*/
{
int *p = scratchv;
int nmin = (nl < nr ? nl : nr);
p += (sizeof(struct scratch) + sizeof(int)-1)/sizeof(int);
s->LtoR = p; p += nl;
s->RtoL = p; p += nr;
s->Llayer = p; p += nl;
s->Rlayer = p; p += nr;
s->Lqueue = p; p += nl;
s->Rqueue = p; p += nr;
s->augpath = p; p += 2*nmin;
s->dfsstate = p; p += nmin;
s->Lorder = p; p += nl;
}
/*
* Set up the initial matching, which is empty.
*/
for (L = 0; L < nl; L++)
s->LtoR[L] = -1;
for (R = 0; R < nr; R++)
s->RtoL[R] = -1;
while (1) {
/*
* Breadth-first search starting from the unassigned left
* vertices, traversing edges from left to right only if they
* are _not_ part of the matching, and from right to left only
* if they _are_. We assign a 'layer number' to all vertices
* visited by this search, with the starting vertices being
* layer 0 and every successor of a layer-n node being layer
* n+1.
*/
int Lqs, Rqs, layer, target_layer;
for (L = 0; L < nl; L++)
s->Llayer[L] = -1;
for (R = 0; R < nr; R++)
s->Rlayer[R] = -1;
Lqs = 0;
for (L = 0; L < nl; L++) {
if (s->LtoR[L] == -1) {
s->Llayer[L] = 0;
s->Lqueue[Lqs++] = L;
}
}
layer = 0;
while (1) {
int found_free_R_vertex = FALSE;
Rqs = 0;
for (i = 0; i < Lqs; i++) {
L = s->Lqueue[i];
assert(s->Llayer[L] == layer);
for (j = 0; j < adjsizes[L]; j++) {
R = adjlists[L][j];
if (R != s->LtoR[L] && s->Rlayer[R] == -1) {
s->Rlayer[R] = layer+1;
s->Rqueue[Rqs++] = R;
if (s->RtoL[R] == -1)
found_free_R_vertex = TRUE;
}
}
}
layer++;
if (found_free_R_vertex)
break;
if (Rqs == 0)
goto done;
Lqs = 0;
for (j = 0; j < Rqs; j++) {
R = s->Rqueue[j];
assert(s->Rlayer[R] == layer);
if ((L = s->RtoL[R]) != -1 && s->Llayer[L] == -1) {
s->Llayer[L] = layer+1;
s->Lqueue[Lqs++] = L;
}
}
layer++;
if (Lqs == 0)
goto done;
}
target_layer = layer;
/*
* Vertices in the target layer are only interesting if
* they're actually unassigned. Blanking out the others here
* will save us a special case in the dfs loop below.
*/
for (R = 0; R < nr; R++)
if (s->Rlayer[R] == target_layer && s->RtoL[R] != -1)
s->Rlayer[R] = -1;
/*
* Choose an ordering in which to try the L vertices at the
* start of the next pass.
*/
for (L = 0; L < nl; L++)
s->Lorder[L] = L;
if (rs)
shuffle(s->Lorder, nl, sizeof(*s->Lorder), rs);
/*
* Now depth-first search through that layered set of vertices
* to find as many (vertex-)disjoint augmenting paths as we
* can, and for each one we find, augment the matching.
*/
s->dfsstate[0] = 0;
i = 0;
while (1) {
/*
* Find the next vertex to go on the end of augpath.
*/
if (i == 0) {
/* In this special case, we're just looking for L
* vertices that are not yet assigned. */
if (s->dfsstate[i] == nl)
break; /* entire DFS has finished */
L = s->Lorder[s->dfsstate[i]++];
if (s->Llayer[L] != 2*i)
continue; /* skip this vertex */
} else {
/* In the more usual case, we're going through the
* adjacency list for the previous L vertex. */
L = s->augpath[2*i-2];
j = s->dfsstate[i]++;
if (j == adjsizes[L]) {
/* Run out of neighbours of the previous vertex. */
i--;
continue;
}
if (rs && adjsizes[L] - j > 1) {
int which = j + random_upto(rs, adjsizes[L] - j);
int tmp = adjlists[L][which];
adjlists[L][which] = adjlists[L][j];
adjlists[L][j] = tmp;
}
R = adjlists[L][j];
if (s->Rlayer[R] != 2*i-1)
continue; /* skip this vertex */
s->augpath[2*i-1] = R;
s->Rlayer[R] = -1; /* mark vertex as visited */
if (2*i-1 == target_layer) {
/*
* We've found an augmenting path, in the form of
* an even-sized list of vertices alternating
* L,R,...,L,R, with the initial L and final R
* vertex free and otherwise each R currently
* connected to the next L. Adjust so that each L
* connects to the next R, increasing the edge
* count in the matching by 1.
*/
for (j = 0; j < 2*i; j += 2) {
s->LtoR[s->augpath[j]] = s->augpath[j+1];
s->RtoL[s->augpath[j+1]] = s->augpath[j];
}
/*
* Having dealt with that path, and already marked
* all its vertices as visited, rewind right to
* the start and resume our DFS from a new
* starting L-vertex.
*/
i = 0;
continue;
}
L = s->RtoL[R];
if (s->Llayer[L] != 2*i)
continue; /* skip this vertex */
}
s->augpath[2*i] = L;
s->Llayer[L] = -1; /* mark vertex as visited */
i++;
s->dfsstate[i] = 0;
}
}
done:
/*
* Fill in the output arrays.
*/
if (outl) {
for (i = 0; i < nl; i++)
outl[i] = s->LtoR[i];
}
if (outr) {
for (j = 0; j < nr; j++)
outr[j] = s->RtoL[j];
}
/*
* Return the number of matching edges.
*/
for (i = j = 0; i < nl; i++)
if (s->LtoR[i] != -1)
j++;
return j;
}
int matching(int nl, int nr, int **adjlists, int *adjsizes,
random_state *rs, int *outl, int *outr)
{
void *scratch;
int size;
int ret;
size = matching_scratch_size(nl, nr);
scratch = malloc(size);
if (!scratch)
return -1;
ret = matching_with_scratch(scratch, nl, nr, adjlists, adjsizes,
rs, outl, outr);
free(scratch);
return ret;
}
#ifdef STANDALONE_MATCHING_TEST
/*
* Diagnostic routine used in testing this algorithm. It is passed a
* pointer to a piece of scratch space that's just been used by
* matching_with_scratch, and extracts from it a labelling of the
* input graph that acts as a 'witness' to the maximality of the
* returned matching.
*
* The output parameter 'witness' should be an array of (nl+nr)
* integers, indexed such that witness[L] corresponds to an L-vertex (for
* L=0,1,...,nl-1) and witness[nl+R] corresponds to an R-vertex (for
* R=0,1,...,nr-1). On return, this array will assign each vertex a
* label which is either 0 or 1, and the following properties will
* hold:
*
* + all vertices not paired up by the matching are type L0 or R1
* + every L0->R1 edge is used by the matching
* + no L1->R0 edge is used by the matching.
*
* The mere existence of such a labelling is enough to prove the
* maximality of the matching, because if there is any larger matching
* then its symmetric difference with this one must include at least
* one 'augmenting path', which starts at a free L-vertex and ends at
* a free R-vertex, traversing only unused L->R edges and only used
* R->L edges. But that would mean it starts at an L0, ends at an R1,
* and never follows an edge that can get from an 0 to a 1.
*/
static void matching_witness(void *scratchv, int nl, int nr, int *witness)
{
struct scratch *s = (struct scratch *)scratchv;
int i, j;
for (i = 0; i < nl; i++)
witness[i] = s->Llayer[i] == -1;
for (j = 0; j < nr; j++)
witness[nl + j] = s->Rlayer[j] == -1;
}
/*
* Standalone tool to run the matching algorithm.
*/
#include <string.h>
#include <ctype.h>
#include <time.h>
#include "tree234.h"
int nl, nr, count;
int **adjlists, *adjsizes;
int *adjdata, *outl, *outr, *witness;
void *scratch;
random_state *rs;
void allocate(int nl_, int nr_, int maxedges)
{
nl = nl_;
nr = nr_;
adjdata = snewn(maxedges, int);
adjlists = snewn(nl, int *);
adjsizes = snewn(nl, int);
outl = snewn(nl, int);
outr = snewn(nr, int);
witness = snewn(nl+nr, int);
scratch = smalloc(matching_scratch_size(nl, nr));
}
void deallocate(void)
{
sfree(adjlists);
sfree(adjsizes);
sfree(adjdata);
sfree(outl);
sfree(outr);
sfree(witness);
sfree(scratch);
}
void find_and_check_matching(void)
{
int i, j, k;
count = matching_with_scratch(scratch, nl, nr, adjlists, adjsizes,
rs, outl, outr);
matching_witness(scratch, nl, nr, witness);
for (i = j = 0; i < nl; i++) {
if (outl[i] != -1) {
assert(0 <= outl[i] && outl[i] < nr);
assert(outr[outl[i]] == i);
j++;
for (k = 0; k < adjsizes[i]; k++)
if (adjlists[i][k] == outl[i])
break;
assert(k < adjsizes[i]);
}
}
assert(j == count);
for (i = j = 0; i < nr; i++) {
if (outr[i] != -1) {
assert(0 <= outr[i] && outr[i] < nl);
assert(outl[outr[i]] == i);
j++;
}
}
assert(j == count);
for (i = 0; i < nl; i++) {
if (outl[i] == -1)
assert(witness[i] == 0);
}
for (i = 0; i < nr; i++) {
if (outr[i] == -1)
assert(witness[nl+i] == 1);
}
for (i = 0; i < nl; i++) {
for (j = 0; j < adjsizes[i]; j++) {
k = adjlists[i][j];
if (outl[i] == k)
assert(!(witness[i] == 1 && witness[nl+k] == 0));
else
assert(!(witness[i] == 0 && witness[nl+k] == 1));
}
}
}
struct nodename {
const char *name;
int index;
};
int compare_nodes(void *av, void *bv)
{
const struct nodename *a = (const struct nodename *)av;
const struct nodename *b = (const struct nodename *)bv;
return strcmp(a->name, b->name);
}
int node_index(tree234 *n2i, tree234 *i2n, const char *name)
{
struct nodename *nn, *nn_prev;
char *namedup = dupstr(name);
nn = snew(struct nodename);
nn->name = namedup;
nn->index = count234(n2i);
nn_prev = add234(n2i, nn);
if (nn_prev != nn) {
sfree(nn);
sfree(namedup);
} else {
addpos234(i2n, nn, nn->index);
}
return nn_prev->index;
}
struct edge {
int L, R;
};
int compare_edges(void *av, void *bv)
{
const struct edge *a = (const struct edge *)av;
const struct edge *b = (const struct edge *)bv;
if (a->L < b->L) return -1;
if (a->L > b->L) return +1;
if (a->R < b->R) return -1;
if (a->R > b->R) return +1;
return 0;
}
void matching_from_user_input(FILE *fp, const char *filename)
{
tree234 *Ln2i, *Li2n, *Rn2i, *Ri2n, *edges;
char *line = NULL;
struct edge *e;
int i, lineno = 0;
int *adjptr;
Ln2i = newtree234(compare_nodes);
Rn2i = newtree234(compare_nodes);
Li2n = newtree234(NULL);
Ri2n = newtree234(NULL);
edges = newtree234(compare_edges);
while (sfree(line), lineno++, (line = fgetline(fp)) != NULL) {
char *p, *Lname, *Rname;
p = line;
while (*p && isspace((unsigned char)*p)) p++;
if (!*p)
continue;
Lname = p;
while (*p && !isspace((unsigned char)*p)) p++;
if (*p)
*p++ = '\0';
while (*p && isspace((unsigned char)*p)) p++;
if (!*p) {
fprintf(stderr, "%s:%d: expected 2 words, found 1\n",
filename, lineno);
exit(1);
}
Rname = p;
while (*p && !isspace((unsigned char)*p)) p++;
if (*p)
*p++ = '\0';
while (*p && isspace((unsigned char)*p)) p++;
if (*p) {
fprintf(stderr, "%s:%d: expected 2 words, found more\n",
filename, lineno);
exit(1);
}
e = snew(struct edge);
e->L = node_index(Ln2i, Li2n, Lname);
e->R = node_index(Rn2i, Ri2n, Rname);
if (add234(edges, e) != e) {
fprintf(stderr, "%s:%d: duplicate edge\n",
filename, lineno);
exit(1);
}
}
allocate(count234(Ln2i), count234(Rn2i), count234(edges));
adjptr = adjdata;
for (i = 0; i < nl; i++)
adjlists[i] = NULL;
for (i = 0; (e = index234(edges, i)) != NULL; i++) {
if (!adjlists[e->L])
adjlists[e->L] = adjptr;
*adjptr++ = e->R;
adjsizes[e->L] = adjptr - adjlists[e->L];
}
find_and_check_matching();
for (i = 0; i < nl; i++) {
if (outl[i] != -1) {
struct nodename *Lnn = index234(Li2n, i);
struct nodename *Rnn = index234(Ri2n, outl[i]);
printf("%s %s\n", Lnn->name, Rnn->name);
}
}
}
void test_subsets(void)
{
int b = 8;
int n = 1 << b;
int i, j, nruns, expected_size;
int *adjptr;
int *edgecounts;
struct stats {
int min, max;
double n, sx, sxx;
} *stats;
static const char seed[] = "fixed random seed for repeatability";
/*
* Generate a graph in which every subset of [b] = {1,...,b}
* (represented as a b-bit integer 0 <= i < n) has an edge going
* to every subset obtained by removing exactly one element.
*
* This graph is the disjoint union of the corresponding graph for
* each layer (collection of same-sized subset) of the power set
* of [b]. Each of those graphs has a matching of size equal to
* the smaller of its vertex sets. So we expect the overall size
* of the output matching to be less than n by the size of the
* largest layer, that is, to be n - binomial(n, floor(n/2)).
*
* We run the generation repeatedly, randomising it every time,
* and we expect to see every possible edge appear sooner or
* later.
*/
rs = random_new(seed, strlen(seed));
allocate(n, n, n*b);
adjptr = adjdata;
expected_size = 0;
for (i = 0; i < n; i++) {
adjlists[i] = adjptr;
for (j = 0; j < b; j++) {
if (i & (1 << j))
*adjptr++ = i & ~(1 << j);
}
adjsizes[i] = adjptr - adjlists[i];
if (adjsizes[i] != b/2)
expected_size++;
}
edgecounts = snewn(n*b, int);
for (i = 0; i < n*b; i++)
edgecounts[i] = 0;
stats = snewn(b, struct stats);
nruns = 0;
while (nruns < 10000) {
nruns++;
find_and_check_matching();
assert(count == expected_size);
for (i = 0; i < n; i++)
for (j = 0; j < b; j++)
if ((i ^ outl[i]) == (1 << j))
edgecounts[b*i+j]++;
if (nruns % 1000 == 0) {
for (i = 0; i < b; i++) {
struct stats *st = &stats[i];
st->min = st->max = -1;
st->n = st->sx = st->sxx = 0;
}
for (i = 0; i < n; i++) {
int pop = 0;
for (j = 0; j < b; j++)
if (i & (1 << j))
pop++;
pop--;
for (j = 0; j < b; j++) {
if (i & (1 << j)) {
struct stats *st = &stats[pop];
int x = edgecounts[b*i+j];
if (st->max == -1 || st->max < x)
st->max = x;
if (st->min == -1 || st->min > x)
st->min = x;
st->n++;
st->sx += x;
st->sxx += (double)x*x;
} else {
assert(edgecounts[b*i+j] == 0);
}
}
}
}
}
printf("after %d runs:\n", nruns);
for (j = 0; j < b; j++) {
struct stats *st = &stats[j];
printf("edges between layers %d,%d:"
" min=%d max=%d mean=%f variance=%f\n",
j, j+1, st->min, st->max, st->sx/st->n,
(st->sxx - st->sx*st->sx/st->n) / st->n);
}
}
int main(int argc, char **argv)
{
static const char stdin_identifier[] = "<standard input>";
const char *infile = NULL;
int doing_opts = TRUE;
enum { USER_INPUT, AUTOTEST } mode = USER_INPUT;
while (--argc > 0) {
const char *arg = *++argv;
if (doing_opts && arg[0] == '-' && arg[1]) {
if (!strcmp(arg, "--")) {
doing_opts = FALSE;
} else if (!strcmp(arg, "--random")) {
char buf[64];
int len = sprintf(buf, "%lu", (unsigned long)time(NULL));
rs = random_new(buf, len);
} else if (!strcmp(arg, "--autotest")) {
mode = AUTOTEST;
} else {
fprintf(stderr, "matching: unrecognised option '%s'\n", arg);
return 1;
}
} else {
if (!infile) {
infile = (!strcmp(arg, "-") ? stdin_identifier : arg);
} else {
fprintf(stderr, "matching: too many arguments\n");
return 1;
}
}
}
if (mode == USER_INPUT) {
FILE *fp;
if (!infile)
infile = stdin_identifier;
if (infile != stdin_identifier) {
fp = fopen(infile, "r");
if (!fp) {
fprintf(stderr, "matching: could not open input file '%s'\n",
infile);
return 1;
}
} else {
fp = stdin;
}
matching_from_user_input(fp, infile);
if (infile != stdin_identifier)
fclose(fp);
}
if (mode == AUTOTEST) {
if (infile) {
fprintf(stderr, "matching: expected no filename argument "
"with --autotest\n");
return 1;
}
test_subsets();
}
return 0;
}
#endif /* STANDALONE_MATCHING_TEST */

View file

@ -0,0 +1,80 @@
/*
* Hopcroft-Karp algorithm for finding a maximal matching in a
* bipartite graph.
*/
#ifndef MATCHING_MATCHING_H
#define MATCHING_MATCHING_H
/*
* The actual algorithm.
*
* Inputs:
*
* - 'scratch' is previously allocated scratch space of a size
* previously determined by calling 'matching_scratch_size'.
*
* - 'nl' is the number of vertices on the left side of the graph.
* Left vertices are numbered from 0 to nl-1.
*
* - 'nr' is the number of vertices on the left side of the graph.
* Right vertices are numbered from 0 to nr-1.
*
* - 'adjlists' and 'adjsizes' represents the graph in adjacency-list
* form. For each left vertex L, adjlists[L] points to an array of
* adjsizes[L] integers giving the list of right vertices adjacent
* to L.
*
* - 'rs', if not NULL, is a random_state used to perturb the
* progress of the algorithm so as to choose randomly from the
* possible matchings if there's more than one. (The exact
* probability distribution can't be guaranteed, but at the very
* least, any matching that exists should be a _possible_ output.)
*
* If 'rs' is not NULL, then each list in adjlists[] will be permuted
* during the course of the algorithm as a side effect. (That's why
* it's not an array of _const_ int pointers.)
*
* Output:
*
* - 'outl' may be NULL. If non-NULL, it is an array of 'nl'
* integers, and outl[L] will be assigned the index of the right
* vertex that the output matching paired with the left vertex L,
* or -1 if L is unpaired.
*
* - 'outr' may be NULL. If non-NULL, it is an array of 'nr'
* integers, and outr[R] will be assigned the index of the left
* vertex that the output matching paired with the right vertex R,
* or -1 if R is unpaired.
*
* - the returned value from the function is the total number of
* edges in the matching.
*/
int matching_with_scratch(void *scratch,
int nl, int nr, int **adjlists, int *adjsizes,
random_state *rs, int *outl, int *outr);
/*
* The above function expects its 'scratch' parameter to have already
* been set up. This function tells you how much space is needed for a
* given size of graph, so that you can allocate a single instance of
* scratch space and run the algorithm multiple times without the
* overhead of an alloc and free every time.
*/
size_t matching_scratch_size(int nl, int nr);
/*
* Simplified version of the above function. All parameters are the
* same, except that 'scratch' is constructed internally and freed on
* exit. This is the simplest way to call the algorithm as a one-off;
* however, if you need to call it multiple times on the same size of
* graph, it is probably better to call the above version directly so
* that you only construct 'scratch' once.
*
* Additional return value is now -1, meaning that scratch space
* could not be allocated.
*/
int matching(int nl, int nr, int **adjlists, int *adjsizes,
random_state *rs, int *outl, int *outr);
#endif /* MATCHING_MATCHING_H */

View file

@ -1,461 +0,0 @@
/*
* Edmonds-Karp algorithm for finding a maximum flow and minimum
* cut in a network. Almost identical to the Ford-Fulkerson
* algorithm, but apparently using breadth-first search to find the
* _shortest_ augmenting path is a good way to guarantee
* termination and ensure the time complexity is not dependent on
* the actual value of the maximum flow. I don't understand why
* that should be, but it's claimed on the Internet that it's been
* proved, and that's good enough for me. I prefer BFS to DFS
* anyway :-)
*/
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include "maxflow.h"
#include "puzzles.h" /* for snewn/sfree */
int maxflow_with_scratch(void *scratch, int nv, int source, int sink,
int ne, const int *edges, const int *backedges,
const int *capacity, int *flow, int *cut)
{
int *todo = (int *)scratch;
int *prev = todo + nv;
int *firstedge = todo + 2*nv;
int *firstbackedge = todo + 3*nv;
int i, j, head, tail, from, to;
int totalflow;
/*
* Scan the edges array to find the index of the first edge
* from each node.
*/
j = 0;
for (i = 0; i < ne; i++)
while (j <= edges[2*i])
firstedge[j++] = i;
while (j < nv)
firstedge[j++] = ne;
assert(j == nv);
/*
* Scan the backedges array to find the index of the first edge
* _to_ each node.
*/
j = 0;
for (i = 0; i < ne; i++)
while (j <= edges[2*backedges[i]+1])
firstbackedge[j++] = i;
while (j < nv)
firstbackedge[j++] = ne;
assert(j == nv);
/*
* Start the flow off at zero on every edge.
*/
for (i = 0; i < ne; i++)
flow[i] = 0;
totalflow = 0;
/*
* Repeatedly look for an augmenting path, and follow it.
*/
while (1) {
/*
* Set up the prev array.
*/
for (i = 0; i < nv; i++)
prev[i] = -1;
/*
* Initialise the to-do list for BFS.
*/
head = tail = 0;
todo[tail++] = source;
/*
* Now do the BFS loop.
*/
while (head < tail && prev[sink] < 0) {
from = todo[head++];
/*
* Try all the forward edges out of node `from'. For a
* forward edge to be valid, it must have flow
* currently less than its capacity.
*/
for (i = firstedge[from]; i < ne && edges[2*i] == from; i++) {
to = edges[2*i+1];
if (to == source || prev[to] >= 0)
continue;
if (capacity[i] >= 0 && flow[i] >= capacity[i])
continue;
/*
* This is a valid augmenting edge. Visit node `to'.
*/
prev[to] = 2*i;
todo[tail++] = to;
}
/*
* Try all the backward edges into node `from'. For a
* backward edge to be valid, it must have flow
* currently greater than zero.
*/
for (i = firstbackedge[from];
j = backedges[i], i < ne && edges[2*j+1]==from; i++) {
to = edges[2*j];
if (to == source || prev[to] >= 0)
continue;
if (flow[j] <= 0)
continue;
/*
* This is a valid augmenting edge. Visit node `to'.
*/
prev[to] = 2*j+1;
todo[tail++] = to;
}
}
/*
* If prev[sink] is non-null, we have found an augmenting
* path.
*/
if (prev[sink] >= 0) {
int max;
/*
* Work backwards along the path figuring out the
* maximum flow we can add.
*/
to = sink;
max = -1;
while (to != source) {
int spare;
/*
* Find the edge we're currently moving along.
*/
i = prev[to];
from = edges[i];
assert(from != to);
/*
* Determine the spare capacity of this edge.
*/
if (i & 1)
spare = flow[i / 2]; /* backward edge */
else if (capacity[i / 2] >= 0)
spare = capacity[i / 2] - flow[i / 2]; /* forward edge */
else
spare = -1; /* unlimited forward edge */
assert(spare != 0);
if (max < 0 || (spare >= 0 && spare < max))
max = spare;
to = from;
}
/*
* Fail an assertion if max is still < 0, i.e. there is
* an entirely unlimited path from source to sink. Also
* max should not _be_ zero, because by construction
* this _should_ be an augmenting path.
*/
assert(max > 0);
/*
* Now work backwards along the path again, this time
* actually adjusting the flow.
*/
to = sink;
while (to != source) {
/*
* Find the edge we're currently moving along.
*/
i = prev[to];
from = edges[i];
assert(from != to);
/*
* Adjust the edge.
*/
if (i & 1)
flow[i / 2] -= max; /* backward edge */
else
flow[i / 2] += max; /* forward edge */
to = from;
}
/*
* And adjust the overall flow counter.
*/
totalflow += max;
continue;
}
/*
* If we reach here, we have failed to find an augmenting
* path, which means we're done. Output the `cut' array if
* required, and leave.
*/
if (cut) {
for (i = 0; i < nv; i++) {
if (i == source || prev[i] >= 0)
cut[i] = 0;
else
cut[i] = 1;
}
}
return totalflow;
}
}
int maxflow_scratch_size(int nv)
{
return (nv * 4) * sizeof(int);
}
void maxflow_setup_backedges(int ne, const int *edges, int *backedges)
{
int i, n;
for (i = 0; i < ne; i++)
backedges[i] = i;
/*
* We actually can't use the C qsort() function, because we'd
* need to pass `edges' as a context parameter to its
* comparator function. So instead I'm forced to implement my
* own sorting algorithm internally, which is a pest. I'll use
* heapsort, because I like it.
*/
#define LESS(i,j) ( (edges[2*(i)+1] < edges[2*(j)+1]) || \
(edges[2*(i)+1] == edges[2*(j)+1] && \
edges[2*(i)] < edges[2*(j)]) )
#define PARENT(n) ( ((n)-1)/2 )
#define LCHILD(n) ( 2*(n)+1 )
#define RCHILD(n) ( 2*(n)+2 )
#define SWAP(i,j) do { int swaptmp = (i); (i) = (j); (j) = swaptmp; } while (0)
/*
* Phase 1: build the heap. We want the _largest_ element at
* the top.
*/
n = 0;
while (n < ne) {
n++;
/*
* Swap element n with its parent repeatedly to preserve
* the heap property.
*/
i = n-1;
while (i > 0) {
int p = PARENT(i);
if (LESS(backedges[p], backedges[i])) {
SWAP(backedges[p], backedges[i]);
i = p;
} else
break;
}
}
/*
* Phase 2: repeatedly remove the largest element and stick it
* at the top of the array.
*/
while (n > 0) {
/*
* The largest element is at position 0. Put it at the top,
* and swap the arbitrary element from that position into
* position 0.
*/
n--;
SWAP(backedges[0], backedges[n]);
/*
* Now repeatedly move that arbitrary element down the heap
* by swapping it with the more suitable of its children.
*/
i = 0;
while (1) {
int lc, rc;
lc = LCHILD(i);
rc = RCHILD(i);
if (lc >= n)
break; /* we've hit bottom */
if (rc >= n) {
/*
* Special case: there is only one child to check.
*/
if (LESS(backedges[i], backedges[lc]))
SWAP(backedges[i], backedges[lc]);
/* _Now_ we've hit bottom. */
break;
} else {
/*
* The common case: there are two children and we
* must check them both.
*/
if (LESS(backedges[i], backedges[lc]) ||
LESS(backedges[i], backedges[rc])) {
/*
* Pick the more appropriate child to swap with
* (i.e. the one which would want to be the
* parent if one were above the other - as one
* is about to be).
*/
if (LESS(backedges[lc], backedges[rc])) {
SWAP(backedges[i], backedges[rc]);
i = rc;
} else {
SWAP(backedges[i], backedges[lc]);
i = lc;
}
} else {
/* This element is in the right place; we're done. */
break;
}
}
}
}
#undef LESS
#undef PARENT
#undef LCHILD
#undef RCHILD
#undef SWAP
}
int maxflow(int nv, int source, int sink,
int ne, const int *edges, const int *capacity,
int *flow, int *cut)
{
void *scratch;
int *backedges;
int size;
int ret;
/*
* Allocate the space.
*/
size = ne * sizeof(int) + maxflow_scratch_size(nv);
backedges = smalloc(size);
if (!backedges)
return -1;
scratch = backedges + ne;
/*
* Set up the backedges array.
*/
maxflow_setup_backedges(ne, edges, backedges);
/*
* Call the main function.
*/
ret = maxflow_with_scratch(scratch, nv, source, sink, ne, edges,
backedges, capacity, flow, cut);
/*
* Free the scratch space.
*/
sfree(backedges);
/*
* And we're done.
*/
return ret;
}
#ifdef TESTMODE
#define MAXEDGES 256
#define MAXVERTICES 128
#define ADDEDGE(i,j) do{edges[ne*2] = (i); edges[ne*2+1] = (j); ne++;}while(0)
int compare_edge(const void *av, const void *bv)
{
const int *a = (const int *)av;
const int *b = (const int *)bv;
if (a[0] < b[0])
return -1;
else if (a[0] > b[0])
return +1;
else if (a[1] < b[1])
return -1;
else if (a[1] > b[1])
return +1;
else
return 0;
}
int main(void)
{
int edges[MAXEDGES*2], ne, nv;
int capacity[MAXEDGES], flow[MAXEDGES], cut[MAXVERTICES];
int source, sink, p, q, i, j, ret;
/*
* Use this algorithm to find a maximal complete matching in a
* bipartite graph.
*/
ne = 0;
nv = 0;
source = nv++;
p = nv;
nv += 5;
q = nv;
nv += 5;
sink = nv++;
for (i = 0; i < 5; i++) {
capacity[ne] = 1;
ADDEDGE(source, p+i);
}
for (i = 0; i < 5; i++) {
capacity[ne] = 1;
ADDEDGE(q+i, sink);
}
j = ne;
capacity[ne] = 1; ADDEDGE(p+0,q+0);
capacity[ne] = 1; ADDEDGE(p+1,q+0);
capacity[ne] = 1; ADDEDGE(p+1,q+1);
capacity[ne] = 1; ADDEDGE(p+2,q+1);
capacity[ne] = 1; ADDEDGE(p+2,q+2);
capacity[ne] = 1; ADDEDGE(p+3,q+2);
capacity[ne] = 1; ADDEDGE(p+3,q+3);
capacity[ne] = 1; ADDEDGE(p+4,q+3);
/* capacity[ne] = 1; ADDEDGE(p+2,q+4); */
qsort(edges, ne, 2*sizeof(int), compare_edge);
ret = maxflow(nv, source, sink, ne, edges, capacity, flow, cut);
printf("ret = %d\n", ret);
for (i = 0; i < ne; i++)
printf("flow %d: %d -> %d\n", flow[i], edges[2*i], edges[2*i+1]);
for (i = 0; i < nv; i++)
if (cut[i] == 0)
printf("difficult set includes %d\n", i);
return 0;
}
#endif

View file

@ -1,95 +0,0 @@
/*
* Edmonds-Karp algorithm for finding a maximum flow and minimum
* cut in a network. Almost identical to the Ford-Fulkerson
* algorithm, but apparently using breadth-first search to find the
* _shortest_ augmenting path is a good way to guarantee
* termination and ensure the time complexity is not dependent on
* the actual value of the maximum flow. I don't understand why
* that should be, but it's claimed on the Internet that it's been
* proved, and that's good enough for me. I prefer BFS to DFS
* anyway :-)
*/
#ifndef MAXFLOW_MAXFLOW_H
#define MAXFLOW_MAXFLOW_H
/*
* The actual algorithm.
*
* Inputs:
*
* - `scratch' is previously allocated scratch space of a size
* previously determined by calling `maxflow_scratch_size'.
*
* - `nv' is the number of vertices. Vertices are assumed to be
* numbered from 0 to nv-1.
*
* - `source' and `sink' are the distinguished source and sink
* vertices.
*
* - `ne' is the number of edges in the graph.
*
* - `edges' is an array of 2*ne integers, giving a (source, dest)
* pair for each network edge. Edge pairs are expected to be
* sorted in lexicographic order.
*
* - `backedges' is an array of `ne' integers, each a distinct
* index into `edges'. The edges in `edges', if permuted as
* specified by this array, should end up sorted in the _other_
* lexicographic order, i.e. dest taking priority over source.
*
* - `capacity' is an array of `ne' integers, giving a maximum
* flow capacity for each edge. A negative value is taken to
* indicate unlimited capacity on that edge, but note that there
* may not be any unlimited-capacity _path_ from source to sink
* or an assertion will be failed.
*
* Output:
*
* - `flow' must be non-NULL. It is an array of `ne' integers,
* each giving the final flow along each edge.
*
* - `cut' may be NULL. If non-NULL, it is an array of `nv'
* integers, which will be set to zero or one on output, in such
* a way that:
* + the set of zero vertices includes the source
* + the set of one vertices includes the sink
* + the maximum flow capacity between the zero and one vertex
* sets is achieved (i.e. all edges from a zero vertex to a
* one vertex are at full capacity, while all edges from a
* one vertex to a zero vertex have no flow at all).
*
* - the returned value from the function is the total flow
* achieved.
*/
int maxflow_with_scratch(void *scratch, int nv, int source, int sink,
int ne, const int *edges, const int *backedges,
const int *capacity, int *flow, int *cut);
/*
* The above function expects its `scratch' and `backedges'
* parameters to have already been set up. This allows you to set
* them up once and use them in multiple invocates of the
* algorithm. Now I provide functions to actually do the setting
* up.
*/
int maxflow_scratch_size(int nv);
void maxflow_setup_backedges(int ne, const int *edges, int *backedges);
/*
* Simplified version of the above function. All parameters are the
* same, except that `scratch' and `backedges' are constructed
* internally. This is the simplest way to call the algorithm as a
* one-off; however, if you need to call it multiple times on the
* same network, it is probably better to call the above version
* directly so that you only construct `scratch' and `backedges'
* once.
*
* Additional return value is now -1, meaning that scratch space
* could not be allocated.
*/
int maxflow(int nv, int source, int sink,
int ne, const int *edges, const int *capacity,
int *flow, int *cut);
#endif /* MAXFLOW_MAXFLOW_H */

View file

@ -1104,6 +1104,27 @@ int midend_process_key(midend *me, int x, int y, int button)
return ret;
}
key_label *midend_request_keys(midend *me, int *n)
{
key_label *keys = NULL;
int nkeys = 0, i;
if(me->ourgame->request_keys)
{
keys = me->ourgame->request_keys(midend_get_params(me), &nkeys);
for(i = 0; i < nkeys; ++i)
{
if(!keys[i].label)
keys[i].label = button2label(keys[i].button);
}
}
if(n)
*n = nkeys;
return keys;
}
void midend_redraw(midend *me)
{
assert(me->drawing);

View file

@ -21,6 +21,15 @@ void free_cfg(config_item *cfg)
sfree(cfg);
}
void free_keys(key_label *keys, int nkeys)
{
int i;
for(i = 0; i < nkeys; i++)
sfree(keys->label);
sfree(keys);
}
/*
* The Mines (among others) game descriptions contain the location of every
* mine, and can therefore be used to cheat.
@ -169,6 +178,25 @@ unsigned char *hex2bin(const char *in, int outlen)
return ret;
}
char *fgetline(FILE *fp)
{
char *ret = snewn(512, char);
int size = 512, len = 0;
while (fgets(ret + len, size - len, fp)) {
len += strlen(ret + len);
if (ret[len-1] == '\n')
break; /* got a newline, we're done */
size = len + 512;
ret = sresize(ret, size, char);
}
if (len == 0) { /* first fgets returned NULL */
sfree(ret);
return NULL;
}
ret[len] = '\0';
return ret;
}
void game_mkhighlight_specific(frontend *fe, float *ret,
int background, int highlight, int lowlight)
{
@ -380,4 +408,42 @@ int ftoa(char *buf, float f)
return sprintf(buf, "%d.%06d", (int)f, abs((int)((f - (int)f)*1e6)));
}
/* Returns a dynamically allocated label for a generic button.
* Game-specific buttons should go into the `label' field of key_label
* instead. */
char *button2label(int button)
{
/* check if it's a keyboard button */
if(('A' <= button && button <= 'Z') ||
('a' <= button && button <= 'z') ||
('0' <= button && button <= '9') )
{
char str[2];
str[0] = button;
str[1] = '\0';
return dupstr(str);
}
switch(button)
{
case CURSOR_UP:
return dupstr("Up");
case CURSOR_DOWN:
return dupstr("Down");
case CURSOR_LEFT:
return dupstr("Left");
case CURSOR_RIGHT:
return dupstr("Right");
case CURSOR_SELECT:
return dupstr("Select");
case '\b':
return dupstr("Clear");
default:
fatal("unknown generic key");
}
/* should never get here */
return NULL;
}
/* vim: set shiftwidth=4 tabstop=8: */

215
apps/plugins/puzzles/src/missing Executable file
View file

@ -0,0 +1,215 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2016-01-11.22; # UTC
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <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.
if test $# -eq 0; then
echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
case $1 in
--is-lightweight)
# Used by our autoconf macros to check whether the available missing
# script is modern enough.
exit 0
;;
--run)
# Back-compat with the calling convention used by older automake.
shift
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
Supported PROGRAM values:
aclocal autoconf autoheader autom4te automake makeinfo
bison yacc flex lex help2man
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: unknown '$1' option"
echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
# Run the given program, remember its exit status.
"$@"; st=$?
# If it succeeded, we are done.
test $st -eq 0 && exit 0
# Also exit now if we it failed (or wasn't found), and '--version' was
# passed; such an option is passed most likely to detect whether the
# program is present and works.
case $2 in --version|--help) exit $st;; esac
# Exit code 63 means version mismatch. This often happens when the user
# tries to use an ancient version of a tool on a file that requires a
# minimum version.
if test $st -eq 63; then
msg="probably too old"
elif test $st -eq 127; then
# Program was missing.
msg="missing on your system"
else
# Program was found and executed, but failed. Give up.
exit $st
fi
perl_URL=http://www.perl.org/
flex_URL=http://flex.sourceforge.net/
gnu_software_URL=http://www.gnu.org/software
program_details ()
{
case $1 in
aclocal|automake)
echo "The '$1' program is part of the GNU Automake package:"
echo "<$gnu_software_URL/automake>"
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/autoconf>"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
autoconf|autom4te|autoheader)
echo "The '$1' program is part of the GNU Autoconf package:"
echo "<$gnu_software_URL/autoconf/>"
echo "It also requires GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
esac
}
give_advice ()
{
# Normalize program name to check for.
normalized_program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
printf '%s\n' "'$1' is $msg."
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
case $normalized_program in
autoconf*)
echo "You should only need it if you modified 'configure.ac',"
echo "or m4 files included by it."
program_details 'autoconf'
;;
autoheader*)
echo "You should only need it if you modified 'acconfig.h' or"
echo "$configure_deps."
program_details 'autoheader'
;;
automake*)
echo "You should only need it if you modified 'Makefile.am' or"
echo "$configure_deps."
program_details 'automake'
;;
aclocal*)
echo "You should only need it if you modified 'acinclude.m4' or"
echo "$configure_deps."
program_details 'aclocal'
;;
autom4te*)
echo "You might have modified some maintainer files that require"
echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
echo "You should only need it if you modified a '.y' file."
echo "You may want to install the GNU Bison package:"
echo "<$gnu_software_URL/bison/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
help2man*)
echo "You should only need it if you modified a dependency" \
"of a man page."
echo "You may want to install the GNU Help2man package:"
echo "<$gnu_software_URL/help2man/>"
;;
makeinfo*)
echo "You should only need it if you modified a '.texi' file, or"
echo "any other file indirectly affecting the aspect of the manual."
echo "You might want to install the Texinfo package:"
echo "<$gnu_software_URL/texinfo/>"
echo "The spurious makeinfo call might also be the consequence of"
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
echo "want to install GNU make:"
echo "<$gnu_software_URL/make/>"
;;
*)
echo "You might have modified some files without having the proper"
echo "tools for further handling them. Check the 'README' file, it"
echo "often tells you about the needed prerequisites for installing"
echo "this package. You may also peek at any GNU archive site, in"
echo "case some other package contains this missing '$1' program."
;;
esac
}
give_advice "$1" | sed -e '1s/^/WARNING: /' \
-e '2,$s/^/ /' >&2
# Propagate the correct exit status (expected to be 127 for a program
# not found, 63 for a program that failed due to version mismatch).
exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

View file

@ -638,7 +638,7 @@ if (defined $makefiles{'clangcl'}) {
print "\t\$(RC) \$(RCFLAGS) ".$d->{deps}->[0]." -o ".$d->{obj}."\n\n";
} else {
$deflist = join "", map { " /D$_" } @{$d->{defs}};
print "\t\$(CC) /Fo\$(BUILDDIR)".$d->{obj}." \$(COMPAT) \$(CFLAGS) \$(XFLAGS)$deflist /c \$<\n\n";
print "\t\$(CC) /Fo".$d->{obj}." \$(COMPAT) \$(CFLAGS) \$(XFLAGS)$deflist /c \$<\n\n";
}
}
print "\nclean:\n".

View file

@ -2400,10 +2400,15 @@ increasingly complex reasoning to avoid having to backtrack.
\cfg{winhelp-topic}{games.galaxies}
You have a rectangular grid containing a number of dots. Your aim is
to draw edges along the grid lines which divide the rectangle into
regions in such a way that every region is 180\u00b0{-degree}
rotationally symmetric, and contains exactly one dot which is
located at its centre of symmetry.
to partition the rectangle into connected regions of squares, in such
a way that every region is 180\u00b0{-degree} rotationally symmetric,
and contains exactly one dot which is located at its centre of
symmetry.
To enter your solution, you draw lines along the grid edges to mark
the boundaries of the regions. The puzzle is complete when the marked
lines on the grid are precisely those that separate two squares
belonging to different regions.
This puzzle was invented by \i{Nikoli} \k{nikoli-galaxies}, under
the name \q{Tentai Show}; its name is commonly translated into
@ -2418,11 +2423,11 @@ Galaxies was contributed to this collection by James Harvey.
\IM{Galaxies controls} controls, for Galaxies
Left-click on any grid line to draw an edge if there isn't one
already, or to remove one if there is. When you create a valid
region (one which is closed, contains exactly one dot, is
180\u00b0{-degree} symmetric about that dot, and contains no
extraneous edges inside it) it will be highlighted automatically; so
your aim is to have the whole grid highlighted in that way.
already, or to remove one if there is. When you create a valid region
(one which is closed, contains exactly one dot, is 180\u00b0{-degree}
symmetric about that dot, and contains no extraneous edges between two
of its own squares), it will be highlighted automatically; so your aim
is to have the whole grid highlighted in that way.
During solving, you might know that a particular grid square belongs
to a specific dot, but not be sure of where the edges go and which

View file

@ -0,0 +1,167 @@
:Title Simon Tatham's Portable Puzzle Collection
1 Contents=Top
1 Chapter 1: Introduction
2 Chapter 1: Introduction=t00000000
1 Chapter 2: Common features
2 Chapter 2: Common features=t00000001
2 Section 2.1: Common actions=t00000002
2 Section 2.2: Specifying games with the game ID=t00000003
2 Section 2.3: The Type menu=t00000004
2 Section 2.4: Specifying game parameters on the command line=t00000005
2 Section 2.5: Unix command-line options=t00000006
1 Chapter 3: Net
2 Chapter 3: Net=games.net
2 Section 3.1: Net controls=t00000007
2 Section 3.2: Net parameters=t00000008
1 Chapter 4: Cube
2 Chapter 4: Cube=games.cube
2 Section 4.1: Cube controls=t00000009
2 Section 4.2: Cube parameters=t00000010
1 Chapter 5: Fifteen
2 Chapter 5: Fifteen=games.fifteen
2 Section 5.1: Fifteen controls=t00000011
2 Section 5.2: Fifteen parameters=t00000012
1 Chapter 6: Sixteen
2 Chapter 6: Sixteen=games.sixteen
2 Section 6.1: Sixteen controls=t00000013
2 Section 6.2: Sixteen parameters=t00000014
1 Chapter 7: Twiddle
2 Chapter 7: Twiddle=games.twiddle
2 Section 7.1: Twiddle controls=t00000015
2 Section 7.2: Twiddle parameters=t00000016
1 Chapter 8: Rectangles
2 Chapter 8: Rectangles=games.rectangles
2 Section 8.1: Rectangles controls=t00000017
2 Section 8.2: Rectangles parameters=t00000018
1 Chapter 9: Netslide
2 Chapter 9: Netslide=games.netslide
1 Chapter 10: Pattern
2 Chapter 10: Pattern=games.pattern
2 Section 10.1: Pattern controls=t00000019
2 Section 10.2: Pattern parameters=t00000020
1 Chapter 11: Solo
2 Chapter 11: Solo=games.solo
2 Section 11.1: Solo controls=t00000021
2 Section 11.2: Solo parameters=t00000022
1 Chapter 12: Mines
2 Chapter 12: Mines=games.mines
2 Section 12.1: Mines controls=t00000023
2 Section 12.2: Mines parameters=t00000024
1 Chapter 13: Same Game
2 Chapter 13: Same Game=games.samegame
2 Section 13.1: Same Game controls=t00000025
2 Section 13.2: Same Game parameters=t00000026
1 Chapter 14: Flip
2 Chapter 14: Flip=games.flip
2 Section 14.1: Flip controls=t00000027
2 Section 14.2: Flip parameters=t00000028
1 Chapter 15: Guess
2 Chapter 15: Guess=games.guess
2 Section 15.1: Guess controls=t00000029
2 Section 15.2: Guess parameters=t00000030
1 Chapter 16: Pegs
2 Chapter 16: Pegs=games.pegs
2 Section 16.1: Pegs controls=t00000031
2 Section 16.2: Pegs parameters=t00000032
1 Chapter 17: Dominosa
2 Chapter 17: Dominosa=games.dominosa
2 Section 17.1: Dominosa controls=t00000033
2 Section 17.2: Dominosa parameters=t00000034
1 Chapter 18: Untangle
2 Chapter 18: Untangle=games.untangle
2 Section 18.1: Untangle controls=t00000035
2 Section 18.2: Untangle parameters=t00000036
1 Chapter 19: Black Box
2 Chapter 19: Black Box=games.blackbox
2 Section 19.1: Black Box controls=t00000037
2 Section 19.2: Black Box parameters=t00000038
1 Chapter 20: Slant
2 Chapter 20: Slant=games.slant
2 Section 20.1: Slant controls=t00000039
2 Section 20.2: Slant parameters=t00000040
1 Chapter 21: Light Up
2 Chapter 21: Light Up=games.lightup
2 Section 21.1: Light Up controls=t00000041
2 Section 21.2: Light Up parameters=t00000042
1 Chapter 22: Map
2 Chapter 22: Map=games.map
2 Section 22.1: Map controls=t00000043
2 Section 22.2: Map parameters=t00000044
1 Chapter 23: Loopy
2 Chapter 23: Loopy=games.loopy
2 Section 23.1: Loopy controls=t00000045
2 Section 23.2: Loopy parameters=t00000046
1 Chapter 24: Inertia
2 Chapter 24: Inertia=games.inertia
2 Section 24.1: Inertia controls=t00000047
2 Section 24.2: Inertia parameters=t00000048
1 Chapter 25: Tents
2 Chapter 25: Tents=games.tents
2 Section 25.1: Tents controls=t00000049
2 Section 25.2: Tents parameters=t00000050
1 Chapter 26: Bridges
2 Chapter 26: Bridges=games.bridges
2 Section 26.1: Bridges controls=t00000051
2 Section 26.2: Bridges parameters=t00000052
1 Chapter 27: Unequal
2 Chapter 27: Unequal=games.unequal
2 Section 27.1: Unequal controls=t00000053
2 Section 27.2: Unequal parameters=t00000054
1 Chapter 28: Galaxies
2 Chapter 28: Galaxies=games.galaxies
2 Section 28.1: Galaxies controls=t00000055
2 Section 28.2: Galaxies parameters=t00000056
1 Chapter 29: Filling
2 Chapter 29: Filling=games.filling
2 Section 29.1: Filling controls=t00000057
2 Section 29.2: Filling parameters=t00000058
1 Chapter 30: Keen
2 Chapter 30: Keen=games.keen
2 Section 30.1: Keen controls=t00000059
2 Section 30.2: Keen parameters=t00000060
1 Chapter 31: Towers
2 Chapter 31: Towers=games.towers
2 Section 31.1: Towers controls=t00000061
2 Section 31.2: Towers parameters=t00000062
1 Chapter 32: Singles
2 Chapter 32: Singles=games.singles
2 Section 32.1: Singles controls=t00000063
2 Section 32.2: Singles parameters=t00000064
1 Chapter 33: Magnets
2 Chapter 33: Magnets=games.magnets
2 Section 33.1: Magnets controls=t00000065
2 Section 33.2: Magnets parameters=t00000066
1 Chapter 34: Signpost
2 Chapter 34: Signpost=games.signpost
2 Section 34.1: Signpost controls=t00000067
2 Section 34.2: Signpost parameters=t00000068
1 Chapter 35: Range
2 Chapter 35: Range=games.range
2 Section 35.1: Range controls=t00000069
2 Section 35.2: Range parameters=t00000070
1 Chapter 36: Pearl
2 Chapter 36: Pearl=games.pearl
2 Section 36.1: Pearl controls=t00000071
2 Section 36.2: Pearl parameters=t00000072
1 Chapter 37: Undead
2 Chapter 37: Undead=games.undead
2 Section 37.1: Undead controls=t00000073
2 Section 37.2: Undead parameters=t00000074
1 Chapter 38: Unruly
2 Chapter 38: Unruly=games.unruly
2 Section 38.1: Unruly controls=t00000075
2 Section 38.2: Unruly parameters=t00000076
1 Chapter 39: Flood
2 Chapter 39: Flood=games.flood
2 Section 39.1: Flood controls=t00000077
2 Section 39.2: Flood parameters=t00000078
1 Chapter 40: Tracks
2 Chapter 40: Tracks=games.tracks
2 Section 40.1: Tracks controls=t00000079
2 Section 40.2: Tracks parameters=t00000080
1 Chapter 41: Palisade
2 Chapter 41: Palisade=games.palisade
2 Section 41.1: Palisade controls=t00000081
2 Section 41.2: Palisade parameters=t00000082
1 Appendix A: Licence
2 Appendix A: Licence=t00000083

View file

@ -217,6 +217,24 @@ void preset_menu_add_preset(struct preset_menu *menu,
* want to organise their preset menu usage */
game_params *preset_menu_lookup_by_id(struct preset_menu *menu, int id);
/*
* Small structure specifying a UI button in a keyboardless front
* end. The button will have the text of "label" written on it, and
* pressing it causes the value "button" to be passed to
* midend_process_key() as if typed at the keyboard.
*
* If `label' is NULL (which it likely will be), a generic label can
* be generated with the button2label() function.
*/
typedef struct key_label {
/* What should be displayed to the user by the frontend. Backends
* can set this field to NULL and have it filled in by the midend
* with a generic label. Dynamically allocated, but frontends
* should probably use free_keys() to free instead. */
char *label;
int button; /* passed to midend_process_key when button is pressed */
} key_label;
/*
* Platform routines
*/
@ -301,6 +319,7 @@ void midend_new_game(midend *me);
void midend_restart_game(midend *me);
void midend_stop_anim(midend *me);
int midend_process_key(midend *me, int x, int y, int button);
key_label *midend_request_keys(midend *me, int *nkeys);
void midend_force_redraw(midend *me);
void midend_redraw(midend *me);
float *midend_colours(midend *me, int *ncolours);
@ -356,7 +375,9 @@ char *dupstr(const char *s);
* misc.c
*/
void free_cfg(config_item *cfg);
void free_keys(key_label *keys, int nkeys);
void obfuscate_bitmap(unsigned char *bmp, int bits, int decode);
char *fgetline(FILE *fp);
/* allocates output each time. len is always in bytes of binary data.
* May assert (or just go wrong) if lengths are unchecked. */
@ -403,6 +424,11 @@ void copy_left_justified(char *buf, size_t sz, const char *str);
* that don't have one */
int ftoa(char *buf, float f);
/* Returns a generic label based on the value of `button.' To be used
whenever a `label' field returned by the request_keys() game
function is NULL. Dynamically allocated, to be freed by caller. */
char *button2label(int button);
/*
* dsf.c
*/
@ -613,7 +639,7 @@ struct game {
void (*free_ui)(game_ui *ui);
char *(*encode_ui)(const game_ui *ui);
void (*decode_ui)(game_ui *ui, const char *encoding);
char *(*request_keys)(const game_params *params);
key_label *(*request_keys)(const game_params *params, int *nkeys);
void (*changed_state)(game_ui *ui, const game_state *oldstate,
const game_state *newstate);
char *(*interpret_move)(const game_state *state, game_ui *ui,

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
# -*- makefile -*-
SINGLES_EXTRA = dsf latin maxflow tree234
SINGLES_EXTRA = dsf LATIN
singles : [X] GTK COMMON singles SINGLES_EXTRA singles-icon|no-icon
singles : [G] WINDOWS COMMON singles SINGLES_EXTRA singles.res|noicon.res

View file

@ -3608,17 +3608,23 @@ static struct block_structure *gen_killer_cages(int cr, random_state *rs,
return b;
}
static char *game_request_keys(const game_params *params)
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
int i;
int cr = params->c * params->r;
char *keys = smalloc(cr+2);
key_label *keys = snewn(cr+1, key_label);
*nkeys = cr + 1;
for (i = 0; i < cr; i++) {
if (i<9) keys[i] = '1' + i;
else keys[i] = 'a' + i - 9;
if (i<9) keys[i].button = '1' + i;
else keys[i].button = 'a' + i - 9;
keys[i].label = NULL;
}
keys[cr] = '\b';
keys[cr+1] = '\0';
keys[cr].button = '\b';
keys[cr].label = NULL;
return keys;
}

View file

@ -1,6 +1,6 @@
# -*- makefile -*-
TENTS_EXTRA = maxflow dsf
TENTS_EXTRA = matching dsf
tents : [X] GTK COMMON tents TENTS_EXTRA tents-icon|no-icon

View file

@ -35,7 +35,7 @@
#include <math.h>
#include "puzzles.h"
#include "maxflow.h"
#include "matching.h"
/*
* Design discussion
@ -907,14 +907,17 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
char *puzzle = snewn(w*h, char);
int *numbers = snewn(w+h, int);
char *soln = snewn(w*h, char);
int *temp = snewn(2*w*h, int);
int *order = snewn(w*h, int);
int *treemap = snewn(w*h, int);
int maxedges = ntrees*4 + w*h;
int *edges = snewn(2*maxedges, int);
int *capacity = snewn(maxedges, int);
int *flow = snewn(maxedges, int);
int *adjdata = snewn(maxedges, int);
int **adjlists = snewn(ntrees, int *);
int *adjsizes = snewn(ntrees, int);
int *outr = snewn(4*ntrees, int);
struct solver_scratch *sc = new_scratch(w, h);
char *ret, *p;
int i, j, nedges;
int i, j, nl, nr;
int *adjptr;
/*
* Since this puzzle has many global deductions and doesn't
@ -940,7 +943,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
* would make the grids emptier and more boring.
*
* Actually generating a grid is a matter of first placing the
* tents, and then placing the trees by the use of maxflow
* tents, and then placing the trees by the use of matching.c
* (finding a distinct square adjacent to every tent). We do it
* this way round because otherwise satisfying the tent
* separation condition would become onerous: most randomly
@ -950,19 +953,12 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
* ensure they meet the separation criterion _before_ doing
* lots of computation; this works much better.
*
* The maxflow algorithm is not randomised, so employed naively
* it would give rise to grids with clear structure and
* directional bias. Hence, I assign the network nodes as seen
* by maxflow to be a _random_ permutation of the squares of
* the grid, so that any bias shown by maxflow towards
* low-numbered nodes is turned into a random bias.
*
* This generation strategy can fail at many points, including
* as early as tent placement (if you get a bad random order in
* which to greedily try the grid squares, you won't even
* manage to find enough mutually non-adjacent squares to put
* the tents in). Then it can fail if maxflow doesn't manage to
* find a good enough matching (i.e. the tent placements don't
* the tents in). Then it can fail if matching.c doesn't manage
* to find a good enough matching (i.e. the tent placements don't
* admit any adequate tree placements); and finally it can fail
* if the solver finds that the problem has the wrong
* difficulty (including being actually non-unique). All of
@ -975,23 +971,38 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
while (1) {
/*
* Arrange the grid squares into a random order.
* Make a list of grid squares which we'll permute as we pick
* the tent locations.
*
* We'll also need to index all the potential tree squares,
* i.e. the ones adjacent to the tents.
*/
for (i = 0; i < w*h; i++)
temp[i] = i;
shuffle(temp, w*h, sizeof(*temp), rs);
for (i = 0; i < w*h; i++) {
order[i] = i;
treemap[i] = -1;
}
/*
* The first `ntrees' entries in temp which we can get
* without making two tents adjacent will be the tent
* locations.
* Place tents at random without making any two adjacent.
*/
memset(grid, BLANK, w*h);
j = ntrees;
for (i = 0; i < w*h && j > 0; i++) {
int x = temp[i] % w, y = temp[i] / w;
nr = 0;
/* Loop end condition: either j==0 (we've placed all the
* tents), or the number of grid squares we have yet to try
* is too few to fit the remaining tents into. */
for (i = 0; j > 0 && i+j <= w*h; i++) {
int which, x, y, d, tmp;
int dy, dx, ok = TRUE;
which = i + random_upto(rs, j);
tmp = order[which];
order[which] = order[i];
order[i] = tmp;
x = order[i] % w;
y = order[i] / w;
for (dy = -1; dy <= +1; dy++)
for (dx = -1; dx <= +1; dx++)
if (x+dx >= 0 && x+dx < w &&
@ -1000,7 +1011,14 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
ok = FALSE;
if (ok) {
grid[temp[i]] = TENT;
grid[order[i]] = TENT;
for (d = 1; d < MAXDIR; d++) {
int x2 = x + dx(d), y2 = y + dy(d);
if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h &&
treemap[y2*w+x2] == -1) {
treemap[y2*w+x2] = nr++;
}
}
j--;
}
}
@ -1008,68 +1026,47 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
continue; /* couldn't place all the tents */
/*
* Now we build up the list of graph edges.
* Build up the graph for matching.c.
*/
nedges = 0;
adjptr = adjdata;
nl = 0;
for (i = 0; i < w*h; i++) {
if (grid[temp[i]] == TENT) {
for (j = 0; j < w*h; j++) {
if (grid[temp[j]] != TENT) {
int xi = temp[i] % w, yi = temp[i] / w;
int xj = temp[j] % w, yj = temp[j] / w;
if (abs(xi-xj) + abs(yi-yj) == 1) {
edges[nedges*2] = i;
edges[nedges*2+1] = j;
capacity[nedges] = 1;
nedges++;
if (grid[i] == TENT) {
int d, x = i % w, y = i / w;
adjlists[nl] = adjptr;
for (d = 1; d < MAXDIR; d++) {
int x2 = x + dx(d), y2 = y + dy(d);
if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h) {
assert(treemap[y2*w+x2] != -1);
*adjptr++ = treemap[y2*w+x2];
}
}
}
} else {
/*
* Special node w*h is the sink node; any non-tent node
* has an edge going to it.
*/
edges[nedges*2] = i;
edges[nedges*2+1] = w*h;
capacity[nedges] = 1;
nedges++;
adjsizes[nl] = adjptr - adjlists[nl];
nl++;
}
}
/*
* Special node w*h+1 is the source node, with an edge going to
* every tent.
* Call the matching algorithm to actually place the trees.
*/
for (i = 0; i < w*h; i++) {
if (grid[temp[i]] == TENT) {
edges[nedges*2] = w*h+1;
edges[nedges*2+1] = i;
capacity[nedges] = 1;
nedges++;
}
}
assert(nedges <= maxedges);
/*
* Now we're ready to call the maxflow algorithm to place the
* trees.
*/
j = maxflow(w*h+2, w*h+1, w*h, nedges, edges, capacity, flow, NULL);
j = matching(ntrees, nr, adjlists, adjsizes, rs, NULL, outr);
if (j < ntrees)
continue; /* couldn't place all the trees */
/*
* We've placed the trees. Now we need to work out _where_
* we've placed them, which is a matter of reading back out
* from the `flow' array.
* Fill in the trees in the grid, by cross-referencing treemap
* (which maps a grid square to its index as known to
* matching()) against the output from matching().
*
* Note that for these purposes we don't actually care _which_
* tent each potential tree square is assigned to - we only
* care whether it was assigned to any tent at all, in order
* to decide whether to put a tree in it.
*/
for (i = 0; i < nedges; i++) {
if (edges[2*i] < w*h && edges[2*i+1] < w*h && flow[i] > 0)
grid[temp[edges[2*i+1]]] = TREE;
}
for (i = 0; i < w*h; i++)
if (treemap[i] != -1 && outr[treemap[i]] != -1)
grid[i] = TREE;
/*
* I think it looks ugly if there isn't at least one of
@ -1174,10 +1171,12 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
*aux = sresize(*aux, p - *aux, char);
free_scratch(sc);
sfree(flow);
sfree(capacity);
sfree(edges);
sfree(temp);
sfree(outr);
sfree(adjdata);
sfree(adjlists);
sfree(adjsizes);
sfree(treemap);
sfree(order);
sfree(soln);
sfree(numbers);
sfree(puzzle);
@ -1748,7 +1747,7 @@ static game_state *execute_move(const game_state *state, const char *move)
m++;
}
if (n == m) {
int nedges, maxedges, *edges, *capacity, *flow;
int *gridids, *adjdata, **adjlists, *adjsizes, *adjptr;
/*
* We have the right number of tents, which is a
@ -1800,28 +1799,33 @@ static game_state *execute_move(const game_state *state, const char *move)
* every tent is orthogonally adjacent to its tree.
*
* This bit is where the hard work comes in: we have to do
* it by finding such a matching using maxflow.
*
* So we construct a network with one special source node,
* one special sink node, one node per tent, and one node
* per tree.
*/
maxedges = 6 * m;
edges = snewn(2 * maxedges, int);
capacity = snewn(maxedges, int);
flow = snewn(maxedges, int);
nedges = 0;
/*
* Node numbering:
*
* 0..w*h trees/tents
* w*h source
* w*h+1 sink
* it by finding such a matching using matching.c.
*/
gridids = snewn(w*h, int);
adjdata = snewn(m*4, int);
adjlists = snewn(m, int *);
adjsizes = snewn(m, int);
/* Assign each tent and tree a consecutive vertex id for
* matching(). */
for (i = n = 0; i < w*h; i++) {
if (ret->grid[i] == TENT)
gridids[i] = n++;
}
assert(n == m);
for (i = n = 0; i < w*h; i++) {
if (ret->grid[i] == TREE)
gridids[i] = n++;
}
assert(n == m);
/* Build the vertices' adjacency lists. */
adjptr = adjdata;
for (y = 0; y < h; y++)
for (x = 0; x < w; x++)
if (ret->grid[y*w+x] == TREE) {
int d;
int d, treeid = gridids[y*w+x];
adjlists[treeid] = adjptr;
/*
* Here we use the direction enum declared for
@ -1835,34 +1839,18 @@ static game_state *execute_move(const game_state *state, const char *move)
int x2 = x + dx(d), y2 = y + dy(d);
if (x2 >= 0 && x2 < w && y2 >= 0 && y2 < h &&
ret->grid[y2*w+x2] == TENT) {
assert(nedges < maxedges);
edges[nedges*2] = y*w+x;
edges[nedges*2+1] = y2*w+x2;
capacity[nedges] = 1;
nedges++;
*adjptr++ = gridids[y2*w+x2];
}
}
} else if (ret->grid[y*w+x] == TENT) {
assert(nedges < maxedges);
edges[nedges*2] = y*w+x;
edges[nedges*2+1] = w*h+1; /* edge going to sink */
capacity[nedges] = 1;
nedges++;
adjsizes[treeid] = adjptr - adjlists[treeid];
}
for (y = 0; y < h; y++)
for (x = 0; x < w; x++)
if (ret->grid[y*w+x] == TREE) {
assert(nedges < maxedges);
edges[nedges*2] = w*h; /* edge coming from source */
edges[nedges*2+1] = y*w+x;
capacity[nedges] = 1;
nedges++;
}
n = maxflow(w*h+2, w*h, w*h+1, nedges, edges, capacity, flow, NULL);
sfree(flow);
sfree(capacity);
sfree(edges);
n = matching(m, m, adjlists, adjsizes, NULL, NULL, NULL);
sfree(gridids);
sfree(adjdata);
sfree(adjlists);
sfree(adjsizes);
if (n != m)
goto completion_check_done;
@ -2000,14 +1988,13 @@ static int *find_errors(const game_state *state, char *grid)
* tents. The difficult bit is highlighting failures in the
* tent/tree matching criterion.
*
* A natural approach would seem to be to apply the maxflow
* A natural approach would seem to be to apply the matching.c
* algorithm to find the tent/tree matching; if this fails, it
* must necessarily terminate with a min-cut which can be
* reinterpreted as some set of trees which have too few tents
* between them (or vice versa). However, it's bad for
* localising errors, because it's not easy to make the
* algorithm narrow down to the _smallest_ such set of trees: if
* trees A and B have only one tent between them, for instance,
* could be made to produce as a by-product some set of trees
* which have too few tents between them (or vice versa). However,
* it's bad for localising errors, because it's not easy to make
* the algorithm narrow down to the _smallest_ such set of trees:
* if trees A and B have only one tent between them, for instance,
* it might perfectly well highlight not only A and B but also
* trees C and D which are correctly matched on the far side of
* the grid, on the grounds that those four trees between them

View file

@ -1,14 +1,14 @@
# -*- makefile -*-
TOWERS_LATIN_EXTRA = tree234 maxflow
TOWERS_EXTRA = latin TOWERS_LATIN_EXTRA
TOWERS_EXTRA = LATIN
TOWERS_EXTRA_SOLVER = LATIN_SOLVER
towers : [X] GTK COMMON towers TOWERS_EXTRA towers-icon|no-icon
towers : [G] WINDOWS COMMON towers TOWERS_EXTRA towers.res|noicon.res
towerssolver : [U] towers[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] TOWERS_LATIN_EXTRA STANDALONE
towerssolver : [C] towers[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] TOWERS_LATIN_EXTRA STANDALONE
towerssolver : [U] towers[STANDALONE_SOLVER] TOWERS_EXTRA_SOLVER STANDALONE
towerssolver : [C] towers[STANDALONE_SOLVER] TOWERS_EXTRA_SOLVER STANDALONE
ALL += towers[COMBINED] TOWERS_EXTRA

View file

@ -130,7 +130,7 @@ static game_params *default_params(void)
return ret;
}
const static struct game_params towers_presets[] = {
static const struct game_params towers_presets[] = {
{ 4, DIFF_EASY },
{ 5, DIFF_EASY },
{ 5, DIFF_HARD },
@ -864,18 +864,22 @@ static const char *validate_desc(const game_params *params, const char *desc)
return NULL;
}
static char *game_request_keys(const game_params *params)
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
int i;
int w = params->w;
char *keys = smalloc(w+2);
keys[0] = '\b';
key_label *keys = snewn(w+1, key_label);
*nkeys = w + 1;
for (i = 0; i < w; i++) {
if (i<9) keys[i] = '1' + i;
else keys[i] = 'a' + i - 9;
if (i<9) keys[i].button = '1' + i;
else keys[i].button = 'a' + i - 9;
keys[i].label = NULL;
}
keys[w] = '\b';
keys[w+1] = '\0';
keys[w].button = '\b';
keys[w].label = NULL;
return keys;
}

View file

@ -1314,9 +1314,24 @@ void num2grid(int num, int width, int height, int *x, int *y) {
return;
}
static char *game_request_keys(const game_params *params)
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
return dupstr("GVZ\b");
key_label *keys = snewn(4, key_label);
*nkeys = 4;
keys[0].button = 'G';
keys[0].label = dupstr("Ghost");
keys[1].button = 'V';
keys[1].label = dupstr("Vampire");
keys[2].button = 'Z';
keys[2].label = dupstr("Zombie");
keys[3].button = '\b';
keys[3].label = NULL;
return keys;
}
static game_state *new_game(midend *me, const game_params *params,

View file

@ -1,16 +1,14 @@
# -*- makefile -*-
UNEQUAL_EXTRA = latin tree234 maxflow
UNEQUAL_EXTRA = LATIN
UNEQUAL_EXTRA_SOLVER = LATIN_SOLVER
unequal : [X] GTK COMMON unequal UNEQUAL_EXTRA unequal-icon|no-icon
unequal : [G] WINDOWS COMMON unequal UNEQUAL_EXTRA unequal.res|noicon.res
unequalsolver : [U] unequal[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] tree234 maxflow STANDALONE
unequalsolver : [C] unequal[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] tree234 maxflow STANDALONE
latincheck : [U] latin[STANDALONE_LATIN_TEST] tree234 maxflow STANDALONE
latincheck : [C] latin[STANDALONE_LATIN_TEST] tree234 maxflow STANDALONE
unequalsolver : [U] unequal[STANDALONE_SOLVER] UNEQUAL_EXTRA_SOLVER STANDALONE
unequalsolver : [C] unequal[STANDALONE_SOLVER] UNEQUAL_EXTRA_SOLVER STANDALONE
ALL += unequal[COMBINED] UNEQUAL_EXTRA

View file

@ -111,7 +111,7 @@ static char const unequal_diffchars[] = DIFFLIST(ENCODE);
#define DEFAULT_PRESET 0
const static struct game_params unequal_presets[] = {
static const struct game_params unequal_presets[] = {
{ 4, DIFF_EASY, 0 },
{ 5, DIFF_EASY, 0 },
{ 5, DIFF_SET, 0 },
@ -1280,18 +1280,22 @@ fail:
return NULL;
}
static char *game_request_keys(const game_params *params)
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
int order = params->order;
char off = (order > 9) ? '0' : '1';
char *keys = smalloc(order + 2);
key_label *keys = snewn(order + 1, key_label);
*nkeys = order + 1;
int i;
for(i = 0; i < order; i++) {
if (i==10) off = 'a'-10;
keys[i] = i + off;
keys[i].button = i + off;
keys[i].label = NULL;
}
keys[order] = '\b';
keys[order+1] = '\0';
keys[order].button = '\b';
keys[order].label = NULL;
return keys;
}

View file

@ -1,14 +1,14 @@
# -*- makefile -*-
GROUP_LATIN_EXTRA = tree234 maxflow
GROUP_EXTRA = latin GROUP_LATIN_EXTRA
GROUP_EXTRA = LATIN
GROUP_EXTRA_SOLVER = LATIN_SOLVER
group : [X] GTK COMMON group GROUP_EXTRA group-icon|no-icon
group : [G] WINDOWS COMMON group GROUP_EXTRA group.res|noicon.res
groupsolver : [U] group[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] GROUP_LATIN_EXTRA STANDALONE
groupsolver : [C] group[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] GROUP_LATIN_EXTRA STANDALONE
groupsolver : [U] group[STANDALONE_SOLVER] GROUP_EXTRA_SOLVER STANDALONE
groupsolver : [C] group[STANDALONE_SOLVER] GROUP_EXTRA_SOLVER STANDALONE
ALL += group[COMBINED] GROUP_EXTRA

View file

@ -2081,6 +2081,7 @@ const struct game thegame = {
free_ui,
encode_ui,
decode_ui,
NULL, /* game_request_keys */
game_changed_state,
interpret_move,
execute_move,

View file

@ -841,6 +841,7 @@ const struct game thegame = {
free_ui,
encode_ui,
decode_ui,
NULL, /* game_request_keys */
game_changed_state,
interpret_move,
execute_move,

View file

@ -2333,6 +2333,7 @@ const struct game thegame = {
free_ui,
encode_ui,
decode_ui,
NULL, /* game_request_keys */
game_changed_state,
interpret_move,
execute_move,

View file

@ -1457,6 +1457,7 @@ const struct game thegame = {
free_ui,
encode_ui,
decode_ui,
NULL, /* game_request_keys */
game_changed_state,
interpret_move,
execute_move,

View file

@ -94,7 +94,7 @@ static char const *const unruly_diffnames[] = { DIFFLIST(TITLE) };
static char const unruly_diffchars[] = DIFFLIST(ENCODE);
#define DIFFCONFIG DIFFLIST(CONFIG)
const static struct game_params unruly_presets[] = {
static const struct game_params unruly_presets[] = {
{ 8, 8, FALSE, DIFF_EASY},
{ 8, 8, FALSE, DIFF_NORMAL},
{10, 10, FALSE, DIFF_EASY},

View file

@ -12,6 +12,12 @@ has 'descfile' => (required => 1);
<?xml version="1.0" encoding="utf-8"?>
<?if $(var.Win64) = yes ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
% # Product tag. The Id component is set to "*", which causes WiX to
@ -61,7 +67,7 @@ has 'descfile' => (required => 1);
% # (individual files or shortcuts or additions to PATH) that are
% # installed.
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder" Name="PFiles">
<Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles">
<Directory Id="INSTALLDIR" Name="Simon Tatham's Portable Puzzle Collection">
% # The following components all install things in the main
@ -71,12 +77,12 @@ has 'descfile' => (required => 1);
% # the more obscure things like LICENCE are just there for
% # the sake of being _somewhere_ and don't rate a shortcut.
<%method file_component ($filename, $shortcutname)>
<%method file_component ($prefix, $filename, $shortcutname)>
% my $filename_id = file_component_name($filename);
<Component Id="File_Component_<% $filename_id %>"
Guid="<% invent_guid('file:' . $filename) %>">
<File Id="File_<% $filename_id %>"
Source="<% $filename %>" KeyPath="yes">
Source="<% $prefix %><% $filename %>" KeyPath="yes">
% if (defined $shortcutname) {
<Shortcut Id="startmenu_<% $filename_id %>"
Directory="ProgramMenuDir" WorkingDirectory="INSTALLDIR"
@ -87,12 +93,12 @@ has 'descfile' => (required => 1);
</%method>
% for my $exe (@exes) {
<% $.file_component($exe, $names{$exe}) %>
<% $.file_component('$(var.Bindir)', $exe, $names{$exe}) %>
% }
<% $.file_component("puzzles.chm", "Puzzles Manual") %>
<% $.file_component("website.url", "Puzzles Web Site") %>
<% $.file_component("LICENCE") %>
<% $.file_component('', "puzzles.chm", "Puzzles Manual") %>
<% $.file_component('', "website.url", "Puzzles Web Site") %>
<% $.file_component('', "LICENCE") %>
</Directory>
</Directory>