From 03592fcc5870a9659550d541829fcbaeb9931165 Mon Sep 17 00:00:00 2001 From: Garrett Brown Date: Fri, 18 Feb 2022 08:09:26 -0800 Subject: [PATCH 1/3] CMake: Add Findcppcodec.cmake for building without Hunter --- cmake/dependencies.cmake | 12 +++++++++++- cmake/modules/Findcppcodec.cmake | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 cmake/modules/Findcppcodec.cmake diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index f209e8ae11..7ebfe281ae 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -1,6 +1,11 @@ # hunter dependencies # https://docs.hunter.sh/en/latest/packages/ +# Append local modules path if Hunter is not enabled +if (NOT HUNTER_ENABLED) + list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules) +endif() + if (TESTING) # https://docs.hunter.sh/en/latest/packages/pkg/GTest.html hunter_add_package(GTest) @@ -58,7 +63,12 @@ find_package(fmt CONFIG REQUIRED) # https://docs.hunter.sh/en/latest/packages/pkg/cppcodec.html hunter_add_package(cppcodec) -find_package(cppcodec CONFIG REQUIRED) +if (HUNTER_ENABLED) + find_package(cppcodec CONFIG REQUIRED) +else() + find_package(cppcodec REQUIRED) + include_directories(${CPPCODEC_INCLUDE_DIRS}) +endif() # http://rapidjson.org hunter_add_package(RapidJSON) diff --git a/cmake/modules/Findcppcodec.cmake b/cmake/modules/Findcppcodec.cmake new file mode 100644 index 0000000000..16ad4f1766 --- /dev/null +++ b/cmake/modules/Findcppcodec.cmake @@ -0,0 +1,20 @@ +#.rst: +# Findcppcodec.cmake +# ------------------ +# Try to find cppcodec +# +# This will define the following variables: +# +# CPPCODEC_FOUND - system has cppcodec +# CPPCODEC_INCLUDE_DIRS - cppcodec include directories +# + +find_package(PkgConfig) +if (PKG_CONFIG_FOUND) + pkg_check_modules(PC_CPPCODEC cppcodec) +endif() + +if (PC_CPPCODEC_FOUND) + set(CPPCODEC_FOUND "${PC_CPPCODEC_FOUND}") + set(CPPCODEC_INCLUDE_DIRS "${PC_CPPCODEC_INCLUDEDIR}") +endif() From 601e96e515e08dd67eca203c431d92280b4c2f69 Mon Sep 17 00:00:00 2001 From: Garrett Brown Date: Fri, 18 Feb 2022 08:09:27 -0800 Subject: [PATCH 2/3] CMake: Add Findleveldb.cmake module for building without Hunter Imported from: https://gitlab.cern.ch/dss/eos/blob/master/cmake/Findleveldb.cmake --- cmake/dependencies.cmake | 7 ++++- cmake/modules/Findleveldb.cmake | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cmake/modules/Findleveldb.cmake diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index 7ebfe281ae..4d1029bba1 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -46,7 +46,12 @@ find_package(Boost.DI CONFIG REQUIRED) # https://docs.hunter.sh/en/latest/packages/pkg/leveldb.html hunter_add_package(leveldb) -find_package(leveldb CONFIG REQUIRED) +if (HUNTER_ENABLED) + find_package(leveldb CONFIG REQUIRED) +else() + find_package(leveldb REQUIRED) + include_directories(${LEVELDB_INCLUDE_DIRS}) +endif() # https://github.com/soramitsu/libp2p hunter_add_package(libp2p) diff --git a/cmake/modules/Findleveldb.cmake b/cmake/modules/Findleveldb.cmake new file mode 100644 index 0000000000..1eb0c9a845 --- /dev/null +++ b/cmake/modules/Findleveldb.cmake @@ -0,0 +1,54 @@ +#.rst: +# Findleveldb.cmake +# ----------- +# Finds the leveldb library +# +# This will define the following variables: +# +# LEVELDB_FOUND - system has leveldb +# LEVELDB_INCLUDE_DIRS - leveldb include directories +# LEVELDB_LIBRARIES - libraries needed to use leveldb +# +# and the following imported targets: +# +# leveldb::leveldb - The leveldb library +# + +include(FindPackageHandleStandardArgs) + +find_path( + LEVELDB_INCLUDE_DIR + NAMES leveldb/db.h + HINTS "${LEVELDB_ROOT_DIR}" "$ENV{LEVELDB_ROOT_DIR}" + PATH_SUFFIXES include +) + +find_library( + LEVELDB_LIBRARY + NAMES leveldb + HINTS "${LEVELDB_ROOT_DIR}" "$ENV{LEVELDB_ROOT_DIR}" + PATH_SUFFIXES "${LIBRARY_PATH_PREFIX}" +) + +find_package_handle_standard_args( + leveldb + DEFAULT_MSG + LEVELDB_INCLUDE_DIR + LEVELDB_LIBRARY +) + +if (LEVELDB_FOUND) + set(LEVELDB_INCLUDE_DIRS "${LEVELDB_INCLUDE_DIR}") + set(LEVELDB_LIBRARIES "${LEVELDB_LIBRARY}") + + if (NOT TARGET leveldb::leveldb) + add_library(leveldb::leveldb UNKNOWN IMPORTED) + set_target_properties(leveldb::leveldb PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${LEVELDB_INCLUDE_DIR}" + IMPORTED_LOCATION "${LEVELDB_LIBRARY}" + ) + endif() +endif() + +mark_as_advanced(LEVELDB_INCLUDE_DIR) +mark_as_advanced(LEVELDB_LIBRARY) From acae8ac03929cfe82cd8b3752261c25524400856 Mon Sep 17 00:00:00 2001 From: Garrett Brown Date: Fri, 18 Feb 2022 08:09:29 -0800 Subject: [PATCH 3/3] CMake: Add Findfilecoin_ffi.cmake for building without git submodules --- cmake/dependencies.cmake | 6 +++ cmake/modules/Findfilecoin_ffi.cmake | 57 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 cmake/modules/Findfilecoin_ffi.cmake diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index 4d1029bba1..6c5636dd98 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -88,3 +88,9 @@ find_package(libarchive CONFIG REQUIRED) hunter_add_package(prometheus-cpp) find_package(prometheus-cpp CONFIG REQUIRED) + +# Add filecoin_ffi target if building without git submodules +if (NOT BUILD_INTERNAL_DEPS) + find_package(filecoin_ffi REQUIRED) + include_directories(${FILECOIN_FFI_INCLUDE_DIRS}) +endif() diff --git a/cmake/modules/Findfilecoin_ffi.cmake b/cmake/modules/Findfilecoin_ffi.cmake new file mode 100644 index 0000000000..cb0d0152a8 --- /dev/null +++ b/cmake/modules/Findfilecoin_ffi.cmake @@ -0,0 +1,57 @@ +#.rst: +# Findfilecoin_ffi.cmake +# ----------- +# Finds the Filecoin FFI library +# +# This will define the following variables: +# +# FILECOIN_FFI_FOUND - system has filecoin_ffi +# FILECOIN_FFI_INCLUDE_DIRS - filecoin_ffi include directories +# FILECOIN_FFI_LIBRARY - library needed to use filecoin_ffi +# +# and the following imported targets: +# +# filecoin_ffi - The filecoin_ffi library +# + +find_package(PkgConfig REQUIRED) + +find_path(FILECOIN_FFI_INCLUDE_DIR + NAMES filecoin-ffi/filcrypto.h + HINTS "${FILECOIN_FFI_ROOT_DIR}" "$ENV{FILECOIN_FFI_ROOT_DIR}" + PATH_SUFFIXES include +) + +find_library(FILECOIN_FFI_LIBRARY + NAMES filcrypto + HINTS "${FILECOIN_FFI_ROOT_DIR}" "$ENV{FILECOIN_FFI_ROOT_DIR}" + PATH_SUFFIXES "${LIBRARY_PATH_PREFIX}" +) +message(FALAL_ERROR "${LIBRARY_PATH_PREFIX}") + +pkg_check_modules(PKG_FILECOIN IMPORTED_TARGET filcrypto) + +if (PKG_FILECOIN_FOUND) + set(FILECOIN_FFI_FOUND "${PKG_FILECOIN_FOUND}") + set(FILECOIN_FFI_INCLUDE_DIRS "${FILECOIN_FFI_INCLUDE_DIR}") + set(FILECOIN_FFI_LIBRARIES "${FILECOIN_FFI_LIBRARY}") + + add_library(filecoin_ffi + STATIC + IMPORTED + GLOBAL + ) + + set_target_properties(filecoin_ffi + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${FILECOIN_FFI_INCLUDE_DIR}" + IMPORTED_LOCATION "${FILECOIN_FFI_LIBRARY}" + ) + + target_link_libraries(filecoin_ffi + INTERFACE PkgConfig::PKG_FILECOIN + ) +endif() + +mark_as_advanced(FILECOIN_FFI_INCLUDE_DIR) +mark_as_advanced(FILECOIN_FFI_LIBRARY)