2019-03-07 08:42:42 -05:00
@ echo off
rem %1 = architecture
rem %2 = library type (LIB|DLL)
rem %3 = platform (Win32|x64)
rem %4 = configuration (Release|Debug)
rem %5 = Windows SDK Version
rem %6 = build tests (|+tests)
2020-03-15 12:51:04 -04:00
@ echo off
2020-04-08 09:46:02 -04:00
setlocal ENABLEDELAYEDEXPANSION
2020-03-15 12:51:04 -04:00
2020-04-08 09:46:02 -04:00
rem Visual Studio version (2017 or 2019)
2019-05-15 05:40:24 -04:00
set vs_version = 2019
2019-03-07 08:42:42 -05:00
2020-03-15 12:51:04 -04:00
set vsw_exe = " %ProgramFiles(x86)% \Microsoft Visual Studio\Installer\vswhere.exe "
2020-04-08 11:42:02 -04:00
for /f " usebackq tokens=* " %% i in ( `"!vsw_exe!" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath` ) do (
2020-04-08 09:46:02 -04:00
set InstallDir = %% i
2020-03-15 12:51:04 -04:00
)
if %vs_version% EQU " 2017 " (
2020-04-08 09:59:06 -04:00
set msb_dir = " !InstallDir! \MSBuild\15.0\Bin "
2020-03-15 12:51:04 -04:00
) else (
2020-04-08 09:59:06 -04:00
set msb_dir = " !InstallDir! \MSBuild\Current\Bin "
2020-03-15 12:51:04 -04:00
)
2020-03-15 13:24:13 -04:00
set msb_dir = %msb_dir:"=%
set msb_exe = " %msb_dir% \MSBuild.exe "
2020-04-08 11:23:29 -04:00
if not exist !msb_exe! (
echo " Visual Studio %vs_version% is not supported (!msb_exe! not found) " & exit /b %errorlevel%
2020-03-15 12:51:04 -04:00
)
2019-03-07 08:42:42 -05:00
if " %4 " NEQ " " if " %3 " NEQ " " if " %2 " NEQ " " if " %1 " NEQ " " goto cont
call : get_architectures -
echo usage: msbuild architecture=^< %architectures:|=^|% ^> library_type=^< LIB^| DLL^> platform=^< Win32^| x64^> configuration=^< Release^| Debug^> [Windows_SDK_Version=^< n^> ] [+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 /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 )
2020-04-08 09:46:02 -04:00
if /i " %6 " NEQ " " if " %6 " EQU " +tests " ( set run_tests = y)
2019-03-07 08:42:42 -05:00
set src = %libp% _mpir_%1
rem This is the Visual Studio build directory (within the MPIR directory)
set srcdir = .
2020-04-08 11:23:29 -04:00
echo !msb_exe! /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %srcdir% \%src% \%src% .vcxproj
!msb_exe! /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %srcdir% \%src% \%src% .vcxproj
2019-03-07 08:42:42 -05:00
if /i " %libp% " == " LIB " (
2020-04-08 11:23:29 -04:00
!msb_exe! /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %srcdir% \lib_mpir_cxx\lib_mpir_cxx.vcxproj
2019-03-07 08:42:42 -05:00
)
if /i " %run_tests% " NEQ " " (
for /d %% d in ( .\mpir-tests\*) do (
for %% f in ( %% d\*.vcxproj) do (
2020-04-08 11:23:29 -04:00
!msb_exe! /property:SolutionDir=..\..\ /property:OutDir=..\..\%plat% \%conf% \ /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %% f
2019-03-07 08:42:42 -05:00
)
)
)
: get_architectures
set architectures =
for /d %% a in ( lib_mpir_*) do ( call : add_architecture %% a %1 )
goto : eof
: add_architecture
set xx = %1
set arch = %xx:~9%
if /i " %arch% " EQU " cxx " goto : eof
if _%2 _ == __ (
set " delim= "
set arch = %arch%
) else (
set delim = ^|
)
if " %architectures% " == " " (
set " architectures= %arch% "
) else (
set " architectures= %architectures% %delim% %arch% "
)
goto : eof
: set_arch
set arch = %1
goto : eof
: clrerr
exit /b 0
: seterr
exit /b 1