| 1 | # -*- makefile -*- |
| 2 | # |
| 3 | # This file describes which puzzle binaries are made up from which |
| 4 | # object and resource files. It is processed into the various |
| 5 | # Makefiles by means of a Perl script. Makefile changes should |
| 6 | # really be made by editing this file and/or the Perl script, not |
| 7 | # by editing the actual Makefiles. |
| 8 | |
| 9 | !name puzzles |
| 10 | |
| 11 | !makefile gtk Makefile |
| 12 | !makefile vc Makefile.vc |
| 13 | !makefile cygwin Makefile.cyg |
| 14 | !makefile osx Makefile.osx |
| 15 | |
| 16 | WINDOWS = windows user32.lib gdi32.lib comctl32.lib |
| 17 | COMMON = midend misc malloc random |
| 18 | NET = net tree234 |
| 19 | NETSLIDE = netslide tree234 |
| 20 | |
| 21 | ALL = list NET NETSLIDE cube fifteen sixteen rect pattern solo |
| 22 | |
| 23 | net : [X] gtk COMMON NET |
| 24 | netslide : [X] gtk COMMON NETSLIDE |
| 25 | cube : [X] gtk COMMON cube |
| 26 | fifteen : [X] gtk COMMON fifteen |
| 27 | sixteen : [X] gtk COMMON sixteen |
| 28 | rect : [X] gtk COMMON rect |
| 29 | pattern : [X] gtk COMMON pattern |
| 30 | solo : [X] gtk COMMON solo |
| 31 | |
| 32 | # The Windows Net shouldn't be called `net.exe' since Windows |
| 33 | # already has a reasonably important utility program by that name! |
| 34 | netgame : [G] WINDOWS COMMON NET |
| 35 | netslide : [G] WINDOWS COMMON NETSLIDE |
| 36 | cube : [G] WINDOWS COMMON cube |
| 37 | fifteen : [G] WINDOWS COMMON fifteen |
| 38 | sixteen : [G] WINDOWS COMMON sixteen |
| 39 | rect : [G] WINDOWS COMMON rect |
| 40 | pattern : [G] WINDOWS COMMON pattern |
| 41 | solo : [G] WINDOWS COMMON solo |
| 42 | |
| 43 | # Mac OS X unified application containing all the puzzles. |
| 44 | Puzzles : [MX] osx osx.icns osx-info.plist COMMON ALL |
| 45 | # For OS X, we must create the online help and include it in the |
| 46 | # application bundle.) Also we add -DCOMBINED to the compiler flags |
| 47 | # so as to inform the code that we're building a single binary for |
| 48 | # all the puzzles. Then I've also got some code in here to build a |
| 49 | # distributable .dmg disk image. |
| 50 | !begin osx |
| 51 | CFLAGS += -DCOMBINED |
| 52 | Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html |
| 53 | Puzzles.app/Contents/Resources/Help/index.html: \ |
| 54 | Puzzles.app/Contents/Resources/Help osx-help.but puzzles.but |
| 55 | cd Puzzles.app/Contents/Resources/Help; \ |
| 56 | halibut --html ../../../../osx-help.but ../../../../puzzles.but |
| 57 | Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources |
| 58 | mkdir -p Puzzles.app/Contents/Resources/Help |
| 59 | |
| 60 | release: Puzzles.dmg |
| 61 | Puzzles.dmg: Puzzles |
| 62 | rm -f raw.dmg |
| 63 | hdiutil create -megabytes 5 -layout NONE raw.dmg |
| 64 | hdid -nomount raw.dmg > devicename |
| 65 | newfs_hfs -v "Simon Tatham's Puzzle Collection" `cat devicename` |
| 66 | hdiutil eject `cat devicename` |
| 67 | hdid raw.dmg | cut -f1 -d' ' > devicename |
| 68 | cp -R Puzzles.app /Volumes/"Simon Tatham's Puzzle Collection" |
| 69 | hdiutil eject `cat devicename` |
| 70 | rm -f Puzzles.dmg |
| 71 | hdiutil convert -format UDCO raw.dmg -o Puzzles.dmg |
| 72 | rm -f raw.dmg devicename |
| 73 | !end |
| 74 | |
| 75 | # The `nullgame' source file is a largely blank one, which contains |
| 76 | # all the correct function definitions to compile and link, but |
| 77 | # which defines the null game in which nothing is ever drawn and |
| 78 | # there are no valid moves. Its main purpose is to act as a |
| 79 | # template for writing new game definition source files. I include |
| 80 | # it in the Makefile because it will be worse than useless if it |
| 81 | # ever fails to compile, so it's important that it should actually |
| 82 | # be built on a regular basis. |
| 83 | nullgame : [X] gtk COMMON nullgame |
| 84 | nullgame : [G] WINDOWS COMMON nullgame |