| 1 | # SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | # CMake Module to handle all the systemd-related checks for Netdata. |
| 3 | |
| 4 | include(CMakePushCheckState) |
| 5 | |
| 6 | macro(detect_systemd) |
| 7 | find_library(SYSTEMD_LIBRARY NAMES systemd) |
| 8 | |
| 9 | set(ENABLE_DSYSTEMD_DBUS NO) |
| 10 | pkg_check_modules(SYSTEMD libsystemd) |
| 11 | |
| 12 | if(SYSTEMD_FOUND) |
| 13 | cmake_push_check_state() |
| 14 | set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};${SYSTEMD_LIBRARIES}") |
| 15 | |
| 16 | check_c_source_compiles(" |
| 17 | #include <systemd/sd-journal.h> |
| 18 | |
| 19 | int main() { |
| 20 | int x = SD_JOURNAL_OS_ROOT; |
| 21 | return 0; |
| 22 | }" HAVE_SD_JOURNAL_OS_ROOT) |
| 23 | |
| 24 | check_symbol_exists(SD_JOURNAL_OS_ROOT "systemd/sd-journal.h" HAVE_SD_JOURNAL_OS_ROOT) |
| 25 | check_symbol_exists(sd_journal_open_files_fd "systemd/sd-journal.h" HAVE_SD_JOURNAL_OPEN_FILES_FD) |
| 26 | check_symbol_exists(sd_journal_restart_fields "systemd/sd-journal.h" HAVE_SD_JOURNAL_RESTART_FIELDS) |
| 27 | check_symbol_exists(sd_journal_enumerate_available_unique "systemd/sd-journal.h" HAVE_SD_JOURNAL_ENUMERATE_AVAILABLE_UNIQUE) |
| 28 | check_symbol_exists(sd_journal_get_seqnum "systemd/sd-journal.h" HAVE_SD_JOURNAL_GET_SEQNUM) |
| 29 | |
| 30 | check_symbol_exists(sd_bus_default_system "systemd/sd-bus.h" HAVE_SD_BUS_DEFAULT_SYSTEM) |
| 31 | check_symbol_exists(sd_bus_call_method "systemd/sd-bus.h" HAVE_SD_BUS_CALL_METHOD) |
| 32 | check_symbol_exists(sd_bus_message_enter_container "systemd/sd-bus.h" HAVE_SD_BUS_MESSAGE_ENTER_CONTAINER) |
| 33 | check_symbol_exists(sd_bus_message_read "systemd/sd-bus.h" HAVE_SD_BUS_MESSAGE_READ) |
| 34 | check_symbol_exists(sd_bus_message_exit_container "systemd/sd-bus.h" HAVE_SD_BUS_MESSAGE_EXIT_CONTAINER) |
| 35 | |
| 36 | cmake_pop_check_state() |
| 37 | set(HAVE_SYSTEMD True) |
| 38 | if(HAVE_SD_BUS_DEFAULT_SYSTEM AND HAVE_SD_BUS_CALL_METHOD AND HAVE_SD_BUS_MESSAGE_ENTER_CONTAINER AND HAVE_SD_BUS_MESSAGE_READ AND HAVE_SD_BUS_MESSAGE_EXIT_CONTAINER) |
| 39 | set(ENABLE_SYSTEMD_DBUS YES) |
| 40 | endif() |
| 41 | endif() |
| 42 | endmacro() |