VirtualBox

Changeset 3258 in kBuild


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

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

Location:
trunk/kBuild/tools
Files:
7 edited

Legend:

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

    r3121 r3258  
    3838TOOL_GXX32_CC  ?= gcc$(HOSTSUFF_EXE) -m32
    3939TOOL_GXX32_CXX ?= g++$(HOSTSUFF_EXE) -m32
     40TOOL_GXX32_PCH ?= $(TOOL_GXX32_CXX)
    4041TOOL_GXX32_AS  ?= gcc$(HOSTSUFF_EXE) -m32
    4142TOOL_GXX32_AR  ?= ar$(HOSTSUFF_EXE)
     
    8081
    8182TOOL_GXX32_CXXOBJSUFF       ?= .o
    82 TOOL_GXX32_CXXOBJSUFF       ?= .o
    8383TOOL_GXX32_CXXFLAGS         ?=
    8484TOOL_GXX32_CXXFLAGS.debug   ?= -g
     
    8888TOOL_GXX32_CXXDEFS          ?=
    8989
     90TOOL_GXX32_PCHOBJSUFF       ?= .h.gch
     91TOOL_GXX32_PCHFLAGS         ?= $(TOOL_GXX32_CXXFLAGS)
     92TOOL_GXX32_PCHFLAGS.debug   ?= $(TOOL_GXX32_CXXFLAGS.debug)
     93TOOL_GXX32_PCHFLAGS.profile ?= $(TOOL_GXX32_CXXFLAGS.profile)
     94TOOL_GXX32_PCHFLAGS.release ?= $(TOOL_GXX32_CXXFLAGS.release)
     95TOOL_GXX32_PCHINCS          ?= $(TOOL_GXX32_CXXINCS)
     96TOOL_GXX32_PCHDEFS          ?= $(TOOL_GXX32_CXXDEFS)
     97
    9098TOOL_GXX32_ASFLAGS          ?= -x assembler-with-cpp
    9199TOOL_GXX32_ASFLAGS.debug    ?= -g
     
    116124TOOL_GXX32_COMPILE_C_DEPEND =
    117125TOOL_GXX32_COMPILE_C_DEPORD =
    118 ifdef KBUILD_USE_KOBJCACHE
    119 TOOL_GXX32_COMPILE_C_USES_KOBJCACHE = 1
    120 TOOL_GXX32_COMPILE_C_OUTPUT = $(outbase).i
     126TOOL_GXX32_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     127TOOL_GXX32_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    121128define TOOL_GXX32_COMPILE_C_CMDS
     129if "$(use_objcache)" != ""
    122130        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    123131                --kObjCache-cpp $(outbase).i\
     
    131139                -o $(obj)\
    132140                -
    133         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    134 endef
    135 else # !KBUILD_USE_KOBJCACHE
    136 TOOL_GXX32_COMPILE_C_OUTPUT =
    137 define TOOL_GXX32_COMPILE_C_CMDS
     141else
    138142        $(QUIET)$(TOOL_GXX32_CC) -c\
    139143                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     
    141145                -o $(obj)\
    142146                $(abspath $(source))
     147endif
    143148        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    144149endef
    145 endif # !KBUILD_USE_KOBJCACHE
    146150
    147151
    148152## Compile C++ source.
     153# @param    $(target)   Normalized main target name.
     154# @param    $(source)   Source filename (relative).
     155# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     156# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
     157# @param    $(flags)    Flags.
     158# @param    $(defs)     Definitions. No -D or something.
     159# @param    $(incs)     Includes. No -I or something.
     160# @param    $(dirdep)   Directory creation dependency.
     161# @param    $(deps)     Other dependencies.
     162# @param    $(outbase)  Output basename (full). Use this for list files and such.
     163# @param    $(objsuff)  Object suffix.
     164TOOL_GXX32_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     165TOOL_GXX32_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     166TOOL_GXX32_COMPILE_CXX_DEPORD         =
     167TOOL_GXX32_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
     168define TOOL_GXX32_COMPILE_CXX_CMDS
     169if "$(use_objcache)" != ""
     170        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
     171                --kObjCache-cpp $(outbase).ii\
     172                $(TOOL_GXX32_CXX) -E -o - $(if-expr defined($(target)_PCH_HDR)\
     173                ,-fpch-preprocess -Winvalid-pch -I$($(target)_1_GCC_PCH_DIR) -include $(basename $($(target)_1_GCC_PCH_FILE)),)\
     174                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     175                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     176                $(abspath $(source))\
     177                --kObjCache-cc $(obj)\
     178                $(TOOL_GXX32_CXX) -c\
     179                $(flags) -fpreprocessed $(if-expr defined($(target)_PCH_HDR),-fpch-preprocess,) -x c++\
     180                -o $(obj)\
     181                -
     182else
     183        $(QUIET)$(TOOL_GXX32_CXX) -c\
     184                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     185                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     186                -o $(obj) $(if-expr defined($(target)_PCH_HDR) \
     187                ,-Winvalid-pch -include $(basename $($(target)_1_GCC_PCH_FILE)),) \
     188                $(abspath $(source))
     189endif
     190        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     191endef
     192
     193
     194## Precompile C++ header.
    149195# @param    $(target)   Normalized main target name.
    150196# @param    $(source)   Source filename (relative).
     
    158204# @param    $(outbase)  Output basename (full). Use this for list files and such.
    159205# @param    $(objsuff)  Object suffix.
    160 TOOL_GXX32_COMPILE_CXX_DEPEND =
    161 TOOL_GXX32_COMPILE_CXX_DEPORD =
    162 ifdef KBUILD_USE_KOBJCACHE
    163 TOOL_GXX32_COMPILE_CXX_USES_KOBJCACHE = 1
    164 TOOL_GXX32_COMPILE_CXX_OUTPUT = $(outbase).ii
    165 define TOOL_GXX32_COMPILE_CXX_CMDS
    166         $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    167                 --kObjCache-cpp $(outbase).ii\
    168                 $(TOOL_GXX32_CXX) -E -o -\
    169                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    170                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    171                 $(abspath $(source))\
    172                 --kObjCache-cc $(obj)\
    173                 $(TOOL_GXX32_CXX) -c\
    174                 $(flags) -fpreprocessed -x c++\
    175                 -o $(obj)\
    176                 -
     206TOOL_GXX32_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     207TOOL_GXX32_COMPILE_PCH_DEPEND =
     208TOOL_GXX32_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     209define TOOL_GXX32_COMPILE_PCH_CMDS
     210        $(QUIET)$(TOOL_GXX32_PCH) -c\
     211                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     212                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     213                -o $(obj)\
     214                $(abspath $(source))
     215        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
    177216        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    178217endef
    179 else # !KBUILD_USE_KOBJCACHE
    180 TOOL_GXX32_COMPILE_CXX_OUTPUT =
    181 define TOOL_GXX32_COMPILE_CXX_CMDS
    182         $(QUIET)$(TOOL_GXX32_CXX) -c\
    183                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    184                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    185                 -o $(obj)\
    186                 $(abspath $(source))
    187         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    188 endef
    189 endif # !KBUILD_USE_KOBJCACHE
    190218
    191219
     
    231259        $(QUIET)$(APPEND) $(out).ar-script 'CREATE $(out)'
    232260        $(QUIET)$(APPEND) -n $(out).ar-script \
    233                 $(foreach o,$(objs), 'ADDMOD $(o)') \
     261                $(foreach o,$(filter-out %.h.gch,$(objs)), 'ADDMOD $(o)') \
    234262                $(foreach o,$(filter-out %.def %.imp %.dll,$(othersrc)), 'ADDLIB $(o)')
    235263        $(if $(filter %.def %.imp %.dll,$(othersrc))\
    236                 ,$(TOOL_GXX3_AR_IMP) -o $(outbase).imp.a $(filter %.def %.imp %.dll,$(othersrc))\
     264                ,$(TOOL_GXX32_AR_IMP) -o $(outbase).imp.a $(filter %.def %.imp %.dll,$(othersrc))\
    237265                 $(NL)$(TAB)$(QUIET)$(APPEND) $(out).ar-script 'ADDLIB $(outbase).imp.a')
    238266        $(QUIET)$(APPEND) $(out).ar-script 'SAVE'
     
    263291TOOL_GXX32_LINK_PROGRAM_DEPORD =
    264292define TOOL_GXX32_LINK_PROGRAM_CMDS
    265         $(QUIET)$(TOOL_GXX32_LD) $(flags) -o $(out) $(objs)\
     293        $(QUIET)$(TOOL_GXX32_LD) $(flags) -o $(out) $(filter-out %.h.gch,$(objs))\
    266294                $(foreach p,$(libpath), -L$(p))\
    267295                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))\
     
    298326        $(QUIET)$(TOOL_GXX32_LD) $(TOOL_GXX32_LDFLAGS.dll) $(flags) -o $(out)\
    299327                $(if $(filter-out win os2, $(KBUILD_TARGET)),$(call TOOL_GXX32_LD_SONAME,$(target),$(out)))\
    300                 $(objs)\
     328                $(filter-out %.h.gch,$(objs))\
    301329                $(foreach p,$(libpath), -L$(p))\
    302330                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))\
     
    331359TOOL_GXX32_LINK_SYSMOD_DEPORD =
    332360define TOOL_GXX32_LINK_SYSMOD_CMDS
    333         $(QUIET)$(TOOL_GXX32_LD_SYSMOD) $(TOOL_GXX32_LDFLAGS.sysmod) $(flags) -o $(out) $(objs)\
     361        $(QUIET)$(TOOL_GXX32_LD_SYSMOD) $(TOOL_GXX32_LDFLAGS.sysmod) $(flags) -o $(out) $(filter-out %.h.gch,$(objs))\
    334362                $(filter %.def, $(othersrc))\
    335363                $(foreach p,$(libpath), -L$(p))\
  • 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)\
  • trunk/kBuild/tools/GXX3PLAIN.kmk

    r3121 r3258  
    3737TOOL_GXX3PLAIN_CC  ?= gcc$(HOSTSUFF_EXE)
    3838TOOL_GXX3PLAIN_CXX ?= g++$(HOSTSUFF_EXE)
     39TOOL_GXX3PLAIN_PCH ?= $(TOOL_GXX3PLAIN_CXX)
    3940TOOL_GXX3PLAIN_AS  ?= gcc$(HOSTSUFF_EXE)
    4041TOOL_GXX3PLAIN_AR  ?= ar$(HOSTSUFF_EXE)
     
    7475
    7576TOOL_GXX3PLAIN_CXXOBJSUFF       ?= .o
    76 TOOL_GXX3PLAIN_CXXOBJSUFF       ?= .o
    7777TOOL_GXX3PLAIN_CXXFLAGS         ?=
    7878TOOL_GXX3PLAIN_CXXFLAGS.debug   ?= -g
     
    8282TOOL_GXX3PLAIN_CXXDEFS          ?=
    8383
     84TOOL_GXX3PLAIN_PCHOBJSUFF       ?= .h.gch
     85TOOL_GXX3PLAIN_PCHFLAGS         ?= $(TOOL_GXX3PLAIN_CXXFLAGS)
     86TOOL_GXX3PLAIN_PCHFLAGS.debug   ?= $(TOOL_GXX3PLAIN_CXXFLAGS.debug)
     87TOOL_GXX3PLAIN_PCHFLAGS.profile ?= $(TOOL_GXX3PLAIN_CXXFLAGS.profile)
     88TOOL_GXX3PLAIN_PCHFLAGS.release ?= $(TOOL_GXX3PLAIN_CXXFLAGS.release)
     89TOOL_GXX3PLAIN_PCHINCS          ?= $(TOOL_GXX3PLAIN_CXXINCS)
     90TOOL_GXX3PLAIN_PCHDEFS          ?= $(TOOL_GXX3PLAIN_CXXDEFS)
     91
    8492TOOL_GXX3PLAIN_ASFLAGS          ?= -x assembler-with-cpp
    8593TOOL_GXX3PLAIN_ASFLAGS.debug    ?= -g
     
    108116TOOL_GXX3PLAIN_COMPILE_C_DEPEND =
    109117TOOL_GXX3PLAIN_COMPILE_C_DEPORD =
    110 ifdef KBUILD_USE_KOBJCACHE
    111 TOOL_GXX3PLAIN_COMPILE_C_USES_KOBJCACHE = 1
    112 TOOL_GXX3PLAIN_COMPILE_C_OUTPUT = $(outbase).i
     118TOOL_GXX3PLAIN_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     119TOOL_GXX3PLAIN_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    113120define TOOL_GXX3PLAIN_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_GXX3PLAIN_COMPILE_C_OUTPUT =
    129 define TOOL_GXX3PLAIN_COMPILE_C_CMDS
     133else
    130134        $(QUIET)$(TOOL_GXX3PLAIN_CC) -c\
    131135                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     
    133137                -o $(obj)\
    134138                $(abspath $(source))
     139endif
    135140        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    136141endef
    137 endif # !KBUILD_USE_KOBJCACHE
    138142
    139143
    140144## Compile C++ source.
     145# @param    $(target)   Normalized main target name.
     146# @param    $(source)   Source filename (relative).
     147# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     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_GXX3PLAIN_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     157TOOL_GXX3PLAIN_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     158TOOL_GXX3PLAIN_COMPILE_CXX_DEPORD         =
     159TOOL_GXX3PLAIN_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
     160define TOOL_GXX3PLAIN_COMPILE_CXX_CMDS
     161if "$(use_objcache)" != ""
     162        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
     163                --kObjCache-cpp $(outbase).ii\
     164                $(TOOL_GXX3PLAIN_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)),)\
     166                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     167                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     168                $(abspath $(source))\
     169                --kObjCache-cc $(obj)\
     170                $(TOOL_GXX3PLAIN_CXX) -c\
     171                $(flags) -fpreprocessed $(if-expr defined($(target)_PCH_HDR),-fpch-preprocess,) -x c++\
     172                -o $(obj)\
     173                -
     174else
     175        $(QUIET)$(TOOL_GXX3PLAIN_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
     182        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     183endef
     184
     185
     186## Precompile C++ header.
    141187# @param    $(target)   Normalized main target name.
    142188# @param    $(source)   Source filename (relative).
     
    150196# @param    $(outbase)  Output basename (full). Use this for list files and such.
    151197# @param    $(objsuff)  Object suffix.
    152 TOOL_GXX3PLAIN_COMPILE_CXX_DEPEND =
    153 TOOL_GXX3PLAIN_COMPILE_CXX_DEPORD =
    154 ifdef KBUILD_USE_KOBJCACHE
    155 TOOL_GXX3PLAIN_COMPILE_CXX_USES_KOBJCACHE = 1
    156 TOOL_GXX3PLAIN_COMPILE_CXX_OUTPUT = $(outbase).ii
    157 define TOOL_GXX3PLAIN_COMPILE_CXX_CMDS
    158         $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    159                 --kObjCache-cpp $(outbase).ii\
    160                 $(TOOL_GXX3PLAIN_CXX) -E -o -\
    161                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    162                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    163                 $(abspath $(source))\
    164                 --kObjCache-cc $(obj)\
    165                 $(TOOL_GXX3PLAIN_CXX) -c\
    166                 $(flags) -fpreprocessed -x c++\
    167                 -o $(obj)\
    168                 -
     198TOOL_GXX3PLAIN_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     199TOOL_GXX3PLAIN_COMPILE_PCH_DEPEND =
     200TOOL_GXX3PLAIN_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     201define TOOL_GXX3PLAIN_COMPILE_PCH_CMDS
     202        $(QUIET)$(TOOL_GXX3PLAIN_PCH) -c\
     203                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     204                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     205                -o $(obj)\
     206                $(abspath $(source))
     207        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
    169208        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    170209endef
    171 else # !KBUILD_USE_KOBJCACHE
    172 TOOL_GXX3PLAIN_COMPILE_CXX_OUTPUT =
    173 define TOOL_GXX3PLAIN_COMPILE_CXX_CMDS
    174         $(QUIET)$(TOOL_GXX3PLAIN_CXX) -c\
    175                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    176                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    177                 -o $(obj)\
    178                 $(abspath $(source))
    179         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    180 endef
    181 endif # !KBUILD_USE_KOBJCACHE
    182210
    183211
     
    221249TOOL_GXX3PLAIN_LINK_LIBRARY_DEPORD =
    222250define TOOL_GXX3PLAIN_LINK_LIBRARY_CMDS
    223         $(call xargs,$(QUIET)$(TOOL_GXX3PLAIN_AR) $(flags) $(out),$(objs))
     251        $(call xargs,$(QUIET)$(TOOL_GXX3PLAIN_AR) $(flags) $(out),$(filter-out %.h.gch,$(objs)))
    224252        $(foreach lib,$(othersrc)\
    225253                ,$(NL)$(TAB)$(call MSG_AR_MERGE,$(target),$(out),$(lib)) \
     
    254282TOOL_GXX3PLAIN_LINK_PROGRAM_DEPORD =
    255283define TOOL_GXX3PLAIN_LINK_PROGRAM_CMDS
    256         $(QUIET)$(TOOL_GXX3PLAIN_LD) $(flags) -o $(out) $(objs)\
     284        $(QUIET)$(TOOL_GXX3PLAIN_LD) $(flags) -o $(out) $(filter-out %.h.gch,$(objs))\
    257285                $(filter %.def, $(othersrc))\
    258286                $(foreach p,$(libpath), -L$(p))\
     
    282310        $(QUIET)$(TOOL_GXX3PLAIN_LD) $(TOOL_GXX3PLAIN_LDFLAGS.dll) $(flags) -o $(out)\
    283311                $(if $(filter-out win32 os2, $(KBUILD_TARGET)),$(call TOOL_GXX3PLAIN_LD_SONAME,$(target),$(out)))\
    284                 $(objs)\
     312                $(filter-out %.h.gch,$(objs))\
    285313                $(filter %.def, $(othersrc))\
    286314                $(foreach p,$(libpath), -L$(p))\
     
    313341        $(QUIET)$(if $(TOOL_GXX3PLAIN_LD_SYSMOD.$(bld_trg)),$(TOOL_GXX3PLAIN_LD_SYSMOD.$(bld_trg)),$(TOOL_GXX3PLAIN_LD_SYSMOD))\
    314342                $(TOOL_GXX3PLAIN_LDFLAGS_SYSMOD.$(bld_trg)) $(flags) -o $(out) \
    315                 $(objs)\
     343                $(filter-out %.h.gch,$(objs))\
    316344                $(filter %.def, $(othersrc))\
    317345                $(foreach p,$(libpath), -L$(p))\
  • 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\
  • 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\
  • trunk/kBuild/tools/GXX64.kmk

    r3121 r3258  
    3838TOOL_GXX64_CC  ?= gcc$(HOSTSUFF_EXE) -m64
    3939TOOL_GXX64_CXX ?= g++$(HOSTSUFF_EXE) -m64
     40TOOL_GXX64_PCH ?= $(TOOL_GXX64_CXX)
    4041TOOL_GXX64_AS  ?= gcc$(HOSTSUFF_EXE) -m64
    4142TOOL_GXX64_AR  ?= ar$(HOSTSUFF_EXE)
     
    8081
    8182TOOL_GXX64_CXXOBJSUFF       ?= .o
    82 TOOL_GXX64_CXXOBJSUFF       ?= .o
    8383TOOL_GXX64_CXXFLAGS         ?=
    8484TOOL_GXX64_CXXFLAGS.debug   ?= -g
     
    8888TOOL_GXX64_CXXDEFS          ?=
    8989
     90TOOL_GXX64_PCHOBJSUFF       ?= .h.gch
     91TOOL_GXX64_PCHFLAGS         ?= $(TOOL_GXX64_CXXFLAGS)
     92TOOL_GXX64_PCHFLAGS.debug   ?= $(TOOL_GXX64_CXXFLAGS.debug)
     93TOOL_GXX64_PCHFLAGS.profile ?= $(TOOL_GXX64_CXXFLAGS.profile)
     94TOOL_GXX64_PCHFLAGS.release ?= $(TOOL_GXX64_CXXFLAGS.release)
     95TOOL_GXX64_PCHINCS          ?= $(TOOL_GXX64_CXXINCS)
     96TOOL_GXX64_PCHDEFS          ?= $(TOOL_GXX64_CXXDEFS)
     97
    9098TOOL_GXX64_ASFLAGS          ?= -x assembler-with-cpp
    9199TOOL_GXX64_ASFLAGS.debug    ?= -g
     
    116124TOOL_GXX64_COMPILE_C_DEPEND =
    117125TOOL_GXX64_COMPILE_C_DEPORD =
    118 ifdef KBUILD_USE_KOBJCACHE
    119 TOOL_GXX64_COMPILE_C_USES_KOBJCACHE = 1
    120 TOOL_GXX64_COMPILE_C_OUTPUT = $(outbase).i
     126TOOL_GXX64_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     127TOOL_GXX64_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    121128define TOOL_GXX64_COMPILE_C_CMDS
     129if "$(use_objcache)" != ""
    122130        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    123131                --kObjCache-cpp $(outbase).i\
     
    131139                -o $(obj)\
    132140                -
    133         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    134 endef
    135 else # !KBUILD_USE_KOBJCACHE
    136 TOOL_GXX64_COMPILE_C_OUTPUT =
    137 define TOOL_GXX64_COMPILE_C_CMDS
     141else
    138142        $(QUIET)$(TOOL_GXX64_CC) -c\
    139143                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     
    141145                -o $(obj)\
    142146                $(abspath $(source))
     147endif
    143148        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    144149endef
    145 endif # !KBUILD_USE_KOBJCACHE
    146150
    147151
    148152## Compile C++ source.
     153# @param    $(target)   Normalized main target name.
     154# @param    $(source)   Source filename (relative).
     155# @param    $(obj)      Object file name. This shall be (re)created by the compilation.
     156# @param    $(dep)      Dependcy file. This shall be (re)created by the compilation.
     157# @param    $(flags)    Flags.
     158# @param    $(defs)     Definitions. No -D or something.
     159# @param    $(incs)     Includes. No -I or something.
     160# @param    $(dirdep)   Directory creation dependency.
     161# @param    $(deps)     Other dependencies.
     162# @param    $(outbase)  Output basename (full). Use this for list files and such.
     163# @param    $(objsuff)  Object suffix.
     164TOOL_GXX64_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     165TOOL_GXX64_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     166TOOL_GXX64_COMPILE_CXX_DEPORD         =
     167TOOL_GXX64_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
     168define TOOL_GXX64_COMPILE_CXX_CMDS
     169if "$(use_objcache)" != ""
     170        $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
     171                --kObjCache-cpp $(outbase).ii\
     172                $(TOOL_GXX64_CXX) -E -o - $(if-expr defined($(target)_PCH_HDR)\
     173                ,-fpch-preprocess -Winvalid-pch -I$($(target)_1_GCC_PCH_DIR) -include $(basename $($(target)_1_GCC_PCH_FILE)),)\
     174                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     175                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     176                $(abspath $(source))\
     177                --kObjCache-cc $(obj)\
     178                $(TOOL_GXX64_CXX) -c\
     179                $(flags) -fpreprocessed $(if-expr defined($(target)_PCH_HDR),-fpch-preprocess,) -x c++\
     180                -o $(obj)\
     181                -
     182else
     183        $(QUIET)$(TOOL_GXX64_CXX) -c\
     184                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     185                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     186                -o $(obj) $(if-expr defined($(target)_PCH_HDR) \
     187                ,-Winvalid-pch -include $(basename $($(target)_1_GCC_PCH_FILE)),) \
     188                $(abspath $(source))
     189endif
     190        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
     191endef
     192
     193
     194## Precompile C++ header.
    149195# @param    $(target)   Normalized main target name.
    150196# @param    $(source)   Source filename (relative).
     
    158204# @param    $(outbase)  Output basename (full). Use this for list files and such.
    159205# @param    $(objsuff)  Object suffix.
    160 TOOL_GXX64_COMPILE_CXX_DEPEND =
    161 TOOL_GXX64_COMPILE_CXX_DEPORD =
    162 ifdef KBUILD_USE_KOBJCACHE
    163 TOOL_GXX64_COMPILE_CXX_USES_KOBJCACHE = 1
    164 TOOL_GXX64_COMPILE_CXX_OUTPUT = $(outbase).ii
    165 define TOOL_GXX64_COMPILE_CXX_CMDS
    166         $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
    167                 --kObjCache-cpp $(outbase).ii\
    168                 $(TOOL_GXX64_CXX) -E -o -\
    169                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    170                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    171                 $(abspath $(source))\
    172                 --kObjCache-cc $(obj)\
    173                 $(TOOL_GXX64_CXX) -c\
    174                 $(flags) -fpreprocessed -x c++\
    175                 -o $(obj)\
    176                 -
     206TOOL_GXX64_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     207TOOL_GXX64_COMPILE_PCH_DEPEND =
     208TOOL_GXX64_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     209define TOOL_GXX64_COMPILE_PCH_CMDS
     210        $(QUIET)$(TOOL_GXX64_PCH) -c\
     211                $(flags) $(addprefix -I, $($(target)_1_GCC_PCH_DIR) $(incs)) $(addprefix -D, $(defs))\
     212                -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
     213                -o $(obj)\
     214                $(abspath $(source))
     215        $(INSTALL) --hard-link-files-when-possible -m 0644 -- "$(obj)" "$($(target)_1_GCC_PCH_FILE)"
    177216        $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    178217endef
    179 else # !KBUILD_USE_KOBJCACHE
    180 TOOL_GXX64_COMPILE_CXX_OUTPUT =
    181 define TOOL_GXX64_COMPILE_CXX_CMDS
    182         $(QUIET)$(TOOL_GXX64_CXX) -c\
    183                 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    184                 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
    185                 -o $(obj)\
    186                 $(abspath $(source))
    187         $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
    188 endef
    189 endif # !KBUILD_USE_KOBJCACHE
    190218
    191219
     
    231259        $(QUIET)$(APPEND) $(out).ar-script 'CREATE $(out)'
    232260        $(QUIET)$(APPEND) -n $(out).ar-script \
    233                 $(foreach o,$(objs), 'ADDMOD $(o)') \
     261                $(foreach o,$(filter-out %.h.gch,$(objs)), 'ADDMOD $(o)') \
    234262                $(foreach o,$(othersrc), 'ADDLIB $(o)')
    235263        $(QUIET)$(APPEND) $(out).ar-script 'SAVE'
     
    259287TOOL_GXX64_LINK_PROGRAM_DEPORD =
    260288define TOOL_GXX64_LINK_PROGRAM_CMDS
    261         $(QUIET)$(TOOL_GXX64_LD) $(flags) -o $(out) $(objs)\
     289        $(QUIET)$(TOOL_GXX64_LD) $(flags) -o $(out) $(filter-out %.h.gch,$(objs))\
    262290                $(foreach p,$(libpath), -L$(p))\
    263291                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))\
     
    293321        $(QUIET)$(TOOL_GXX64_LD) $(TOOL_GXX64_LDFLAGS.dll) $(flags) -o $(out)\
    294322                $(if $(filter-out win os2, $(KBUILD_TARGET)),$(call TOOL_GXX64_LD_SONAME,$(target),$(out)))\
    295                 $(objs)\
     323                $(filter-out %.h.gch,$(objs))\
    296324                $(foreach p,$(libpath), -L$(p))\
    297325                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))\
     
    325353TOOL_GXX64_LINK_SYSMOD_DEPORD =
    326354define TOOL_GXX64_LINK_SYSMOD_CMDS
    327         $(QUIET)$(TOOL_GXX64_LD_SYSMOD) $(TOOL_GXX64_LDFLAGS.sysmod) $(flags) -o $(out) $(objs)\
     355        $(QUIET)$(TOOL_GXX64_LD_SYSMOD) $(TOOL_GXX64_LDFLAGS.sysmod) $(flags) -o $(out) $(filter-out %.h.gch,$(objs))\
    328356                $(foreach p,$(libpath), -L$(p))\
    329357                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))\
  • trunk/kBuild/tools/LLVMGXX42MACHO.kmk

    r3121 r3258  
    3939TOOL_LLVMGXX42MACHO_CC        ?= $(TOOL_LLVMGXX42MACHO_PREFIX)gcc$(TOOL_LLVMGXX42MACHO_SUFFIX)
    4040TOOL_LLVMGXX42MACHO_CXX       ?= $(TOOL_LLVMGXX42MACHO_PREFIX)g++$(TOOL_LLVMGXX42MACHO_SUFFIX)
     41TOOL_LLVMGXX42MACHO_PCH ?= $(TOOL_LLVMGXX42MACHO_CXX)
    4142TOOL_LLVMGXX42MACHO_OBJC      ?= $(TOOL_LLVMGXX42MACHO_PREFIX)gcc$(TOOL_LLVMGXX42MACHO_SUFFIX)
    4243TOOL_LLVMGXX42MACHO_OBJCXX    ?= $(TOOL_LLVMGXX42MACHO_PREFIX)gcc$(TOOL_LLVMGXX42MACHO_SUFFIX)
     
    7677TOOL_LLVMGXX42MACHO_CXXINCS          ?=
    7778TOOL_LLVMGXX42MACHO_CXXDEFS          ?=
     79
     80TOOL_LLVMGXX42MACHO_PCHOBJSUFF       ?= .h.gch
     81TOOL_LLVMGXX42MACHO_PCHFLAGS         ?= $(TOOL_LLVMGXX42MACHO_CXXFLAGS)
     82TOOL_LLVMGXX42MACHO_PCHFLAGS.debug   ?= $(TOOL_LLVMGXX42MACHO_CXXFLAGS.debug)
     83TOOL_LLVMGXX42MACHO_PCHFLAGS.profile ?= $(TOOL_LLVMGXX42MACHO_CXXFLAGS.profile)
     84TOOL_LLVMGXX42MACHO_PCHFLAGS.release ?= $(TOOL_LLVMGXX42MACHO_CXXFLAGS.release)
     85TOOL_LLVMGXX42MACHO_PCHINCS          ?= $(TOOL_LLVMGXX42MACHO_CXXINCS)
     86TOOL_LLVMGXX42MACHO_PCHDEFS          ?= $(TOOL_LLVMGXX42MACHO_CXXDEFS)
    7887
    7988TOOL_LLVMGXX42MACHO_OBJCOBJSUFF      ?= .o
     
    155164TOOL_LLVMGXX42MACHO_COMPILE_C_DEPEND =
    156165TOOL_LLVMGXX42MACHO_COMPILE_C_DEPORD =
    157 ifdef KBUILD_USE_KOBJCACHE
    158 TOOL_LLVMGXX42MACHO_COMPILE_C_USES_KOBJCACHE = 1
    159 TOOL_LLVMGXX42MACHO_COMPILE_C_OUTPUT = $(outbase).i
     166TOOL_LLVMGXX42MACHO_COMPILE_C_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).i,)
     167TOOL_LLVMGXX42MACHO_COMPILE_C_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    160168define TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_COMPILE_C_OUTPUT =
    176 define TOOL_LLVMGXX42MACHO_COMPILE_C_CMDS
     181else
    177182        $(QUIET)$(TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_COMPILE_CXX_DEPEND =
    200 TOOL_LLVMGXX42MACHO_COMPILE_CXX_DEPORD =
    201 ifdef KBUILD_USE_KOBJCACHE
    202 TOOL_LLVMGXX42MACHO_COMPILE_CXX_USES_KOBJCACHE = 1
    203 TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_COMPILE_CXX_OUTPUT         = $(if-expr "$(use_objcache)" != "",$(outbase).ii,)
     205TOOL_LLVMGXX42MACHO_COMPILE_CXX_DEPEND         = $($(target)_1_GCC_PCH_FILE)
     206TOOL_LLVMGXX42MACHO_COMPILE_CXX_DEPORD         =
     207TOOL_LLVMGXX42MACHO_COMPILE_CXX_USES_KOBJCACHE = $(if-expr "$(use_objcache)" != "",1,)
    204208define TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_CXX) -E -o -\
     212                $(TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_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_LLVMGXX42MACHO_COMPILE_CXX_OUTPUT =
    220 define TOOL_LLVMGXX42MACHO_COMPILE_CXX_CMDS
     222else
    221223        $(QUIET)$(TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_COMPILE_PCH_OUTPUT = $($(target)_1_GCC_PCH_FILE)
     247TOOL_LLVMGXX42MACHO_COMPILE_PCH_DEPEND =
     248TOOL_LLVMGXX42MACHO_COMPILE_PCH_DEPORD = $($(target)_1_GCC_PCH_DIR)
     249define TOOL_LLVMGXX42MACHO_COMPILE_PCH_CMDS
     250        $(QUIET)$(TOOL_LLVMGXX42MACHO_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_LLVMGXX42MACHO_LINK_LIBRARY_DEPORD =
    357386define TOOL_LLVMGXX42MACHO_LINK_LIBRARY_CMDS
    358         $(if $(strip $(objs)),$(call xargs,$(QUIET)$(TOOL_LLVMGXX42MACHO_AR) $(flags) $(out),$(objs)))
     387        $(if $(strip $(filter-out %.h.gch,$(objs))),$(call xargs,$(QUIET)$(TOOL_LLVMGXX42MACHO_AR) $(flags) $(out),$(filter-out %.h.gch,$(objs))))
    359388        $(foreach lib,$(othersrc)\
    360389                ,$(NL)$(TAB)$(call MSG_AR_MERGE,$(target),$(out),$(lib)) \
     
    389418TOOL_LLVMGXX42MACHO_LINK_PROGRAM_DEPORD =
    390419define TOOL_LLVMGXX42MACHO_LINK_PROGRAM_CMDS
    391         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     420        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    392421        $(QUIET)$(TOOL_LLVMGXX42MACHO_LD) $(flags) -o $(out)\
    393422                -filelist $(outbase).rsp\
     
    420449TOOL_LLVMGXX42MACHO_LINK_DLL_DEPORD =
    421450define TOOL_LLVMGXX42MACHO_LINK_DLL_CMDS
    422         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     451        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    423452        $(QUIET)$(TOOL_LLVMGXX42MACHO_LD) $(TOOL_LLVMGXX42MACHO_LDFLAGS.dll) $(flags) -o $(out)\
    424453                $(call TOOL_LLVMGXX42MACHO_LD_SONAME,$(target),$(out))\
     
    452481TOOL_LLVMGXX42MACHO_LINK_SYSMOD_DEPORD =
    453482define TOOL_LLVMGXX42MACHO_LINK_SYSMOD_CMDS
    454         $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     483        $(QUIET)$(APPEND) -n $(outbase).rsp $(filter-out %.h.gch,$(objs))
    455484        $(QUIET)$(TOOL_LLVMGXX42MACHO_LD_SYSMOD) $(TOOL_LLVMGXX42MACHO_LDFLAGS.sysmod) $(flags) -o $(out)\
    456485                -filelist $(outbase).rsp\
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette