cmake_minimum_required(VERSION 3.20)

project(kappa VERSION 0.1.0 LANGUAGES CXX)

find_package(Threads REQUIRED)

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

# Generate compile_commands.json for clangd
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# --- vcpkg integration ---
if(DEFINED ENV{VCPKG_ROOT})
  set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      CACHE STRING "vcpkg toolchain")
endif()

add_executable(kappa
  src/main.cpp
  src/util.cpp
  src/paths.cpp
  src/dsl/lexer.cpp
  src/dsl/parser.cpp
  src/dsl/system.cpp
  src/eval/vars.cpp
  src/cli/diagnostic.cpp
  src/config/merge.cpp
  src/config/eval.cpp
  src/tools/format.cpp
  src/tools/doctor.cpp
  src/resolve/plan.cpp
  src/fetch/fetch.cpp
  src/fetch/recipe.cpp
  src/build/build.cpp
  src/sched/scheduler.cpp
  src/install/install.cpp
  src/rebuild/rebuild.cpp
  src/service/s6.cpp
  src/service/systemd.cpp
  src/service/types.cpp
  src/service/openrc.cpp
  src/service/dinit.cpp
  src/service/runit.cpp
  src/service/install.cpp
  src/boot/types.cpp
  src/boot/limine.cpp
  src/boot/grub.cpp
  src/boot/install.cpp
  src/system/activate.cpp
)
target_include_directories(kappa PRIVATE include)
target_link_libraries(kappa PRIVATE Threads::Threads)
target_compile_options(kappa PRIVATE -Wall -Wextra -Wpedantic)

install(TARGETS kappa RUNTIME DESTINATION bin)
