diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cbd50d3c..4b26df08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -192,6 +192,13 @@ jobs: if: ${{ !contains(matrix.image, 'windows') }} # MSYS2 wolfSSL package not built with the OpenSSL compatibility option run: ./tests/cmake/test.sh find_package -DCRYPTO_BACKEND=wolfSSL + - name: 'via find_package (PREFER_CONFIG=ON)' + if: ${{ contains(matrix.image, 'windows') }} + run: | + export TEST_CMAKE_FLAGS_PROVIDER='-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' + export TEST_CMAKE_FLAGS_CONSUMER="${TEST_CMAKE_FLAGS_PROVIDER}" + ./tests/cmake/test.sh find_package -DCRYPTO_BACKEND=mbedTLS + - name: 'via ExternalProject (old cmake)' if: ${{ contains(matrix.image, 'ubuntu') }} run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index ed0725ad..2ce8bad1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -439,7 +439,7 @@ if(CRYPTO_BACKEND STREQUAL "OpenSSL" OR NOT CRYPTO_BACKEND) endif() if(CRYPTO_BACKEND STREQUAL "wolfSSL" OR NOT CRYPTO_BACKEND) - find_package(WolfSSL ${_specific_crypto_requirement}) + find_package(WolfSSL MODULE ${_specific_crypto_requirement}) if(WOLFSSL_FOUND) if(WOLFSSL_VERSION VERSION_LESS 5.4.0) message(FATAL_ERROR "wolfSSL 5.4.0 or greater required") @@ -456,7 +456,7 @@ if(CRYPTO_BACKEND STREQUAL "wolfSSL" OR NOT CRYPTO_BACKEND) endif() if(CRYPTO_BACKEND STREQUAL "Libgcrypt" OR NOT CRYPTO_BACKEND) - find_package(Libgcrypt ${_specific_crypto_requirement}) + find_package(Libgcrypt MODULE ${_specific_crypto_requirement}) if(LIBGCRYPT_FOUND) set(CRYPTO_BACKEND "Libgcrypt") set(CRYPTO_BACKEND_DEFINE "LIBSSH2_LIBGCRYPT") @@ -465,7 +465,7 @@ if(CRYPTO_BACKEND STREQUAL "Libgcrypt" OR NOT CRYPTO_BACKEND) endif() if(CRYPTO_BACKEND STREQUAL "mbedTLS" OR NOT CRYPTO_BACKEND) - find_package(MbedTLS ${_specific_crypto_requirement}) + find_package(MbedTLS MODULE ${_specific_crypto_requirement}) if(MBEDTLS_FOUND) if(MBEDTLS_VERSION VERSION_LESS 3.1.0) message(FATAL_ERROR "mbedTLS 3.1.0 or greater required") diff --git a/cmake/libssh2-config.in.cmake b/cmake/libssh2-config.in.cmake index ecc15a95..6dd43c0e 100644 --- a/cmake/libssh2-config.in.cmake +++ b/cmake/libssh2-config.in.cmake @@ -18,13 +18,13 @@ set(_libssh2_libs "") if("@CRYPTO_BACKEND@" STREQUAL "OpenSSL") find_dependency(OpenSSL) elseif("@CRYPTO_BACKEND@" STREQUAL "wolfSSL") - find_dependency(WolfSSL) + find_dependency(WolfSSL MODULE) list(APPEND _libssh2_libs libssh2::wolfssl) elseif("@CRYPTO_BACKEND@" STREQUAL "Libgcrypt") - find_dependency(Libgcrypt) + find_dependency(Libgcrypt MODULE) list(APPEND _libssh2_libs libssh2::libgcrypt) elseif("@CRYPTO_BACKEND@" STREQUAL "mbedTLS") - find_dependency(MbedTLS) + find_dependency(MbedTLS MODULE) list(APPEND _libssh2_libs libssh2::mbedcrypto) endif() diff --git a/tests/cmake/test.sh b/tests/cmake/test.sh index d47fe3e9..3ef9f088 100755 --- a/tests/cmake/test.sh +++ b/tests/cmake/test.sh @@ -74,13 +74,13 @@ if [ "${mode}" = 'all' ] || [ "${mode}" = 'find_package' ]; then bldp='bld-libssh2' prefix="${PWD}/${bldp}/_pkg" rm -rf "${bldp}" - "${cmake_provider}" -B "${bldp}" -S "${src}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \ + "${cmake_provider}" -B "${bldp}" -S "${src}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} ${TEST_CMAKE_FLAGS_PROVIDER:-} "$@" \ -DCMAKE_INSTALL_PREFIX="${prefix}" "${cmake_provider}" --build "${bldp}" --verbose "${cmake_provider}" --install "${bldp}" bldc='bld-find_package' rm -rf "${bldc}" - "${cmake_consumer}" -B "${bldc}" -G "${gen}" ${TEST_CMAKE_FLAGS:-} \ + "${cmake_consumer}" -B "${bldc}" -G "${gen}" ${TEST_CMAKE_FLAGS:-} ${TEST_CMAKE_FLAGS_CONSUMER:-} \ -DTEST_INTEGRATION_MODE=find_package \ -DCMAKE_PREFIX_PATH="${prefix}/lib/cmake/libssh2" "${cmake_consumer}" --build "${bldc}" --verbose