# SPDX-FileCopyrightText: Copyright 2024-2025 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.19)

set(PROJECT_NAME webview_flutter_aurora)
set(PLUGIN_NAME  webview_flutter_aurora_platform_plugin)

project(${PROJECT_NAME} LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

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

find_package(PkgConfig REQUIRED)
find_package(aurora_libaurorawebview REQUIRED)
pkg_check_modules(qca2-qt5 REQUIRED IMPORTED_TARGET qca2-qt5)

get_property(CEF_LIBS_PATH GLOBAL PROPERTY "aurora_libcef_PROPERTY_LIBS_PATH")
get_property(WEBVIEW_LIBS_PATH GLOBAL PROPERTY "aurora_libaurorawebview_PROPERTY_LIBS_PATH")
get_property(WEBVIEW_INCLUDE_PATH GLOBAL PROPERTY "aurora_libaurorawebview_PROPERTY_INCLUDE_PATH")

add_library(${PLUGIN_NAME} SHARED
    command_line.cpp
    command_line.h
    egl_context_delegate.cpp
    egl_context_delegate.h
    http_method_result.cpp
    http_method_result.h
    preference_manager.cpp
    preference_manager.h
    webview_controller.cpp
    webview_controller.h
    webview_flutter_aurora_plugin.cpp
)

# Add client_wrapper source
include(AuroraClientWrapper)
ADD_CLIENT_WRAPPER_SOURCE(${PLUGIN_NAME})

# Activate AUTOMOC
set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden AUTOMOC ON)

target_link_libraries(${PLUGIN_NAME} PRIVATE
    PkgConfig::qca2-qt5
    Qt5::Qml
    aurora_libaurorawebview::aurora_libaurorawebview
)

# To support Qt you need to add moc to include
target_include_directories(${PLUGIN_NAME}
    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
           ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}
           ${WEBVIEW_INCLUDE_PATH}/aurorawebview
           ${Qt5Core_INCLUDE_DIRS}
           ${Qt5Gui_INCLUDE_DIRS}
           PkgConfig::qca2-qt5)

target_compile_definitions(${PLUGIN_NAME} PRIVATE PLUGIN_IMPL)


set_property(GLOBAL PROPERTY CEF_LINK_PROPERTY
    "-L${WEBVIEW_LIBS_PATH}" "-laurorawebview" "-Wl,--no-as-needed" ${CEF_LIBS_PATH}/libcef.so "-Wl,--as-needed")
