]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
whisper.android : fix cmake multiple libraries build (#1224)
authorJhen-Jie Hong <redacted>
Wed, 30 Aug 2023 11:45:13 +0000 (19:45 +0800)
committerGitHub <redacted>
Wed, 30 Aug 2023 11:45:13 +0000 (14:45 +0300)
* whisper.android : fix multiple libraries build

* fix flags for default target

examples/whisper.android/app/build.gradle
examples/whisper.android/app/src/main/jni/whisper/CMakeLists.txt

index ab4956913bd28b2ff1fde6f71c272c6ac55224a0..98133b272bdc97bdd74d4b18341d8b1cf11fcc41 100644 (file)
@@ -19,7 +19,7 @@ android {
             useSupportLibrary true
         }
         ndk {
-            abiFilters 'arm64-v8a', 'armeabi-v7a'
+            abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
         }
     }
 
index 0d33db285a432c233cb1a0ac5ab2857788030452..55a47253080192cdb09fa476819b53b0c8b89eaa 100644 (file)
@@ -12,33 +12,42 @@ set(
         ${CMAKE_SOURCE_DIR}/jni.c
 )
 
-if (${ANDROID_ABI} STREQUAL "arm64-v8a")
-    set(WHISPER_LIBRARY_NAME whisper_v8fp16_va)
-elseif (${ANDROID_ABI} STREQUAL "armeabi-v7a")
-    set(WHISPER_LIBRARY_NAME whisper_vfpv4)
-endif ()
+find_library(LOG_LIB log)
 
-add_library(
-        ${WHISPER_LIBRARY_NAME}
+function(build_library target_name)
+    add_library(
+        ${target_name}
         SHARED
         ${SOURCE_FILES}
-)
+    )
+    
+    target_link_libraries(${target_name} ${LOG_LIB} android)
+
+    if (${target_name} STREQUAL "whisper_v8fp16_va")
+        target_compile_options(${target_name} PRIVATE -march=armv8.2-a+fp16)
+    elseif (${target_name} STREQUAL "whisper_vfpv4")
+        target_compile_options(${target_name} PRIVATE -mfpu=neon-vfpv4)
+    endif ()
+
+    if (NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
+
+        target_compile_options(${target_name} PRIVATE -O3)
+        target_compile_options(${target_name} PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden)
+        target_compile_options(${target_name} PRIVATE -ffunction-sections -fdata-sections)
+
+        target_link_options(${target_name} PRIVATE -Wl,--gc-sections)
+        target_link_options(${target_name} PRIVATE -Wl,--exclude-libs,ALL)
+        target_link_options(${target_name} PRIVATE -flto)
+
+    endif ()
+endfunction()
+
+build_library("whisper") # Default target
 
 if (${ANDROID_ABI} STREQUAL "arm64-v8a")
-    target_compile_options(${WHISPER_LIBRARY_NAME} PRIVATE -march=armv8.2-a+fp16)
+    build_library("whisper_v8fp16_va")
 elseif (${ANDROID_ABI} STREQUAL "armeabi-v7a")
-    target_compile_options(${WHISPER_LIBRARY_NAME} PRIVATE -mfpu=neon-vfpv4)
+    build_library("whisper_vfpv4")
 endif ()
 
-
-target_link_libraries(${WHISPER_LIBRARY_NAME} log android)
 include_directories(${WHISPER_LIB_DIR})
-
-if (NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
-    target_compile_options(${WHISPER_LIBRARY_NAME} PRIVATE -O3)
-    target_compile_options(${WHISPER_LIBRARY_NAME} PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden)
-    target_compile_options(${WHISPER_LIBRARY_NAME} PRIVATE -ffunction-sections -fdata-sections)
-    target_link_options(${WHISPER_LIBRARY_NAME} PRIVATE -Wl,--gc-sections)
-    target_link_options(${WHISPER_LIBRARY_NAME} PRIVATE -Wl,--exclude-libs,ALL)
-    target_link_options(${WHISPER_LIBRARY_NAME} PRIVATE -flto)
-endif ()