Ignore:
Timestamp:
Jan 3, 2019, 6:34:09 AM (7 years ago)
Author:
bird
Message:

tools/*GXX*: Precompiled header and some kObjCache updates.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/tools/GXX42MACHO.kmk

    r3121 r3258  
    3939TOOL_GXX42MACHO_CC        ?= $(TOOL_GXX42MACHO_PREFIX)gcc$(TOOL_GXX42MACHO_SUFFIX)
    4040TOOL_GXX42MACHO_CXX       ?= $(TOOL_GXX42MACHO_PREFIX)g++$(TOOL_GXX42MACHO_SUFFIX)
     41TOOL_GXX42MACHO_PCH ?= $(TOOL_GXX42MACHO_CXX)
    4142TOOL_GXX42MACHO_OBJC      ?= $(TOOL_GXX42MACHO_PREFIX)gcc$(TOOL_GXX42MACHO_SUFFIX)
    4243TOOL_GXX42MACHO_OBJCXX    ?= $(TOOL_GXX42MACHO_PREFIX)gcc$(TOOL_GXX42MACHO_SUFFIX)
     
    7677TOOL_GXX42MACHO_CXXINCS          ?=
    7778TOOL_GXX42MACHO_CXXDEFS          ?=
     79
     80TOOL_GXX42MACHO_PCHOBJSUFF       ?= .h.gch
     81TOOL_GXX42MACHO_PCHFLAGS         ?= $(TOOL_GXX42MACHO_CXXFLAGS)
     82TOOL_GXX42MACHO_PCHFLAGS.debug   ?= $(TOOL_GXX42MACHO_CXXFLAGS.debug)
     83TOOL_GXX42MACHO_PCHFLAGS.profile ?= $(TOOL_GXX42MACHO_CXXFLAGS.profile)
     84TOOL_GXX42MACHO_PCHFLAGS.release ?= $(TOOL_GXX42MACHO_CXXFLAGS.release)
     85TOOL_GXX42MACHO_PCHINCS          ?= $(TOOL_GXX42MACHO_CXXINCS)
     86TOOL_GXX42MACHO_PCHDEFS          ?= $(TOOL_GXX42MACHO_CXXDEFS)
    7887
    7988TOOL_GXX42MACHO_OBJCOBJSUFF      ?= .o
     
    155164TOOL_GXX42MACHO_COMPILE_C_DEPEND =
    156165TOOL_GXX42MACHO_COMPILE_C_DEPORD =
    157 ifdef KBUILD_USE_KOBJCACHE
    158 TOOL_GXX42MACHO_COMPILE_C_USES_KOBJCACHE = 1
    159 TOOL_GXX42MACHO_COMPILE_C_OUTPUT = $(outbase).i
     166TOOL_GXX42MACHO_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     167TOOL_GXX42MACHO_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    160168define TOOL_GXX42MACHO_COMPILE_C_CMDS
     169if "$(use_objcache)" != ""
    161170        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    162171                --kObjCache-cpp $(outbase).i\
     
    170179                -o $(obj)\
    171180                -
    172         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    173 endef
    174 else  # !KBUILD_USE_KOBJCACHE
    175 TOOL_GXX42MACHO_COMPILE_C_OUTPUT =
    176 define TOOL_GXX42MACHO_COMPILE_C_CMDS
     181else
    177182        $(QUIET)$(TOOL_GXX42MACHO_CC) -c\
    178183                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     
    180185                -o $(obj)\
    181186                $(abspath $(source))
    182         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    183 endef
    184 endif # !KUSE_OBJCACHE
     187endif
     188        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     189endef
    185190
    186191
     
    189194# @param    $(source)   Source filename (relative).
    190195# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
    191 # @param    $(dep)          Dependcy file. This shall be (re)created by the compilation.
    192 # @param    $(flags)    Flags.
    193 # @param    $(defs)     Definitions. No -D or something.
    194 # @param    $(incs)     Includes. No -I or something.
    195 # @param    $(dirdep)   Directory creation dependency.
    196 # @param    $(deps)             Other dependencies.
    197 # @param    $(outbase)  Output basename (full). Use this for list files and such.
    198 # @param    $(objsuff)  Object suffix.
    199 TOOL_GXX42MACHO_COMPILE_CXX_DEPEND =
    200 TOOL_GXX42MACHO_COMPILE_CXX_DEPORD =
    201 ifdef KBUILD_USE_KOBJCACHE
    202 TOOL_GXX42MACHO_COMPILE_CXX_USES_KOBJCACHE = 1
    203 TOOL_GXX42MACHO_COMPILE_CXX_OUTPUT = $(outbase).ii
     196# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
     197# @param    $(flags)    Flags.
     198# @param    $(defs)     Definitions. No -D or something.
     199# @param    $(incs)     Includes. No -I or something.
     200# @param    $(dirdep)   Directory creation dependency.
     201# @param    $(deps)     Other dependencies.
     202# @param    $(outbase)  Output basename (full). Use this for list files and such.
     203# @param    $(objsuff)  Object suffix.
     204TOOL_GXX42MACHO_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     205TOOL_GXX42MACHO_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     206TOOL_GXX42MACHO_COMPILE_CXX_DEPORD         =
     207TOOL_GXX42MACHO_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    204208define TOOL_GXX42MACHO_COMPILE_CXX_CMDS
     209if "$(use_objcache)" != ""
    205210        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    206211                --kObjCache-cpp $(outbase).ii\
    207                 $(TOOL_GXX42MACHO_CXX) -E -o -\
     212                $(TOOL_GXX42MACHO_CXX) -E -o - $(if-expr defined($(target)_PCH_HDR)\
     213                ,-fpch-preprocess -Winvalid-pch -I$($(target)_1_GCC_PCH_DIR) -include $(basename $($(target)_1_GCC_PCH_FILE)),)\
    208214                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    209215                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     
    211217                --kObjCache-cc $(obj)\
    212218                $(TOOL_GXX42MACHO_CXX) -c\
    213                 $(flags) -fpreprocessed -x c++\
     219                $(flags) -fpreprocessed $(if-expr defined($(target)_PCH_HDR),-fpch-preprocess,) -x c++\
    214220                -o $(obj)\
    215221                -
    216         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    217 endef
    218 else  # !KBUILD_USE_KOBJCACHE
    219 TOOL_GXX42MACHO_COMPILE_CXX_OUTPUT =
    220 define TOOL_GXX42MACHO_COMPILE_CXX_CMDS
     222else
    221223        $(QUIET)$(TOOL_GXX42MACHO_CXX) -c\
    222                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    223                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    224                 -o $(obj)\
    225                 $(abspath $(source))
    226         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    227 endef
    228 endif # !KBUILD_USE_KOBJCACHE
     224                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     225                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     226                -o $(obj) $(if-expr defined($(target)_PCH_HDR) \
     227                ,-Winvalid-pch -include $(basename $($(target)_1_GCC_PCH_FILE)),) \
     228                $(abspath $(source))
     229endif
     230        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     231endef
     232
     233
     234## Precompile C++ header.
     235# @param    $(target)   Normalized main target name.
     236# @param    $(source)   Source filename (relative).
     237# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     238# @param    $(dep)          Dependcy file. This shall be (re)created by the compilation.
     239# @param    $(flags)    Flags.
     240# @param    $(defs)     Definitions. No -D or something.
     241# @param    $(incs)     Includes. No -I or something.
     242# @param    $(dirdep)   Directory creation dependency.
     243# @param    $(deps)             Other dependencies.
     244# @param    $(outbase)  Output basename (full). Use this for list files and such.
     245# @param    $(objsuff)  Object suffix.
     246TOOL_GXX42MACHO_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     247TOOL_GXX42MACHO_COMPILE_PCH_DEPEND =
     248TOOL_GXX42MACHO_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     249define TOOL_GXX42MACHO_COMPILE_PCH_CMDS
     250        $(QUIET)$(TOOL_GXX42MACHO_PCH) -c\
     251                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     252                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     253                -o $(obj)\
     254                $(abspath $(source))
     255        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
     256        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     257endef
    229258
    230259
     
    356385TOOL_GXX42MACHO_LINK_LIBRARY_DEPORD =
    357386define TOOL_GXX42MACHO_LINK_LIBRARY_CMDS
    358         $(if $(strip $(objs)),$(call xargs,$(QUIET)$(TOOL_GXX42MACHO_AR) $(flags) $(out),$(objs)))
     387        $(if $(strip $(filter-out %.h.gch,$(objs))),$(call xargs,$(QUIET)$(TOOL_GXX42MACHO_AR) $(flags) $(out),$(filter-out %.h.gch,$(objs))))
    359388        $(foreach lib,$(othersrc)\
    360389                ,$(NL)$(TAB)$(call MSG_AR_MERGE,$(target),$(out),$(lib)) \
     
    389418TOOL_GXX42MACHO_LINK_PROGRAM_DEPORD =
    390419define TOOL_GXX42MACHO_LINK_PROGRAM_CMDS
    391         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     420        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    392421        $(QUIET)$(TOOL_GXX42MACHO_LD) $(flags) -o $(out)\
    393422                -filelist $(outbase).rsp\
     
    420449TOOL_GXX42MACHO_LINK_DLL_DEPORD =
    421450define TOOL_GXX42MACHO_LINK_DLL_CMDS
    422         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     451        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    423452        $(QUIET)$(TOOL_GXX42MACHO_LD) $(TOOL_GXX42MACHO_LDFLAGS.dll) $(flags) -o $(out)\
    424453                $(call TOOL_GXX42MACHO_LD_SONAME,$(target),$(out))\
     
    452481TOOL_GXX42MACHO_LINK_SYSMOD_DEPORD =
    453482define TOOL_GXX42MACHO_LINK_SYSMOD_CMDS
    454         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     483        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    455484        $(QUIET)$(TOOL_GXX42MACHO_LD_SYSMOD) $(TOOL_GXX42MACHO_LDFLAGS.sysmod) $(flags) -o $(out)\
    456485                -filelist $(outbase).rsp\
Note: See TracChangeset for help on using the changeset viewer.