2018-08-29 09:15:58 -04:00
@ echo off
rem %1 = architecture
rem %2 = library type (LIB|DLL)
rem %3 = platform (Win32|x64)
rem %4 = configuration (Release|Debug)
2018-09-05 10:52:38 -04:00
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%
)
2018-08-29 09:15:58 -04:00
if " %4 " NEQ " " if " %3 " NEQ " " if " %2 " NEQ " " if " %1 " NEQ " " goto cont
call : get_architectures -
2018-09-05 10:52:38 -04:00
echo usage: msbuild architecture=^< %architectures:|=^|% ^> library_type=^< LIB^| DLL^> platform=^< Win32^| x64^> configuration=^< Release^| Debug^> [Windows_SDK_Version=^< n^> ] [+tests]
2018-08-29 09:15:58 -04:00
goto : eof
: cont
rem example use: msbuild sandybridge_ivybridge dll x64 release
2018-09-05 10:52:38 -04:00
if not exist " lib_mpir_ %1 " ( call : get_architectures & call : seterr & echo ERROR: architecture is one of ^( %architectures% ^) ^( not %1 ^) & exit /b %errorlevel% )
2018-08-29 09:15:58 -04:00
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% ) )
2018-09-05 10:52:38 -04:00
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)
2018-08-29 09:15:58 -04:00
set src = %libp% _mpir_%1
rem This is the Visual Studio build directory (within the MPIR directory)
2018-09-05 10:52:38 -04:00
set srcdir = .
2018-08-29 09:15:58 -04:00
2018-09-05 10:52:38 -04:00
echo %msbdir% \msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %srcdir% \%src% \%src% .vcxproj
%msbdir% \msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %srcdir% \%src% \%src% .vcxproj
2018-08-29 09:15:58 -04:00
if /i " %libp% " == " LIB " (
2018-09-05 10:52:38 -04:00
%msbdir% \msbuild.exe /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %srcdir% \lib_mpir_cxx\lib_mpir_cxx.vcxproj
2018-08-29 09:15:58 -04:00
)
2018-09-05 10:52:38 -04:00
if /i " %run_tests% " NEQ " " (
2018-08-29 09:15:58 -04:00
for /d %% d in ( .\mpir-tests\*) do (
for %% f in ( %% d\*.vcxproj) do (
2018-09-05 10:52:38 -04:00
%msbdir% \msbuild.exe /property:SolutionDir=..\..\ /property:OutDir=..\..\%plat% \%conf% \ /p:Platform=%plat% /p:Configuration=%conf% /p:" Windows %2 0SDK %2 0Version= %win_sdk% " %% f
2018-08-29 09:15:58 -04:00
)
)
)
: get_architectures
set architectures =
for /d %% a in ( lib_mpir_*) do ( call : add_architecture %% a %1 )
goto : eof
: add_architecture
2018-09-05 10:52:38 -04:00
set xx = %1
set arch = %xx:~9%
if /i " %arch% " EQU " cxx " goto : eof
2018-08-29 09:15:58 -04:00
if _%2 _ == __ (
2018-09-05 10:52:38 -04:00
set " delim= "
set arch = %arch%
2018-08-29 09:15:58 -04:00
) 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