summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Pastor <dg0yt@darc.de>2024-08-07 18:11:41 (GMT)
committerKai Pastor <dg0yt@darc.de>2024-08-07 18:11:43 (GMT)
commit25b947589a165a4bba486842dd11bfb3217b146e (patch)
tree54a33fc4700e21206c745368baae24230dbfde4c
parentaa6b2180bf9926e62641871908ae059c19ddb3a3 (diff)
downloadCMake-25b947589a165a4bba486842dd11bfb3217b146e.zip
CMake-25b947589a165a4bba486842dd11bfb3217b146e.tar.gz
CMake-25b947589a165a4bba486842dd11bfb3217b146e.tar.bz2
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.
-rw-r--r--Modules/FindBLAS.cmake14
-rw-r--r--Modules/FindEXPAT.cmake5
-rw-r--r--Modules/FindFontconfig.cmake4
-rw-r--r--Modules/FindGSL.cmake9
-rw-r--r--Modules/FindGnuTLS.cmake4
-rw-r--r--Modules/FindImageMagick.cmake4
-rw-r--r--Modules/FindLAPACK.cmake20
-rw-r--r--Modules/FindLibXml2.cmake4
-rw-r--r--Modules/FindLibXslt.cmake8
-rw-r--r--Modules/FindLibinput.cmake4
-rw-r--r--Modules/FindOpenSSL.cmake4
11 files changed, 51 insertions, 29 deletions
diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake
index 2fc01d0..0bbd5a8 100644
--- a/Modules/FindBLAS.cmake
+++ b/Modules/FindBLAS.cmake
@@ -293,12 +293,14 @@ if(BLA_PREFER_PKGCONFIG)
set(BLA_PKGCONFIG_BLAS "blas")
endif()
find_package(PkgConfig QUIET)
- pkg_check_modules(PKGC_BLAS QUIET ${BLA_PKGCONFIG_BLAS})
- if(PKGC_BLAS_FOUND)
- set(BLAS_FOUND ${PKGC_BLAS_FOUND})
- set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}")
- _add_blas_target()
- return()
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PKGC_BLAS QUIET ${BLA_PKGCONFIG_BLAS})
+ if(PKGC_BLAS_FOUND)
+ set(BLAS_FOUND ${PKGC_BLAS_FOUND})
+ set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}")
+ _add_blas_target()
+ return()
+ endif()
endif()
endif()
diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake
index 04a8715..825b7a6 100644
--- a/Modules/FindEXPAT.cmake
+++ b/Modules/FindEXPAT.cmake
@@ -49,8 +49,9 @@ cmake_policy(PUSH)
cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
find_package(PkgConfig QUIET)
-
-pkg_check_modules(PC_EXPAT QUIET expat)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_EXPAT QUIET expat)
+endif()
# Look for the header file.
find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS})
diff --git a/Modules/FindFontconfig.cmake b/Modules/FindFontconfig.cmake
index 9cce952..1cd84c1 100644
--- a/Modules/FindFontconfig.cmake
+++ b/Modules/FindFontconfig.cmake
@@ -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
# in the FIND_PATH() and FIND_LIBRARY() calls
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_VERSION ${PKG_FONTCONFIG_VERSION})
diff --git a/Modules/FindGSL.cmake b/Modules/FindGSL.cmake
index e9d8109..3bb9272 100644
--- a/Modules/FindGSL.cmake
+++ b/Modules/FindGSL.cmake
@@ -81,10 +81,11 @@ endif()
# This will return ``GSL_INCLUDEDIR`` and ``GSL_LIBDIR`` used below.
if( GSL_USE_PKGCONFIG )
find_package(PkgConfig QUIET)
- pkg_check_modules( GSL QUIET gsl )
-
- if( EXISTS "${GSL_INCLUDEDIR}" )
- get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE)
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules( GSL QUIET gsl )
+ if( EXISTS "${GSL_INCLUDEDIR}" )
+ get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE)
+ endif()
endif()
endif()
diff --git a/Modules/FindGnuTLS.cmake b/Modules/FindGnuTLS.cmake
index 782a72b..e4c42f3 100644
--- a/Modules/FindGnuTLS.cmake
+++ b/Modules/FindGnuTLS.cmake
@@ -43,7 +43,9 @@ if (NOT WIN32)
# in the find_path() and find_library() calls
# also fills in GNUTLS_DEFINITIONS, although that isn't normally useful
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_VERSION ${PC_GNUTLS_VERSION})
# keep for backward compatibility
diff --git a/Modules/FindImageMagick.cmake b/Modules/FindImageMagick.cmake
index 50f6e46..66e65ad 100644
--- a/Modules/FindImageMagick.cmake
+++ b/Modules/FindImageMagick.cmake
@@ -115,7 +115,9 @@ find_package(PkgConfig QUIET)
function(FIND_IMAGEMAGICK_API component header)
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
NAMES ${header}
diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake
index bbf25b6..b237a90 100644
--- a/Modules/FindLAPACK.cmake
+++ b/Modules/FindLAPACK.cmake
@@ -289,15 +289,17 @@ if(BLA_PREFER_PKGCONFIG)
set(BLA_PKGCONFIG_LAPACK "lapack")
endif()
find_package(PkgConfig QUIET)
- pkg_check_modules(PKGC_LAPACK QUIET ${BLA_PKGCONFIG_LAPACK})
- if(PKGC_LAPACK_FOUND)
- set(LAPACK_FOUND TRUE)
- set(LAPACK_LIBRARIES "${PKGC_LAPACK_LINK_LIBRARIES}")
- if (BLAS_LIBRARIES)
- list(APPEND LAPACK_LIBRARIES "${BLAS_LIBRARIES}")
- endif()
- _add_lapack_target()
- return()
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PKGC_LAPACK QUIET ${BLA_PKGCONFIG_LAPACK})
+ if(PKGC_LAPACK_FOUND)
+ set(LAPACK_FOUND TRUE)
+ set(LAPACK_LIBRARIES "${PKGC_LAPACK_LINK_LIBRARIES}")
+ if (BLAS_LIBRARIES)
+ list(APPEND LAPACK_LIBRARIES "${BLAS_LIBRARIES}")
+ endif()
+ _add_lapack_target()
+ return()
+ endif()
endif()
endif()
diff --git a/Modules/FindLibXml2.cmake b/Modules/FindLibXml2.cmake
index 1c5f9be..cc2d630 100644
--- a/Modules/FindLibXml2.cmake
+++ b/Modules/FindLibXml2.cmake
@@ -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
# in the find_path() and find_library() calls
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
HINTS
diff --git a/Modules/FindLibXslt.cmake b/Modules/FindLibXslt.cmake
index 1154ae1..11d12cb 100644
--- a/Modules/FindLibXslt.cmake
+++ b/Modules/FindLibXslt.cmake
@@ -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
# in the find_path() and find_library() calls
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})
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})
-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})
find_path(LIBXSLT_EXSLT_INCLUDE_DIR NAMES libexslt/exslt.h
diff --git a/Modules/FindLibinput.cmake b/Modules/FindLibinput.cmake
index 88d5b2f..291d828 100644
--- a/Modules/FindLibinput.cmake
+++ b/Modules/FindLibinput.cmake
@@ -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
# in the FIND_PATH() and FIND_LIBRARY() calls
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_VERSION ${PKG_Libinput_VERSION})
diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake
index 01b18f3..33a0765 100644
--- a/Modules/FindOpenSSL.cmake
+++ b/Modules/FindOpenSSL.cmake
@@ -207,7 +207,9 @@ endfunction()
if (UNIX)
find_package(PkgConfig QUIET)
- pkg_check_modules(_OPENSSL QUIET openssl)
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(_OPENSSL QUIET openssl)
+ endif()
endif ()
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES