public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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



  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