From b78c249ce3e048d481d11347c98a86e6669ff5bb Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sun, 16 Jun 2019 10:59:46 +0200 Subject: [PATCH 1/3] Add USE_SYSTEM_LIBS option to build without bundled libs headers: s/vendor_cryptopp/cryptopp/ Only gtest and crypto++ are being unbundled. In release/0.10 branch, bundled spdlog version is too old for Gentoo to satisfy with system-lib. --- CMakeLists.txt | 15 ++++++++++++++- .../compressing/compressors/Gzip.cpp | 2 +- src/cpp-utils/CMakeLists.txt | 6 +++++- src/cpp-utils/crypto/cryptopp_byte.h | 2 +- src/cpp-utils/crypto/hash/Hash.cpp | 2 +- src/cpp-utils/crypto/kdf/Scrypt.cpp | 2 +- src/cpp-utils/crypto/symmetric/CFB_Cipher.h | 2 +- src/cpp-utils/crypto/symmetric/GCM_Cipher.h | 2 +- src/cpp-utils/crypto/symmetric/ciphers.h | 10 +++++----- src/cpp-utils/data/Data.cpp | 2 +- src/cpp-utils/data/FixedSizeData.h | 2 +- src/cpp-utils/random/OSRandomGenerator.h | 2 +- src/cpp-utils/random/RandomGeneratorThread.h | 2 +- src/cryfs/localstate/BasedirMetadata.cpp | 2 +- test/blobstore/CMakeLists.txt | 2 +- test/blockstore/CMakeLists.txt | 2 +- test/cpp-utils/CMakeLists.txt | 2 +- test/cryfs-cli/CMakeLists.txt | 2 +- test/cryfs/CMakeLists.txt | 2 +- test/cryfs/config/CompatibilityTest.cpp | 2 +- test/fspp/CMakeLists.txt | 2 +- test/gitversion/CMakeLists.txt | 2 +- test/my-gtest-main/CMakeLists.txt | 2 +- test/parallelaccessstore/CMakeLists.txt | 2 +- 24 files changed, 45 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fdbff715..9797d1ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ require_clang_version(4.0) option(BUILD_TESTING "build test cases" OFF) option(CRYFS_UPDATE_CHECKS "let cryfs check for updates and security vulnerabilities" ON) option(DISABLE_OPENMP "allow building without OpenMP libraries. This will cause performance degradations." OFF) +option(USE_SYSTEM_LIBS "build with system libs instead of bundled libs" OFF) # The following options are helpful for development and/or CI option(USE_WERROR "build with -Werror flag") @@ -48,7 +49,19 @@ if(MSVC) add_definitions(/bigobj) endif() -add_subdirectory(vendor EXCLUDE_FROM_ALL) +if(USE_SYSTEM_LIBS) + include(FindPkgConfig) + pkg_check_modules(CRYPTOPP REQUIRED libcryptopp>=8.2) + add_subdirectory(vendor/spdlog EXCLUDE_FROM_ALL) + if(BUILD_TESTING) + find_package(GTest CONFIG REQUIRED) + set(GOOGLETEST_LIBS GTest::gtest GTest::gmock) + endif() +else() + add_subdirectory(vendor EXCLUDE_FROM_ALL) + set(GOOGLETEST_LIBS googletest) +endif() + add_subdirectory(src) add_subdirectory(doc) add_subdirectory(test) diff --git a/src/blockstore/implementations/compressing/compressors/Gzip.cpp b/src/blockstore/implementations/compressing/compressors/Gzip.cpp index 67b7f49a..64f13e97 100644 --- a/src/blockstore/implementations/compressing/compressors/Gzip.cpp +++ b/src/blockstore/implementations/compressing/compressors/Gzip.cpp @@ -1,6 +1,6 @@ #include "cpp-utils/crypto/cryptopp_byte.h" #include "Gzip.h" -#include +#include using cpputils::Data; diff --git a/src/cpp-utils/CMakeLists.txt b/src/cpp-utils/CMakeLists.txt index f66f99f8..b57e02ba 100644 --- a/src/cpp-utils/CMakeLists.txt +++ b/src/cpp-utils/CMakeLists.txt @@ -89,7 +89,11 @@ target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS}) -target_link_libraries(${PROJECT_NAME} PUBLIC spdlog cryptopp) +if(USE_SYSTEM_LIBS) + target_link_libraries(${PROJECT_NAME} PUBLIC spdlog ${CRYPTOPP_LIBRARIES}) +else() + target_link_libraries(${PROJECT_NAME} PUBLIC spdlog cryptopp) +endif() target_add_boost(${PROJECT_NAME} filesystem system thread chrono) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/src/cpp-utils/crypto/cryptopp_byte.h b/src/cpp-utils/crypto/cryptopp_byte.h index e00cf7cf..363990e9 100644 --- a/src/cpp-utils/crypto/cryptopp_byte.h +++ b/src/cpp-utils/crypto/cryptopp_byte.h @@ -2,7 +2,7 @@ #ifndef _CPPUTILS_CRYPTO_CRYPTOPP_BYTE_H #define _CPPUTILS_CRYPTO_CRYPTOPP_BYTE_H -#include +#include // If we're running an older CryptoPP version, CryptoPP::byte isn't defined yet. // Define it. Refer to "byte" type in the global namespace (placed by CryptoPP). diff --git a/src/cpp-utils/crypto/hash/Hash.cpp b/src/cpp-utils/crypto/hash/Hash.cpp index 696cdeaf..e07d28da 100644 --- a/src/cpp-utils/crypto/hash/Hash.cpp +++ b/src/cpp-utils/crypto/hash/Hash.cpp @@ -1,6 +1,6 @@ #include "Hash.h" #include -#include +#include using cpputils::Random; using CryptoPP::SHA512; diff --git a/src/cpp-utils/crypto/kdf/Scrypt.cpp b/src/cpp-utils/crypto/kdf/Scrypt.cpp index f97d6940..e26db8db 100644 --- a/src/cpp-utils/crypto/kdf/Scrypt.cpp +++ b/src/cpp-utils/crypto/kdf/Scrypt.cpp @@ -1,5 +1,5 @@ #include "Scrypt.h" -#include +#include using std::string; diff --git a/src/cpp-utils/crypto/symmetric/CFB_Cipher.h b/src/cpp-utils/crypto/symmetric/CFB_Cipher.h index 217111d9..0ea6355c 100644 --- a/src/cpp-utils/crypto/symmetric/CFB_Cipher.h +++ b/src/cpp-utils/crypto/symmetric/CFB_Cipher.h @@ -7,7 +7,7 @@ #include "../../data/Data.h" #include "../../random/Random.h" #include -#include +#include #include "Cipher.h" #include "EncryptionKey.h" diff --git a/src/cpp-utils/crypto/symmetric/GCM_Cipher.h b/src/cpp-utils/crypto/symmetric/GCM_Cipher.h index 87404c8f..385f399f 100644 --- a/src/cpp-utils/crypto/symmetric/GCM_Cipher.h +++ b/src/cpp-utils/crypto/symmetric/GCM_Cipher.h @@ -6,7 +6,7 @@ #include "../../data/FixedSizeData.h" #include "../../data/Data.h" #include "../../random/Random.h" -#include +#include #include "Cipher.h" #include "EncryptionKey.h" diff --git a/src/cpp-utils/crypto/symmetric/ciphers.h b/src/cpp-utils/crypto/symmetric/ciphers.h index 7a8f8d45..61a6a25a 100644 --- a/src/cpp-utils/crypto/symmetric/ciphers.h +++ b/src/cpp-utils/crypto/symmetric/ciphers.h @@ -2,11 +2,11 @@ #ifndef MESSMER_CPPUTILS_CRYPTO_SYMMETRIC_CIPHERS_H_ #define MESSMER_CPPUTILS_CRYPTO_SYMMETRIC_CIPHERS_H_ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include "GCM_Cipher.h" #include "CFB_Cipher.h" diff --git a/src/cpp-utils/data/Data.cpp b/src/cpp-utils/data/Data.cpp index c8a3a25b..3a6d41eb 100644 --- a/src/cpp-utils/data/Data.cpp +++ b/src/cpp-utils/data/Data.cpp @@ -1,6 +1,6 @@ #include "Data.h" #include -#include +#include #include using std::istream; diff --git a/src/cpp-utils/data/FixedSizeData.h b/src/cpp-utils/data/FixedSizeData.h index 832a96ee..e45127a4 100644 --- a/src/cpp-utils/data/FixedSizeData.h +++ b/src/cpp-utils/data/FixedSizeData.h @@ -2,7 +2,7 @@ #ifndef MESSMER_CPPUTILS_DATA_FIXEDSIZEDATA_H_ #define MESSMER_CPPUTILS_DATA_FIXEDSIZEDATA_H_ -#include +#include #include #include #include "../assert/assert.h" diff --git a/src/cpp-utils/random/OSRandomGenerator.h b/src/cpp-utils/random/OSRandomGenerator.h index 18a8002d..8c8dc6f5 100644 --- a/src/cpp-utils/random/OSRandomGenerator.h +++ b/src/cpp-utils/random/OSRandomGenerator.h @@ -4,7 +4,7 @@ #include "cpp-utils/crypto/cryptopp_byte.h" #include "RandomGenerator.h" -#include +#include namespace cpputils { class OSRandomGenerator final : public RandomGenerator { diff --git a/src/cpp-utils/random/RandomGeneratorThread.h b/src/cpp-utils/random/RandomGeneratorThread.h index 593750ed..103c00d7 100644 --- a/src/cpp-utils/random/RandomGeneratorThread.h +++ b/src/cpp-utils/random/RandomGeneratorThread.h @@ -4,7 +4,7 @@ #include "../thread/LoopThread.h" #include "ThreadsafeRandomDataBuffer.h" -#include +#include namespace cpputils { //TODO Test diff --git a/src/cryfs/localstate/BasedirMetadata.cpp b/src/cryfs/localstate/BasedirMetadata.cpp index d32ced93..3de2d3ad 100644 --- a/src/cryfs/localstate/BasedirMetadata.cpp +++ b/src/cryfs/localstate/BasedirMetadata.cpp @@ -1,7 +1,7 @@ #include "BasedirMetadata.h" #include #include -#include +#include #include #include "LocalStateDir.h" #include diff --git a/test/blobstore/CMakeLists.txt b/test/blobstore/CMakeLists.txt index 05e98b8d..342d5626 100644 --- a/test/blobstore/CMakeLists.txt +++ b/test/blobstore/CMakeLists.txt @@ -27,7 +27,7 @@ set(SOURCES ) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest blobstore) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} blobstore) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/test/blockstore/CMakeLists.txt b/test/blockstore/CMakeLists.txt index ca63acce..6dc5f505 100644 --- a/test/blockstore/CMakeLists.txt +++ b/test/blockstore/CMakeLists.txt @@ -42,7 +42,7 @@ set(SOURCES ) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest blockstore) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} blockstore) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/test/cpp-utils/CMakeLists.txt b/test/cpp-utils/CMakeLists.txt index 02cc9d5d..55f367eb 100644 --- a/test/cpp-utils/CMakeLists.txt +++ b/test/cpp-utils/CMakeLists.txt @@ -70,7 +70,7 @@ target_activate_cpp14(${PROJECT_NAME}_exit_signal) target_link_libraries(${PROJECT_NAME}_exit_signal cpp-utils) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest cpp-utils) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} cpp-utils) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_exit_status ${PROJECT_NAME}_exit_signal) add_test(${PROJECT_NAME} ${PROJECT_NAME}) diff --git a/test/cryfs-cli/CMakeLists.txt b/test/cryfs-cli/CMakeLists.txt index 2d0b38c5..76fd75bc 100644 --- a/test/cryfs-cli/CMakeLists.txt +++ b/test/cryfs-cli/CMakeLists.txt @@ -16,7 +16,7 @@ set(SOURCES ) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest cryfs-cli cryfs-unmount fspp-fuse) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} cryfs-cli cryfs-unmount fspp-fuse) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/test/cryfs/CMakeLists.txt b/test/cryfs/CMakeLists.txt index 77a025f4..71c74310 100644 --- a/test/cryfs/CMakeLists.txt +++ b/test/cryfs/CMakeLists.txt @@ -24,7 +24,7 @@ set(SOURCES ) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest cryfs) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} cryfs) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/test/cryfs/config/CompatibilityTest.cpp b/test/cryfs/config/CompatibilityTest.cpp index 36c1871c..a1d5f22b 100644 --- a/test/cryfs/config/CompatibilityTest.cpp +++ b/test/cryfs/config/CompatibilityTest.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/fspp/CMakeLists.txt b/test/fspp/CMakeLists.txt index dabff1f1..c3949206 100644 --- a/test/fspp/CMakeLists.txt +++ b/test/fspp/CMakeLists.txt @@ -102,7 +102,7 @@ set(SOURCES testutils/OpenFileHandle.cpp testutils/OpenFileHandle.h) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest fspp-interface fspp-fuse) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} fspp-interface fspp-fuse) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/test/gitversion/CMakeLists.txt b/test/gitversion/CMakeLists.txt index 51a5ccc1..396289fa 100644 --- a/test/gitversion/CMakeLists.txt +++ b/test/gitversion/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCES ) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest gitversion) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} gitversion) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) diff --git a/test/my-gtest-main/CMakeLists.txt b/test/my-gtest-main/CMakeLists.txt index 1d1e7e08..de4fd107 100644 --- a/test/my-gtest-main/CMakeLists.txt +++ b/test/my-gtest-main/CMakeLists.txt @@ -5,7 +5,7 @@ set(SOURCES ) add_library(${PROJECT_NAME} STATIC ${SOURCES}) -target_link_libraries(${PROJECT_NAME} PUBLIC googletest cpp-utils) +target_link_libraries(${PROJECT_NAME} PUBLIC ${GOOGLETEST_LIBS} cpp-utils) target_add_boost(${PROJECT_NAME} filesystem system) target_include_directories(${PROJECT_NAME} PUBLIC .) diff --git a/test/parallelaccessstore/CMakeLists.txt b/test/parallelaccessstore/CMakeLists.txt index 16170d17..97379304 100644 --- a/test/parallelaccessstore/CMakeLists.txt +++ b/test/parallelaccessstore/CMakeLists.txt @@ -6,7 +6,7 @@ set(SOURCES ) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} my-gtest-main googletest parallelaccessstore) +target_link_libraries(${PROJECT_NAME} my-gtest-main ${GOOGLETEST_LIBS} parallelaccessstore) add_test(${PROJECT_NAME} ${PROJECT_NAME}) target_enable_style_warnings(${PROJECT_NAME}) -- 2.22.0 From 6d5b1dd6f040dbdf3e330962a174c91281b19472 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sun, 16 Jun 2019 15:17:16 +0200 Subject: [PATCH 2/3] Use FeatureSummary --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9797d1ee..9e37b2e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ project(cryfs) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake-utils) include(utils) +include(FeatureSummary) require_gcc_version(5.0) require_clang_version(4.0) @@ -66,3 +67,5 @@ add_subdirectory(src) add_subdirectory(doc) add_subdirectory(test) add_subdirectory(cpack) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) -- 2.22.0