Преглед изворни кода

Configuration fragment
Author: jgg
Date: 1998-11-05 00:32:06 GMT
Configuration fragment

Arch Librarian пре 22 година
родитељ
комит
46976ca4e7
3 измењених фајлова са 41 додато и 18 уклоњено
  1. 3 17
      Makefile
  2. 35 0
      buildlib/configure.mak
  3. 3 1
      buildlib/defaults.mak

+ 3 - 17
Makefile

@@ -16,27 +16,13 @@ all headers library clean veryclean binary program doc:
 	$(MAKE) -C gui $@
 	$(MAKE) -C gui $@
 	$(MAKE) -C doc $@
 	$(MAKE) -C doc $@
 
 
+# Some very common aliases
 .PHONY: maintainer-clean dist-clean distclean pristine sanity 
 .PHONY: maintainer-clean dist-clean distclean pristine sanity 
 maintainer-clean dist-clean distclean pristine sanity: veryclean
 maintainer-clean dist-clean distclean pristine sanity: veryclean
 
 
-
 # The startup target builds the necessary configure scripts. It should
 # The startup target builds the necessary configure scripts. It should
 # be used after a CVS checkout.
 # 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)/include/config.h: buildlib/config.h.in
 $(BUILD)/environment.mak: buildlib/environment.mak.in
 $(BUILD)/environment.mak: buildlib/environment.mak.in
-$(CONVERTED): $(BUILD)/config.status
-	(cd $(BUILD) && ./config.status)
+include buildlib/configure.mak

+ 35 - 0
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
+

+ 3 - 1
buildlib/defaults.mak

@@ -18,7 +18,9 @@
 # and then within the rule $(@F) gets back $(LOCAL)! Other rules will
 # and then within the rule $(@F) gets back $(LOCAL)! Other rules will
 # have to use some other mechanism (filter perhaps?) The reason such
 # have to use some other mechanism (filter perhaps?) The reason such
 # lengths are used is so that each directory can contain several 'instances'
 # 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
 # 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
 # there. However unlike automake this is not done with a VPATH build