@@ -48,6 +48,45 @@ endif()
4848
4949set (LLAMA_CPP_ROOT ${CMAKE_SOURCE_DIR} /third_party/llama.cpp)
5050
51+ if (ARCHITECTURE MATCHES "android" AND ARCHITECTURE MATCHES "vulkan" )
52+ # Derive triple from ANDROID_ABI
53+ if (ANDROID_ABI STREQUAL "arm64-v8a" )
54+ set (ANDROID_ARCH_TRIPLE "aarch64-linux-android" )
55+ elseif (ANDROID_ABI STREQUAL "armeabi-v7a" )
56+ set (ANDROID_ARCH_TRIPLE "arm-linux-androideabi" )
57+ elseif (ANDROID_ABI STREQUAL "x86_64" )
58+ set (ANDROID_ARCH_TRIPLE "x86_64-linux-android" )
59+ elseif (ANDROID_ABI STREQUAL "x86" )
60+ set (ANDROID_ARCH_TRIPLE "i686-linux-android" )
61+ else ()
62+ message (FATAL_ERROR "Unknown ANDROID_ABI: ${ANDROID_ABI} " )
63+ endif ()
64+
65+ message (STATUS "ANDROID_ABI=${ANDROID_ABI} " )
66+ message (STATUS "ANDROID_ARCH_TRIPLE=${ANDROID_ARCH_TRIPLE} " )
67+ message (STATUS "CMAKE_SYSROOT=${CMAKE_SYSROOT} " )
68+
69+ set (Vulkan_LIBRARY "${CMAKE_SYSROOT} /usr/lib/${ANDROID_ARCH_TRIPLE} /26/libvulkan.so" )
70+ set (Vulkan_LIBRARY "${CMAKE_SYSROOT} /usr/lib/${ANDROID_ARCH_TRIPLE} /26/libvulkan.so" CACHE FILEPATH "" FORCE )
71+ set (Vulkan_FOUND TRUE )
72+ set (Vulkan_FOUND TRUE CACHE BOOL "" FORCE )
73+ set (Vulkan_VERSION "1.3.275" )
74+ set (Vulkan_VERSION "1.3.275" CACHE STRING "" FORCE )
75+ set (Vulkan_INCLUDE_DIR "${CMAKE_SOURCE_DIR} /third_party/Vulkan-Headers/include" )
76+ set (Vulkan_INCLUDE_DIR "${CMAKE_SOURCE_DIR} /third_party/Vulkan-Headers/include" CACHE PATH "" FORCE )
77+
78+ if (NOT EXISTS "${Vulkan_LIBRARY} " )
79+ message (FATAL_ERROR "Vulkan stub not found at: ${Vulkan_LIBRARY} " )
80+ endif ()
81+
82+ find_program (Vulkan_GLSLC_EXECUTABLE
83+ NAMES glslc
84+ PATHS "/usr/bin" "/usr/local/bin"
85+ NO_CMAKE_SYSTEM_PATH )
86+ set (Vulkan_GLSLC_EXECUTABLE "${Vulkan_GLSLC_EXECUTABLE} " CACHE FILEPATH "" FORCE )
87+ endif ()
88+
89+
5190function (LLAMALIB_COMPILE_DEFS NAME )
5291 add_compile_definitions (${NAME} PRIVATE UNDREAMAI_EXPORTS )
5392 target_include_directories (${NAME} PRIVATE "${CMAKE_SOURCE_DIR} /include" )
@@ -58,8 +97,9 @@ function(LLAMALIB_COMPILE_DEFS NAME)
5897 target_compile_definitions (${NAME} PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT )
5998 target_link_libraries (${NAME} PRIVATE cpp-httplib OpenSSL::SSL OpenSSL::Crypto )
6099 endif ()
61- if (CMAKE_SYSTEM_NAME STREQUAL "Android " )
100+ if (ARCHITECTURE MATCHES "android" AND ARCHITECTURE MATCHES "vulkan " )
62101 target_link_options (${NAME} PRIVATE "-Wl,-z,max-page-size=16384" )
102+ target_link_libraries (${NAME} PRIVATE "${Vulkan_LIBRARY} " )
63103 endif ()
64104endfunction ()
65105
0 commit comments