Browse Source

Merge topic 'FindPkgConfig-system-cflags'

252c66c697 FindPkgConfig: Tolerate PKG_CONFIG_SYSTEM_INCLUDE_PATH in environment
4507883135 Tests: Rename RunCMake.FindPkgConfig LIBRARY_PATH case to SYSTEM_PATH

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !8768
Brad King 2 years ago
parent
commit
1c5e4b60b1

+ 13 - 1
Modules/FindPkgConfig.cmake

@@ -425,13 +425,19 @@ macro(_pkg_set_path_internal)
     unset(_pkgconfig_path)
   endif()
 
-  # Tell pkg-config not to strip any -L paths so we can search them all.
+  # Tell pkg-config not to strip any -I or -L paths so we can search them all.
   if(DEFINED ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS})
     set(_pkgconfig_allow_system_libs_old "$ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS}")
   else()
     unset(_pkgconfig_allow_system_libs_old)
   endif()
   set(ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS} 1)
+  if(DEFINED ENV{PKG_CONFIG_ALLOW_SYSTEM_CFLAGS})
+    set(_pkgconfig_allow_system_cflags_old "$ENV{PKG_CONFIG_ALLOW_SYSTEM_CFLAGS}")
+  else()
+    unset(_pkgconfig_allow_system_cflags_old)
+  endif()
+  set(ENV{PKG_CONFIG_ALLOW_SYSTEM_CFLAGS} 1)
 endmacro()
 
 macro(_pkg_restore_path_internal)
@@ -445,6 +451,12 @@ macro(_pkg_restore_path_internal)
   else()
     unset(ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS})
   endif()
+  if(DEFINED _pkgconfig_allow_system_cflags_old)
+    set(ENV{PKG_CONFIG_ALLOW_SYSTEM_CFLAGS} "${_pkgconfig_allow_system_cflags_old}")
+    unset(_pkgconfig_allow_system_cflags_old)
+  else()
+    unset(ENV{PKG_CONFIG_ALLOW_SYSTEM_CFLAGS})
+  endif()
 
   unset(_extra_paths)
   unset(_pkgconfig_path_old)

+ 0 - 3
Tests/RunCMake/FindPkgConfig/FindPkgConfig_LIBRARY_PATH-stdout.txt

@@ -1,3 +0,0 @@
--- ZOT_LIBRARIES='zot'
--- ZOT_LINK_LIBRARIES='[^']*/Tests/RunCMake/FindPkgConfig/FindPkgConfig_LIBRARY_PATH-build/root/lib/prefix-zot-suffix'
--- ZOT_LDFLAGS='-L[^']*/Tests/RunCMake/FindPkgConfig/FindPkgConfig_LIBRARY_PATH-build/root/lib;-lzot'

+ 4 - 0
Tests/RunCMake/FindPkgConfig/FindPkgConfig_SYSTEM_PATH-stdout.txt

@@ -0,0 +1,4 @@
+-- ZOT_LIBRARIES='zot'
+-- ZOT_LINK_LIBRARIES='[^']*/Tests/RunCMake/FindPkgConfig/FindPkgConfig_SYSTEM_PATH-build/root/lib/prefix-zot-suffix'
+-- ZOT_LDFLAGS='-L[^']*/Tests/RunCMake/FindPkgConfig/FindPkgConfig_SYSTEM_PATH-build/root/lib;-lzot'
+-- ZOT_CFLAGS='-I[^']*/Tests/RunCMake/FindPkgConfig/FindPkgConfig_SYSTEM_PATH-build/root/include'

+ 8 - 0
Tests/RunCMake/FindPkgConfig/FindPkgConfig_LIBRARY_PATH.cmake → Tests/RunCMake/FindPkgConfig/FindPkgConfig_SYSTEM_PATH.cmake

@@ -3,16 +3,19 @@ find_package(PkgConfig REQUIRED)
 set(ROOT "${CMAKE_CURRENT_BINARY_DIR}/root")
 string(REPLACE " " "\\ " ESCAPED_ROOT "${ROOT}")
 set(LIB_DIR "${ROOT}/lib")
+set(INCLUDE_DIR "${ROOT}/include")
 set(PKGCONFIG_DIR "${LIB_DIR}/pkgconfig")
 
 file(WRITE "${PKGCONFIG_DIR}/zot.pc" "
 prefix=${ESCAPED_ROOT}
 libdir=\${prefix}/lib
+includedir=\${prefix}/include
 
 Name: Zot
 Description: Dummy package to test LIBRARY_DIR support
 Version: 1.0
 Libs: -L\${libdir} -lzot
+Cflags: -I\${includedir}
 ")
 
 # Create a "library" file to find in libdir.
@@ -22,9 +25,13 @@ file(WRITE "${LIB_DIR}/prefix-zot-suffix")
 
 # 'pkg-config --libs' drops -L flags in PKG_CONFIG_SYSTEM_LIBRARY_PATH by default.
 set(ENV{PKG_CONFIG_SYSTEM_LIBRARY_PATH} "${LIB_DIR}")
+# 'pkg-config --cflags' drops -I flags in PKG_CONFIG_SYSTEM_INCLUDE_PATH by default.
+set(ENV{PKG_CONFIG_SYSTEM_INCLUDE_PATH} "${INCLUDE_DIR}")
 
 # 'pkgconf --libs' also drops -L flags in LIBRARY_PATH by default.
 set(ENV{LIBRARY_PATH}                   "${LIB_DIR}")
+# 'pkgconf --cflags' also drops -I flags in CPATH by default.
+set(ENV{CPATH}                          "${INCLUDE_DIR}")
 
 set(ENV{PKG_CONFIG_PATH}                "${PKGCONFIG_DIR}")
 pkg_check_modules(ZOT REQUIRED zot)
@@ -32,3 +39,4 @@ pkg_check_modules(ZOT REQUIRED zot)
 message(STATUS "ZOT_LIBRARIES='${ZOT_LIBRARIES}'")
 message(STATUS "ZOT_LINK_LIBRARIES='${ZOT_LINK_LIBRARIES}'")
 message(STATUS "ZOT_LDFLAGS='${ZOT_LDFLAGS}'")
+message(STATUS "ZOT_CFLAGS='${ZOT_CFLAGS}'")

+ 1 - 1
Tests/RunCMake/FindPkgConfig/RunCMakeTest.cmake

@@ -59,6 +59,6 @@ Libs: -L\${libdir}
   run_cmake(FindPkgConfig_GET_MATCHING_MODULE_NAME)
   run_cmake(FindPkgConfig_empty_target)
   if(NOT PKG_CONFIG_DONT_SUPPORT_SPACES_IN_PATH)
-    run_cmake(FindPkgConfig_LIBRARY_PATH)
+    run_cmake(FindPkgConfig_SYSTEM_PATH)
   endif()
 endif ()