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

    r3121 r3258  
    3737TOOL_GXX3OMF_CC  ?= gcc$(HOSTSUFF_EXE)
    3838TOOL_GXX3OMF_CXX ?= g++$(HOSTSUFF_EXE)
     39TOOL_GXX3OMF_PCH ?= $(TOOL_GXX3OMF_CXX)
    3940TOOL_GXX3OMF_AS  ?= gcc$(HOSTSUFF_EXE)
    4041TOOL_GXX3OMF_AR  ?= emxomfar$(HOSTSUFF_EXE)
     
    6768
    6869TOOL_GXX3OMF_CXXOBJSUFF       ?= .o
    69 TOOL_GXX3OMF_CXXOBJSUFF       ?= .o
    7070TOOL_GXX3OMF_CXXFLAGS         ?= -Zomf
    7171TOOL_GXX3OMF_CXXFLAGS.debug   ?= -g
     
    7575TOOL_GXX3OMF_CXXDEFS          ?=
    7676
     77TOOL_GXX3OMF_PCHOBJSUFF       ?= .h.gch
     78TOOL_GXX3OMF_PCHFLAGS         ?= $(TOOL_GXX3OMF_CXXFLAGS)
     79TOOL_GXX3OMF_PCHFLAGS.debug   ?= $(TOOL_GXX3OMF_CXXFLAGS.debug)
     80TOOL_GXX3OMF_PCHFLAGS.profile ?= $(TOOL_GXX3OMF_CXXFLAGS.profile)
     81TOOL_GXX3OMF_PCHFLAGS.release ?= $(TOOL_GXX3OMF_CXXFLAGS.release)
     82TOOL_GXX3OMF_PCHINCS          ?= $(TOOL_GXX3OMF_CXXINCS)
     83TOOL_GXX3OMF_PCHDEFS          ?= $(TOOL_GXX3OMF_CXXDEFS)
     84
    7785TOOL_GXX3OMF_ASFLAGS          ?= -x assembler-with-cpp -Zomf
    7886TOOL_GXX3OMF_ASFLAGS.debug    ?= -g
     
    108116TOOL_GXX3OMF_COMPILE_C_DEPEND =
    109117TOOL_GXX3OMF_COMPILE_C_DEPORD =
    110 ifdef KBUILD_USE_KOBJCACHE
    111 TOOL_GXX3OMF_COMPILE_C_USES_KOBJCACHE = 1
    112 TOOL_GXX3OMF_COMPILE_C_OUTPUT = $(outbase).i
     118TOOL_GXX3OMF_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     119TOOL_GXX3OMF_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    113120define TOOL_GXX3OMF_COMPILE_C_CMDS
     121if "$(use_objcache)" != ""
    114122        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    115123                --kObjCache-cpp $(outbase).i\
     
    123131                -o $(obj)\
    124132                -
    125         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    126 endef
    127 else # !KBUILD_USE_KOBJCACHE
    128 TOOL_GXX3OMF_COMPILE_C_OUTPUT =
    129 define TOOL_GXX3OMF_COMPILE_C_CMDS
     133else
    130134        $(QUIET)$(TOOL_GXX3OMF_CC) -c\
    131135                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    132                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP \
     136                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    133137                -o $(obj)\
    134138                $(abspath $(source))
     139endif
    135140        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    136141endef
    137 endif # !KBUILD_USE_KOBJCACHE
    138142
    139143
     
    142146# @param    $(source)   Source filename (relative).
    143147# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
    144 # @param    $(dep)          Dependcy file. This shall be (re)created by the compilation.
    145 # @param    $(flags)    Flags.
    146 # @param    $(defs)     Definitions. No -D or something.
    147 # @param    $(incs)     Includes. No -I or something.
    148 # @param    $(dirdep)   Directory creation dependency.
    149 # @param    $(deps)             Other dependencies.
    150 #
    151 # @param    $(outbase)  Output basename (full). Use this for list files and such.
    152 # @param    $(objsuff)  Object suffix.
    153 TOOL_GXX3OMF_COMPILE_CXX_DEPEND =
    154 TOOL_GXX3OMF_COMPILE_CXX_DEPORD =
    155 ifdef KBUILD_USE_KOBJCACHE
    156 TOOL_GXX3OMF_COMPILE_CXX_USES_KOBJCACHE = 1
    157 TOOL_GXX3OMF_COMPILE_CXX_OUTPUT = $(outbase).ii
     148# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
     149# @param    $(flags)    Flags.
     150# @param    $(defs)     Definitions. No -D or something.
     151# @param    $(incs)     Includes. No -I or something.
     152# @param    $(dirdep)   Directory creation dependency.
     153# @param    $(deps)     Other dependencies.
     154# @param    $(outbase)  Output basename (full). Use this for list files and such.
     155# @param    $(objsuff)  Object suffix.
     156TOOL_GXX3OMF_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     157TOOL_GXX3OMF_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     158TOOL_GXX3OMF_COMPILE_CXX_DEPORD         =
     159TOOL_GXX3OMF_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    158160define TOOL_GXX3OMF_COMPILE_CXX_CMDS
     161if "$(use_objcache)" != ""
    159162        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    160163                --kObjCache-cpp $(outbase).ii\
    161                 $(TOOL_GXX3OMF_CXX) -E -o -\
     164                $(TOOL_GXX3OMF_CXX) -E -o - $(if-expr defined($(target)_PCH_HDR)\
     165                ,-fpch-preprocess -Winvalid-pch -I$($(target)_1_GCC_PCH_DIR) -include $(basename $($(target)_1_GCC_PCH_FILE)),)\
    162166                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    163167                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     
    165169                --kObjCache-cc $(obj)\
    166170                $(TOOL_GXX3OMF_CXX) -c\
    167                 $(flags) -fpreprocessed -x c++\
     171                $(flags) -fpreprocessed $(if-expr defined($(target)_PCH_HDR),-fpch-preprocess,) -x c++\
    168172                -o $(obj)\
    169173                -
     174else
     175        $(QUIET)$(TOOL_GXX3OMF_CXX) -c\
     176                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     177                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     178                -o $(obj) $(if-expr defined($(target)_PCH_HDR) \
     179                ,-Winvalid-pch -include $(basename $($(target)_1_GCC_PCH_FILE)),) \
     180                $(abspath $(source))
     181endif
    170182        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    171183endef
    172 else # !KBUILD_USE_KOBJCACHE
    173 TOOL_GXX3OMF_COMPILE_CXX_OUTPUT =
    174 define TOOL_GXX3OMF_COMPILE_CXX_CMDS
    175         $(QUIET)$(TOOL_GXX3OMF_CXX) -c\
    176                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    177                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP \
     184
     185
     186## Precompile C++ header.
     187# @param    $(target)   Normalized main target name.
     188# @param    $(source)   Source filename (relative).
     189# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     190# @param    $(dep)          Dependcy file. This shall be (re)created by the compilation.
     191# @param    $(flags)    Flags.
     192# @param    $(defs)     Definitions. No -D or something.
     193# @param    $(incs)     Includes. No -I or something.
     194# @param    $(dirdep)   Directory creation dependency.
     195# @param    $(deps)             Other dependencies.
     196# @param    $(outbase)  Output basename (full). Use this for list files and such.
     197# @param    $(objsuff)  Object suffix.
     198TOOL_GXX3OMF_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     199TOOL_GXX3OMF_COMPILE_PCH_DEPEND =
     200TOOL_GXX3OMF_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     201define TOOL_GXX3OMF_COMPILE_PCH_CMDS
     202        $(QUIET)$(TOOL_GXX3OMF_PCH) -c\
     203                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     204                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    178205                -o $(obj)\
    179206                $(abspath $(source))
     207        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
    180208        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    181209endef
    182 endif # !KBUILD_USE_KOBJCACHE
    183210
    184211
     
    251278                 $(NL)$(TAB)$(QUIET)$(QUIET)$(TOOL_GXX3OMF_AR_IMP) -o $(out) @$(outbase).rsp\
    252279                 $(NL)$(TAB)$(QUIET)$(RM) -f $(outbase).rsp)
    253         $(QUIET)$(APPEND) -n $(outbase).rsp $(flags) $(out) $(objs) $(filter-out %.def %.imp %.dll,$(othersrc))
     280        $(QUIET)$(APPEND) -n $(outbase).rsp $(flags) $(out) $(filter-out %.h.gch,$(objs)) $(filter-out %.def %.imp %.dll,$(othersrc))
    254281        $(QUIET)$(TOOL_GXX3OMF_AR) @$(outbase).rsp
    255282endef
     
    277304                $(flags)\
    278305                -o $(out)\
    279                 $(objs)\
     306                $(filter-out %.h.gch,$(objs))\
    280307                $(foreach p,$(libpath), -L$(p))\
    281308                $(othersrc)\
     
    308335                $(flags)\
    309336                -o $(out)\
    310                 $(objs)\
     337                $(filter-out %.h.gch,$(objs))\
    311338                $(foreach p,$(libpath), -L$(p))\
    312339                $(othersrc)\
     
    339366                $(flags)\
    340367                -o $(out)\
    341                 $(objs)\
     368                $(filter-out %.h.gch,$(objs))\
    342369                $(foreach p,$(libpath), -L$(p))\
    343370                $(othersrc)\
Note: See TracChangeset for help on using the changeset viewer.