cmake_minimum_required(VERSION 3.28)
project(opium_native LANGUAGES C CXX)
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(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
if(NOT DEFINED LLAMA_SOURCE_DIR)
  message(FATAL_ERROR "Set LLAMA_SOURCE_DIR to pinned llama.cpp source")
endif()
add_subdirectory("${LLAMA_SOURCE_DIR}" llama)
add_library(opium_native SHARED opium_native.cpp)
target_compile_features(opium_native PRIVATE cxx_std_17)
target_link_libraries(opium_native PRIVATE llama ggml ggml-base)
set_target_properties(opium_native PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
