diff options
-rw-r--r-- | Makefile | 20 | ||||
-rw-r--r-- | buildlib/configure.mak | 35 | ||||
-rw-r--r-- | buildlib/defaults.mak | 4 |
3 files changed, 41 insertions, 18 deletions
@@ -16,27 +16,13 @@ all headers library clean veryclean binary program doc: $(MAKE) -C gui $@ $(MAKE) -C doc $@ +# Some very common aliases .PHONY: maintainer-clean dist-clean distclean pristine sanity maintainer-clean dist-clean distclean pristine sanity: veryclean - # The startup target builds the necessary configure scripts. It should # be used after a CVS checkout. -.PHONY: startup -BUILD=build -CONVERTED=$(BUILD)/environment.mak $(BUILD)/include/config.h $(BUILD)/makefile -startup: configure $(CONVERTED) - -configure: aclocal.m4 configure.in - autoconf - -aclocal.m4: - aclocal -I buildlib - -$(BUILD)/config.status: configure - test -e $(BUILD) || mkdir $(BUILD) - (HERE=`pwd`; cd $(BUILD) && $$HERE/configure) +CONVERTED=environment.mak include/config.h makefile $(BUILD)/include/config.h: buildlib/config.h.in $(BUILD)/environment.mak: buildlib/environment.mak.in -$(CONVERTED): $(BUILD)/config.status - (cd $(BUILD) && ./config.status) +include buildlib/configure.mak diff --git a/buildlib/configure.mak b/buildlib/configure.mak new file mode 100644 index 000000000..64c3179d1 --- /dev/null +++ b/buildlib/configure.mak @@ -0,0 +1,35 @@ +# -*- make -*- + +# This make fragment is included by the toplevel make to handle configure +# and setup. It defines a target called startup that when run will init +# the build directory, generate configure from configure.in, create aclocal +# and has rules to run config.status should one of the .in files change. + +# Input +# BUILD - The build director +# CONVERTED - List of files output by configure $(BUILD) is prepended +# The caller must provide depends for these files +# It would be a fairly good idea to run this after a cvs checkout. +BUILD=build + +.PHONY: startup +startup: configure $(addprefix $(BUILD)/,$(CONVERTED)) + +configure: aclocal.m4 configure.in + autoconf +aclocal.m4: + aclocal -I buildlib +$(BUILD)/config.status: configure + test -e $(BUILD) || mkdir $(BUILD) + (HERE=`pwd`; cd $(BUILD) && $$HERE/configure) +$(CONVERTED): $(BUILD)/config.status + (cd $(BUILD) && ./config.status) + +# We include the environment if it exists and re-export it to configure. This +# allows someone to edit it and not have their changes blown away. +Env = $(wildcard $(BUILD)/environment.mak) +ifneq ($(words $(Env)),0) +include $(Env) +export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PICFLAGS +endif + diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak index 9b011301e..549be5385 100644 --- a/buildlib/defaults.mak +++ b/buildlib/defaults.mak @@ -18,7 +18,9 @@ # and then within the rule $(@F) gets back $(LOCAL)! Other rules will # have to use some other mechanism (filter perhaps?) The reason such # lengths are used is so that each directory can contain several 'instances' -# of any given module +# of any given module. I notice that the very latest gmake has the concept +# of local variables for rules. It is possible this feature in conjunction +# with the generated names will provide a very powerfull solution indeed! # A build directory is used by default, all generated items get put into # there. However unlike automake this is not done with a VPATH build |