Ignore:
Timestamp:
Sep 21, 2016, 9:04:45 PM (9 years ago)
Author:
bird
Message:

Target level precompiled header support for VCC100*.

File:
1 edited

Legend:

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

    r2953 r2954  
    106106TOOL_VCC100AMD64_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2)
    107107
     108
     109# General Properties used by kBuild
    108110TOOL_VCC100AMD64_COBJSUFF         ?= .obj
    109111TOOL_VCC100AMD64_CFLAGS           ?= -TC -nologo -Zi
     
    192194# @param    $(outbase)  Output basename (full). Use this for list files and such.
    193195# @param    $(objsuff)  Object suffix.
    194 TOOL_VCC100AMD64_COMPILE_CXX_DEPEND =
     196TOOL_VCC100AMD64_COMPILE_CXX_DEPEND = $($(target)_1_VCC_PCH_FILE)
    195197TOOL_VCC100AMD64_COMPILE_CXX_DEPORD =
    196198TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT =
    197 TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT_MAYBE = $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,idb)
     199TOOL_VCC100AMD64_COMPILE_CXX_OUTPUT_MAYBE = $(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB)\
     200        ,,$(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC100AMD64_PDB, $(outbase)-obj,idb))
    198201ifdef TOOL_VCC100AMD64_KSUBMIT
    199202 TOOL_VCC100AMD64_COMPILE_CXX_DONT_PURGE_OUTPUT := 1 # speed
     
    202205                -- $(TOOL_VCC100AMD64_CXX) -c\
    203206                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    204                 -Fd$(outbase)-obj.pdb \
     207                $(if-expr defined($(target)_VCC_PCH_HDR)\
     208                ,-FI$($(target)_VCC_PCH_HDR) -Yu$($(target)_VCC_PCH_HDR) -Fp$($(target)_1_VCC_PCH_FILE),)\
     209                -Fd$(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB),$($(target)_VCC_COMMON_OBJ_PDB),$(outbase)-obj.pdb) \
    205210                -Fo$(obj)\
    206211                $(subst /,\\,$(abspath $(source)))
     
    210215        $(QUIET)$(TOOL_VCC100AMD64_CXX) -c\
    211216                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
    212                 -Fd$(outbase)-obj.pdb \
     217                $(if-expr defined($(target)_VCC_PCH_HDR)\
     218                ,-FI$($(target)_VCC_PCH_HDR) -Yu$($(target)_VCC_PCH_HDR) -Fp$($(target)_1_VCC_PCH_FILE),)\
     219                -Fd$(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB),$($(target)_VCC_COMMON_OBJ_PDB),$(outbase)-obj.pdb) \
    213220                -Fo$(obj)\
    214221                $(subst /,\\,$(abspath $(source)))
     
    216223 endef
    217224endif # !TOOL_VCC100AMD64_KSUBMIT
     225
     226
     227#
     228# Helper tool for creating the precompiled C++ header.
     229#
     230# It only have the C++ compile bits and it's purpose is to skip bits
     231# related _1_VCC_PCH_FILE and add -Yc.
     232#
     233TOOL_VCC100AMD64-PCH                         := Helper for creating precompiled header using CXX handling.
     234TOOL_VCC100AMD64-PCH_EXTENDS                 := VCC100AMD64
     235TOOL_VCC100AMD64-PCH_CXXOBJSUFF              := .obj
     236TOOL_VCC100AMD64-PCH_CXXINCS                  = $(TOOL_VCC100AMD64_CXXINCS)
     237TOOL_VCC100AMD64-PCH_COMPILE_CXX_DEPEND       = $(NO_SUCH_VARIABLE)
     238TOOL_VCC100AMD64-PCH_COMPILE_CXX_DEPORD       = $(NO_SUCH_VARIABLE)
     239TOOL_VCC100AMD64-PCH_COMPILE_CXX_OUTPUT       = $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB)
     240TOOL_VCC100AMD64-PCH_COMPILE_CXX_OUTPUT_MAYBE = $(NO_SUCH_VARIABLE)
     241ifdef TOOL_VCC100AMD64_KSUBMIT
     242 define TOOL_VCC100AMD64-PCH_COMPILE_CXX_CMDS
     243        $(QUIET)$(TOOL_VCC100AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\
     244                -- $(TOOL_VCC100AMD64_CXX) -c -Yc\
     245                $(filter-out $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     246               -Fp$($(target)_1_VCC_PCH_FILE) \
     247                -Fd$($(target)_1_VCC_COMMON_OBJ_PDB) \
     248                -Fo$(obj)\
     249               -TP \
     250                $(subst /,\\,$(abspath $(source)))
     251 endef
     252else
     253 define TOOL_VCC100AMD64-PCH_COMPILE_CXX_CMDS
     254        $(QUIET)$(TOOL_VCC100AMD64_CXX) -c -Yc\
     255                $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
     256               -Fp$($(target)_1_VCC_PCH_FILE) \
     257                -Fd$($(target)_1_VCC_COMMON_OBJ_PDB) \
     258                -Fo$(obj)\
     259               -TP \
     260                $(subst /,\\,$(abspath $(source)))
     261        $(QUIET)$(DEP_OBJ) -f -s -q  -e .pch -o $(dep) -t $(obj) $(obj)
     262
     263 endef
     264endif # !TOOL_VCC100AMD64_KSUBMIT
     265
    218266
    219267## @todo configure the assembler template.
Note: See TracChangeset for help on using the changeset viewer.