-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
-
-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
-
-# 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
+ALL = list
+
+# 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
+
+# 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
+
+# Unix standalone application for special-purpose obfuscation.
+obfusc : [U] obfusc STANDALONE
+
+puzzles : [G] windows[COMBINED] WINDOWS_COMMON COMMON ALL noicon.res