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/GXX4MACHO.kmk

    r3121 r3258  
    3939TOOL_GXX4MACHO_CC        ?= $(TOOL_GXX4MACHO_PREFIX)gcc$(TOOL_GXX4MACHO_SUFFIX)
    4040TOOL_GXX4MACHO_CXX       ?= $(TOOL_GXX4MACHO_PREFIX)g++$(TOOL_GXX4MACHO_SUFFIX)
     41TOOL_GXX4MACHO_PCH ?= $(TOOL_GXX4MACHO_CXX)
    4142TOOL_GXX4MACHO_OBJC      ?= $(TOOL_GXX4MACHO_PREFIX)gcc$(TOOL_GXX4MACHO_SUFFIX)
    4243TOOL_GXX4MACHO_OBJCXX    ?= $(TOOL_GXX4MACHO_PREFIX)gcc$(TOOL_GXX4MACHO_SUFFIX)
     
    7677TOOL_GXX4MACHO_CXXINCS          ?=
    7778TOOL_GXX4MACHO_CXXDEFS          ?=
     79
     80TOOL_GXX4MACHO_PCHOBJSUFF       ?= .h.gch
     81TOOL_GXX4MACHO_PCHFLAGS         ?= $(TOOL_GXX4MACHO_CXXFLAGS)
     82TOOL_GXX4MACHO_PCHFLAGS.debug   ?= $(TOOL_GXX4MACHO_CXXFLAGS.debug)
     83TOOL_GXX4MACHO_PCHFLAGS.profile ?= $(TOOL_GXX4MACHO_CXXFLAGS.profile)
     84TOOL_GXX4MACHO_PCHFLAGS.release ?= $(TOOL_GXX4MACHO_CXXFLAGS.release)
     85TOOL_GXX4MACHO_PCHINCS          ?= $(TOOL_GXX4MACHO_CXXINCS)
     86TOOL_GXX4MACHO_PCHDEFS          ?= $(TOOL_GXX4MACHO_CXXDEFS)
    7887
    7988TOOL_GXX4MACHO_OBJCOBJSUFF      ?= .o
     
    155164TOOL_GXX4MACHO_COMPILE_C_DEPEND =
    156165TOOL_GXX4MACHO_COMPILE_C_DEPORD =
    157 ifdef KBUILD_USE_KOBJCACHE
    158 TOOL_GXX4MACHO_COMPILE_C_USES_KOBJCACHE = 1
    159 TOOL_GXX4MACHO_COMPILE_C_OUTPUT = $(outbase).i
     166TOOL_GXX4MACHO_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     167TOOL_GXX4MACHO_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    160168define TOOL_GXX4MACHO_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_GXX4MACHO_COMPILE_C_OUTPUT =
    176 define TOOL_GXX4MACHO_COMPILE_C_CMDS
     181else
    177182        $(QUIET)$(TOOL_GXX4MACHO_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
    187192## Compile C++ source.
     193# @param    $(target)   Normalized main target name.
     194# @param    $(source)   Source filename (relative).
     195# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     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_GXX4MACHO_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     205TOOL_GXX4MACHO_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     206TOOL_GXX4MACHO_COMPILE_CXX_DEPORD         =
     207TOOL_GXX4MACHO_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
     208define TOOL_GXX4MACHO_COMPILE_CXX_CMDS
     209if "$(use_objcache)" != ""
     210        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
     211                --kObjCache-cpp $(outbase).ii\
     212                $(TOOL_GXX4MACHO_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)),)\
     214                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     215                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     216                $(abspath $(source))\
     217                --kObjCache-cc $(obj)\
     218                $(TOOL_GXX4MACHO_CXX) -c\
     219                $(flags) -fpreprocessed $(if-expr defined($(target)_PCH_HDR),-fpch-preprocess,) -x c++\
     220                -o $(obj)\
     221                -
     222else
     223        $(QUIET)$(TOOL_GXX4MACHO_CXX) -c\
     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.
    188235# @param    $(target)   Normalized main target name.
    189236# @param    $(source)   Source filename (relative).
     
    197244# @param    $(outbase)  Output basename (full). Use this for list files and such.
    198245# @param    $(objsuff)  Object suffix.
    199 TOOL_GXX4MACHO_COMPILE_CXX_DEPEND =
    200 TOOL_GXX4MACHO_COMPILE_CXX_DEPORD =
    201 ifdef KBUILD_USE_KOBJCACHE
    202 TOOL_GXX4MACHO_COMPILE_CXX_USES_KOBJCACHE = 1
    203 TOOL_GXX4MACHO_COMPILE_CXX_OUTPUT = $(outbase).ii
    204 define TOOL_GXX4MACHO_COMPILE_CXX_CMDS
    205         $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    206                 --kObjCache-cpp $(outbase).ii\
    207                 $(TOOL_GXX4MACHO_CXX) -E -o -\
    208                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    209                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    210                 $(abspath $(source))\
    211                 --kObjCache-cc $(obj)\
    212                 $(TOOL_GXX4MACHO_CXX) -c\
    213                 $(flags) -fpreprocessed -x c++\
    214                 -o $(obj)\
    215                 -
    216         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    217 endef
    218 else  # !KBUILD_USE_KOBJCACHE
    219 TOOL_GXX4MACHO_COMPILE_CXX_OUTPUT =
    220 define TOOL_GXX4MACHO_COMPILE_CXX_CMDS
    221         $(QUIET)$(TOOL_GXX4MACHO_CXX) -c\
    222                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     246TOOL_GXX4MACHO_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     247TOOL_GXX4MACHO_COMPILE_PCH_DEPEND =
     248TOOL_GXX4MACHO_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     249define TOOL_GXX4MACHO_COMPILE_PCH_CMDS
     250        $(QUIET)$(TOOL_GXX4MACHO_PCH) -c\
     251                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
    223252                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    224253                -o $(obj)\
    225254                $(abspath $(source))
    226         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    227 endef
    228 endif # !KBUILD_USE_KOBJCACHE
    229 
    230 
    231 ## Compile Objective-C source.
    232 # @param    $(target)   Normalized main target name.
    233 # @param    $(source)   Source filename (relative).
    234 # @param    $(obj)      Object file name. This shall be (re)created by the compilation.
    235 # @param    $(dep)          Dependcy file. This shall be (re)created by the compilation.
    236 # @param    $(flags)    Flags.
    237 # @param    $(defs)     Definitions. No -D or something.
    238 # @param    $(incs)     Includes. No -I or something.
    239 # @param    $(dirdep)   Directory creation dependency.
    240 # @param    $(deps)             Other dependencies.
    241 # @param    $(outbase)  Output basename (full). Use this for list files and such.
    242 # @param    $(objsuff)  Object suffix.
    243 TOOL_GXX4MACHO_COMPILE_OBJC_DEPEND =
    244 TOOL_GXX4MACHO_COMPILE_OBJC_DEPORD =
    245 ifdef KBUILD_USE_KOBJCACHE
    246 TOOL_GXX4MACHO_COMPILE_OBJC_USES_KOBJCACHE = 1
    247 TOOL_GXX4MACHO_COMPILE_OBJC_OUTPUT = $(outbase).mi
    248 define TOOL_GXX4MACHO_COMPILE_OBJC_CMDS
    249         $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    250                 --kObjCache-cpp $(outbase).ii\
    251                 $(TOOL_GXX4MACHO_OBJC) -E -o -\
    252                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    253                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    254                 $(abspath $(source))\
    255                 --kObjCache-cc $(obj)\
    256                 $(TOOL_GXX4MACHO_OBJC) -c\
    257                 $(flags) -fpreprocessed -x objective-c \
    258                 -o $(obj)\
    259                 -
    260         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    261 endef
    262 else  # !KBUILD_USE_KOBJCACHE
    263 TOOL_GXX4MACHO_COMPILE_OBJC_OUTPUT =
    264 define TOOL_GXX4MACHO_COMPILE_OBJC_CMDS
    265         $(QUIET)$(TOOL_GXX4MACHO_OBJC) -c\
    266                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    267                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    268                 -o $(obj)\
    269                 $(abspath $(source))
    270         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    271 endef
    272 endif # !KBUILD_USE_KOBJCACHE
     255        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
     256        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     257endef
    273258
    274259
     
    356341TOOL_GXX4MACHO_LINK_LIBRARY_DEPORD =
    357342define TOOL_GXX4MACHO_LINK_LIBRARY_CMDS
    358         $(if $(strip $(objs)),$(call xargs,$(QUIET)$(TOOL_GXX4MACHO_AR) $(flags) $(out),$(objs)))
     343        $(if $(strip $(filter-out %.h.gch,$(objs))),$(call xargs,$(QUIET)$(TOOL_GXX4MACHO_AR) $(flags) $(out),$(filter-out %.h.gch,$(objs))))
    359344        $(foreach lib,$(othersrc)\
    360345                ,$(NL)$(TAB)$(call MSG_AR_MERGE,$(target),$(out),$(lib)) \
     
    389374TOOL_GXX4MACHO_LINK_PROGRAM_DEPORD =
    390375define TOOL_GXX4MACHO_LINK_PROGRAM_CMDS
    391         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     376        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    392377        $(QUIET)$(TOOL_GXX4MACHO_LD) $(flags) -o $(out)\
    393378                -filelist $(outbase).rsp\
     
    420405TOOL_GXX4MACHO_LINK_DLL_DEPORD =
    421406define TOOL_GXX4MACHO_LINK_DLL_CMDS
    422         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     407        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    423408        $(QUIET)$(TOOL_GXX4MACHO_LD) $(TOOL_GXX4MACHO_LDFLAGS.dll) $(flags) -o $(out)\
    424409                $(call TOOL_GXX4MACHO_LD_SONAME,$(target),$(out))\
     
    452437TOOL_GXX4MACHO_LINK_SYSMOD_DEPORD =
    453438define TOOL_GXX4MACHO_LINK_SYSMOD_CMDS
    454         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     439        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    455440        $(QUIET)$(TOOL_GXX4MACHO_LD_SYSMOD) $(TOOL_GXX4MACHO_LDFLAGS.sysmod) $(flags) -o $(out)\
    456441                -filelist $(outbase).rsp\
Note: See TracChangeset for help on using the changeset viewer.