cmake_minimum_required(VERSION 3.7)

project(dde-control-center)

find_package(DtkCMake REQUIRED)
include(Dart)
include(CTest)

add_compile_definitions(CVERSION="${CVERSION}")

# Install settings
include(GNUInstallDirs)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    set(CMAKE_INSTALL_PREFIX /usr)
endif ()

# 增加安全编译参数
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all")
set(CMAKE_EXE_LINKER_FLAGS  "-z relro -z now -z noexecstack -pie")

if (NOT (${CMAKE_BUILD_TYPE} MATCHES "Debug"))
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast")

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

# Test architecture
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "sw_64")
    # add compiler flags -mieee for mathmatic
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mieee")
endif()

set(STRONG_PASSWORD false)
set(AllowEnableMultiScaleRatio false)
set(AllowCloudSync true)
set(TESTING_SERVER "https://insider.deepin.org")

configure_file(files/dde-control-center.conf.in files/dde-control-center.conf @ONLY)

add_definitions(-DWINDOW_MODE)

add_subdirectory("src/frame")
add_subdirectory("src/reboot-reminder-dialog")
add_subdirectory("src/reset-password-dialog")
add_subdirectory("src/develop-tool")
add_subdirectory("tests")

if (NOT DEFINED DISABLE_RECOVERY)
    add_subdirectory("abrecovery")
endif()

file(GLOB DOCS_FILES "docs/*")
file(GLOB HEADERS "include/*")

## qm files
file(GLOB QM_FILES "translations/*.qm")
install(FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/dde-control-center/translations)

#desktop
install(FILES dde-control-center.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES dde-control-center-wapper DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

#schemas
install(FILES com.deepin.dde.control-center.gschema.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/glib-2.0/schemas)

#dde-grand-search-daemon plugins
install(FILES com.deepin.dde-grand-search.dde-control-center-setting.conf DESTINATION lib/${CMAKE_LIBRARY_ARCHITECTURE}/dde-grand-search-daemon/plugins/searcher)

#service
install(FILES com.deepin.dde.ControlCenter.service DESTINATION ${CMAKE_INSTALL_DATADIR}/dbus-1/services)

#docs
install(FILES ${DOCS_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/dman/dde-control-center)

#datebases
install(FILES data/timezone.db DESTINATION ${CMAKE_INSTALL_DATADIR}/dde-control-center)

# dict file
install(FILES data/MainEnglishDictionary_ProbWL.txt DESTINATION ${CMAKE_INSTALL_DATADIR}/dict)

# conf file
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/files/dde-control-center.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/dde-control-center)

# polkit policy file
install(FILES com.deepin.controlcenter.develop.policy DESTINATION ${CMAKE_INSTALL_DATADIR}/polkit-1/actions)
if (OS_DEEPIN_PROFESSIONAL)
    if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
        install(FILES com.deepin.controlcenter.addomain.policy DESTINATION ${CMAKE_INSTALL_DATADIR}/polkit-1/actions)
    endif()
endif()

# dev files
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/dde-control-center)
install(DIRECTORY ${HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR})

include(CMakePackageConfigHelpers)
configure_package_config_file(DdeControlCenterConfig.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake
    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter
    PATH_VARS INCLUDE_INSTALL_DIR)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter)
