[Libreoffice-commits] core.git: solenv/gbuild

Luboš Luňák (via logerrit) logerrit at kemper.freedesktop.org
Thu Apr 11 10:21:18 UTC 2019


 solenv/gbuild/LinkTarget.mk             |   27 +++++++------
 solenv/gbuild/PrecompiledHeaders.mk     |   65 ++++++++++++++++++--------------
 solenv/gbuild/TargetLocations.mk        |    8 +--
 solenv/gbuild/platform/com_GCC_class.mk |   12 ++---
 solenv/gbuild/platform/com_MSC_class.mk |    6 +-
 5 files changed, 67 insertions(+), 51 deletions(-)

New commits:
commit 3d3826dae92a8bd4671717d92f497db57f6424d1
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Sun Apr 7 12:06:19 2019 +0200
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Thu Apr 11 12:21:08 2019 +0200

    fix getting correct debug/nodebug PCH file with selective debuginfo
    
    Since debuginfo enabled/disabled is per-linktarget, the rules need
    to be per-linktarget as well, and so instead of one generic rule
    there needs to be a define generating one rule per each linktarget.
    
    Change-Id: I9423c4a86bc02aa3c0bf816f47e3c3d43ff03b23
    Reviewed-on: https://gerrit.libreoffice.org/70370
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index 33579bf0e99f..3e2d19e58956 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -271,7 +271,7 @@ define gb_CxxObject__set_pchflags
 ifeq ($(gb_ENABLE_PCH),$(true))
 ifneq ($(strip $$(PCH_NAME)),)
 ifeq ($$(sort $$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_EXCEPTIONFLAGS)),$$(sort $$(T_CXXFLAGS) $$(T_CXXFLAGS_APPEND) $$(DEFS)))
-$$@ : PCHFLAGS := $$(call gb_PrecompiledHeader_get_enableflags,$$(PCH_NAME))
+$$@ : PCHFLAGS := $$(call gb_PrecompiledHeader_get_enableflags,$$(PCH_NAME),$$(PCH_LINKTARGETMAKEFILENAME))
 else
 $$(info No precompiled header available for $$*.cxx .)
 $$(info precompiled header flags : $$(sort $$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_EXCEPTIONFLAGS)))
@@ -777,6 +777,7 @@ $(call gb_LinkTarget_get_target,$(1)) : T_LIBS :=
 $(call gb_LinkTarget_get_target,$(1)) : TARGETTYPE :=
 $(call gb_LinkTarget_get_target,$(1)) : LIBRARY_X64 :=
 $(call gb_LinkTarget_get_target,$(1)) : PCH_NAME :=
+$(call gb_LinkTarget_get_target,$(1)) : PCH_LINKTARGETMAKEFILENAME :=
 $(call gb_LinkTarget_get_target,$(1)) : PCHOBJS :=
 $(call gb_LinkTarget_get_target,$(1)) : PCHOBJEX :=
 $(call gb_LinkTarget_get_target,$(1)) : PCHOBJNOEX :=
@@ -816,6 +817,8 @@ gb_LinkTarget_CXX_SUFFIX_$(call gb_LinkTarget__get_workdir_linktargetname,$(1))
 # installed linktargets need a rule to build!
 $(if $(findstring $(INSTDIR),$(1)),$(call gb_LinkTarget__make_installed_rule,$(1)))
 
+$(call gb_PrecompiledHeader_generate_timestamp_rule,$(2))
+
 endef
 
 # call gb_LinkTarget_set_soversion_script,linktarget,soversionscript
@@ -1119,7 +1122,7 @@ $(call gb_CxxObject_get_target,$(2)) : T_CXXFLAGS += $(3)
 $(call gb_CxxObject_get_target,$(2)) : \
 	OBJECTOWNER := $(call gb_Object__owner,$(2),$(1))
 ifeq ($(gb_ENABLE_PCH),$(true))
-$(call gb_CxxObject_get_target,$(2)) : $(call gb_PrecompiledHeader_get_timestamp,$(call gb_LinkTarget__get_workdir_linktargetname,$(1)))
+$(call gb_CxxObject_get_target,$(2)) : $(call gb_PrecompiledHeader_get_timestamp,$(4))
 endif
 
 ifeq ($(gb_FULLDEPS),$(true))
