# SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: GPL-3.0-or-later
cmake_minimum_required(VERSION 3.16)

project("sys-plugin" LANGUAGES C)
set(PLUGIN_NAME "plugin-immutable-read-only-auditor")

find_package(PkgConfig REQUIRED)
pkg_check_modules(Systemd REQUIRED IMPORTED_TARGET libsystemd)
pkg_check_modules(GLib REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(Polkit REQUIRED IMPORTED_TARGET polkit-gobject-1)

# Sources files
file(GLOB_RECURSE SOURCES "*.h" "*.c")

add_library(${PROJECT_NAME} MODULE
    ${SOURCES}
)

# Rename the output file to libplugin-immutable-read-only-auditor.so
set_target_properties(${PROJECT_NAME} PROPERTIES
    OUTPUT_NAME "${PLUGIN_NAME}"
)

target_include_directories(${PROJECT_NAME} PUBLIC
    ${CMAKE_SOURCE_DIR}/src/lib
)

target_link_libraries(${PROJECT_NAME}
    netlink_client
    PkgConfig::Systemd
    PkgConfig::GLib
    PkgConfig::Polkit
    -lpthread
)

# Install plugin shared library
install(TARGETS ${PROJECT_NAME}
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/deepin-service-manager/
)

# Install service manager system config
install(FILES
    ${CMAKE_SOURCE_DIR}/misc/usr/share/deepin-service-manager/system/${PLUGIN_NAME}.json
    DESTINATION share/deepin-service-manager/system/
)

# Install D-Bus system config
install(FILES
    ${CMAKE_SOURCE_DIR}/misc/usr/share/dbus-1/system.d/org.deepin.immutable.ReadOnlyAuditor1.conf
    DESTINATION share/dbus-1/system.d/
)

# Install polkit policy
install(FILES
    ${CMAKE_SOURCE_DIR}/misc/usr/share/polkit-1/actions/org.deepin.immutable.ReadOnlyAuditor1.policy
    DESTINATION share/polkit-1/actions/
)

# Install DSG config
install(FILES
    ${CMAKE_SOURCE_DIR}/misc/usr/share/dsg/configs/org.deepin.immutable.eventd/org.deepin.immutable.read-only-auditor.json
    DESTINATION share/dsg/configs/org.deepin.immutable.eventd/
)
