https://github.com/Kistler-Group/sdbus-cpp/commit/fb9e4ae37152648a67814458d3ff673b1d3ca089 https://github.com/Kistler-Group/sdbus-cpp/pull/378 https://bugs.gentoo.org/917678 https://bugs.gentoo.org/922490 From 674d370470a62c670bf457896561cc36668c04c6 Mon Sep 17 00:00:00 2001 From: FuchtelJockel <25532271+FuchtelJockel@users.noreply.github.com> Date: Mon, 20 Nov 2023 14:41:59 +0100 Subject: [PATCH] fix: correctly add libsystemd dependency to pkgconfig (#378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: correctly add libsystemd dependency to pkgconfig * refactor: solve sd-bus dependencies uniformly --------- Co-authored-by: Stanislav Angelovič --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,8 @@ include(GNUInstallDirs) # Installation directories for `install` command and pkg # PERFORMING CHECKS & PREPARING THE DEPENDENCIES #------------------------------- -set(LIBSYSTEMD "systemd") +set(LIBSYSTEMD_IMPL "systemd") +set(LIBSYSTEMD_LIB "libsystemd") option(BUILD_LIBSYSTEMD "Build libsystemd static library and incorporate it into libsdbus-c++" OFF) @@ -23,13 +24,15 @@ if(NOT BUILD_LIBSYSTEMD) message(WARNING "libsystemd not found, checking for libelogind instead") pkg_check_modules(Systemd IMPORTED_TARGET GLOBAL libelogind>=236) if(TARGET PkgConfig::Systemd) - set(LIBSYSTEMD "elogind") + set(LIBSYSTEMD_IMPL "elogind") + set(LIBSYSTEMD_LIB "libelogind") string(REPLACE "." ";" VERSION_LIST ${Systemd_VERSION}) list(GET VERSION_LIST 0 Systemd_VERSION) else() message(WARNING "libelogind not found, checking for basu instead") pkg_check_modules(Systemd IMPORTED_TARGET GLOBAL basu) - set(LIBSYSTEMD "basu") + set(LIBSYSTEMD_IMPL "basu") + set(LIBSYSTEMD_LIB "basu") # https://git.sr.ht/~emersion/basu/commit/d4d185d29a26 set(Systemd_VERSION "240") endif() @@ -125,8 +128,8 @@ add_library(sdbus-c++-objlib OBJECT ${SDBUSCPP_SRCS}) target_compile_definitions(sdbus-c++-objlib PRIVATE BUILD_LIB=1 LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION} - SDBUS_${LIBSYSTEMD} - SDBUS_HEADER=<${LIBSYSTEMD}/sd-bus.h>) + SDBUS_${LIBSYSTEMD_IMPL} + SDBUS_HEADER=<${LIBSYSTEMD_IMPL}/sd-bus.h>) target_include_directories(sdbus-c++-objlib PUBLIC $ $) if(BUILD_SHARED_LIBS) @@ -236,6 +239,7 @@ if(BUILD_SHARED_LIBS AND (BUILD_LIBSYSTEMD OR Systemd_LINK_LIBRARIES MATCHES "/l else() set(PKGCONFIG_REQS "") endif() +set(PKGCONFIG_DEPS ${LIBSYSTEMD_LIB}) configure_file(pkgconfig/sdbus-c++.pc.in pkgconfig/sdbus-c++.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/sdbus-c++.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev) --- a/pkgconfig/sdbus-c++.pc.in +++ b/pkgconfig/sdbus-c++.pc.in @@ -5,7 +5,7 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: @PROJECT_NAME@ Description: C++ library on top of sd-bus, a systemd D-Bus library -Requires@PKGCONFIG_REQS@: @LIBSYSTEMD@ +Requires@PKGCONFIG_REQS@: @PKGCONFIG_DEPS@ Version: @SDBUSCPP_VERSION@ Libs: -L${libdir} -l@PROJECT_NAME@ Cflags: -I${includedir} --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -106,7 +106,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) add_executable(sdbus-c++-unit-tests ${UNITTESTS_SRCS}) target_compile_definitions(sdbus-c++-unit-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION} - SDBUS_HEADER=<${LIBSYSTEMD}/sd-bus.h>) + SDBUS_HEADER=<${LIBSYSTEMD_IMPL}/sd-bus.h>) target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib GTest::gmock) add_executable(sdbus-c++-integration-tests ${INTEGRATIONTESTS_SRCS}) -- 2.43.0