From: Pete Batard <pete@akeo.ie>
To: edk2-devel@lists.01.org
Cc: liming.gao@intel.com
Subject: [PATCH 1/1] BaseTools: Use VS2017 SDK path if defined and reorganize variables
Date: Thu, 16 Nov 2017 13:21:10 +0000 [thread overview]
Message-ID: <20171116132110.11060-2-pete@akeo.ie> (raw)
In-Reply-To: <20171116132110.11060-1-pete@akeo.ie>
1. The use of WindowsSdkVerBinPath allows us to access the latest SDK,
which we will need when we introduce VS2017 support for AARCH64.
2. Make the breakdown between host and target more explicit, and more in
line with how Microsoft reorganized the latest Visual Studio
toolchains, by introducing explicit and separate _HOST and _<ARCH>
variables.
3. Factorize _DLL and _MAKE_PATH as these are host rather than arch
dependent.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Pete Batard <pete@akeo.ie>
---
BaseTools/Conf/tools_def.template | 66 ++++++++++++++++++---------------------
BaseTools/set_vsprefix_envs.bat | 15 ++++-----
2 files changed, 39 insertions(+), 42 deletions(-)
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 4af883463d4f..ad900d821e65 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -74,9 +74,11 @@ DEFINE VS2015x86_BIN = ENV(VS2015_PREFIX)Vc\bin
DEFINE VS2015x86_DLL = ENV(VS2015_PREFIX)Common7\IDE;DEF(VS2015x86_BIN)
DEFINE VS2015x86_BINX64 = DEF(VS2015x86_BIN)\x86_amd64
-DEFINE VS2017_BIN = ENV(VS2017_PREFIX)
-DEFINE VS2017_DLL = ENV(VS2017_PREFIX)
-DEFINE VS2017_BINX64 = ENV(VS2017X64_PREFIX)
+DEFINE VS2017_BIN = ENV(VS2017_PREFIX)bin
+DEFINE VS2017_HOST = x86
+DEFINE VS2017_BIN_HOST = DEF(VS2017_BIN)\HostDEF(VS2017_HOST)\DEF(VS2017_HOST)
+DEFINE VS2017_BIN_IA32 = DEF(VS2017_BIN)\HostDEF(VS2017_HOST)\x86
+DEFINE VS2017_BIN_X64 = DEF(VS2017_BIN)\HostDEF(VS2017_HOST)\x64
DEFINE WINSDK_BIN = ENV(WINSDK_PREFIX)
DEFINE WINSDKx86_BIN = ENV(WINSDKx86_PREFIX)
@@ -98,7 +100,7 @@ DEFINE WINSDK81_BIN = ENV(WINSDK81_PREFIX)x86\
DEFINE WINSDK81x86_BIN = ENV(WINSDK81x86_PREFIX)x64
# Microsoft Visual Studio 2017 Professional Edition
-DEFINE WINSDK10_BIN = ENV(WINSDK10_PREFIX)
+DEFINE WINSDK10_BIN = ENV(WINSDK10_PREFIX)x86
# These defines are needed for certain Microsoft Visual Studio tools that
# are used by other toolchains. An example is that ICC on Windows normally
@@ -4074,8 +4076,9 @@ NOOPT_VS2015x86xASL_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT
####################################################################################
# VS2017 - Microsoft Visual Studio 2017 professional Edition with Intel ASL
*_VS2017_*_*_FAMILY = MSFT
+*_VS2017_*_*_DLL = DEF(VS2017_BIN_HOST)
-*_VS2017_*_MAKE_PATH = DEF(VS2017_BIN)\nmake.exe
+*_VS2017_*_MAKE_PATH = DEF(VS2017_BIN_HOST)\nmake.exe
*_VS2017_*_MAKE_FLAG = /nologo
*_VS2017_*_RC_PATH = DEF(WINSDK10_BIN)\rc.exe
@@ -4085,7 +4088,7 @@ NOOPT_VS2015x86xASL_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT
*_VS2017_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
*_VS2017_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
*_VS2017_*_DLINK2_FLAGS = /WHOLEARCHIVE
-*_VS2017_*_ASM16_PATH = DEF(VS2017_BIN)\ml.exe
+*_VS2017_*_ASM16_PATH = DEF(VS2017_BIN_IA32)\ml.exe
##################
# ASL definitions
@@ -4100,19 +4103,16 @@ NOOPT_VS2015x86xASL_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT
##################
# IA32 definitions
##################
-*_VS2017_IA32_*_DLL = DEF(VS2017_DLL)
-
-*_VS2017_IA32_MAKE_PATH = DEF(VS2017_BIN)\nmake.exe
-*_VS2017_IA32_CC_PATH = DEF(VS2017_BIN)\cl.exe
-*_VS2017_IA32_VFRPP_PATH = DEF(VS2017_BIN)\cl.exe
-*_VS2017_IA32_ASLCC_PATH = DEF(VS2017_BIN)\cl.exe
-*_VS2017_IA32_ASLPP_PATH = DEF(VS2017_BIN)\cl.exe
-*_VS2017_IA32_SLINK_PATH = DEF(VS2017_BIN)\lib.exe
-*_VS2017_IA32_DLINK_PATH = DEF(VS2017_BIN)\link.exe
-*_VS2017_IA32_ASLDLINK_PATH= DEF(VS2017_BIN)\link.exe
-*_VS2017_IA32_APP_PATH = DEF(VS2017_BIN)\cl.exe
-*_VS2017_IA32_PP_PATH = DEF(VS2017_BIN)\cl.exe
-*_VS2017_IA32_ASM_PATH = DEF(VS2017_BIN)\ml.exe
+*_VS2017_IA32_CC_PATH = DEF(VS2017_BIN_IA32)\cl.exe
+*_VS2017_IA32_VFRPP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
+*_VS2017_IA32_ASLCC_PATH = DEF(VS2017_BIN_IA32)\cl.exe
+*_VS2017_IA32_ASLPP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
+*_VS2017_IA32_SLINK_PATH = DEF(VS2017_BIN_IA32)\lib.exe
+*_VS2017_IA32_DLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe
+*_VS2017_IA32_ASLDLINK_PATH= DEF(VS2017_BIN_IA32)\link.exe
+*_VS2017_IA32_APP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
+*_VS2017_IA32_PP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
+*_VS2017_IA32_ASM_PATH = DEF(VS2017_BIN_IA32)\ml.exe
*_VS2017_IA32_MAKE_FLAGS = /nologo
DEBUG_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
@@ -4134,18 +4134,16 @@ NOOPT_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O
##################
# X64 definitions
##################
-*_VS2017_X64_*_DLL = DEF(VS2017_DLL)
-
-*_VS2017_X64_CC_PATH = DEF(VS2017_BINX64)\cl.exe
-*_VS2017_X64_PP_PATH = DEF(VS2017_BINX64)\cl.exe
-*_VS2017_X64_APP_PATH = DEF(VS2017_BINX64)\cl.exe
-*_VS2017_X64_VFRPP_PATH = DEF(VS2017_BINX64)\cl.exe
-*_VS2017_X64_ASLCC_PATH = DEF(VS2017_BINX64)\cl.exe
-*_VS2017_X64_ASLPP_PATH = DEF(VS2017_BINX64)\cl.exe
-*_VS2017_X64_ASM_PATH = DEF(VS2017_BINX64)\ml64.exe
-*_VS2017_X64_SLINK_PATH = DEF(VS2017_BINX64)\lib.exe
-*_VS2017_X64_DLINK_PATH = DEF(VS2017_BINX64)\link.exe
-*_VS2017_X64_ASLDLINK_PATH = DEF(VS2017_BINX64)\link.exe
+*_VS2017_X64_CC_PATH = DEF(VS2017_BIN_X64)\cl.exe
+*_VS2017_X64_PP_PATH = DEF(VS2017_BIN_X64)\cl.exe
+*_VS2017_X64_APP_PATH = DEF(VS2017_BIN_X64)\cl.exe
+*_VS2017_X64_VFRPP_PATH = DEF(VS2017_BIN_X64)\cl.exe
+*_VS2017_X64_ASLCC_PATH = DEF(VS2017_BIN_X64)\cl.exe
+*_VS2017_X64_ASLPP_PATH = DEF(VS2017_BIN_X64)\cl.exe
+*_VS2017_X64_ASM_PATH = DEF(VS2017_BIN_X64)\ml64.exe
+*_VS2017_X64_SLINK_PATH = DEF(VS2017_BIN_X64)\lib.exe
+*_VS2017_X64_DLINK_PATH = DEF(VS2017_BIN_X64)\link.exe
+*_VS2017_X64_ASLDLINK_PATH = DEF(VS2017_BIN_X64)\link.exe
DEBUG_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm
RELEASE_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
@@ -4167,14 +4165,12 @@ NOOPT_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O
# EBC definitions
##################
*_VS2017_EBC_*_FAMILY = INTEL
-*_VS2017_EBC_*_DLL = DEF(VS2017_DLL)
-*_VS2017_EBC_MAKE_PATH = DEF(VS2017_BIN)\nmake.exe
*_VS2017_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe
*_VS2017_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe
*_VS2017_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe
-*_VS2017_EBC_SLINK_PATH = DEF(VS2017_BIN)\link.exe
-*_VS2017_EBC_DLINK_PATH = DEF(VS2017_BIN)\link.exe
+*_VS2017_EBC_SLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe
+*_VS2017_EBC_DLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe
*_VS2017_EBC_MAKE_FLAGS = /nologo
*_VS2017_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
diff --git a/BaseTools/set_vsprefix_envs.bat b/BaseTools/set_vsprefix_envs.bat
index dbd4e986403b..9ff64dfd241d 100644
--- a/BaseTools/set_vsprefix_envs.bat
+++ b/BaseTools/set_vsprefix_envs.bat
@@ -3,7 +3,7 @@
@REM however it may be executed directly from the BaseTools project folder
@REM if the file is not executed within a WORKSPACE\BaseTools folder.
@REM
-@REM Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+@REM Copyright (c) 2016-2017, Intel Corporation. All rights reserved.<BR>
@REM
@REM This program and the accompanying materials are licensed and made available
@REM under the terms and conditions of the BSD License which accompanies this
@@ -107,15 +107,16 @@ if not defined VS150COMNTOOLS (
if defined VCToolsInstallDir (
if not defined VS2017_PREFIX (
- set "VS2017_PREFIX=%VCToolsInstallDir%bin\HostX86\x86"
- set "VS2017X64_PREFIX=%VCToolsInstallDir%bin\HostX86\x64"
+ set "VS2017_PREFIX=%VCToolsInstallDir%"
)
)
if not defined WINSDK10_PREFIX (
- if exist "%ProgramFiles(x86)%\Windows Kits\10\bin\x86" (
- set "WINSDK10_PREFIX=%ProgramFiles(x86)%\Windows Kits\10\bin\x86"
- ) else if exist "%ProgramFiles%\Windows Kits\10\bin\x86" (
- set "WINSDK10_PREFIX=%ProgramFiles%\Windows Kits\10\bin\x86"
+ if defined WindowsSdkVerBinPath (
+ set "WINSDK10_PREFIX=%WindowsSdkVerBinPath%"
+ ) else if exist "%ProgramFiles(x86)%\Windows Kits\10\bin" (
+ set "WINSDK10_PREFIX=%ProgramFiles(x86)%\Windows Kits\10\bin"
+ ) else if exist "%ProgramFiles%\Windows Kits\10\bin" (
+ set "WINSDK10_PREFIX=%ProgramFiles%\Windows Kits\10\bin"
)
)
--
2.9.3.windows.2
next prev parent reply other threads:[~2017-11-16 13:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-16 13:21 [PATCH 0/1] Update for the 2017-10-18 VS2017 proposal Pete Batard
2017-11-16 13:21 ` Pete Batard [this message]
2017-11-16 14:48 ` [PATCH 1/1] BaseTools: Use VS2017 SDK path if defined and reorganize variables Gao, Liming
2017-11-16 15:45 ` Pete Batard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171116132110.11060-2-pete@akeo.ie \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox