cmake_minimum_required(VERSION 3.14)
project(memba VERSION 0.1.0 LANGUAGES CXX C)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# ── llama.cpp submodule ──────────────────────────────────────────
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/llama.cpp/CMakeLists.txt")
    message(FATAL_ERROR
        "llama.cpp submodule not initialised.\n"
        "Run: git submodule update --init --recursive")
endif()

set(LLAMA_BUILD_TESTS    OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_SERVER   OFF CACHE BOOL "" FORCE)
add_subdirectory(llama.cpp)

# ── libmemba (shared) ────────────────────────────────────────────
add_library(memba SHARED src/state.cpp)

target_include_directories(memba
    PUBLIC  include
    PRIVATE llama.cpp/include
)
target_link_libraries(memba PRIVATE llama)

set_target_properties(memba PROPERTIES
    OUTPUT_NAME memba
    VERSION     ${PROJECT_VERSION}
    SOVERSION   0
)

# ── memba-cli ────────────────────────────────────────────────────
add_executable(memba-cli src/cli.cpp)

target_include_directories(memba-cli
    PRIVATE include
            llama.cpp/include
)
target_link_libraries(memba-cli PRIVATE memba llama)

# ── Install ──────────────────────────────────────────────────────
install(TARGETS memba memba-cli
    LIBRARY DESTINATION lib
    RUNTIME DESTINATION bin
)
install(FILES include/memba/state.h DESTINATION include/memba)
