diff options
Diffstat (limited to 'solenv/gbuild/source_and_rerun.mk')
-rw-r--r-- | solenv/gbuild/source_and_rerun.mk | 23 |
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 |