Changeset 3323 in kBuild
- Timestamp:
- Apr 16, 2020 11:10:45 PM (5 years ago)
- Location:
- trunk/kBuild
- Files:
-
- 1 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/kBuild/tools/VCC141.kmk
r3313 r3323 1 1 # $Id$ 2 2 ## @file 3 # kBuild Tool Config - Visual C++ 1 2.0 (aka Visual 2013 and MSC v18), targeting $(KBUILD_TARGET).4 # 5 6 # 7 # Copyright (c) 2004-20 17 knut st. osmundsen <bird-kBuild-spam-xviiv@anduin.net>3 # kBuild Tool Config - Visual C++ 14.1 (aka Visual 2017 and MSC v19.10), targeting AMD64. 4 # 5 6 # 7 # Copyright (c) 2004-2020 knut st. osmundsen <bird-kBuild-spam-xx@anduin.net> 8 8 # 9 9 # This file is part of kBuild. … … 32 32 # 33 33 34 TOOL_VCC120 := Visual C++ 12.0 (aka Visual 2013 and MSC v18), targeting $(KBUILD_TARGET). 35 34 TOOL_VCC141 := Visual C++ 14.1 (aka Visual 2017 and MSC v19.1), targeting $(KBUILD_TARGET). 35 36 ifndef INCLUDED_WIN_COMMON_KMK 37 include $(KBUILD_PATH)/win-common.kmk 38 endif 39 40 # 36 41 # Tool Specific Properties 37 ifndef PATH_TOOL_VCC120 38 PATH_TOOL_VCC120 := $(wildcard $(KBUILD_DEVTOOLS_TRG)/vcc/v12*) 39 ifeq ($(PATH_TOOL_VCC120),) 40 PATH_TOOL_VCC120 := $(wildcard $(KBUILD_DEVTOOLS)/win.x86/vcc/v12*) 42 # 43 ifndef PATH_TOOL_VCC141 44 PATH_TOOL_VCC141 := $(firstfile $(rsortfiles $(qwildcard ,$(KBUILD_DEVTOOLS)/win.amd64/vcc/v141*))) 45 ifeq ($(PATH_TOOL_VCC141),) 46 PATH_TOOL_VCC141 := $(firstfile $(rsortfiles $(qwildcard ,$(KBUILD_DEVTOOLS)/win.x86/vcc/v141*))) 41 47 endif 42 ifeq ($(PATH_TOOL_VCC1 20),)43 PATH_TOOL_VCC1 20 := $(wildcard $(KBUILD_DEVTOOLS)/x86.win32/vcc/v12*)48 ifeq ($(PATH_TOOL_VCC141),) 49 PATH_TOOL_VCC141 := $(PATH_TOOL_VCC141X86) 44 50 endif 45 ifeq ($(PATH_TOOL_VCC1 20),)46 PATH_TOOL_VCC1 20 := $(wildcard $(KBUILD_DEVTOOLS)/win.amd64/vcc/v12*)51 ifeq ($(PATH_TOOL_VCC141),) 52 PATH_TOOL_VCC141 := $(PATH_TOOL_VCC141) 47 53 endif 48 ifeq ($(PATH_TOOL_VCC120),) 49 PATH_TOOL_VCC120 := $(lastword $(sort $(PATH_TOOL_VCC120))) 54 ifeq ($(PATH_TOOL_VCC141),) 55 PATH_TOOL_VCC141 := $(firstfile $(rsortfiles $(qwildcard ,$(KBUILD_DEVTOOLS)/win.x86/vcc/v141*))) 56 ifeq ($(PATH_TOOL_VCC141),) 57 PATH_TOOL_VCC141 := $(firstfile $(foreach ver,2017 2019,$(foreachfile progfilesdir,$(WINCMN_PROGRAM_FILES_LIST)\ 58 , $(rsortfiles $(qwildcard ,$(progfilesdir)/Microsoft\ Visual\ Studio/$(ver)/BuildTools/VC/Tools/MSVC/14.1?.*))))) 59 ifeq ($(PATH_TOOL_VCC141),) 60 $(warning kBuild: PATH_TOOL_VCC141 cannot be determined!) 61 PATH_TOOL_VCC141 := $(KBUILD_DEVTOOLS)/win.x86/vcc/v141 62 endif 63 endif 50 64 endif 51 # if not found, we'll enter 'pathless' mode.52 65 else 53 66 # Resolve any fancy stuff once and for all. 54 PATH_TOOL_VCC120 := $(PATH_TOOL_VCC120) 55 endif 56 ifneq ($(PATH_TOOL_VCC120),) 57 if "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "win.amd64" && exists("$(PATH_TOOL_VCC120AMD64)/bin/amd64") # Missing in express edition. 58 PATH_TOOL_VCC120_BIN.amd64 ?= $(PATH_TOOL_VCC120)/bin/amd64 59 else 60 PATH_TOOL_VCC120_BIN.amd64 ?= $(PATH_TOOL_VCC120)/bin/x86_amd64 67 PATH_TOOL_VCC141 := $(PATH_TOOL_VCC141) 68 endif 69 70 ifndef PATH_TOOL_VCC141_BASE_BIN 71 PATH_TOOL_VCC141_BASE_BIN := $(PATH_TOOL_VCC141)/bin 72 endif 73 ifndef PATH_TOOL_VCC141_HOST_BIN 74 PATH_TOOL_VCC141_HOST_BIN := $(PATH_TOOL_VCC141_BASE_BIN)/Host$(WINCMN_MAP_ARCH.$(KBUILD_HOST_ARCH)) 75 endif 76 ifndef PATH_TOOL_VCC141_BIN 77 PATH_TOOL_VCC141_BIN := $(PATH_TOOL_VCC141_HOST_BIN)/$(WINCMN_MAP_ARCH.$(KBUILD_TARGET_ARCH)) 78 endif 79 PATH_TOOL_VCC141_BIN_QSH := $(requote sh,$(PATH_TOOL_VCC141_BIN)) 80 81 PATH_TOOL_VCC141_LIB.amd64 ?= $(PATH_TOOL_VCC141)/lib/x64 82 PATH_TOOL_VCC141_LIB.arm32 ?= $(PATH_TOOL_VCC141)/lib/arm 83 PATH_TOOL_VCC141_LIB.arm64 ?= $(PATH_TOOL_VCC141)/lib/arm64 84 PATH_TOOL_VCC141_LIB.x86 ?= $(PATH_TOOL_VCC141)/lib/x86 85 86 PATH_TOOL_VCC141_ONECORE_LIB.amd64 ?= $(PATH_TOOL_VCC141)/lib/onecore/x64 87 PATH_TOOL_VCC141_ONECORE_LIB.arm32 ?= $(PATH_TOOL_VCC141)/lib/onecore/arm 88 PATH_TOOL_VCC141_ONECORE_LIB.arm64 ?= $(PATH_TOOL_VCC141)/lib/onecore/arm64 89 PATH_TOOL_VCC141_ONECORE_LIB.x86 ?= $(PATH_TOOL_VCC141)/lib/onecore/x86 90 91 PATH_TOOL_VCC141_INC ?= $(PATH_TOOL_VCC141)/include 92 93 PATH_TOOL_VCC141_ATLMFC ?= $(PATH_TOOL_VCC141)/atlmfc 94 PATH_TOOL_VCC141_ATLMFC_INC ?= $(PATH_TOOL_VCC141_ATLMFC)/include 95 PATH_TOOL_VCC141_ATLMFC_LIB.x86 ?= $(PATH_TOOL_VCC141_ATLMFC)/lib/x86 96 PATH_TOOL_VCC141_ATLMFC_LIB.amd64 ?= $(PATH_TOOL_VCC141_ATLMFC)/lib/x64 97 98 TOOL_VCC141_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/cl.exe 99 TOOL_VCC141_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/cl.exe 100 TOOL_VCC141_AS ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/ml64.exe 101 #TOOL_VCC141_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/lib.exe - just an exec wrapper for the below 102 TOOL_VCC141_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/link.exe /LIB 103 TOOL_VCC141_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/link.exe 104 TOOL_VCC141_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/dumpbin.exe 105 TOOL_VCC141_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/editbin.exe 106 107 TOOL_VCC141_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED) 108 TOOL_VCC141_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED) 109 110 undefine TOOL_VCC141_USE_KSUBMIT # for now 111 ifdef TOOL_VCC141_USE_KSUBMIT 112 ifeq ($(KBUILD_HOST),win) 113 ifneq ($(substr $(qdir un,$(PATH_TOOL_VCC141_BIN)),-3),64/) 114 TOOL_VCC141_KSUBMIT ?= kmk_builtin_kSubmit --64-bit 115 TOOL_VCC141_KSUBMIT_DD = $(TOOL_VCC141_KSUBMIT) -- 116 else 117 TOOL_VCC141_KSUBMIT ?= kmk_builtin_kSubmit --32-bit 118 TOOL_VCC141_KSUBMIT_DD = $(TOOL_VCC141_KSUBMIT) -- 119 endif 61 120 endif 62 PATH_TOOL_VCC120_BIN.x86 ?= $(PATH_TOOL_VCC120)/bin 63 PATH_TOOL_VCC120_BIN ?= $(PATH_TOOL_VCC120_BIN.$(KBUILD_TARGET_ARCH)) 64 PATH_TOOL_VCC120_LIB.amd64 ?= $(PATH_TOOL_VCC120)/lib/amd64 65 PATH_TOOL_VCC120_LIB.x86 ?= $(PATH_TOOL_VCC120)/lib 66 PATH_TOOL_VCC120_LIB ?= $(PATH_TOOL_VCC120_LIB.$(KBUILD_TARGET_ARCH)) 67 PATH_TOOL_VCC120_INC ?= $(PATH_TOOL_VCC120)/include 68 PATH_TOOL_VCC120_ATLMFC ?= $(PATH_TOOL_VCC120X86)/atlmfc 69 PATH_TOOL_VCC120_ATLMFC_INC ?= $(PATH_TOOL_VCC120_ATLMFC)/include 70 PATH_TOOL_VCC120_ATLMFC_LIB.amd64 ?= $(PATH_TOOL_VCC120_ATLMFC)/lib 71 PATH_TOOL_VCC120_ATLMFC_LIB.x86 ?= $(PATH_TOOL_VCC120_ATLMFC)/lib/amd64 72 PATH_TOOL_VCC120_ATLMFC_LIB ?= $(PATH_TOOL_VCC120_ATLMFC_LIB.$(KBUILD_TARGET_ARCH)) 73 TOOL_VCC120_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/cl.exe 74 TOOL_VCC120_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/cl.exe 75 TOOL_VCC120_AS ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/ml64.exe 76 TOOL_VCC120_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/lib.exe 77 TOOL_VCC120_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/link.exe 78 TOOL_VCC120_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/dumpbin.exe 79 TOOL_VCC120_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120_BIN)/editbin.exe 80 else 81 # Pathless, relies on the environment. 82 TOOL_VCC120_CC ?= $(EXEC_X86_WIN32) cl.exe 83 TOOL_VCC120_CXX ?= $(EXEC_X86_WIN32) cl.exe 84 TOOL_VCC120_AS ?= $(EXEC_X86_WIN32) ml64.exe 85 TOOL_VCC120_AR ?= $(EXEC_X86_WIN32) lib.exe 86 TOOL_VCC120_LD ?= $(EXEC_X86_WIN32) link.exe 87 TOOL_VCC120_DUMPBIN ?= $(EXEC_X86_WIN32) dumpbin.exe 88 TOOL_VCC120_EDITBIN ?= $(EXEC_X86_WIN32) editbin.exe 89 endif 90 TOOL_VCC120_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC120_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC120_RC_CACHED) 91 TOOL_VCC120_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC120_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC120_MT_CACHED) 92 93 # The following in duplicated in VCC120.kmk and VCC120X86.kmk. 94 TOOL_VCC120_FN_FIND_SDK_TOOL_SUB = $(eval $3 := $(firstword \ 95 $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$2)) \ 96 $(if-expr defined(PATH_SDK_WINPSDK_BIN) , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$2)) \ 97 $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$2)) \ 98 $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$2)) \ 121 endif 122 123 ## Helper for finding rc.exe and mt.exe in the SDK. 124 TOOL_VCC141_FN_FIND_SDK_TOOL_SUB = $(eval $3 := $(firstfile \ 125 $(if-expr defined(PATH_SDK_WINSDK10_BIN) , $(qwildcard ,$(PATH_SDK_WINSDK10_BIN)/$2)) \ 126 $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(qwildcard ,$(PATH_SDK_WINPSDK71_BIN)/$2)) \ 127 $(if-expr defined(PATH_SDK_WINPSDK_BIN) , $(qwildcard ,$(PATH_SDK_WINPSDK_BIN)/$2)) \ 128 $(rsortfiles $(qwildcard ,$(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$2)) \ 129 $(rsortfiles $(qwildcard ,$(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$2)) \ 99 130 $1)) 100 TOOL_VCC120_FN_FIND_SDK_TOOL = $(if-expr !defined($3),$(TOOL_VCC120_FN_FIND_SDK_TOOL_SUB),)$($3) 101 102 ## Disabled fast DEP_IDB based dependencies. 103 #VCC120_OLD_DEPS = 1 131 TOOL_VCC141_FN_FIND_SDK_TOOL = $(if-expr !defined($3),$(TOOL_VCC141_FN_FIND_SDK_TOOL_SUB),)$($3) 104 132 105 133 ## Constructs the correct .pdb name (the name is lowercased). 106 134 # @param $(1) Base name, no extention. 107 135 # @param $(2) The extension. 108 TOOL_VCC120_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2) 109 110 111 # General Properties used by kBuild 112 TOOL_VCC120_COBJSUFF ?= .obj 113 TOOL_VCC120_CFLAGS ?= -TC -nologo -Zi 114 TOOL_VCC120_CFLAGS.debug ?= 115 TOOL_VCC120_CFLAGS.dbgopt ?= -O2 116 TOOL_VCC120_CFLAGS.release ?= -O2 117 TOOL_VCC120_CFLAGS.profile ?= -O2 118 TOOL_VCC120_CINCS ?= $(PATH_TOOL_VCC120_INC) 119 TOOL_VCC120_CDEFS ?= 120 121 TOOL_VCC120_CXXOBJSUFF ?= .obj 122 TOOL_VCC120_CXXFLAGS ?= -TP -nologo -Zi 123 TOOL_VCC120_CXXFLAGS.debug ?= 124 TOOL_VCC120_CXXFLAGS.dbgopt ?= -O2 125 TOOL_VCC120_CXXFLAGS.release ?= -O2 126 TOOL_VCC120_CXXFLAGS.profile ?= -O2 127 TOOL_VCC120_CXXINCS ?= $(PATH_TOOL_VCC120_INC) $(PATH_TOOL_VCC120_ATLMFC_INC) 128 TOOL_VCC120_CXXDEFS ?= 129 130 TOOL_VCC120_ASOBJSUFF ?= .obj 131 132 TOOL_VCC120_RCOBJSUFF ?= .res 133 TOOL_VCC120_RCINCS ?= $(PATH_TOOL_VCC120_INC) $(PATH_TOOL_VCC120_ATLMFC_INC) 134 135 TOOL_VCC120_ARFLAGS.amd64 ?= -machine:amd64 136 TOOL_VCC120_ARFLAGS.x86 ?= -machine:x86 137 TOOL_VCC120_ARFLAGS ?= -nologo 138 TOOL_VCC120_ARLIBSUFF ?= .lib 139 140 TOOL_VCC120_LDFLAGS.amd64 ?= -machine:amd64 141 TOOL_VCC120_LDFLAGS.x86 ?= -machine:x86 142 TOOL_VCC120_LDFLAGS ?= -nologo 143 TOOL_VCC120_LDFLAGS.debug ?= -debug 144 TOOL_VCC120_LDFLAGS.dbgopt ?= -debug 145 TOOL_VCC120_LDFLAGS.profile ?= -debug 146 TOOL_VCC120_LDFLAGS.release ?= 147 TOOL_VCC120_LIBPATH.amd64 ?= $(PATH_TOOL_VCC120_LIB.amd64) $(PATH_TOOL_VCC120_ATLMFC_LIB.amd64) 148 TOOL_VCC120_LIBPATH.x86 ?= $(PATH_TOOL_VCC120_LIB.x86) $(PATH_TOOL_VCC120_ATLMFC_LIB.x86) 136 TOOL_VCC141_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2) 137 138 139 # 140 # Properties used by kBuild 141 # 142 TOOL_VCC141_COBJSUFF ?= .obj 143 TOOL_VCC141_CFLAGS ?= -TC -nologo -Zi 144 TOOL_VCC141_CFLAGS.debug ?= 145 TOOL_VCC141_CFLAGS.dbgopt ?= -O2 146 TOOL_VCC141_CFLAGS.release ?= -O2 147 TOOL_VCC141_CFLAGS.profile ?= -O2 148 TOOL_VCC141_CINCS ?= $(PATH_TOOL_VCC141_INC) 149 TOOL_VCC141_CDEFS ?= 150 151 TOOL_VCC141_CXXOBJSUFF ?= .obj 152 TOOL_VCC141_CXXFLAGS ?= -TP -nologo -Zi 153 TOOL_VCC141_CXXFLAGS.debug ?= 154 TOOL_VCC141_CXXFLAGS.dbgopt ?= -O2 155 TOOL_VCC141_CXXFLAGS.release ?= -O2 156 TOOL_VCC141_CXXFLAGS.profile ?= -O2 157 TOOL_VCC141_CXXINCS ?= $(PATH_TOOL_VCC141_INC) $(PATH_TOOL_VCC141_ATLMFC_INC) 158 TOOL_VCC141_CXXDEFS ?= 159 160 TOOL_VCC141_ASOBJSUFF ?= .obj 161 162 TOOL_VCC141_RCOBJSUFF ?= .res 163 TOOL_VCC141_RCINCS ?= $(PATH_TOOL_VCC141_INC) $(PATH_TOOL_VCC141_ATLMFC_INC) 164 165 TOOL_VCC141_ARFLAGS ?= -nologo 166 TOOL_VCC141_ARFLAGS.x86 ?= -machine:x86 167 TOOL_VCC141_ARFLAGS.amd64 ?= -machine:amd64 168 TOOL_VCC141_ARFLAGS.arm32 ?= -machine:arm 169 TOOL_VCC141_ARLIBSUFF ?= .lib 170 171 TOOL_VCC141_LDFLAGS ?= -nologo 172 TOOL_VCC141_LDFLAGS.x86 ?= -machine:x86 173 TOOL_VCC141_LDFLAGS.amd64 ?= -machine:amd64 174 TOOL_VCC141_LDFLAGS.arm32 ?= -machine:arm 175 TOOL_VCC141_LDFLAGS.debug ?= -debug 176 TOOL_VCC141_LDFLAGS.dbgopt ?= -debug 177 TOOL_VCC141_LDFLAGS.profile ?= -debug 178 TOOL_VCC141_LDFLAGS.release ?= 149 179 150 180 … … 163 193 # @param $(outbase) Output basename (full). Use this for list files and such. 164 194 # @param $(objsuff) Object suffix. 165 TOOL_VCC120_COMPILE_C_DEPEND = 166 TOOL_VCC120_COMPILE_C_DEPORD = 167 TOOL_VCC120_COMPILE_C_OUTPUT = 168 TOOL_VCC120_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC120_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC120_PDB, $(outbase)-obj,idb) 169 define TOOL_VCC120_COMPILE_C_CMDS 170 $(QUIET)$(TOOL_VCC120_CC) -c\ 171 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 195 TOOL_VCC141_COMPILE_C_DEPEND = 196 TOOL_VCC141_COMPILE_C_DEPORD = 197 TOOL_VCC141_COMPILE_C_OUTPUT = 198 TOOL_VCC141_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC141_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC141_PDB, $(outbase)-obj,idb) 199 ifdef TOOL_VCC141_KSUBMIT 200 TOOL_VCC141_COMPILE_C_DONT_PURGE_OUTPUT := 1 # speed 201 define TOOL_VCC141_COMPILE_C_CMDS 202 $(QUIET)$(TOOL_VCC141_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\ 203 -- $(TOOL_VCC141_CC) -c\ 204 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 172 205 -Fd$(outbase)-obj.pdb \ 173 206 -Fo$(obj)\ 174 207 $(subst /,\\,$(abspath $(source))) 208 endef 209 else 210 define TOOL_VCC141_COMPILE_C_CMDS 211 $(QUIET)$(TOOL_VCC141_CC) -c\ 212 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 213 -Fd$(outbase)-obj.pdb \ 214 -Fo$(obj)\ 215 $(subst /,\\,$(abspath $(source))) 175 216 $(QUIET)$(DEP_OBJ) -f -s -q -o $(dep) -t $(obj) $(obj) 176 endef 217 endef 218 endif # !TOOL_VCC141_KSUBMIT 177 219 178 220 … … 190 232 # @param $(outbase) Output basename (full). Use this for list files and such. 191 233 # @param $(objsuff) Object suffix. 192 TOOL_VCC120_COMPILE_CXX_DEPEND = $($(target)_1_VCC_PCH_FILE) 193 TOOL_VCC120_COMPILE_CXX_DEPORD = 194 TOOL_VCC120_COMPILE_CXX_OUTPUT = 195 TOOL_VCC120_COMPILE_CXX_OUTPUT_MAYBE = $(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB)\ 196 ,,$(call TOOL_VCC120_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC120_PDB, $(outbase)-obj,idb)) 197 define TOOL_VCC120_COMPILE_CXX_CMDS 198 $(QUIET)$(TOOL_VCC120_CXX) -c\ 199 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 234 TOOL_VCC141_COMPILE_CXX_DEPEND = $($(target)_1_VCC_PCH_FILE) 235 TOOL_VCC141_COMPILE_CXX_DEPORD = 236 TOOL_VCC141_COMPILE_CXX_OUTPUT = 237 TOOL_VCC141_COMPILE_CXX_OUTPUT_MAYBE = $(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB)\ 238 ,,$(call TOOL_VCC141_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC141_PDB, $(outbase)-obj,idb)) 239 ifdef TOOL_VCC141_KSUBMIT 240 TOOL_VCC141_COMPILE_CXX_DONT_PURGE_OUTPUT := 1 # speed 241 define TOOL_VCC141_COMPILE_CXX_CMDS 242 $(QUIET)$(TOOL_VCC141_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\ 243 -- $(TOOL_VCC141_CXX) -c\ 244 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 200 245 $(if-expr defined($(target)_PCH_HDR)\ 201 246 ,-FI$($(target)_PCH_HDR) -Yu$($(target)_PCH_HDR) -Fp$($(target)_1_VCC_PCH_FILE) -FS,)\ … … 203 248 -Fo$(obj)\ 204 249 $(subst /,\\,$(abspath $(source))) 250 endef 251 else 252 define TOOL_VCC141_COMPILE_CXX_CMDS 253 $(QUIET)$(TOOL_VCC141_CXX) -c\ 254 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 255 $(if-expr defined($(target)_PCH_HDR)\ 256 ,-FI$($(target)_PCH_HDR) -Yu$($(target)_PCH_HDR) -Fp$($(target)_1_VCC_PCH_FILE) -FS,)\ 257 -Fd$(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB),$($(target)_1_VCC_COMMON_OBJ_PDB),$(outbase)-obj.pdb) \ 258 -Fo$(obj)\ 259 $(subst /,\\,$(abspath $(source))) 205 260 $(QUIET)$(DEP_OBJ) -f -s -q -o $(dep) -t $(obj) $(obj) 206 endef 261 endef 262 endif # !TOOL_VCC141_KSUBMIT 207 263 208 264 … … 213 269 # related _1_VCC_PCH_FILE and add -Yc. 214 270 # 215 TOOL_VCC120-PCH := Helper for creating precompiled header using CXX handling. 216 TOOL_VCC120-PCH_EXTENDS := VCC120 217 TOOL_VCC120-PCH_CXXOBJSUFF := .obj 218 TOOL_VCC120-PCH_CXXINCS = $(TOOL_VCC120_CXXINCS) 219 TOOL_VCC120-PCH_CXXFLAGS = $(TOOL_VCC120_CXXFLAGS) -FS 220 TOOL_VCC120-PCH_CXXFLAGS.debug = $(TOOL_VCC120_CXXFLAGS.debug) 221 TOOL_VCC120-PCH_CXXFLAGS.dbgopt = $(TOOL_VCC120_CXXFLAGS.dbgopt) 222 TOOL_VCC120-PCH_CXXFLAGS.release = $(TOOL_VCC120_CXXFLAGS.release) 223 TOOL_VCC120-PCH_CXXFLAGS.profile = $(TOOL_VCC120_CXXFLAGS.profile) 224 TOOL_VCC120-PCH_COMPILE_CXX_DEPEND = $(NO_SUCH_VARIABLE) 225 TOOL_VCC120-PCH_COMPILE_CXX_DEPORD = $(NO_SUCH_VARIABLE) 226 TOOL_VCC120-PCH_COMPILE_CXX_OUTPUT = $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 227 TOOL_VCC120-PCH_COMPILE_CXX_OUTPUT_MAYBE = $(NO_SUCH_VARIABLE) 228 ifdef TOOL_VCC120_KSUBMIT 229 define TOOL_VCC120-PCH_COMPILE_CXX_CMDS 230 $(QUIET)$(TOOL_VCC120_KSUBMIT) --no-pch-caching -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\ 231 -- $(TOOL_VCC120_CXX) -c -Yc\ 232 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 271 TOOL_VCC141-PCH := Helper for creating precompiled header using CXX handling. 272 TOOL_VCC141-PCH_EXTENDS := VCC141 273 TOOL_VCC141-PCH_CXXOBJSUFF := .obj 274 TOOL_VCC141-PCH_CXXINCS = $(TOOL_VCC141_CXXINCS) 275 TOOL_VCC141-PCH_CXXFLAGS = $(TOOL_VCC141_CXXFLAGS) -FS 276 TOOL_VCC141-PCH_CXXFLAGS.debug = $(TOOL_VCC141_CXXFLAGS.debug) 277 TOOL_VCC141-PCH_CXXFLAGS.dbgopt = $(TOOL_VCC141_CXXFLAGS.dbgopt) 278 TOOL_VCC141-PCH_CXXFLAGS.release = $(TOOL_VCC141_CXXFLAGS.release) 279 TOOL_VCC141-PCH_CXXFLAGS.profile = $(TOOL_VCC141_CXXFLAGS.profile) 280 TOOL_VCC141-PCH_COMPILE_CXX_DEPEND = $(NO_SUCH_VARIABLE) 281 TOOL_VCC141-PCH_COMPILE_CXX_DEPORD = $(NO_SUCH_VARIABLE) 282 TOOL_VCC141-PCH_COMPILE_CXX_OUTPUT = $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 283 TOOL_VCC141-PCH_COMPILE_CXX_OUTPUT_MAYBE = $(NO_SUCH_VARIABLE) 284 ifdef TOOL_VCC141_KSUBMIT 285 define TOOL_VCC141-PCH_COMPILE_CXX_CMDS 286 $(QUIET)$(RM) -f -- $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 287 $(QUIET)$(TOOL_VCC141_KSUBMIT) --no-pch-caching -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\ 288 -- $(TOOL_VCC141_CXX) -c -Yc\ 289 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 233 290 -Fp$($(target)_1_VCC_PCH_FILE) \ 234 291 -Fd$($(target)_1_VCC_COMMON_OBJ_PDB) \ … … 238 295 endef 239 296 else 240 define TOOL_VCC120-PCH_COMPILE_CXX_CMDS 241 $(QUIET)$(TOOL_VCC120_CXX) -c -Yc\ 242 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 297 define TOOL_VCC141-PCH_COMPILE_CXX_CMDS 298 $(QUIET)$(RM) -f -- $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 299 $(QUIET)$(TOOL_VCC141_CXX) -c -Yc\ 300 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 243 301 -Fp$($(target)_1_VCC_PCH_FILE) \ 244 302 -Fd$($(target)_1_VCC_COMMON_OBJ_PDB) \ … … 249 307 250 308 endef 251 endif # !TOOL_VCC1 20_KSUBMIT309 endif # !TOOL_VCC141_KSUBMIT 252 310 253 311 … … 267 325 # @param $(outbase) Output basename (full). Use this for list files and such. 268 326 # @param $(objsuff) Object suffix. 269 TOOL_VCC1 20_COMPILE_RC_OUTPUT=270 TOOL_VCC1 20_COMPILE_RC_DEPEND =271 TOOL_VCC1 20_COMPILE_RC_DEPORD=272 define TOOL_VCC1 20_COMPILE_RC_CMDS273 $(QUIET)$(TOOL_VCC1 20_RC) \274 $(flags) $( addprefix /i, $(subst /,\\,$(incs))) $(addprefix/d, $(defs))\327 TOOL_VCC141_COMPILE_RC_DEPEND = 328 TOOL_VCC141_COMPILE_RC_DEPORD = 329 TOOL_VCC141_COMPILE_RC_OUTPUT = 330 define TOOL_VCC141_COMPILE_RC_CMDS 331 $(QUIET)$(TOOL_VCC141_RC) \ 332 $(flags) $(qaddprefix sh,/i, $(subst /,\\,$(incs))) $(qaddprefix sh,/d, $(defs))\ 275 333 /fo$(obj)\ 276 334 $(subst /,\\,$(abspath $(source))) … … 288 346 # @param $(outbase) Output basename (full). Use this for list files and such. 289 347 # 290 TOOL_VCC1 20_LINK_LIBRARY_DEPEND = $(othersrc)291 TOOL_VCC1 20_LINK_LIBRARY_DEPORD =292 TOOL_VCC1 20_LINK_LIBRARY_OUTPUT = $(outbase).rsp293 TOOL_VCC1 20_LINK_LIBRARY_OUTPUT_MAYBE = $(outbase).lst $(outbase).exp $(outbase).pdb294 define TOOL_VCC1 20_LINK_LIBRARY_CMDS348 TOOL_VCC141_LINK_LIBRARY_DEPEND = $(othersrc) 349 TOOL_VCC141_LINK_LIBRARY_DEPORD = 350 TOOL_VCC141_LINK_LIBRARY_OUTPUT = $(outbase).rsp 351 TOOL_VCC141_LINK_LIBRARY_OUTPUT_MAYBE = $(outbase).lst $(outbase).exp $(outbase).pdb 352 define TOOL_VCC141_LINK_LIBRARY_CMDS 295 353 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 296 $(foreach arg,\ 297 $(subst /,\\,$(objs) \ 298 $(filter-out %.def,$(othersrc))) \ 299 $(addprefix /DEF:,$(filter %.def,$(othersrc))) \ 300 ,\"$(arg)\") 301 $(QUIET)$(TOOL_VCC120_AR) $(flags) /OUT:$(out) @$(outbase).rsp 354 $(qforeachfile u,arg, $(objs) $(filter-out %.def,$(othersrc)),$(quote-sh "$(subst /,\,$(arg))")) \ 355 $(qforeachfile u,arg, $(filter %.def,$(othersrc)),$(quote-sh "/DEF:$(subst /,\,$(arg))")) 356 $(QUIET)$(TOOL_VCC141_KSUBMIT_DD) $(TOOL_VCC141_AR) $(flags) /OUT:$(out) @$(outbase).rsp 302 357 endef 303 358 … … 317 372 # @param $(outbase) Output basename (full). Use this for list files and such. 318 373 # 319 TOOL_VCC1 20_LINK_PROGRAM_DEPEND = $(foreachlib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)320 TOOL_VCC1 20_LINK_PROGRAM_DEPORD =321 TOOL_VCC1 20_LINK_PROGRAM_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp322 TOOL_VCC1 20_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest323 TOOL_VCC1 20_LINK_PROGRAM_OUTPUT_DEBUG = $(outbase).pdb324 TOOL_VCC1 20_LINK_PROGRAM_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb325 define TOOL_VCC1 20_LINK_PROGRAM_CMDS374 TOOL_VCC141_LINK_PROGRAM_DEPEND = $(foreachfile lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc) 375 TOOL_VCC141_LINK_PROGRAM_DEPORD = 376 TOOL_VCC141_LINK_PROGRAM_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp 377 TOOL_VCC141_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest 378 TOOL_VCC141_LINK_PROGRAM_OUTPUT_DEBUG = $(outbase).pdb 379 TOOL_VCC141_LINK_PROGRAM_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb 380 define TOOL_VCC141_LINK_PROGRAM_CMDS 326 381 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 327 $(foreach arg,\ 328 $(subst /,\\,$(objs)) \ 329 $(subst /,\\,$(libs)) \ 330 ,\"$(arg)\") 331 $(QUIET)$(TOOL_VCC120_LD) $(flags) \ 382 $(qforeachfile u,arg, $(objs) $(libs),$(quote-sh "$(subst /,\,$(arg))")) 383 $(QUIET)$(TOOL_VCC141_KSUBMIT_DD) $(TOOL_VCC141_LD) $(flags) \ 332 384 /OUT:$(out) \ 333 385 /MAPINFO:EXPORTS /INCREMENTAL:NO \ … … 335 387 $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \ 336 388 $(subst /,\\,$(filter %.exp %.res,$(othersrc))) \ 337 $( foreach p,$(libpath), /LIBPATH:$(p)) \389 $(qaddprefix sh,/LIBPATH:,$(libpath)) \ 338 390 @$(outbase).rsp 339 ifndef TOOL_VCC1 20_NO_AUTO_MANIFEST391 ifndef TOOL_VCC141_NO_AUTO_MANIFEST 340 392 $(QUIET)$(TEST) -f $(out).manifest -- \ 341 $(TOOL_VCC1 20_MT) -manifest $(subst /,\\,$(out)).manifest -outputresource:$(subst /,\\,$(out))393 $(TOOL_VCC141_MT) -manifest $(subst /,\\,$(out)).manifest -outputresource:$(subst /,\\,$(out)) 342 394 endif 343 395 endef … … 358 410 # 359 411 # @param $(outbase) Output basename (full). Use this for list files and such. 360 TOOL_VCC1 20_LINK_DLL_DEPEND = $(objs) $(foreachlib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)361 TOOL_VCC1 20_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_STAGE_LIB))362 TOOL_VCC1 20_LINK_DLL_OUTPUT = $(outbase).lib $(outbase).exp363 TOOL_VCC1 20_LINK_DLL_OUTPUT_MAYBE = $(outbase).ilk $(out).manifest $(PATH_STAGE_LIB)/$(notdir $(outbase)).exp364 TOOL_VCC1 20_LINK_DLL_OUTPUT_MAYBE_PRECIOUS = $(PATH_STAGE_LIB)/$(notdir $(outbase)).lib $(outbase).map $(outbase).rsp365 TOOL_VCC1 20_LINK_DLL_OUTPUT_DEBUG = $(outbase).pdb366 TOOL_VCC1 20_LINK_DLL_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb367 define TOOL_VCC1 20_LINK_DLL_CMDS412 TOOL_VCC141_LINK_DLL_DEPEND = $(foreachfile lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc) 413 TOOL_VCC141_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_STAGE_LIB)) 414 TOOL_VCC141_LINK_DLL_OUTPUT = $(outbase).lib $(outbase).exp 415 TOOL_VCC141_LINK_DLL_OUTPUT_MAYBE = $(outbase).ilk $(out).manifest $(PATH_STAGE_LIB)/$(notdir $(outbase)).exp 416 TOOL_VCC141_LINK_DLL_OUTPUT_MAYBE_PRECIOUS = $(PATH_STAGE_LIB)/$(notdir $(outbase)).lib $(outbase).map $(outbase).rsp 417 TOOL_VCC141_LINK_DLL_OUTPUT_DEBUG = $(outbase).pdb 418 TOOL_VCC141_LINK_DLL_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb 419 define TOOL_VCC141_LINK_DLL_CMDS 368 420 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 369 $(foreach arg,\ 370 $(subst /,\\,$(objs)) \ 371 $(subst /,\\,$(libs)) \ 372 ,\"$(arg)\") 373 $(QUIET)$(TOOL_VCC120_LD) $(flags) \ 421 $(qforeachfile u,arg, $(objs) $(libs),$(quote-sh "$(subst /,\,$(arg))")) 422 $(QUIET)$(TOOL_VCC141_KSUBMIT_DD) $(TOOL_VCC141_LD) $(flags) \ 374 423 /OUT:$(out) \ 375 424 /IMPLIB:$(outbase).lib \ … … 379 428 $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \ 380 429 $(subst /,\\,$(filter %.exp %.res,$(othersrc))) \ 381 $( foreach p,$(libpath), /LIBPATH:$(p)) \430 $(qaddprefix sh,/LIBPATH:,$(libpath)) \ 382 431 @$(outbase).rsp 383 ifndef TOOL_VCC1 20_NO_AUTO_MANIFEST432 ifndef TOOL_VCC141_NO_AUTO_MANIFEST 384 433 $(QUIET)$(TEST) -f $(out).manifest -- \ 385 $(TOOL_VCC1 20_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2'434 $(TOOL_VCC141_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2' 386 435 endif 387 436 $(QUIET)$(TEST) -f $(outbase).lib -- $(KLIBTWEAKER_EXT) --clear-timestamps $(outbase).lib 388 $(QUIET)$(CP) --changed - -ignore-non-existing $(outbase).exp $(outbase).lib $(PATH_STAGE_LIB)/437 $(QUIET)$(CP) --changed -v --ignore-non-existing $(outbase).exp $(outbase).lib $(PATH_STAGE_LIB)/ 389 438 $(eval _DIRS += $(PATH_STAGE_LIB)) 390 439 endef … … 405 454 # 406 455 # @param $(outbase) Output basename (full). Use this for list files and such. 407 TOOL_VCC1 20_LINK_SYSMOD_DEPEND = $(foreachlib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)408 TOOL_VCC1 20_LINK_SYSMOD_DEPORD =409 TOOL_VCC1 20_LINK_SYSMOD_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest410 TOOL_VCC1 20_LINK_SYSMOD_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp411 TOOL_VCC1 20_LINK_SYSMOD_OUTPUT_DEBUG = $(outbase).pdb412 TOOL_VCC1 20_LINK_SYSMOD_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb413 define TOOL_VCC1 20_LINK_SYSMOD_CMDS456 TOOL_VCC141_LINK_SYSMOD_DEPEND = $(foreachfile lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc) 457 TOOL_VCC141_LINK_SYSMOD_DEPORD = 458 TOOL_VCC141_LINK_SYSMOD_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest 459 TOOL_VCC141_LINK_SYSMOD_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp 460 TOOL_VCC141_LINK_SYSMOD_OUTPUT_DEBUG = $(outbase).pdb 461 TOOL_VCC141_LINK_SYSMOD_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb 462 define TOOL_VCC141_LINK_SYSMOD_CMDS 414 463 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 415 $(foreach arg,\ 416 $(subst /,\\,$(objs)) \ 417 $(subst /,\\,$(libs)) \ 418 ,\"$(arg)\") 419 $(QUIET)$(TOOL_VCC120_LD) $(flags) \ 464 $(qforeachfile u,arg, $(objs) $(libs),$(quote-sh "$(subst /,\,$(arg))")) 465 $(QUIET)$(TOOL_VCC141_KSUBMIT_DD) $(TOOL_VCC141_LD) $(flags) \ 420 466 /OUT:$(out) \ 421 467 /MAPINFO:EXPORTS /INCREMENTAL:NO \ … … 423 469 $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \ 424 470 $(subst /,\\,$(filter %.exp %.res,$(othersrc))) \ 425 $( foreach p,$(libpath), /LIBPATH:$(p)) \471 $(qaddprefix sh,/LIBPATH:,$(libpath)) \ 426 472 @$(outbase).rsp 427 ifndef TOOL_VCC1 20_NO_AUTO_MANIFEST473 ifndef TOOL_VCC141_NO_AUTO_MANIFEST 428 474 $(QUIET)$(TEST) -f $(out).manifest -- \ 429 $(TOOL_VCC1 20_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2'475 $(TOOL_VCC141_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2' 430 476 endif 431 477 endef -
trunk/kBuild/tools/VCC141AMD64.kmk
r3313 r3323 1 1 # $Id$ 2 2 ## @file 3 # kBuild Tool Config - Visual C++ 1 2.0 (aka Visual 2013 and MSC v18), targeting AMD64.4 # 5 6 # 7 # Copyright (c) 2004-20 17 knut st. osmundsen <bird-kBuild-spam-xviiv@anduin.net>3 # kBuild Tool Config - Visual C++ 14.1 (aka Visual 2017 and MSC v19.10), targeting AMD64. 4 # 5 6 # 7 # Copyright (c) 2004-2020 knut st. osmundsen <bird-kBuild-spam-xx@anduin.net> 8 8 # 9 9 # This file is part of kBuild. … … 32 32 # 33 33 34 TOOL_VCC120AMD64 := Visual C++ 12.0 (aka Visual 2013 and MSC v18), targeting AMD64 35 34 ifndef TOOL_VCC141 35 include $(KBUILD_PATH)/tools/VCC141.kmk 36 endif 37 38 TOOL_VCC141AMD64 := Visual C++ 14.1 (aka Visual 2017 and MSC v19.1), targeting AMD64 39 40 # 36 41 # Tool Specific Properties 37 ifndef PATH_TOOL_VCC120AMD64 38 PATH_TOOL_VCC120AMD64 := $(wildcard $(KBUILD_DEVTOOLS)/win.x86/vcc/v12*) 39 ifeq ($(PATH_TOOL_VCC120AMD64),) 40 PATH_TOOL_VCC120AMD64 := $(PATH_TOOL_VCC120) 41 endif 42 ifeq ($(PATH_TOOL_VCC120AMD64),) 43 PATH_TOOL_VCC120AMD64 := $(PATH_TOOL_VCC120X86) 44 endif 45 ifeq ($(PATH_TOOL_VCC120AMD64),) 46 PATH_TOOL_VCC120AMD64 := $(wildcard $(KBUILD_DEVTOOLS)/win.x86/vcc/v12*) 47 endif 48 ifneq ($(PATH_TOOL_VCC120AMD64),) 49 PATH_TOOL_VCC120AMD64 := $(lastword $(sort $(PATH_TOOL_VCC120AMD64))) 50 else 51 $(warning kBuild: PATH_TOOL_VCC120AMD64 cannot be determined!) 52 PATH_TOOL_VCC120AMD64 := $(KBUILD_DEVTOOLS)/win.x86/vcc/v12 53 endif 42 # 43 ifndef PATH_TOOL_VCC141AMD64 44 PATH_TOOL_VCC141AMD64 := $(PATH_TOOL_VCC141) 54 45 else 55 46 # Resolve any fancy stuff once and for all. 56 PATH_TOOL_VCC1 20AMD64 := $(PATH_TOOL_VCC120AMD64)57 endif 58 if "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "win.amd64" && exists("$(PATH_TOOL_VCC120AMD64)/bin/amd64") # Missing in express edition. 59 PATH_TOOL_VCC120AMD64_BIN ?= $(PATH_TOOL_VCC120AMD64)/bin/amd64 60 #$(error works now: $(PATH_TOOL_VCC120AMD64)/bin/amd64) 47 PATH_TOOL_VCC141AMD64 := $(PATH_TOOL_VCC141AMD64) 48 endif 49 50 ifndef PATH_TOOL_VCC141AMD64_BIN 51 PATH_TOOL_VCC141AMD64_BIN := $(PATH_TOOL_VCC141_HOST_BIN)/x64 61 52 else 62 #$(error no joy: $(PATH_TOOL_VCC120AMD64)/bin/amd64) 63 PATH_TOOL_VCC120AMD64_BIN_DLL ?= $(PATH_TOOL_VCC120AMD64)/bin 64 PATH_TOOL_VCC120AMD64_BIN ?= $(PATH_TOOL_VCC120AMD64)/bin/x86_amd64 65 endif 66 PATH_TOOL_VCC120AMD64_LIB ?= $(PATH_TOOL_VCC120AMD64)/lib/amd64 67 PATH_TOOL_VCC120AMD64_INC ?= $(PATH_TOOL_VCC120AMD64)/include 68 PATH_TOOL_VCC120AMD64_ATLMFC ?= $(PATH_TOOL_VCC120AMD64)/atlmfc 69 PATH_TOOL_VCC120AMD64_ATLMFC_INC ?= $(PATH_TOOL_VCC120AMD64_ATLMFC)/include 70 PATH_TOOL_VCC120AMD64_ATLMFC_LIB ?= $(PATH_TOOL_VCC120AMD64_ATLMFC)/lib/amd64 71 TOOL_VCC120AMD64_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/cl.exe 72 TOOL_VCC120AMD64_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/cl.exe 73 TOOL_VCC120AMD64_AS ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/ml64.exe 74 #TOOL_VCC120AMD64_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/lib.exe - just an exec wrapper for the below 75 TOOL_VCC120AMD64_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/link.exe /LIB 76 TOOL_VCC120AMD64_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/link.exe 77 TOOL_VCC120AMD64_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/dumpbin.exe 78 TOOL_VCC120AMD64_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC120AMD64_BIN)/editbin.exe 79 TOOL_VCC120AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC120_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC120_RC_CACHED) 80 TOOL_VCC120AMD64_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC120_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC120_MT_CACHED) 81 ifdef TOOL_VCC120AMD64_USE_KSUBMIT 53 PATH_TOOL_VCC141AMD64_BIN := $(PATH_TOOL_VCC141_BIN) 54 endif 55 PATH_TOOL_VCC141AMD64_BIN_QSH := $(requote sh,$(PATH_TOOL_VCC141AMD64_BIN)) 56 57 ifndef PATH_TOOL_VCC141AMD64_LIB 58 PATH_TOOL_VCC141AMD64_LIB := $(PATH_TOOL_VCC141_LIB.amd64) 59 endif 60 ifndef PATH_TOOL_VCC141_ONECORE_LIB 61 PATH_TOOL_VCC141_ONECORE_LIB := $(PATH_TOOL_VCC141_ONECORE_LIB.amd64) 62 endif 63 64 ifndef PATH_TOOL_VCC141AMD64_INC 65 PATH_TOOL_VCC141AMD64_INC := $(PATH_TOOL_VCC141_INC) 66 endif 67 68 ifndef PATH_TOOL_VCC141AMD64_ATLMFC_INC 69 PATH_TOOL_VCC141AMD64_ATLMFC_INC := $(PATH_TOOL_VCC141_ATLMFC_INC.amd64) 70 endif 71 ifndef PATH_TOOL_VCC141AMD64_ATLMFC_LIB 72 PATH_TOOL_VCC141AMD64_ATLMFC_LIB := $(PATH_TOOL_VCC141_ATLMFC_LIB.amd64) 73 endif 74 75 TOOL_VCC141AMD64_CC ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/cl.exe 76 TOOL_VCC141AMD64_CXX ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/cl.exe 77 TOOL_VCC141AMD64_AS ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/ml64.exe 78 #TOOL_VCC141AMD64_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/lib.exe - just an exec wrapper for the below 79 TOOL_VCC141AMD64_AR ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/link.exe /LIB 80 TOOL_VCC141AMD64_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/link.exe 81 TOOL_VCC141AMD64_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/dumpbin.exe 82 TOOL_VCC141AMD64_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/editbin.exe 83 84 TOOL_VCC141AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED) 85 TOOL_VCC141AMD64_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED) 86 87 undefine TOOL_VCC141AMD64_USE_KSUBMIT # for now 88 ifdef TOOL_VCC141AMD64_USE_KSUBMIT 82 89 ifeq ($(KBUILD_HOST),win) 83 ifneq ($(substr $(PATH_TOOL_VCC120AMD64_BIN),-9),x86_amd64) 84 TOOL_VCC120AMD64_KSUBMIT ?= kmk_builtin_kSubmit --64-bit 85 ifdef PATH_TOOL_VCC120AMD64_BIN_DLL 86 TOOL_VCC120AMD64_KSUBMIT += --prepend 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)' 87 endif 88 TOOL_VCC120AMD64_KSUBMIT_DD = $(TOOL_VCC120AMD64_KSUBMIT) -- 90 ifneq ($(substr $(qdir un,$(PATH_TOOL_VCC141AMD64_BIN)),-3),64/) 91 TOOL_VCC141AMD64_KSUBMIT ?= kmk_builtin_kSubmit --64-bit 92 TOOL_VCC141AMD64_KSUBMIT_DD = $(TOOL_VCC141AMD64_KSUBMIT) -- 89 93 else 90 # "fatal error C1902: Program database manager mismatch; please check your installation" when mixing with the 32-bit compiler. 91 #TOOL_VCC120AMD64_KSUBMIT ?= kmk_builtin_kSubmit --32-bit 92 #TOOL_VCC120AMD64_KSUBMIT_DD = $(TOOL_VCC120AMD64_KSUBMIT) -- 94 TOOL_VCC141AMD64_KSUBMIT ?= kmk_builtin_kSubmit --32-bit 95 TOOL_VCC141AMD64_KSUBMIT_DD = $(TOOL_VCC141AMD64_KSUBMIT) -- 93 96 endif 94 97 endif 95 else ifdef PATH_TOOL_VCC120AMD64_BIN_DLL 96 TOOL_VCC120AMD64_KSUBMIT_DD = $(REDIRECT) --prepend 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)' -- 97 endif 98 99 # The following in duplicated in VCC120.kmk and VCC120X86.kmk. 100 TOOL_VCC120_FN_FIND_SDK_TOOL_SUB = $(eval $3 := $(firstword \ 101 $(if-expr defined(PATH_SDK_WINPSDK71_BIN), $(wildcard $(PATH_SDK_WINPSDK71_BIN)/$2)) \ 102 $(if-expr defined(PATH_SDK_WINPSDK_BIN) , $(wildcard $(PATH_SDK_WINPSDK_BIN)/$2)) \ 103 $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST)/sdk/*/[Bb][Ii][Nn]/$2)) \ 104 $(rsort $(wildcard $(KBUILD_DEVTOOLS_HST_ALT)/sdk/*/[Bb][Ii][Nn]/$2)) \ 105 $1)) 106 TOOL_VCC120_FN_FIND_SDK_TOOL = $(if-expr !defined($3),$(TOOL_VCC120_FN_FIND_SDK_TOOL_SUB),)$($3) 107 108 ## Disabled fast DEP_IDB based dependencies. 109 #VCC120AMD64_OLD_DEPS = 1 110 111 ## Constructs the correct .pdb name (the name is lowercased). 112 # @param $(1) Base name, no extention. 113 # @param $(2) The extension. 114 TOOL_VCC120AMD64_PDB = $(dir $(1))$(tolower $(notdir $(1))).$(2) 115 116 117 # General Properties used by kBuild 118 TOOL_VCC120AMD64_COBJSUFF ?= .obj 119 TOOL_VCC120AMD64_CFLAGS ?= -TC -nologo -Zi 120 TOOL_VCC120AMD64_CFLAGS.debug ?= 121 TOOL_VCC120AMD64_CFLAGS.dbgopt ?= -O2 122 TOOL_VCC120AMD64_CFLAGS.release ?= -O2 123 TOOL_VCC120AMD64_CFLAGS.profile ?= -O2 124 TOOL_VCC120AMD64_CINCS ?= $(PATH_TOOL_VCC120AMD64_INC) 125 TOOL_VCC120AMD64_CDEFS ?= 126 127 TOOL_VCC120AMD64_CXXOBJSUFF ?= .obj 128 TOOL_VCC120AMD64_CXXFLAGS ?= -TP -nologo -Zi 129 TOOL_VCC120AMD64_CXXFLAGS.debug ?= 130 TOOL_VCC120AMD64_CXXFLAGS.dbgopt ?= -O2 131 TOOL_VCC120AMD64_CXXFLAGS.release ?= -O2 132 TOOL_VCC120AMD64_CXXFLAGS.profile ?= -O2 133 TOOL_VCC120AMD64_CXXINCS ?= $(PATH_TOOL_VCC120AMD64_INC) $(PATH_TOOL_VCC120AMD64_ATLMFC_INC) 134 TOOL_VCC120AMD64_CXXDEFS ?= 135 136 TOOL_VCC120AMD64_ASOBJSUFF ?= .obj 137 138 TOOL_VCC120AMD64_RCOBJSUFF ?= .res 139 TOOL_VCC120AMD64_RCINCS ?= $(PATH_TOOL_VCC120AMD64_INC) $(PATH_TOOL_VCC120AMD64_ATLMFC_INC) 140 141 TOOL_VCC120AMD64_ARFLAGS ?= -nologo -machine:amd64 142 TOOL_VCC120AMD64_ARLIBSUFF ?= .lib 143 144 TOOL_VCC120AMD64_LDFLAGS ?= -nologo -machine:amd64 145 TOOL_VCC120AMD64_LDFLAGS.debug ?= -debug 146 TOOL_VCC120AMD64_LDFLAGS.dbgopt ?= -debug 147 TOOL_VCC120AMD64_LDFLAGS.profile ?= -debug 148 TOOL_VCC120AMD64_LDFLAGS.release ?= 98 endif 99 100 101 # 102 # Properties used by kBuild 103 # 104 TOOL_VCC141AMD64_COBJSUFF ?= .obj 105 TOOL_VCC141AMD64_CFLAGS ?= -TC -nologo -Zi 106 TOOL_VCC141AMD64_CFLAGS.debug ?= 107 TOOL_VCC141AMD64_CFLAGS.dbgopt ?= -O2 108 TOOL_VCC141AMD64_CFLAGS.release ?= -O2 109 TOOL_VCC141AMD64_CFLAGS.profile ?= -O2 110 TOOL_VCC141AMD64_CINCS ?= $(PATH_TOOL_VCC141AMD64_INC) 111 TOOL_VCC141AMD64_CDEFS ?= 112 113 TOOL_VCC141AMD64_CXXOBJSUFF ?= .obj 114 TOOL_VCC141AMD64_CXXFLAGS ?= -TP -nologo -Zi 115 TOOL_VCC141AMD64_CXXFLAGS.debug ?= 116 TOOL_VCC141AMD64_CXXFLAGS.dbgopt ?= -O2 117 TOOL_VCC141AMD64_CXXFLAGS.release ?= -O2 118 TOOL_VCC141AMD64_CXXFLAGS.profile ?= -O2 119 TOOL_VCC141AMD64_CXXINCS ?= $(PATH_TOOL_VCC141AMD64_INC) $(PATH_TOOL_VCC141AMD64_ATLMFC_INC) 120 TOOL_VCC141AMD64_CXXDEFS ?= 121 122 TOOL_VCC141AMD64_ASOBJSUFF ?= .obj 123 124 TOOL_VCC141AMD64_RCOBJSUFF ?= .res 125 TOOL_VCC141AMD64_RCINCS ?= $(PATH_TOOL_VCC141AMD64_INC) $(PATH_TOOL_VCC141AMD64_ATLMFC_INC) 126 127 TOOL_VCC141AMD64_ARFLAGS ?= -nologo -machine:amd64 128 TOOL_VCC141AMD64_ARLIBSUFF ?= .lib 129 130 TOOL_VCC141AMD64_LDFLAGS ?= -nologo -machine:amd64 131 TOOL_VCC141AMD64_LDFLAGS.debug ?= -debug 132 TOOL_VCC141AMD64_LDFLAGS.dbgopt ?= -debug 133 TOOL_VCC141AMD64_LDFLAGS.profile ?= -debug 134 TOOL_VCC141AMD64_LDFLAGS.release ?= 149 135 150 136 … … 163 149 # @param $(outbase) Output basename (full). Use this for list files and such. 164 150 # @param $(objsuff) Object suffix. 165 TOOL_VCC1 20AMD64_COMPILE_C_DEPEND =166 TOOL_VCC1 20AMD64_COMPILE_C_DEPORD =167 TOOL_VCC1 20AMD64_COMPILE_C_OUTPUT =168 TOOL_VCC1 20AMD64_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC120AMD64_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC120AMD64_PDB, $(outbase)-obj,idb)169 ifdef TOOL_VCC1 20AMD64_KSUBMIT170 TOOL_VCC1 20AMD64_COMPILE_C_DONT_PURGE_OUTPUT := 1 # speed171 define TOOL_VCC1 20AMD64_COMPILE_C_CMDS172 $(QUIET)$(TOOL_VCC1 20AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\173 -- $(TOOL_VCC1 20AMD64_CC) -c\174 $(flags) $( addprefix -I, $(incs)) $(addprefix-D, $(defs))\151 TOOL_VCC141AMD64_COMPILE_C_DEPEND = 152 TOOL_VCC141AMD64_COMPILE_C_DEPORD = 153 TOOL_VCC141AMD64_COMPILE_C_OUTPUT = 154 TOOL_VCC141AMD64_COMPILE_C_OUTPUT_MAYBE = $(call TOOL_VCC141_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC141_PDB, $(outbase)-obj,idb) 155 ifdef TOOL_VCC141AMD64_KSUBMIT 156 TOOL_VCC141AMD64_COMPILE_C_DONT_PURGE_OUTPUT := 1 # speed 157 define TOOL_VCC141AMD64_COMPILE_C_CMDS 158 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\ 159 -- $(TOOL_VCC141AMD64_CC) -c\ 160 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 175 161 -Fd$(outbase)-obj.pdb \ 176 162 -Fo$(obj)\ … … 178 164 endef 179 165 else 180 define TOOL_VCC120AMD64_COMPILE_C_CMDS 181 $(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\ 182 ,$(REDIRECT) --prepend 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)' -- ,)$(TOOL_VCC120AMD64_CC) -c\ 183 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 166 define TOOL_VCC141AMD64_COMPILE_C_CMDS 167 $(QUIET)$(TOOL_VCC141AMD64_CC) -c\ 168 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 184 169 -Fd$(outbase)-obj.pdb \ 185 170 -Fo$(obj)\ … … 187 172 $(QUIET)$(DEP_OBJ) -f -s -q -o $(dep) -t $(obj) $(obj) 188 173 endef 189 endif # !TOOL_VCC1 20AMD64_KSUBMIT174 endif # !TOOL_VCC141AMD64_KSUBMIT 190 175 191 176 … … 203 188 # @param $(outbase) Output basename (full). Use this for list files and such. 204 189 # @param $(objsuff) Object suffix. 205 TOOL_VCC1 20AMD64_COMPILE_CXX_DEPEND = $($(target)_1_VCC_PCH_FILE)206 TOOL_VCC1 20AMD64_COMPILE_CXX_DEPORD =207 TOOL_VCC1 20AMD64_COMPILE_CXX_OUTPUT =208 TOOL_VCC1 20AMD64_COMPILE_CXX_OUTPUT_MAYBE = $(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB)\209 ,,$(call TOOL_VCC1 20AMD64_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC120AMD64_PDB, $(outbase)-obj,idb))210 ifdef TOOL_VCC1 20AMD64_KSUBMIT211 TOOL_VCC1 20AMD64_COMPILE_CXX_DONT_PURGE_OUTPUT := 1 # speed212 define TOOL_VCC1 20AMD64_COMPILE_CXX_CMDS213 $(QUIET)$(TOOL_VCC1 20AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\214 -- $(TOOL_VCC1 20AMD64_CXX) -c\215 $(flags) $( addprefix -I, $(incs)) $(addprefix-D, $(defs))\190 TOOL_VCC141AMD64_COMPILE_CXX_DEPEND = $($(target)_1_VCC_PCH_FILE) 191 TOOL_VCC141AMD64_COMPILE_CXX_DEPORD = 192 TOOL_VCC141AMD64_COMPILE_CXX_OUTPUT = 193 TOOL_VCC141AMD64_COMPILE_CXX_OUTPUT_MAYBE = $(if-expr defined($(target)_1_VCC_COMMON_OBJ_PDB)\ 194 ,,$(call TOOL_VCC141_PDB, $(outbase)-obj,pdb) $(call TOOL_VCC141_PDB, $(outbase)-obj,idb)) 195 ifdef TOOL_VCC141AMD64_KSUBMIT 196 TOOL_VCC141AMD64_COMPILE_CXX_DONT_PURGE_OUTPUT := 1 # speed 197 define TOOL_VCC141AMD64_COMPILE_CXX_CMDS 198 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT) -P $(DEP_OBJ_INT) -f -s -q -o $(dep) -t $(obj) $(obj)\ 199 -- $(TOOL_VCC141AMD64_CXX) -c\ 200 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 216 201 $(if-expr defined($(target)_PCH_HDR)\ 217 202 ,-FI$($(target)_PCH_HDR) -Yu$($(target)_PCH_HDR) -Fp$($(target)_1_VCC_PCH_FILE) -FS,)\ … … 221 206 endef 222 207 else 223 define TOOL_VCC120AMD64_COMPILE_CXX_CMDS 224 $(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\ 225 ,$(REDIRECT) --prepend 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)' -- ,)$(TOOL_VCC120AMD64_CXX) -c\ 226 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 208 define TOOL_VCC141AMD64_COMPILE_CXX_CMDS 209 $(QUIET)$(TOOL_VCC141AMD64_CXX) -c\ 210 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 227 211 $(if-expr defined($(target)_PCH_HDR)\ 228 212 ,-FI$($(target)_PCH_HDR) -Yu$($(target)_PCH_HDR) -Fp$($(target)_1_VCC_PCH_FILE) -FS,)\ … … 232 216 $(QUIET)$(DEP_OBJ) -f -s -q -o $(dep) -t $(obj) $(obj) 233 217 endef 234 endif # !TOOL_VCC1 20AMD64_KSUBMIT218 endif # !TOOL_VCC141AMD64_KSUBMIT 235 219 236 220 … … 241 225 # related _1_VCC_PCH_FILE and add -Yc. 242 226 # 243 TOOL_VCC1 20AMD64-PCH := Helper for creating precompiled header using CXX handling.244 TOOL_VCC1 20AMD64-PCH_EXTENDS := VCC120AMD64245 TOOL_VCC1 20AMD64-PCH_CXXOBJSUFF := .obj246 TOOL_VCC1 20AMD64-PCH_CXXINCS = $(TOOL_VCC120AMD64_CXXINCS)247 TOOL_VCC1 20AMD64-PCH_CXXFLAGS = $(TOOL_VCC120AMD64_CXXFLAGS) -FS248 TOOL_VCC1 20AMD64-PCH_CXXFLAGS.debug = $(TOOL_VCC120AMD64_CXXFLAGS.debug)249 TOOL_VCC1 20AMD64-PCH_CXXFLAGS.dbgopt = $(TOOL_VCC120AMD64_CXXFLAGS.dbgopt)250 TOOL_VCC1 20AMD64-PCH_CXXFLAGS.release = $(TOOL_VCC120AMD64_CXXFLAGS.release)251 TOOL_VCC1 20AMD64-PCH_CXXFLAGS.profile = $(TOOL_VCC120AMD64_CXXFLAGS.profile)252 TOOL_VCC1 20AMD64-PCH_COMPILE_CXX_DEPEND = $(NO_SUCH_VARIABLE)253 TOOL_VCC1 20AMD64-PCH_COMPILE_CXX_DEPORD = $(NO_SUCH_VARIABLE)254 TOOL_VCC1 20AMD64-PCH_COMPILE_CXX_OUTPUT = $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB)255 TOOL_VCC1 20AMD64-PCH_COMPILE_CXX_OUTPUT_MAYBE = $(NO_SUCH_VARIABLE)256 ifdef TOOL_VCC1 20AMD64_KSUBMIT257 define TOOL_VCC1 20AMD64-PCH_COMPILE_CXX_CMDS227 TOOL_VCC141AMD64-PCH := Helper for creating precompiled header using CXX handling. 228 TOOL_VCC141AMD64-PCH_EXTENDS := VCC141AMD64 229 TOOL_VCC141AMD64-PCH_CXXOBJSUFF := .obj 230 TOOL_VCC141AMD64-PCH_CXXINCS = $(TOOL_VCC141AMD64_CXXINCS) 231 TOOL_VCC141AMD64-PCH_CXXFLAGS = $(TOOL_VCC141AMD64_CXXFLAGS) -FS 232 TOOL_VCC141AMD64-PCH_CXXFLAGS.debug = $(TOOL_VCC141AMD64_CXXFLAGS.debug) 233 TOOL_VCC141AMD64-PCH_CXXFLAGS.dbgopt = $(TOOL_VCC141AMD64_CXXFLAGS.dbgopt) 234 TOOL_VCC141AMD64-PCH_CXXFLAGS.release = $(TOOL_VCC141AMD64_CXXFLAGS.release) 235 TOOL_VCC141AMD64-PCH_CXXFLAGS.profile = $(TOOL_VCC141AMD64_CXXFLAGS.profile) 236 TOOL_VCC141AMD64-PCH_COMPILE_CXX_DEPEND = $(NO_SUCH_VARIABLE) 237 TOOL_VCC141AMD64-PCH_COMPILE_CXX_DEPORD = $(NO_SUCH_VARIABLE) 238 TOOL_VCC141AMD64-PCH_COMPILE_CXX_OUTPUT = $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 239 TOOL_VCC141AMD64-PCH_COMPILE_CXX_OUTPUT_MAYBE = $(NO_SUCH_VARIABLE) 240 ifdef TOOL_VCC141AMD64_KSUBMIT 241 define TOOL_VCC141AMD64-PCH_COMPILE_CXX_CMDS 258 242 $(QUIET)$(RM) -f -- $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 259 $(QUIET)$(TOOL_VCC1 20AMD64_KSUBMIT) --no-pch-caching -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\260 -- $(TOOL_VCC1 20AMD64_CXX) -c -Yc\261 $(flags) $( addprefix -I, $(incs)) $(addprefix-D, $(defs))\243 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT) --no-pch-caching -P $(DEP_OBJ_INT) -f -s -q -e .pch -o $(dep) -t $(obj) $(obj)\ 244 -- $(TOOL_VCC141AMD64_CXX) -c -Yc\ 245 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 262 246 -Fp$($(target)_1_VCC_PCH_FILE) \ 263 247 -Fd$($(target)_1_VCC_COMMON_OBJ_PDB) \ … … 267 251 endef 268 252 else 269 define TOOL_VCC1 20AMD64-PCH_COMPILE_CXX_CMDS253 define TOOL_VCC141AMD64-PCH_COMPILE_CXX_CMDS 270 254 $(QUIET)$(RM) -f -- $($(target)_1_VCC_PCH_FILE) $($(target)_1_VCC_COMMON_OBJ_PDB) 271 $(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\ 272 ,$(REDIRECT) --prepend 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)' -- ,)$(TOOL_VCC120AMD64_CXX) -c -Yc\ 273 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 255 $(QUIET)$(TOOL_VCC141AMD64_CXX) -c -Yc\ 256 $(flags) $(qaddprefix sh,-I, $(incs)) $(qaddprefix sh,-D, $(defs))\ 274 257 -Fp$($(target)_1_VCC_PCH_FILE) \ 275 258 -Fd$($(target)_1_VCC_COMMON_OBJ_PDB) \ … … 280 263 281 264 endef 282 endif # !TOOL_VCC1 20AMD64_KSUBMIT265 endif # !TOOL_VCC141AMD64_KSUBMIT 283 266 284 267 … … 298 281 # @param $(outbase) Output basename (full). Use this for list files and such. 299 282 # @param $(objsuff) Object suffix. 300 TOOL_VCC120AMD64_COMPILE_RC_DEPEND = 301 TOOL_VCC120AMD64_COMPILE_RC_DEPORD = 302 TOOL_VCC120AMD64_COMPILE_RC_OUTPUT = 303 ## @todo Fix kmk_redirect so we can use it for setting PATH without spawning a shell or two 304 define TOOL_VCC120AMD64_COMPILE_RC_CMDS 305 $(QUIET)$(if-expr defined(PATH_TOOL_VCC120AMD64_BIN_DLL)\ 306 ,$(REDIRECT) --prepend 'PATH=$(PATH_TOOL_VCC120AMD64_BIN_DLL)$(HOST_PATH_SEP)' -- ,)$(TOOL_VCC120AMD64_RC) \ 307 $(flags) $(addprefix /i, $(subst /,\\,$(incs))) $(addprefix /d, $(defs))\ 283 TOOL_VCC141AMD64_COMPILE_RC_DEPEND = 284 TOOL_VCC141AMD64_COMPILE_RC_DEPORD = 285 TOOL_VCC141AMD64_COMPILE_RC_OUTPUT = 286 define TOOL_VCC141AMD64_COMPILE_RC_CMDS 287 $(QUIET)$(TOOL_VCC141AMD64_RC) \ 288 $(flags) $(qaddprefix sh,/i, $(subst /,\\,$(incs))) $(qaddprefix sh,/d, $(defs))\ 308 289 /fo$(obj)\ 309 290 $(subst /,\\,$(abspath $(source))) … … 321 302 # @param $(outbase) Output basename (full). Use this for list files and such. 322 303 # 323 TOOL_VCC1 20AMD64_LINK_LIBRARY_DEPEND = $(othersrc)324 TOOL_VCC1 20AMD64_LINK_LIBRARY_DEPORD =325 TOOL_VCC1 20AMD64_LINK_LIBRARY_OUTPUT = $(outbase).rsp326 TOOL_VCC1 20AMD64_LINK_LIBRARY_OUTPUT_MAYBE = $(outbase).lst $(outbase).exp $(outbase).pdb327 define TOOL_VCC1 20AMD64_LINK_LIBRARY_CMDS304 TOOL_VCC141AMD64_LINK_LIBRARY_DEPEND = $(othersrc) 305 TOOL_VCC141AMD64_LINK_LIBRARY_DEPORD = 306 TOOL_VCC141AMD64_LINK_LIBRARY_OUTPUT = $(outbase).rsp 307 TOOL_VCC141AMD64_LINK_LIBRARY_OUTPUT_MAYBE = $(outbase).lst $(outbase).exp $(outbase).pdb 308 define TOOL_VCC141AMD64_LINK_LIBRARY_CMDS 328 309 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 329 $(foreach arg,\ 330 $(subst /,\\,$(objs) \ 331 $(filter-out %.def,$(othersrc))) \ 332 $(addprefix /DEF:,$(filter %.def,$(othersrc))) \ 333 ,\"$(arg)\") 334 $(QUIET)$(TOOL_VCC120AMD64_KSUBMIT_DD) $(TOOL_VCC120AMD64_AR) $(flags) /OUT:$(out) @$(outbase).rsp 310 $(qforeachfile u,arg, $(objs) $(filter-out %.def,$(othersrc)),$(quote-sh "$(subst /,\,$(arg))")) \ 311 $(qforeachfile u,arg, $(filter %.def,$(othersrc)),$(quote-sh "/DEF:$(subst /,\,$(arg))")) 312 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT_DD) $(TOOL_VCC141AMD64_AR) $(flags) /OUT:$(out) @$(outbase).rsp 335 313 endef 336 314 … … 350 328 # @param $(outbase) Output basename (full). Use this for list files and such. 351 329 # 352 TOOL_VCC1 20AMD64_LINK_PROGRAM_DEPEND = $(foreachlib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)353 TOOL_VCC1 20AMD64_LINK_PROGRAM_DEPORD =354 TOOL_VCC1 20AMD64_LINK_PROGRAM_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp355 TOOL_VCC1 20AMD64_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest356 TOOL_VCC1 20AMD64_LINK_PROGRAM_OUTPUT_DEBUG = $(outbase).pdb357 TOOL_VCC1 20AMD64_LINK_PROGRAM_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb358 define TOOL_VCC1 20AMD64_LINK_PROGRAM_CMDS330 TOOL_VCC141AMD64_LINK_PROGRAM_DEPEND = $(foreachfile lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc) 331 TOOL_VCC141AMD64_LINK_PROGRAM_DEPORD = 332 TOOL_VCC141AMD64_LINK_PROGRAM_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp 333 TOOL_VCC141AMD64_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest 334 TOOL_VCC141AMD64_LINK_PROGRAM_OUTPUT_DEBUG = $(outbase).pdb 335 TOOL_VCC141AMD64_LINK_PROGRAM_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb 336 define TOOL_VCC141AMD64_LINK_PROGRAM_CMDS 359 337 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 360 $(foreach arg,\ 361 $(subst /,\\,$(objs)) \ 362 $(subst /,\\,$(libs)) \ 363 ,\"$(arg)\") 364 $(QUIET)$(TOOL_VCC120AMD64_KSUBMIT_DD) $(TOOL_VCC120AMD64_LD) $(flags) \ 338 $(qforeachfile u,arg, $(objs) $(libs),$(quote-sh "$(subst /,\,$(arg))")) 339 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT_DD) $(TOOL_VCC141AMD64_LD) $(flags) \ 365 340 /OUT:$(out) \ 366 341 /MAPINFO:EXPORTS /INCREMENTAL:NO \ … … 368 343 $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \ 369 344 $(subst /,\\,$(filter %.exp %.res,$(othersrc))) \ 370 $( foreach p,$(libpath), /LIBPATH:$(p)) \345 $(qaddprefix sh,/LIBPATH:,$(libpath)) \ 371 346 @$(outbase).rsp 372 ifndef TOOL_VCC1 20AMD64_NO_AUTO_MANIFEST347 ifndef TOOL_VCC141AMD64_NO_AUTO_MANIFEST 373 348 $(QUIET)$(TEST) -f $(out).manifest -- \ 374 $(TOOL_VCC1 20AMD64_MT) -manifest $(subst /,\\,$(out)).manifest -outputresource:$(subst /,\\,$(out))349 $(TOOL_VCC141AMD64_MT) -manifest $(subst /,\\,$(out)).manifest -outputresource:$(subst /,\\,$(out)) 375 350 endif 376 351 endef … … 391 366 # 392 367 # @param $(outbase) Output basename (full). Use this for list files and such. 393 TOOL_VCC1 20AMD64_LINK_DLL_DEPEND = $(objs) $(foreachlib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)394 TOOL_VCC1 20AMD64_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_STAGE_LIB))395 TOOL_VCC1 20AMD64_LINK_DLL_OUTPUT = $(outbase).lib $(outbase).exp396 TOOL_VCC1 20AMD64_LINK_DLL_OUTPUT_MAYBE = $(outbase).ilk $(out).manifest $(PATH_STAGE_LIB)/$(notdir $(outbase)).exp397 TOOL_VCC1 20AMD64_LINK_DLL_OUTPUT_MAYBE_PRECIOUS = $(PATH_STAGE_LIB)/$(notdir $(outbase)).lib $(outbase).map $(outbase).rsp398 TOOL_VCC1 20AMD64_LINK_DLL_OUTPUT_DEBUG = $(outbase).pdb399 TOOL_VCC1 20AMD64_LINK_DLL_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb400 define TOOL_VCC1 20AMD64_LINK_DLL_CMDS368 TOOL_VCC141AMD64_LINK_DLL_DEPEND = $(foreachfile lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc) 369 TOOL_VCC141AMD64_LINK_DLL_DEPORD = $(call DIRDEP,$(PATH_STAGE_LIB)) 370 TOOL_VCC141AMD64_LINK_DLL_OUTPUT = $(outbase).lib $(outbase).exp 371 TOOL_VCC141AMD64_LINK_DLL_OUTPUT_MAYBE = $(outbase).ilk $(out).manifest $(PATH_STAGE_LIB)/$(notdir $(outbase)).exp 372 TOOL_VCC141AMD64_LINK_DLL_OUTPUT_MAYBE_PRECIOUS = $(PATH_STAGE_LIB)/$(notdir $(outbase)).lib $(outbase).map $(outbase).rsp 373 TOOL_VCC141AMD64_LINK_DLL_OUTPUT_DEBUG = $(outbase).pdb 374 TOOL_VCC141AMD64_LINK_DLL_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb 375 define TOOL_VCC141AMD64_LINK_DLL_CMDS 401 376 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 402 $(foreach arg,\ 403 $(subst /,\\,$(objs)) \ 404 $(subst /,\\,$(libs)) \ 405 ,\"$(arg)\") 406 $(QUIET)$(TOOL_VCC120AMD64_KSUBMIT_DD) $(TOOL_VCC120AMD64_LD) $(flags) \ 377 $(qforeachfile u,arg, $(objs) $(libs),$(quote-sh "$(subst /,\,$(arg))")) 378 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT_DD) $(TOOL_VCC141AMD64_LD) $(flags) \ 407 379 /OUT:$(out) \ 408 380 /IMPLIB:$(outbase).lib \ … … 412 384 $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \ 413 385 $(subst /,\\,$(filter %.exp %.res,$(othersrc))) \ 414 $( foreach p,$(libpath), /LIBPATH:$(p)) \386 $(qaddprefix sh,/LIBPATH:,$(libpath)) \ 415 387 @$(outbase).rsp 416 ifndef TOOL_VCC1 20AMD64_NO_AUTO_MANIFEST388 ifndef TOOL_VCC141AMD64_NO_AUTO_MANIFEST 417 389 $(QUIET)$(TEST) -f $(out).manifest -- \ 418 $(TOOL_VCC1 20AMD64_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2'390 $(TOOL_VCC141AMD64_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2' 419 391 endif 420 392 $(QUIET)$(TEST) -f $(outbase).lib -- $(KLIBTWEAKER_EXT) --clear-timestamps $(outbase).lib … … 438 410 # 439 411 # @param $(outbase) Output basename (full). Use this for list files and such. 440 TOOL_VCC1 20AMD64_LINK_SYSMOD_DEPEND = $(foreachlib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)441 TOOL_VCC1 20AMD64_LINK_SYSMOD_DEPORD =442 TOOL_VCC1 20AMD64_LINK_SYSMOD_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest443 TOOL_VCC1 20AMD64_LINK_SYSMOD_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp444 TOOL_VCC1 20AMD64_LINK_SYSMOD_OUTPUT_DEBUG = $(outbase).pdb445 TOOL_VCC1 20AMD64_LINK_SYSMOD_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb446 define TOOL_VCC1 20AMD64_LINK_SYSMOD_CMDS412 TOOL_VCC141AMD64_LINK_SYSMOD_DEPEND = $(foreachfile lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc) 413 TOOL_VCC141AMD64_LINK_SYSMOD_DEPORD = 414 TOOL_VCC141AMD64_LINK_SYSMOD_OUTPUT_MAYBE = $(outbase).lib $(outbase).exp $(outbase).ilk $(out).manifest 415 TOOL_VCC141AMD64_LINK_SYSMOD_OUTPUT_MAYBE_PRECIOUS = $(outbase).map $(outbase).rsp 416 TOOL_VCC141AMD64_LINK_SYSMOD_OUTPUT_DEBUG = $(outbase).pdb 417 TOOL_VCC141AMD64_LINK_SYSMOD_DEBUG_INSTALL_FN = $(2).pdb=>$(basename $(3)).pdb 418 define TOOL_VCC141AMD64_LINK_SYSMOD_CMDS 447 419 $(QUIET)$(APPEND) -tn $(outbase).rsp \ 448 $(foreach arg,\ 449 $(subst /,\\,$(objs)) \ 450 $(subst /,\\,$(libs)) \ 451 ,\"$(arg)\") 452 $(QUIET)$(TOOL_VCC120AMD64_KSUBMIT_DD) $(TOOL_VCC120AMD64_LD) $(flags) \ 420 $(qforeachfile u,arg, $(objs) $(libs),$(quote-sh "$(subst /,\,$(arg))")) 421 $(QUIET)$(TOOL_VCC141AMD64_KSUBMIT_DD) $(TOOL_VCC141AMD64_LD) $(flags) \ 453 422 /OUT:$(out) \ 454 423 /MAPINFO:EXPORTS /INCREMENTAL:NO \ … … 456 425 $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \ 457 426 $(subst /,\\,$(filter %.exp %.res,$(othersrc))) \ 458 $( foreach p,$(libpath), /LIBPATH:$(p)) \427 $(qaddprefix sh,/LIBPATH:,$(libpath)) \ 459 428 @$(outbase).rsp 460 ifndef TOOL_VCC1 20AMD64_NO_AUTO_MANIFEST429 ifndef TOOL_VCC141AMD64_NO_AUTO_MANIFEST 461 430 $(QUIET)$(TEST) -f $(out).manifest -- \ 462 $(TOOL_VCC1 20AMD64_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2'431 $(TOOL_VCC141AMD64_MT) -manifest $(subst /,\\,$(out)).manifest '-outputresource:$(subst /,\\,$(out));#2' 463 432 endif 464 433 endef -
trunk/kBuild/win-common.kmk
r3320 r3323 51 51 WINCMN_PROGRAM_FILES_LIST := $(WINCMN_PROGRAM_FILES_LIST_EXTRA) $(WINCMN_PROGRAM_FILES) $(WINCMN_PROGRAM_FILES_ALT) 52 52 53 ## @def WINCMN_MAP_ARCH.* 54 ## Maps kBuild architecture names to one used by newer windows tools and kits. 55 ## @{ 56 WINCMN_MAP_ARCH.amd64 := x64 57 WINCMN_MAP_ARCH.arm32 := arm 58 WINCMN_MAP_ARCH.arm64 := arm64 59 WINCMN_MAP_ARCH.ia64 := ia64 60 WINCMN_MAP_ARCH.x86 := x86 61 ## @}
Note:
See TracChangeset
for help on using the changeset viewer.