diff --git a/builds/msvc/build-msvc.cmd b/builds/msvc/build-msvc.cmd index f007aaf5..e84fe756 100644 --- a/builds/msvc/build-msvc.cmd +++ b/builds/msvc/build-msvc.cmd @@ -11,6 +11,7 @@ REM ########################################################################### REM Script managing the build of libbitcoin-database. REM REM Script options: +REM --enable-shani Use Intel/ARM SHA Extensions. REM --build-config config Build configuration. REM --build-platform platform Build platform. REM --build-version version Build MSVC version. @@ -134,6 +135,11 @@ if "!libbitcoin_database_TAG!" == "" ( exit /b 1 ) + set "REMAPPED_PARAMS=!REMAPPED_PARAMS! !libbitcoin-system_PARAMS!" + set "REMAPPED_PARAMS=!REMAPPED_PARAMS! !libbitcoin-system-examples_PARAMS!" + set "REMAPPED_PARAMS=!REMAPPED_PARAMS! !libbitcoin-system-test_PARAMS!" + set "REMAPPED_PARAMS=!REMAPPED_PARAMS! !libbitcoin-database_PARAMS!" + call :msg_heading "Configuration" call :display_build_variables @@ -154,7 +160,7 @@ if "!libbitcoin_database_TAG!" == "" ( if %ERRORLEVEL% neq 0 ( exit /b %ERRORLEVEL% ) - call :build_msbuild "libbitcoin-system" "builds\msvc\%proj_version%" "libbitcoin-system" + call :build_msbuild "libbitcoin-system" "builds\msvc\%proj_version%" "libbitcoin-system" "!REMAPPED_PARAMS!" if %ERRORLEVEL% neq 0 ( exit /b %ERRORLEVEL% ) @@ -163,19 +169,19 @@ if "!libbitcoin_database_TAG!" == "" ( if %ERRORLEVEL% neq 0 ( exit /b %ERRORLEVEL% ) - call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database" + call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database" "!REMAPPED_PARAMS!" if %ERRORLEVEL% neq 0 ( exit /b %ERRORLEVEL% ) - call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database-tools" + call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database-tools" "!REMAPPED_PARAMS!" if %ERRORLEVEL% neq 0 ( exit /b %ERRORLEVEL% ) if not "!BUILD_SKIP_TESTS!" == "yes" ( - call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database-test" - if %ERRORLEVEL% neq 0 ( - exit /b %ERRORLEVEL% - ) + call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database-test" "!REMAPPED_PARAMS!" + if %ERRORLEVEL% neq 0 ( + exit /b %ERRORLEVEL% + ) ) call :pop_directory @@ -193,6 +199,12 @@ if "!libbitcoin_database_TAG!" == "" ( :parse_input if "%~1" == "" ( goto :end_parse_input + ) else if "%~1" == "--enable-shani" ( + if "!libbitcoin-system_PARAMS!" == "" ( + set "libbitcoin-system_PARAMS=/p:Option-sha=true" + ) else ( + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-sha=true" + ) ) else if "%~1" == "--build-config" ( set "BUILD_CONFIG=%~2" shift @@ -225,7 +237,7 @@ if "!libbitcoin_database_TAG!" == "" ( set "DISPLAY_HELP=yes" ) else ( if "!UNHANDLED_ARGS!" == "" ( - set "UNHANDLED_ARGS=%1" + set "UNHANDLED_ARGS=%~1" ) else ( set "UNHANDLED_ARGS=!UNHANDLED_ARGS! %1" ) @@ -283,6 +295,24 @@ if "!libbitcoin_database_TAG!" == "" ( set "PROJECT=%~1" set "RELATIVE_PATH=%~2" set "TARGET=%~3" + shift + shift + shift + + set "ADDITIONAL_PARAMS=" +:build_msbuild_parse_remaining + if "%~1" == "" ( + goto :end_build_msbuild_parse_remaining + ) else ( + if "!ADDITIONAL_PARAMS!" == "" ( + set "ADDITIONAL_PARAMS=%~1" + ) else ( + set "ADDITIONAL_PARAMS=!ADDITIONAL_PARAMS! %~1" + ) + ) + shift + goto :build_msbuild_parse_remaining +:end_build_msbuild_parse_remaining if not "%TARGET%" == "" ( if not "!BUILD_MODE!" == "" ( @@ -313,10 +343,10 @@ if "!libbitcoin_database_TAG!" == "" ( exit /b %ERRORLEVEL% ) - !MSBUILD_EXE! /verbosity:!MSBUILD_VERBOSE! !SYMBOLS_ARG!/p:Platform=!BUILD_PLATFORM! /p:Configuration=!BUILD_CONFIG! /p:PreferredToolArchitecture=x64 %TARGET_ARG% %PROJECT%.sln /p:PreBuildEventUseInBuild=false /p:PostBuildEventUseInBuild=false !UNHANDLED_ARGS! + !MSBUILD_EXE! /verbosity:!MSBUILD_VERBOSE! !SYMBOLS_ARG!/p:Platform=!BUILD_PLATFORM! /p:Configuration=!BUILD_CONFIG! /p:PreferredToolArchitecture=x64 %TARGET_ARG% %PROJECT%.sln /p:PreBuildEventUseInBuild=false /p:PostBuildEventUseInBuild=false !UNHANDLED_ARGS! !ADDITIONAL_PARAMS! if %ERRORLEVEL% neq 0 ( - call :msg_error "!MSBUILD_EXE! /verbosity:!MSBUILD_VERBOSE! !SYMBOLS_ARG!/p:Platform=!BUILD_PLATFORM! /p:Configuration=!BUILD_CONFIG! /p:PreferredToolArchitecture=x64 %TARGET_ARG% %PROJECT%.sln /p:PreBuildEventUseInBuild=false /p:PostBuildEventUseInBuild=false !UNHANDLED_ARGS!" + call :msg_error "!MSBUILD_EXE! /verbosity:!MSBUILD_VERBOSE! !SYMBOLS_ARG!/p:Platform=!BUILD_PLATFORM! /p:Configuration=!BUILD_CONFIG! /p:PreferredToolArchitecture=x64 %TARGET_ARG% %PROJECT%.sln /p:PreBuildEventUseInBuild=false /p:PostBuildEventUseInBuild=false !UNHANDLED_ARGS! !ADDITIONAL_PARAMS!" call :pop_directory exit /b 1 ) @@ -337,6 +367,9 @@ if "!libbitcoin_database_TAG!" == "" ( exit /b %ERRORLEVEL% :display_build_variables + call :msg "libbitcoin-system_PARAMS : !libbitcoin-system_PARAMS!" + call :msg "REMAPPED_PARAMS : !REMAPPED_PARAMS!" + call :msg "UNHANDLED_ARGS : !UNHANDLED_ARGS!" call :msg "BUILD_CONFIG : !BUILD_CONFIG!" call :msg "BUILD_PLATFORM : !BUILD_PLATFORM!" call :msg "BUILD_VERSION : !BUILD_VERSION!" @@ -366,6 +399,7 @@ if "!libbitcoin_database_TAG!" == "" ( call :msg "Script managing the build of libbitcoin-database." call :msg "" call :msg "Script options:" + call :msg "--enable-shani Use Intel/ARM SHA Extensions." call :msg "--build-config config Build configuration." call :msg "--build-platform platform Build platform." call :msg "--build-version version Build MSVC version."