summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile20
-rw-r--r--buildlib/configure.mak35
-rw-r--r--buildlib/defaults.mak4
3 files changed, 41 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 33f407505..55d7ade6c 100644
--- a/Makefile
+++ b/Makefile
@@ -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