cmake_minimum_required(VERSION 3.14)
set(PROJECT_NAME "atlas3d_flutter")
project(${PROJECT_NAME} LANGUAGES C CXX)

cmake_policy(VERSION 3.14...3.25)

set(PLUGIN_NAME "atlas3d_flutter_plugin")

list(APPEND PLUGIN_SOURCES
  "atlas3d_flutter_plugin.cpp"
  "atlas3d_flutter_plugin.h"
  "flutter_d3d_texture.cpp"
)

add_library(${PLUGIN_NAME} SHARED
  "include/atlas3d_flutter/atlas3d_flutter_plugin_c_api.h"
  "atlas3d_flutter_plugin_c_api.cpp"
  ${PLUGIN_SOURCES}
)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

set_target_properties(${PLUGIN_NAME} PROPERTIES
  CXX_VISIBILITY_PRESET hidden)
target_compile_features(${PLUGIN_NAME} PUBLIC cxx_std_20)
target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
target_include_directories(${PLUGIN_NAME} INTERFACE
  "${CMAKE_CURRENT_SOURCE_DIR}/include"
  "${CMAKE_CURRENT_SOURCE_DIR}/include/filament"
  "${CMAKE_CURRENT_SOURCE_DIR}"
)

include_directories(
  ${CMAKE_CURRENT_SOURCE_DIR}/include
  ${CMAKE_CURRENT_SOURCE_DIR}/include/filament
  ${runner_BINARY_DIR}/../../../native_assets/windows/
)

get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
    message(STATUS "${_variableName}=${${_variableName}}")
endforeach()

target_link_directories(${PLUGIN_NAME} PRIVATE ${runner_BINARY_DIR}/../../../native_assets/windows/)

target_link_libraries(${PLUGIN_NAME} PRIVATE 
 flutter
 flutter_wrapper_plugin 
 Shlwapi
 atlas3d_dart
)

set(atlas3d_flutter_bundled_libraries
  ${runner_BINARY_DIR}/../../../native_assets/windows/atlas3d_dart.dll
  ${runner_BINARY_DIR}/../../../native_assets/windows/atlas3d_dart.lib
  PARENT_SCOPE
)

add_definitions(-DTHERMION_WIN32_KHR_BUILD=1)


