cmake_minimum_required(VERSION 3.5)

# 调试多任务视图需要取消注释下面
add_definitions("-Wall -g")

project(ukui-window-switch-wlcom)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(KF5_DEP_VERSION "5.54.0")

find_package(ECM 5.54.0 NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)

find_package(X11 MODULE)
find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER)
message("XCB:"${X11_FOUND}, ${XCB_XCB_FOUND}, ${XCB_COMPOSITE_FOUND}, ${XCB_DAMAGE_FOUND})
if(X11_FOUND AND XCB_XCB_FOUND)
    set(HAVE_X11 1)
endif()
if(HAVE_X11 AND XCB_COMPOSITE_FOUND AND XCB_DAMAGE_FOUND)
    set(HAVE_XCB_COMPOSITE 1)
endif()

find_package(OpenGL)

find_package(EGL MODULE)
message("EGL:"${EGL_FOUND})
if (${EGL_FOUND})
    set(HAVE_EGL 1)
endif()

message("OPENGL:"${OPENGL_FOUND},${Qt5Gui_OPENGL_IMPLEMENTATION})
if(OPENGL_FOUND AND (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL"))
    set(HAVE_GLX ${HAVE_X11})
else()
    set(HAVE_GLX 0)
endif()

message("MACRO:"${HAVE_X11},${HAVE_XCB_COMPOSITE},${HAVE_EGL},${HAVE_GLX})

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../globalconfig.h.in ${CMAKE_CURRENT_SOURCE_DIR}/../globalconfig.h)

find_package(Qt5Quick REQUIRED)
find_package(Qt5QuickWidgets REQUIRED)
find_package(KF5Config REQUIRED)
find_package(KF5GlobalAccel REQUIRED)
find_package(KF5I18n REQUIRED)
find_package(PkgConfig REQUIRED)
find_package(Qt5LinguistTools REQUIRED)
find_package(Qt5 REQUIRED NO_MODULE COMPONENTS X11Extras Concurrent)

pkg_check_modules(KDK REQUIRED kysdk-sysinfo)
pkg_check_modules(DATACOLLECT REQUIRED kysdk-datacollect)
pkg_check_modules(KYSDKWAYLANDHELPER_PKG kysdk-waylandhelper)

include_directories(${KDK_INCLUDE_DIRS})
include_directories(${DATACOLLECT_INCLUDE_DIRS})
include_directories(${WAYLANDHELPER_INCLUDE_DIRS})
include_directories(${OPENGL_INCLUDE_DIR})

set(WLCSRCS main.cpp
            ../desktopbackground.cpp
            ../icontheme.cpp
            multitaskviewmanagerbywlcom.cpp
            dbusservice.cpp
            ../multitaskviewmodel.cpp
            ../multitaskviewmodelhandler.h
            multitaskviewmodelbywlcomhandler.cpp
            context.cpp
            toplevel.cpp
            workspace.cpp
            output.cpp
            thumbnail.cpp
            ThumbnailItem.cpp
)

# translation
find_package(QT NAMES Qt6 Qt5 COMPONENTS LinguistTools REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS LinguistTools REQUIRED)

set(TS_FILES)
set(QM_FILES)

file(GLOB QML_FILES "../qml/*.qml")

list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_zh_CN.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_bo_CN.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_zh_Hant.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_ug.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_mn.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_ky.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_kk.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_fr.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_es.ts)
list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../ukui-window-switch_de.ts)

set_source_files_properties(${TS_FILES}
    PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../)

qt5_create_translation(QM_FILES ${TS_FILES} ${QML_FILES})

add_custom_target(wlupdate_task DEPENDS ${TS_FILES})

add_custom_target(wlrelease_task DEPENDS ${QM_FILES})

add_subdirectory(qtsingleapplication)
include_directories(qtsingleapplication/src)

qt5_add_resources(WLCSRCS ../data.qrc)

add_executable(ukui-window-switch-wlcom
    ${WLCSRCS}
    ${QM_FILES}
)

target_include_directories(ukui-window-switch-wlcom PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS})
target_link_directories(ukui-window-switch-wlcom PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS}  KF5::WindowSystem)

target_link_libraries(
    ukui-window-switch-wlcom
    PUBLIC
    Qt5::Core
    Qt5::GuiPrivate
    Qt5::Widgets
    Qt5::Quick
    Qt5::QuickWidgets
    PRIVATE
    KF5::ConfigCore
    KF5::WindowSystem
    KF5::CoreAddons
    KF5::GlobalAccel
    Qt5::X11Extras
    Qt5::Concurrent
    qtsingleapplication
    kywc
    ${QGSettings_LIBRARIES}
    ${KYSDKWAYLANDHELPER_PKG_LIBRARIES}
    ${KDK_LINK_LIBRARIES}
    ${DATACOLLECT_LINK_LIBRARIES}
    ${OPENGL_gl_LIBRARY}
    ${EGL_LIBRARY}
)

install(TARGETS ukui-window-switch-wlcom ${INSTALL_TARGETS_DEFAULT_ARGS})
