Ignore:
Timestamp:
Dec 28, 2018, 11:43:52 PM (6 years ago)
Author:
bird
Message:

Working on precompiled headers for GCC.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/kBuild/tools/GXX3.kmk

    r3121 r3250  
    3737TOOL_GXX3_CC  ?= gcc$(HOSTSUFF_EXE)
    3838TOOL_GXX3_CXX ?= g++$(HOSTSUFF_EXE)
     39TOOL_GXX3_PCH ?= $(TOOL_GXX3_CXX)
    3940TOOL_GXX3_AS  ?= gcc$(HOSTSUFF_EXE)
    4041ifeq ($(KBUILD_TARGET),solaris)
     
    7374 TOOL_GXX3_CC  += -fmessage-length=0
    7475 TOOL_GXX3_CXX += -fmessage-length=0
     76 TOOL_GXX3_PCH += -fmessage-length=0
    7577endif
    7678
     
    8587
    8688TOOL_GXX3_CXXOBJSUFF       ?= .o
    87 TOOL_GXX3_CXXOBJSUFF       ?= .o
    8889TOOL_GXX3_CXXFLAGS         ?=
    8990TOOL_GXX3_CXXFLAGS.debug   ?= -g
     
    9293TOOL_GXX3_CXXINCS          ?=
    9394TOOL_GXX3_CXXDEFS          ?=
     95
     96TOOL_GXX3_PCHOBJSUFF       ?= .h.gch
     97TOOL_GXX3_PCHFLAGS         ?= $(TOOL_GXX3_CXXFLAGS)
     98TOOL_GXX3_PCHFLAGS.debug   ?= $(TOOL_GXX3_CXXFLAGS.debug)
     99TOOL_GXX3_PCHFLAGS.profile ?= $(TOOL_GXX3_CXXFLAGS.profile)
     100TOOL_GXX3_PCHFLAGS.release ?= $(TOOL_GXX3_CXXFLAGS.release)
     101TOOL_GXX3_PCHINCS          ?= $(TOOL_GXX3_CXXINCS)
     102TOOL_GXX3_PCHDEFS          ?= $(TOOL_GXX3_CXXDEFS)
    94103
    95104TOOL_GXX3_ASFLAGS          ?= -x assembler-with-cpp
     
    163172# @param    $(outbase)  Output basename (full). Use this for list files and such.
    164173# @param    $(objsuff)  Object suffix.
    165 TOOL_GXX3_COMPILE_CXX_DEPEND =
    166174TOOL_GXX3_COMPILE_CXX_DEPORD =
    167175ifdef KBUILD_USE_KOBJCACHE
    168176TOOL_GXX3_COMPILE_CXX_USES_KOBJCACHE = 1
     177TOOL_GXX3_COMPILE_CXX_DEPEND =
    169178TOOL_GXX3_COMPILE_CXX_OUTPUT = $(outbase).ii
    170179define TOOL_GXX3_COMPILE_CXX_CMDS
     
    183192endef
    184193else # !KBUILD_USE_KOBJCACHE
     194TOOL_GXX3_COMPILE_CXX_DEPEND = $($(target)_1_GCC_PCH_FILE)
    185195TOOL_GXX3_COMPILE_CXX_OUTPUT =
    186196define TOOL_GXX3_COMPILE_CXX_CMDS
    187197        $(QUIET)$(TOOL_GXX3_CXX) -c\
    188                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    189                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    190                 -o $(obj)\
     198                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     199                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     200                -o $(obj) $(if-expr defined($(target)_PCH_HDR) \
     201                ,-Winvalid-pch -H -include $(basename $($(target)_1_GCC_PCH_FILE)),) \
    191202                $(abspath $(source))
    192203        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    193204endef
    194205endif # !KBUILD_USE_KOBJCACHE
     206
     207
     208## Precompile C++ header.
     209# @param    $(target)   Normalized main target name.
     210# @param    $(source)   Source filename (relative).
     211# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     212# @param    $(dep)          Dependcy file. This shall be (re)created by the compilation.
     213# @param    $(flags)    Flags.
     214# @param    $(defs)     Definitions. No -D or something.
     215# @param    $(incs)     Includes. No -I or something.
     216# @param    $(dirdep)   Directory creation dependency.
     217# @param    $(deps)             Other dependencies.
     218# @param    $(outbase)  Output basename (full). Use this for list files and such.
     219# @param    $(objsuff)  Object suffix.
     220TOOL_GXX3_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     221TOOL_GXX3_COMPILE_PCH_DEPEND =
     222TOOL_GXX3_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     223define TOOL_GXX3_COMPILE_PCH_CMDS
     224        $(QUIET)$(TOOL_GXX3_PCH) -c\
     225                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     226                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     227                -o $(obj)\
     228                $(abspath $(source))
     229        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
     230        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     231endef
    195232
    196233
Note: See TracChangeset for help on using the changeset viewer.