diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-07-07 14:29:53 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-07-07 14:29:53 +0000 |
commit | 0df6dd4d8aea6edc733de81fb7eec115ea59a36e (patch) | |
tree | e2f7056cb53c58c8ef5779450ac468091b2bd86d /Build/source/am/recurse.am | |
parent | 3675a91dd83af3eaa1c1a12e91af1e6c86f710f8 (diff) |
build system: additional Makefile fragments
better handling of dependencies for highly parallel make
git-svn-id: svn://tug.org/texlive/trunk@31127 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/am/recurse.am')
-rw-r--r-- | Build/source/am/recurse.am | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Build/source/am/recurse.am b/Build/source/am/recurse.am new file mode 100644 index 00000000000..060a23b534b --- /dev/null +++ b/Build/source/am/recurse.am @@ -0,0 +1,50 @@ +## am/recurse.am: Makefile fragment to configure and build subdirs. +## +## Copyright (C) 2013 Peter Breitenlohner <tex-live@tug.org> +## You may freely use, modify and/or distribute this file. +## +## requires $(recurse_this) and $(recurse_top). +## +# We must configure all subdirs since 'make dist' needs the Makefile. +# For those not required for the current set of configure options +# we append '--disable-build' so they can skip tests that would +# fail because, e.g., some required libraries were not built. +# Code inspired by automake's way to handle recursive targets. +## +CONFIG_AUX = $(recurse_top)subsubdir-conf.cmd + +all-local: recurse + +.PHONY: recurse +recurse: $(CONFIG_AUX) + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + list='$(CONF_SUBDIRS)'; for one_dir in $$list; do \ + if test ! -f $$one_dir/Makefile; then \ + test -d $$one_dir || $(MKDIR_P) $$one_dir; \ + cmd=`cat $(CONFIG_AUX) | sed "s,auxdir/auxsub,$(recurse_this)$$one_dir,g"`; \ + case " $(MAKE_SUBDIRS) " in \ + *" $$one_dir "*) skip=;; \ + *) skip=' --disable-build';; \ + esac; \ + (cd $$one_dir && echo "=== configuring in $$one_dir (`pwd`)" && \ + if $(AM_V_P); then echo "make: running $(SHELL) $$cmd$$skip"; fi && \ + CONFIG_SHELL=$(SHELL) && export CONFIG_SHELL && \ + eval $(SHELL) $$cmd$$skip $(cf_silent) || \ + { echo "=== configuring in $$one_dir failed"; exit 1; }) && \ + if test "x$$skip" = x; then \ + echo "Making all in $$one_dir" && \ + (cd $$one_dir && $(MAKE) $(AM_MAKEFLAGS) all); \ + fi || eval $$failcom; \ + fi; \ + done; test -z "$$fail" + +$(CONFIG_AUX): + @echo "configure in $(recurse_top)auxdir/auxsub failed to create the file $@" + exit 1 + |