Skip to content

Commit

Permalink
whisper.android : fix cmake multiple libraries build (ggerganov#1224)
Browse files Browse the repository at this point in the history
* whisper.android : fix multiple libraries build

* fix flags for default target
  • Loading branch information
jhen0409 committed Aug 30, 2023
1 parent 89c66bd commit 7b80aec
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 22 deletions.
2 changes: 1 addition & 1 deletion examples/whisper.android/app/build.gradle
Expand Up @@ -19,7 +19,7 @@ android {
useSupportLibrary true
}
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a'
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
}
}

Expand Down
51 changes: 30 additions & 21 deletions examples/whisper.android/app/src/main/jni/whisper/CMakeLists.txt
Expand Up @@ -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 ()

0 comments on commit 7b80aec

Please sign in to comment.