diff --git a/src/libmongoc/CMakeLists.txt b/src/libmongoc/CMakeLists.txt index 8881f5194..c366f160a 100644 --- a/src/libmongoc/CMakeLists.txt +++ b/src/libmongoc/CMakeLists.txt @@ -58,8 +58,9 @@ configure_file ( set (ZLIB_INCLUDE_DIRS "") if (ENABLE_ZLIB MATCHES "SYSTEM|AUTO") message (STATUS "Searching for zlib CMake packages") - include (FindZLIB) + find_package(ZLIB REQUIRED) if (ZLIB_FOUND) + set(VCPKG_ZLIB_LIBRARIES "ZLIB::ZLIB") message ("-- zlib found version \"${ZLIB_VERSION_STRING}\"") message ("-- zlib include path \"${ZLIB_INCLUDE_DIRS}\"") message ("-- zlib libraries \"${ZLIB_LIBRARIES}\"") @@ -100,32 +101,31 @@ endif () if (NOT ENABLE_ZSTD STREQUAL OFF) message (STATUS "Searching for compression library zstd") - find_package(PkgConfig) - pkg_check_modules (ZSTD libzstd) + find_package(zstd CONFIG REQUIRED) - if (NOT ZSTD_FOUND) + if (NOT zstd_FOUND) if (ENABLE_ZSTD MATCHES "ON") message (FATAL_ERROR " Not found") else () message (STATUS " Not found") endif () # The compression format below this version isn't supported. See SERVER-43070 - elseif (${ZSTD_VERSION} VERSION_LESS "0.8.0") + elseif (${zstd_VERSION} VERSION_LESS "0.8.0") if (ENABLE_ZSTD MATCHES "ON") - message (FATAL_ERROR "Detected zstd version ${ZSTD_VERSION} but version 0.8.0 required") + message (FATAL_ERROR "Detected zstd version ${zstd_VERSION} but version 0.8.0 required") else () - message (STATUS "Detected zstd version ${ZSTD_VERSION} but version 0.8.0 required") + message (STATUS "Detected zstd version ${zstd_VERSION} but version 0.8.0 required") endif () else () - message (STATUS " Found zstd version ${ZSTD_VERSION} in ${ZSTD_INCLUDE_DIRS}") + message (STATUS " Found zstd version ${zstd_VERSION} in ${ZSTD_INCLUDE_DIRS}") set (MONGOC_ENABLE_COMPRESSION 1) set (MONGOC_ENABLE_COMPRESSION_ZSTD 1) include_directories (${ZSTD_INCLUDE_DIRS}) - if (${CMAKE_VERSION} VERSION_LESS "3.12.0") - set (MONGOC_ZSTD_LIBRARIES ${ZSTD_LIBRARIES}) + if (MONGOC_ENABLE_STATIC_BUILD) + set (MONGOC_ZSTD_LIBRARIES "zstd::libzstd_static") else () - set (MONGOC_ZSTD_LIBRARIES ${ZSTD_LINK_LIBRARIES}) + set (MONGOC_ZSTD_LIBRARIES "zstd::libzstd_shared") endif () endif() endif() @@ -134,8 +134,8 @@ if (NOT ENABLE_SSL STREQUAL OFF) # Try OpenSSL automatically everywhere but Mac and Windows. if (ENABLE_SSL STREQUAL "OPENSSL" OR (NOT APPLE AND NOT WIN32 AND ENABLE_SSL STREQUAL "AUTO")) - # Sets OPENSSL_FOUND on success. - include (FindOpenSSL) + # Sets OpenSSL_FOUND on success. + find_package(OpenSSL REQUIRED) endif () if (ENABLE_SSL STREQUAL LIBRESSL) @@ -171,7 +171,7 @@ if (NOT ENABLE_SSL STREQUAL OFF) endif () endif () - if (NOT OPENSSL_FOUND AND NOT SECURE_TRANSPORT AND NOT SECURE_CHANNEL AND NOT LIBRESSL) + if (NOT OpenSSL_FOUND AND NOT SECURE_TRANSPORT AND NOT SECURE_CHANNEL AND NOT LIBRESSL) if (ENABLE_SSL STREQUAL AUTO) set (ENABLE_SSL OFF) else () @@ -180,8 +180,8 @@ if (NOT ENABLE_SSL STREQUAL OFF) endif () endif () -if (OPENSSL_FOUND) - if (WIN32 AND OPENSSL_VERSION GREATER 1.1 AND NOT +if (OpenSSL_FOUND) + if (WIN32 AND OpenSSL_VERSION GREATER 1.1 AND NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.7) message (FATAL_ERROR "Building against OpenSSL 1.1.0 and later requires CMake 3.7 or later (hint:" " You can also compile against Windows Secure Transport with -DENABLE_SSL=WINDOWS") @@ -220,7 +220,7 @@ elseif (LIBRESSL) endif () if (ENABLE_CRYPTO_SYSTEM_PROFILE) - if (OPENSSL_FOUND) + if (OpenSSL_FOUND) set (MONGOC_ENABLE_CRYPTO_SYSTEM_PROFILE 1) else () message (FATAL_ERROR "ENABLE_CRYPTO_SYSTEM_PROFILE only available with OpenSSL") @@ -349,10 +349,10 @@ if (ENABLE_TRACING) endif () # Sets SNAPPY_LIBRARIES and SNAPPY_INCLUDE_DIRS. -include (FindSnappy) -if (SNAPPY_INCLUDE_DIRS) +if (ENABLE_SNAPPY) + find_package(Snappy CONFIG REQUIRED) set (MONGOC_ENABLE_COMPRESSION 1) - include_directories ("${SNAPPY_INCLUDE_DIRS}") + set (VCPKG_SNAPPY_LIBRARIES "Snappy::snappy") endif () set (MONGOC_ENABLE_SHM_COUNTERS 0) @@ -393,6 +393,7 @@ if (NOT ENABLE_ICU STREQUAL OFF) endif() if (ICU_FOUND) set (MONGOC_ENABLE_ICU 1) + set(VCPKG_ICU_LIBRARIES "ICU::uc") include_directories ("${ICU_INCLUDE_DIR}") elseif (ENABLE_ICU STREQUAL ON) message (FATAL_ERROR "No ICU library found. If ICU is installed in a non-standard directory, define ICU_ROOT as the ICU installation path.") @@ -623,7 +624,7 @@ if (NOT ENABLE_SSL STREQUAL OFF) ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-ssl.c ) - if (OPENSSL_FOUND) + if (OpenSSL_FOUND) message (STATUS "Compiling against OpenSSL") set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-crypto-openssl.c @@ -633,7 +634,7 @@ if (NOT ENABLE_SSL STREQUAL OFF) ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-openssl.c ${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-ocsp-cache.c ) - set (SSL_LIBRARIES ${OPENSSL_LIBRARIES}) + set (SSL_LIBRARIES "OpenSSL::SSL") include_directories (${OPENSSL_INCLUDE_DIR}) if (WIN32) set (SSL_LIBRARIES ${SSL_LIBRARIES} crypt32.lib) @@ -696,11 +697,11 @@ endif () set (LIBRARIES ${SASL_LIBRARIES} ${SSL_LIBRARIES} ${SHM_LIBRARIES} ${RESOLV_LIBRARIES} - ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} ${MONGOC_ZSTD_LIBRARIES} Threads::Threads ${ICU_LIBRARIES} ${LIBMONGOCRYPT_LIBRARY} + ${VCPKG_SNAPPY_LIBRARIES} ${VCPKG_ZLIB_LIBRARIES} ${MONGOC_ZSTD_LIBRARIES} Threads::Threads ${VCPKG_ICU_LIBRARIES} ${LIBMONGOCRYPT_LIBRARY} ) set (STATIC_LIBRARIES ${SASL_LIBRARIES} ${SSL_LIBRARIES} ${SHM_LIBRARIES} ${RESOLV_LIBRARIES} - ${SNAPPY_LIBRARIES} ${ZLIB_LIBRARIES} ${MONGOC_ZSTD_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ICU_LIBRARIES} ${LIBMONGOCRYPT_LIBRARY} + ${VCPKG_SNAPPY_LIBRARIES} ${VCPKG_ZLIB_LIBRARIES} ${MONGOC_ZSTD_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${VCPKG_ICU_LIBRARIES} ${LIBMONGOCRYPT_LIBRARY} ) if (WIN32) diff --git a/src/libmongoc/src/mongoc-config.cmake b/src/libmongoc/src/mongoc-config.cmake index 9224178e6..6e449c109 100644 --- a/src/libmongoc/src/mongoc-config.cmake +++ b/src/libmongoc/src/mongoc-config.cmake @@ -1,3 +1,20 @@ include(CMakeFindDependencyMacro) find_dependency(bson-1.0 @MONGOC_MAJOR_VERSION@.@MONGOC_MINOR_VERSION@.@MONGOC_MICRO_VERSION@ CONFIG REQUIRED) + +if("@Threads_FOUND@") + find_dependency(Threads REQUIRED) +endif() +if("@ZLIB_FOUND@") + find_dependency(ZLIB REQUIRED) +endif() +if("@zstd_FOUND@") + find_dependency(zstd CONFIG REQUIRED) +endif() +if("@OpenSSL_FOUND@") + find_dependency(OpenSSL REQUIRED) +endif() +if("@Snappy_FOUND@") + find_dependency(Snappy CONFIG REQUIRED) +endif() + include("${CMAKE_CURRENT_LIST_DIR}/mongoc-targets.cmake")