1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-21 06:10:16 +08:00

Modules: Guard calls to pkg_check_modules

Before calling pkg_check_modules, modules must check PKG_CONFIG_FOUND.
When FindPkgConfig.cmake is loaded, pkg_check_modules is always defined
regardless of pkg-config being present. However, the whole module might
be disabled on user request with CMAKE_DISABLE_FIND_PACKAGE_PkgConfig.
This must not break Find modules which just look for a hint or similar.
This commit is contained in:
Kai Pastor
2024-08-07 20:11:41 +02:00
parent aa6b2180bf
commit 25b947589a
11 changed files with 50 additions and 28 deletions

View File

@@ -293,12 +293,14 @@ if(BLA_PREFER_PKGCONFIG)
set(BLA_PKGCONFIG_BLAS "blas") set(BLA_PKGCONFIG_BLAS "blas")
endif() endif()
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
pkg_check_modules(PKGC_BLAS QUIET ${BLA_PKGCONFIG_BLAS}) if(PKG_CONFIG_FOUND)
if(PKGC_BLAS_FOUND) pkg_check_modules(PKGC_BLAS QUIET ${BLA_PKGCONFIG_BLAS})
set(BLAS_FOUND ${PKGC_BLAS_FOUND}) if(PKGC_BLAS_FOUND)
set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}") set(BLAS_FOUND ${PKGC_BLAS_FOUND})
_add_blas_target() set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}")
return() _add_blas_target()
return()
endif()
endif() endif()
endif() endif()

View File

@@ -49,8 +49,9 @@ cmake_policy(PUSH)
cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n> cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_EXPAT QUIET expat) pkg_check_modules(PC_EXPAT QUIET expat)
endif()
# Look for the header file. # Look for the header file.
find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS}) find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS})

View File

@@ -40,7 +40,9 @@ cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
# use pkg-config to get the directories and then use these values # use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls # in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
pkg_check_modules(PKG_FONTCONFIG QUIET fontconfig) if(PKG_CONFIG_FOUND)
pkg_check_modules(PKG_FONTCONFIG QUIET fontconfig)
endif()
set(Fontconfig_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER}) set(Fontconfig_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER})
set(Fontconfig_VERSION ${PKG_FONTCONFIG_VERSION}) set(Fontconfig_VERSION ${PKG_FONTCONFIG_VERSION})

View File

@@ -81,10 +81,11 @@ endif()
# This will return ``GSL_INCLUDEDIR`` and ``GSL_LIBDIR`` used below. # This will return ``GSL_INCLUDEDIR`` and ``GSL_LIBDIR`` used below.
if( GSL_USE_PKGCONFIG ) if( GSL_USE_PKGCONFIG )
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
pkg_check_modules( GSL QUIET gsl ) if(PKG_CONFIG_FOUND)
pkg_check_modules( GSL QUIET gsl )
if( EXISTS "${GSL_INCLUDEDIR}" ) if( EXISTS "${GSL_INCLUDEDIR}" )
get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE) get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE)
endif()
endif() endif()
endif() endif()

View File

@@ -43,7 +43,9 @@ if (NOT WIN32)
# in the find_path() and find_library() calls # in the find_path() and find_library() calls
# also fills in GNUTLS_DEFINITIONS, although that isn't normally useful # also fills in GNUTLS_DEFINITIONS, although that isn't normally useful
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
PKG_CHECK_MODULES(PC_GNUTLS QUIET gnutls) if(PKG_CONFIG_FOUND)
PKG_CHECK_MODULES(PC_GNUTLS QUIET gnutls)
endif()
set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER}) set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER})
set(GNUTLS_VERSION ${PC_GNUTLS_VERSION}) set(GNUTLS_VERSION ${PC_GNUTLS_VERSION})
# keep for backward compatibility # keep for backward compatibility

View File

