# 工程设置
cmake_minimum_required(VERSION 3.19)
project(uos-recovery C CXX)

set(CMAKE_CXX_STANDARD_REQUIRED 17)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

# 启用qt moc机制
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(ENV{LC_ALL} "C.UTF-8")
configure_file(${CMAKE_SOURCE_DIR}/src/utils/environments.h.in ${CMAKE_SOURCE_DIR}/src/utils/environments.h @ONLY)

if (CMAKE_BUILD_TYPE MATCHES Debug)
    # 默认优化编译参数
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2 ")
    #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-result -Wno-switch-default -Wno-padded")
    # 安全编译参数
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -z noexecstack -pie -fPIC -z relro -z now -fstack-protector-all")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -z noexecstack -pie -fPIC -z relro -z now -fstack-protector-all")
    add_definitions("-DTEST_DATA_DIR=\"${CMAKE_SOURCE_DIR}/src/test/testData/\"")
    #add_definitions("-DUI_TEST")
    option(TEST on)
else()
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -z noexecstack -pie -fPIC -z relro -z now -fstack-protector-all")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -z noexecstack -pie -fPIC -z relro -z now -fstack-protector-all")
    add_definitions("-DQT_MESSAGELOGCONTEXT")
    option(TEST off)
endif()

# generate qm
#execute_process(COMMAND bash "translate_generation.sh"
#        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})


set(UTILS_DIR ${CMAKE_SOURCE_DIR}/src/utils)
set(TEST_DIR ${CMAKE_SOURCE_DIR}/src/test)
set(SERVER_DIR ${CMAKE_SOURCE_DIR}/src/uos-recovery-service)
set(GUI_DIR ${CMAKE_SOURCE_DIR}/src/uos-recovery-gui)
set(RECOVERYTOOL_DIR ${CMAKE_SOURCE_DIR}/src/uos-recovery-tool)

set(QT6_PATH /usr/lib/qt6/)
#execute_process(COMMAND bash "-c" "qdbuscpp2xml -A ${SERVER_DIR}/RecoveryService.h -o com.deepin.daemon.uosrecovery.xml"
#        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})

execute_process(COMMAND bash "-c" "/usr/lib/qt6/bin/qdbusxml2cpp  ${CMAKE_SOURCE_DIR}/com.deepin.daemon.uosrecovery.xml -i RecoveryService.h -a RecoveryAdaptor"
        WORKING_DIRECTORY ${SERVER_DIR})

execute_process(COMMAND bash "-c" "/usr/lib/qt6/bin/qdbusxml2cpp ${CMAKE_SOURCE_DIR}/com.deepin.daemon.uosrecovery.xml -i utils/global.h -p RecoveryProxy"
        WORKING_DIRECTORY ${GUI_DIR})

add_subdirectory(src/uos-recovery-gui)
add_subdirectory(src/uos-recovery-service)
add_subdirectory(src/uos-recovery-tool)

if (CMAKE_BUILD_TYPE MATCHES Debug)
    add_subdirectory(src/test)
endif()
