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