diff --git a/builds/cmake/CMakeLists.txt b/builds/cmake/CMakeLists.txt index 42245565e..d92acc2e4 100644 --- a/builds/cmake/CMakeLists.txt +++ b/builds/cmake/CMakeLists.txt @@ -6,8 +6,57 @@ ############################################################################### cmake_minimum_required(VERSION 3.30 FATAL_ERROR) +find_package(Git QUIET) + +set( GIT_COMMIT_HASH "unknown" ) +set( GIT_COMMIT_HEIGHT 0 ) +set( GIT_DIRTY 0 ) +set( GIT_ORIGIN_URL "https://github.com/libbitcoin/libbitcoin-database" ) + +if ( GIT_EXECUTABLE ) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET ) + + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HEIGHT + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET ) + + if ( NOT GIT_COMMIT_HEIGHT ) + set( GIT_COMMIT_HEIGHT 0 ) + endif() + + execute_process( + COMMAND ${GIT_EXECUTABLE} remote get-url origin + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_ORIGIN_URL + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET ) + + execute_process( + COMMAND ${GIT_EXECUTABLE} status --porcelain + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_STATUS + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET ) + + if ( GIT_STATUS ) + set( GIT_DIRTY 1 ) + endif() +endif() + +set( LIBBITCOIN_VERSION_MAJOR 4 ) +set( LIBBITCOIN_VERSION_MINOR 0 ) +set( LIBBITCOIN_VERSION_PATCH ${GIT_COMMIT_HEIGHT} ) + project( libbitcoin-database - VERSION 4.0.0 + VERSION ${LIBBITCOIN_VERSION_MAJOR}.${LIBBITCOIN_VERSION_MINOR}.${LIBBITCOIN_VERSION_PATCH} DESCRIPTION "Bitcoin High Performance Blockchain Database" LANGUAGES C CXX ) @@ -122,6 +171,10 @@ endif() include(CheckLinkerFlag) +#------------------------------------------------------------------------------ +# Configurable file(s). +#------------------------------------------------------------------------------ + #------------------------------------------------------------------------------ # libbitcoin-database library #------------------------------------------------------------------------------ diff --git a/builds/cmake/install-cmake.sh b/builds/cmake/install-cmake.sh index 3082ddb69..250c405c8 100755 --- a/builds/cmake/install-cmake.sh +++ b/builds/cmake/install-cmake.sh @@ -16,8 +16,13 @@ # Default: OFF # -Denable-shani= Use Intel/ARM SHA Extensions. # Default: OFF +# -Dwith-ultrafast= Use shrec/UltrafastSecp256k1. +# Default: OFF +# -Dwith-secp256k1= Use bitcoin-core/secp256k1. +# Default: ON # --build-boost Build Boost libraries # --build-secp256k1 Build libsecp256k1 libraries +# --build-ultrafast Build UltrafastSecp256k1 libraries # --build-src-dir= Location for sources. # Default: $(pwd) # --build-obj-dir= Location for intermediate objects. @@ -67,6 +72,13 @@ if [[ -z ${secp256k1_TAG} ]]; then secp256k1_TAG="v0.7.0" fi +if [[ -z ${UltrafastSecp256k1_OWNER} ]]; then + UltrafastSecp256k1_OWNER="pmienk" +fi +if [[ -z ${UltrafastSecp256k1_TAG} ]]; then + UltrafastSecp256k1_TAG="main" +fi + if [[ -z ${libbitcoin_system_OWNER} ]]; then libbitcoin_system_OWNER="libbitcoin" fi @@ -87,26 +99,27 @@ main() for OPTION in "$@"; do case ${OPTION} in - (--build-boost) BUILD_boost="yes";; - (--build-secp256k1) BUILD_secp256k1="yes";; - (--build-src-dir=*) BUILD_SRC_DIR="${OPTION#*=}";; - (--build-obj-dir=*) BUILD_OBJ_DIR="${OPTION#*=}";; - (--build-obj-dir-relative) BUILD_OBJ_DIR_RELATIVE="yes";; - (--build-config=*) BUILD_CONFIG="${OPTION#*=}";; - (--build-link=*) BUILD_LINK="${OPTION#*=}";; - (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; - (--build-post-install-clean)BUILD_POST_INSTALL_CLEAN="yes";; - (--build-skip-tests) BUILD_SKIP_TESTS="yes";; - (--build-parallel=*) PARALLEL="${OPTION#*=}";; - (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; - (--prefix=*) PREFIX="${OPTION#*=}";; - (--noninteractive) NONINTERACTIVE="yes";; - (--verbose) DISPLAY_VERBOSE="yes";; - (--help|-h) DISPLAY_HELP="yes";; - (-DCMAKE_PREFIX_PATH=*) CMAKE_PREFIX_PATH="${OPTION#*=}";; - (-DCMAKE_INSTALL_PREFIX=*) CMAKE_INSTALL_PREFIX="${OPTION#*=}";; - (-DCMAKE_INCLUDE_PATH=*) CMAKE_INCLUDE_PATH="${OPTION#*=}";; - (-DCMAKE_LIBRARY_PATH=*) CMAKE_LIBRARY_PATH="${OPTION#*=}";; + (--build-boost) BUILD_boost="yes";; + (--build-secp256k1) BUILD_secp256k1="yes";; + (--build-ultrafast) BUILD_ultrafast="yes";; + (--build-src-dir=*) BUILD_SRC_DIR="${OPTION#*=}";; + (--build-obj-dir=*) BUILD_OBJ_DIR="${OPTION#*=}";; + (--build-obj-dir-relative) BUILD_OBJ_DIR_RELATIVE="yes";; + (--build-config=*) BUILD_CONFIG="${OPTION#*=}";; + (--build-link=*) BUILD_LINK="${OPTION#*=}";; + (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; + (--build-post-install-clean) BUILD_POST_INSTALL_CLEAN="yes";; + (--build-skip-tests) BUILD_SKIP_TESTS="yes";; + (--build-parallel=*) PARALLEL="${OPTION#*=}";; + (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; + (--prefix=*) PREFIX="${OPTION#*=}";; + (--noninteractive) NONINTERACTIVE="yes";; + (--verbose) DISPLAY_VERBOSE="yes";; + (--help|-h) DISPLAY_HELP="yes";; + (-DCMAKE_PREFIX_PATH=*) CMAKE_PREFIX_PATH="${OPTION#*=}";; + (-DCMAKE_INSTALL_PREFIX=*) CMAKE_INSTALL_PREFIX="${OPTION#*=}";; + (-DCMAKE_INCLUDE_PATH=*) CMAKE_INCLUDE_PATH="${OPTION#*=}";; + (-DCMAKE_LIBRARY_PATH=*) CMAKE_LIBRARY_PATH="${OPTION#*=}";; esac done @@ -114,6 +127,7 @@ main() CONFIGURE_OPTIONS=("$@") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-boost/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-secp256k1/}") + CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-ultrafast/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-src-dir=*/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-obj-dir=*/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-obj-dir-relative/}") @@ -129,6 +143,7 @@ main() CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--verbose/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--help/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/-h/}") + CONFIGURE_OPTIONS_CMAKE=("${CONFIGURE_OPTIONS[@]}") msg_verbose "*** ARGUMENTS: ${CONFIGURE_OPTIONS_ORIGINAL[*]}" msg_verbose "*** SANITIZED: ${CONFIGURE_OPTIONS[*]}" @@ -208,6 +223,10 @@ main() exit 1 fi + if [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-Dwith-tests=OFF" ) + fi + # --prefix if [[ -z "${PREFIX}" ]]; then # Always set a prefix (required for OSX and lib detection). @@ -232,21 +251,23 @@ main() msg_error "Both PREFIX and CMAKE_INSTALL_PREFIX have been defined differently." help exit 1 - elif [[ -n "${PREFIX}" ]]; then + fi + + if [[ -n "${PREFIX}" ]]; then CMAKE_INSTALL_PREFIX="${PREFIX}" - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DCMAKE_INSTALL_PREFIX=*/}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_INSTALL_PREFIX=${PREFIX}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_INSTALL_PREFIX=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_INSTALL_PREFIX=${PREFIX}" ) fi if [[ -n "${PREFIX}" ]] && [[ -n "${CMAKE_PREFIX_PATH}" ]] && [[ "${PREFIX}" != "${CMAKE_PREFIX_PATH}" ]]; then CMAKE_PREFIX_PATH="${PREFIX}:${CMAKE_PREFIX_PATH}" - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DCMAKE_PREFIX_PATH=*/}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_PREFIX_PATH=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ) elif [[ -n "${PREFIX}" ]]; then CMAKE_INSTALL_PREFIX="${PREFIX}" - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DCMAKE_PREFIX_PATH=*/}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_PREFIX_PATH=${PREFIX}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_PREFIX_PATH=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_PREFIX_PATH=${PREFIX}" ) fi if [[ -n "${PREFIX}" ]]; then @@ -348,19 +369,19 @@ main() # Specify cmake build if [[ "${BUILD_CONFIG}" == "debug" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_BUILD_TYPE=Debug" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_BUILD_TYPE=Debug" ) elif [[ "${BUILD_CONFIG}" == "release" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_BUILD_TYPE=Release" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_BUILD_TYPE=Release" ) fi # translate BUILD_LINK to appropriate arguments if [[ -n "${BUILD_LINK}" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DBUILD_SHARED_LIBS=*}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DBUILD_SHARED_LIBS=*}" ) if [[ "${BUILD_LINK}" == "dynamic" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DBUILD_SHARED_LIBS=ON" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DBUILD_SHARED_LIBS=ON" ) else - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DBUILD_SHARED_LIBS=OFF" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DBUILD_SHARED_LIBS=OFF" ) fi fi @@ -376,13 +397,14 @@ main() with_boost="--with-boost=${PREFIX}" fi + REMAP=() - for argument in "${CONFIGURE_OPTIONS[@]}"; do + for argument in "${CONFIGURE_OPTIONS_CMAKE[@]}"; do if [[ -n "${argument}" ]]; then REMAP+=( "${argument}" ) fi done - CONFIGURE_OPTIONS=( "${REMAP[@]}" ) + CONFIGURE_OPTIONS_CMAKE=( "${REMAP[@]}" ) unset REMAP msg_heading "Configuration" @@ -421,6 +443,25 @@ main() "-DSECP256K1_ENABLE_MODULE_RECOVERY=ON" "-DSECP256K1_ENABLE_MODULE_SCHNORRSIG=ON") + UltrafastSecp256k1_FLAGS=() + + UltrafastSecp256k1_OPTIONS=( + "-DSECP256K1_BUILD_TESTS=OFF" + "-DSECP256K1_BUILD_BENCH=OFF" + "-DSECP256K1_BUILD_EXAMPLES=OFF" + "-DSECP256K1_BUILD_JAVA=OFF" + "-DUFSECP_BUILD_SHARED=OFF" + "-DSECP256K1_BUILD_CABI=ON" + "-DSECP256K1_BUILD_CPU=ON" + "-DSECP256K1_BUILD_SHIM=ON" + "-DSECP256K1_BUILD_CUDA=OFF" + "-DSECP256K1_BUILD_ROCM=OFF" + "-DSECP256K1_BUILD_OPENCL=OFF" + "-DSECP256K1_BUILD_METAL=OFF" + "-DSECP256K1_INSTALL=ON" + "-DSECP256K1_INSTALL_PKGCONFIG=ON" + "-DSECP256K1_USE_ULTRAFAST=ON") + libbitcoin_system_FLAGS=() libbitcoin_system_OPTIONS=( @@ -443,10 +484,22 @@ main() source_github "${secp256k1_OWNER}" "secp256k1" "${secp256k1_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${secp256k1_FLAGS[@]}" - build_cmake "secp256k1" "." "${PARALLEL}" "${secp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "secp256k1" + build_cmake "secp256k1" "." "${PARALLEL}" "${secp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "secp256k1" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "secp256k1" + clean_cmake "secp256k1" + fi + export CPPFLAGS="${SAVE_CPPFLAGS}" + fi + + if [[ ${BUILD_ultrafast} == "yes" ]]; then + source_github "${UltrafastSecp256k1_OWNER}" "UltrafastSecp256k1" "${UltrafastSecp256k1_TAG}" + local SAVE_CPPFLAGS="${CPPFLAGS}" + export CPPFLAGS="${CPPFLAGS} ${UltrafastSecp256k1_FLAGS[@]}" + build_cmake "UltrafastSecp256k1" "." "${PARALLEL}" "${UltrafastSecp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "UltrafastSecp256k1" + if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then + clean_cmake "UltrafastSecp256k1" fi export CPPFLAGS="${SAVE_CPPFLAGS}" fi @@ -454,23 +507,23 @@ main() source_github "${libbitcoin_system_OWNER}" "libbitcoin-system" "${libbitcoin_system_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_system_FLAGS[@]}" - build_cmake "libbitcoin-system" "builds/cmake" "${PARALLEL}" "${libbitcoin_system_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "libbitcoin-system" + build_cmake "libbitcoin-system" "builds/cmake" "${PARALLEL}" "${libbitcoin_system_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "libbitcoin-system" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-system" + clean_cmake "libbitcoin-system" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_database_OWNER}" "libbitcoin-database" "${libbitcoin_database_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_database_FLAGS[@]}" - build_cmake "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" + build_cmake "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then - test_make "libbitcoin-database" "test" "${PARALLEL}" + test_cmake "libbitcoin-database" "${PARALLEL}" fi - install_make "libbitcoin-database" + install_cmake "libbitcoin-database" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-database" + clean_cmake "libbitcoin-database" fi export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -598,117 +651,6 @@ source_github() pop_directory # pop BUILD_SRC_DIR } -install_make() -{ - local PROJECT="$1" - shift - - msg "Preparing to install ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - make install - - if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then - ldconfig - fi - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' installation complete." -} - -test_make() -{ - local PROJECT="$1" - local TARGET="$2" - local JOBS="$3" - shift 3 - - msg "Preparing to test ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - disable_exit_on_error - - if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then - make -j${JOBS} ${TARGET} VERBOSE=1 - else - make ${TARGET} VERBOSE=1 - fi - - local RESULT=$? - - if [[ -e "Testing/Temporary/LastTest.log" ]]; then - msg_warn "begin error log: Testing/Temporary/LastTest.log" - cat "Testing/Temporary/LastTest.log" - msg_warn " end error log: Testing/Temporary/LastTest.log" - fi - - if [[ -e "test.log" ]]; then - msg_warn "begin error log: test.log" - cat "test.log" - msg_warn " end error log: test.log" - fi - - if [[ ${RESULT} -ne 0 ]]; then - msg_error "Encountered error, please see test.log contents above." - exit ${RESULT} - fi - - enable_exit_on_error - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' test complete." -} - -clean_make() -{ - local PROJECT="$1" - shift 1 - - msg "Preparing to clean ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - disable_exit_on_error - - make clean - - local RESULT=$? - - if [[ ${RESULT} -ne 0 ]]; then - msg_error "Encountered error, please see test.log contents above." - exit ${RESULT} - fi - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' clean complete." -} - build_boost() { local PROJECT="$1" @@ -808,7 +750,7 @@ build_cmake() if [[ "${DISPLAY_VERBOSE}" == "yes" ]]; then VERBOSITY_CMAKE="-DCMAKE_VERBOSE_MAKEFILE=ON" - VERBOSITY_MAKE="VERBOSE=1" + VERBOSITY_MAKE="--verbose" fi msg_heading "Preparing to build ${PROJECT}" @@ -836,9 +778,9 @@ build_cmake() # make if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then - make -j${JOBS} ${VERBOSITY_MAKE} + cmake --build . -j${JOBS} ${VERBOSITY_MAKE} else - make + cmake --build . ${VERBOSITY_MAKE} fi pop_directory # BUILD_OBJ_DIR @@ -846,10 +788,118 @@ build_cmake() msg_success "'${PROJECT}' built successfully." } + +clean_cmake() +{ + local PROJECT="$1" + shift 1 + + msg "Preparing to clean ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + cmake --build . --target clean + + local RESULT=$? + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' clean complete." +} + +install_cmake() +{ + local PROJECT="$1" + shift + + msg "Preparing to install ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + cmake --install . + + if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then + ldconfig + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' installation complete." +} + +test_cmake() +{ + local PROJECT="$1" + local JOBS="$2" + shift 2 + + msg "Preparing to test ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + ctest --test-dir . + + local RESULT=$? + + if [[ -e "Testing/Temporary/LastTest.log" ]]; then + msg_warn "begin error log: Testing/Temporary/LastTest.log" + cat "Testing/Temporary/LastTest.log" + msg_warn " end error log: Testing/Temporary/LastTest.log" + fi + + if [[ -e "test.log" ]]; then + msg_warn "begin error log: test.log" + cat "test.log" + msg_warn " end error log: test.log" + fi + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + enable_exit_on_error + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' test complete." +} + display_build_variables() { msg "BUILD_boost : ${BUILD_boost}" msg "BUILD_secp256k1 : ${BUILD_secp256k1}" + msg "BUILD_ultrafast : ${BUILD_ultrafast}" msg "BUILD_SRC_DIR : ${BUILD_SRC_DIR}" msg "BUILD_OBJ_DIR : ${BUILD_OBJ_DIR}" msg "BUILD_OBJ_DIR_RELATIVE : ${BUILD_OBJ_DIR_RELATIVE}" @@ -894,6 +944,9 @@ display_constants() msg "secp256k1_OWNER : ${secp256k1_OWNER}" msg "secp256k1_TAG : ${secp256k1_TAG}" + msg "UltrafastSecp256k1_OWNER : ${UltrafastSecp256k1_OWNER}" + msg "UltrafastSecp256k1_TAG : ${UltrafastSecp256k1_TAG}" + msg "libbitcoin_system_OWNER : ${libbitcoin_system_OWNER}" msg "libbitcoin_system_TAG : ${libbitcoin_system_TAG}" @@ -914,8 +967,13 @@ help() msg " Default: OFF" msg "-Denable-shani= Use Intel/ARM SHA Extensions." msg " Default: OFF" + msg "-Dwith-ultrafast= Use shrec/UltrafastSecp256k1." + msg " Default: OFF" + msg "-Dwith-secp256k1= Use bitcoin-core/secp256k1." + msg " Default: ON" msg "--build-boost Build Boost libraries" msg "--build-secp256k1 Build libsecp256k1 libraries" + msg "--build-ultrafast Build UltrafastSecp256k1 libraries" msg "--build-src-dir= Location for sources." msg " Default: $(pwd)" msg "--build-obj-dir= Location for intermediate objects." diff --git a/builds/cmake/install-presets.sh b/builds/cmake/install-presets.sh index 579ed53af..daf94e724 100755 --- a/builds/cmake/install-presets.sh +++ b/builds/cmake/install-presets.sh @@ -16,8 +16,13 @@ # Default: OFF # -Denable-shani= Use Intel/ARM SHA Extensions. # Default: OFF +# -Dwith-ultrafast= Use shrec/UltrafastSecp256k1. +# Default: OFF +# -Dwith-secp256k1= Use bitcoin-core/secp256k1. +# Default: ON # --build-boost Build Boost libraries # --build-secp256k1 Build libsecp256k1 libraries +# --build-ultrafast Build UltrafastSecp256k1 libraries # --build-preset= Specifies preset configuration to build. # --build-src-dir= Location for sources. # Default: $(pwd) @@ -57,6 +62,13 @@ if [[ -z ${secp256k1_TAG} ]]; then secp256k1_TAG="v0.7.0" fi +if [[ -z ${UltrafastSecp256k1_OWNER} ]]; then + UltrafastSecp256k1_OWNER="pmienk" +fi +if [[ -z ${UltrafastSecp256k1_TAG} ]]; then + UltrafastSecp256k1_TAG="main" +fi + if [[ -z ${libbitcoin_system_OWNER} ]]; then libbitcoin_system_OWNER="libbitcoin" fi @@ -77,22 +89,23 @@ main() for OPTION in "$@"; do case ${OPTION} in - (--build-boost) BUILD_boost="yes";; - (--build-secp256k1) BUILD_secp256k1="yes";; - (--build-preset=*) BUILD_PRESET="${OPTION#*=}";; - (--build-src-dir=*) BUILD_SRC_DIR="${OPTION#*=}";; - (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; - (--build-post-install-clean)BUILD_POST_INSTALL_CLEAN="yes";; - (--build-skip-tests) BUILD_SKIP_TESTS="yes";; - (--build-parallel=*) PARALLEL="${OPTION#*=}";; - (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; - (--noninteractive) NONINTERACTIVE="yes";; - (--verbose) DISPLAY_VERBOSE="yes";; - (--help|-h) DISPLAY_HELP="yes";; - (-DCMAKE_PREFIX_PATH=*) CMAKE_PREFIX_PATH="${OPTION#*=}";; - (-DCMAKE_INSTALL_PREFIX=*) CMAKE_INSTALL_PREFIX="${OPTION#*=}";; - (-DCMAKE_INCLUDE_PATH=*) CMAKE_INCLUDE_PATH="${OPTION#*=}";; - (-DCMAKE_LIBRARY_PATH=*) CMAKE_LIBRARY_PATH="${OPTION#*=}";; + (--build-boost) BUILD_boost="yes";; + (--build-secp256k1) BUILD_secp256k1="yes";; + (--build-ultrafast) BUILD_ultrafast="yes";; + (--build-preset=*) BUILD_PRESET="${OPTION#*=}";; + (--build-src-dir=*) BUILD_SRC_DIR="${OPTION#*=}";; + (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; + (--build-post-install-clean) BUILD_POST_INSTALL_CLEAN="yes";; + (--build-skip-tests) BUILD_SKIP_TESTS="yes";; + (--build-parallel=*) PARALLEL="${OPTION#*=}";; + (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; + (--noninteractive) NONINTERACTIVE="yes";; + (--verbose) DISPLAY_VERBOSE="yes";; + (--help|-h) DISPLAY_HELP="yes";; + (-DCMAKE_PREFIX_PATH=*) CMAKE_PREFIX_PATH="${OPTION#*=}";; + (-DCMAKE_INSTALL_PREFIX=*) CMAKE_INSTALL_PREFIX="${OPTION#*=}";; + (-DCMAKE_INCLUDE_PATH=*) CMAKE_INCLUDE_PATH="${OPTION#*=}";; + (-DCMAKE_LIBRARY_PATH=*) CMAKE_LIBRARY_PATH="${OPTION#*=}";; esac done @@ -100,6 +113,7 @@ main() CONFIGURE_OPTIONS=("$@") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-boost/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-secp256k1/}") + CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-ultrafast/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-preset=*/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-src-dir=*/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-full-repositories/}") @@ -111,6 +125,7 @@ main() CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--verbose/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--help/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/-h/}") + CONFIGURE_OPTIONS_CMAKE=("${CONFIGURE_OPTIONS[@]}") msg_verbose "*** ARGUMENTS: ${CONFIGURE_OPTIONS_ORIGINAL[*]}" msg_verbose "*** SANITIZED: ${CONFIGURE_OPTIONS[*]}" @@ -224,6 +239,10 @@ main() exit 1 fi + if [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-Dwith-tests=OFF" ) + fi + # --prefix if [[ -z "${PREFIX}" ]]; then # Always set a prefix (required for OSX and lib detection). @@ -248,21 +267,23 @@ main() msg_error "Both PREFIX and CMAKE_INSTALL_PREFIX have been defined differently." help exit 1 - elif [[ -n "${PREFIX}" ]]; then + fi + + if [[ -n "${PREFIX}" ]]; then CMAKE_INSTALL_PREFIX="${PREFIX}" - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DCMAKE_INSTALL_PREFIX=*/}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_INSTALL_PREFIX=${PREFIX}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_INSTALL_PREFIX=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_INSTALL_PREFIX=${PREFIX}" ) fi if [[ -n "${PREFIX}" ]] && [[ -n "${CMAKE_PREFIX_PATH}" ]] && [[ "${PREFIX}" != "${CMAKE_PREFIX_PATH}" ]]; then CMAKE_PREFIX_PATH="${PREFIX}:${CMAKE_PREFIX_PATH}" - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DCMAKE_PREFIX_PATH=*/}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_PREFIX_PATH=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ) elif [[ -n "${PREFIX}" ]]; then CMAKE_INSTALL_PREFIX="${PREFIX}" - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DCMAKE_PREFIX_PATH=*/}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_PREFIX_PATH=${PREFIX}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_PREFIX_PATH=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_PREFIX_PATH=${PREFIX}" ) fi if [[ -n "${PREFIX}" ]]; then @@ -364,19 +385,19 @@ main() # Specify cmake build if [[ "${BUILD_CONFIG}" == "debug" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_BUILD_TYPE=Debug" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_BUILD_TYPE=Debug" ) elif [[ "${BUILD_CONFIG}" == "release" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DCMAKE_BUILD_TYPE=Release" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_BUILD_TYPE=Release" ) fi # translate BUILD_LINK to appropriate arguments if [[ -n "${BUILD_LINK}" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/-DBUILD_SHARED_LIBS=*}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DBUILD_SHARED_LIBS=*}" ) if [[ "${BUILD_LINK}" == "dynamic" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DBUILD_SHARED_LIBS=ON" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DBUILD_SHARED_LIBS=ON" ) else - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "-DBUILD_SHARED_LIBS=OFF" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DBUILD_SHARED_LIBS=OFF" ) fi fi @@ -392,13 +413,14 @@ main() with_boost="--with-boost=${PREFIX}" fi + REMAP=() - for argument in "${CONFIGURE_OPTIONS[@]}"; do + for argument in "${CONFIGURE_OPTIONS_CMAKE[@]}"; do if [[ -n "${argument}" ]]; then REMAP+=( "${argument}" ) fi done - CONFIGURE_OPTIONS=( "${REMAP[@]}" ) + CONFIGURE_OPTIONS_CMAKE=( "${REMAP[@]}" ) unset REMAP msg_heading "Configuration" @@ -437,6 +459,25 @@ main() "-DSECP256K1_ENABLE_MODULE_RECOVERY=ON" "-DSECP256K1_ENABLE_MODULE_SCHNORRSIG=ON") + UltrafastSecp256k1_FLAGS=() + + UltrafastSecp256k1_OPTIONS=( + "-DSECP256K1_BUILD_TESTS=OFF" + "-DSECP256K1_BUILD_BENCH=OFF" + "-DSECP256K1_BUILD_EXAMPLES=OFF" + "-DSECP256K1_BUILD_JAVA=OFF" + "-DUFSECP_BUILD_SHARED=OFF" + "-DSECP256K1_BUILD_CABI=ON" + "-DSECP256K1_BUILD_CPU=ON" + "-DSECP256K1_BUILD_SHIM=ON" + "-DSECP256K1_BUILD_CUDA=OFF" + "-DSECP256K1_BUILD_ROCM=OFF" + "-DSECP256K1_BUILD_OPENCL=OFF" + "-DSECP256K1_BUILD_METAL=OFF" + "-DSECP256K1_INSTALL=ON" + "-DSECP256K1_INSTALL_PKGCONFIG=ON" + "-DSECP256K1_USE_ULTRAFAST=ON") + libbitcoin_system_FLAGS=() libbitcoin_system_OPTIONS=( @@ -459,10 +500,22 @@ main() source_github "${secp256k1_OWNER}" "secp256k1" "${secp256k1_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${secp256k1_FLAGS[@]}" - build_cmake "secp256k1" "." "${PARALLEL}" "${secp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "secp256k1" + build_cmake "secp256k1" "." "${PARALLEL}" "${secp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "secp256k1" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "secp256k1" + clean_cmake "secp256k1" + fi + export CPPFLAGS="${SAVE_CPPFLAGS}" + fi + + if [[ ${BUILD_ultrafast} == "yes" ]]; then + source_github "${UltrafastSecp256k1_OWNER}" "UltrafastSecp256k1" "${UltrafastSecp256k1_TAG}" + local SAVE_CPPFLAGS="${CPPFLAGS}" + export CPPFLAGS="${CPPFLAGS} ${UltrafastSecp256k1_FLAGS[@]}" + build_cmake "UltrafastSecp256k1" "." "${PARALLEL}" "${UltrafastSecp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "UltrafastSecp256k1" + if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then + clean_cmake "UltrafastSecp256k1" fi export CPPFLAGS="${SAVE_CPPFLAGS}" fi @@ -470,23 +523,23 @@ main() source_github "${libbitcoin_system_OWNER}" "libbitcoin-system" "${libbitcoin_system_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_system_FLAGS[@]}" - build_preset "libbitcoin-system" "builds/cmake" "${PARALLEL}" "${libbitcoin_system_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "libbitcoin-system" + build_preset "libbitcoin-system" "builds/cmake" "${PARALLEL}" "${libbitcoin_system_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "libbitcoin-system" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-system" + clean_cmake "libbitcoin-system" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_database_OWNER}" "libbitcoin-database" "${libbitcoin_database_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_database_FLAGS[@]}" - build_preset "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" + build_preset "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then - test_make "libbitcoin-database" "test" "${PARALLEL}" + test_cmake "libbitcoin-database" "test" "${PARALLEL}" fi - install_make "libbitcoin-database" + install_cmake "libbitcoin-database" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-database" + clean_cmake "libbitcoin-database" fi export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -614,117 +667,6 @@ source_github() pop_directory # pop BUILD_SRC_DIR } -install_make() -{ - local PROJECT="$1" - shift - - msg "Preparing to install ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - make install - - if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then - ldconfig - fi - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' installation complete." -} - -test_make() -{ - local PROJECT="$1" - local TARGET="$2" - local JOBS="$3" - shift 3 - - msg "Preparing to test ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - disable_exit_on_error - - if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then - make -j${JOBS} ${TARGET} VERBOSE=1 - else - make ${TARGET} VERBOSE=1 - fi - - local RESULT=$? - - if [[ -e "Testing/Temporary/LastTest.log" ]]; then - msg_warn "begin error log: Testing/Temporary/LastTest.log" - cat "Testing/Temporary/LastTest.log" - msg_warn " end error log: Testing/Temporary/LastTest.log" - fi - - if [[ -e "test.log" ]]; then - msg_warn "begin error log: test.log" - cat "test.log" - msg_warn " end error log: test.log" - fi - - if [[ ${RESULT} -ne 0 ]]; then - msg_error "Encountered error, please see test.log contents above." - exit ${RESULT} - fi - - enable_exit_on_error - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' test complete." -} - -clean_make() -{ - local PROJECT="$1" - shift 1 - - msg "Preparing to clean ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - disable_exit_on_error - - make clean - - local RESULT=$? - - if [[ ${RESULT} -ne 0 ]]; then - msg_error "Encountered error, please see test.log contents above." - exit ${RESULT} - fi - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' clean complete." -} - build_boost() { local PROJECT="$1" @@ -824,7 +766,7 @@ build_cmake() if [[ "${DISPLAY_VERBOSE}" == "yes" ]]; then VERBOSITY_CMAKE="-DCMAKE_VERBOSE_MAKEFILE=ON" - VERBOSITY_MAKE="VERBOSE=1" + VERBOSITY_MAKE="--verbose" fi msg_heading "Preparing to build ${PROJECT}" @@ -852,9 +794,9 @@ build_cmake() # make if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then - make -j${JOBS} ${VERBOSITY_MAKE} + cmake --build . -j${JOBS} ${VERBOSITY_MAKE} else - make + cmake --build . ${VERBOSITY_MAKE} fi pop_directory # BUILD_OBJ_DIR @@ -862,6 +804,7 @@ build_cmake() msg_success "'${PROJECT}' built successfully." } + build_preset() { local PROJECT="$1" @@ -912,10 +855,118 @@ build_preset() msg_success "'${PROJECT}' built successfully." } + +clean_cmake() +{ + local PROJECT="$1" + shift 1 + + msg "Preparing to clean ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + cmake --build . --target clean + + local RESULT=$? + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' clean complete." +} + +install_cmake() +{ + local PROJECT="$1" + shift + + msg "Preparing to install ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + cmake --install . + + if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then + ldconfig + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' installation complete." +} + +test_cmake() +{ + local PROJECT="$1" + local JOBS="$2" + shift 2 + + msg "Preparing to test ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + ctest --test-dir . + + local RESULT=$? + + if [[ -e "Testing/Temporary/LastTest.log" ]]; then + msg_warn "begin error log: Testing/Temporary/LastTest.log" + cat "Testing/Temporary/LastTest.log" + msg_warn " end error log: Testing/Temporary/LastTest.log" + fi + + if [[ -e "test.log" ]]; then + msg_warn "begin error log: test.log" + cat "test.log" + msg_warn " end error log: test.log" + fi + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + enable_exit_on_error + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' test complete." +} + display_build_variables() { msg "BUILD_boost : ${BUILD_boost}" msg "BUILD_secp256k1 : ${BUILD_secp256k1}" + msg "BUILD_ultrafast : ${BUILD_ultrafast}" msg "BUILD_PRESET : ${BUILD_PRESET}" msg "BUILD_SRC_DIR : ${BUILD_SRC_DIR}" msg "BUILD_OBJ_DIR : ${BUILD_OBJ_DIR}" @@ -961,6 +1012,9 @@ display_constants() msg "secp256k1_OWNER : ${secp256k1_OWNER}" msg "secp256k1_TAG : ${secp256k1_TAG}" + msg "UltrafastSecp256k1_OWNER : ${UltrafastSecp256k1_OWNER}" + msg "UltrafastSecp256k1_TAG : ${UltrafastSecp256k1_TAG}" + msg "libbitcoin_system_OWNER : ${libbitcoin_system_OWNER}" msg "libbitcoin_system_TAG : ${libbitcoin_system_TAG}" @@ -981,8 +1035,13 @@ help() msg " Default: OFF" msg "-Denable-shani= Use Intel/ARM SHA Extensions." msg " Default: OFF" + msg "-Dwith-ultrafast= Use shrec/UltrafastSecp256k1." + msg " Default: OFF" + msg "-Dwith-secp256k1= Use bitcoin-core/secp256k1." + msg " Default: ON" msg "--build-boost Build Boost libraries" msg "--build-secp256k1 Build libsecp256k1 libraries" + msg "--build-ultrafast Build UltrafastSecp256k1 libraries" msg "--build-preset= Specifies preset configuration to build." msg "--build-src-dir= Location for sources." msg " Default: $(pwd)" diff --git a/builds/gnu/install-gnu.sh b/builds/gnu/install-gnu.sh index 0272cf546..003707f1c 100755 --- a/builds/gnu/install-gnu.sh +++ b/builds/gnu/install-gnu.sh @@ -16,8 +16,13 @@ # Default: --disable-sse41 # ---shani Use Intel/ARM SHA Extensions. # Default: --disable-shani +# ---ultrafast Use shrec/UltrafastSecp256k1. +# Default: --without-ultrafast +# ---secp256k1 Use bitcoin-core/secp256k1. +# Default: --with-secp256k1 # --build-boost Build Boost libraries # --build-secp256k1 Build libsecp256k1 libraries +# --build-ultrafast Build UltrafastSecp256k1 libraries # --build-src-dir= Location for sources. # Default: $(pwd) # --build-obj-dir= Location for intermediate objects. @@ -67,6 +72,13 @@ if [[ -z ${secp256k1_TAG} ]]; then secp256k1_TAG="v0.7.0" fi +if [[ -z ${UltrafastSecp256k1_OWNER} ]]; then + UltrafastSecp256k1_OWNER="pmienk" +fi +if [[ -z ${UltrafastSecp256k1_TAG} ]]; then + UltrafastSecp256k1_TAG="main" +fi + if [[ -z ${libbitcoin_system_OWNER} ]]; then libbitcoin_system_OWNER="libbitcoin" fi @@ -87,22 +99,23 @@ main() for OPTION in "$@"; do case ${OPTION} in - (--build-boost) BUILD_boost="yes";; - (--build-secp256k1) BUILD_secp256k1="yes";; - (--build-src-dir=*) BUILD_SRC_DIR="${OPTION#*=}";; - (--build-obj-dir=*) BUILD_OBJ_DIR="${OPTION#*=}";; - (--build-obj-dir-relative) BUILD_OBJ_DIR_RELATIVE="yes";; - (--build-config=*) BUILD_CONFIG="${OPTION#*=}";; - (--build-link=*) BUILD_LINK="${OPTION#*=}";; - (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; - (--build-post-install-clean)BUILD_POST_INSTALL_CLEAN="yes";; - (--build-skip-tests) BUILD_SKIP_TESTS="yes";; - (--build-parallel=*) PARALLEL="${OPTION#*=}";; - (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; - (--prefix=*) PREFIX="${OPTION#*=}";; - (--noninteractive) NONINTERACTIVE="yes";; - (--verbose) DISPLAY_VERBOSE="yes";; - (--help|-h) DISPLAY_HELP="yes";; + (--build-boost) BUILD_boost="yes";; + (--build-secp256k1) BUILD_secp256k1="yes";; + (--build-ultrafast) BUILD_ultrafast="yes";; + (--build-src-dir=*) BUILD_SRC_DIR="${OPTION#*=}";; + (--build-obj-dir=*) BUILD_OBJ_DIR="${OPTION#*=}";; + (--build-obj-dir-relative) BUILD_OBJ_DIR_RELATIVE="yes";; + (--build-config=*) BUILD_CONFIG="${OPTION#*=}";; + (--build-link=*) BUILD_LINK="${OPTION#*=}";; + (--build-full-repositories) BUILD_FULL_REPOSITORIES="yes";; + (--build-post-install-clean) BUILD_POST_INSTALL_CLEAN="yes";; + (--build-skip-tests) BUILD_SKIP_TESTS="yes";; + (--build-parallel=*) PARALLEL="${OPTION#*=}";; + (--build-use-local-src) BUILD_USE_LOCAL_SRC="yes";; + (--prefix=*) PREFIX="${OPTION#*=}";; + (--noninteractive) NONINTERACTIVE="yes";; + (--verbose) DISPLAY_VERBOSE="yes";; + (--help|-h) DISPLAY_HELP="yes";; esac done @@ -110,6 +123,7 @@ main() CONFIGURE_OPTIONS=("$@") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-boost/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-secp256k1/}") + CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-ultrafast/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-src-dir=*/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-obj-dir=*/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--build-obj-dir-relative/}") @@ -125,6 +139,8 @@ main() CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--verbose/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--help/}") CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/-h/}") + CONFIGURE_OPTIONS_CMAKE=() + CONFIGURE_OPTIONS_GNU=("${CONFIGURE_OPTIONS[@]}") msg_verbose "*** ARGUMENTS: ${CONFIGURE_OPTIONS_ORIGINAL[*]}" msg_verbose "*** SANITIZED: ${CONFIGURE_OPTIONS[*]}" @@ -204,6 +220,11 @@ main() exit 1 fi + if [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-Dwith-tests=OFF" ) + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]}" "--without-tests" ) + fi + # --prefix if [[ -z "${PREFIX}" ]]; then # Always set a prefix (required for OSX and lib detection). @@ -224,8 +245,31 @@ main() fi fi + if [[ -n "${PREFIX}" ]] && [[ -n "${CMAKE_INSTALL_PREFIX}" ]]; then + msg_error "Both PREFIX and CMAKE_INSTALL_PREFIX have been defined differently." + help + exit 1 + fi + if [[ -n "${PREFIX}" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "--prefix=${PREFIX}" ) + CMAKE_INSTALL_PREFIX="${PREFIX}" + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_INSTALL_PREFIX=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_INSTALL_PREFIX=${PREFIX}" ) + fi + + if [[ -n "${PREFIX}" ]] && [[ -n "${CMAKE_PREFIX_PATH}" ]] && + [[ "${PREFIX}" != "${CMAKE_PREFIX_PATH}" ]]; then + CMAKE_PREFIX_PATH="${PREFIX}:${CMAKE_PREFIX_PATH}" + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_PREFIX_PATH=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ) + elif [[ -n "${PREFIX}" ]]; then + CMAKE_INSTALL_PREFIX="${PREFIX}" + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DCMAKE_PREFIX_PATH=*/}" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_PREFIX_PATH=${PREFIX}" ) + fi + + if [[ -n "${PREFIX}" ]]; then + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]}" "--prefix=${PREFIX}" ) fi if [[ -n "${PREFIX}" ]]; then @@ -327,22 +371,36 @@ main() # Specify or remove --enable-ndebug for gnu toolchain on release if [[ "${BUILD_CONFIG}" == "debug" ]]; then - CONFIGURE_OPTIONS=("${CONFIGURE_OPTIONS[@]/--enable-ndebug/}") + CONFIGURE_OPTIONS_GNU=("${CONFIGURE_OPTIONS_GNU[@]/--enable-ndebug/}") + elif [[ "${BUILD_CONFIG}" == "release" ]]; then + CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS_GNU[@]}" "--enable-ndebug" ) + fi + + # Specify cmake build + if [[ "${BUILD_CONFIG}" == "debug" ]]; then + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_BUILD_TYPE=Debug" ) elif [[ "${BUILD_CONFIG}" == "release" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "--enable-ndebug" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DCMAKE_BUILD_TYPE=Release" ) fi # translate BUILD_LINK to appropriate arguments if [[ -n "${BUILD_LINK}" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/--disable-shared=*}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/--enable-shared=*}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/--disable-static=*}" ) - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]/--enable-static=*}" ) + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]/--disable-shared=*}" ) + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]/--enable-shared=*}" ) + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]/--disable-static=*}" ) + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]/--enable-static=*}" ) + + if [[ "${BUILD_LINK}" == "dynamic" ]]; then + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]}" "--enable-shared" "--disable-static" ) + else + CONFIGURE_OPTIONS_GNU=( "${CONFIGURE_OPTIONS_GNU[@]}" "--disable-shared" "--enable-static" ) + fi + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]/-DBUILD_SHARED_LIBS=*}" ) if [[ "${BUILD_LINK}" == "dynamic" ]]; then - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "--enable-shared" "--disable-static" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DBUILD_SHARED_LIBS=ON" ) else - CONFIGURE_OPTIONS=( "${CONFIGURE_OPTIONS[@]}" "--disable-shared" "--enable-static" ) + CONFIGURE_OPTIONS_CMAKE=( "${CONFIGURE_OPTIONS_CMAKE[@]}" "-DBUILD_SHARED_LIBS=OFF" ) fi fi @@ -358,13 +416,23 @@ main() with_boost="--with-boost=${PREFIX}" fi + REMAP=() - for argument in "${CONFIGURE_OPTIONS[@]}"; do + for argument in "${CONFIGURE_OPTIONS_CMAKE[@]}"; do if [[ -n "${argument}" ]]; then REMAP+=( "${argument}" ) fi done - CONFIGURE_OPTIONS=( "${REMAP[@]}" ) + CONFIGURE_OPTIONS_CMAKE=( "${REMAP[@]}" ) + unset REMAP + + REMAP=() + for argument in "${CONFIGURE_OPTIONS_GNU[@]}"; do + if [[ -n "${argument}" ]]; then + REMAP+=( "${argument}" ) + fi + done + CONFIGURE_OPTIONS_GNU=( "${REMAP[@]}" ) unset REMAP msg_heading "Configuration" @@ -403,6 +471,25 @@ main() "--enable-module-recovery" "--enable-module-schnorrsig") + UltrafastSecp256k1_FLAGS=() + + UltrafastSecp256k1_OPTIONS=( + "-DSECP256K1_BUILD_TESTS=OFF" + "-DSECP256K1_BUILD_BENCH=OFF" + "-DSECP256K1_BUILD_EXAMPLES=OFF" + "-DSECP256K1_BUILD_JAVA=OFF" + "-DUFSECP_BUILD_SHARED=OFF" + "-DSECP256K1_BUILD_CABI=ON" + "-DSECP256K1_BUILD_CPU=ON" + "-DSECP256K1_BUILD_SHIM=ON" + "-DSECP256K1_BUILD_CUDA=OFF" + "-DSECP256K1_BUILD_ROCM=OFF" + "-DSECP256K1_BUILD_OPENCL=OFF" + "-DSECP256K1_BUILD_METAL=OFF" + "-DSECP256K1_INSTALL=ON" + "-DSECP256K1_INSTALL_PKGCONFIG=ON" + "-DSECP256K1_USE_ULTRAFAST=ON") + libbitcoin_system_FLAGS=() libbitcoin_system_OPTIONS=( @@ -429,10 +516,22 @@ main() source_github "${secp256k1_OWNER}" "secp256k1" "${secp256k1_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${secp256k1_FLAGS[@]}" - build_gnu "secp256k1" "." "${PARALLEL}" "${secp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "secp256k1" + build_gnu "secp256k1" "." "${PARALLEL}" "${secp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS_GNU[@]}" + install_gnu "secp256k1" + if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then + clean_gnu "secp256k1" + fi + export CPPFLAGS="${SAVE_CPPFLAGS}" + fi + + if [[ ${BUILD_ultrafast} == "yes" ]]; then + source_github "${UltrafastSecp256k1_OWNER}" "UltrafastSecp256k1" "${UltrafastSecp256k1_TAG}" + local SAVE_CPPFLAGS="${CPPFLAGS}" + export CPPFLAGS="${CPPFLAGS} ${UltrafastSecp256k1_FLAGS[@]}" + build_cmake "UltrafastSecp256k1" "." "${PARALLEL}" "${UltrafastSecp256k1_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "UltrafastSecp256k1" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "secp256k1" + clean_cmake "UltrafastSecp256k1" fi export CPPFLAGS="${SAVE_CPPFLAGS}" fi @@ -440,23 +539,23 @@ main() source_github "${libbitcoin_system_OWNER}" "libbitcoin-system" "${libbitcoin_system_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_system_FLAGS[@]}" - build_gnu "libbitcoin-system" "." "${PARALLEL}" "${libbitcoin_system_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "libbitcoin-system" + build_gnu "libbitcoin-system" "." "${PARALLEL}" "${libbitcoin_system_OPTIONS[@]}" "${CONFIGURE_OPTIONS_GNU[@]}" + install_gnu "libbitcoin-system" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-system" + clean_gnu "libbitcoin-system" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_database_OWNER}" "libbitcoin-database" "${libbitcoin_database_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_database_FLAGS[@]}" - build_gnu "libbitcoin-database" "." "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" + build_gnu "libbitcoin-database" "." "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS_GNU[@]}" if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then - test_make "libbitcoin-database" "check" "${PARALLEL}" + test_gnu "libbitcoin-database" "${PARALLEL}" fi - install_make "libbitcoin-database" + install_gnu "libbitcoin-database" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-database" + clean_gnu "libbitcoin-database" fi export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -584,117 +683,6 @@ source_github() pop_directory # pop BUILD_SRC_DIR } -install_make() -{ - local PROJECT="$1" - shift - - msg "Preparing to install ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - make install - - if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then - ldconfig - fi - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' installation complete." -} - -test_make() -{ - local PROJECT="$1" - local TARGET="$2" - local JOBS="$3" - shift 3 - - msg "Preparing to test ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - disable_exit_on_error - - if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then - make -j${JOBS} ${TARGET} VERBOSE=1 - else - make ${TARGET} VERBOSE=1 - fi - - local RESULT=$? - - if [[ -e "test-suite.log" ]]; then - msg_warn "begin error log: test-suite.log" - cat "test-suite.log" - msg_warn " end error log: test-suite.log" - fi - - if [[ -e "test.log" ]]; then - msg_warn "begin error log: test.log" - cat "test.log" - msg_warn " end error log: test.log" - fi - - if [[ ${RESULT} -ne 0 ]]; then - msg_error "Encountered error, please see test.log contents above." - exit ${RESULT} - fi - - enable_exit_on_error - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' test complete." -} - -clean_make() -{ - local PROJECT="$1" - shift 1 - - msg "Preparing to clean ${PROJECT}" - - push_directory "${BUILD_SRC_DIR}/${PROJECT}" - - if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then - push_directory "${BUILD_OBJ_DIR}" - else - push_directory "${BUILD_OBJ_DIR}/${PROJECT}" - fi - - disable_exit_on_error - - make clean - - local RESULT=$? - - if [[ ${RESULT} -ne 0 ]]; then - msg_error "Encountered error, please see test.log contents above." - exit ${RESULT} - fi - - pop_directory # BUILD_OBJ_DIR - pop_directory # BUILD_SRC_DIR/PROJECT - - msg_success "'${PROJECT}' clean complete." -} - build_boost() { local PROJECT="$1" @@ -837,10 +825,279 @@ build_gnu() msg_success "'${PROJECT}' built successfully." } + +build_cmake() +{ + local PROJECT="$1" + local RELATIVE_PATH="$2" + local JOBS="$3" + shift 3 + + local VERBOSITY_CMAKE="" + local VERBOSITY_MAKE="" + + if [[ "${DISPLAY_VERBOSE}" == "yes" ]]; then + VERBOSITY_CMAKE="-DCMAKE_VERBOSE_MAKEFILE=ON" + VERBOSITY_MAKE="--verbose" + fi + + msg_heading "Preparing to build ${PROJECT}" + + + # directory rationalization + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + push_directory "${RELATIVE_PATH}" + local BUILD_PATH="$(pwd)" + pop_directory + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + create_directory_force "${BUILD_OBJ_DIR}" + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}" + create_directory_force "${PROJECT}" + pop_directory + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + display_configure_options "$@" + + cmake ${VERBOSITY_CMAKE} -LA "$@" "${BUILD_SRC_DIR}/${PROJECT}/${RELATIVE_PATH}" + + # make + if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then + cmake --build . -j${JOBS} ${VERBOSITY_MAKE} + else + cmake --build . ${VERBOSITY_MAKE} + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + msg_success "'${PROJECT}' built successfully." +} + + +clean_cmake() +{ + local PROJECT="$1" + shift 1 + + msg "Preparing to clean ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + cmake --build . --target clean + + local RESULT=$? + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' clean complete." +} + +install_cmake() +{ + local PROJECT="$1" + shift + + msg "Preparing to install ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + cmake --install . + + if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then + ldconfig + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' installation complete." +} + +test_cmake() +{ + local PROJECT="$1" + local JOBS="$2" + shift 2 + + msg "Preparing to test ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + ctest --test-dir . + + local RESULT=$? + + if [[ -e "test-suite.log" ]]; then + msg_warn "begin error log: test-suite.log" + cat "test-suite.log" + msg_warn " end error log: test-suite.log" + fi + + if [[ -e "test.log" ]]; then + msg_warn "begin error log: test.log" + cat "test.log" + msg_warn " end error log: test.log" + fi + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + enable_exit_on_error + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' test complete." +} + +clean_gnu() +{ + local PROJECT="$1" + shift 1 + + msg "Preparing to clean ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + make clean + + local RESULT=$? + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' clean complete." +} + +install_gnu() +{ + local PROJECT="$1" + shift + + msg "Preparing to install ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + make install + + if [[ ${OS} == Linux ]] && [[ "${PREFIX}" == "/usr/local" ]]; then + ldconfig + fi + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' installation complete." +} + +test_gnu() +{ + local PROJECT="$1" + local JOBS="$2" + shift 2 + + msg "Preparing to test ${PROJECT}" + + push_directory "${BUILD_SRC_DIR}/${PROJECT}" + + if [[ "${BUILD_OBJ_DIR_RELATIVE}" == "yes" ]]; then + push_directory "${BUILD_OBJ_DIR}" + else + push_directory "${BUILD_OBJ_DIR}/${PROJECT}" + fi + + disable_exit_on_error + + if [[ ${JOBS} -gt ${SEQUENTIAL} ]]; then + make -j${JOBS} check VERBOSE=1 + else + make check VERBOSE=1 + fi + + local RESULT=$? + + if [[ -e "test-suite.log" ]]; then + msg_warn "begin error log: test-suite.log" + cat "test-suite.log" + msg_warn " end error log: test-suite.log" + fi + + if [[ -e "test.log" ]]; then + msg_warn "begin error log: test.log" + cat "test.log" + msg_warn " end error log: test.log" + fi + + if [[ ${RESULT} -ne 0 ]]; then + msg_error "Encountered error, please see test.log contents above." + exit ${RESULT} + fi + + enable_exit_on_error + + pop_directory # BUILD_OBJ_DIR + pop_directory # BUILD_SRC_DIR/PROJECT + + msg_success "'${PROJECT}' test complete." +} + display_build_variables() { msg "BUILD_boost : ${BUILD_boost}" msg "BUILD_secp256k1 : ${BUILD_secp256k1}" + msg "BUILD_ultrafast : ${BUILD_ultrafast}" msg "BUILD_SRC_DIR : ${BUILD_SRC_DIR}" msg "BUILD_OBJ_DIR : ${BUILD_OBJ_DIR}" msg "BUILD_OBJ_DIR_RELATIVE : ${BUILD_OBJ_DIR_RELATIVE}" @@ -871,6 +1128,10 @@ display_toolchain_variables() msg "PKG_CONFIG_PATH : ${PKG_CONFIG_PATH}" msg "LDLIBS : ${LDLIBS}" msg "BOOST_ROOT : ${BOOST_ROOT}" + msg "CMAKE_PREFIX_PATH : ${CMAKE_PREFIX_PATH}" + msg "CMAKE_INSTALL_PREFIX : ${CMAKE_INSTALL_PREFIX}" + msg "CMAKE_INCLUDE_PATH : ${CMAKE_INCLUDE_PATH}" + msg "CMAKE_LIBRARY_PATH : ${CMAKE_LIBRARY_PATH}" } display_constants() @@ -881,6 +1142,9 @@ display_constants() msg "secp256k1_OWNER : ${secp256k1_OWNER}" msg "secp256k1_TAG : ${secp256k1_TAG}" + msg "UltrafastSecp256k1_OWNER : ${UltrafastSecp256k1_OWNER}" + msg "UltrafastSecp256k1_TAG : ${UltrafastSecp256k1_TAG}" + msg "libbitcoin_system_OWNER : ${libbitcoin_system_OWNER}" msg "libbitcoin_system_TAG : ${libbitcoin_system_TAG}" @@ -901,8 +1165,13 @@ help() msg " Default: --disable-sse41" msg "---shani Use Intel/ARM SHA Extensions." msg " Default: --disable-shani" + msg "---ultrafast Use shrec/UltrafastSecp256k1." + msg " Default: --without-ultrafast" + msg "---secp256k1 Use bitcoin-core/secp256k1." + msg " Default: --with-secp256k1" msg "--build-boost Build Boost libraries" msg "--build-secp256k1 Build libsecp256k1 libraries" + msg "--build-ultrafast Build UltrafastSecp256k1 libraries" msg "--build-src-dir= Location for sources." msg " Default: $(pwd)" msg "--build-obj-dir= Location for intermediate objects." diff --git a/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj b/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj index 65fd3033b..56b6c80fe 100644 --- a/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj @@ -13,60 +13,28 @@ libbitcoin-database-test - - DebugDEXE - Win32 - - - ReleaseDEXE - Win32 - - + DebugDEXE - x64 + ARM - + ReleaseDEXE - x64 - - - DebugLEXE - Win32 - - - ReleaseLEXE - Win32 + ARM - + DebugLEXE - x64 + ARM - + ReleaseLEXE - x64 - - - DebugSEXE - Win32 - - - ReleaseSEXE - Win32 + ARM - + DebugSEXE - x64 - - - ReleaseSEXE - x64 - - - DebugDEXE ARM - - ReleaseDEXE + + ReleaseSEXE ARM @@ -77,14 +45,6 @@ ReleaseDEXE ARM64 - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - DebugLEXE ARM64 @@ -93,14 +53,6 @@ ReleaseLEXE ARM64 - - DebugSEXE - ARM - - - ReleaseSEXE - ARM - DebugSEXE ARM64 @@ -109,6 +61,54 @@ ReleaseSEXE ARM64 + + DebugDEXE + Win32 + + + ReleaseDEXE + Win32 + + + DebugLEXE + Win32 + + + ReleaseLEXE + Win32 + + + DebugSEXE + Win32 + + + ReleaseSEXE + Win32 + + + DebugDEXE + x64 + + + ReleaseDEXE + x64 + + + DebugLEXE + x64 + + + ReleaseLEXE + x64 + + + DebugSEXE + x64 + + + ReleaseSEXE + x64 + @@ -117,6 +117,7 @@ + @@ -132,12 +133,8 @@ $(IntDir)test_memory_utilities.obj - - $(IntDir)test_mocks_blocks.obj - - - $(IntDir)test_mocks_chunk_storage.obj - + + @@ -210,9 +207,7 @@ - - $(IntDir)test_test.obj - + @@ -227,6 +222,8 @@ + + @@ -237,14 +234,14 @@ + - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The Missing file is {0}. @@ -253,10 +250,10 @@ + - diff --git a/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters index 81b8bc145..fa19d2bcf 100644 --- a/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters @@ -29,34 +29,34 @@ {5C4DA53A-8C06-4DA6-0000-000000000006} - {5C4DA53A-8C06-4DA6-0000-000000000009} + {5C4DA53A-8C06-4DA6-0000-000000000007} - {5C4DA53A-8C06-4DA6-0000-00000000000A} + {5C4DA53A-8C06-4DA6-0000-000000000008} - {5C4DA53A-8C06-4DA6-0000-00000000000B} + {5C4DA53A-8C06-4DA6-0000-000000000009} - {5C4DA53A-8C06-4DA6-0000-00000000000C} + {5C4DA53A-8C06-4DA6-0000-00000000000A} - {5C4DA53A-8C06-4DA6-0000-000000000007} + {5C4DA53A-8C06-4DA6-0000-00000000000B} - {5C4DA53A-8C06-4DA6-0000-00000000000D} + {5C4DA53A-8C06-4DA6-0000-00000000000C} - {5C4DA53A-8C06-4DA6-0000-00000000000E} + {5C4DA53A-8C06-4DA6-0000-00000000000D} - {5C4DA53A-8C06-4DA6-0000-00000000000F} + {5C4DA53A-8C06-4DA6-0000-00000000000E} - {5C4DA53A-8C06-4DA6-0000-000000000001} + {5C4DA53A-8C06-4DA6-0000-00000000000F} - {5C4DA53A-8C06-4DA6-0000-000000000008} + {5C4DA53A-8C06-4DA6-0000-000000000001} diff --git a/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj b/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj index 12aef768f..634dcce55 100644 --- a/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj @@ -13,60 +13,28 @@ libbitcoin-database-tools - - DebugDEXE - Win32 - - - ReleaseDEXE - Win32 - - + DebugDEXE - x64 + ARM - + ReleaseDEXE - x64 - - - DebugLEXE - Win32 - - - ReleaseLEXE - Win32 + ARM - + DebugLEXE - x64 + ARM - + ReleaseLEXE - x64 - - - DebugSEXE - Win32 - - - ReleaseSEXE - Win32 + ARM - + DebugSEXE - x64 - - - ReleaseSEXE - x64 - - - DebugDEXE ARM - - ReleaseDEXE + + ReleaseSEXE ARM @@ -77,14 +45,6 @@ ReleaseDEXE ARM64 - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - DebugLEXE ARM64 @@ -93,14 +53,6 @@ ReleaseLEXE ARM64 - - DebugSEXE - ARM - - - ReleaseSEXE - ARM - DebugSEXE ARM64 @@ -109,6 +61,54 @@ ReleaseSEXE ARM64 + + DebugDEXE + Win32 + + + ReleaseDEXE + Win32 + + + DebugLEXE + Win32 + + + ReleaseLEXE + Win32 + + + DebugSEXE + Win32 + + + ReleaseSEXE + Win32 + + + DebugDEXE + x64 + + + ReleaseDEXE + x64 + + + DebugLEXE + x64 + + + ReleaseLEXE + x64 + + + DebugSEXE + x64 + + + ReleaseSEXE + x64 + @@ -117,12 +117,17 @@ + + + + + @@ -139,7 +144,7 @@ - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The Missing file is {0}. diff --git a/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters index 41153bb86..5a49ca03a 100644 --- a/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters @@ -7,9 +7,6 @@ --> - - {005F2A86-F937-4AB5-0000-000000000001} - {005F2A86-F937-4AB5-0000-000000000000} diff --git a/builds/msvc/vs2022/libbitcoin-database.sln b/builds/msvc/vs2022/libbitcoin-database.sln index 2e39ef9ae..5395b4dcd 100644 --- a/builds/msvc/vs2022/libbitcoin-database.sln +++ b/builds/msvc/vs2022/libbitcoin-database.sln @@ -11,64 +11,64 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbitcoin-database-tools", EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - StaticDebug|Win32 = StaticDebug|Win32 - StaticDebug|x64 = StaticDebug|x64 - StaticRelease|Win32 = StaticRelease|Win32 - StaticRelease|x64 = StaticRelease|x64 StaticDebug|ARM = StaticDebug|ARM - StaticDebug|ARM64 = StaticDebug|ARM64 StaticRelease|ARM = StaticRelease|ARM + StaticDebug|ARM64 = StaticDebug|ARM64 StaticRelease|ARM64 = StaticRelease|ARM64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticRelease|Win32 = StaticRelease|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|x64 = StaticRelease|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.Build.0 = DebugLIB|x64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM.ActiveCfg = DebugLIB|ARM {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM.Build.0 = DebugLIB|ARM - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM.ActiveCfg = ReleaseLIB|ARM {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM.Build.0 = ReleaseLIB|ARM + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM64.ActiveCfg = ReleaseLIB|ARM64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM64.Build.0 = ReleaseLIB|ARM64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.Build.0 = DebugSEXE|x64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM64.Build.0 = ReleaseSEXE|ARM64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.Build.0 = DebugSEXE|x64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM64.Build.0 = ReleaseSEXE|ARM64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj index 77ed37142..19735a451 100644 --- a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj @@ -12,60 +12,28 @@ libbitcoin-database - - DebugDLL - Win32 - - - ReleaseDLL - Win32 - - + DebugDLL - x64 + ARM - + ReleaseDLL - x64 - - - DebugLTCG - Win32 - - - ReleaseLTCG - Win32 + ARM - + DebugLTCG - x64 + ARM - + ReleaseLTCG - x64 - - - DebugLIB - Win32 - - - ReleaseLIB - Win32 + ARM - + DebugLIB - x64 - - - ReleaseLIB - x64 - - - DebugDLL ARM - - ReleaseDLL + + ReleaseLIB ARM @@ -76,14 +44,6 @@ ReleaseDLL ARM64 - - DebugLTCG - ARM - - - ReleaseLTCG - ARM - DebugLTCG ARM64 @@ -92,14 +52,6 @@ ReleaseLTCG ARM64 - - DebugLIB - ARM - - - ReleaseLIB - ARM - DebugLIB ARM64 @@ -108,6 +60,54 @@ ReleaseLIB ARM64 + + DebugDLL + Win32 + + + ReleaseDLL + Win32 + + + DebugLTCG + Win32 + + + ReleaseLTCG + Win32 + + + DebugLIB + Win32 + + + ReleaseLIB + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + x64 + + + DebugLTCG + x64 + + + ReleaseLTCG + x64 + + + DebugLIB + x64 + + + ReleaseLIB + x64 + StaticLibrary @@ -120,6 +120,7 @@ + @@ -131,9 +132,7 @@ - - $(IntDir)src_memory_mman-win32_mman.obj - + $(IntDir)src_memory_utilities.obj @@ -283,6 +282,8 @@ + + @@ -299,7 +300,7 @@ - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The Missing file is {0}. diff --git a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters index c90b4ed91..f6ff8ec2c 100644 --- a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters @@ -8,94 +8,91 @@ - {62D7FBEE-4D52-424A-0000-000000000006} + {62D7FBEE-4D52-424A-0000-000000000000} - {62D7FBEE-4D52-424A-0000-000000000007} + {62D7FBEE-4D52-424A-0000-000000000001} - {62D7FBEE-4D52-424A-0000-000000000008} + {62D7FBEE-4D52-424A-0000-000000000002} - {62D7FBEE-4D52-424A-0000-000000000009} + {62D7FBEE-4D52-424A-0000-000000000003} - {62D7FBEE-4D52-424A-0000-00000000000A} + {62D7FBEE-4D52-424A-0000-000000000004} - {62D7FBEE-4D52-424A-0000-000000000001} + {62D7FBEE-4D52-424A-0000-000000000005} - {62D7FBEE-4D52-424A-0000-000000000002} + {62D7FBEE-4D52-424A-0000-000000000006} - {62D7FBEE-4D52-424A-0000-000000000003} + {62D7FBEE-4D52-424A-0000-000000000007} - {62D7FBEE-4D52-424A-0000-000000000005} + {62D7FBEE-4D52-424A-0000-000000000008} - {62D7FBEE-4D52-424A-0000-000000000006} + {62D7FBEE-4D52-424A-0000-000000000009} - {62D7FBEE-4D52-424A-0000-000000000007} + {62D7FBEE-4D52-424A-0000-00000000000A} - {62D7FBEE-4D52-424A-0000-000000000008} + {62D7FBEE-4D52-424A-0000-00000000000B} - {62D7FBEE-4D52-424A-0000-000000000004} + {62D7FBEE-4D52-424A-0000-00000000000C} - {62D7FBEE-4D52-424A-0000-00000000000B} + {62D7FBEE-4D52-424A-0000-00000000000D} - {62D7FBEE-4D52-424A-0000-00000000000C} + {62D7FBEE-4D52-424A-0000-00000000000E} - {62D7FBEE-4D52-424A-0000-000000000009} + {62D7FBEE-4D52-424A-0000-00000000000F} - {62D7FBEE-4D52-424A-0000-00000000000D} + {62D7FBEE-4D52-424A-0000-000000000001} - {62D7FBEE-4D52-424A-0000-00000000000E} + {62D7FBEE-4D52-424A-0000-000000000002} - {62D7FBEE-4D52-424A-0000-000000000010} + {62D7FBEE-4D52-424A-0000-000000000003} - {62D7FBEE-4D52-424A-0000-0000000000A1} + {62D7FBEE-4D52-424A-0000-000000000004} - {62D7FBEE-4D52-424A-0000-0000000000B1} + {62D7FBEE-4D52-424A-0000-000000000005} - {62D7FBEE-4D52-424A-0000-0000000000C1} + {62D7FBEE-4D52-424A-0000-000000000006} - {62D7FBEE-4D52-424A-0000-00000000000F} - - - {62D7FBEE-4D52-424A-0000-0000000000D1} + {62D7FBEE-4D52-424A-0000-000000000007} - {62D7FBEE-4D52-424A-0000-000000000000} + {62D7FBEE-4D52-424A-0000-000000000008} - {62D7FBEE-4D52-424A-0000-000000000001} + {62D7FBEE-4D52-424A-0000-000000000009} - {62D7FBEE-4D52-424A-0000-000000000002} + {62D7FBEE-4D52-424A-0000-000000000010} - {62D7FBEE-4D52-424A-0000-000000000003} + {62D7FBEE-4D52-424A-0000-0000000000A1} - {62D7FBEE-4D52-424A-0000-000000000005} + {62D7FBEE-4D52-424A-0000-0000000000B1} - {62D7FBEE-4D52-424A-0000-000000000004} + {62D7FBEE-4D52-424A-0000-0000000000C1} diff --git a/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj b/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj index a5d73b1a1..e4365801c 100644 --- a/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj @@ -13,60 +13,28 @@ libbitcoin-database-test - - DebugDEXE - Win32 - - - ReleaseDEXE - Win32 - - + DebugDEXE - x64 + ARM - + ReleaseDEXE - x64 - - - DebugLEXE - Win32 - - - ReleaseLEXE - Win32 + ARM - + DebugLEXE - x64 + ARM - + ReleaseLEXE - x64 - - - DebugSEXE - Win32 - - - ReleaseSEXE - Win32 + ARM - + DebugSEXE - x64 - - - ReleaseSEXE - x64 - - - DebugDEXE ARM - - ReleaseDEXE + + ReleaseSEXE ARM @@ -77,14 +45,6 @@ ReleaseDEXE ARM64 - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - DebugLEXE ARM64 @@ -93,14 +53,6 @@ ReleaseLEXE ARM64 - - DebugSEXE - ARM - - - ReleaseSEXE - ARM - DebugSEXE ARM64 @@ -109,6 +61,54 @@ ReleaseSEXE ARM64 + + DebugDEXE + Win32 + + + ReleaseDEXE + Win32 + + + DebugLEXE + Win32 + + + ReleaseLEXE + Win32 + + + DebugSEXE + Win32 + + + ReleaseSEXE + Win32 + + + DebugDEXE + x64 + + + ReleaseDEXE + x64 + + + DebugLEXE + x64 + + + ReleaseLEXE + x64 + + + DebugSEXE + x64 + + + ReleaseSEXE + x64 + @@ -117,6 +117,7 @@ + @@ -132,12 +133,8 @@ $(IntDir)test_memory_utilities.obj - - $(IntDir)test_mocks_blocks.obj - - - $(IntDir)test_mocks_chunk_storage.obj - + + @@ -210,9 +207,7 @@ - - $(IntDir)test_test.obj - + @@ -227,6 +222,8 @@ + + @@ -237,14 +234,14 @@ + - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The Missing file is {0}. @@ -253,10 +250,10 @@ + - @@ -266,4 +263,4 @@ - \ No newline at end of file + diff --git a/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters index 81b8bc145..fa19d2bcf 100644 --- a/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters +++ b/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters @@ -29,34 +29,34 @@ {5C4DA53A-8C06-4DA6-0000-000000000006} - {5C4DA53A-8C06-4DA6-0000-000000000009} + {5C4DA53A-8C06-4DA6-0000-000000000007} - {5C4DA53A-8C06-4DA6-0000-00000000000A} + {5C4DA53A-8C06-4DA6-0000-000000000008} - {5C4DA53A-8C06-4DA6-0000-00000000000B} + {5C4DA53A-8C06-4DA6-0000-000000000009} - {5C4DA53A-8C06-4DA6-0000-00000000000C} + {5C4DA53A-8C06-4DA6-0000-00000000000A} - {5C4DA53A-8C06-4DA6-0000-000000000007} + {5C4DA53A-8C06-4DA6-0000-00000000000B} - {5C4DA53A-8C06-4DA6-0000-00000000000D} + {5C4DA53A-8C06-4DA6-0000-00000000000C} - {5C4DA53A-8C06-4DA6-0000-00000000000E} + {5C4DA53A-8C06-4DA6-0000-00000000000D} - {5C4DA53A-8C06-4DA6-0000-00000000000F} + {5C4DA53A-8C06-4DA6-0000-00000000000E} - {5C4DA53A-8C06-4DA6-0000-000000000001} + {5C4DA53A-8C06-4DA6-0000-00000000000F} - {5C4DA53A-8C06-4DA6-0000-000000000008} + {5C4DA53A-8C06-4DA6-0000-000000000001} diff --git a/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj b/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj index 4b7d98652..e4be2cab1 100644 --- a/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj @@ -13,60 +13,28 @@ libbitcoin-database-tools - - DebugDEXE - Win32 - - - ReleaseDEXE - Win32 - - + DebugDEXE - x64 + ARM - + ReleaseDEXE - x64 - - - DebugLEXE - Win32 - - - ReleaseLEXE - Win32 + ARM - + DebugLEXE - x64 + ARM - + ReleaseLEXE - x64 - - - DebugSEXE - Win32 - - - ReleaseSEXE - Win32 + ARM - + DebugSEXE - x64 - - - ReleaseSEXE - x64 - - - DebugDEXE ARM - - ReleaseDEXE + + ReleaseSEXE ARM @@ -77,14 +45,6 @@ ReleaseDEXE ARM64 - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - DebugLEXE ARM64 @@ -93,14 +53,6 @@ ReleaseLEXE ARM64 - - DebugSEXE - ARM - - - ReleaseSEXE - ARM - DebugSEXE ARM64 @@ -109,6 +61,54 @@ ReleaseSEXE ARM64 + + DebugDEXE + Win32 + + + ReleaseDEXE + Win32 + + + DebugLEXE + Win32 + + + ReleaseLEXE + Win32 + + + DebugSEXE + Win32 + + + ReleaseSEXE + Win32 + + + DebugDEXE + x64 + + + ReleaseDEXE + x64 + + + DebugLEXE + x64 + + + ReleaseLEXE + x64 + + + DebugSEXE + x64 + + + ReleaseSEXE + x64 + @@ -117,12 +117,17 @@ + + + + + @@ -139,7 +144,7 @@ - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The Missing file is {0}. diff --git a/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters index 41153bb86..5a49ca03a 100644 --- a/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters +++ b/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj.filters @@ -7,9 +7,6 @@ --> - - {005F2A86-F937-4AB5-0000-000000000001} - {005F2A86-F937-4AB5-0000-000000000000} diff --git a/builds/msvc/vs2026/libbitcoin-database.sln b/builds/msvc/vs2026/libbitcoin-database.sln index 2e39ef9ae..5395b4dcd 100644 --- a/builds/msvc/vs2026/libbitcoin-database.sln +++ b/builds/msvc/vs2026/libbitcoin-database.sln @@ -11,64 +11,64 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbitcoin-database-tools", EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - StaticDebug|Win32 = StaticDebug|Win32 - StaticDebug|x64 = StaticDebug|x64 - StaticRelease|Win32 = StaticRelease|Win32 - StaticRelease|x64 = StaticRelease|x64 StaticDebug|ARM = StaticDebug|ARM - StaticDebug|ARM64 = StaticDebug|ARM64 StaticRelease|ARM = StaticRelease|ARM + StaticDebug|ARM64 = StaticDebug|ARM64 StaticRelease|ARM64 = StaticRelease|ARM64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticRelease|Win32 = StaticRelease|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|x64 = StaticRelease|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.Build.0 = DebugLIB|x64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM.ActiveCfg = DebugLIB|ARM {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM.Build.0 = DebugLIB|ARM - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 - {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM.ActiveCfg = ReleaseLIB|ARM {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM.Build.0 = ReleaseLIB|ARM + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM64.ActiveCfg = ReleaseLIB|ARM64 {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|ARM64.Build.0 = ReleaseLIB|ARM64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.Build.0 = DebugSEXE|x64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {62D7FBEE-4D52-424A-8938-59756E13D9F5}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 - {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|ARM64.Build.0 = ReleaseSEXE|ARM64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.Build.0 = DebugSEXE|x64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {5C4DA53A-8C06-4DA6-A2A8-3C30F338ED70}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 - {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|ARM64.Build.0 = ReleaseSEXE|ARM64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.ActiveCfg = DebugSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticDebug|x64.Build.0 = DebugSEXE|x64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {005F2A86-F937-4AB5-B041-0F21B67EEC66}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj index f8ea54449..549792fcc 100644 --- a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj @@ -12,60 +12,28 @@ libbitcoin-database - - DebugDLL - Win32 - - - ReleaseDLL - Win32 - - + DebugDLL - x64 + ARM - + ReleaseDLL - x64 - - - DebugLTCG - Win32 - - - ReleaseLTCG - Win32 + ARM - + DebugLTCG - x64 + ARM - + ReleaseLTCG - x64 - - - DebugLIB - Win32 - - - ReleaseLIB - Win32 + ARM - + DebugLIB - x64 - - - ReleaseLIB - x64 - - - DebugDLL ARM - - ReleaseDLL + + ReleaseLIB ARM @@ -76,14 +44,6 @@ ReleaseDLL ARM64 - - DebugLTCG - ARM - - - ReleaseLTCG - ARM - DebugLTCG ARM64 @@ -92,14 +52,6 @@ ReleaseLTCG ARM64 - - DebugLIB - ARM - - - ReleaseLIB - ARM - DebugLIB ARM64 @@ -108,6 +60,54 @@ ReleaseLIB ARM64 + + DebugDLL + Win32 + + + ReleaseDLL + Win32 + + + DebugLTCG + Win32 + + + ReleaseLTCG + Win32 + + + DebugLIB + Win32 + + + ReleaseLIB + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + x64 + + + DebugLTCG + x64 + + + ReleaseLTCG + x64 + + + DebugLIB + x64 + + + ReleaseLIB + x64 + StaticLibrary @@ -120,6 +120,7 @@ + @@ -131,9 +132,7 @@ - - $(IntDir)src_memory_mman-win32_mman.obj - + $(IntDir)src_memory_utilities.obj @@ -283,6 +282,8 @@ + + @@ -299,7 +300,7 @@ - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The Missing file is {0}. @@ -315,4 +316,4 @@ - \ No newline at end of file + diff --git a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters index c90b4ed91..f6ff8ec2c 100644 --- a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters +++ b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters @@ -8,94 +8,91 @@ - {62D7FBEE-4D52-424A-0000-000000000006} + {62D7FBEE-4D52-424A-0000-000000000000} - {62D7FBEE-4D52-424A-0000-000000000007} + {62D7FBEE-4D52-424A-0000-000000000001} - {62D7FBEE-4D52-424A-0000-000000000008} + {62D7FBEE-4D52-424A-0000-000000000002} - {62D7FBEE-4D52-424A-0000-000000000009} + {62D7FBEE-4D52-424A-0000-000000000003} - {62D7FBEE-4D52-424A-0000-00000000000A} + {62D7FBEE-4D52-424A-0000-000000000004} - {62D7FBEE-4D52-424A-0000-000000000001} + {62D7FBEE-4D52-424A-0000-000000000005} - {62D7FBEE-4D52-424A-0000-000000000002} + {62D7FBEE-4D52-424A-0000-000000000006} - {62D7FBEE-4D52-424A-0000-000000000003} + {62D7FBEE-4D52-424A-0000-000000000007} - {62D7FBEE-4D52-424A-0000-000000000005} + {62D7FBEE-4D52-424A-0000-000000000008} - {62D7FBEE-4D52-424A-0000-000000000006} + {62D7FBEE-4D52-424A-0000-000000000009} - {62D7FBEE-4D52-424A-0000-000000000007} + {62D7FBEE-4D52-424A-0000-00000000000A} - {62D7FBEE-4D52-424A-0000-000000000008} + {62D7FBEE-4D52-424A-0000-00000000000B} - {62D7FBEE-4D52-424A-0000-000000000004} + {62D7FBEE-4D52-424A-0000-00000000000C} - {62D7FBEE-4D52-424A-0000-00000000000B} + {62D7FBEE-4D52-424A-0000-00000000000D} - {62D7FBEE-4D52-424A-0000-00000000000C} + {62D7FBEE-4D52-424A-0000-00000000000E} - {62D7FBEE-4D52-424A-0000-000000000009} + {62D7FBEE-4D52-424A-0000-00000000000F} - {62D7FBEE-4D52-424A-0000-00000000000D} + {62D7FBEE-4D52-424A-0000-000000000001} - {62D7FBEE-4D52-424A-0000-00000000000E} + {62D7FBEE-4D52-424A-0000-000000000002} - {62D7FBEE-4D52-424A-0000-000000000010} + {62D7FBEE-4D52-424A-0000-000000000003} - {62D7FBEE-4D52-424A-0000-0000000000A1} + {62D7FBEE-4D52-424A-0000-000000000004} - {62D7FBEE-4D52-424A-0000-0000000000B1} + {62D7FBEE-4D52-424A-0000-000000000005} - {62D7FBEE-4D52-424A-0000-0000000000C1} + {62D7FBEE-4D52-424A-0000-000000000006} - {62D7FBEE-4D52-424A-0000-00000000000F} - - - {62D7FBEE-4D52-424A-0000-0000000000D1} + {62D7FBEE-4D52-424A-0000-000000000007} - {62D7FBEE-4D52-424A-0000-000000000000} + {62D7FBEE-4D52-424A-0000-000000000008} - {62D7FBEE-4D52-424A-0000-000000000001} + {62D7FBEE-4D52-424A-0000-000000000009} - {62D7FBEE-4D52-424A-0000-000000000002} + {62D7FBEE-4D52-424A-0000-000000000010} - {62D7FBEE-4D52-424A-0000-000000000003} + {62D7FBEE-4D52-424A-0000-0000000000A1} - {62D7FBEE-4D52-424A-0000-000000000005} + {62D7FBEE-4D52-424A-0000-0000000000B1} - {62D7FBEE-4D52-424A-0000-000000000004} + {62D7FBEE-4D52-424A-0000-0000000000C1}