Commit 6e432ed5 authored by Clemens Lang's avatar Clemens Lang Committed by Simon McVittie

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: 's avatarClemens Lang <clemens.lang@bmw-carit.de>
(cherry picked from commit 3525cc04)
Closes: #267
parent 7642acca
Pipeline #36452 passed with stage
in 11 minutes and 18 seconds
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment