cmake_minimum_required(VERSION 3.24)
project(magic_scrolls)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

find_package(SQLite3 REQUIRED)

file(GLOB_RECURSE sources
  "${CMAKE_SOURCE_DIR}/src/*.cpp")

add_executable(magic_scrolls ${sources})

target_include_directories(magic_scrolls PUBLIC "${CMAKE_SOURCE_DIR}/include")
target_link_libraries(magic_scrolls PRIVATE SQLite::SQLite3)

# -------
enable_testing()

add_executable(event_bus_test
  tests/engine/event_bus_test.cpp
  src/engine/core/event_bus.cpp
)
add_executable(db_provider_test
  tests/engine/db_provider_test.cpp
  src/engine/core/engine.cpp
  src/engine/core/engine_db_provider.cpp
)
add_executable(engine_test
  tests/engine/engine_test.cpp
  src/engine/core/engine.cpp
  src/engine/core/engine_db_provider.cpp
)

target_include_directories(event_bus_test PUBLIC "${CMAKE_SOURCE_DIR}/include")
target_link_libraries(event_bus_test PRIVATE SQLite::SQLite3)

target_include_directories(db_provider_test PUBLIC "${CMAKE_SOURCE_DIR}/include")
target_link_libraries(db_provider_test PRIVATE SQLite::SQLite3)

target_include_directories(engine_test PUBLIC "${CMAKE_SOURCE_DIR}/include")
target_link_libraries(engine_test PRIVATE SQLite::SQLite3)

add_test(
  NAME "Event Bus"
  COMMAND event_bus_test
)
add_test(
  NAME "Database Provider"
  COMMAND db_provider_test
)
add_test(
  NAME "Engine"
  COMMAND engine_test
)
