cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
project(georegdata LANGUAGES CXX)

set(Python3_FIND_STRATEGY LOCATION)
find_package(Python REQUIRED COMPONENTS Interpreter Development NumPy)
find_package(pybind11 REQUIRED)
find_package(xtl REQUIRED)
find_package(xtensor REQUIRED)
find_package(xtensor-python REQUIRED)
find_package(xtensor-io REQUIRED)
find_package(xtensor-interfaces REQUIRED)
find_package(PROJ REQUIRED)
find_package(cosy REQUIRED)
find_package(tiledwebmaps REQUIRED)
find_package(cereal REQUIRED)

pybind11_add_module(backend backend/main.cpp)
target_compile_features(backend PUBLIC cxx_std_17)
target_link_libraries(backend PUBLIC
  xtensor
  xtensor::optimize
  xtensor::use_xsimd
  xtensor-io
  xtensor-interfaces::opencv
  cosy::cosy
  cosy::proj
  cosy::cereal
  tiledwebmaps::tiledwebmaps
  cereal::cereal
  xtensor-python
  Python::NumPy
)
target_compile_definitions(backend PUBLIC CEREAL_THREAD_SAFE)
set_target_properties(backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/georegdata")

execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/georegdata)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/georegdata/aerial ${CMAKE_CURRENT_BINARY_DIR}/georegdata/aerial)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/georegdata/ground ${CMAKE_CURRENT_BINARY_DIR}/georegdata/ground)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/georegdata/__init__.py ${CMAKE_CURRENT_BINARY_DIR}/georegdata/__init__.py)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/georegdata/frame.py ${CMAKE_CURRENT_BINARY_DIR}/georegdata/frame.py)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/georegdata/prepare.py ${CMAKE_CURRENT_BINARY_DIR}/georegdata/prepare.py)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/georegdata/visualize.py ${CMAKE_CURRENT_BINARY_DIR}/georegdata/visualize.py)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/setup.py ${CMAKE_CURRENT_BINARY_DIR}/setup.py)