@@ -1256,7 +1259,7 @@ $(call gb_GenCxxObject_get_target,$(2)) : \
 	OBJECTOWNER := $(call gb_Object__owner,$(2),$(1))
 $(call gb_GenCxxObject_get_target,$(2)) : GEN_CXX_SOURCE := $(call gb_GenCxxObject_get_source,$(2),$(1))
 ifeq ($(gb_ENABLE_PCH),$(true))
-$(call gb_GenCxxObject_get_target,$(2)) : $(call gb_PrecompiledHeader_get_timestamp,$(call gb_LinkTarget__get_workdir_linktargetname,$(1)))
+$(call gb_GenCxxObject_get_target,$(2)) : $(call gb_PrecompiledHeader_get_timestamp,$(4))
 endif
 
 ifeq ($(gb_FULLDEPS),$(true))
@@ -1502,31 +1505,33 @@ endef
 # call gb_LinkTarget__set_precompiled_header_impl,linktarget,pchcxxfile,pchtarget,linktargetmakefilename
 define gb_LinkTarget__set_precompiled_header_impl
 $(call gb_LinkTarget_get_clean_target,$(1)) : $(call gb_PrecompiledHeader_get_clean_target,$(3))
-$(call gb_PrecompiledHeader_get_target,$(3)) : $(2).cxx
+$(call gb_PrecompiledHeader_get_target,$(3),$(4)) : $(2).cxx
 
-$(call gb_PrecompiledHeader_get_target,$(3)) : $(call gb_LinkTarget_get_headers_target,$(1))
+$(call gb_PrecompiledHeader_get_target,$(3),$(4)) : $(call gb_LinkTarget_get_headers_target,$(1))
 
 $(call gb_LinkTarget_get_target,$(1)) : PCH_NAME := $(3)
-$(call gb_LinkTarget_get_target,$(1)) : PCHOBJEX = $(call gb_PrecompiledHeader_get_objectfile, $(call gb_PrecompiledHeader_get_target,$(3)))
+$(call gb_LinkTarget_get_target,$(1)) : PCH_LINKTARGETMAKEFILENAME := $(4)
+$(call gb_LinkTarget_get_target,$(1)) : PCHOBJEX = $(call gb_PrecompiledHeader_get_objectfile, $(call gb_PrecompiledHeader_get_target,$(3),$(4)))
 $(call gb_LinkTarget_get_target,$(1)) : PCHOBJS = $$(PCHOBJEX)
 
 $(call gb_LinkTarget_get_target,$(1)) : PCH_DEFS := $$(DEFS)
 $(call gb_LinkTarget_get_target,$(1)) : PCH_CXXFLAGS := $$(T_CXXFLAGS) $(call gb_LinkTarget__get_cxxflags,$(4))
 
-$(call gb_PrecompiledHeader_get_target,$(3)) : VISIBILITY :=
+$(call gb_PrecompiledHeader_get_target,$(3),$(4)) : VISIBILITY :=
 
-$(call gb_PrecompiledHeader_get_timestamp,$(call gb_LinkTarget__get_workdir_linktargetname,$(1))) : $(call gb_PrecompiledHeader_get_target,$(3))
+$(call gb_PrecompiledHeader_get_timestamp,$(4)) : $(call gb_PrecompiledHeader_get_target,$(3),$(4))
 
 ifeq ($(gb_FULLDEPS),$(true))
--include $(call gb_PrecompiledHeader_get_dep_target,$(3)) 
+-include $(call gb_PrecompiledHeader_get_dep_target,$(3),$(4))
 endif
 
 endef
 
-# call gb_LinkTarget_set_precompiled_header,linktarget,pchcxxfile,linktargetmakefilename
+# call gb_LinkTarget_set_precompiled_header,linktarget,pchcxxfile,,linktargetmakefilename
 define gb_LinkTarget_set_precompiled_header
 ifeq ($(gb_ENABLE_PCH),$(true))
 $(call gb_LinkTarget__set_precompiled_header_impl,$(1),$(2),$(notdir $(2)),$(4))
+$(call gb_PrecompiledHeader_generate_rules,$(notdir $(2)),$(4))
 endif
 
 endef
