cmake_minimum_required(VERSION 3.16)

project(Minecraft_launcher VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

# CorePrivate нужен ради QZipReader — им распаковываются нативные библиотеки LWJGL.
find_package(Qt6 REQUIRED COMPONENTS Quick QuickControls2 Core CorePrivate Gui Network)

qt_standard_project_setup(REQUIRES 6.8)

qt_add_executable(appMinecraft_launcher
    main.cpp
)

qt_add_qml_module(appMinecraft_launcher
    URI Minecraft_launcher
    SOURCES
        launcherbackend.h
        launcherbackend.cpp
        launcherpaths.h
        launcherpaths.cpp
        minecraftversion.h
        minecraftversion.cpp
        javalocator.h
        javalocator.cpp
        authservice.h
        authservice.cpp
        gamelauncher.h
        gamelauncher.cpp
        versionmanifestservice.h
        versionmanifestservice.cpp
        versioninstaller.h
        versioninstaller.cpp
        modloader.h
        modloaderversionservice.h
        modloaderversionservice.cpp
        modloaderinstaller.h
        modloaderinstaller.cpp
        buildarchiveworker.h
        buildarchiveworker.cpp
        buildswitcher.h
        buildswitcher.cpp
    QML_FILES
        Main.qml
        DarkCombo.qml
        VersionPickerDialog.qml
        LabelledField.qml
        BuildsDialog.qml
        LoaderRow.qml
        ProgressPanel.qml
        RESOURCES images/Folder/Folder_Active.svg images/Folder/Folder_Idle.svg images/Folder/Folder_Pressed.svg images/Options/Options_active.svg images/Options/Options_Idle.svg images/Options/Options_Pressed.svg images/Play_Button/Play_Active.svg images/Play_Button/Play_Idle.svg images/Play_Button/Play_pressed.svg images/Profile_Box/Asset_23.jpg images/Profile_Box/Asset_23.svg images/Profile_Box/Asset_24.jpg images/Profile_Box/Asset_24.svg images/Profile_Box/Kishka_Profile_Active.svg images/Profile_Box/Kishka_Profile_Idle.svg images/Profile_Box/Kishka_Profile_open.svg images/Scroll/Scroll_Lever.svg images/Scroll/Scroll_palka.svg images/Version_box/Kishka_Profile_Open.svg images/Version_box/Kishka_Ver_Active.svg images/Version_box/Kishka_Ver_idle.svg images/Trash.svg images/Pencil.svg images/GovuztTW8AAHqBf.jpeg images/photo_2025-12-16_15-04-17.jpg images/photo_2025-12-21_02-30-09.jpg
)

# 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(appMinecraft_launcher PROPERTIES
#    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appMinecraft_launcher
    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(appMinecraft_launcher
    PRIVATE Qt6::Quick Qt6::QuickControls2 Qt6::Core Qt6::CorePrivate Qt6::Gui Qt6::Network
)

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