diff options
Diffstat (limited to 'solenv/gbuild')
-rw-r--r-- | solenv/gbuild/ExternalProject.mk | 14 | ||||
-rw-r--r-- | solenv/gbuild/Helper.mk | 4 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.mk | 6 |
3 files changed, 24 insertions, 0 deletions
diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk index ca49c7f10592..20c0973ac57b 100644 --- a/solenv/gbuild/ExternalProject.mk +++ b/solenv/gbuild/ExternalProject.mk @@ -180,4 +180,18 @@ $(call gb_ExternalProject_get_preparation_target,$(1)) : \ endef + +# Run a target command +# +# This provide a wrapper that cange to the right directory +# touch the 'target' if sucessfull and also provide +# the ability to hide the output if there is no failure +# gb_ExternalProject_run,run_target,command,optional_extra_sub_directory,optional_log_filename) +# default log_filename is <run_target>.log +# + +define gb_ExternalProject_run +$(call gb_Helper_print_on_error,cd $(EXTERNAL_WORKDIR)/$(3) && $(2) && touch $@,$(EXTERNAL_WORKDIR)/$(if $(3),$(3)/,)$(if $(4),$(4),$(1).log)) +endef + # vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk index 8f49e20d2151..0a732c2270db 100644 --- a/solenv/gbuild/Helper.mk +++ b/solenv/gbuild/Helper.mk @@ -233,4 +233,8 @@ define gb_Helper_optional_for_host $(if $(filter $(1),$(BUILD_TYPE_FOR_HOST)),$(2)) endef +define gb_Helper_print_on_error +$(if $(gb_QUIET_EXTERNAL),( $(1) ) > $(2) 2>&1 || ( cat $(2) && false ),$(1) ) +endef + # vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index 9ef8d5322c8b..80a3f0cc5335 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -163,6 +163,12 @@ else gb_KEEP_PRISTINE := $(false) endif +ifeq ($(findstring s,$(MAKEFLAGS)),) +gb_QUIET_EXTERNAL := $(false) +else +gb_QUIET_EXTERNAL := $(true) +endif + # save user-supplied flags for latter use # TODO remove after the old build system is abolished ifneq ($(strip $(ENVCFLAGS)),) |