]> git.donarmstrong.com Git - lilypond.git/blobdiff - make/stepmake.make
* SConstruct: Further development.
[lilypond.git] / make / stepmake.make
index 07d293704e107cd0ba2a417d1153fb289c76a316..666099ee2e5b3752920f1f1b5d87bb935dd49a61 100644 (file)
@@ -2,32 +2,73 @@
 
 include $(depth)/make/toplevel-version.make
 
-# Don't try to outsmart us, you puny computer!
-ifeq (0,${MAKELEVEL})
-  MAKE:=$(MAKE) --no-builtin-rules
+# Use alternate configurations alongside eachother:
+#
+#     ./configure --enable-config=debug
+#     make conf=debug
+#
+# uses config-debug.make and config-debug.h; output goes to out-debug.
+#
+ifdef conf
+  CONFIGSUFFIX=-$(conf)
 endif
-.SUFFIXES:
-
 
-ifndef config
-  configuration=config
+# Use same configuration, but different output directory:
+#
+#     make out=www
+#
+# uses config.make and config.h; output goes to out-www.
+#
+ifdef out
+  outbase=out-$(out)
 else
-  configuration=config-$(config)
+  outbase=out$(CONFIGSUFFIX)
 endif
 
-include $(depth)/$(configuration).make
+ifdef config
+  config_make=$(config)
+else
+  ifeq ($(builddir),)
+    config_make=$(depth)/config$(CONFIGSUFFIX).make
+  else
+    config_make=$(builddir)/config$(CONFIGSUFFIX).make
+  endif
+endif
 
-ifdef CONFIGSUFFIX
-outdir=out-$(CONFIGSUFFIX)
+ifeq ($(builddir),)
+  outroot=.
 else
-outdir=out
+  outroot=$(builddir)/$(patsubst $(shell cd $(depth); pwd)%,%,$(pwd))
 endif
 
+include $(config_make)
+
+outdir=$(outroot)/$(outbase)
+
+# why not generic ?? 
+config_h=$(builddir)/config$(CONFIGSUFFIX).hh
+
+# The outdir that was configured for: best guess to find binaries
+outconfbase=out$(CONFIGSUFFIX)
+outconfdir=$(outroot)/$(outconfbase)
+
+# user package
 stepdir = $(stepmake)/stepmake
+# for stepmake package
+# stepdir = $(depth)/stepmake
 
 STEPMAKE_TEMPLATES := generic $(STEPMAKE_TEMPLATES) 
 LOCALSTEPMAKE_TEMPLATES:= generic $(LOCALSTEPMAKE_TEMPLATES)
 
+# Don't try to outsmart us, you puny computer!
+# Well, UGH.  This only removes builtin rules from
+# subsequent $(MAKE)s, *not* from the current run!
+ifeq ($(BUILTINS_REMOVED),)
+  export BUILTINS_REMOVED = yes
+  MAKE:=$(MAKE) --no-builtin-rules
+  include $(stepdir)/no-builtin-rules.make
+endif
+.SUFFIXES:
 
 all: