From d8cb7b3e0cc7097c0d6968e70c47f6449f728725 Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Sun, 18 Dec 2016 21:53:19 -0500 Subject: [PATCH] cmake: add FindSYSTEMD module Fixes: https://github.com/transmission/transmission/issues/117 --- CMakeLists.txt | 4 +--- cmake/FindSYSTEMD.cmake | 20 ++++++++++++++++++++ daemon/CMakeLists.txt | 11 +++++------ 3 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 cmake/FindSYSTEMD.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index bdeea1d7a..50dabe752 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -373,9 +373,7 @@ endif() if(WITH_SYSTEMD) tr_get_required_flag(WITH_SYSTEMD SYSTEMD_IS_REQUIRED) - - pkg_check_modules(SYSTEMD ${SYSTEMD_IS_REQUIRED} libsystemd) - + find_package(SYSTEMD) tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_FOUND SYSTEMD_IS_REQUIRED) endif() diff --git a/cmake/FindSYSTEMD.cmake b/cmake/FindSYSTEMD.cmake new file mode 100644 index 000000000..c5dfb3dc8 --- /dev/null +++ b/cmake/FindSYSTEMD.cmake @@ -0,0 +1,20 @@ +if(UNIX) + find_package(PkgConfig QUIET) + pkg_check_modules(PC_SYSTEMD QUIET libsystemd) +endif() + +find_path(SYSTEMD_INCLUDE_DIR NAMES systemd/sd-daemon.h HINTS ${PC_SYSTEMD_INCLUDE_DIRS}) +find_library(SYSTEMD_LIBRARY NAMES systemd HINTS ${PC_SYSTEMD_LIBRARY_DIRS}) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(SYSTEMD + REQUIRED_VARS + SYSTEMD_LIBRARY + SYSTEMD_INCLUDE_DIR +) + +mark_as_advanced(SYSTEMD_INCLUDE_DIR SYSTEMD_LIBRARY) + +set(SYSTEMD_INCLUDE_DIRS ${SYSTEMD_INCLUDE_DIR}) +set(SYSTEMD_LIBRARIES ${SYSTEMD_LIBRARY}) diff --git a/daemon/CMakeLists.txt b/daemon/CMakeLists.txt index 8ec3b9558..2ecf83dc3 100644 --- a/daemon/CMakeLists.txt +++ b/daemon/CMakeLists.txt @@ -36,17 +36,16 @@ add_executable(${TR_NAME}-daemon ${${PROJECT_NAME}_HEADERS} ${${PROJECT_NAME}_WIN32_RC_FILE}) -set_target_properties(${TR_NAME}-daemon PROPERTIES - COMPILE_FLAGS "${SYSTEMD_CFLAGS}" - LINK_FLAGS "${SYSTEMD_LDFLAGS}" -) - target_link_libraries(${TR_NAME}-daemon ${TR_NAME} ${EVENT2_LIBRARIES} - ${SYSTEMD_LIBRARIES} ) +if(WITH_SYSTEMD) + target_include_directories(${TR_NAME}-daemon PRIVATE ${SYSTEMD_INCLUDE_DIRS}) + target_link_libraries(${TR_NAME}-daemon ${SYSTEMD_LIBRARIES}) +endif() + tr_win32_app_info(${PROJECT_NAME}_remote_WIN32_RC_FILE "Transmission Utility ('remote')" "${TR_NAME}-remote"