Support building via autoconf and automake. mkfiles.pl now outputs a

Makefile.am, and there's a new mkauto.sh which builds a corresponding
configure script.

The old makefile has been renamed from 'Makefile' to 'Makefile.gtk',
indicating that the intended new _default_ approach is to use the
autoconf world. Makefile.gtk is provided as an emergency fallback in
case anything fails with the new stuff that used to work with it.

The new configure script does not support the same $(BINPREFIX) system
as the old Makefile did. However, as I understand it, it should be
possible to configure using --program-prefix="sgt-" (for example) and
then the binaries should all be renamed appropriately at install time.

The Makefile.am is quite painful. The Puzzles codebase relies heavily
on compiling individual object files multiple times with different the
cpp flags per build deliverable (program or library) and not per
source file. Solution: anything built with non-default compile options
has to go in its own little library. But that doesn't work either in
the general case, because as soon as you have more than one such
library linked into an application, Unix ld semantics bite you if the
objects in the libraries both refer to each other. So I ended up
building all those little libraries but not _using_ them - instead the
link commands for the programs needing those objects refer to the
objects directly, under the silly names that automake gives them.
(That's less fragile than it sounds, because it does _document_ the
names of the intermediate object files. But still, yuck.)

[originally from svn r9886]
This commit is contained in:
Simon Tatham
2013-06-30 08:58:45 +00:00
parent 7ae22afaf3
commit b375232d7d
7 changed files with 215 additions and 9 deletions

View File

@ -3,19 +3,27 @@
module puzzles
# Start by substituting the right version number in configure.ac.
in puzzles do perl -i~ -pe 's/rNNNN/r$(revision)/' configure.ac
in puzzles do rm configure.ac~
# First build some local binaries, to run the icon build.
in puzzles do perl mkfiles.pl
in puzzles do perl mkfiles.pl -U
in puzzles do make
# Now build the screenshots and icons.
in puzzles/icons do xvfb-run -s "-screen 0 1024x768x24" make web winicons gtkicons
# Destroy the local binaries and autoconf detritus, mostly to avoid
# wasting network bandwidth by transferring them to the delegate
# servers.
in puzzles do make distclean
# Re-run mkfiles.pl now that it knows the icons are there.
in puzzles do perl mkfiles.pl
# Destroy the local binaries, mostly to avoid wasting network
# bandwidth by transferring them to the delegate servers.
in puzzles do make clean
# Rebuild the configure script.
in puzzles do ./mkauto.sh
# Build the OS X .dmg archive.
# 2012-04-03: commented out because my Mac is dead.