cmake_minimum_required(VERSION 3.14)

project(rosa-id-daemon LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core DBus Network)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core DBus Network)

set (ROSA_ID_DAEMON_SRC
    main.cpp
    rosaiddaemon.h rosaiddaemon.cpp
    settings.h settings.cpp
    network/apiclient.h network/apiclient.cpp
    network/randomizedtimer.h network/randomizedtimer.cpp
    network/requests/requestbase.h network/requests/requestbase.cpp
    network/requests/replybase.h network/requests/replybase.cpp
    network/requests/refreshtoken.h
    network/requests/rosaid/requestregisteraccount.h network/requests/rosaid/requestregisteraccount.cpp
    network/requests/rosaid/replyregisteraccount.h network/requests/rosaid/replyregisteraccount.cpp
    network/requests/rosaid/requestauthorize.h network/requests/rosaid/requestauthorize.cpp
    network/requests/rosaid/replyauthorize.h network/requests/rosaid/replyauthorize.cpp
    network/requests/rosaid/requestverifyotp.h network/requests/rosaid/requestverifyotp.cpp
    network/requests/rosaid/replyverifyotp.h network/requests/rosaid/replyverifyotp.cpp
    network/requests/rosaid/requestdeleteaccount.h
    network/requests/rosaid/replydeleteaccount.h
    network/requests/rosaid/userinfo.h
    network/requests/rosaid/user.h
    network/requests/rosaid/changepassword.h
    network/requests/rosaid/getotp.h
    network/requests/rosaid/saveuserinfo.h
    network/requests/rosaid/constants.h
    network/requests/rosaid/edituserinfo.h
    network/requests/rosaid/changecontactinformation.h
    network/requests/rosaid/handbooks.h
    network/requests/rosaid/handbookStructures.h
    network/requests/rosaid/documents.h
    network/requests/rosaid/avatar.h
    network/requests/rosaid/getresetpasswordotp.h
    network/requests/rosaid/restorepassword.h
    network/requests/rosaid/getregistrationconfirmation.h
    network/requests/rosaid/sendfeedback.h
    network/requests/rosaid/getoauth2code.h
)

qt5_add_dbus_adaptor(ROSA_ID_DAEMON_SRC ${CMAKE_CURRENT_SOURCE_DIR}/rosaid_daemon.xml rosaiddaemon.h RosaIdDaemon)

add_executable(rosa-id-daemon
  ${ROSA_ID_DAEMON_SRC}
)
target_link_libraries(rosa-id-daemon
    Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::DBus
    Qt${QT_VERSION_MAJOR}::Network
)

install(TARGETS rosa-id-daemon
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

install(FILES rosa-id-daemon.service
    DESTINATION ${CMAKE_PREFIX_PATH}/usr/lib/systemd/user
)

install(FILES rosa-id-daemon.preset
    DESTINATION ${CMAKE_PREFIX_PATH}/usr/lib/systemd/user-preset
)
