summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClemens Lang <clemens.lang@bmw-carit.de>2019-02-08 15:48:15 +0100
committerSimon McVittie <smcv@collabora.com>2019-05-13 10:36:11 +0100
commit6e432ed51e8f9ff62d935a0a568385144d97afbf (patch)
tree4edebd372a316dd5b5ec7eb42bc1261610693c9b
parent7642acca6d20d8c537a7aafe05cefaa8b213d953 (diff)
downloaddbus-6e432ed51e8f9ff62d935a0a568385144d97afbf.tar.gz
cmake: Avoid overwriting PKG_CONFIG_PATH env var
The CMake config file installed by DBus will run in the context of other projects. Consequently, changing the value of the PKG_CONFIG_DIR, PKG_CONFIG_PATH or PKG_CONFIG_LIBDIR environment variables will affect any further calls to pkg-config made by such projects, which can cause problems. A common case of this happening are pkg-config files installed in usr/share/pkgconfig for .pc files that are architecture-independent, as for example systemd does. Avoid clobbering the environment variables by saving and restoring their values. Note that for some of the variables, setting them to an empty string is different from not setting them at all. Signed-off-by: Clemens Lang <clemens.lang@bmw-carit.de> (cherry picked from commit 3525cc045d4c683dfc6048f5be795cc372c323a3) Closes: dbus#267
-rw-r--r--cmake/DBus1Config.pkgconfig.in27
1 files changed, 27 insertions, 0 deletions
diff --git a/cmake/DBus1Config.pkgconfig.in b/cmake/DBus1Config.pkgconfig.in
index 7e090aa5..8c0a25e4 100644
--- a/cmake/DBus1Config.pkgconfig.in
+++ b/cmake/DBus1Config.pkgconfig.in
@@ -10,12 +10,39 @@
get_filename_component(DBus1_PKGCONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../../pkgconfig" ABSOLUTE)
find_package(PkgConfig)
+if(DEFINED ENV{PKG_CONFIG_DIR})
+ set(_dbus_pkgconfig_dir "$ENV{PKG_CONFIG_DIR}")
+endif()
+if(DEFINED ENV{PKG_CONFIG_PATH})
+ set(_dbus_pkgconfig_path "$ENV{PKG_CONFIG_PATH}")
+endif()
+if(DEFINED ENV{PKG_CONFIG_LIBDIR})
+ set(_dbus_pkgconfig_libdir "$ENV{PKG_CONFIG_LIBDIR}")
+endif()
set(ENV{PKG_CONFIG_DIR})
set(ENV{PKG_CONFIG_PATH} ${DBus1_PKGCONFIG_DIR})
set(ENV{PKG_CONFIG_LIBDIR} ${DBus1_PKGCONFIG_DIR})
# for debugging
#set(ENV{PKG_CONFIG_DEBUG_SPEW} 1)
pkg_check_modules(PC_DBUS1 QUIET dbus-1)
+if(DEFINED _dbus_pkgconfig_dir)
+ set(ENV{PKG_CONFIG_DIR} "${_dbus_pkgconfig_dir}")
+else()
+ unset(ENV{PKG_CONFIG_DIR})
+endif()
+if(DEFINED _dbus_pkgconfig_path)
+ set(ENV{PKG_CONFIG_PATH} "${_dbus_pkgconfig_path}")
+else()
+ unset(ENV{PKG_CONFIG_PATH})
+endif()
+if(DEFINED _dbus_pkgconfig_libdir)
+ set(ENV{PKG_CONFIG_LIBDIR} "${_dbus_pkgconfig_libdir}")
+else()
+ unset(ENV{PKG_CONFIG_LIBDIR})
+endif()
+unset(_dbus_pkgconfig_dir)
+unset(_dbus_pkgconfig_path)
+unset(_dbus_pkgconfig_libdir)
set(DBus1_DEFINITIONS ${PC_DBUS1_CFLAGS_OTHER})
# find the real stuff and use pkgconfig variables as hints