From fb6e383d579cac4171ce39490d23ff34059e4ef2 Mon Sep 17 00:00:00 2001 From: shareong <740310627@qq.com> Date: Sat, 9 Mar 2024 16:38:20 +0800 Subject: [PATCH] replace hunter with vcpkg --- .gitignore | 4 +- .gitmodules | 3 + CMakeLists.txt | 42 +- bcos-cmake-scripts/HunterGate.cmake | 541 ------------------ bcos-utilities/CMakeLists.txt | 17 +- {bcos-cmake-scripts => cmake}/BuildDocs.cmake | 0 .../CompilerSettings.cmake | 8 + {bcos-cmake-scripts => cmake}/Coverage.cmake | 0 .../InstallConfig.cmake | 2 - {bcos-cmake-scripts => cmake}/Options.cmake | 2 - cmake/config.cmake | 7 - tests/CMakeLists.txt | 9 +- tests/unittests/libutilities/TestBoostLog.cpp | 39 ++ vcpkg | 1 + vcpkg-configuration.json | 13 + vcpkg.json | 84 +++ 16 files changed, 173 insertions(+), 599 deletions(-) create mode 100644 .gitmodules delete mode 100644 bcos-cmake-scripts/HunterGate.cmake rename {bcos-cmake-scripts => cmake}/BuildDocs.cmake (100%) rename {bcos-cmake-scripts => cmake}/CompilerSettings.cmake (95%) rename {bcos-cmake-scripts => cmake}/Coverage.cmake (100%) rename {bcos-cmake-scripts => cmake}/InstallConfig.cmake (95%) rename {bcos-cmake-scripts => cmake}/Options.cmake (99%) delete mode 100644 cmake/config.cmake create mode 100644 tests/unittests/libutilities/TestBoostLog.cpp create mode 160000 vcpkg create mode 100644 vcpkg-configuration.json create mode 100644 vcpkg.json diff --git a/.gitignore b/.gitignore index 4712be4..499537e 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,6 @@ *.out *.app -build \ No newline at end of file +build +# vcpkg +vcpkg \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fe07c99 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vcpkg"] + path = vcpkg + url = https://github.com/microsoft/vcpkg diff --git a/CMakeLists.txt b/CMakeLists.txt index 705fa18..d74699f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,48 +16,38 @@ # limitations under the License. #------------------------------------------------------------------------------ -cmake_minimum_required(VERSION 3.10) -set(CMAKE_OSX_DEPLOYMENT_TARGET "11.3" CACHE STRING "Minimum OS X deployment version") +cmake_minimum_required(VERSION 3.14) if (NOT DEFINED URL_BASE) set(URL_BASE "github.com") # set(URL_BASE "github.com.cnpmjs.org") endif() -set(BCOS_CMAKE_SCRIPTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/bcos-cmake-scripts) -set(BCOS_UTILITIES_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake" CACHE PATH "The cmake path for the library") -list(APPEND CMAKE_MODULE_PATH ${BCOS_CMAKE_SCRIPTS_DIR}) -list(APPEND CMAKE_MODULE_PATH ${BCOS_UTILITIES_CMAKE_DIR}) -#init hunter -include(HunterGate) -HunterGate( - URL "https://${URL_BASE}/FISCO-BCOS/hunter/archive/162ff7cde3d843e43afdab8fe3214275c35ef168.tar.gz" - SHA1 "0ba8099fe89beb0d44986c750fe0d44040725d99" - FILEPATH "${BCOS_UTILITIES_CMAKE_DIR}/config.cmake" -) -project(bcos-utilities VERSION "1.0.0") +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) -# basic settings +set(VERSION_SUFFIX "") include(Options) configure_project() + +# vcpkg init +find_package(Git REQUIRED) +execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) +set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") + +project(bcos-utilities VERSION "1.0.0") + include(CompilerSettings) include_directories(${CMAKE_INSTALL_INCLUDEDIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -# install dependencies -hunter_add_package(ZLIB) -hunter_add_package(Boost COMPONENTS all iostreams) - -if(NOT MSVC) - hunter_add_package(range-v3) - find_package(range-v3 CONFIG REQUIRED) -endif() # for compile set(BCOS_UTILITIES_TARGET "bcos-utilities") add_subdirectory(bcos-utilities) +print_config("bcos-utilities") + if (TESTS) enable_testing() set(CTEST_OUTPUT_ON_FAILURE TRUE) @@ -82,9 +72,3 @@ include(InstallInclude) # for doxygen include(BuildDocs) buildDoc(doc) - -# for code coverage -if (COVERAGE) - include(Coverage) - config_coverage("cov" "'/usr*' '${CMAKE_CURRENT_SOURCE_DIR}/bcos-cmake-scripts*' '${CMAKE_CURRENT_SOURCE_DIR}/test/bcos-test*'") -endif () diff --git a/bcos-cmake-scripts/HunterGate.cmake b/bcos-cmake-scripts/HunterGate.cmake deleted file mode 100644 index 9c82fcf..0000000 --- a/bcos-cmake-scripts/HunterGate.cmake +++ /dev/null @@ -1,541 +0,0 @@ -# Copyright (c) 2013-2019, Ruslan Baratov -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# This is a gate file to Hunter package manager. -# Include this file using `include` command and add package you need, example: -# -# cmake_minimum_required(VERSION 3.2) -# -# include("cmake/HunterGate.cmake") -# HunterGate( -# URL "https://github.com/path/to/hunter/archive.tar.gz" -# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d" -# ) -# -# project(MyProject) -# -# hunter_add_package(Foo) -# hunter_add_package(Boo COMPONENTS Bar Baz) -# -# Projects: -# * https://github.com/hunter-packages/gate/ -# * https://github.com/ruslo/hunter - -option(HUNTER_ENABLED "Enable Hunter package manager support" ON) - -if(HUNTER_ENABLED) - if(CMAKE_VERSION VERSION_LESS "3.2") - message( - FATAL_ERROR - "At least CMake version 3.2 required for Hunter dependency management." - " Update CMake or set HUNTER_ENABLED to OFF." - ) - endif() -endif() - -include(CMakeParseArguments) # cmake_parse_arguments - -option(HUNTER_STATUS_PRINT "Print working status" ON) -option(HUNTER_STATUS_DEBUG "Print a lot info" OFF) -option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON) - -set(HUNTER_ERROR_PAGE "https://docs.hunter.sh/en/latest/reference/errors") - -function(hunter_gate_status_print) - if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG) - foreach(print_message ${ARGV}) - message(STATUS "[hunter] ${print_message}") - endforeach() - endif() -endfunction() - -function(hunter_gate_status_debug) - if(HUNTER_STATUS_DEBUG) - foreach(print_message ${ARGV}) - string(TIMESTAMP timestamp) - message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}") - endforeach() - endif() -endfunction() - -function(hunter_gate_error_page error_page) - message("------------------------------ ERROR ------------------------------") - message(" ${HUNTER_ERROR_PAGE}/${error_page}.html") - message("-------------------------------------------------------------------") - message("") - message(FATAL_ERROR "") -endfunction() - -function(hunter_gate_internal_error) - message("") - foreach(print_message ${ARGV}) - message("[hunter ** INTERNAL **] ${print_message}") - endforeach() - message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") - message("") - hunter_gate_error_page("error.internal") -endfunction() - -function(hunter_gate_fatal_error) - cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}") - if("${hunter_ERROR_PAGE}" STREQUAL "") - hunter_gate_internal_error("Expected ERROR_PAGE") - endif() - message("") - foreach(x ${hunter_UNPARSED_ARGUMENTS}) - message("[hunter ** FATAL ERROR **] ${x}") - endforeach() - message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") - message("") - hunter_gate_error_page("${hunter_ERROR_PAGE}") -endfunction() - -function(hunter_gate_user_error) - hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data") -endfunction() - -function(hunter_gate_self root version sha1 result) - string(COMPARE EQUAL "${root}" "" is_bad) - if(is_bad) - hunter_gate_internal_error("root is empty") - endif() - - string(COMPARE EQUAL "${version}" "" is_bad) - if(is_bad) - hunter_gate_internal_error("version is empty") - endif() - - string(COMPARE EQUAL "${sha1}" "" is_bad) - if(is_bad) - hunter_gate_internal_error("sha1 is empty") - endif() - - string(SUBSTRING "${sha1}" 0 7 archive_id) - - if(EXISTS "${root}/cmake/Hunter") - set(hunter_self "${root}") - else() - set( - hunter_self - "${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked" - ) - endif() - - set("${result}" "${hunter_self}" PARENT_SCOPE) -endfunction() - -# Set HUNTER_GATE_ROOT cmake variable to suitable value. -function(hunter_gate_detect_root) - # Check CMake variable - string(COMPARE NOTEQUAL "${HUNTER_ROOT}" "" not_empty) - if(not_empty) - set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE) - hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable") - return() - endif() - - # Check environment variable - string(COMPARE NOTEQUAL "$ENV{HUNTER_ROOT}" "" not_empty) - if(not_empty) - set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE) - hunter_gate_status_debug("HUNTER_ROOT detected by environment variable") - return() - endif() - - # Check HOME environment variable - string(COMPARE NOTEQUAL "$ENV{HOME}" "" result) - if(result) - set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE) - hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable") - return() - endif() - - # Check SYSTEMDRIVE and USERPROFILE environment variable (windows only) - if(WIN32) - string(COMPARE NOTEQUAL "$ENV{SYSTEMDRIVE}" "" result) - if(result) - set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE) - hunter_gate_status_debug( - "HUNTER_ROOT set using SYSTEMDRIVE environment variable" - ) - return() - endif() - - string(COMPARE NOTEQUAL "$ENV{USERPROFILE}" "" result) - if(result) - set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE) - hunter_gate_status_debug( - "HUNTER_ROOT set using USERPROFILE environment variable" - ) - return() - endif() - endif() - - hunter_gate_fatal_error( - "Can't detect HUNTER_ROOT" - ERROR_PAGE "error.detect.hunter.root" - ) -endfunction() - -function(hunter_gate_download dir) - string( - COMPARE - NOTEQUAL - "$ENV{HUNTER_DISABLE_AUTOINSTALL}" - "" - disable_autoinstall - ) - if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL) - hunter_gate_fatal_error( - "Hunter not found in '${dir}'" - "Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'" - "Settings:" - " HUNTER_ROOT: ${HUNTER_GATE_ROOT}" - " HUNTER_SHA1: ${HUNTER_GATE_SHA1}" - ERROR_PAGE "error.run.install" - ) - endif() - string(COMPARE EQUAL "${dir}" "" is_bad) - if(is_bad) - hunter_gate_internal_error("Empty 'dir' argument") - endif() - - string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad) - if(is_bad) - hunter_gate_internal_error("HUNTER_GATE_SHA1 empty") - endif() - - string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad) - if(is_bad) - hunter_gate_internal_error("HUNTER_GATE_URL empty") - endif() - - set(done_location "${dir}/DONE") - set(sha1_location "${dir}/SHA1") - - set(build_dir "${dir}/Build") - set(cmakelists "${dir}/CMakeLists.txt") - - hunter_gate_status_debug("Locking directory: ${dir}") - file(LOCK "${dir}" DIRECTORY GUARD FUNCTION) - hunter_gate_status_debug("Lock done") - - if(EXISTS "${done_location}") - # while waiting for lock other instance can do all the job - hunter_gate_status_debug("File '${done_location}' found, skip install") - return() - endif() - - file(REMOVE_RECURSE "${build_dir}") - file(REMOVE_RECURSE "${cmakelists}") - - file(MAKE_DIRECTORY "${build_dir}") # check directory permissions - - # Disabling languages speeds up a little bit, reduces noise in the output - # and avoids path too long windows error - file( - WRITE - "${cmakelists}" - "cmake_minimum_required(VERSION 3.2)\n" - "project(HunterDownload LANGUAGES NONE)\n" - "include(ExternalProject)\n" - "ExternalProject_Add(\n" - " Hunter\n" - " URL\n" - " \"${HUNTER_GATE_URL}\"\n" - " URL_HASH\n" - " SHA1=${HUNTER_GATE_SHA1}\n" - " DOWNLOAD_DIR\n" - " \"${dir}\"\n" - " TLS_VERIFY\n" - " ${HUNTER_TLS_VERIFY}\n" - " SOURCE_DIR\n" - " \"${dir}/Unpacked\"\n" - " CONFIGURE_COMMAND\n" - " \"\"\n" - " BUILD_COMMAND\n" - " \"\"\n" - " INSTALL_COMMAND\n" - " \"\"\n" - ")\n" - ) - - if(HUNTER_STATUS_DEBUG) - set(logging_params "") - else() - set(logging_params OUTPUT_QUIET) - endif() - - hunter_gate_status_debug("Run generate") - - # Need to add toolchain file too. - # Otherwise on Visual Studio + MDD this will fail with error: - # "Could not find an appropriate version of the Windows 10 SDK installed on this machine" - if(EXISTS "${CMAKE_TOOLCHAIN_FILE}") - get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE) - set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}") - else() - # 'toolchain_arg' can't be empty - set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=") - endif() - - string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make) - if(no_make) - set(make_arg "") - else() - # Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM - set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") - endif() - - execute_process( - COMMAND - "${CMAKE_COMMAND}" - "-H${dir}" - "-B${build_dir}" - "-G${CMAKE_GENERATOR}" - "${toolchain_arg}" - ${make_arg} - WORKING_DIRECTORY "${dir}" - RESULT_VARIABLE download_result - ${logging_params} - ) - - if(NOT download_result EQUAL 0) - hunter_gate_internal_error( - "Configure project failed." - "To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}" - "In directory ${dir}" - ) - endif() - - hunter_gate_status_print( - "Initializing Hunter workspace (${HUNTER_GATE_SHA1})" - " ${HUNTER_GATE_URL}" - " -> ${dir}" - ) - execute_process( - COMMAND "${CMAKE_COMMAND}" --build "${build_dir}" - WORKING_DIRECTORY "${dir}" - RESULT_VARIABLE download_result - ${logging_params} - ) - - if(NOT download_result EQUAL 0) - hunter_gate_internal_error("Build project failed") - endif() - - file(REMOVE_RECURSE "${build_dir}") - file(REMOVE_RECURSE "${cmakelists}") - - file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}") - file(WRITE "${done_location}" "DONE") - - hunter_gate_status_debug("Finished") -endfunction() - -# Must be a macro so master file 'cmake/Hunter' can -# apply all variables easily just by 'include' command -# (otherwise PARENT_SCOPE magic needed) -macro(HunterGate) - if(HUNTER_GATE_DONE) - # variable HUNTER_GATE_DONE set explicitly for external project - # (see `hunter_download`) - set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) - endif() - - # First HunterGate command will init Hunter, others will be ignored - get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET) - - if(NOT HUNTER_ENABLED) - # Empty function to avoid error "unknown function" - function(hunter_add_package) - endfunction() - - set( - _hunter_gate_disabled_mode_dir - "${CMAKE_CURRENT_LIST_DIR}/cmake/Hunter/disabled-mode" - ) - if(EXISTS "${_hunter_gate_disabled_mode_dir}") - hunter_gate_status_debug( - "Adding \"disabled-mode\" modules: ${_hunter_gate_disabled_mode_dir}" - ) - list(APPEND CMAKE_PREFIX_PATH "${_hunter_gate_disabled_mode_dir}") - endif() - elseif(_hunter_gate_done) - hunter_gate_status_debug("Secondary HunterGate (use old settings)") - hunter_gate_self( - "${HUNTER_CACHED_ROOT}" - "${HUNTER_VERSION}" - "${HUNTER_SHA1}" - _hunter_self - ) - include("${_hunter_self}/cmake/Hunter") - else() - set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}") - - string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name) - if(_have_project_name) - hunter_gate_fatal_error( - "Please set HunterGate *before* 'project' command. " - "Detected project: ${PROJECT_NAME}" - ERROR_PAGE "error.huntergate.before.project" - ) - endif() - - cmake_parse_arguments( - HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV} - ) - - string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1) - string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url) - string( - COMPARE - NOTEQUAL - "${HUNTER_GATE_UNPARSED_ARGUMENTS}" - "" - _have_unparsed - ) - string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global) - string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath) - - if(_have_unparsed) - hunter_gate_user_error( - "HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}" - ) - endif() - if(_empty_sha1) - hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory") - endif() - if(_empty_url) - hunter_gate_user_error("URL suboption of HunterGate is mandatory") - endif() - if(_have_global) - if(HUNTER_GATE_LOCAL) - hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)") - endif() - if(_have_filepath) - hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)") - endif() - endif() - if(HUNTER_GATE_LOCAL) - if(_have_global) - hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)") - endif() - if(_have_filepath) - hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)") - endif() - endif() - if(_have_filepath) - if(_have_global) - hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)") - endif() - if(HUNTER_GATE_LOCAL) - hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)") - endif() - endif() - - hunter_gate_detect_root() # set HUNTER_GATE_ROOT - - # Beautify path, fix probable problems with windows path slashes - get_filename_component( - HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE - ) - hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}") - if(NOT HUNTER_ALLOW_SPACES_IN_PATH) - string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces) - if(NOT _contain_spaces EQUAL -1) - hunter_gate_fatal_error( - "HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces." - "Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error" - "(Use at your own risk!)" - ERROR_PAGE "error.spaces.in.hunter.root" - ) - endif() - endif() - - string( - REGEX - MATCH - "[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*" - HUNTER_GATE_VERSION - "${HUNTER_GATE_URL}" - ) - string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty) - if(_is_empty) - set(HUNTER_GATE_VERSION "unknown") - endif() - - hunter_gate_self( - "${HUNTER_GATE_ROOT}" - "${HUNTER_GATE_VERSION}" - "${HUNTER_GATE_SHA1}" - _hunter_self - ) - - set(_master_location "${_hunter_self}/cmake/Hunter") - if(EXISTS "${HUNTER_GATE_ROOT}/cmake/Hunter") - # Hunter downloaded manually (e.g. by 'git clone') - set(_unused "xxxxxxxxxx") - set(HUNTER_GATE_SHA1 "${_unused}") - set(HUNTER_GATE_VERSION "${_unused}") - else() - get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE) - set(_done_location "${_archive_id_location}/DONE") - set(_sha1_location "${_archive_id_location}/SHA1") - - # Check Hunter already downloaded by HunterGate - if(NOT EXISTS "${_done_location}") - hunter_gate_download("${_archive_id_location}") - endif() - - if(NOT EXISTS "${_done_location}") - hunter_gate_internal_error("hunter_gate_download failed") - endif() - - if(NOT EXISTS "${_sha1_location}") - hunter_gate_internal_error("${_sha1_location} not found") - endif() - file(READ "${_sha1_location}" _sha1_value) - string(TOLOWER "${_sha1_value}" _sha1_value_lower) - string(TOLOWER "${HUNTER_GATE_SHA1}" _HUNTER_GATE_SHA1_lower) - string(COMPARE EQUAL "${_sha1_value_lower}" "${_HUNTER_GATE_SHA1_lower}" _is_equal) - if(NOT _is_equal) - hunter_gate_internal_error( - "Short SHA1 collision:" - " ${_sha1_value} (from ${_sha1_location})" - " ${HUNTER_GATE_SHA1} (HunterGate)" - ) - endif() - if(NOT EXISTS "${_master_location}") - hunter_gate_user_error( - "Master file not found:" - " ${_master_location}" - "try to update Hunter/HunterGate" - ) - endif() - endif() - include("${_master_location}") - set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) - endif() -endmacro() diff --git a/bcos-utilities/CMakeLists.txt b/bcos-utilities/CMakeLists.txt index 014c088..86d5ccf 100644 --- a/bcos-utilities/CMakeLists.txt +++ b/bcos-utilities/CMakeLists.txt @@ -3,17 +3,8 @@ file(GLOB HEADERS "*.h") add_library(${BCOS_UTILITIES_TARGET} ${SRC_LIST} ${HEADERS}) -find_package(Boost CONFIG QUIET REQUIRED log chrono system filesystem iostreams thread serialization) -find_package(ZLIB CONFIG REQUIRED) -find_library(BOOST_LOG_SETUP_LIB - NAMES libboost_log_setup-mt-a64.a libboost_log_setup-mt-d-a64.a libboost_log_setup-mt.a libboost_log_setup-mt-d.a - PATHS ${HUNTER_INSTALL_DIR} - ) +# install dependencies +find_package(ZLIB REQUIRED) +find_package(Boost COMPONENTS log filesystem chrono thread serialization iostreams system) +target_link_libraries(${BCOS_UTILITIES_TARGET} PUBLIC Boost::log Boost::chrono Boost::iostreams Boost::filesystem Boost::thread Boost::serialization Boost::system ZLIB::ZLIB) -if(BOOST_LOG_SETUP_LIB) - message(STATUS "Found Boost.Log Setup library: ${BOOST_LOG_SETUP_LIB}") -else() - message(FATAL_ERROR "Boost.Log Setup library not found") -endif() - -target_link_libraries(${BCOS_UTILITIES_TARGET} PUBLIC Boost::log Boost::chrono Boost::iostreams Boost::filesystem Boost::thread Boost::serialization ${BOOST_LOG_SETUP_LIB} ZLIB::zlib) diff --git a/bcos-cmake-scripts/BuildDocs.cmake b/cmake/BuildDocs.cmake similarity index 100% rename from bcos-cmake-scripts/BuildDocs.cmake rename to cmake/BuildDocs.cmake diff --git a/bcos-cmake-scripts/CompilerSettings.cmake b/cmake/CompilerSettings.cmake similarity index 95% rename from bcos-cmake-scripts/CompilerSettings.cmake rename to cmake/CompilerSettings.cmake index 2640491..013a874 100644 --- a/bcos-cmake-scripts/CompilerSettings.cmake +++ b/cmake/CompilerSettings.cmake @@ -53,6 +53,14 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA # build deps lib Release set(_only_release_configuration "-DCMAKE_BUILD_TYPE=Release") + # Some Linux-specific Clang settings. We don't want these for OS X. + if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") + # Tell Boost that we're using Clang's libc++. Not sure exactly why we need to do. + add_definitions(-DBOOST_ASIO_HAS_CLANG_LIBCXX) + # Fix for Boost UUID on old kernel version Linux. See https://github.com/boostorg/uuid/issues/91 + add_definitions(-DBOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX) + endif() + if(BUILD_STATIC) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") SET(BUILD_SHARED_LIBRARIES OFF) diff --git a/bcos-cmake-scripts/Coverage.cmake b/cmake/Coverage.cmake similarity index 100% rename from bcos-cmake-scripts/Coverage.cmake rename to cmake/Coverage.cmake diff --git a/bcos-cmake-scripts/InstallConfig.cmake b/cmake/InstallConfig.cmake similarity index 95% rename from bcos-cmake-scripts/InstallConfig.cmake rename to cmake/InstallConfig.cmake index 513847b..4af46fc 100644 --- a/bcos-cmake-scripts/InstallConfig.cmake +++ b/cmake/InstallConfig.cmake @@ -14,8 +14,6 @@ # limitations under the License. # ------------------------------------------------------------------------------ # File: InstallConfig.cmake -# Function: Public cmake files for building projects based on hunter -# may be used by multiple projects # ------------------------------------------------------------------------------ include(GNUInstallDirs) diff --git a/bcos-cmake-scripts/Options.cmake b/cmake/Options.cmake similarity index 99% rename from bcos-cmake-scripts/Options.cmake rename to cmake/Options.cmake index f1deca2..887d85c 100644 --- a/bcos-cmake-scripts/Options.cmake +++ b/cmake/Options.cmake @@ -73,8 +73,6 @@ macro(configure_project) if (DEBUG) add_definitions(-DFISCO_DEBUG) endif() - - print_config(${NAME}) endmacro() macro(print_config NAME) diff --git a/cmake/config.cmake b/cmake/config.cmake deleted file mode 100644 index 5514f9d..0000000 --- a/cmake/config.cmake +++ /dev/null @@ -1,7 +0,0 @@ -hunter_config( - Boost VERSION "1.83" - URL "https://psychz.dl.sourceforge.net/project/boost/boost/1.83.0/boost_1_83_0.tar.bz2" - SHA1 75b1f569134401d178ad2aaf97a2993898dd7ee3 - CMAKE_ARGS CONFIG_MACRO=BOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX -) - diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 106a24a..b3bdcb9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -file(GLOB_RECURSE SOURCES "*.cpp" "*.h" "*.sol") +file(GLOB_RECURSE SOURCES "*.cpp" "*.h") # cmake settings set(TEST_BINARY_NAME test-bcos-utilities) @@ -23,6 +23,7 @@ set(TEST_BINARY_NAME test-bcos-utilities) add_executable(${TEST_BINARY_NAME} ${SOURCES}) target_include_directories(${TEST_BINARY_NAME} PRIVATE . ${CMAKE_SOURCE_DIR}) -find_package(Boost CONFIG QUIET REQUIRED unit_test_framework iostreams serialization) -target_link_libraries(${TEST_BINARY_NAME} PUBLIC ${BCOS_UTILITIES_TARGET} Boost::unit_test_framework Boost::iostreams Boost::serialization ZLIB::zlib) -add_test(NAME test-rpc WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} COMMAND ${TEST_BINARY_NAME}) +find_package(Boost REQUIRED unit_test_framework) + +target_link_libraries(${TEST_BINARY_NAME} PUBLIC ${BCOS_UTILITIES_TARGET} Boost::unit_test_framework) +add_test(NAME test-utilities WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} COMMAND ${TEST_BINARY_NAME}) diff --git a/tests/unittests/libutilities/TestBoostLog.cpp b/tests/unittests/libutilities/TestBoostLog.cpp new file mode 100644 index 0000000..fb13d19 --- /dev/null +++ b/tests/unittests/libutilities/TestBoostLog.cpp @@ -0,0 +1,39 @@ +/** + * Copyright (C) 2021 FISCO BCOS. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @file TestBoostLog + * @author: xingqiangbai + * @date: 2021-01-18 + */ + +#include "bcos-utilities/BoostLog.h" +#include +#include +#include +using namespace bcos; +using namespace std; + +namespace bcos +{ +namespace test +{ +BOOST_AUTO_TEST_CASE(testCreatFileColletctor) +{ + boost::filesystem::path targetDir("./testCreatFileColletctor"); + auto collector = bcos::log::make_collector(targetDir, 0, 0, 0, false); + BOOST_CHECK(collector != nullptr); +} +} // namespace test +} // namespace bcos diff --git a/vcpkg b/vcpkg new file mode 160000 index 0000000..0719a71 --- /dev/null +++ b/vcpkg @@ -0,0 +1 @@ +Subproject commit 0719a71389654b88d827501d88e37e58ea8cbd70 diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json new file mode 100644 index 0000000..967a310 --- /dev/null +++ b/vcpkg-configuration.json @@ -0,0 +1,13 @@ +{ + "registries": [ + { + "kind": "git", + "repository": "https://github.com/FISCO-BCOS/registry", + "baseline": "3765dfb347d9fc820cfad9005b2f87d0755895ec", + "packages": [ + "openssl", + "tbb" + ] + } + ] + } \ No newline at end of file diff --git a/vcpkg.json b/vcpkg.json new file mode 100644 index 0000000..e9ef6bf --- /dev/null +++ b/vcpkg.json @@ -0,0 +1,84 @@ +{ + "name": "bcos-utilities", + "version-string": "1.0.0", + "homepage": "https://github.com/FISCO-BCOS/bcos-utilities", + "description": "bcos-utilities", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "boost-log", + "boost-filesystem", + "boost-system", + "boost-chrono", + "boost-thread", + "boost-iostreams", + "boost-serialization", + "boost-test", + "boost-multiprecision", + "boost-program-options", + "tbb", + "zlib", + { + "name": "openssl", + "version>=": "1.1.1-tassl" + } + ], + "builtin-baseline": "51b14cd4e1230dd51c11ffeff6f7d53c61cc5297", + "overrides": [ + { + "name": "boost-log", + "version": "1.83.0" + }, + { + "name": "boost-filesystem", + "version": "1.83.0" + }, + { + "name": "boost-system", + "version": "1.83.0" + }, + { + "name": "boost-serialization", + "version": "1.83.0" + }, + { + "name": "boost-chrono", + "version": "1.83.0" + }, + { + "name": "boost-iostreams", + "version": "1.83.0" + }, + { + "name": "boost-thread", + "version": "1.83.0" + }, + { + "name": "boost-test", + "version": "1.83.0" + }, + { + "name": "boost-multiprecision", + "version": "1.83.0" + }, + { + "name": "boost-program-options", + "version": "1.83.0" + }, + { + "name": "tbb", + "version": "2021.8.0" + }, + { + "name": "zlib", + "version": "1.2.12", + "port-version": 1 + } + ] +} \ No newline at end of file