# Builds libsummarize-llm-jni.so = llama.cpp (static) + thin JNI layer.
# llama.cpp is expected at ./llama.cpp (pinned by build_arm64.sh), NOT committed here.
cmake_minimum_required(VERSION 3.22)
project(summarize_llm_jni CXX C)

set(LLAMA_BUILD_TESTS    OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_SERVER   OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_UI       OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_APP      OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_COMMON   OFF CACHE BOOL "" FORCE)
set(GGML_OPENMP          OFF CACHE BOOL "" FORCE)
set(BUILD_SHARED_LIBS    OFF CACHE BOOL "" FORCE)

add_subdirectory(llama.cpp EXCLUDE_FROM_ALL)

add_library(summarize-llm-jni SHARED src/summarize_llm_jni.cpp)
target_link_libraries(summarize-llm-jni PRIVATE llama android log)
target_compile_options(summarize-llm-jni PRIVATE -O2 -fvisibility=hidden)
target_link_options(summarize-llm-jni PRIVATE
    "-Wl,--build-id=sha1" "-Wl,--gc-sections" "-Wl,-z,max-page-size=16384"
    "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports.map")
