From 87e5269c69157c071fbe7f62f6b4c0b76cd2c713 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Thu, 31 Jan 2019 11:34:47 +0100 Subject: CMake: rewrite FindSystemd.cmake file Clarify that this is only needed for the sdjournal extcap interface and report the found version in the CMake output. Change-Id: I40bc540631bda32d0b92e4fcd59d8c1726606d86 Reviewed-on: https://code.wireshark.org/review/31834 Petri-Dish: Peter Wu Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu --- CMakeLists.txt | 5 ++++ cmake/modules/FindSystemd.cmake | 64 +++++++++++++++++++---------------------- extcap/CMakeLists.txt | 3 -- 3 files changed, 35 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a9482b3a97..7b222c8817 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1473,6 +1473,11 @@ set_package_properties(CARES PROPERTIES URL "https://c-ares.haxx.se/" PURPOSE "DNS name resolution for captures" ) +set_package_properties(Systemd PROPERTIES + URL "https://freedesktop.org/wiki/Software/systemd/" + DESCRIPTION "System and Service Manager (libraries)" + PURPOSE "Support for systemd journal extcap interface (sdjournal)" +) string(TOUPPER "${CMAKE_BUILD_TYPE}" _build_type) message(STATUS "C-Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_build_type}}") diff --git a/cmake/modules/FindSystemd.cmake b/cmake/modules/FindSystemd.cmake index 0ddf4f7ff4..6162d0d605 100644 --- a/cmake/modules/FindSystemd.cmake +++ b/cmake/modules/FindSystemd.cmake @@ -1,41 +1,37 @@ -# Copied from https://github.com/Cloudef/wlc/blob/master/CMake/FindSystemd.cmake -#.rst: -# FindSystemd -# ------- # -# Find Systemd library +# - Find systemd libraries # -# Try to find Systemd library on UNIX systems. The following values are defined -# -# :: -# -# SYSTEMD_FOUND - True if Systemd is available -# SYSTEMD_INCLUDE_DIRS - Include directories for Systemd -# SYSTEMD_LIBRARIES - List of libraries for Systemd -# SYSTEMD_DEFINITIONS - List of definitions for Systemd -# -#============================================================================= -# Copyright (c) 2015 Jari Vetoniemi -# -# Distributed under the OSI-approved BSD License (the "License"); -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= +# SYSTEMD_INCLUDE_DIRS - where to find systemd/sd-journal.h, etc. +# SYSTEMD_LIBRARIES - List of libraries when using libsystemd. +# SYSTEMD_FOUND - True if libsystemd is found. -include(FeatureSummary) -set_package_properties(Systemd PROPERTIES - URL "http://freedesktop.org/wiki/Software/systemd/" - DESCRIPTION "System and Service Manager") +pkg_search_module(PC_SYSTEMD QUIET libsystemd) -find_package(PkgConfig) -pkg_check_modules(PC_SYSTEMD QUIET libsystemd) -find_library(SYSTEMD_LIBRARIES NAMES systemd ${PC_SYSTEMD_LIBRARY_DIRS}) -find_path(SYSTEMD_INCLUDE_DIRS systemd/sd-login.h HINTS ${PC_SYSTEMD_INCLUDE_DIRS}) +find_path(SYSTEMD_INCLUDE_DIR + NAMES + systemd/sd-journal.h + HINTS + ${PC_SYSTEMD_INCLUDE_DIRS} +) -set(SYSTEMD_DEFINITIONS ${PC_SYSTEMD_CFLAGS_OTHER}) +find_library(SYSTEMD_LIBRARY + NAMES + systemd + HINTS + ${PC_SYSTEMD_LIBRARY_DIRS} +) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(SYSTEMD DEFAULT_MSG SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS) -mark_as_advanced(SYSTEMD_INCLUDE_DIRS SYSTEMD_LIBRARIES SYSTEMD_DEFINITIONS) +find_package_handle_standard_args(SYSTEMD + REQUIRED_VARS SYSTEMD_LIBRARY SYSTEMD_INCLUDE_DIR + VERSION_VAR PC_SYSTEMD_VERSION) + +if(SYSTEMD_FOUND) + set(SYSTEMD_LIBRARIES ${SYSTEMD_LIBRARY}) + set(SYSTEMD_INCLUDE_DIRS ${SYSTEMD_INCLUDE_DIR}) +else() + set(SYSTEMD_LIBRARIES) + set(SYSTEMD_INCLUDE_DIRS) +endif() + +mark_as_advanced(SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS) diff --git a/extcap/CMakeLists.txt b/extcap/CMakeLists.txt index d0ae9cbec3..3e59e7df90 100644 --- a/extcap/CMakeLists.txt +++ b/extcap/CMakeLists.txt @@ -257,11 +257,8 @@ if(BUILD_sdjournal AND SYSTEMD_FOUND) set_extcap_executable_properties(sdjournal) target_link_libraries(sdjournal ${sdjournal_LIBS}) target_include_directories(sdjournal SYSTEM PRIVATE ${SYSTEMD_INCLUDE_DIRS}) - target_compile_definitions(sdjournal PRIVATE ${SYSTEMD_DEFINITIONS}) install(TARGETS sdjournal RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR}) add_dependencies(extcaps sdjournal) -elseif (BUILD_sdjournal) - #message( WARNING "Cannot find libsystemd, cannot build sdjournal" ) endif() # -- cgit v1.2.3