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

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

# 启用qt moc机制
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

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(UIMGINSTALLERR_DIR ${CMAKE_SOURCE_DIR}/src/uimg-installer)
set(RECOVERYTOOL_DIR ${CMAKE_SOURCE_DIR}/src/uos-recovery-tool)

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" "qdbusxml2cpp ${CMAKE_SOURCE_DIR}/com.deepin.daemon.uosrecovery.xml -i RecoveryService.h -a RecoveryAdaptor"
        WORKING_DIRECTORY ${SERVER_DIR})

execute_process(COMMAND bash "-c" "qdbusxml2cpp ${CMAKE_SOURCE_DIR}/com.deepin.daemon.uosrecovery.xml -p RecoveryProxy"
        WORKING_DIRECTORY ${GUI_DIR})

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

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