# SPDX-FileCopyrightText: Copyright 2024 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause

# CMAKE_SYSTEM_PROCESSOR - CPU architecture name (armv7l, aarch64, x86_64)
# CMAKE_BUILD_TYPE       - Build mode (debug, profile, release)
# PSDK_VERSION           - Build psdk exact version
# PSDK_MAJOR             - Build psdk major version

cmake_minimum_required(VERSION 3.10)
project(${FLUTTER_PROJECT_NAME} LANGUAGES CXX)

include(GNUInstallDirs)

find_package(PkgConfig REQUIRED)
find_package(Qt5 COMPONENTS Core Gui Quick REQUIRED)

pkg_check_modules(auroraapp REQUIRED auroraapp IMPORTED_TARGET auroraapp)

set(BINARY_NAME ${CMAKE_PROJECT_NAME})
set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_CXX_FLAGS "-Wall -Wextra")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

set(CMAKE_SKIP_RPATH OFF)
set(CMAKE_INSTALL_RPATH
    "\$ORIGIN/../share/${BINARY_NAME}/lib;${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/lib;"
)

add_executable(${BINARY_NAME} main.cpp)

include(flutter/generated_plugins.cmake)

target_include_directories(
    ${BINARY_NAME}
    PRIVATE ${FLUTTER_DIR}
            ${Qt5Core_INCLUDE_DIRS}
            ${Qt5Gui_INCLUDE_DIRS}
            ${auroraapp_INCLUDE_DIRS})

get_property(CEF_LINK_PROPERTY GLOBAL PROPERTY "CEF_LINK_PROPERTY")
target_link_options(${BINARY_NAME} PRIVATE ${CEF_LINK_PROPERTY})

target_link_libraries(${BINARY_NAME} PRIVATE
    PkgConfig::auroraapp
    Qt5::Core
    Qt5::Gui
    aurora_embedder::aurora_embedder
)

add_compile_definitions(WEBVIEW_SUBPROCESS_LAUNCHER_INSTALL_PATH="${WEBVIEW_SUBPROCESS_LAUNCHER_INSTALL_PATH}")

set(PACKAGE_INSTALL_DIR    ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME})
set(DESKTOP_INSTALL_DIR    ${CMAKE_INSTALL_DATADIR}/applications)
set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor)

install(FILES     ${PROJECT_BINARY_DIR}/bundle/icudtl.dat     DESTINATION ${PACKAGE_INSTALL_DIR})
install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR})
install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib            DESTINATION ${PACKAGE_INSTALL_DIR})

install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR})

foreach(ICONS_SIZE 86x86 108x108 128x128 172x172)
    install(FILES icons/${ICONS_SIZE}.png
            RENAME ${BINARY_NAME}.png
            DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/)
endforeach(ICONS_SIZE)
