#
# Copyright (C) 2018-2021 QuasarApp.
# Distributed under the lgplv3 software license, see the accompanying
# Everyone is permitted to copy and distribute verbatim copies
# of this license document, but changing it is not allowed.
#

cmake_minimum_required(VERSION 3.1)
project(HanoiTowers)

set(BUILD_SHARED_LIBS ON)



include(submodules/Heart/QuasarAppLib/CMake/QuasarApp.cmake)
include(submodules/Heart/QuasarAppLib/CMake/Version.cmake)

if (DEFINED TARGET_PLATFORM_TOOLCHAIN)
    if (${TARGET_PLATFORM_TOOLCHAIN} STREQUAL "wasm32")
        initAll()
        return()
    endif()
endif()

if (NOT DEFINED HANOI_TESTS)
    set(HANOI_TESTS ON)

    if (ANDROID)
        set(HANOI_TESTS OFF)
    endif()
endif()

if (NOT DEFINED HANOI_SERVER)
    set(HANOI_SERVER ON)

    if (ANDROID OR WIN32)
        set(HANOI_SERVER OFF)
    endif()

endif()

if (NOT DEFINED HANOI_CLIENT)
    set(HANOI_CLIENT ON)

endif()

SET(INSTALLER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/installer/")
SET(DATA_DIR "${INSTALLER_DIR}/packages/HanoiTowers/data")

SET(TARGET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Distro")
SET(PRODUCT_VER_Mj 1)
SET(PRODUCT_VER_Mn 6)
SET(PRODUCT_VER_Re 0)

file(MAKE_DIRECTORY ${TARGET_DIR})

initAll()
addDoc(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/doxygen.conf)

if (ANDROID)
    set(QT_ANDROID_APPLICATION_BINARY "${CMAKE_BINARY_DIR}/HanoiTowers/client/${PROJECT_NAME}" CACHE INTERNAL "")
    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/HanoiTowers/client/android" CACHE INTERNAL "")
endif()

find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)

# Add sub directories

if (HANOI_TESTS)
    set (CREDITS_TESTS ON)
    set (HEART_TESTS ON)
    set (PATRONUM_TESTS ON)

else()
    set (CREDITS_TESTS OFF)
    set (HEART_TESTS OFF)
    set (PATRONUM_TESTS OFF)
endif()


add_subdirectory(submodules/Heart)
add_subdirectory(HanoiTowers/Protockol)

if (HANOI_CLIENT)
    set (CREDITS_EXAMPLES OFF)
    set (LOGINVIEW_EXAMPLES OFF)
    set (VIEWSOLUTIONS_EXAMPLES OFF)

    add_subdirectory(submodules/QMLLoginView)
    add_subdirectory(submodules/SimpleQmlNotify)
    add_subdirectory(submodules/ViewSolutions)
    add_subdirectory(submodules/Credits)
    add_subdirectory(HanoiTowers/client)
endif()

if (HANOI_SERVER)
    add_subdirectory(submodules/Patronum)
    add_subdirectory(HanoiTowers/Server)
    add_subdirectory(HanoiTowers/Terminal)
endif()