cmake_minimum_required(VERSION 3.14)

project(ukui-sni VERSION 1.0 LANGUAGES C CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

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

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 COMPONENTS Core DBus Network Gui Widgets Quick Test REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core DBus Network Gui Widgets Quick Test REQUIRED)

if (QT_VERSION_MAJOR EQUAL 5)
    find_package(Qt5 COMPONENTS X11Extras REQUIRED)
endif()

if (QT_VERSION_MAJOR EQUAL 5)
    set(UKUI_SNI_QT_PC_PKGS Qt5Xdg)
else ()
    set(UKUI_SNI_QT_PC_PKGS Qt6Xdg)
endif()

find_package(PkgConfig REQUIRED)
set(UKUI_SNI_EXTERNAL_LIBS "")
if (QT_VERSION_MAJOR EQUAL "5")
    set(UKUI_SNI_PC_PKGS gsettings-qt ${UKUI_SNI_QT_PC_PKGS})
elseif (QT_VERSION_MAJOR EQUAL "6")
    set(UKUI_SNI_PC_PKGS gsettings-qt6 ${UKUI_SNI_QT_PC_PKGS})
endif()
foreach(external_lib IN ITEMS ${UKUI_SNI_PC_PKGS})
        pkg_check_modules(${external_lib} REQUIRED ${external_lib})
        if(${${external_lib}_FOUND})
                include_directories(${${external_lib}_INCLUDE_DIRS})
                link_directories(${${external_lib}_LIBRARY_DIRS})
                list(APPEND UKUI_SNI_EXTERNAL_LIBS ${${external_lib}_LIBRARIES})
        endif()
endforeach()
message(STATUS "External libraries found: ${UKUI_SNI_EXTERNAL_LIBS}")

if(BUILD_TEST)
    add_compile_options(-fprofile-arcs -ftest-coverage)
    add_link_options(-fprofile-arcs -ftest-coverage)
endif()

add_subdirectory(status-notifier-watcher)
add_subdirectory(status-notifier-host)
add_subdirectory(ukui-system-tray)
add_subdirectory(xembed-sni-proxy)
if(BUILD_TEST)
    enable_testing()
    add_subdirectory(common/autotest)
    add_subdirectory(test)
    add_subdirectory(status-notifier-host/autotest)
    add_subdirectory(status-notifier-watcher/autotest)
    add_subdirectory(xembed-sni-proxy/autotest)
endif()
