diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2012-07-02 17:41:26 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2012-12-10 14:46:45 +0100 |
commit | 24ae46df5ed90c4f563e8acfbf66ce3bb14e6f5d (patch) | |
tree | 4fdfa883c107febcc36608bb1487a7ee0a9bb0d3 /solenv | |
parent | ac893720de5b0815d57b87ae5f9a08764df08a93 (diff) |
PCH support for Clang compiler
Change-Id: I17a9f3c0b16cef7ea4ef3db938337545beef3609
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/gbuild/platform/com_GCC_class.mk | 37 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_GCC_defs.mk | 3 |
2 files changed, 40 insertions, 0 deletions
diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk index 9f2d15ddea5c..563ec835c98a 100644 --- a/solenv/gbuild/platform/com_GCC_class.mk +++ b/solenv/gbuild/platform/com_GCC_class.mk @@ -105,6 +105,7 @@ $(call gb_Helper_abbreviate_dirs,\ $(gb_cxx_dep_generation_options) \ -I$(dir $(3)) \ $(INCLUDE) \ + $(PCHFLAGS) \ $(gb_cxx_dep_copy) \ ) endef @@ -136,6 +137,42 @@ $(call gb_Helper_abbreviate_dirs,\ -o $(call gb_SrsPartTarget_get_dep_target,$(1))) endef +ifeq ($(COM_GCC_IS_CLANG),TRUE) +# PrecompiledHeader class + +gb_PrecompiledHeader_get_enableflags = -include-pch $(call gb_PrecompiledHeader_get_target,$(1)) + +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))) && \ + $(gb_CXX) \ + -x c++-header \ + $(4) $(5) \ + $(gb_COMPILERDEPFLAGS) \ + $(6) \ + -c $(patsubst %.cxx,%.hxx,$(3)) \ + -o$(1)) $(call gb_create_deps,$(call gb_PrecompiledHeader_get_dep_target,$(2)),$(1),$(3)) +endef + +# NoexPrecompiledHeader class + +gb_NoexPrecompiledHeader_get_enableflags = -include-pch $(call gb_PrecompiledHeader_get_target,$(1)) + +define gb_NoexPrecompiledHeader__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))) && \ + $(gb_CXX) \ + -x c++-header \ + $(4) $(5) \ + $(gb_COMPILERDEPFLAGS) \ + $(6) \ + -c $(patsubst %.cxx,%.hxx,$(3)) \ + -o$(1)) $(call gb_create_deps,$(call gb_PrecompiledHeader_get_dep_target,$(2)),$(1),$(3)) +endef +endif + # YaccTarget class ifeq ($(ANCIENT_BISON),YES) diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk index 973f47685b92..ad89778e5d41 100644 --- a/solenv/gbuild/platform/com_GCC_defs.mk +++ b/solenv/gbuild/platform/com_GCC_defs.mk @@ -124,6 +124,9 @@ gb_LinkTarget_NOEXCEPTIONFLAGS := \ -DEXCEPTIONS_OFF \ -fno-exceptions \ +gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS) + +gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS := $(gb_LinkTarget_NOEXCEPTIONFLAGS) # optimization level gb_COMPILEROPTFLAGS := $(gb_COMPILERDEFAULTOPTFLAGS) |