mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-22 16:32:13 -07:00
I'm sick of repeatedly adding and removing local changes to Recipe
when testing a new game, so here's a new architecture for the Recipe file. mkfiles.pl now supports several new features: - an `!include' directive, which accepts wildcards - += to append to an existing object group definition - the ability to divert output to an arbitrary file. So now each puzzle has a `.R' file containing a fragment of Recipe code describing that puzzle, and the central Recipe does `!include *.R' to construct the Makefiles. That way, I can keep as many experimental half-finished puzzles lying around my working directory as I like, and I won't have to keep reverting Recipe when I check in any other changes. As part of this change, list.c is no longer a version-controlled file; it's now constructed by mkfiles.pl, so that it too can take advantage of this mechanism. [originally from svn r6781]
This commit is contained in:
127
Recipe
127
Recipe
@ -16,95 +16,38 @@
|
||||
WINDOWS = windows printing
|
||||
+ user32.lib gdi32.lib comctl32.lib comdlg32.lib winspool.lib
|
||||
COMMON = midend drawing misc malloc random version
|
||||
NET = net tree234 dsf
|
||||
NETSLIDE = netslide tree234
|
||||
MINES = mines tree234
|
||||
FLIP = flip tree234
|
||||
PEGS = pegs tree234
|
||||
UNTANGLE = untangle tree234
|
||||
SLANT = slant dsf
|
||||
MAP = map dsf
|
||||
LOOPY = loopy tree234 dsf
|
||||
LIGHTUP = lightup combi
|
||||
TENTS = tents maxflow
|
||||
BRIDGES = bridges dsf
|
||||
|
||||
ALL = list NET NETSLIDE cube fifteen sixteen rect pattern solo twiddle
|
||||
+ MINES samegame FLIP guess PEGS dominosa UNTANGLE blackbox SLANT
|
||||
+ LIGHTUP MAP LOOPY inertia TENTS BRIDGES
|
||||
|
||||
GTK = gtk printing ps
|
||||
|
||||
net : [X] GTK COMMON NET
|
||||
netslide : [X] GTK COMMON NETSLIDE
|
||||
cube : [X] GTK COMMON cube
|
||||
fifteen : [X] GTK COMMON fifteen
|
||||
sixteen : [X] GTK COMMON sixteen
|
||||
rect : [X] GTK COMMON rect
|
||||
pattern : [X] GTK COMMON pattern
|
||||
solo : [X] GTK COMMON solo
|
||||
twiddle : [X] GTK COMMON twiddle
|
||||
mines : [X] GTK COMMON MINES
|
||||
samegame : [X] GTK COMMON samegame
|
||||
flip : [X] GTK COMMON FLIP
|
||||
guess : [X] GTK COMMON guess
|
||||
pegs : [X] GTK COMMON PEGS
|
||||
dominosa : [X] GTK COMMON dominosa
|
||||
untangle : [X] GTK COMMON UNTANGLE
|
||||
blackbox : [X] GTK COMMON blackbox
|
||||
slant : [X] GTK COMMON SLANT
|
||||
lightup : [X] GTK COMMON LIGHTUP
|
||||
map : [X] GTK COMMON MAP
|
||||
loopy : [X] GTK COMMON LOOPY
|
||||
inertia : [X] GTK COMMON inertia
|
||||
tents : [X] GTK COMMON TENTS
|
||||
bridges : [X] GTK COMMON BRIDGES
|
||||
|
||||
# Auxiliary command-line programs.
|
||||
# Objects needed for auxiliary command-line programs.
|
||||
STANDALONE = nullfe random misc malloc
|
||||
|
||||
solosolver : [U] solo[STANDALONE_SOLVER] STANDALONE
|
||||
patternsolver : [U] pattern[STANDALONE_SOLVER] STANDALONE
|
||||
mineobfusc : [U] mines[STANDALONE_OBFUSCATOR] tree234 STANDALONE
|
||||
slantsolver : [U] slant[STANDALONE_SOLVER] dsf STANDALONE
|
||||
mapsolver : [U] map[STANDALONE_SOLVER] dsf STANDALONE m.lib
|
||||
lightupsolver : [U] lightup[STANDALONE_SOLVER] combi STANDALONE
|
||||
tentssolver : [U] tents[STANDALONE_SOLVER] maxflow STANDALONE
|
||||
ALL = list
|
||||
|
||||
solosolver : [C] solo[STANDALONE_SOLVER] STANDALONE
|
||||
patternsolver : [C] pattern[STANDALONE_SOLVER] STANDALONE
|
||||
mineobfusc : [C] mines[STANDALONE_OBFUSCATOR] tree234 STANDALONE
|
||||
slantsolver : [C] slant[STANDALONE_SOLVER] dsf STANDALONE
|
||||
mapsolver : [C] map[STANDALONE_SOLVER] dsf STANDALONE
|
||||
lightupsolver : [C] lightup[STANDALONE_SOLVER] combi STANDALONE
|
||||
tentssolver : [C] tents[STANDALONE_SOLVER] maxflow STANDALONE
|
||||
# First half of list.c.
|
||||
!begin >list.c
|
||||
/*
|
||||
* 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) \
|
||||
!end
|
||||
|
||||
# The Windows Net shouldn't be called `net.exe' since Windows
|
||||
# already has a reasonably important utility program by that name!
|
||||
netgame : [G] WINDOWS COMMON NET
|
||||
netslide : [G] WINDOWS COMMON NETSLIDE
|
||||
cube : [G] WINDOWS COMMON cube
|
||||
fifteen : [G] WINDOWS COMMON fifteen
|
||||
sixteen : [G] WINDOWS COMMON sixteen
|
||||
rect : [G] WINDOWS COMMON rect
|
||||
pattern : [G] WINDOWS COMMON pattern
|
||||
solo : [G] WINDOWS COMMON solo
|
||||
twiddle : [G] WINDOWS COMMON twiddle
|
||||
mines : [G] WINDOWS COMMON MINES
|
||||
samegame : [G] WINDOWS COMMON samegame
|
||||
flip : [G] WINDOWS COMMON FLIP
|
||||
guess : [G] WINDOWS COMMON guess
|
||||
pegs : [G] WINDOWS COMMON PEGS
|
||||
dominosa : [G] WINDOWS COMMON dominosa
|
||||
untangle : [G] WINDOWS COMMON UNTANGLE
|
||||
blackbox : [G] WINDOWS COMMON blackbox
|
||||
slant : [G] WINDOWS COMMON SLANT
|
||||
lightup : [G] WINDOWS COMMON LIGHTUP
|
||||
map : [G] WINDOWS COMMON MAP
|
||||
loopy : [G] WINDOWS COMMON LOOPY
|
||||
inertia : [G] WINDOWS COMMON inertia
|
||||
tents : [G] WINDOWS COMMON TENTS
|
||||
bridges : [G] WINDOWS COMMON BRIDGES
|
||||
# Now each .R file adds part of the macro definition of GAMELIST to list.c.
|
||||
!include *.R
|
||||
|
||||
# Then we finish up list.c as follows:
|
||||
!begin >list.c
|
||||
|
||||
#define DECL(x) extern const game x;
|
||||
#define REF(x) &x,
|
||||
GAMELIST(DECL)
|
||||
const game *gamelist[] = { GAMELIST(REF) };
|
||||
const int gamecount = lenof(gamelist);
|
||||
!end
|
||||
|
||||
# Mac OS X unified application containing all the puzzles.
|
||||
Puzzles : [MX] osx osx.icns osx-info.plist COMMON ALL
|
||||
@ -138,17 +81,6 @@ Puzzles.dmg: Puzzles
|
||||
rm -f raw.dmg devicename
|
||||
!end
|
||||
|
||||
# The `nullgame' source file is a largely blank one, which contains
|
||||
# all the correct function definitions to compile and link, but
|
||||
# which defines the null game in which nothing is ever drawn and
|
||||
# there are no valid moves. Its main purpose is to act as a
|
||||
# template for writing new game definition source files. I include
|
||||
# it in the Makefile because it will be worse than useless if it
|
||||
# ever fails to compile, so it's important that it should actually
|
||||
# be built on a regular basis.
|
||||
nullgame : [X] GTK COMMON nullgame
|
||||
nullgame : [G] WINDOWS COMMON nullgame
|
||||
|
||||
# Version management.
|
||||
!begin vc
|
||||
version.obj: *.c *.h
|
||||
@ -194,10 +126,7 @@ FORCE:
|
||||
# make install for Unix.
|
||||
!begin gtk
|
||||
install:
|
||||
for i in cube net netslide fifteen sixteen twiddle \
|
||||
pattern rect solo mines samegame flip guess \
|
||||
pegs dominosa untangle blackbox slant lightup \
|
||||
map loopy inertia tents bridges; do \
|
||||
for i in $(GAMES); do \
|
||||
$(INSTALL_PROGRAM) -m 755 $$i $(DESTDIR)$(gamesdir)/$$i \
|
||||
|| exit 1; \
|
||||
done
|
||||
|
Reference in New Issue
Block a user