cmake_minimum_required(VERSION 3.22.1)

project(tsjet LANGUAGES C CXX)

# AGP compiles the debug variant with CMAKE_BUILD_TYPE=Debug (-O0), which makes
# llama.cpp ~10x too slow. Force an optimized build regardless of the variant.
if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(CMAKE_BUILD_TYPE Release CACHE STRING "" FORCE)
endif()
set(CMAKE_C_FLAGS_DEBUG   "-O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-O3 -DNDEBUG")

# Align all native LOAD segments to 16 KB. Required for Android 15+ / devices with
# 16 KB memory pages and for Google Play uploads. Set BEFORE llama.cpp is added so
# its targets (libllama, libggml*) inherit it too.
add_link_options("-Wl,-z,max-page-size=16384" "-Wl,-z,common-page-size=16384")

include(FetchContent)

# --- llama.cpp (pinned) -----------------------------------------------------
# Pinned to a specific release so the JNI wrapper below always matches the API
# it was written against. Bump GIT_TAG deliberately, not casually.
set(LLAMA_BUILD_TESTS    OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_TOOLS    OFF CACHE BOOL "" FORCE)
set(LLAMA_BUILD_SERVER   OFF CACHE BOOL "" FORCE)
set(LLAMA_CURL           OFF CACHE BOOL "" FORCE)
set(GGML_OPENMP          OFF CACHE BOOL "" FORCE)

FetchContent_Declare(
    llama
    GIT_REPOSITORY https://github.com/ggml-org/llama.cpp.git
    GIT_TAG        b10333
    GIT_SHALLOW    TRUE
)
FetchContent_MakeAvailable(llama)

# --- our JNI bridge ---------------------------------------------------------
add_library(tsjet SHARED llama-jni.cpp)

find_library(log-lib log)

target_compile_features(tsjet PRIVATE cxx_std_17)
target_link_libraries(tsjet PRIVATE llama ${log-lib})
