summaryrefslogtreecommitdiff
path: root/solenv/gbuild/ExternalProject.mk
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/gbuild/ExternalProject.mk')
-rw-r--r--solenv/gbuild/ExternalProject.mk21
1 files changed, 20 insertions, 1 deletions
diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk
index 20c0973ac57b..6443af3320ce 100644
--- a/solenv/gbuild/ExternalProject.mk
+++ b/solenv/gbuild/ExternalProject.mk
@@ -180,6 +180,16 @@ $(call gb_ExternalProject_get_preparation_target,$(1)) : \
endef
+# Use the gcc wrappers for a autoconf based project
+#
+# gb_ExternalProject_register_targets project state_target
+define gb_ExternalProject_use_autoconf
+ifeq ($(COM),MSC)
+$(call gb_ExternalProject_get_preparation_target,$(1)) : $(call gb_Executable_get_runtime_dependencies,gcc-wrapper) \
+ $(call gb_Executable_get_runtime_dependencies,g++-wrapper)
+$(call gb_ExternalProject_get_state_target,$(1),$(2)): WRAPPERS := $(AUTOCONF_WRAPPERS)
+endif
+endef
# Run a target command
#
@@ -190,8 +200,17 @@ endef
# default log_filename is <run_target>.log
#
+AUTOCONF_WRAPPERS := \
+ REAL_CC="$(shell cygpath -w $(CC))" \
+ CC="$(call gb_Executable_get_target,gcc-wrapper)" \
+ REAL_CXX="$(shell cygpath -w $(CXX))" \
+ CXX="$(call gb_Executable_get_target,g++-wrapper)" \
+ LD="$(shell cygpath -w $(COMPATH)/bin/link.exe) -nologo"
+
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))
+$(call gb_Helper_print_on_error,cd $(EXTERNAL_WORKDIR)/$(3) && \
+ $(if $(filter MSC,$(COM)),$(if $(WRAPPERS),export $(WRAPPERS) &&)) \
+ $(2) && touch $@,$(EXTERNAL_WORKDIR)/$(if $(3),$(3)/,)$(if $(4),$(4),$(1).log))
endef
# vim: set noet sw=4 ts=4: