# SPDX-FileCopyrightText: 2026 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME flutter_secure_storage_aurora)
set(PLUGIN_NAME flutter_secure_storage_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")

if(DEFINED PSDK_MAJOR AND ${PSDK_MAJOR} LESS 5)
  message(FATAL_ERROR "Cannot build this project on Aurora version less than 5")
endif()

find_package(Qt5 REQUIRED COMPONENTS Core)
find_package(PkgConfig REQUIRED)
pkg_check_modules(Qca2Qt5 REQUIRED qca2-qt5 IMPORTED_TARGET)

add_library(${PLUGIN_NAME} SHARED
  flutter_secure_storage_aurora_plugin.cpp
  src/aurora_secure_storage_backend.cpp
  src/keystore_manager.cpp
  src/qca_event_responder.cpp
)

# Add Flutter Aurora client wrapper sources/includes. This is the pattern used
# by Aurora Flutter 3.35.7 community plugins.
include(AuroraClientWrapper)
ADD_CLIENT_WRAPPER_SOURCE(${PLUGIN_NAME})

target_include_directories(${PLUGIN_NAME}
  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
  PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)

target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_SECURE_STORAGE_AURORA_PLUGIN_IMPL)

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

target_link_libraries(${PLUGIN_NAME}
  PUBLIC
    Qt5::Core
    PkgConfig::Qca2Qt5
)
