cmake_minimum_required(VERSION 3.5)

set(PROJ emg-rehab-qt)

project(${PROJ} LANGUAGES CXX VERSION 0.5.1)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

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

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check https://doc.qt.io/qt/deployment-android.html for more information.
# They need to be set before the find_package( ...) calls below.

#if(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
#    endif()
#endif()

# find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets SerialPort PrintSupport REQUIRED)
# find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets SerialPort PrintSupport REQUIRED)

# Support only Qt5 for now
# PrintSupport is required for QCustomPlot 2.1.0
find_package(Qt5 COMPONENTS Widgets SerialPort PrintSupport REQUIRED)
set(QT_VERSION_MAJOR 5)

find_package(QCustomPlot REQUIRED)

set(INFO_HEADER "project-info.hpp")
set(DESKTOP_FILE "emg-rehab-qt.desktop")

configure_file("${INFO_HEADER}.in" "${INFO_HEADER}")
configure_file(${DESKTOP_FILE} ${DESKTOP_FILE} COPYONLY)

set(PROJECT_SOURCES
    main.cpp
    mainwindow.cpp
    mainwindow.h
    serialworker.cpp
    serialworker.h
    ${INFO_HEADER}
    model.qmodel
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(${PROJ}
        ${PROJECT_SOURCES}
    )
else()
    if(ANDROID)
        add_library(${PROJ} SHARED
            ${PROJECT_SOURCES}
        )
    else()
        add_executable(${PROJ}
            ${PROJECT_SOURCES}
        )
    endif()
endif()

target_link_libraries(${PROJ} PRIVATE
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::SerialPort
)

if(TARGET QCustomPlot::QCustomPlot)
    # For newer QCustomPlot versions
    target_link_libraries(${PROJ} PRIVATE QCustomPlot::QCustomPlot)
else()
    # For QCustomPlot versions up to 2.0
    target_link_libraries(${PROJ} PRIVATE ${QCustomPlot_LIBRARIES})
    target_include_directories(${PROJ} PRIVATE ${QCustomPlot_INCLUDE_DIR})
endif()

install(TARGETS ${PROJ})
