@@ -36,7 +36,7 @@ macro(find_vulkan use_vulkan use_khronos_spirv)
3636 set (__use_vulkan ${use_vulkan} )
3737 if (IS_DIRECTORY ${__use_vulkan} )
3838 set (__vulkan_sdk ${__use_vulkan} )
39- message (STATUS "Custom Vulkan SDK PATH=" ${__use_vulkan} )
39+ message (STATUS "Using custom Vulkan SDK: ${__vulkan_sdk} " )
4040 elseif (IS_DIRECTORY $ENV{VULKAN_SDK} )
4141 set (__vulkan_sdk $ENV{VULKAN_SDK} )
4242 else ()
@@ -46,45 +46,65 @@ macro(find_vulkan use_vulkan use_khronos_spirv)
4646
4747 if (IS_DIRECTORY ${use_khronos_spirv} )
4848 set (__use_khronos_spirv ${use_khronos_spirv} )
49- message (STATUS "Custom khronos spirv PATH=" ${__use_khronos_spirv} )
49+ message (STATUS "Using custom Khronos SPIRV path: ${__use_khronos_spirv} " )
5050 else ()
5151 set (__use_khronos_spirv "" )
5252 endif ()
5353
5454 if (CMAKE_SYSTEM_NAME STREQUAL "Android" )
55- set (VULKAN_NDK_SRC ${CMAKE_ANDROID_NDK} /sources/third_party/vulkan/src)
56- set (Vulkan_INCLUDE_DIRS ${VULKAN_NDK_SRC} /include)
57- set (Vulkan_FOUND TRUE )
58- message (STATUS "Android Vulkan_INCLUDE_DIRS=" ${Vulkan_INCLUDE_DIRS} )
59- message (STATUS "Skip finding SPIRV in Android, make sure you only build tvm runtime." )
60- return ()
61- endif ()
55+ message (STATUS "Detected Android build" )
56+
57+ set (Vulkan_INCLUDE_DIRS "${CMAKE_SYSROOT} /usr/include/vulkan" )
58+
59+ # Map Android ABI to architecture
60+ set (ANDROID_LIB_ARCH "" )
61+ if (CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a" )
62+ set (ANDROID_LIB_ARCH "aarch64-linux-android" )
63+ elseif (CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a" )
64+ set (ANDROID_LIB_ARCH "arm-linux-androideabi" )
65+ elseif (CMAKE_ANDROID_ARCH_ABI STREQUAL "x86" )
66+ set (ANDROID_LIB_ARCH "i686-linux-android" )
67+ elseif (CMAKE_ANDROID_ARCH_ABI STREQUAL "x86_64" )
68+ set (ANDROID_LIB_ARCH "x86_64-linux-android" )
69+ else ()
70+ message (FATAL_ERROR "Unsupported Android ABI: ${CMAKE_ANDROID_ARCH_ABI} " )
71+ endif ()
72+
73+ # Find Vulkan library for Android
74+ set (Vulkan_LIB_PATH "${CMAKE_SYSROOT} /usr/lib/${ANDROID_LIB_ARCH} /27" )
75+ find_library (Vulkan_LIBRARY NAMES vulkan libvulkan.so PATHS ${Vulkan_LIB_PATH} NO_DEFAULT_PATH )
76+
77+ if (Vulkan_LIBRARY)
78+ set (Vulkan_FOUND TRUE )
79+ else ()
80+ message (FATAL_ERROR "Could not find Vulkan lib in ${Vulkan_LIB_PATH} " )
81+ endif ()
82+
83+ else ()
6284
85+ message (STATUS "__vulkan_sdk:- " ${__vulkan_sdk} )
6386 if (__vulkan_sdk)
6487 set (Vulkan_INCLUDE_DIRS ${__vulkan_sdk} /include)
6588 find_library (Vulkan_LIBRARY NAMES vulkan vulkan-1 PATHS ${__vulkan_sdk} /lib )
6689 if (Vulkan_LIBRARY)
6790 set (Vulkan_FOUND TRUE )
6891 endif ()
69- endif (__vulkan_sdk )
92+ endif ()
7093
71- # resort to find vulkan of option is on
72- if (NOT Vulkan_FOUND)
73- if (${__use_vulkan} MATCHES ${IS_TRUE_PATTERN} )
74- find_package (Vulkan QUIET )
75- endif ()
94+ if (NOT Vulkan_FOUND AND ${use_vulkan} MATCHES ${IS_TRUE_PATTERN} )
95+ find_package (Vulkan QUIET )
7696 endif ()
7797
7898 if (Vulkan_FOUND)
7999 get_filename_component (VULKAN_LIBRARY_PATH ${Vulkan_LIBRARY} DIRECTORY )
80100 if (WIN32 )
81101 find_library (Vulkan_SPIRV_TOOLS_LIBRARY SPIRV-Tools
82- HINTS ${__use_khronos_spirv} /spirv-tools/lib ${VULKAN_LIBRARY_PATH} ${VULKAN_LIBRARY_PATH} /spirv-tools ${VULKAN_SDK } /lib )
102+ HINTS ${__use_khronos_spirv} /spirv-tools/lib ${VULKAN_LIBRARY_PATH} ${VULKAN_LIBRARY_PATH} /spirv-tools ${__vulkan_sdk } /lib )
83103 find_path (_libspirv libspirv.h HINTS ${__use_khronos_spirv} /spirv-tools/include ${Vulkan_INCLUDE_DIRS} PATH_SUFFIXES vulkan spirv-tools )
84104 find_path (_spirv spirv.hpp HINTS ${__use_khronos_spirv} /SPIRV-Headers/include ${Vulkan_INCLUDE_DIRS} PATH_SUFFIXES vulkan SPIRV spirv/unified1 spirv-headers )
85105 else ()
86106 find_library (Vulkan_SPIRV_TOOLS_LIBRARY SPIRV-Tools
87- HINTS ${__use_khronos_spirv} /lib ${VULKAN_LIBRARY_PATH} ${VULKAN_LIBRARY_PATH} /spirv-tools ${VULKAN_SDK } /lib )
107+ HINTS ${__use_khronos_spirv} /lib ${VULKAN_LIBRARY_PATH} ${VULKAN_LIBRARY_PATH} /spirv-tools ${__vulkan_sdk } /lib )
88108 find_path (_libspirv libspirv.h HINTS ${__use_khronos_spirv} /include ${Vulkan_INCLUDE_DIRS} PATH_SUFFIXES vulkan spirv-tools )
89109 find_path (_spirv spirv.hpp HINTS ${__use_khronos_spirv} /include ${Vulkan_INCLUDE_DIRS} PATH_SUFFIXES vulkan SPIRV spirv/unified1 spirv-headers )
90110 endif ()
@@ -95,4 +115,5 @@ macro(find_vulkan use_vulkan use_khronos_spirv)
95115 message (STATUS "Vulkan_LIBRARY=" ${Vulkan_LIBRARY} )
96116 message (STATUS "Vulkan_SPIRV_TOOLS_LIBRARY=" ${Vulkan_SPIRV_TOOLS_LIBRARY} )
97117 endif (Vulkan_FOUND )
118+ endif ()
98119endmacro (find_vulkan )
0 commit comments