cmake_minimum_required(VERSION 3.16)

project(WeatherRoutes VERSION 0.1 LANGUAGES CXX)

# Define versioning information
set(VERSION_CODE 1)  # Change this to your desired version code
set(VERSION_NAME "0.1")  # Your version name

# Include this in the Android section
set(ANDROID_PACKAGE_NAME "com.example.weatherroutes")
set(ANDROID_VERSION_CODE ${VERSION_CODE})
set(ANDROID_VERSION_NAME ${VERSION_NAME})

set(CMAKE_ANDROID_MANIFEST "${CMAKE_CURRENT_SOURCE_DIR}/android/AndroidManifest.xml")


set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(RESOURCE_FILES resources.qrc)

find_package(Qt6 REQUIRED COMPONENTS Quick)
find_package(Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6 REQUIRED COMPONENTS Location)
find_package(Qt6 REQUIRED COMPONENTS Positioning)
find_package(Qt6 REQUIRED COMPONENTS Network)

qt_add_resources(RESOURCES_RCC "${RESOURCE_FILES}")

qt_add_executable(appWeatherRoutes
    main.cpp
    ${RESOURCES_RCC}
)

qt_add_qml_module(appWeatherRoutes
    URI WeatherRoutes
    VERSION 1.0
    QML_FILES
        Main.qml
        SOURCES
        QML_FILES
        QML_FILES qml/WaypointData.qml
        QML_FILES qml/WeatherDetailsView.qml
        QML_FILES qml/CustomInputField.qml
        QML_FILES qml/MapView.qml
        QML_FILES
        QML_FILES qml/HomeScreen.qml
        SOURCES mvc/data/waypoint.h mvc/data/waypoint.cpp
        SOURCES mvc/data/mapdata.cpp mvc/data/mapdata.h
        SOURCES mvc/model/mapdatamodel.h mvc/model/mapdatamodel.cpp
        SOURCES mvc/data/weatherdetailsdata.h mvc/data/weatherdetailsdata.cpp
        SOURCES mvc/enums/weatherstatus.h
        SOURCES mvc/data/weatherdata.h mvc/data/weatherdata.cpp
        SOURCES mvc/controller/weathercontroller.h mvc/controller/weathercontroller.cpp
        SOURCES mvc/controller/networkmanager.h mvc/controller/networkmanager.cpp
        SOURCES mvc/controller/stylecontroller.h mvc/controller/stylecontroller.cpp
)

target_include_directories(appWeatherRoutes
    PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/mvc
)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(appWeatherRoutes PROPERTIES
#    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appWeatherRoutes
    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(appWeatherRoutes PRIVATE Qt6::Quick Qt6::Location Qt6::Positioning)
set(CMAKE_AUTORCC ON)

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