From 0da9962426942517e95196a77934503b9478efaa Mon Sep 17 00:00:00 2001 From: Brian Gladman Date: Wed, 5 Sep 2018 15:52:38 +0100 Subject: [PATCH] update all msbuild.bat files to use a common script --- msvc/vs13/msbuild.bat | 51 +++++++++++++++++++++++++++++++------------ msvc/vs15/msbuild.bat | 51 +++++++++++++++++++++++++++++++------------ msvc/vs17/msbuild.bat | 25 ++++++++++++++------- 3 files changed, 91 insertions(+), 36 deletions(-) diff --git a/msvc/vs13/msbuild.bat b/msvc/vs13/msbuild.bat index d2998998..cf769550 100644 --- a/msvc/vs13/msbuild.bat +++ b/msvc/vs13/msbuild.bat @@ -3,39 +3,60 @@ rem %1 = architecture rem %2 = library type (LIB|DLL) rem %3 = platform (Win32|x64) rem %4 = configuration (Release|Debug) -rem %5 = build tests (|+tests) +rem %5 = Windows SDK Version +rem %6 = build tests (|+tests) + +rem Visual Studio version (2013, 2015 or 2017) +set vs_version=2013 + +rem find the MSBUILD installation directory +if "%vs_version%" EQU "2013" ( + set msbdir="C:\Program Files (x86)\MSBuild\12.0\Bin" + ) else if "%vs_version%" EQU "2015" ( + set msbdir="C:\Program Files (x86)\MSBuild\14.0\Bin" + ) else if "%vs_version%" EQU "2017" ( + set vsw_exe="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" + for /f "usebackq tokens=*" %%i in (`%vsw_exe% -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do ( + set InstallDir=%%i + ) + if exist "%InstallDir%\MSBuild\15.0\Bin\MSBuild.exe" ( + set msbdir="%InstallDir%\MSBuild\15.0\Bin" + ) + ) else ( + echo "Visual Studio %vs_version% is not supported" & exit /b %errorlevel% + ) if "%4" NEQ "" if "%3" NEQ "" if "%2" NEQ "" if "%1" NEQ "" goto cont call :get_architectures - -echo usage: msbuild architecture=^<%architectures:|=^|%^> library_type=^ platform=^ configuration=^ +echo usage: msbuild architecture=^<%architectures:|=^|%^> library_type=^ platform=^ configuration=^ [Windows_SDK_Version=^] [+tests] goto :eof :cont rem example use: msbuild sandybridge_ivybridge dll x64 release -if not exist "lib_mpir_%1" (call :get_architectures & call :seterr & echo ERROR: architecture is one of %architectures% ^(not "%1"^) & exit /b %errorlevel%) +if not exist "lib_mpir_%1" (call :get_architectures & call :seterr & echo ERROR: architecture is one of ^(%architectures%^) ^(not %1^) & exit /b %errorlevel%) if /i "%2" EQU "DLL" (set libp=dll) else (if /i "%2" EQU "LIB" (set libp=lib) else ((call :seterr & echo ERROR: library type is "lib" or "dll" ^(not "%2"^) & exit /b %errorlevel%))) if /i "%3" EQU "x64" (set plat=x64) else (if /i "%3" EQU "Win32" (set plat=win32) else (call :seterr & echo ERROR: platform is "Win32" or "x64" ^(not "%3"^) & exit /b %errorlevel%)) if /i "%4" EQU "Debug" (set conf=Debug) else (if /i "%4" EQU "Release" (set conf=Release) else (call :seterr & echo ERROR: configuration is "Release" or "Debug" ^(not "%4"^) & exit /b %errorlevel%)) +if /i "%5" NEQ "" if "%5" EQU "+tests" (set run_tests=y) else (set win_sdk=%5) +if /i "%6" NEQ "" if "%6" EQU "+tests" (set run_tests=y) set src=%libp%_mpir_%1 -rem This is the directory where Microsoft MSBUILD is installed -set msbdir="C:\Program Files (x86)\MSBuild\14.0\Bin" - rem This is the Visual Studio build directory (within the MPIR directory) -set srcdir="." +set srcdir=. -%msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% %srcdir%\%src%\%src%.vcxproj +echo %msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %srcdir%\%src%\%src%.vcxproj +%msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %srcdir%\%src%\%src%.vcxproj if /i "%libp%" == "LIB" ( - %msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% %srcdir%\lib_mpir_cxx\lib_mpir_cxx.vcxproj + %msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %srcdir%\lib_mpir_cxx\lib_mpir_cxx.vcxproj ) -if /i "%5" EQU "+tests" ( +if /i "%run_tests%" NEQ "" ( for /d %%d in (.\mpir-tests\*) do ( for %%f in (%%d\*.vcxproj) do ( - %msbdir%\msbuild.exe /property:SolutionDir=..\..\ /property:OutDir=..\..\%plat%\%conf%\ /p:Platform=%plat% /p:Configuration=%conf% %%f + %msbdir%\msbuild.exe /property:SolutionDir=..\..\ /property:OutDir=..\..\%plat%\%conf%\ /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %%f ) ) ) @@ -46,10 +67,12 @@ for /d %%a in (lib_mpir_*) do (call :add_architecture %%a %1) goto :eof :add_architecture -for /f "tokens=3,* delims=_" %%a in ("%1") do set arch=%%a +set xx=%1 +set arch=%xx:~9% +if /i "%arch%" EQU "cxx" goto :eof if _%2_ == __ ( - set "delim= or " - set arch=^"%arch%^" + set "delim= " + set arch=%arch% ) else ( set delim=^| ) diff --git a/msvc/vs15/msbuild.bat b/msvc/vs15/msbuild.bat index d2998998..2d736a04 100644 --- a/msvc/vs15/msbuild.bat +++ b/msvc/vs15/msbuild.bat @@ -3,39 +3,60 @@ rem %1 = architecture rem %2 = library type (LIB|DLL) rem %3 = platform (Win32|x64) rem %4 = configuration (Release|Debug) -rem %5 = build tests (|+tests) +rem %5 = Windows SDK Version +rem %6 = build tests (|+tests) + +rem Visual Studio version (2013, 2015 or 2017) +set vs_version=2015 + +rem find the MSBUILD installation directory +if "%vs_version%" EQU "2013" ( + set msbdir="C:\Program Files (x86)\MSBuild\12.0\Bin" + ) else if "%vs_version%" EQU "2015" ( + set msbdir="C:\Program Files (x86)\MSBuild\14.0\Bin" + ) else if "%vs_version%" EQU "2017" ( + set vsw_exe="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" + for /f "usebackq tokens=*" %%i in (`%vsw_exe% -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do ( + set InstallDir=%%i + ) + if exist "%InstallDir%\MSBuild\15.0\Bin\MSBuild.exe" ( + set msbdir="%InstallDir%\MSBuild\15.0\Bin" + ) + ) else ( + echo "Visual Studio %vs_version% is not supported" & exit /b %errorlevel% + ) if "%4" NEQ "" if "%3" NEQ "" if "%2" NEQ "" if "%1" NEQ "" goto cont call :get_architectures - -echo usage: msbuild architecture=^<%architectures:|=^|%^> library_type=^ platform=^ configuration=^ +echo usage: msbuild architecture=^<%architectures:|=^|%^> library_type=^ platform=^ configuration=^ [Windows_SDK_Version=^] [+tests] goto :eof :cont rem example use: msbuild sandybridge_ivybridge dll x64 release -if not exist "lib_mpir_%1" (call :get_architectures & call :seterr & echo ERROR: architecture is one of %architectures% ^(not "%1"^) & exit /b %errorlevel%) +if not exist "lib_mpir_%1" (call :get_architectures & call :seterr & echo ERROR: architecture is one of ^(%architectures%^) ^(not %1^) & exit /b %errorlevel%) if /i "%2" EQU "DLL" (set libp=dll) else (if /i "%2" EQU "LIB" (set libp=lib) else ((call :seterr & echo ERROR: library type is "lib" or "dll" ^(not "%2"^) & exit /b %errorlevel%))) if /i "%3" EQU "x64" (set plat=x64) else (if /i "%3" EQU "Win32" (set plat=win32) else (call :seterr & echo ERROR: platform is "Win32" or "x64" ^(not "%3"^) & exit /b %errorlevel%)) if /i "%4" EQU "Debug" (set conf=Debug) else (if /i "%4" EQU "Release" (set conf=Release) else (call :seterr & echo ERROR: configuration is "Release" or "Debug" ^(not "%4"^) & exit /b %errorlevel%)) +if /i "%5" NEQ "" if "%5" EQU "+tests" (set run_tests=y) else (set win_sdk=%5) +if /i "%6" NEQ "" if "%6" EQU "+tests" (set run_tests=y) set src=%libp%_mpir_%1 -rem This is the directory where Microsoft MSBUILD is installed -set msbdir="C:\Program Files (x86)\MSBuild\14.0\Bin" - rem This is the Visual Studio build directory (within the MPIR directory) -set srcdir="." +set srcdir=. -%msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% %srcdir%\%src%\%src%.vcxproj +echo %msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %srcdir%\%src%\%src%.vcxproj +%msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %srcdir%\%src%\%src%.vcxproj if /i "%libp%" == "LIB" ( - %msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% %srcdir%\lib_mpir_cxx\lib_mpir_cxx.vcxproj + %msbdir%\msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %srcdir%\lib_mpir_cxx\lib_mpir_cxx.vcxproj ) -if /i "%5" EQU "+tests" ( +if /i "%run_tests%" NEQ "" ( for /d %%d in (.\mpir-tests\*) do ( for %%f in (%%d\*.vcxproj) do ( - %msbdir%\msbuild.exe /property:SolutionDir=..\..\ /property:OutDir=..\..\%plat%\%conf%\ /p:Platform=%plat% /p:Configuration=%conf% %%f + %msbdir%\msbuild.exe /property:SolutionDir=..\..\ /property:OutDir=..\..\%plat%\%conf%\ /p:Platform=%plat% /p:Configuration=%conf% /p:"Windows%20SDK%20Version=%win_sdk%" %%f ) ) ) @@ -46,10 +67,12 @@ for /d %%a in (lib_mpir_*) do (call :add_architecture %%a %1) goto :eof :add_architecture -for /f "tokens=3,* delims=_" %%a in ("%1") do set arch=%%a +set xx=%1 +set arch=%xx:~9% +if /i "%arch%" EQU "cxx" goto :eof if _%2_ == __ ( - set "delim= or " - set arch=^"%arch%^" + set "delim= " + set arch=%arch% ) else ( set delim=^| ) diff --git a/msvc/vs17/msbuild.bat b/msvc/vs17/msbuild.bat index 6324d288..c069e1d1 100644 --- a/msvc/vs17/msbuild.bat +++ b/msvc/vs17/msbuild.bat @@ -6,16 +6,25 @@ rem %4 = configuration (Release|Debug) rem %5 = Windows SDK Version rem %6 = build tests (|+tests) -set vsw_exe="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" +rem Visual Studio version (2013, 2015 or 2017) +set vs_version=2017 -rem This is the directory where Microsoft MSBUILD is installed -for /f "usebackq tokens=*" %%i in (`%vsw_exe% -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do ( +rem find the MSBUILD installation directory +if "%vs_version%" EQU "2013" ( + set msbdir="C:\Program Files (x86)\MSBuild\12.0\Bin" + ) else if "%vs_version%" EQU "2015" ( + set msbdir="C:\Program Files (x86)\MSBuild\14.0\Bin" + ) else if "%vs_version%" EQU "2017" ( + set vsw_exe="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" + for /f "usebackq tokens=*" %%i in (`%vsw_exe% -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do ( set InstallDir=%%i -) - -if exist "%InstallDir%\MSBuild\15.0\Bin\MSBuild.exe" ( - set msbdir="%InstallDir%\MSBuild\15.0\Bin" -) + ) + if exist "%InstallDir%\MSBuild\15.0\Bin\MSBuild.exe" ( + set msbdir="%InstallDir%\MSBuild\15.0\Bin" + ) + ) else ( + echo "Visual Studio %vs_version% is not supported" & exit /b %errorlevel% + ) if "%4" NEQ "" if "%3" NEQ "" if "%2" NEQ "" if "%1" NEQ "" goto cont call :get_architectures -