@@ -1590,7 +1595,7 @@ define gb_LinkTarget_set_visibility_default
 $(call gb_LinkTarget_get_target,$(1)) : VISIBILITY := default
 ifeq ($(gb_ENABLE_PCH),$(true))
 ifneq ($(strip $$(PCH_NAME)),)
-$(call gb_PrecompiledHeader_get_target,$$(PCH_NAME)) : VISIBILITY := default
+$(call gb_PrecompiledHeader_get_target,$$(PCH_NAME),$$(PCH_LINKTARGETMAKEFILENAME)) : VISIBILITY := default
 endif
 endif
 
diff --git a/solenv/gbuild/PrecompiledHeaders.mk b/solenv/gbuild/PrecompiledHeaders.mk
index 2da085512ec2..e5635e816b42 100644
--- a/solenv/gbuild/PrecompiledHeaders.mk
+++ b/solenv/gbuild/PrecompiledHeaders.mk
@@ -23,42 +23,53 @@
 ifeq ($(gb_ENABLE_PCH),$(true))
 
 # Use different PCH file depending on whether we use debugging symbols.
-# TODO: This doesn't work because T_SYMBOLS is not expanded as/when necessary.
-gb_PrecompiledHeader__get_debugdir := $(if $(filter $(true),$(T_SYMBOLS)),debug,nodebug)
+gb_PrecompiledHeader__get_debugdir = $(if $(call gb_LinkTarget__symbols_enabled,$(1)),debug,nodebug)
 
-$(call gb_PrecompiledHeader_get_dep_target,%) :
-	$(call gb_Helper_abbreviate_dirs,\
-		mkdir -p $(dir $@) && \
-		echo "$(call gb_PrecompiledHeader_get_target,$*) : $(gb_Helper_PHONY)" > $@)
+# IMPORTANT: Since these defines get expanded, every $ needs to be doubled to $$, except
+# for $(1)'s and things that are constant.
+# The defines are needed to get the right version of gb_PrecompiledHeader__get_debugdir.
+
+# $(call gb_PrecompiledHeader_generate_rules,pchtarget,linktargetmakefilename)
+define gb_PrecompiledHeader_generate_rules
+
+$(call gb_PrecompiledHeader_get_dep_target,$(1),$(2)) :
+	$$(call gb_Helper_abbreviate_dirs,\
+		mkdir -p $$(dir $$@) && \
+		echo "$$(call gb_PrecompiledHeader_get_target,$(1),$(2)) : $$(gb_Helper_PHONY)" > $$@)
 
 # despite this being only one .d file, need to run concat-deps on it to
 # re-write external headers from UnpackedTarball
-$(call gb_PrecompiledHeader_get_target,%) :
-	rm -f $@
-	$(call gb_PrecompiledHeader__command,$@,$*,$<,$(PCH_DEFS),$(PCH_CXXFLAGS) $(gb_PrecompiledHeader_EXCEPTIONFLAGS),$(INCLUDE))
-	$(SHA256SUM) $@ >$@.sum
+$(call gb_PrecompiledHeader_get_target,$(1),$(2)) :
+	rm -f $$@
+	$$(call gb_PrecompiledHeader__command,$$@,$(1),$$<,$$(PCH_DEFS),$$(PCH_CXXFLAGS) $$(gb_PrecompiledHeader_EXCEPTIONFLAGS),$$(INCLUDE),$(2))
+	$(SHA256SUM) $$@ >$$@.sum
 ifeq ($(gb_FULLDEPS),$(true))
-	$(call gb_Helper_abbreviate_dirs,\
-		RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),200,$(call gb_PrecompiledHeader_get_dep_target_tmp,$*)) && \
-		$(call gb_Executable_get_command,concat-deps) $${RESPONSEFILE} \
-			> $(call gb_PrecompiledHeader_get_dep_target,$*) && \
-		rm -f $${RESPONSEFILE} $(call gb_PrecompiledHeader_get_dep_target_tmp,$*))
+	$$(call gb_Helper_abbreviate_dirs,\
+		RESPONSEFILE=$$(call var2file,$$(shell $$(gb_MKTEMP)),200,$$(call gb_PrecompiledHeader_get_dep_target_tmp,$(1),$(2))) && \
+		$$(call gb_Executable_get_command,concat-deps) $$$${RESPONSEFILE} \
+			> $$(call gb_PrecompiledHeader_get_dep_target,$(1),$(2)) && \
+		rm -f $$$${RESPONSEFILE} $$(call gb_PrecompiledHeader_get_dep_target_tmp,$(1),$(2)))
 endif
 
-.PHONY : $(call gb_PrecompiledHeader_get_clean_target,%)
-$(call gb_PrecompiledHeader_get_clean_target,%) :
-	$(call gb_Output_announce,$*,$(false),PCH,1)
-	-$(call gb_Helper_abbreviate_dirs,\
-		rm -f $(call gb_PrecompiledHeader_get_target,$*) \
-			$(call gb_PrecompiledHeader_get_target,$*).obj \
-			$(call gb_PrecompiledHeader_get_target,$*).pdb \
-			$(call gb_PrecompiledHeader_get_target,$*).sum \
-			$(call gb_PrecompiledHeader_get_timestamp,$*) \
-			$(call gb_PrecompiledHeader_get_dep_target,$*))
+.PHONY : $(call gb_PrecompiledHeader_get_clean_target,$(1))
+$(call gb_PrecompiledHeader_get_clean_target,$(1)) :
+	$$(call gb_Output_announce,$(1),$(false),PCH,1)
+	-$$(call gb_Helper_abbreviate_dirs,\
+		rm -f $$(call gb_PrecompiledHeader_get_target,$(1),$(2)) \
+			$$(call gb_PrecompiledHeader_get_target,$(1),$(2)).obj \
+			$$(call gb_PrecompiledHeader_get_target,$(1),$(2)).pdb \
+			$$(call gb_PrecompiledHeader_get_target,$(1),$(2)).sum \
+			$$(call gb_PrecompiledHeader_get_timestamp,$(2)) \
+			$$(call gb_PrecompiledHeader_get_dep_target,$(1),$(2)))
+
+endef
 
 endif
 
-$(call gb_PrecompiledHeader_get_timestamp,%) :
-	mkdir -p $(dir $@) && touch $@
+# $(call gb_PrecompiledHeader_generate_timestamp_rule,linktargetmakefilename)
+define gb_PrecompiledHeader_generate_timestamp_rule
+$(call gb_PrecompiledHeader_get_timestamp,$(1)) :
+	mkdir -p $$(dir $$@) && touch $$@
+endef
 
 # vim: set noet sw=4:
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 5aa3125b8d2b..02df6229a541 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -146,10 +146,10 @@ gb_Package_get_target_for_build = $(WORKDIR_FOR_BUILD)/Package/$(1).filelist
 gb_PackageSet_get_target = $(WORKDIR)/PackageSet/$(1).filelist
 gb_PackageInfo_get_target = $(WORKDIR)/PackageInfo
 gb_Postprocess_get_target = $(WORKDIR)/Postprocess/$(1)
-gb_PrecompiledHeader_get_dep_target = $(WORKDIR)/Dep/PrecompiledHeader/$(call gb_PrecompiledHeader__get_debugdir)/$(1).hxx.gch.d
-gb_PrecompiledHeader_get_dep_target_tmp = $(call gb_PrecompiledHeader_get_dep_target,$(1)).tmp
-gb_PrecompiledHeader_get_target = $(WORKDIR)/PrecompiledHeader/$(call gb_PrecompiledHeader__get_debugdir)/$(1).hxx.gch
-gb_PrecompiledHeader_get_timestamp = $(WORKDIR)/PrecompiledHeader/$(call gb_PrecompiledHeader__get_debugdir)/Timestamps/$(1)
+gb_PrecompiledHeader_get_dep_target = $(WORKDIR)/Dep/PrecompiledHeader/$(call gb_PrecompiledHeader__get_debugdir,$(2))/$(1).hxx.gch.d
+gb_PrecompiledHeader_get_dep_target_tmp = $(call gb_PrecompiledHeader_get_dep_target,$(1),$(2)).tmp
+gb_PrecompiledHeader_get_target = $(WORKDIR)/PrecompiledHeader/$(call gb_PrecompiledHeader__get_debugdir,$(2))/$(1).hxx.gch
+gb_PrecompiledHeader_get_timestamp = $(WORKDIR)/PrecompiledHeader/$(call gb_PrecompiledHeader__get_debugdir,$(1))/Timestamps/$(1)
 gb_PropertiesTranslateTarget_get_target = $(WORKDIR)/PropertiesTranslateTarget/$(1).properties
 gb_Pyuno_get_final_target = $(WORKDIR)/Pyuno/$(1).final
 gb_Pyuno_get_target = $(WORKDIR)/Pyuno/$(1).done
diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk
index a5059152a0cb..282aacbfd9ec 100644
--- a/solenv/gbuild/platform/com_GCC_class.mk
+++ b/solenv/gbuild/platform/com_GCC_class.mk
@@ -79,10 +79,10 @@ endef
 # PrecompiledHeader class
 
 ifeq ($(COM_IS_CLANG),TRUE)
-gb_PrecompiledHeader_get_enableflags = -include-pch $(call gb_PrecompiledHeader_get_target,$(1))
+gb_PrecompiledHeader_get_enableflags = -include-pch $(call gb_PrecompiledHeader_get_target,$(1),$(2))
 else
-gb_PrecompiledHeader_get_enableflags = -include $(notdir $(subst .gch,,$(call gb_PrecompiledHeader_get_target,$(1)))) \
-				       -I $(dir $(call gb_PrecompiledHeader_get_target,$(1)))
+gb_PrecompiledHeader_get_enableflags = -include $(notdir $(subst .gch,,$(call gb_PrecompiledHeader_get_target,$(1),$(2)))) \
+				       -I $(dir $(call gb_PrecompiledHeader_get_target,$(1),$(2)))
 endif
 
 # Clang and gcc do not need any extra .o file for PCH
@@ -91,7 +91,7 @@ gb_PrecompiledHeader_get_objectfile =
 define gb_PrecompiledHeader__command
 $(call gb_Output_announce,$(2),$(true),PCH,1)
 $(call gb_Helper_abbreviate_dirs,\
-	mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \
+	mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2),$(7))) && \
 	$(gb_CXX) \
 		-x c++-header \
 		$(4) $(5) \
@@ -99,10 +99,10 @@ $(call gb_Helper_abbreviate_dirs,\
 		$(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \
 		$(if $(EXTERNAL_CODE),$(gb_CXXFLAGS_Wundef),$(gb_DEFS_INTERNAL)) \
 		$(6) \
-		$(call gb_cxx_dep_generation_options,$(1),$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2))) \
+		$(call gb_cxx_dep_generation_options,$(1),$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2),$(7))) \
 		-c $(patsubst %.cxx,%.hxx,$(3)) \
 		-o$(1) \
-		$(call gb_cxx_dep_copy,$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2))) \
+		$(call gb_cxx_dep_copy,$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2),$(7))) \
 		)
 endef
 
diff --git a/solenv/gbuild/platform/com_MSC_class.mk b/solenv/gbuild/platform/com_MSC_class.mk
index 30ebb82c7e39..346c67cd7f7c 100644
--- a/solenv/gbuild/platform/com_MSC_class.mk
+++ b/solenv/gbuild/platform/com_MSC_class.mk
@@ -68,7 +68,7 @@ endef
 
 gb_PrecompiledHeader_get_enableflags = -Yu$(1).hxx \
 	-FI$(1).hxx \
-	-Fp$(call gb_PrecompiledHeader_get_target,$(1)) \
+	-Fp$(call gb_PrecompiledHeader_get_target,$(1),$(2)) \
 	$(gb_PCHWARNINGS)
 
 # MSVC PCH needs extra .obj created during the creation of the PCH file
@@ -77,7 +77,7 @@ gb_PrecompiledHeader_get_objectfile = $(1).obj
 define gb_PrecompiledHeader__command
 $(call gb_Output_announce,$(2),$(true),PCH,1)
 $(call gb_Helper_abbreviate_dirs,\
-	mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \
+	mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2),$(7))) && \
 	unset INCLUDE && \
 	$(gb_CXX) \
 		$(4) $(5) -Fd$(PDBFILE) \
@@ -86,7 +86,7 @@ $(call gb_Helper_abbreviate_dirs,\
 		$(gb_COMPILERDEPFLAGS) \
 		$(6) \
 		-c $(3) \
-		-Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2)),$(1),$(3))
+		-Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(call gb_PrecompiledHeader_get_dep_target_tmp,$(2),$(7)),$(1),$(3))
 endef
 
 # AsmObject class


More information about the Libreoffice-commits mailing list