cmake_minimum_required(VERSION 3.20)
project(aerostack VERSION 0.1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

option(AEROSTACK_BUILD_TESTS "Build unit tests" ON)

add_library(aerostack_lib
  src/world/world.cpp
  src/planning/astar_planner.cpp
  src/control/local_avoidance.cpp
  src/sim/mission_manager.cpp
  src/sim/simulation_engine.cpp
  src/telemetry/telemetry.cpp
)

target_include_directories(aerostack_lib PUBLIC include)

target_compile_options(aerostack_lib PRIVATE
  $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra -Wpedantic>
)

add_executable(aerostack_sim src/app/main.cpp)
target_link_libraries(aerostack_sim PRIVATE aerostack_lib)

if(AEROSTACK_BUILD_TESTS)
  include(CTest)
  enable_testing()

  add_executable(aerostack_tests tests/test_core.cpp)
  target_link_libraries(aerostack_tests PRIVATE aerostack_lib)
  add_test(NAME aerostack_tests COMMAND aerostack_tests)
endif()
