add_library(verdant_core STATIC
  core/src/rapid_filesystem.cpp
  core/src/simulation.cpp
)
set_target_properties(verdant_core PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(verdant_core
  PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/core/include>
)
target_link_libraries(verdant_core PUBLIC Threads::Threads ZLIB::ZLIB)
if(COMMAND gldoze_apply_dev_warnings)
  gldoze_apply_dev_warnings(verdant_core)
endif()

add_library(verdant_renderer STATIC
  renderer/src/map_archive.cpp
  renderer/src/renderer.cpp
  renderer/src/s3o_asset.cpp
  ${GLDOZE_REPO_ROOT}/core_mesh_renderer.cpp
  ${GLDOZE_REPO_ROOT}/immediate_batch.cpp
  ${GLDOZE_REPO_ROOT}/jetexhaust.cpp
  ${GLDOZE_REPO_ROOT}/springmap_loader.cpp
  ${GLDOZE_REPO_ROOT}/springmap_renderer.cpp
  ${GLDOZE_REPO_ROOT}/vector.cpp
)
set_target_properties(verdant_renderer PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(verdant_renderer
  PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/renderer/include>
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/core/include>
  PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/renderer/src
    ${GLDOZE_REPO_ROOT}
)
target_link_libraries(verdant_renderer
  PUBLIC
    verdant_core
  PRIVATE
    OpenGL::GL
)
if(TARGET PkgConfig::ARCHIVE)
  target_link_libraries(verdant_renderer PRIVATE PkgConfig::ARCHIVE)
elseif(TARGET LibArchive::LibArchive)
  target_link_libraries(verdant_renderer PRIVATE LibArchive::LibArchive)
elseif(GLDOZE_USE_PKGCONFIG_DEPS AND COMMAND pkg_check_modules)
  pkg_check_modules(VERDANT_ARCHIVE REQUIRED IMPORTED_TARGET libarchive)
  target_link_libraries(verdant_renderer PRIVATE PkgConfig::VERDANT_ARCHIVE)
else()
  find_package(LibArchive REQUIRED)
  target_link_libraries(verdant_renderer PRIVATE LibArchive::LibArchive)
endif()
if(COMMAND gldoze_apply_dev_warnings)
  gldoze_apply_dev_warnings(verdant_renderer)
endif()

add_library(verdant_app STATIC
  app/src/application.cpp
)
set_target_properties(verdant_app PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(verdant_app
  PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/app/include>
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/core/include>
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/renderer/include>
)
target_link_libraries(verdant_app
  PUBLIC
    verdant_core
    verdant_renderer
)
if(COMMAND gldoze_apply_dev_warnings)
  gldoze_apply_dev_warnings(verdant_app)
endif()

if(VERDANT_BUILD_STANDALONE)
  add_subdirectory(hosts/standalone_sdl)
endif()
