From: Viktor Szakats Date: Tue, 25 Feb 2025 15:36:21 +0000 (+0100) Subject: build: cmake multi-pkg-config detection improvements (brotli, ldap, mbedtls) X-Git-Tag: curl-8_13_0~228 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b501976a9adcf20218ffb96d9041806432227e4;p=thirdparty%2Fcurl.git build: cmake multi-pkg-config detection improvements (brotli, ldap, mbedtls) Apply downstream patch from the vcpkg project: - cmake/FindBrotli: streamline detecting multiple pkg-config modules. Add `libbrotlicommon` to `Requires.private` in `libcurl.pc`. Apply the above idea to the rest of multi-module dependencies: - cmake/FindMbedTLS: streamline detecting multiple pkg-config modules Add `mbedx509`, `mbedcrypto` to `Requires.private` in `libcurl.pc`. - cmake/FindLDAP: streamline detecting multiple pkg-config modules And sync these changes with autotools, and add `libbrotlicommon`, `mbedx509`, `mbedcrypto` to `Requires.private`. Co-authored-by: Kai Pastor Ref: https://github.com/microsoft/vcpkg/pull/43819 Closes #16479 --- diff --git a/CMake/FindBrotli.cmake b/CMake/FindBrotli.cmake index b72f1906ff..5b280dd3fe 100644 --- a/CMake/FindBrotli.cmake +++ b/CMake/FindBrotli.cmake @@ -39,24 +39,18 @@ # - `BROTLI_CFLAGS`: Required compiler flags. # - `BROTLI_VERSION`: Version of brotli. -set(BROTLI_PC_REQUIRES "libbrotlidec") +set(BROTLI_PC_REQUIRES "libbrotlidec" "libbrotlicommon") # order is significant: brotlidec then brotlicommon if(CURL_USE_PKGCONFIG AND NOT DEFINED BROTLI_INCLUDE_DIR AND NOT DEFINED BROTLICOMMON_LIBRARY AND NOT DEFINED BROTLIDEC_LIBRARY) find_package(PkgConfig QUIET) - pkg_check_modules(BROTLI "libbrotlicommon") - pkg_check_modules(BROTLIDEC ${BROTLI_PC_REQUIRES}) + pkg_check_modules(BROTLI ${BROTLI_PC_REQUIRES}) endif() -if(BROTLI_FOUND AND BROTLIDEC_FOUND) +if(BROTLI_FOUND) set(Brotli_FOUND TRUE) - list(APPEND BROTLIDEC_LIBRARIES ${BROTLI_LIBRARIES}) # order is significant: brotlidec then brotlicommon - list(REVERSE BROTLIDEC_LIBRARIES) - list(REMOVE_DUPLICATES BROTLIDEC_LIBRARIES) - list(REVERSE BROTLIDEC_LIBRARIES) - set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARIES}) string(REPLACE ";" " " BROTLI_CFLAGS "${BROTLI_CFLAGS}") message(STATUS "Found Brotli (via pkg-config): ${BROTLI_INCLUDE_DIRS} (found version \"${BROTLI_VERSION}\")") else() diff --git a/CMake/FindLDAP.cmake b/CMake/FindLDAP.cmake index 4f18e04b59..bebad673cb 100644 --- a/CMake/FindLDAP.cmake +++ b/CMake/FindLDAP.cmake @@ -39,7 +39,7 @@ # - `LDAP_CFLAGS`: Required compiler flags. # - `LDAP_VERSION`: Version of ldap. -set(LDAP_PC_REQUIRES "ldap") +set(LDAP_PC_REQUIRES "ldap" "lber") if(CURL_USE_PKGCONFIG AND NOT DEFINED LDAP_INCLUDE_DIR AND @@ -47,14 +47,9 @@ if(CURL_USE_PKGCONFIG AND NOT DEFINED LDAP_LBER_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(LDAP ${LDAP_PC_REQUIRES}) - pkg_check_modules(LDAP_LBER "lber") endif() -if(LDAP_FOUND AND LDAP_LBER_FOUND) - list(APPEND LDAP_LIBRARIES ${LDAP_LBER_LIBRARIES}) - list(REVERSE LDAP_LIBRARIES) - list(REMOVE_DUPLICATES LDAP_LIBRARIES) - list(REVERSE LDAP_LIBRARIES) +if(LDAP_FOUND) string(REPLACE ";" " " LDAP_CFLAGS "${LDAP_CFLAGS}") message(STATUS "Found LDAP (via pkg-config): ${LDAP_INCLUDE_DIRS} (found version \"${LDAP_VERSION}\")") else() diff --git a/CMake/FindMbedTLS.cmake b/CMake/FindMbedTLS.cmake index 83f13712e4..d5af4d6e77 100644 --- a/CMake/FindMbedTLS.cmake +++ b/CMake/FindMbedTLS.cmake @@ -46,7 +46,7 @@ if(DEFINED MBEDTLS_INCLUDE_DIRS AND NOT DEFINED MBEDTLS_INCLUDE_DIR) unset(MBEDTLS_INCLUDE_DIRS) endif() -set(MBEDTLS_PC_REQUIRES "mbedtls") +set(MBEDTLS_PC_REQUIRES "mbedtls" "mbedx509" "mbedcrypto") if(CURL_USE_PKGCONFIG AND NOT DEFINED MBEDTLS_INCLUDE_DIR AND @@ -55,16 +55,10 @@ if(CURL_USE_PKGCONFIG AND NOT DEFINED MBEDCRYPTO_LIBRARY) find_package(PkgConfig QUIET) pkg_check_modules(MBEDTLS ${MBEDTLS_PC_REQUIRES}) - pkg_check_modules(MBEDX509 "mbedx509") - pkg_check_modules(MBEDCRYPTO "mbedcrypto") endif() -if(MBEDTLS_FOUND AND MBEDX509_FOUND AND MBEDCRYPTO_FOUND) +if(MBEDTLS_FOUND) set(MbedTLS_FOUND TRUE) - list(APPEND MBEDTLS_LIBRARIES ${MBEDX509_LIBRARIES} ${MBEDCRYPTO_LIBRARIES}) - list(REVERSE MBEDTLS_LIBRARIES) - list(REMOVE_DUPLICATES MBEDTLS_LIBRARIES) - list(REVERSE MBEDTLS_LIBRARIES) string(REPLACE ";" " " MBEDTLS_CFLAGS "${MBEDTLS_CFLAGS}") message(STATUS "Found MbedTLS (via pkg-config): ${MBEDTLS_INCLUDE_DIRS} (found version \"${MBEDTLS_VERSION}\")") else() diff --git a/configure.ac b/configure.ac index 25dc959037..45ac6a3ba6 100644 --- a/configure.ac +++ b/configure.ac @@ -1522,7 +1522,7 @@ if test X"$OPT_BROTLI" != Xno; then AC_MSG_NOTICE([Added $DIR_BROTLI to CURL_LIBRARY_PATH]) fi fi - LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libbrotlidec" + LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE libbrotlidec libbrotlicommon" else dnl no brotli, revert back to clean variables LDFLAGS=$CLEANLDFLAGS diff --git a/m4/curl-mbedtls.m4 b/m4/curl-mbedtls.m4 index 27117c0f16..519c29d79a 100644 --- a/m4/curl-mbedtls.m4 +++ b/m4/curl-mbedtls.m4 @@ -104,7 +104,7 @@ if test "x$OPT_MBEDTLS" != xno; then fi dnl FIXME: Enable when mbedTLS was detected via pkg-config if false; then - LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mbedtls" + LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mbedtls mbedx509 mbedcrypto" fi fi