# HackerSim · llama.cpp 静态链接 JNI
cmake_minimum_required(VERSION 3.14)
project(hackersim_llama CXX C)

set(LLAMA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/llama)

# ── llama.cpp / ggml 构建开关：只要推理核心 ──
set(BUILD_SHARED_LIBS  OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_COMMON   OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_TESTS    OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_TOOLS    OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_SERVER   OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_MTMD     OFF CACHE BOOL "" FORCE)
set(LLAMA_CURL           OFF CACHE BOOL "" FORCE)
set(GGML_NATIVE          OFF CACHE BOOL "" FORCE)
set(GGML_OPENMP          OFF CACHE BOOL "" FORCE)
set(GGML_BACKEND_DL      OFF CACHE BOOL "" FORCE)
set(GGML_LLVMFILE        OFF CACHE BOOL "" FORCE)

add_subdirectory(${LLAMA_DIR} llama-src)

add_library(hackersim_llama SHARED llama_jni.cpp)

target_include_directories(hackersim_llama PRIVATE
        ${LLAMA_DIR}/include
        ${LLAMA_DIR}/ggml/include)

target_link_libraries(hackersim_llama PRIVATE llama log)

# 解除 16KB 对齐警告无关紧要；保证异常/RTTI（llama.cpp 需要）
target_compile_options(hackersim_llama PRIVATE -fexceptions -frtti)
