cmake_minimum_required(VERSION 3.5)
project(bsdisks)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

find_package(Threads)
find_package(Qt6Core)
find_package(Qt6DBus)
find_package(PolkitQt6-1 REQUIRED)

option(INSTALL_MAN_PAGES "Install man pages" ON)

add_definitions(-DINSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\")

add_executable(bsdisks
    main.cpp
    adaptors.cpp
    block.cpp
    blockfilesystem.cpp
    blockpartition.cpp
    blockparttable.cpp
    drive.cpp
    geomprober.cpp
    filesystemprober.cpp
    camcontrolprober.cpp
    zfsprober.cpp
    manageradaptor.cpp
    AuthQueue.cpp
    objectmanager.cpp
    DBusSavedContext.cpp
    devdthread.cpp

    camcontrol.c
)

target_link_libraries(bsdisks Qt6::DBus
                              Qt6::Core
                              PolkitQt6-1::Core
                              Threads::Threads)
target_link_libraries(bsdisks cam geom)

install(TARGETS bsdisks
    RUNTIME DESTINATION bin
)

configure_file(org.freedesktop.UDisks2.service.in org.freedesktop.UDisks2.service)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.freedesktop.UDisks2.service
    DESTINATION share/dbus-1/system-services
)
install(FILES org.freedesktop.UDisks2.conf
    DESTINATION share/dbus-1/system.d
)

install(FILES bsdisks.conf.sample
    DESTINATION etc/
)

install(FILES bsdisks-syslog.conf.sample
    DESTINATION etc/syslog.d/
)
install(FILES bsdisks-newsyslog.conf.sample
    DESTINATION etc/newsyslog.conf.d/
)

install(FILES bsdisks.8
    DESTINATION share/man/man8/
)
install(FILES bsdisks.conf.5
    DESTINATION share/man/man5/
)
install(FILES org.freedesktop.udisks2.policy
    DESTINATION share/polkit-1/actions
)
