cmake_minimum_required(VERSION 3.5)

project(kiran-screensaver-dialog)

option(HAVE_BIOMETRICS_AUTH "have biometrics auth" OFF)
option(SHOW_VIRTUAL_KEYBOARD "show virtual keyboard" OFF)

#是否显示关机选项
set(CAN_POWER_OFF true CACHE BOOL "shutdown button display")
#是否显示重启选项
set(CAN_REBOOT true CACHE BOOL "reboot button display")
#是否显示挂起选项
set(CAN_SUSPEND true CACHE BOOL "suspend button display")

#是否不存在AA_DisableSessionManager构建选项
set(NO_DISABLE_SESSION_MANAGER false CACHE BOOL "no disable session manager attribute")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

include(GNUInstallDirs)
set(SCREENSAVER_DIALOG_INSTALL ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/)
set(SCREENSAVER_QM_INSTALL ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/translations/)

find_package(PkgConfig REQUIRED)
find_package(Qt5 COMPONENTS Widgets X11Extras DBus Network LinguistTools)

pkg_search_module(GIO_2 REQUIRED gio-2.0)
pkg_search_module(GLIB_2 REQUIRED glib-2.0)
pkg_search_module(X11 REQUIRED x11)
pkg_search_module(XCB REQUIRED xcb)
pkg_search_module(XRANDR REQUIRED xrandr)
pkg_search_module(KLOG REQUIRED klog-qt5)
pkg_search_module(KIRANWIDGETS_QT5 REQUIRED kiranwidgets-qt5)

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

file(GLOB_RECURSE SRC "src/*.cpp" "src/*.h" "src/*.ui")
# 资源文件
file(GLOB_RECURSE RESOURCES "resources/*.qrc")
set( TS_FILES "translations/kiran-screensaver-dialog.zh_CN.ts" )
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES} )

if(HAVE_BIOMETRICS_AUTH)
    add_definitions(-DBIOMETRICS_AUTH)
endif()

if(SHOW_VIRTUAL_KEYBOARD)
    add_definitions(-DVIRTUAL_KEYBOARD)
endif()

if(NO_DISABLE_SESSION_MANAGER)
    add_definitions(-DNO_DISABLE_SESSION_MANAGER)
endif()

include_directories("${CMAKE_BINARY_DIR}")
add_executable(${PROJECT_NAME} ${SRC} ${RESOURCES} ${QM_FILES})
target_link_libraries(${PROJECT_NAME}
        Qt5::Widgets
        Qt5::X11Extras
        Qt5::DBus
        Qt5::Network
        ${GIO_2_LIBRARIES}
        ${GLIB_2_LIBRARIES}
        ${X11_LIBRARIES}
        ${XRANDR_LIBRARIES}
        ${KLOG_LIBRARIES}
        ${KIRANWIDGETS_QT5_LIBRARIES}
        pam)
target_include_directories(${PROJECT_NAME} PRIVATE
        "src"
        "src/dbus-api-wrapper"
        "src/widgets"
        "src/tool"
        "src/tool/single"
        ${GIO_2_INCLUDE_DIRS}
        ${GLIB_2_INCLUDE_DIRS}
        ${KLOG_INCLUDE_DIRS}
        ${KIRANWIDGETS_QT5_INCLUDE_DIRS})

install(TARGETS ${PROJECT_NAME} DESTINATION ${SCREENSAVER_DIALOG_INSTALL})
install(FILES ${QM_FILES} DESTINATION ${SCREENSAVER_QM_INSTALL})

#通过编译选项生成screensaver.ini
configure_file(${CMAKE_SOURCE_DIR}/config/screensaver.ini.in ${CMAKE_BINARY_DIR}/screensaver.ini @ONLY)

#安装kiran-screensaver-dialog的私有的内置配置文件
install(FILES ${CMAKE_BINARY_DIR}/screensaver.ini
        DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/)
