diff --git a/builds/cmake/install-cmake.sh b/builds/cmake/install-cmake.sh index ebe72d37..f25c03cf 100755 --- a/builds/cmake/install-cmake.sh +++ b/builds/cmake/install-cmake.sh @@ -84,6 +84,7 @@ main() (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; (--build-parallel=*) PARALLEL="${OPTION#*=}";; + (--build-skip-tests) BUILD_SKIP_TESTS="yes";; (--prefix=*) PREFIX="${OPTION#*=}";; (--verbose) DISPLAY_VERBOSE="yes";; (--help|-h) DISPLAY_HELP="yes";; @@ -302,8 +303,7 @@ main() msg_verbose "Exporting CFLAGS '${CFLAGS}'" else msg_verbose "CFLAGS initially '${CFLAGS}'" - SANITIZED_CFLAGS=$(strip_optimization "$CFLAGS") - export CFLAGS="${SANITIZED_CFLAGS} ${BUILD_FLAGS}" + export CFLAGS="${CFLAGS} ${BUILD_FLAGS}" msg_verbose "CFLAGS modified to '${CFLAGS}'" fi @@ -312,8 +312,7 @@ main() msg_verbose "Exporting CXXFLAGS '${CXXFLAGS}'" else msg_verbose "CXXFLAGS initially '${CXXFLAGS}'" - SANITIZED_CXXFLAGS=$(strip_optimization "$CXXFLAGS") - export CXXFLAGS="${SANITIZED_CXXFLAGS} ${BUILD_FLAGS}" + export CXXFLAGS="${CXXFLAGS} ${BUILD_FLAGS}" msg_verbose "CXXFLAGS modified to '${CXXFLAGS}'" fi fi @@ -435,7 +434,9 @@ main() local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_database_FLAGS[@]}" build_cmake "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - test_make "libbitcoin-database" "test" "${PARALLEL}" + if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then + test_make "libbitcoin-database" "test" "${PARALLEL}" + fi install_make "libbitcoin-database" export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -747,6 +748,7 @@ display_build_variables() msg "BUILD_LINK : ${BUILD_LINK}" msg "BUILD_FULL_REPOSITORIES : ${BUILD_FULL_REPOSITORIES}" msg "BUILD_USE_LOCAL_SRC : ${BUILD_USE_LOCAL_SRC}" + msg "BUILD_SKIP_TESTS : ${BUILD_SKIP_TESTS}" msg "PARALLEL : ${PARALLEL}" msg "PREFIX : ${PREFIX}" msg "DISPLAY_VERBOSE : ${DISPLAY_VERBOSE}" @@ -840,16 +842,6 @@ disable_exit_on_error() eval "${OPTS_DISABLE}" } -strip_optimization() -{ - echo "$1" | sed -E ' - s/-O([0-3]|s|fast|g|z|size|speed)?b?/ /g - s/-g([0-3]|gdb|dwarf[0-9]*)?b?/ /g - s/[[:space:]]+/ /g - s/^ | $//g - ' -} - create_directory() { local DIRECTORY="$1" diff --git a/builds/cmake/install-presets.sh b/builds/cmake/install-presets.sh index 64504ede..60dc3f9b 100755 --- a/builds/cmake/install-presets.sh +++ b/builds/cmake/install-presets.sh @@ -72,6 +72,7 @@ main() (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; (--build-parallel=*) PARALLEL="${OPTION#*=}";; + (--build-skip-tests) BUILD_SKIP_TESTS="yes";; (--verbose) DISPLAY_VERBOSE="yes";; (--help|-h) DISPLAY_HELP="yes";; (-DCMAKE_PREFIX_PATH=*) CMAKE_PREFIX_PATH="${OPTION#*=}";; @@ -323,8 +324,7 @@ main() msg_verbose "Exporting CFLAGS '${CFLAGS}'" else msg_verbose "CFLAGS initially '${CFLAGS}'" - SANITIZED_CFLAGS=$(strip_optimization "$CFLAGS") - export CFLAGS="${SANITIZED_CFLAGS} ${BUILD_FLAGS}" + export CFLAGS="${CFLAGS} ${BUILD_FLAGS}" msg_verbose "CFLAGS modified to '${CFLAGS}'" fi @@ -333,8 +333,7 @@ main() msg_verbose "Exporting CXXFLAGS '${CXXFLAGS}'" else msg_verbose "CXXFLAGS initially '${CXXFLAGS}'" - SANITIZED_CXXFLAGS=$(strip_optimization "$CXXFLAGS") - export CXXFLAGS="${SANITIZED_CXXFLAGS} ${BUILD_FLAGS}" + export CXXFLAGS="${CXXFLAGS} ${BUILD_FLAGS}" msg_verbose "CXXFLAGS modified to '${CXXFLAGS}'" fi fi @@ -456,7 +455,9 @@ main() local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_database_FLAGS[@]}" build_preset "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - test_make "libbitcoin-database" "test" "${PARALLEL}" + if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then + test_make "libbitcoin-database" "test" "${PARALLEL}" + fi install_make "libbitcoin-database" export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -819,6 +820,7 @@ display_build_variables() msg "BUILD_LINK : ${BUILD_LINK}" msg "BUILD_FULL_REPOSITORIES : ${BUILD_FULL_REPOSITORIES}" msg "BUILD_USE_LOCAL_SRC : ${BUILD_USE_LOCAL_SRC}" + msg "BUILD_SKIP_TESTS : ${BUILD_SKIP_TESTS}" msg "PARALLEL : ${PARALLEL}" msg "PREFIX : ${PREFIX}" msg "DISPLAY_VERBOSE : ${DISPLAY_VERBOSE}" @@ -903,16 +905,6 @@ disable_exit_on_error() eval "${OPTS_DISABLE}" } -strip_optimization() -{ - echo "$1" | sed -E ' - s/-O([0-3]|s|fast|g|z|size|speed)?b?/ /g - s/-g([0-3]|gdb|dwarf[0-9]*)?b?/ /g - s/[[:space:]]+/ /g - s/^ | $//g - ' -} - create_directory() { local DIRECTORY="$1" diff --git a/builds/gnu/install-gnu.sh b/builds/gnu/install-gnu.sh index f589b7d1..ad49cdbf 100755 --- a/builds/gnu/install-gnu.sh +++ b/builds/gnu/install-gnu.sh @@ -84,6 +84,7 @@ main() (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; (--build-parallel=*) PARALLEL="${OPTION#*=}";; + (--build-skip-tests) BUILD_SKIP_TESTS="yes";; (--prefix=*) PREFIX="${OPTION#*=}";; (--verbose) DISPLAY_VERBOSE="yes";; (--help|-h) DISPLAY_HELP="yes";; @@ -281,8 +282,7 @@ main() msg_verbose "Exporting CFLAGS '${CFLAGS}'" else msg_verbose "CFLAGS initially '${CFLAGS}'" - SANITIZED_CFLAGS=$(strip_optimization "$CFLAGS") - export CFLAGS="${SANITIZED_CFLAGS} ${BUILD_FLAGS}" + export CFLAGS="${CFLAGS} ${BUILD_FLAGS}" msg_verbose "CFLAGS modified to '${CFLAGS}'" fi @@ -291,8 +291,7 @@ main() msg_verbose "Exporting CXXFLAGS '${CXXFLAGS}'" else msg_verbose "CXXFLAGS initially '${CXXFLAGS}'" - SANITIZED_CXXFLAGS=$(strip_optimization "$CXXFLAGS") - export CXXFLAGS="${SANITIZED_CXXFLAGS} ${BUILD_FLAGS}" + export CXXFLAGS="${CXXFLAGS} ${BUILD_FLAGS}" msg_verbose "CXXFLAGS modified to '${CXXFLAGS}'" fi fi @@ -421,7 +420,9 @@ main() local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_database_FLAGS[@]}" build_gnu "libbitcoin-database" "." "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - test_make "libbitcoin-database" "check" "${PARALLEL}" + if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then + test_make "libbitcoin-database" "check" "${PARALLEL}" + fi install_make "libbitcoin-database" export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -738,6 +739,7 @@ display_build_variables() msg "BUILD_LINK : ${BUILD_LINK}" msg "BUILD_FULL_REPOSITORIES : ${BUILD_FULL_REPOSITORIES}" msg "BUILD_USE_LOCAL_SRC : ${BUILD_USE_LOCAL_SRC}" + msg "BUILD_SKIP_TESTS : ${BUILD_SKIP_TESTS}" msg "PARALLEL : ${PARALLEL}" msg "PREFIX : ${PREFIX}" msg "DISPLAY_VERBOSE : ${DISPLAY_VERBOSE}" @@ -827,16 +829,6 @@ disable_exit_on_error() eval "${OPTS_DISABLE}" } -strip_optimization() -{ - echo "$1" | sed -E ' - s/-O([0-3]|s|fast|g|z|size|speed)?b?/ /g - s/-g([0-3]|gdb|dwarf[0-9]*)?b?/ /g - s/[[:space:]]+/ /g - s/^ | $//g - ' -} - create_directory() { local DIRECTORY="$1" diff --git a/builds/msvc/build-msvc.cmd b/builds/msvc/build-msvc.cmd index b01b71da..087dd180 100644 --- a/builds/msvc/build-msvc.cmd +++ b/builds/msvc/build-msvc.cmd @@ -17,6 +17,10 @@ REM --build-version version Build MSVC version. REM --build-src-dir path Location of sources. REM --build-full-repositories Sync full github repositories. REM --build-use-local-src Use existing sources in build-src-dir path. +REM --build-mode mode Determines action on target. +REM Default: Rebuild +REM --build-symbols mode Determines treatment of symbols. +REM Values: default, disabled, public-only REM --verbose Display verbose script output. REM --help, -h Display usage, overriding script execution. REM @@ -113,6 +117,20 @@ if "!libbitcoin_database_TAG!" == "" ( ) ) + if "!BUILD_SYMBOLS!" == "" ( + call :msg_verbose "BUILD_SYMBOLS not defined or empty, defaulting to 'default' behavior." + ) else if "!BUILD_SYMBOLS!" == "default" ( + call :msg_verbose "BUILD_SYMBOLS 'default'." + ) else if "!BUILD_SYMBOLS!" == "disabled" ( + call :msg_verbose "BUILD_SYMBOLS 'disabled'." + ) else if "!BUILD_SYMBOLS!" == "public-only" ( + call :msg_verbose "BUILD_SYMBOLS 'public-only'." + ) else ( + call :msg_error "BUILD_SYMBOLS value '!BUILD_SYMBOLS!' unrecognized." + call :help + exit /b 1 + ) + call :msg_heading "Configuration" call :display_build_variables @@ -142,10 +160,20 @@ if "!libbitcoin_database_TAG!" == "" ( if %ERRORLEVEL% neq 0 ( exit /b %ERRORLEVEL% ) - call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" + call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database" + if %ERRORLEVEL% neq 0 ( + exit /b %ERRORLEVEL% + ) + call :build_msbuild "libbitcoin-database" "builds\msvc\%proj_version%" "libbitcoin-database-tools" + 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 :pop_directory if %ERRORLEVEL% neq 0 ( @@ -174,10 +202,18 @@ if "!libbitcoin_database_TAG!" == "" ( ) else if "%~1" == "--build-version" ( set "BUILD_VERSION=%~2" shift + ) else if "%!1" == "--build-mode" ( + set "BUILD_MODE=%~2" + shift + ) else if "%!1" == "--build-symbols" ( + set "BUILD_SYMBOLS=%~2" + shift ) else if "%~1" == "--build-full-repositories" ( set "BUILD_FULL_REPOSITORIES=yes" ) else if "%~1" == "--build-use-local-src" ( set "BUILD_USE_LOCAL_SRC=yes" + ) else if "%~1" == "--build-skip-tests" ( + set "BUILD_SKIP_TESTS=yes" ) else if "%~1" == "--verbose" ( set "DISPLAY_VERBOSE=yes" ) else if "%~1" == "-v" ( @@ -186,6 +222,12 @@ if "!libbitcoin_database_TAG!" == "" ( set "SHOW_HELP=yes" ) else if "%~1" == "-h" ( set "SHOW_HELP=yes" + ) else ( + if "!UNHANDLED_ARGS!" == "" ( + set "UNHANDLED_ARGS=%1" + ) else ( + set "UNHANDLED_ARGS=!UNHANDLED_ARGS! %1" + ) ) shift @@ -241,10 +283,23 @@ if "!libbitcoin_database_TAG!" == "" ( set "RELATIVE_PATH=%~2" set "TARGET=%~3" - if "%TARGET%" == "" ( - set "TARGET_ARG=" + if not "%TARGET%" == "" ( + if not "!BUILD_MODE!" == "" ( + set "TARGET_ARG=/target:%TARGET%:!BUILD_MODE!" + ) else ( + set "TARGET_ARG=/target:%TARGET%" + ) ) else ( - set "TARGET_ARG=/target:%TARGET%:Rebuild" + if not "!BUILD_MODE!" == "" ( + set "TARGET_ARG=/target:!BUILD_MODE!" + ) + ) + + set "SYMBOLS_ARG=" + if "!BUILD_SYMBOLS!" == "disabled" ( + set "SYMBOLS_ARG=/p:LinkerOptions=/PDBSTRIPPED " + ) else if "!BUILD_SYMBOLS!" == "public-only" ( + set "SYMBOLS_ARG=/p:DebugSymbols=false " ) call :push_directory "!BUILD_SRC_DIR!\%PROJECT%\%RELATIVE_PATH%\!BUILD_VERSION!" @@ -257,10 +312,10 @@ if "!libbitcoin_database_TAG!" == "" ( exit /b %ERRORLEVEL% ) - !MSBUILD_EXE! /verbosity:!MSBUILD_VERBOSE! /p:Platform=!BUILD_PLATFORM! /p:Configuration=!BUILD_CONFIG! /p:PreferredToolArchitecture=x64 %TARGET_ARG% %PROJECT%.sln /p:PreBuildEventUseInBuild=false /p:PostBuildEventUseInBuild=false + !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! if %ERRORLEVEL% neq 0 ( - call :msg_error "!MSBUILD_EXE! /verbosity:!MSBUILD_VERBOSE! /p:Platform=!BUILD_PLATFORM! /p:Configuration=!BUILD_CONFIG! /p:PreferredToolArchitecture=x64 %TARGET_ARG% %PROJECT%.sln /p:PreBuildEventUseInBuild=false /p:PostBuildEventUseInBuild=false" + 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 :pop_directory exit /b 1 ) @@ -287,6 +342,8 @@ if "!libbitcoin_database_TAG!" == "" ( call :msg "BUILD_SRC_DIR : !BUILD_SRC_DIR!" call :msg "BUILD_FULL_REPOSITORIES : !BUILD_FULL_REPOSITORIES!" call :msg "BUILD_USE_LOCAL_SRC : !BUILD_USE_LOCAL_SRC!" + call :msg "BUILD_MODE : !BUILD_MODE!" + call :msg "BUILD_SYMBOLS : !BUILD_SYMBOLS!" call :msg "DISPLAY_VERBOSE : !DISPLAY_VERBOSE!" call :msg "SHOW_HELP : !SHOW_HELP!" exit /b %ERRORLEVEL% @@ -314,6 +371,10 @@ if "!libbitcoin_database_TAG!" == "" ( call :msg "--build-src-dir path Location of sources." call :msg "--build-full-repositories Sync full github repositories." call :msg "--build-use-local-src Use existing sources in build-src-dir path." + call :msg "--build-mode mode Determines action on target." + call :msg " Default: Rebuild" + call :msg "--build-symbols mode Determines treatment of symbols." + call :msg " Values: default, disabled, public-only" call :msg "--verbose Display verbose script output." call :msg "--help, -h Display usage, overriding script execution." exit /b %ERRORLEVEL%