cmake_minimum_required(VERSION 3.14)
project(llamacpp-embedder C CXX)
include(CheckIncludeFileCXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
    set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
if(UNIX AND NOT APPLE)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
    add_compile_options(-D_GLIBCXX_USE_CXX11_ABI=0)
endif()
if (WIN32)
    add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
if(APPLE)
    set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9")
endif()
add_subdirectory(vendor/llama.cpp)
set(TARGET llama-embedder)
set(CMAKE_CXX_STANDARD 11)
add_library(${TARGET} SHARED src/embedder.cpp src/embedder.h)
set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(${TARGET} PUBLIC .)
target_compile_features(${TARGET} PUBLIC cxx_std_11)
target_compile_options(${TARGET} PRIVATE -fvisibility=default)
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
target_compile_definitions(${TARGET} PRIVATE BUILDING_DLL)
install(TARGETS ${TARGET} RUNTIME)
