cmake_minimum_required(VERSION 3.16)

project(dt14 VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 REQUIRED COMPONENTS Quick Mqtt WebSockets)

qt_standard_project_setup(REQUIRES 6.8)

# ============ OPENSSL PER ANDROID ============
if(ANDROID)
    if(DEFINED ENV{HOME})
        set(ANDROID_OPENSSL_PATH "$ENV{HOME}/Android/android_openssl")
        if(EXISTS "${ANDROID_OPENSSL_PATH}/android_openssl.cmake")
            include(${ANDROID_OPENSSL_PATH}/android_openssl.cmake)
        else()
            message(WARNING "OpenSSL per Android no trobat a ${ANDROID_OPENSSL_PATH}")
        endif()
    endif()
endif()
# =============================================

qt_add_executable(appdt14
    main.cpp
    settingsmanager.h
    settingsmanager.cpp
    mqttbasic.h
    mqttbasic.cpp
    mqttcontroller.h
    mqttcontroller.cpp
    websocketiodevice.h
    websocketiodevice.cpp
)

qt_add_qml_module(appdt14
    URI dt14
    VERSION 1.0
    QML_FILES
        Main.qml
        ConfigPage.qml
        ConnectionPanel.qml
        InteractiveButton.qml
        InteractiveLed.qml
        InteractiveOled.qml
        RangeSelector.qml
        InteractiveLdr.qml
        InteractiveBme280.qml
)

qt_add_resources(appdt14 "imageresources"
    PREFIX "/img"
    BASE "imatges"
    FILES
        imatges/IoT-02.png
)

set_target_properties(appdt14 PROPERTIES
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(appdt14
    PRIVATE 
    Qt6::Quick
    Qt6::Mqtt
    Qt6::WebSockets
)

# ============ AFEGEIX LLIBRERIES OPENSSL PER ANDROID ============
if(ANDROID)
    if(COMMAND add_android_openssl_libraries)
        add_android_openssl_libraries(appdt14)
    endif()
endif()
# ================================================================

include(GNUInstallDirs)
install(TARGETS appdt14
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
