# SPDX-FileCopyrightText: Copyright 2023 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)

set(PROJECT_NAME camera_aurora)
set(PLUGIN_NAME  camera_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")

set(3RDPARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/aurora_${PSDK_MAJOR})

find_package(PkgConfig REQUIRED)
find_package(Qt5 COMPONENTS Core Multimedia REQUIRED)
find_package(aurora_ffmpeg REQUIRED)
find_package(aurora_libzxing REQUIRED)
find_package(aurora_libyuv REQUIRED)

pkg_check_modules(GLES REQUIRED IMPORTED_TARGET glesv2)
pkg_check_modules(SC REQUIRED IMPORTED_TARGET streamcamera)

add_library(${PLUGIN_NAME} SHARED
    audiorecorder.cc
    audiorecorder.h
    plugin.cc
    encodedframe.cc
    encodedframe.h
    encodedframeprovider.cc
    encodedframeprovider.h
    mp4file.cc
    mp4file.h
    texturecamera.cc
    texturecamera.h
    utils.cc
    utils.h
)

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

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

target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::GLES PkgConfig::SC)
target_link_libraries(${PLUGIN_NAME} PUBLIC
    aurora_ffmpeg::aurora_ffmpeg
    aurora_libzxing::aurora_libzxing
    aurora_libyuv::aurora_libyuv
)
target_link_libraries(${PLUGIN_NAME} PUBLIC Qt5::Core Qt5::Multimedia)

target_include_directories(${PLUGIN_NAME} PRIVATE ${FLUTTER_DIR})
target_include_directories(${PLUGIN_NAME} PRIVATE
    aurora_ffmpeg::aurora_ffmpeg
    aurora_libzxing::aurora_libzxing
    aurora_libyuv::aurora_libyuv
)

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

target_compile_definitions(${PLUGIN_NAME} PRIVATE CAMERA_AURORA_IMPL)
