| cmake_minimum_required(VERSION 3.31.6) |
|
|
| project("ai-chat" VERSION 1.0.0 LANGUAGES C CXX) |
|
|
| set(CMAKE_C_STANDARD 11) |
| set(CMAKE_C_STANDARD_REQUIRED true) |
|
|
| set(CMAKE_CXX_STANDARD 17) |
| set(CMAKE_CXX_STANDARD_REQUIRED true) |
|
|
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" FORCE) |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "" FORCE) |
|
|
| # -------------------------------------------------------------------------- |
| # AI Chat library |
| # -------------------------------------------------------------------------- |
|
|
| if(DEFINED ANDROID_ABI) |
| message(STATUS "Detected Android ABI: ${ANDROID_ABI}") |
| if(ANDROID_ABI STREQUAL "arm64-v8a") |
| set(GGML_SYSTEM_ARCH "ARM") |
| set(GGML_CPU_KLEIDIAI ON) |
| set(GGML_OPENMP ON) |
| elseif(ANDROID_ABI STREQUAL "x86_64") |
| set(GGML_SYSTEM_ARCH "x86") |
| set(GGML_CPU_KLEIDIAI OFF) |
| set(GGML_OPENMP OFF) |
| else() |
| message(FATAL_ERROR "Unsupported ABI: ${ANDROID_ABI}") |
| endif() |
| endif() |
|
|
| set(LLAMA_SRC ${CMAKE_CURRENT_LIST_DIR}/../../../../../../) |
| add_subdirectory(${LLAMA_SRC} build-llama) |
|
|
| add_library(${CMAKE_PROJECT_NAME} SHARED |
| ai_chat.cpp) |
|
|
| target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE |
| GGML_SYSTEM_ARCH=${GGML_SYSTEM_ARCH} |
| GGML_CPU_KLEIDIAI=$<BOOL:${GGML_CPU_KLEIDIAI}> |
| GGML_OPENMP=$<BOOL:${GGML_OPENMP}> |
| ) |
|
|
| target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE |
| ${LLAMA_SRC} |
| ${LLAMA_SRC}/common |
| ${LLAMA_SRC}/include |
| ${LLAMA_SRC}/ggml/include |
| ${LLAMA_SRC}/ggml/src) |
|
|
| target_link_libraries(${CMAKE_PROJECT_NAME} |
| llama |
| common |
| android |
| log) |
|
|