X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=make%2Fstepmake.make;h=3c3f64a3f5361403ced550a524c4f778f3b3a791;hb=6b256b18eecccaf45ce6d19260adb752db85aff0;hp=47b5cd6a9037658ac48aedeb984e9edab058187f;hpb=d6048913c2c793a6298a3e16a1a25c76711463b1;p=lilypond.git diff --git a/make/stepmake.make b/make/stepmake.make index 47b5cd6a90..3c3f64a3f5 100644 --- a/make/stepmake.make +++ b/make/stepmake.make @@ -1,36 +1,108 @@ # make/Stepmake.make -include $(depth)/make/toplevel-version.make +# If usescons=something then reroute to scons if user is using that. +ifdef usescons -# Don't try to outsmart us, you puny computer! -ifeq (0,${MAKELEVEL}) - MAKE:=$(MAKE) --no-builtin-rules +SCONS_USER = $(wildcard $(depth)/.sconsign) +ifeq ($(SCONS_USER),) +SCONS_USER = $(wildcard $(depth)/.sconf_temp) +endif +ifneq ($(SCONS_USER),) + +ifeq ($(strip $(depth)),..) +here = $(notdir $(CURDIR)) +else +ifeq ($(strip $(depth)),../..) +# ZUCHT? +# here = $(notdir $(dir $(CURDIR)))/$(notdir $(CURDIR)) +here = $(shell basename $$(dirname $(CURDIR)))/$(notdir $(CURDIR)) +endif +endif + +MAKE_TARGETS = config deb diff dist distclean doc release po \ +po-replace po-update all clean check default exe help install lib web \ +web-install web-clean TAGS + +$(MAKE_TARGETS): scons + +# To make this trickery complete, we could have ./configure remove +# traces of scons configuration. +scons: + @echo "warning: $(SCONS_USER) detected, rerouting to scons" + cd $(depth) && scons $(here) $(MAKECMDGOALS) + false +endif endif -.SUFFIXES: +include $(depth)/make/toplevel-version.make + +# 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 -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 packageg +# 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: