summaryrefslogtreecommitdiff
path: root/llama.cpp/examples/llama.android/lib/src/main/cpp/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/examples/llama.android/lib/src/main/cpp/CMakeLists.txt')
-rw-r--r--llama.cpp/examples/llama.android/lib/src/main/cpp/CMakeLists.txt56
1 files changed, 56 insertions, 0 deletions
diff --git a/llama.cpp/examples/llama.android/lib/src/main/cpp/CMakeLists.txt b/llama.cpp/examples/llama.android/lib/src/main/cpp/CMakeLists.txt
new file mode 100644
index 0000000..7862c61
--- /dev/null
+++ b/llama.cpp/examples/llama.android/lib/src/main/cpp/CMakeLists.txt
@@ -0,0 +1,56 @@
+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)