summaryrefslogtreecommitdiff
path: root/solenv/gbuild/source_and_rerun.mk
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/gbuild/source_and_rerun.mk')
-rw-r--r--solenv/gbuild/source_and_rerun.mk23
1 files changed, 19 insertions, 4 deletions
diff --git a/solenv/gbuild/source_and_rerun.mk b/solenv/gbuild/source_and_rerun.mk
index 418acc593c17..1fe62c89eaa2 100644
--- a/solenv/gbuild/source_and_rerun.mk
+++ b/solenv/gbuild/source_and_rerun.mk
@@ -1,13 +1,28 @@
gb_MAKEFILEDIR:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+$(info gb_PARTIALBUILD $(gb_PARTIALBUILD))
+ifneq ($(strip $(gb_PARTIALBUILD)),)
+
+SRCDIR:=$(realpath $(gb_MAKEFILEDIR)/..)
+gb_SourceEnvAndRecurse_reconfigure=true
+
+else
+
+SRCDIR:=$(realpath $(gb_MAKEFILEDIR))
+gb_SourceEnvAndRecurse_reconfigure=$(MAKE) -f $(firstword $(MAKEFILE_LIST)) $(SRCDIR)/Env.Host.sh
+
+endif
+
source-env-and-recurse:
- @if test -f $(gb_MAKEFILEDIR)/config.mk; then . $(gb_MAKEFILEDIR)/config.mk; else if test -f $(gb_MAKEFILEDIR)/../config.mk ; then . $(gb_MAKEFILEDIR)/../config.mk; fi; fi && \
- if test -f $(gb_MAKEFILEDIR)/Env.Host.sh; then . $(gb_MAKEFILEDIR)/Env.Host.sh; else if test -f $(gb_MAKEFILEDIR)/../Env.Host.sh; then . $(gb_MAKEFILEDIR)/../Env.Host.sh; fi ; fi && \
- if test -z "$${SOLARENV}"; then echo "No environment set!" 2>&1; exit 1; fi && \
+ $(gb_SourceEnvAndRecurse_reconfigure) && \
+ if test -f $(SRCDIR)/config.mk ; then . $(SRCDIR)/config.mk; fi && \
+ if test -f $(SRCDIR)/Env.Host.sh; then . $(SRCDIR)/Env.Host.sh; fi && \
+ if test -z "$${SOLARENV}"; then echo "no configuration found and could not create one" && exit 1; fi && \
$(MAKE) -f $(firstword $(MAKEFILE_LIST)) $(MAKECMDGOALS)
ifneq ($(strip $(MAKECMDGOALS)),)
+ifneq ($(MAKECMDGOALS),$(SRCDIR)/Env.Host.sh)
$(eval $(MAKECMDGOALS) : source-env-and-recurse)
endif
-
+endif