summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--BaseTools/get_vsvars.bat42
-rw-r--r--BaseTools/set_vsprefix_envs.bat47
-rwxr-xr-xBaseTools/toolsetup.bat60
-rwxr-xr-xedksetup.bat10
4 files changed, 144 insertions, 15 deletions
diff --git a/BaseTools/get_vsvars.bat b/BaseTools/get_vsvars.bat
index 9b5e9d24fc..9f3759b2a9 100644
--- a/BaseTools/get_vsvars.bat
+++ b/BaseTools/get_vsvars.bat
@@ -8,7 +8,12 @@
@echo off
-goto :main
+set SCRIPT_ERROR=0
+if "%1"=="" goto main
+if /I "%1"=="VS2017" goto VS2017Vars
+if /I "%1"=="VS2015" goto VS2015Vars
+if /I "%1"=="VS2013" goto VS2013Vars
+if /I "%1"=="VS2012" goto VS2012Vars
:set_vsvars
for /f "usebackq tokens=1* delims=: " %%i in (`%*`) do (
@@ -26,6 +31,10 @@ if defined VCINSTALLDIR goto :EOF
goto :EOF
+:ToolNotInstall
+set SCRIPT_ERROR=1
+goto :EOF
+
REM NOTE: This file will find the most recent Visual Studio installation
REM apparent from the environment.
REM To use an older version, modify your environment set up.
@@ -33,11 +42,32 @@ REM (Or invoke the relevant vsvars32 file beforehand).
:main
if defined VCINSTALLDIR goto :done
- if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" call :set_vsvars "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
- if exist "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" call :set_vsvars "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"
- if defined VS140COMNTOOLS call :read_vsvars "%VS140COMNTOOLS%"
- if defined VS120COMNTOOLS call :read_vsvars "%VS120COMNTOOLS%"
- if defined VS110COMNTOOLS call :read_vsvars "%VS110COMNTOOLS%"
+ :VS2017Vars
+ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" (
+ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools" (
+ call :set_vsvars "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools
+ ) else (
+ call :set_vsvars "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
+ )
+ )
+ if exist "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" (
+ if exist "%ProgramFiles%\Microsoft Visual Studio\2017\BuildTools" (
+ call :set_vsvars "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools
+ ) else (
+ call :set_vsvars "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"
+ )
+ )
+ if /I "%1"=="VS2017" goto ToolNotInstall
+
+ :VS2015Vars
+ if defined VS140COMNTOOLS (call :read_vsvars "%VS140COMNTOOLS%") else (if /I "%1"=="VS2015" goto ToolNotInstall)
+
+ :VS2013Vars
+ if defined VS120COMNTOOLS ( call :read_vsvars "%VS120COMNTOOLS%") else (if /I "%1"=="VS2013" goto ToolNotInstall)
+
+ :VS2012Vars
+ if defined VS110COMNTOOLS (call :read_vsvars "%VS110COMNTOOLS%") else (if /I "%1"=="VS2012" goto ToolNotInstall)
+
if defined VS100COMNTOOLS call :read_vsvars "%VS100COMNTOOLS%"
if defined VS90COMNTOOLS call :read_vsvars "%VS90COMNTOOLS%"
if defined VS80COMNTOOLS call :read_vsvars "%VS80COMNTOOLS%"
diff --git a/BaseTools/set_vsprefix_envs.bat b/BaseTools/set_vsprefix_envs.bat
index 95f30f7aef..81686f5b63 100644
--- a/BaseTools/set_vsprefix_envs.bat
+++ b/BaseTools/set_vsprefix_envs.bat
@@ -10,6 +10,18 @@
@echo off
pushd .
+set SCRIPT_ERROR=0
+goto main
+
+:ToolNotInstall
+set SCRIPT_ERROR=1
+goto :EOF
+
+:main
+if /I "%1"=="VS2017" goto SetVS2017
+if /I "%1"=="VS2015" goto SetVS2015
+if /I "%1"=="VS2013" goto SetVS2013
+if /I "%1"=="VS2012" goto SetVS2012
if defined VS71COMNTOOLS (
if not defined VS2003_PREFIX (
@@ -47,6 +59,7 @@ if defined VS100COMNTOOLS (
)
)
+:SetVS2012
if defined VS110COMNTOOLS (
if not defined VS2012_PREFIX (
set "VS2012_PREFIX=%VS110COMNTOOLS:~0,-14%"
@@ -57,8 +70,12 @@ if defined VS110COMNTOOLS (
if not defined WINSDK71x86_PREFIX (
set "WINSDK71x86_PREFIX=c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\"
)
+) else (
+ if /I "%1"=="VS2012" goto ToolNotInstall
)
+if /I "%1"=="VS2012" goto SetWinDDK
+:SetVS2013
if defined VS120COMNTOOLS (
if not defined VS2013_PREFIX (
set "VS2013_PREFIX=%VS120COMNTOOLS:~0,-14%"
@@ -69,8 +86,12 @@ if defined VS120COMNTOOLS (
if not defined WINSDK8x86_PREFIX (
set "WINSDK8x86_PREFIX=c:\Program Files (x86)\Windows Kits\8.0\bin\"
)
+) else (
+ if /I "%1"=="VS2013" goto ToolNotInstall
)
+if /I "%1"=="VS2013" goto SetWinDDK
+:SetVS2015
if defined VS140COMNTOOLS (
if not defined VS2015_PREFIX (
set "VS2015_PREFIX=%VS140COMNTOOLS:~0,-14%"
@@ -81,19 +102,35 @@ if defined VS140COMNTOOLS (
if not defined WINSDK81x86_PREFIX (
set "WINSDK81x86_PREFIX=c:\Program Files (x86)\Windows Kits\8.1\bin\"
)
+) else (
+ if /I "%1"=="VS2015" goto ToolNotInstall
)
+if /I "%1"=="VS2015" goto SetWinDDK
-@REM set VS2017
+:SetVS2017
if not defined VS150COMNTOOLS (
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" (
- for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"`) do (
- if /i "%%i"=="installationPath" call "%%j\VC\Auxiliary\Build\vcvars32.bat"
+ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools" (
+ for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools`) do (
+ if /i "%%i"=="installationPath" call "%%j\VC\Auxiliary\Build\vcvars32.bat"
+ )
+ ) else (
+ for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"`) do (
+ if /i "%%i"=="installationPath" call "%%j\VC\Auxiliary\Build\vcvars32.bat"
+ )
)
) else if exist "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" (
- for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"`) do (
- if /i "%%i"=="installationPath" call "%%j\VC\Auxiliary\Build\vcvars32.bat"
+ if exist "%ProgramFiles%\Microsoft Visual Studio\2017\BuildTools" (
+ for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools`) do (
+ if /i "%%i"=="installationPath" call "%%j\VC\Auxiliary\Build\vcvars32.bat"
+ )
+ ) else (
+ for /f "usebackq tokens=1* delims=: " %%i in (`"%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"`) do (
+ if /i "%%i"=="installationPath" call "%%j\VC\Auxiliary\Build\vcvars32.bat"
+ )
)
) else (
+ if /I "%1"=="VS2017" goto ToolNotInstall
goto SetWinDDK
)
)
diff --git a/BaseTools/toolsetup.bat b/BaseTools/toolsetup.bat
index 999f3b3984..395694fa09 100755
--- a/BaseTools/toolsetup.bat
+++ b/BaseTools/toolsetup.bat
@@ -11,6 +11,7 @@
@echo off
pushd .
+set SCRIPT_ERROR=0
@REM ##############################################################
@REM # You should not have to modify anything below this line
@@ -41,6 +42,30 @@ if /I "%1"=="/?" goto Usage
set FORCE_REBUILD=TRUE
goto loop
)
+ if /I "%1"=="VS2017" (
+ shift
+ set VS2017=TRUE
+ set VSTool=VS2017
+ goto loop
+ )
+ if /I "%1"=="VS2015" (
+ shift
+ set VS2015=TRUE
+ set VSTool=VS2015
+ goto loop
+ )
+ if /I "%1"=="VS2013" (
+ shift
+ set VS2013=TRUE
+ set VSTool=VS2013
+ goto loop
+ )
+ if /I "%1"=="VS2012" (
+ shift
+ set VS2012=TRUE
+ set VSTool=VS2012
+ goto loop
+ )
if "%1"=="" goto setup_workspace
if exist %1 (
if not defined BASE_TOOLS_PATH (
@@ -151,7 +176,27 @@ IF NOT exist "%EDK_TOOLS_PATH%\set_vsprefix_envs.bat" (
@echo.
goto end
)
-call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat
+if defined VS2017 (
+ call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2017
+) else if defined VS2015 (
+ call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2015
+ call %EDK_TOOLS_PATH%\get_vsvars.bat VS2015
+) else if defined VS2013 (
+ call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2013
+ call %EDK_TOOLS_PATH%\get_vsvars.bat VS2013
+) else if defined VS2012 (
+ call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2012
+ call %EDK_TOOLS_PATH%\get_vsvars.bat VS2012
+) else (
+ call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat
+ call %EDK_TOOLS_PATH%\get_vsvars.bat
+)
+if %SCRIPT_ERROR% NEQ 0 (
+ @echo.
+ @echo !!! ERROR !!! %VSTool% is not installed !!!
+ @echo.
+ goto end
+)
if not defined CONF_PATH (
set CONF_PATH=%WORKSPACE%\Conf
@@ -365,7 +410,7 @@ goto end
goto end
)
)
- call "%EDK_TOOLS_PATH%\get_vsvars.bat"
+
if not defined VCINSTALLDIR (
@echo.
@echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!
@@ -399,7 +444,7 @@ goto end
:Usage
@echo.
- echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"
+ echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]] [VS2017] [VS2015] [VS2013] [VS2012]"
@echo.
@echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path.
@echo edk_tools_path EDK_TOOLS_PATH will be set to this path.
@@ -408,11 +453,20 @@ goto end
@echo ForceRebuild If sources are available, rebuild all tools regardless of
@echo whether they have been updated or not.
@echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.
+ @echo VS2012 Set the env for VS2012 build.
+ @echo VS2013 Set the env for VS2013 build.
+ @echo VS2015 Set the env for VS2015 build.
+ @echo VS2017 Set the env for VS2017 build.
@echo.
:end
set REBUILD=
set FORCE_REBUILD=
set RECONFIG=
+set VS2017=
+set VS2015=
+set VS2013=
+set VS2012=
+set VSTool=
popd
diff --git a/edksetup.bat b/edksetup.bat
index d607e2ebea..5f6028deff 100755
--- a/edksetup.bat
+++ b/edksetup.bat
@@ -133,15 +133,23 @@ if defined CYGWIN_HOME (
:cygwin_done
if /I "%1"=="Rebuild" shift
if /I "%1"=="ForceRebuild" shift
+if /I "%1"=="VS2017" shift
+if /I "%1"=="VS2015" shift
+if /I "%1"=="VS2013" shift
+if /I "%1"=="VS2012" shift
if "%1"=="" goto end
:Usage
@echo.
- @echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [Reconfig] [Rebuild] [ForceRebuild]"
+ @echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [Reconfig] [Rebuild] [ForceRebuild] [VS2017] [VS2015] [VS2013] [VS2012]"
@echo.
@echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.
@echo Rebuild Perform incremental rebuild of BaseTools binaries.
@echo ForceRebuild Force a full rebuild of BaseTools binaries.
+ @echo VS2012 Set the env for VS2012 build.
+ @echo VS2013 Set the env for VS2013 build.
+ @echo VS2015 Set the env for VS2015 build.
+ @echo VS2017 Set the env for VS2017 build.
@echo.
@echo Note that target.template, tools_def.template and build_rules.template
@echo will only be copied to target.txt, tools_def.txt and build_rule.txt