cmake_minimum_required(VERSION 3.10)

set(PROJECT_N kylin-badblock-scan-tool)

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()

file(GLOB SOURCES
    ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/../*.cpp
)
add_executable(${PROJECT_N} ${SOURCES})

find_package(PkgConfig)
find_package(Qt5 COMPONENTS Core Widgets DBus Network LinguistTools REQUIRED)
find_package(KF5WindowSystem)
target_link_libraries(${PROJECT_NAME} PRIVATE KF5::WindowSystem)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Widgets Qt5::DBus Qt5::Network)

pkg_check_modules(QGSETTINGS REQUIRED IMPORTED_TARGET gsettings-qt)
target_include_directories(${PROJECT_N} PRIVATE ${QGSETTINGS_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${QGSETTINGS_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${QGSETTINGS_LIBRARIES})

pkg_check_modules(KYSDK_ALM REQUIRED IMPORTED_TARGET kysdk-alm)
target_include_directories(${PROJECT_N} PRIVATE ${KYSDK_ALM_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${KYSDK_ALM_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${KYSDK_ALM_LIBRARIES})

pkg_check_modules(KYSDK_QTWIDGETS REQUIRED IMPORTED_TARGET kysdk-qtwidgets)
target_include_directories(${PROJECT_N} PRIVATE ${KYSDK_QTWIDGETS_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${KYSDK_QTWIDGETS_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${KYSDK_QTWIDGETS_LIBRARIES})

pkg_check_modules(KYSDK_WAYLANDHELPER REQUIRED IMPORTED_TARGET kysdk-waylandhelper)
target_include_directories(${PROJECT_N} PRIVATE ${KYSDK_WAYLANDHELPER_INCLUDE_DIRS})
target_link_directories(${PROJECT_N} PRIVATE ${KYSDK_WAYLANDHELPER_LIBRARY_DIRS})
target_link_libraries(${PROJECT_N} PRIVATE ${KYSDK_WAYLANDHELPER_LIBRARIES})

# 添加现有的 .qm 文件到目标
file(GLOB EXISTING_QM_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../translations/*.qm)
target_sources(${PROJECT_N} PRIVATE ${EXISTING_QM_FILES})

qt5_add_resources(QRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../translations/app_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/)