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/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)))\
Note: See TracChangeset for help on using the changeset viewer.