diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2019-09-21 17:41:25 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2019-10-04 08:58:39 +0200 |
commit | fd90ad734a931ddfdff4df9bfcf10f12a87b0286 (patch) | |
tree | 1b64d51b4ad94ada2c519a58f346f419e96cd9f9 /solenv/gbuild/LinkTarget.mk | |
parent | 87608490f205b2fbc2b453ad8ded33050ac29b90 (diff) |
add gb_LinkTarget_reuse_precompiled_header
Similar to gb_LinkTarget_set_precompiled_header, but uses PCH
created by another linktarget. This allows using a PCH even for linktargets
that are small and creating their own dedicated PCHs is not worth it.
The ultimate goal is having some default PCH that will be used if no
explicit PCH is set.
Change-Id: I4d72acdba7181bb5c7c1cdead776f548be36ba33
Reviewed-on: https://gerrit.libreoffice.org/79362
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'solenv/gbuild/LinkTarget.mk')
-rw-r--r-- | solenv/gbuild/LinkTarget.mk | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk index 2d9f35900d22..4fc16df1f3a8 100644 --- a/solenv/gbuild/LinkTarget.mk +++ b/solenv/gbuild/LinkTarget.mk @@ -1525,13 +1525,8 @@ $(call gb_LinkTarget_get_clean_target,$(1)) : $(foreach sdi,$(2),$(call gb_SdiTa 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),$(4)) : $(call gb_CxxObject_get_source,$(SRCDIR),$(2)) - -$(call gb_PrecompiledHeader_get_target,$(3),$(4)) : $(call gb_LinkTarget_get_headers_target,$(1)) - +# call gb_LinkTarget__set_precompiled_header_variables,linktarget,pchcxxfile,pchtarget,linktargetmakefilename +define gb_LinkTarget__set_precompiled_header_variables $(call gb_LinkTarget_get_target,$(1)) : PCH_NAME := $(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))) @@ -1543,10 +1538,21 @@ $(call gb_LinkTarget_get_target,$(1)) : PCH_CXXFLAGS := $$(T_CXXFLAGS) $(call gb $(call gb_LinkTarget_get_target,$(1)) : DEFS += -DPCH_LEVEL=$(gb_ENABLE_PCH) $(call gb_LinkTarget_get_target,$(1)) : PCH_DEFS += -DPCH_LEVEL=$(gb_ENABLE_PCH) +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),$(4)) : $(call gb_CxxObject_get_source,$(SRCDIR),$(2)) + +$(call gb_PrecompiledHeader_get_target,$(3),$(4)) : $(call gb_LinkTarget_get_headers_target,$(1)) + $(call gb_PrecompiledHeader_get_target,$(3),$(4)) : VISIBILITY := $(call gb_LinkTarget_get_pch_timestamp,$(4)) : $(call gb_PrecompiledHeader_get_target,$(3),$(4)) +$(call gb_LinkTarget__set_precompiled_header_variables,$(1),$(2),$(3),$(4)) + ifeq ($(gb_FULLDEPS),$(true)) -include $(call gb_PrecompiledHeader_get_dep_target,$(3),$(4)) endif @@ -1562,6 +1568,27 @@ endif endef +# call gb_LinkTarget__reuse_precompiled_header_impl,linktarget,pchcxxfile,pchtarget,linktargetmakefilename +# Use the PCH as if it was LinkTarget's own, but do nothing with the PCH itself, just depend on it. +define gb_LinkTarget__reuse_precompiled_header_impl +$(call gb_LinkTarget__set_precompiled_header_variables,$(1),$(2),$(3),$(4)) + +$(call gb_LinkTarget_get_pch_timestamp,$(4)) : $(call gb_LinkTarget_get_pch_reuse_timestamp,$(4)) + +$(call gb_LinkTarget_get_pch_reuse_timestamp,$(4)) : $(call gb_PrecompiledHeader_get_target,$(3),$(4)) + $(call gb_PrecompiledHeader_check_flags,$(4),$(2),\ + $(call gb_PrecompiledHeader_get_target,$(3),$(4)),$$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_EXCEPTIONFLAGS)) + +endef + +# call gb_LinkTarget_reuse_precompiled_header,linktarget,pchcxxfile,,linktargetmakefilename +define gb_LinkTarget_reuse_precompiled_header +ifneq ($(gb_ENABLE_PCH),) +$(call gb_LinkTarget__reuse_precompiled_header_impl,$(1),$(2),$(notdir $(2)),$(4)) +endif + +endef + # use a header package, possibly from another module # call gb_LinkTarget_use_package,linktarget,package define gb_LinkTarget_use_package |