cmake_minimum_required(VERSION 3.15)
project(deep_miner)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Compiler warnings
if(MSVC)
    add_compile_options(/W4)
else()
    add_compile_options(-Wall -Wextra -Wpedantic)
endif()

include_directories(include)

# All robot + world sources (shared between game and test binaries)
set(LIB_SOURCES
    src/BaseRobot.cpp
    src/World.cpp
    src/SortBot.cpp
    src/DigDeepBot.cpp
    src/RandomBot.cpp
    src/SmartBot.cpp
    src/LookaheadBot.cpp
)

# Main game executable
add_executable(deep_miner
    ${LIB_SOURCES}
    src/Game.cpp
    main.cpp
)

# Test executable (no Game.cpp — tests target individual classes directly)
add_executable(deep_miner_tests
    ${LIB_SOURCES}
    tests/test_all.cpp
)

# Register with CTest so `ctest` / `cmake --build . --target test` works
enable_testing()
add_test(NAME unit_tests COMMAND deep_miner_tests)
