cmake_minimum_required(VERSION 3.10)

set(PROJECT_N kylin-treasurebox-service)

project(${PROJECT_N} VERSION 1.0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-lto -g -Wall -Wextra -Wpedantic -fstack-protector-strong -Wl,-z,noexecstack -Wl,-z,relro -fPIE -pie -Wl,-z,now -D_FORTIFY_SOURCE=2 -ftrapv")
endif()

find_package(PkgConfig)
find_package(Qt5 COMPONENTS Core DBus LinguistTools REQUIRED)

file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
add_executable(${PROJECT_N} ${SOURCES})
target_link_libraries(${PROJECT_N} PRIVATE Qt5::Core Qt5::DBus)

pkg_check_modules(GLIB2_0 REQUIRED IMPORTED_TARGET glib-2.0)
target_include_directories(${PROJECT_N} PRIVATE ${GLIB2_0_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${GLIB2_0_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${GLIB2_0_LIBRARIES})

pkg_check_modules(GIO2_0 REQUIRED IMPORTED_TARGET gio-2.0)
target_include_directories(${PROJECT_N} PRIVATE ${GIO2_0_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${GIO2_0_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${GIO2_0_LIBRARIES})

pkg_check_modules(GIO_UNIX_2_0 REQUIRED IMPORTED_TARGET gio-unix-2.0)
target_include_directories(${PROJECT_N} PRIVATE ${GIO_UNIX_2_0_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${GIO_UNIX_2_0_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${GIO_UNIX_2_0_LIBRARIES})

file(GLOB TRANSLATIONS ${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts)
set_source_files_properties(${TRANSLATIONS} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/translations)
qt5_add_translation(QM_FILES ${TRANSLATIONS})
target_sources(${PROJECT_N} PRIVATE ${QM_FILES})

qt5_add_resources(QRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translations/service_res.qrc)
target_sources(${PROJECT_N} PRIVATE ${QRC_FILES})

set_target_properties(${PROJECT_N} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
install(TARGETS ${PROJECT_N} DESTINATION /usr/bin/)