diff --git a/builds/cmake/CMakeLists.txt b/builds/cmake/CMakeLists.txt index 7bd40d10..a1c20cff 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-node" ) + +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-node - VERSION 4.0.0 + VERSION ${LIBBITCOIN_VERSION_MAJOR}.${LIBBITCOIN_VERSION_MINOR}.${LIBBITCOIN_VERSION_PATCH} DESCRIPTION "Bitcoin Full Node" LANGUAGES C CXX ) @@ -125,6 +174,10 @@ endif() include(CheckLinkerFlag) +#------------------------------------------------------------------------------ +# Configurable file(s). +#------------------------------------------------------------------------------ + #------------------------------------------------------------------------------ # libbitcoin-node library #------------------------------------------------------------------------------ diff --git a/builds/cmake/install-cmake.sh b/builds/cmake/install-cmake.sh index 44038d97..97ebb00f 100755 --- a/builds/cmake/install-cmake.sh +++ b/builds/cmake/install-cmake.sh @@ -16,10 +16,15 @@ # 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 # -Dwith-ssl= Use embedded ssl library. # 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. @@ -69,6 +74,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 @@ -103,26 +115,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 @@ -130,6 +143,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/}") @@ -145,6 +159,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[*]}" @@ -248,21 +263,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 +381,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 +409,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 +455,18 @@ 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_USE_ULTRAFAST=ON") + libbitcoin_system_FLAGS=() libbitcoin_system_OPTIONS=( @@ -471,10 +501,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_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_make "secp256k1" + clean_cmake "UltrafastSecp256k1" fi export CPPFLAGS="${SAVE_CPPFLAGS}" fi @@ -482,43 +524,43 @@ 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[@]}" - install_make "libbitcoin-database" + build_cmake "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "libbitcoin-database" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-database" + clean_cmake "libbitcoin-database" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_network_OWNER}" "libbitcoin-network" "${libbitcoin_network_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_network_FLAGS[@]}" - build_cmake "libbitcoin-network" "builds/cmake" "${PARALLEL}" "${libbitcoin_network_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "libbitcoin-network" + build_cmake "libbitcoin-network" "builds/cmake" "${PARALLEL}" "${libbitcoin_network_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "libbitcoin-network" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-network" + clean_cmake "libbitcoin-network" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_node_OWNER}" "libbitcoin-node" "${libbitcoin_node_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_node_FLAGS[@]}" - build_cmake "libbitcoin-node" "builds/cmake" "${PARALLEL}" "${libbitcoin_node_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" + build_cmake "libbitcoin-node" "builds/cmake" "${PARALLEL}" "${libbitcoin_node_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then - test_make "libbitcoin-node" "test" "${PARALLEL}" + test_cmake "libbitcoin-node" "${PARALLEL}" fi - install_make "libbitcoin-node" + install_cmake "libbitcoin-node" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-node" + clean_cmake "libbitcoin-node" fi export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -646,117 +688,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" @@ -856,7 +787,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}" @@ -884,9 +815,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 @@ -894,10 +825,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}" @@ -942,6 +981,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}" @@ -968,10 +1010,15 @@ 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 "-Dwith-ssl= Use embedded ssl library." 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 c54b910e..9ed481d3 100755 --- a/builds/cmake/install-presets.sh +++ b/builds/cmake/install-presets.sh @@ -16,10 +16,15 @@ # 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 # -Dwith-ssl= Use embedded ssl library. # 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) @@ -59,6 +64,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 @@ -93,22 +105,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 @@ -116,6 +129,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/}") @@ -127,6 +141,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[*]}" @@ -264,21 +279,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 @@ -380,19 +397,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 @@ -408,13 +425,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" @@ -453,6 +471,18 @@ 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_USE_ULTRAFAST=ON") + libbitcoin_system_FLAGS=() libbitcoin_system_OPTIONS=( @@ -487,10 +517,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 @@ -498,43 +540,43 @@ 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[@]}" - install_make "libbitcoin-database" + build_preset "libbitcoin-database" "builds/cmake" "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "libbitcoin-database" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-database" + clean_cmake "libbitcoin-database" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_network_OWNER}" "libbitcoin-network" "${libbitcoin_network_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_network_FLAGS[@]}" - build_preset "libbitcoin-network" "builds/cmake" "${PARALLEL}" "${libbitcoin_network_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "libbitcoin-network" + build_preset "libbitcoin-network" "builds/cmake" "${PARALLEL}" "${libbitcoin_network_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" + install_cmake "libbitcoin-network" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-network" + clean_cmake "libbitcoin-network" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_node_OWNER}" "libbitcoin-node" "${libbitcoin_node_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_node_FLAGS[@]}" - build_preset "libbitcoin-node" "builds/cmake" "${PARALLEL}" "${libbitcoin_node_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" + build_preset "libbitcoin-node" "builds/cmake" "${PARALLEL}" "${libbitcoin_node_OPTIONS[@]}" "${CONFIGURE_OPTIONS_CMAKE[@]}" if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then - test_make "libbitcoin-node" "test" "${PARALLEL}" + test_cmake "libbitcoin-node" "test" "${PARALLEL}" fi - install_make "libbitcoin-node" + install_cmake "libbitcoin-node" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-node" + clean_cmake "libbitcoin-node" fi export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -662,117 +704,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" @@ -872,7 +803,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}" @@ -900,9 +831,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 @@ -910,6 +841,7 @@ build_cmake() msg_success "'${PROJECT}' built successfully." } + build_preset() { local PROJECT="$1" @@ -960,10 +892,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}" @@ -1009,6 +1049,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}" @@ -1035,10 +1078,15 @@ 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 "-Dwith-ssl= Use embedded ssl library." 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 63eb0ff6..335de87f 100755 --- a/builds/gnu/install-gnu.sh +++ b/builds/gnu/install-gnu.sh @@ -16,10 +16,15 @@ # 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 # ---ssl Use embedded ssl library. # Default: --with-ssl # --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. @@ -69,6 +74,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 @@ -103,22 +115,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 @@ -126,6 +139,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/}") @@ -141,6 +155,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[*]}" @@ -240,8 +256,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 @@ -343,22 +382,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[@]}" "--enable-ndebug" ) + 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_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 @@ -374,13 +427,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" @@ -419,6 +482,18 @@ 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_USE_ULTRAFAST=ON") + libbitcoin_system_FLAGS=() libbitcoin_system_OPTIONS=( @@ -460,10 +535,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 @@ -471,43 +558,43 @@ 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[@]}" - install_make "libbitcoin-database" + build_gnu "libbitcoin-database" "." "${PARALLEL}" "${libbitcoin_database_OPTIONS[@]}" "${CONFIGURE_OPTIONS_GNU[@]}" + install_gnu "libbitcoin-database" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-database" + clean_gnu "libbitcoin-database" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_network_OWNER}" "libbitcoin-network" "${libbitcoin_network_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_network_FLAGS[@]}" - build_gnu "libbitcoin-network" "." "${PARALLEL}" "${libbitcoin_network_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" - install_make "libbitcoin-network" + build_gnu "libbitcoin-network" "." "${PARALLEL}" "${libbitcoin_network_OPTIONS[@]}" "${CONFIGURE_OPTIONS_GNU[@]}" + install_gnu "libbitcoin-network" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-network" + clean_gnu "libbitcoin-network" fi export CPPFLAGS="${SAVE_CPPFLAGS}" source_github "${libbitcoin_node_OWNER}" "libbitcoin-node" "${libbitcoin_node_TAG}" local SAVE_CPPFLAGS="${CPPFLAGS}" export CPPFLAGS="${CPPFLAGS} ${libbitcoin_node_FLAGS[@]}" - build_gnu "libbitcoin-node" "." "${PARALLEL}" "${libbitcoin_node_OPTIONS[@]}" "${CONFIGURE_OPTIONS[@]}" + build_gnu "libbitcoin-node" "." "${PARALLEL}" "${libbitcoin_node_OPTIONS[@]}" "${CONFIGURE_OPTIONS_GNU[@]}" if ! [[ "${BUILD_SKIP_TESTS}" == "yes" ]]; then - test_make "libbitcoin-node" "check" "${PARALLEL}" + test_gnu "libbitcoin-node" "${PARALLEL}" fi - install_make "libbitcoin-node" + install_gnu "libbitcoin-node" if [[ "${BUILD_POST_INSTALL_CLEAN}" == "yes" ]]; then - clean_make "libbitcoin-node" + clean_gnu "libbitcoin-node" fi export CPPFLAGS="${SAVE_CPPFLAGS}" @@ -635,117 +722,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" @@ -888,10 +864,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}" @@ -922,6 +1167,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() @@ -932,6 +1181,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}" @@ -958,10 +1210,15 @@ 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 "---ssl Use embedded ssl library." msg " Default: --with-ssl" 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/bn/bn.props b/builds/msvc/vs2022/bn/bn.props index db7ebe48..9448b880 100644 --- a/builds/msvc/vs2022/bn/bn.props +++ b/builds/msvc/vs2022/bn/bn.props @@ -55,6 +55,7 @@ + diff --git a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.props b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.props index 3b92d0f5..f488377c 100644 --- a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.props +++ b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.props @@ -57,6 +57,7 @@ + diff --git a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj index 5435ca43..903c75a9 100644 --- a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj @@ -13,98 +13,34 @@ libbitcoin-node-test - - DebugDEXE - Win32 - - - ReleaseDEXE - Win32 - - - DebugDEXE - x64 - - - ReleaseDEXE - x64 - - - DebugLEXE - Win32 - - - ReleaseLEXE + + DebugSEXE Win32 - - DebugLEXE + + DebugSEXE x64 - - ReleaseLEXE - x64 + + DebugSEXE + ARM - + DebugSEXE - Win32 + ARM64 ReleaseSEXE Win32 - - DebugSEXE - x64 - ReleaseSEXE x64 - - DebugDEXE - ARM - - - ReleaseDEXE - ARM - - - DebugDEXE - ARM64 - - - ReleaseDEXE - ARM64 - - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - - - DebugLEXE - ARM64 - - - ReleaseLEXE - ARM64 - - - DebugSEXE - ARM - ReleaseSEXE ARM - - DebugSEXE - ARM64 - ReleaseSEXE ARM64 @@ -117,10 +53,18 @@ + + + + + + + + @@ -130,17 +74,8 @@ - - - - - - - - $(IntDir)test_test.obj - @@ -148,10 +83,13 @@ + + + @@ -160,13 +98,13 @@ - - 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}. + @@ -175,7 +113,6 @@ - diff --git a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters index 3e9441ba..7e04ee51 100644 --- a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters @@ -8,16 +8,16 @@ - {4BD50864-D3BC-4F64-0000-000000000000} + {4BD50864-D3BC-4F64-0000-000000000001} - {4BD50864-D3BC-4F64-0000-000000000001} + {4BD50864-D3BC-4F64-0000-000000000002} - {4BD50864-D3BC-4F64-0000-000000000002} + {4BD50864-D3BC-4F64-0000-000000000003} - {4BD50864-D3BC-4F64-0000-000000000003} + {4BD50864-D3BC-4F64-0000-000000000004} diff --git a/builds/msvc/vs2022/libbitcoin-node.sln b/builds/msvc/vs2022/libbitcoin-node.sln index 70b4d374..7613f1aa 100644 --- a/builds/msvc/vs2022/libbitcoin-node.sln +++ b/builds/msvc/vs2022/libbitcoin-node.sln @@ -11,10 +11,10 @@ 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|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 StaticRelease|ARM = StaticRelease|ARM StaticRelease|ARM64 = StaticRelease|ARM64 EndGlobalSection @@ -23,14 +23,14 @@ Global {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|x64.Build.0 = DebugLIB|x64 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM.ActiveCfg = DebugLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM.Build.0 = DebugLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM.ActiveCfg = ReleaseLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM.Build.0 = ReleaseLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM64.ActiveCfg = ReleaseLIB|ARM64 @@ -39,14 +39,14 @@ Global {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|x64.Build.0 = DebugSEXE|x64 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 diff --git a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.props b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.props index 100424c8..6214b253 100644 --- a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.props +++ b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.props @@ -59,6 +59,7 @@ + diff --git a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj index 42e68b87..dbbf028e 100644 --- a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj @@ -12,98 +12,34 @@ libbitcoin-node - - DebugDLL - Win32 - - - ReleaseDLL - Win32 - - - DebugDLL - x64 - - - ReleaseDLL - x64 - - - DebugLTCG - Win32 - - - ReleaseLTCG + + DebugLIB Win32 - - DebugLTCG + + DebugLIB x64 - - ReleaseLTCG - x64 + + DebugLIB + ARM - + DebugLIB - Win32 + ARM64 ReleaseLIB Win32 - - DebugLIB - x64 - ReleaseLIB x64 - - DebugDLL - ARM - - - ReleaseDLL - ARM - - - DebugDLL - ARM64 - - - ReleaseDLL - ARM64 - - - DebugLTCG - ARM - - - ReleaseLTCG - ARM - - - DebugLTCG - ARM64 - - - ReleaseLTCG - ARM64 - - - DebugLIB - ARM - ReleaseLIB ARM - - DebugLIB - ARM64 - ReleaseLIB ARM64 @@ -120,9 +56,15 @@ + + + + + + @@ -135,10 +77,6 @@ - - - - @@ -160,16 +98,23 @@ - + + + + + + + + + - @@ -183,12 +128,6 @@ - - - - - - @@ -214,9 +153,7 @@ - - - + @@ -224,7 +161,7 @@ - + @@ -241,7 +178,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-node/libbitcoin-node.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters index 5b8a5dde..e5f2548e 100644 --- a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters @@ -8,58 +8,58 @@ - {5FFB5F52-0772-4404-0000-000000000006} + {5FFB5F52-0772-4404-0000-000000000001} - {5FFB5F52-0772-4404-0000-000000000007} + {5FFB5F52-0772-4404-0000-000000000002} - {5FFB5F52-0772-4404-0000-000000000008} + {5FFB5F52-0772-4404-0000-000000000003} - {5FFB5F52-0772-4404-0000-000000000009} + {5FFB5F52-0772-4404-0000-000000000004} - {5FFB5F52-0772-4404-0000-00000000000A} + {5FFB5F52-0772-4404-0000-000000000005} - {5FFB5F52-0772-4404-0000-00000000000B} + {5FFB5F52-0772-4404-0000-000000000006} - {5FFB5F52-0772-4404-0000-00000000000F} + {5FFB5F52-0772-4404-0000-000000000007} - {5FFB5F52-0772-4404-0000-000000000001} + {5FFB5F52-0772-4404-0000-000000000008} - {5FFB5F52-0772-4404-0000-00000000000C} + {5FFB5F52-0772-4404-0000-000000000009} - {5FFB5F52-0772-4404-0000-00000000000D} + {5FFB5F52-0772-4404-0000-00000000000A} - {5FFB5F52-0772-4404-0000-00000000000E} + {5FFB5F52-0772-4404-0000-00000000000B} - {5FFB5F52-0772-4404-0000-000000000002} + {5FFB5F52-0772-4404-0000-000000000003} - {5FFB5F52-0772-4404-0000-000000000000} + {5FFB5F52-0772-4404-0000-00000000000C} - {5FFB5F52-0772-4404-0000-000000000001} + {5FFB5F52-0772-4404-0000-00000000000D} - {5FFB5F52-0772-4404-0000-000000000002} + {5FFB5F52-0772-4404-0000-00000000000E} - {5FFB5F52-0772-4404-0000-000000000003} + {5FFB5F52-0772-4404-0000-00000000000F} - {5FFB5F52-0772-4404-0000-000000000004} + {5FFB5F52-0772-4404-0000-000000000001} - {5FFB5F52-0772-4404-0000-000000000005} + {5FFB5F52-0772-4404-0000-000000000002} @@ -185,6 +185,9 @@ + + resource + include\bitcoin @@ -344,9 +347,6 @@ include\bitcoin\node - - resource - @@ -361,7 +361,7 @@ - + resource diff --git a/builds/msvc/vs2026/bn/bn.props b/builds/msvc/vs2026/bn/bn.props index db7ebe48..9448b880 100644 --- a/builds/msvc/vs2026/bn/bn.props +++ b/builds/msvc/vs2026/bn/bn.props @@ -55,6 +55,7 @@ + diff --git a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.props b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.props index 3b92d0f5..f488377c 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.props +++ b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.props @@ -57,6 +57,7 @@ + diff --git a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj index d1e260ec..94f409ee 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj @@ -13,98 +13,34 @@ libbitcoin-node-test - - DebugDEXE - Win32 - - - ReleaseDEXE - Win32 - - - DebugDEXE - x64 - - - ReleaseDEXE - x64 - - - DebugLEXE - Win32 - - - ReleaseLEXE + + DebugSEXE Win32 - - DebugLEXE + + DebugSEXE x64 - - ReleaseLEXE - x64 + + DebugSEXE + ARM - + DebugSEXE - Win32 + ARM64 ReleaseSEXE Win32 - - DebugSEXE - x64 - ReleaseSEXE x64 - - DebugDEXE - ARM - - - ReleaseDEXE - ARM - - - DebugDEXE - ARM64 - - - ReleaseDEXE - ARM64 - - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - - - DebugLEXE - ARM64 - - - ReleaseLEXE - ARM64 - - - DebugSEXE - ARM - ReleaseSEXE ARM - - DebugSEXE - ARM64 - ReleaseSEXE ARM64 @@ -117,10 +53,18 @@ + + + + + + + + @@ -130,17 +74,8 @@ - - - - - - - - $(IntDir)test_test.obj - @@ -148,10 +83,13 @@ + + + @@ -160,13 +98,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}. + @@ -175,7 +114,7 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters index 3e9441ba..7e04ee51 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters +++ b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters @@ -8,16 +8,16 @@ - {4BD50864-D3BC-4F64-0000-000000000000} + {4BD50864-D3BC-4F64-0000-000000000001} - {4BD50864-D3BC-4F64-0000-000000000001} + {4BD50864-D3BC-4F64-0000-000000000002} - {4BD50864-D3BC-4F64-0000-000000000002} + {4BD50864-D3BC-4F64-0000-000000000003} - {4BD50864-D3BC-4F64-0000-000000000003} + {4BD50864-D3BC-4F64-0000-000000000004} diff --git a/builds/msvc/vs2026/libbitcoin-node-test/packages.config b/builds/msvc/vs2026/libbitcoin-node-test/packages.config index e8084722..693373b1 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/packages.config +++ b/builds/msvc/vs2026/libbitcoin-node-test/packages.config @@ -6,6 +6,7 @@ | --> + diff --git a/builds/msvc/vs2026/libbitcoin-node.sln b/builds/msvc/vs2026/libbitcoin-node.sln index 70b4d374..7613f1aa 100644 --- a/builds/msvc/vs2026/libbitcoin-node.sln +++ b/builds/msvc/vs2026/libbitcoin-node.sln @@ -11,10 +11,10 @@ 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|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 StaticRelease|ARM = StaticRelease|ARM StaticRelease|ARM64 = StaticRelease|ARM64 EndGlobalSection @@ -23,14 +23,14 @@ Global {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|x64.Build.0 = DebugLIB|x64 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM.ActiveCfg = DebugLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM.Build.0 = DebugLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM.ActiveCfg = ReleaseLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM.Build.0 = ReleaseLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM64.ActiveCfg = ReleaseLIB|ARM64 @@ -39,14 +39,14 @@ Global {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|Win32.Build.0 = DebugSEXE|Win32 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|x64.ActiveCfg = DebugSEXE|x64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|x64.Build.0 = DebugSEXE|x64 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.ActiveCfg = ReleaseSEXE|Win32 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|Win32.Build.0 = ReleaseSEXE|Win32 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.ActiveCfg = ReleaseSEXE|x64 + {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|x64.Build.0 = ReleaseSEXE|x64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props index 100424c8..6214b253 100644 --- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props +++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props @@ -59,6 +59,7 @@ + diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj index 65b8aa82..fe7203ae 100644 --- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj @@ -12,98 +12,34 @@ libbitcoin-node - - DebugDLL - Win32 - - - ReleaseDLL - Win32 - - - DebugDLL - x64 - - - ReleaseDLL - x64 - - - DebugLTCG - Win32 - - - ReleaseLTCG + + DebugLIB Win32 - - DebugLTCG + + DebugLIB x64 - - ReleaseLTCG - x64 + + DebugLIB + ARM - + DebugLIB - Win32 + ARM64 ReleaseLIB Win32 - - DebugLIB - x64 - ReleaseLIB x64 - - DebugDLL - ARM - - - ReleaseDLL - ARM - - - DebugDLL - ARM64 - - - ReleaseDLL - ARM64 - - - DebugLTCG - ARM - - - ReleaseLTCG - ARM - - - DebugLTCG - ARM64 - - - ReleaseLTCG - ARM64 - - - DebugLIB - ARM - ReleaseLIB ARM - - DebugLIB - ARM64 - ReleaseLIB ARM64 @@ -120,9 +56,15 @@ + + + + + + @@ -135,10 +77,6 @@ - - - - @@ -160,16 +98,23 @@ - + + + + + + + + + - @@ -183,12 +128,6 @@ - - - - - - @@ -214,9 +153,7 @@ - - - + @@ -224,7 +161,7 @@ - + @@ -238,10 +175,11 @@ + - 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}. @@ -252,6 +190,7 @@ + diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters index 5b8a5dde..e5f2548e 100644 --- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters +++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters @@ -8,58 +8,58 @@ - {5FFB5F52-0772-4404-0000-000000000006} + {5FFB5F52-0772-4404-0000-000000000001} - {5FFB5F52-0772-4404-0000-000000000007} + {5FFB5F52-0772-4404-0000-000000000002} - {5FFB5F52-0772-4404-0000-000000000008} + {5FFB5F52-0772-4404-0000-000000000003} - {5FFB5F52-0772-4404-0000-000000000009} + {5FFB5F52-0772-4404-0000-000000000004} - {5FFB5F52-0772-4404-0000-00000000000A} + {5FFB5F52-0772-4404-0000-000000000005} - {5FFB5F52-0772-4404-0000-00000000000B} + {5FFB5F52-0772-4404-0000-000000000006} - {5FFB5F52-0772-4404-0000-00000000000F} + {5FFB5F52-0772-4404-0000-000000000007} - {5FFB5F52-0772-4404-0000-000000000001} + {5FFB5F52-0772-4404-0000-000000000008} - {5FFB5F52-0772-4404-0000-00000000000C} + {5FFB5F52-0772-4404-0000-000000000009} - {5FFB5F52-0772-4404-0000-00000000000D} + {5FFB5F52-0772-4404-0000-00000000000A} - {5FFB5F52-0772-4404-0000-00000000000E} + {5FFB5F52-0772-4404-0000-00000000000B} - {5FFB5F52-0772-4404-0000-000000000002} + {5FFB5F52-0772-4404-0000-000000000003} - {5FFB5F52-0772-4404-0000-000000000000} + {5FFB5F52-0772-4404-0000-00000000000C} - {5FFB5F52-0772-4404-0000-000000000001} + {5FFB5F52-0772-4404-0000-00000000000D} - {5FFB5F52-0772-4404-0000-000000000002} + {5FFB5F52-0772-4404-0000-00000000000E} - {5FFB5F52-0772-4404-0000-000000000003} + {5FFB5F52-0772-4404-0000-00000000000F} - {5FFB5F52-0772-4404-0000-000000000004} + {5FFB5F52-0772-4404-0000-000000000001} - {5FFB5F52-0772-4404-0000-000000000005} + {5FFB5F52-0772-4404-0000-000000000002} @@ -185,6 +185,9 @@ + + resource + include\bitcoin @@ -344,9 +347,6 @@ include\bitcoin\node - - resource - @@ -361,7 +361,7 @@ - + resource diff --git a/builds/msvc/vs2026/libbitcoin-node/packages.config b/builds/msvc/vs2026/libbitcoin-node/packages.config index bf01d5b1..e35f028f 100644 --- a/builds/msvc/vs2026/libbitcoin-node/packages.config +++ b/builds/msvc/vs2026/libbitcoin-node/packages.config @@ -6,6 +6,7 @@ | --> +