From b47c9b4a2b6c7cfb58d27d502bbf42fe31731dcd Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Wed, 1 Nov 2017 11:26:21 +0100 Subject: [PATCH] gbuild: ExternalProject: improve NMAKE handling - move actual variables into com_MSC_class.mk - use export ... && to set the variables, so they affect all subsequent commands, not just the first one - clear MAKE as well, as that is apparently used by nmake, but can only point to GNU make - set CC, because nmake apparently can interpret C:/Progra~1/.../cl.exe etc. etc. as a "C:" command with some additional arguments which only changes the current directory, without even invoking the shell, which tends to cause profanities to be uttered for extended periods of time Change-Id: Ia7b1e6a70d6ac116d4ef0312d2aa1a4747fb8cbf Reviewed-on: https://gerrit.libreoffice.org/44159 Tested-by: Jenkins Reviewed-by: Michael Stahl --- solenv/gbuild/ExternalProject.mk | 2 +- solenv/gbuild/platform/com_MSC_class.mk | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk index e476b196301a..402437d6f567 100644 --- a/solenv/gbuild/ExternalProject.mk +++ b/solenv/gbuild/ExternalProject.mk @@ -220,7 +220,7 @@ $(if $(findstring YES,$(UNPACKED_IS_BIN_TARBALL)),\ $(call gb_Helper_print_on_error,cd $(EXTERNAL_WORKDIR)/$(3) && \ unset Platform && \ $(if $(WRAPPERS),export $(WRAPPERS) &&) \ - $(if $(NMAKE),INCLUDE="$(gb_ExternalProject_INCLUDE)" LIB="$(ILIB)" MAKEFLAGS=) \ + $(if $(NMAKE),export $(NMAKE) &&) \ $(2) && touch $@,$(EXTERNAL_WORKDIR)/$(if $(3),$(3)/,)$(if $(4),$(4),$(1).log)) ) endef diff --git a/solenv/gbuild/platform/com_MSC_class.mk b/solenv/gbuild/platform/com_MSC_class.mk index 860f35200661..c5c2f1d84b6a 100644 --- a/solenv/gbuild/platform/com_MSC_class.mk +++ b/solenv/gbuild/platform/com_MSC_class.mk @@ -534,11 +534,11 @@ $(call gb_ExternalProject_get_preparation_target,$(1)) : $(call gb_Executable_ge $(call gb_ExternalProject_get_state_target,$(1),$(2)): WRAPPERS := $(gb_AUTOCONF_WRAPPERS) endef -# Set INCLUDE and LIB variables and unset MAKEFLAGS when using nmake +# Set INCLUDE and LIB variables and unset MAKE/MAKEFLAGS when using nmake # # gb_ExternalProject_use_nmake project state_target define gb_ExternalProject_use_nmake -$(call gb_ExternalProject_get_state_target,$(1),$(2)): NMAKE := $(true) +$(call gb_ExternalProject_get_state_target,$(1),$(2)): NMAKE := $(gb_NMAKE_VARS) endef # if ccache is enabled, then split it and use lastword as REAL_FOO @@ -556,6 +556,13 @@ gb_AUTOCONF_WRAPPERS = \ gb_ExternalProject_INCLUDE := \ $(subst -I,,$(subst $(WHITESPACE),;,$(subst -I. , ,$(SOLARINC)))) +gb_NMAKE_VARS = \ + CC="$(shell cygpath -w $(filter-out -%,$(CC))) $(filter -%,$(CC))" \ + INCLUDE="$(gb_ExternalProject_INCLUDE)" \ + LIB="$(ILIB)" \ + MAKEFLAGS= \ + MAKE= + # InstallScript class gb_InstallScript_EXT := .inf -- 2.11.4.GIT