X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=make%2Fstepmake.make;h=3e7740506463e8d801bd519b2662b8c4fcea578b;hb=7244c2583a5ea8b89fd72a8b96d33511935cfe88;hp=e08af849a4453ef6d4541aaf6a2865d255693c9f;hpb=a41bc3e06fca46daa875419b5dc00dd958e1fde0;p=lilypond.git diff --git a/make/stepmake.make b/make/stepmake.make index e08af849a4..3e77405064 100644 --- a/make/stepmake.make +++ b/make/stepmake.make @@ -2,37 +2,87 @@ 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 + configuration=$(config) +else + ifeq ($(builddir),) + configuration=$(depth)/config$(CONFIGSUFFIX).make + else + configuration=$(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 -stepdir = $(depth)/$(stepmake)/stepmake +include $(configuration) + +outdir=$(outroot)/$(outbase) + +# why not generic ?? +config_h=$(builddir)/config$(CONFIGSUFFIX).h + +# 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: +-include $(addprefix $(depth)/make/,$(addsuffix -inclusions.make, $(LOCALSTEPMAKE_TEMPLATES))) + +-include $(addprefix $(stepdir)/,$(addsuffix -inclusions.make, $(STEPMAKE_TEMPLATES))) + + +include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES))) + +# ugh. need to do this because of PATH :=$(topdir)/..:$(PATH) include $(addprefix $(depth)/make/,$(addsuffix -vars.make, $(LOCALSTEPMAKE_TEMPLATES))) -include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES))) + + include $(addprefix $(depth)/make/,$(addsuffix -rules.make, $(LOCALSTEPMAKE_TEMPLATES))) include $(addprefix $(stepdir)/,$(addsuffix -rules.make, $(STEPMAKE_TEMPLATES))) include $(addprefix $(depth)/make/,$(addsuffix -targets.make, $(LOCALSTEPMAKE_TEMPLATES)))