@@ -115,7 +115,9 @@ find_package(PkgConfig QUIET)
function(FIND_IMAGEMAGICK_API component header) function(FIND_IMAGEMAGICK_API component header)
set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE) set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE)
pkg_check_modules(PC_${component} QUIET ${component}) if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_${component} QUIET ${component})
endif()
find_path(ImageMagick_${component}_INCLUDE_DIR find_path(ImageMagick_${component}_INCLUDE_DIR
NAMES ${header} NAMES ${header}

View File

@@ -289,15 +289,17 @@ if(BLA_PREFER_PKGCONFIG)
set(BLA_PKGCONFIG_LAPACK "lapack") set(BLA_PKGCONFIG_LAPACK "lapack")
endif() endif()
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
pkg_check_modules(PKGC_LAPACK QUIET ${BLA_PKGCONFIG_LAPACK}) if(PKG_CONFIG_FOUND)
if(PKGC_LAPACK_FOUND) pkg_check_modules(PKGC_LAPACK QUIET ${BLA_PKGCONFIG_LAPACK})
set(LAPACK_FOUND TRUE) if(PKGC_LAPACK_FOUND)
set(LAPACK_LIBRARIES "${PKGC_LAPACK_LINK_LIBRARIES}") set(LAPACK_FOUND TRUE)
if (BLAS_LIBRARIES) set(LAPACK_LIBRARIES "${PKGC_LAPACK_LINK_LIBRARIES}")
list(APPEND LAPACK_LIBRARIES "${BLAS_LIBRARIES}") if (BLAS_LIBRARIES)
list(APPEND LAPACK_LIBRARIES "${BLAS_LIBRARIES}")
endif()
_add_lapack_target()
return()
endif() endif()
_add_lapack_target()
return()
endif() endif()
endif() endif()

View File

@@ -58,7 +58,9 @@ cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
# use pkg-config to get the directories and then use these values # use pkg-config to get the directories and then use these values
# in the find_path() and find_library() calls # in the find_path() and find_library() calls
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0) if(PKG_CONFIG_FOUND)
PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
endif()
find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
HINTS HINTS

View File

@@ -51,7 +51,9 @@ cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
# use pkg-config to get the directories and then use these values # use pkg-config to get the directories and then use these values
# in the find_path() and find_library() calls # in the find_path() and find_library() calls
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
PKG_CHECK_MODULES(PC_LIBXSLT QUIET libxslt) if(PKG_CONFIG_FOUND)
PKG_CHECK_MODULES(PC_LIBXSLT QUIET libxslt)
endif()
set(LIBXSLT_DEFINITIONS ${PC_LIBXSLT_CFLAGS_OTHER}) set(LIBXSLT_DEFINITIONS ${PC_LIBXSLT_CFLAGS_OTHER})
find_path(LIBXSLT_INCLUDE_DIR NAMES libxslt/xslt.h find_path(LIBXSLT_INCLUDE_DIR NAMES libxslt/xslt.h
@@ -75,7 +77,9 @@ find_library(LIBXSLT_LIBRARY NAMES xslt libxslt
set(LIBXSLT_LIBRARIES ${LIBXSLT_LIBRARY}) set(LIBXSLT_LIBRARIES ${LIBXSLT_LIBRARY})
PKG_CHECK_MODULES(PC_LIBXSLT_EXSLT QUIET libexslt) if(PKG_CONFIG_FOUND)
PKG_CHECK_MODULES(PC_LIBXSLT_EXSLT QUIET libexslt)
endif()
set(LIBXSLT_EXSLT_DEFINITIONS ${PC_LIBXSLT_EXSLT_CFLAGS_OTHER}) set(LIBXSLT_EXSLT_DEFINITIONS ${PC_LIBXSLT_EXSLT_CFLAGS_OTHER})
find_path(LIBXSLT_EXSLT_INCLUDE_DIR NAMES libexslt/exslt.h find_path(LIBXSLT_EXSLT_INCLUDE_DIR NAMES libexslt/exslt.h

View File

@@ -38,7 +38,9 @@ This will define the following variables in your project:
# Use pkg-config to get the directories and then use these values # Use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls # in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
pkg_check_modules(PKG_Libinput QUIET libinput) if(PKG_CONFIG_FOUND)
pkg_check_modules(PKG_Libinput QUIET libinput)
endif()
set(Libinput_COMPILE_OPTIONS ${PKG_Libinput_CFLAGS_OTHER}) set(Libinput_COMPILE_OPTIONS ${PKG_Libinput_CFLAGS_OTHER})
set(Libinput_VERSION ${PKG_Libinput_VERSION}) set(Libinput_VERSION ${PKG_Libinput_VERSION})

View File

@@ -207,7 +207,9 @@ endfunction()
if (UNIX) if (UNIX)
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
pkg_check_modules(_OPENSSL QUIET openssl) if(PKG_CONFIG_FOUND)
pkg_check_modules(_OPENSSL QUIET openssl)
endif()
endif () endif ()
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES