cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME flutter_webrtc)
set(PLUGIN_NAME flutter_webrtc_platform_plugin)

project(${PROJECT_NAME} LANGUAGES CXX)

add_library(${PLUGIN_NAME} SHARED
  deffered_method_result_proxy.cc
  deffered_method_result_proxy.h
  flutter_web_rtc_plugin_impl.cc
  flutter_web_rtc_plugin_impl.h
  plugin.cc

  ../common/cpp/include/flutter_common.h
  ../common/cpp/include/flutter_data_channel.h
  ../common/cpp/include/flutter_frame_capturer.h
  ../common/cpp/include/flutter_frame_cryptor.h
  ../common/cpp/include/flutter_media_stream.h
  ../common/cpp/include/flutter_peerconnection.h
  ../common/cpp/include/flutter_video_renderer.h
  ../common/cpp/include/flutter_webrtc_base.h
  ../common/cpp/include/flutter_webrtc.h
  ../common/cpp/include/task_runner.h

  ../common/cpp/src/flutter_common.cc
  ../common/cpp/src/flutter_data_channel.cc
  ../common/cpp/src/flutter_frame_capturer.cc
  ../common/cpp/src/flutter_frame_cryptor.cc
  ../common/cpp/src/flutter_media_stream.cc
  ../common/cpp/src/flutter_peerconnection.cc
  ../common/cpp/src/flutter_video_renderer.cc
  ../common/cpp/src/flutter_webrtc_base.cc
  ../common/cpp/src/flutter_webrtc.cc
  ../common/cpp/src/task_runner.cc
)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# System-level dependencies.
find_package(aurora_libwebrtc REQUIRED)

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

set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden)
target_link_libraries(${PLUGIN_NAME} PRIVATE aurora_libwebrtc::aurora_libwebrtc)

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

target_include_directories(${PLUGIN_NAME} PUBLIC 
  "${CMAKE_CURRENT_SOURCE_DIR}/include"
)
target_include_directories(${PLUGIN_NAME} PRIVATE
  "${CMAKE_CURRENT_SOURCE_DIR}"
  "${CMAKE_CURRENT_SOURCE_DIR}/../common/cpp/include"
  "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/svpng"
)

target_compile_definitions(${PLUGIN_NAME} PRIVATE WEBRTC_AURORA_IMPL)
