Patch to unbundle dependencies to build in Gentoo. - SHA3 -> externals/sha3 shipped in the tarball, built as a static library with the same sources as the built-in externals build. - JSON -> the system dev-cpp/nlohmann_json (the externals/json machinery is only used with BUILTIN_EXTERNALS; without it no nlohmann_json target would exist). nlohmann_json is header-only but its C++ headers need the C++ standard library, hence the C project type. - Protobuf -> link the imported protobuf::libprotobuf-lite target instead of the bare ${PROTOBUF_LITE_LIBRARY} path. The imported target propagates compile features from its dependencies (including absl), without hardcoding a C++ standard in the ebuild. diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -443,7 +443,7 @@ if (BUILD_CVMFS OR BUILD_LIBCVMFS OR BUILD_SERVER OR BUILD_SERVER_DEBUG OR find_package (ZLIB REQUIRED) set (INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} ${ZLIB_INCLUDE_DIRS}) - find_package (SHA3 REQUIRED) + add_subdirectory(externals/sha3) set (INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} ${SHA3_INCLUDE_DIRS}) endif () diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -455,0 +457,2 @@ if (BUILD_CVMFS OR BUILD_LIBCVMFS OR BUILD_SERVER OR BUILD_SERVER_DEBUG OR + + find_package (nlohmann_json REQUIRED) + diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -498,5 +498,7 @@ if (BUILD_CVMFS OR BUILD_LIBCVMFS OR BUILD_LIBCVMFS_CACHE OR BUILD_UNITTESTS OR BUILD_UNITTESTS_DEBUG OR BUILD_UBENCHMARKS OR BUILD_SHRINKWRAP) find_package(Protobuf REQUIRED) + find_package(protobuf CONFIG REQUIRED) + set(PROTOBUF_LITE_LIBRARY protobuf::libprotobuf-lite) set (INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} ${PROTOBUF_INCLUDE_DIRS}) endif () diff --git a/externals/sha3/CMakeLists.txt b/externals/sha3/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/externals/sha3/CMakeLists.txt @@ -0,0 +1,21 @@ +project(SHA3 C CXX) + +# Gentoo: build the bundled Keccak/SHA3 code as a static library instead of +# requiring a system SHA3 package (no such package exists in Gentoo). +add_library(cvmfs_sha3 STATIC + src/64opt/KeccakF-1600-opt64.c + src/KeccakHash.c + src/KeccakSponge.c + src/SnP-FBWL-default.c +) + +set_property(TARGET cvmfs_sha3 PROPERTY POSITION_INDEPENDENT_CODE TRUE) + +target_include_directories(cvmfs_sha3 PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/src/64opt +) + +set(SHA3_LIBRARY $ PARENT_SCOPE) +set(SHA3_LIBRARIES cvmfs_sha3 PARENT_SCOPE) +set(SHA3_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/64opt PARENT_SCOPE) diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -455,0 +457,2 @@ if (BUILD_CVMFS OR BUILD_LIBCVMFS OR BUILD_SERVER OR BUILD_SERVER_DEBUG OR + + find_package (nlohmann_json REQUIRED)