Committed by
GitHub
Support linking onnxruntime statically for Android (#1619)
正在显示
7 个修改的文件
包含
479 行增加
和
46 行删除
.github/workflows/android-static.yaml
0 → 100644
| 1 | +# static means we link onnxruntime statically | ||
| 2 | +# but we still have libsherpa-onnx-jni.so | ||
| 3 | +name: android-static | ||
| 4 | + | ||
| 5 | +on: | ||
| 6 | + push: | ||
| 7 | + branches: | ||
| 8 | + - master | ||
| 9 | + - android-link-onnxruntime-statically | ||
| 10 | + paths: | ||
| 11 | + - '.github/workflows/android-static.yaml' | ||
| 12 | + - 'CMakeLists.txt' | ||
| 13 | + - 'cmake/**' | ||
| 14 | + - 'sherpa-onnx/csrc/*' | ||
| 15 | + - 'sherpa-onnx/jni/*' | ||
| 16 | + - 'build-android*.sh' | ||
| 17 | + tags: | ||
| 18 | + - 'v[0-9]+.[0-9]+.[0-9]+*' | ||
| 19 | + pull_request: | ||
| 20 | + branches: | ||
| 21 | + - master | ||
| 22 | + paths: | ||
| 23 | + - '.github/workflows/android-static.yaml' | ||
| 24 | + - 'CMakeLists.txt' | ||
| 25 | + - 'cmake/**' | ||
| 26 | + - 'sherpa-onnx/csrc/*' | ||
| 27 | + - 'sherpa-onnx/jni/*' | ||
| 28 | + - 'build-android*.sh' | ||
| 29 | + | ||
| 30 | + workflow_dispatch: | ||
| 31 | + | ||
| 32 | +concurrency: | ||
| 33 | + group: android-static-${{ github.ref }} | ||
| 34 | + cancel-in-progress: true | ||
| 35 | + | ||
| 36 | +jobs: | ||
| 37 | + build-android-static-libs: | ||
| 38 | + name: Android static libs | ||
| 39 | + runs-on: ${{ matrix.os }} | ||
| 40 | + strategy: | ||
| 41 | + fail-fast: false | ||
| 42 | + matrix: | ||
| 43 | + os: [ubuntu-latest] | ||
| 44 | + | ||
| 45 | + steps: | ||
| 46 | + - uses: actions/checkout@v4 | ||
| 47 | + with: | ||
| 48 | + fetch-depth: 0 | ||
| 49 | + | ||
| 50 | + - name: ccache | ||
| 51 | + uses: hendrikmuhs/ccache-action@v1.2 | ||
| 52 | + with: | ||
| 53 | + key: ${{ matrix.os }}-android-jni-static | ||
| 54 | + | ||
| 55 | + - name: Display NDK HOME | ||
| 56 | + shell: bash | ||
| 57 | + run: | | ||
| 58 | + echo "ANDROID_NDK_LATEST_HOME: ${ANDROID_NDK_LATEST_HOME}" | ||
| 59 | + ls -lh ${ANDROID_NDK_LATEST_HOME} | ||
| 60 | + | ||
| 61 | + - name: build android arm64-v8a | ||
| 62 | + shell: bash | ||
| 63 | + run: | | ||
| 64 | + export BUILD_SHARED_LIBS=OFF | ||
| 65 | + | ||
| 66 | + export CMAKE_CXX_COMPILER_LAUNCHER=ccache | ||
| 67 | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
| 68 | + | ||
| 69 | + export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME | ||
| 70 | + ./build-android-arm64-v8a.sh | ||
| 71 | + mkdir -p jniLibs/arm64-v8a/ | ||
| 72 | + cp -v ./build-android-arm64-v8a-static/install/lib/*.so ./jniLibs/arm64-v8a/ | ||
| 73 | + rm -rf ./build-android-arm64-v8a-static/ | ||
| 74 | + | ||
| 75 | + - name: build android armv7-eabi | ||
| 76 | + shell: bash | ||
| 77 | + run: | | ||
| 78 | + export BUILD_SHARED_LIBS=OFF | ||
| 79 | + | ||
| 80 | + export CMAKE_CXX_COMPILER_LAUNCHER=ccache | ||
| 81 | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
| 82 | + | ||
| 83 | + export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME | ||
| 84 | + ./build-android-armv7-eabi.sh | ||
| 85 | + mkdir -p ./jniLibs/armeabi-v7a/ | ||
| 86 | + cp -v ./build-android-armv7-eabi-static/install/lib/*.so ./jniLibs/armeabi-v7a/ | ||
| 87 | + rm -rf ./build-android-armv7-eabi-static | ||
| 88 | + | ||
| 89 | + - name: build android x86_64 | ||
| 90 | + shell: bash | ||
| 91 | + run: | | ||
| 92 | + export BUILD_SHARED_LIBS=OFF | ||
| 93 | + | ||
| 94 | + export CMAKE_CXX_COMPILER_LAUNCHER=ccache | ||
| 95 | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
| 96 | + | ||
| 97 | + export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME | ||
| 98 | + ./build-android-x86-64.sh | ||
| 99 | + mkdir -p ./jniLibs/x86_64 | ||
| 100 | + cp -v ./build-android-x86-64-static/install/lib/*.so ./jniLibs/x86_64 | ||
| 101 | + rm -rf ./build-android-x86-64-static | ||
| 102 | + | ||
| 103 | + - name: build android x86 | ||
| 104 | + shell: bash | ||
| 105 | + run: | | ||
| 106 | + export BUILD_SHARED_LIBS=OFF | ||
| 107 | + | ||
| 108 | + export CMAKE_CXX_COMPILER_LAUNCHER=ccache | ||
| 109 | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
| 110 | + | ||
| 111 | + export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME | ||
| 112 | + ./build-android-x86.sh | ||
| 113 | + mkdir -p ./jniLibs/x86 | ||
| 114 | + cp -v ./build-android-x86/install/lib/*.so ./jniLibs/x86 | ||
| 115 | + rm -rf ./build-android-x86 | ||
| 116 | + | ||
| 117 | + - name: Copy files | ||
| 118 | + shell: bash | ||
| 119 | + run: | | ||
| 120 | + SHERPA_ONNX_VERSION=v$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) | ||
| 121 | + echo "SHERPA_ONNX_VERSION=$SHERPA_ONNX_VERSION" >> "$GITHUB_ENV" | ||
| 122 | + | ||
| 123 | + filename=sherpa-onnx-${SHERPA_ONNX_VERSION}-android-static-link-onnxruntime.tar.bz2 | ||
| 124 | + | ||
| 125 | + tar cjvf $filename ./jniLibs | ||
| 126 | + | ||
| 127 | + ls -lh | ||
| 128 | + | ||
| 129 | + - uses: actions/upload-artifact@v4 | ||
| 130 | + with: | ||
| 131 | + name: sherpa-onnx-android-libs-static | ||
| 132 | + path: ./jniLibs | ||
| 133 | + | ||
| 134 | + # https://huggingface.co/docs/hub/spaces-github-actions | ||
| 135 | + - name: Publish to huggingface | ||
| 136 | + if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') | ||
| 137 | + env: | ||
| 138 | + HF_TOKEN: ${{ secrets.HF_TOKEN }} | ||
| 139 | + uses: nick-fields/retry@v3 | ||
| 140 | + with: | ||
| 141 | + max_attempts: 20 | ||
| 142 | + timeout_seconds: 200 | ||
| 143 | + shell: bash | ||
| 144 | + command: | | ||
| 145 | + git config --global user.email "csukuangfj@gmail.com" | ||
| 146 | + git config --global user.name "Fangjun Kuang" | ||
| 147 | + du -h -d1 . | ||
| 148 | + ls -lh | ||
| 149 | + | ||
| 150 | + rm -rf huggingface | ||
| 151 | + export GIT_CLONE_PROTECTION_ACTIVE=false | ||
| 152 | + GIT_LFS_SKIP_SMUDGE=1 git clone https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs huggingface | ||
| 153 | + | ||
| 154 | + cd huggingface | ||
| 155 | + | ||
| 156 | + cp -v ../sherpa-onnx-*-android*.tar.bz2 ./ | ||
| 157 | + | ||
| 158 | + git status | ||
| 159 | + git lfs track "*.bz2" | ||
| 160 | + | ||
| 161 | + git add . | ||
| 162 | + | ||
| 163 | + git commit -m "upload sherpa-onnx-${SHERPA_ONNX_VERSION}-android.tar.bz2" | ||
| 164 | + | ||
| 165 | + git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main | ||
| 166 | + | ||
| 167 | + - name: Release android libs | ||
| 168 | + if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/') | ||
| 169 | + uses: svenstaro/upload-release-action@v2 | ||
| 170 | + with: | ||
| 171 | + file_glob: true | ||
| 172 | + overwrite: true | ||
| 173 | + file: sherpa-onnx-*-android*.tar.bz2 | ||
| 174 | + | ||
| 175 | + build-android-aar-static: | ||
| 176 | + needs: [build-android-static-libs] | ||
| 177 | + name: Android AAR | ||
| 178 | + runs-on: ${{ matrix.os }} | ||
| 179 | + strategy: | ||
| 180 | + fail-fast: false | ||
| 181 | + matrix: | ||
| 182 | + os: [ubuntu-latest] | ||
| 183 | + | ||
| 184 | + steps: | ||
| 185 | + - uses: actions/checkout@v4 | ||
| 186 | + with: | ||
| 187 | + fetch-depth: 0 | ||
| 188 | + | ||
| 189 | + # https://github.com/actions/setup-java | ||
| 190 | + - uses: actions/setup-java@v4 | ||
| 191 | + with: | ||
| 192 | + distribution: 'temurin' # See 'Supported distributions' for available options | ||
| 193 | + java-version: '21' | ||
| 194 | + | ||
| 195 | + - name: Display NDK HOME | ||
| 196 | + shell: bash | ||
| 197 | + run: | | ||
| 198 | + echo "ANDROID_NDK_LATEST_HOME: ${ANDROID_NDK_LATEST_HOME}" | ||
| 199 | + ls -lh ${ANDROID_NDK_LATEST_HOME} | ||
| 200 | + | ||
| 201 | + - name: Retrieve artifact | ||
| 202 | + uses: actions/download-artifact@v4 | ||
| 203 | + with: | ||
| 204 | + name: sherpa-onnx-android-libs-static | ||
| 205 | + path: /tmp/jniLibs | ||
| 206 | + | ||
| 207 | + - name: Show jni libs | ||
| 208 | + shell: bash | ||
| 209 | + run: | | ||
| 210 | + ls -lh /tmp/jniLibs | ||
| 211 | + | ||
| 212 | + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 arm64-v8a | ||
| 213 | + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 armeabi-v7a | ||
| 214 | + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 x86 | ||
| 215 | + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 x86_64 | ||
| 216 | + # | ||
| 217 | + - name: Copy libs | ||
| 218 | + shell: bash | ||
| 219 | + run: | | ||
| 220 | + for arch in arm64-v8a armeabi-v7a x86 x86_64; do | ||
| 221 | + cp -v /tmp/jniLibs/$arch/* android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/$arch/ | ||
| 222 | + done | ||
| 223 | + | ||
| 224 | + - name: Check libs | ||
| 225 | + shell: bash | ||
| 226 | + run: | | ||
| 227 | + ls -lh android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/* | ||
| 228 | + | ||
| 229 | + - name: Build aar | ||
| 230 | + shell: bash | ||
| 231 | + run: | | ||
| 232 | + cd android/SherpaOnnxAar | ||
| 233 | + | ||
| 234 | + ./gradlew :sherpa_onnx:assembleRelease | ||
| 235 | + | ||
| 236 | + - name: Display aar | ||
| 237 | + shell: bash | ||
| 238 | + run: | | ||
| 239 | + cd android/SherpaOnnxAar | ||
| 240 | + | ||
| 241 | + ls -lh ./sherpa_onnx/build/outputs/aar/sherpa_onnx-release.aar | ||
| 242 | + cp ./sherpa_onnx/build/outputs/aar/sherpa_onnx-release.aar ../../ | ||
| 243 | + | ||
| 244 | + - name: Rename aar | ||
| 245 | + shell: bash | ||
| 246 | + run: | | ||
| 247 | + SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) | ||
| 248 | + echo "SHERPA_ONNX_VERSION=$SHERPA_ONNX_VERSION" >> "$GITHUB_ENV" | ||
| 249 | + | ||
| 250 | + mv sherpa_onnx-release.aar sherpa-onnx-static-link-onnxruntime-${SHERPA_ONNX_VERSION}.aar | ||
| 251 | + | ||
| 252 | + - uses: actions/upload-artifact@v4 | ||
| 253 | + with: | ||
| 254 | + name: sherpa-onnx-android-aar-static | ||
| 255 | + path: ./*.aar | ||
| 256 | + | ||
| 257 | + # https://huggingface.co/docs/hub/spaces-github-actions | ||
| 258 | + - name: Publish to huggingface | ||
| 259 | + if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') | ||
| 260 | + env: | ||
| 261 | + HF_TOKEN: ${{ secrets.HF_TOKEN }} | ||
| 262 | + uses: nick-fields/retry@v3 | ||
| 263 | + with: | ||
| 264 | + max_attempts: 20 | ||
| 265 | + timeout_seconds: 200 | ||
| 266 | + shell: bash | ||
| 267 | + command: | | ||
| 268 | + git config --global user.email "csukuangfj@gmail.com" | ||
| 269 | + git config --global user.name "Fangjun Kuang" | ||
| 270 | + du -h -d1 . | ||
| 271 | + ls -lh | ||
| 272 | + | ||
| 273 | + rm -rf huggingface | ||
| 274 | + export GIT_CLONE_PROTECTION_ACTIVE=false | ||
| 275 | + GIT_LFS_SKIP_SMUDGE=1 git clone https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs huggingface | ||
| 276 | + | ||
| 277 | + cd huggingface | ||
| 278 | + dst=android/aar | ||
| 279 | + mkdir -p $dst | ||
| 280 | + | ||
| 281 | + cp -v ../*.aar $dst | ||
| 282 | + | ||
| 283 | + git status | ||
| 284 | + git lfs track "*.aar" | ||
| 285 | + | ||
| 286 | + git add . | ||
| 287 | + | ||
| 288 | + git commit -m "upload sherpa-onnx-${SHERPA_ONNX_VERSION}.aar" | ||
| 289 | + | ||
| 290 | + git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main | ||
| 291 | + | ||
| 292 | + - name: Release android aar | ||
| 293 | + if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/') | ||
| 294 | + uses: svenstaro/upload-release-action@v2 | ||
| 295 | + with: | ||
| 296 | + file_glob: true | ||
| 297 | + overwrite: true | ||
| 298 | + file: ./*.aar |
| @@ -82,11 +82,6 @@ if(SHERPA_ONNX_ENABLE_PYTHON AND NOT BUILD_SHARED_LIBS) | @@ -82,11 +82,6 @@ if(SHERPA_ONNX_ENABLE_PYTHON AND NOT BUILD_SHARED_LIBS) | ||
| 82 | set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE) | 82 | set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE) |
| 83 | endif() | 83 | endif() |
| 84 | 84 | ||
| 85 | -if(SHERPA_ONNX_ENABLE_JNI AND NOT BUILD_SHARED_LIBS) | ||
| 86 | - message(STATUS "Set BUILD_SHARED_LIBS to ON since SHERPA_ONNX_ENABLE_JNI is ON") | ||
| 87 | - set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE) | ||
| 88 | -endif() | ||
| 89 | - | ||
| 90 | if(SHERPA_ONNX_ENABLE_GPU) | 85 | if(SHERPA_ONNX_ENABLE_GPU) |
| 91 | message(WARNING "\ | 86 | message(WARNING "\ |
| 92 | Compiling for NVIDIA GPU is enabled. Please make sure cudatoolkit | 87 | Compiling for NVIDIA GPU is enabled. Please make sure cudatoolkit |
| @@ -157,7 +152,7 @@ message(STATUS "SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE ${SHERPA_ | @@ -157,7 +152,7 @@ message(STATUS "SHERPA_ONNX_USE_PRE_INSTALLED_ONNXRUNTIME_IF_AVAILABLE ${SHERPA_ | ||
| 157 | message(STATUS "SHERPA_ONNX_ENABLE_SANITIZER: ${SHERPA_ONNX_ENABLE_SANITIZER}") | 152 | message(STATUS "SHERPA_ONNX_ENABLE_SANITIZER: ${SHERPA_ONNX_ENABLE_SANITIZER}") |
| 158 | message(STATUS "SHERPA_ONNX_BUILD_C_API_EXAMPLES: ${SHERPA_ONNX_BUILD_C_API_EXAMPLES}") | 153 | message(STATUS "SHERPA_ONNX_BUILD_C_API_EXAMPLES: ${SHERPA_ONNX_BUILD_C_API_EXAMPLES}") |
| 159 | 154 | ||
| 160 | -if(BUILD_SHARED_LIBS) | 155 | +if(BUILD_SHARED_LIBS OR SHERPA_ONNX_ENABLE_JNI) |
| 161 | set(CMAKE_CXX_VISIBILITY_PRESET hidden) | 156 | set(CMAKE_CXX_VISIBILITY_PRESET hidden) |
| 162 | set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) | 157 | set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) |
| 163 | set(CMAKE_POSITION_INDEPENDENT_CODE ON) | 158 | set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
| 1 | #!/usr/bin/env bash | 1 | #!/usr/bin/env bash |
| 2 | set -ex | 2 | set -ex |
| 3 | 3 | ||
| 4 | -dir=$PWD/build-android-arm64-v8a | 4 | +# If BUILD_SHARED_LIBS is ON, we use libonnxruntime.so |
| 5 | +# If BUILD_SHARED_LIBS is OFF, we use libonnxruntime.a | ||
| 6 | +# | ||
| 7 | +# In any case, we will have libsherpa-onnx-jni.so | ||
| 8 | +# | ||
| 9 | +# If BUILD_SHARED_LIBS is OFF, then libonnxruntime.a is linked into libsherpa-onnx-jni.so | ||
| 10 | +# and you only need to copy libsherpa-onnx-jni.so to your Android projects. | ||
| 11 | +# | ||
| 12 | +# If BUILD_SHARED_LIBS is ON, then you need to copy both libsherpa-onnx-jni.so | ||
| 13 | +# and libonnxruntime.so to your Android projects | ||
| 14 | +# | ||
| 15 | +if [ -z $BUILD_SHARED_LIBS ]; then | ||
| 16 | + BUILD_SHARED_LIBS=ON | ||
| 17 | +fi | ||
| 18 | + | ||
| 19 | +if [ $BUILD_SHARED_LIBS == ON ]; then | ||
| 20 | + dir=$PWD/build-android-arm64-v8a | ||
| 21 | +else | ||
| 22 | + dir=$PWD/build-android-arm64-v8a-static | ||
| 23 | +fi | ||
| 5 | 24 | ||
| 6 | mkdir -p $dir | 25 | mkdir -p $dir |
| 7 | cd $dir | 26 | cd $dir |
| @@ -21,6 +40,9 @@ cd $dir | @@ -21,6 +40,9 @@ cd $dir | ||
| 21 | 40 | ||
| 22 | if [ -z $ANDROID_NDK ]; then | 41 | if [ -z $ANDROID_NDK ]; then |
| 23 | ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/22.1.7171670 | 42 | ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/22.1.7171670 |
| 43 | + if [ $BUILD_SHARED_LIBS == OFF ]; then | ||
| 44 | + ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/27.0.11718014 | ||
| 45 | + fi | ||
| 24 | # or use | 46 | # or use |
| 25 | # ANDROID_NDK=/star-fj/fangjun/software/android-ndk | 47 | # ANDROID_NDK=/star-fj/fangjun/software/android-ndk |
| 26 | # | 48 | # |
| @@ -32,6 +54,10 @@ if [ -z $ANDROID_NDK ]; then | @@ -32,6 +54,10 @@ if [ -z $ANDROID_NDK ]; then | ||
| 32 | # Tools -> SDK manager -> Android SDK | 54 | # Tools -> SDK manager -> Android SDK |
| 33 | # and set "Android SDK location" to /Users/fangjun/software/my-android | 55 | # and set "Android SDK location" to /Users/fangjun/software/my-android |
| 34 | ANDROID_NDK=/Users/fangjun/software/my-android/ndk/22.1.7171670 | 56 | ANDROID_NDK=/Users/fangjun/software/my-android/ndk/22.1.7171670 |
| 57 | + | ||
| 58 | + if [ $BUILD_SHARED_LIBS == OFF ]; then | ||
| 59 | + ANDROID_NDK=/Users/fangjun/software/my-android/ndk/27.0.11718014 | ||
| 60 | + fi | ||
| 35 | fi | 61 | fi |
| 36 | fi | 62 | fi |
| 37 | 63 | ||
| @@ -44,17 +70,29 @@ echo "ANDROID_NDK: $ANDROID_NDK" | @@ -44,17 +70,29 @@ echo "ANDROID_NDK: $ANDROID_NDK" | ||
| 44 | sleep 1 | 70 | sleep 1 |
| 45 | onnxruntime_version=1.17.1 | 71 | onnxruntime_version=1.17.1 |
| 46 | 72 | ||
| 47 | -if [ ! -f $onnxruntime_version/jni/arm64-v8a/libonnxruntime.so ]; then | ||
| 48 | - mkdir -p $onnxruntime_version | ||
| 49 | - pushd $onnxruntime_version | ||
| 50 | - wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-${onnxruntime_version}.zip | ||
| 51 | - unzip onnxruntime-android-${onnxruntime_version}.zip | ||
| 52 | - rm onnxruntime-android-${onnxruntime_version}.zip | ||
| 53 | - popd | ||
| 54 | -fi | 73 | +if [ $BUILD_SHARED_LIBS == ON ]; then |
| 74 | + if [ ! -f $onnxruntime_version/jni/arm64-v8a/libonnxruntime.so ]; then | ||
| 75 | + mkdir -p $onnxruntime_version | ||
| 76 | + pushd $onnxruntime_version | ||
| 77 | + wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-${onnxruntime_version}.zip | ||
| 78 | + unzip onnxruntime-android-${onnxruntime_version}.zip | ||
| 79 | + rm onnxruntime-android-${onnxruntime_version}.zip | ||
| 80 | + popd | ||
| 81 | + fi | ||
| 55 | 82 | ||
| 56 | -export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version/jni/arm64-v8a/ | ||
| 57 | -export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version/headers/ | 83 | + export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version/jni/arm64-v8a/ |
| 84 | + export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version/headers/ | ||
| 85 | +else | ||
| 86 | + if [ ! -f ${onnxruntime_version}-static/lib/libonnxruntime.a ]; then | ||
| 87 | + wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-arm64-v8a-static_lib-${onnxruntime_version}.zip | ||
| 88 | + unzip onnxruntime-android-arm64-v8a-static_lib-${onnxruntime_version}.zip | ||
| 89 | + rm onnxruntime-android-arm64-v8a-static_lib-${onnxruntime_version}.zip | ||
| 90 | + mv onnxruntime-android-arm64-v8a-static_lib-${onnxruntime_version} ${onnxruntime_version}-static | ||
| 91 | + fi | ||
| 92 | + | ||
| 93 | + export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version-static/lib/ | ||
| 94 | + export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version-static/include/ | ||
| 95 | +fi | ||
| 58 | 96 | ||
| 59 | echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR" | 97 | echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR" |
| 60 | echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" | 98 | echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" |
| @@ -88,24 +126,30 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" | @@ -88,24 +126,30 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" | ||
| 88 | -DBUILD_ESPEAK_NG_EXE=OFF \ | 126 | -DBUILD_ESPEAK_NG_EXE=OFF \ |
| 89 | -DBUILD_ESPEAK_NG_TESTS=OFF \ | 127 | -DBUILD_ESPEAK_NG_TESTS=OFF \ |
| 90 | -DCMAKE_BUILD_TYPE=Release \ | 128 | -DCMAKE_BUILD_TYPE=Release \ |
| 91 | - -DBUILD_SHARED_LIBS=ON \ | 129 | + -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS \ |
| 92 | -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ | 130 | -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ |
| 93 | -DSHERPA_ONNX_ENABLE_TESTS=OFF \ | 131 | -DSHERPA_ONNX_ENABLE_TESTS=OFF \ |
| 94 | -DSHERPA_ONNX_ENABLE_CHECK=OFF \ | 132 | -DSHERPA_ONNX_ENABLE_CHECK=OFF \ |
| 95 | -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ | 133 | -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ |
| 96 | -DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \ | 134 | -DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \ |
| 135 | + -DSHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY=OFF \ | ||
| 97 | -DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \ | 136 | -DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \ |
| 98 | -DCMAKE_INSTALL_PREFIX=./install \ | 137 | -DCMAKE_INSTALL_PREFIX=./install \ |
| 99 | -DANDROID_ABI="arm64-v8a" \ | 138 | -DANDROID_ABI="arm64-v8a" \ |
| 100 | -DANDROID_PLATFORM=android-21 .. | 139 | -DANDROID_PLATFORM=android-21 .. |
| 101 | 140 | ||
| 141 | + # By default, it links to libc++_static.a | ||
| 142 | + # -DANDROID_STL=c++_shared \ | ||
| 143 | + | ||
| 102 | # Please use -DANDROID_PLATFORM=android-27 if you want to use Android NNAPI | 144 | # Please use -DANDROID_PLATFORM=android-27 if you want to use Android NNAPI |
| 103 | 145 | ||
| 104 | # make VERBOSE=1 -j4 | 146 | # make VERBOSE=1 -j4 |
| 105 | make -j4 | 147 | make -j4 |
| 106 | make install/strip | 148 | make install/strip |
| 107 | -cp -fv $onnxruntime_version/jni/arm64-v8a/libonnxruntime.so install/lib | 149 | +cp -fv $onnxruntime_version/jni/arm64-v8a/libonnxruntime.so install/lib 2>/dev/null || true |
| 150 | +rm -rf install/share | ||
| 108 | rm -rf install/lib/pkgconfig | 151 | rm -rf install/lib/pkgconfig |
| 152 | +rm -rf install/lib/lib*.a | ||
| 109 | 153 | ||
| 110 | # To run the generated binaries on Android, please use the following steps. | 154 | # To run the generated binaries on Android, please use the following steps. |
| 111 | # | 155 | # |
| 1 | #!/usr/bin/env bash | 1 | #!/usr/bin/env bash |
| 2 | set -ex | 2 | set -ex |
| 3 | 3 | ||
| 4 | -dir=$PWD/build-android-armv7-eabi | 4 | +# If BUILD_SHARED_LIBS is ON, we use libonnxruntime.so |
| 5 | +# If BUILD_SHARED_LIBS is OFF, we use libonnxruntime.a | ||
| 6 | +# | ||
| 7 | +# In any case, we will have libsherpa-onnx-jni.so | ||
| 8 | +# | ||
| 9 | +# If BUILD_SHARED_LIBS is OFF, then libonnxruntime.a is linked into libsherpa-onnx-jni.so | ||
| 10 | +# and you only need to copy libsherpa-onnx-jni.so to your Android projects. | ||
| 11 | +# | ||
| 12 | +# If BUILD_SHARED_LIBS is ON, then you need to copy both libsherpa-onnx-jni.so | ||
| 13 | +# and libonnxruntime.so to your Android projects | ||
| 14 | +# | ||
| 15 | +if [ -z $BUILD_SHARED_LIBS ]; then | ||
| 16 | + BUILD_SHARED_LIBS=ON | ||
| 17 | +fi | ||
| 18 | + | ||
| 19 | +if [ $BUILD_SHARED_LIBS == ON ]; then | ||
| 20 | + dir=$PWD/build-android-armv7-eabi | ||
| 21 | +else | ||
| 22 | + dir=$PWD/build-android-armv7-eabi-static | ||
| 23 | +fi | ||
| 5 | 24 | ||
| 6 | mkdir -p $dir | 25 | mkdir -p $dir |
| 7 | cd $dir | 26 | cd $dir |
| @@ -21,6 +40,9 @@ cd $dir | @@ -21,6 +40,9 @@ cd $dir | ||
| 21 | 40 | ||
| 22 | if [ -z $ANDROID_NDK ]; then | 41 | if [ -z $ANDROID_NDK ]; then |
| 23 | ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/22.1.7171670 | 42 | ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/22.1.7171670 |
| 43 | + if [ $BUILD_SHARED_LIBS == OFF ]; then | ||
| 44 | + ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/27.0.11718014 | ||
| 45 | + fi | ||
| 24 | # or use | 46 | # or use |
| 25 | # ANDROID_NDK=/star-fj/fangjun/software/android-ndk | 47 | # ANDROID_NDK=/star-fj/fangjun/software/android-ndk |
| 26 | # | 48 | # |
| @@ -32,6 +54,10 @@ if [ -z $ANDROID_NDK ]; then | @@ -32,6 +54,10 @@ if [ -z $ANDROID_NDK ]; then | ||
| 32 | # Tools -> SDK manager -> Android SDK | 54 | # Tools -> SDK manager -> Android SDK |
| 33 | # and set "Android SDK location" to /Users/fangjun/software/my-android | 55 | # and set "Android SDK location" to /Users/fangjun/software/my-android |
| 34 | ANDROID_NDK=/Users/fangjun/software/my-android/ndk/22.1.7171670 | 56 | ANDROID_NDK=/Users/fangjun/software/my-android/ndk/22.1.7171670 |
| 57 | + | ||
| 58 | + if [ $BUILD_SHARED_LIBS == OFF ]; then | ||
| 59 | + ANDROID_NDK=/Users/fangjun/software/my-android/ndk/27.0.11718014 | ||
| 60 | + fi | ||
| 35 | fi | 61 | fi |
| 36 | fi | 62 | fi |
| 37 | 63 | ||
| @@ -45,17 +71,29 @@ sleep 1 | @@ -45,17 +71,29 @@ sleep 1 | ||
| 45 | 71 | ||
| 46 | onnxruntime_version=1.17.1 | 72 | onnxruntime_version=1.17.1 |
| 47 | 73 | ||
| 48 | -if [ ! -f $onnxruntime_version/jni/armeabi-v7a/libonnxruntime.so ]; then | ||
| 49 | - mkdir -p $onnxruntime_version | ||
| 50 | - pushd $onnxruntime_version | ||
| 51 | - wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-${onnxruntime_version}.zip | ||
| 52 | - unzip onnxruntime-android-${onnxruntime_version}.zip | ||
| 53 | - rm onnxruntime-android-${onnxruntime_version}.zip | ||
| 54 | - popd | ||
| 55 | -fi | 74 | +if [ $BUILD_SHARED_LIBS == ON ]; then |
| 75 | + if [ ! -f $onnxruntime_version/jni/armeabi-v7a/libonnxruntime.so ]; then | ||
| 76 | + mkdir -p $onnxruntime_version | ||
| 77 | + pushd $onnxruntime_version | ||
| 78 | + wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-${onnxruntime_version}.zip | ||
| 79 | + unzip onnxruntime-android-${onnxruntime_version}.zip | ||
| 80 | + rm onnxruntime-android-${onnxruntime_version}.zip | ||
| 81 | + popd | ||
| 82 | + fi | ||
| 83 | + | ||
| 84 | + export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version/jni/armeabi-v7a/ | ||
| 85 | + export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version/headers/ | ||
| 86 | +else | ||
| 87 | + if [ ! -f ${onnxruntime_version}-static/lib/libonnxruntime.a ]; then | ||
| 88 | + wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-armeabi-v7a-static_lib-${onnxruntime_version}.zip | ||
| 89 | + unzip onnxruntime-android-armeabi-v7a-static_lib-${onnxruntime_version}.zip | ||
| 90 | + rm onnxruntime-android-armeabi-v7a-static_lib-${onnxruntime_version}.zip | ||
| 91 | + mv onnxruntime-android-armeabi-v7a-static_lib-${onnxruntime_version} ${onnxruntime_version}-static | ||
| 92 | + fi | ||
| 56 | 93 | ||
| 57 | -export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version/jni/armeabi-v7a/ | ||
| 58 | -export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version/headers/ | 94 | + export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version-static/lib/ |
| 95 | + export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version-static/include/ | ||
| 96 | +fi | ||
| 59 | 97 | ||
| 60 | echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR" | 98 | echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR" |
| 61 | echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" | 99 | echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" |
| @@ -89,18 +127,25 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" | @@ -89,18 +127,25 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" | ||
| 89 | -DBUILD_ESPEAK_NG_EXE=OFF \ | 127 | -DBUILD_ESPEAK_NG_EXE=OFF \ |
| 90 | -DBUILD_ESPEAK_NG_TESTS=OFF \ | 128 | -DBUILD_ESPEAK_NG_TESTS=OFF \ |
| 91 | -DCMAKE_BUILD_TYPE=Release \ | 129 | -DCMAKE_BUILD_TYPE=Release \ |
| 92 | - -DBUILD_SHARED_LIBS=ON \ | 130 | + -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS \ |
| 93 | -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ | 131 | -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ |
| 94 | -DSHERPA_ONNX_ENABLE_TESTS=OFF \ | 132 | -DSHERPA_ONNX_ENABLE_TESTS=OFF \ |
| 95 | -DSHERPA_ONNX_ENABLE_CHECK=OFF \ | 133 | -DSHERPA_ONNX_ENABLE_CHECK=OFF \ |
| 96 | -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ | 134 | -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ |
| 97 | -DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \ | 135 | -DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \ |
| 136 | + -DSHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY=OFF \ | ||
| 98 | -DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \ | 137 | -DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \ |
| 99 | -DCMAKE_INSTALL_PREFIX=./install \ | 138 | -DCMAKE_INSTALL_PREFIX=./install \ |
| 100 | -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON \ | 139 | -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON \ |
| 101 | -DANDROID_PLATFORM=android-21 .. | 140 | -DANDROID_PLATFORM=android-21 .. |
| 141 | + | ||
| 142 | + # By default, it links to libc++_static.a | ||
| 143 | + # -DANDROID_STL=c++_shared \ | ||
| 144 | + | ||
| 102 | # make VERBOSE=1 -j4 | 145 | # make VERBOSE=1 -j4 |
| 103 | make -j4 | 146 | make -j4 |
| 104 | make install/strip | 147 | make install/strip |
| 105 | -cp -fv $onnxruntime_version/jni/armeabi-v7a/libonnxruntime.so install/lib | 148 | +cp -fv $onnxruntime_version/jni/armeabi-v7a/libonnxruntime.so install/lib 2>/dev/null || true |
| 149 | +rm -rf install/share | ||
| 106 | rm -rf install/lib/pkgconfig | 150 | rm -rf install/lib/pkgconfig |
| 151 | +rm -rf install/lib/lib*.a |
| 1 | #!/usr/bin/env bash | 1 | #!/usr/bin/env bash |
| 2 | set -ex | 2 | set -ex |
| 3 | 3 | ||
| 4 | -dir=$PWD/build-android-x86-64 | 4 | +# If BUILD_SHARED_LIBS is ON, we use libonnxruntime.so |
| 5 | +# If BUILD_SHARED_LIBS is OFF, we use libonnxruntime.a | ||
| 6 | +# | ||
| 7 | +# In any case, we will have libsherpa-onnx-jni.so | ||
| 8 | +# | ||
| 9 | +# If BUILD_SHARED_LIBS is OFF, then libonnxruntime.a is linked into libsherpa-onnx-jni.so | ||
| 10 | +# and you only need to copy libsherpa-onnx-jni.so to your Android projects. | ||
| 11 | +# | ||
| 12 | +# If BUILD_SHARED_LIBS is ON, then you need to copy both libsherpa-onnx-jni.so | ||
| 13 | +# and libonnxruntime.so to your Android projects | ||
| 14 | +# | ||
| 15 | +if [ -z $BUILD_SHARED_LIBS ]; then | ||
| 16 | + BUILD_SHARED_LIBS=ON | ||
| 17 | +fi | ||
| 18 | + | ||
| 19 | +if [ $BUILD_SHARED_LIBS == ON ]; then | ||
| 20 | + dir=$PWD/build-android-x86-64 | ||
| 21 | +else | ||
| 22 | + dir=$PWD/build-android-x86-64-static | ||
| 23 | +fi | ||
| 5 | 24 | ||
| 6 | mkdir -p $dir | 25 | mkdir -p $dir |
| 7 | cd $dir | 26 | cd $dir |
| @@ -21,6 +40,9 @@ cd $dir | @@ -21,6 +40,9 @@ cd $dir | ||
| 21 | 40 | ||
| 22 | if [ -z $ANDROID_NDK ]; then | 41 | if [ -z $ANDROID_NDK ]; then |
| 23 | ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/22.1.7171670 | 42 | ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/22.1.7171670 |
| 43 | + if [ $BUILD_SHARED_LIBS == OFF ]; then | ||
| 44 | + ANDROID_NDK=/star-fj/fangjun/software/android-sdk/ndk/27.0.11718014 | ||
| 45 | + fi | ||
| 24 | # or use | 46 | # or use |
| 25 | # ANDROID_NDK=/star-fj/fangjun/software/android-ndk | 47 | # ANDROID_NDK=/star-fj/fangjun/software/android-ndk |
| 26 | # | 48 | # |
| @@ -32,6 +54,10 @@ if [ -z $ANDROID_NDK ]; then | @@ -32,6 +54,10 @@ if [ -z $ANDROID_NDK ]; then | ||
| 32 | # Tools -> SDK manager -> Android SDK | 54 | # Tools -> SDK manager -> Android SDK |
| 33 | # and set "Android SDK location" to /Users/fangjun/software/my-android | 55 | # and set "Android SDK location" to /Users/fangjun/software/my-android |
| 34 | ANDROID_NDK=/Users/fangjun/software/my-android/ndk/22.1.7171670 | 56 | ANDROID_NDK=/Users/fangjun/software/my-android/ndk/22.1.7171670 |
| 57 | + | ||
| 58 | + if [ $BUILD_SHARED_LIBS == OFF ]; then | ||
| 59 | + ANDROID_NDK=/Users/fangjun/software/my-android/ndk/27.0.11718014 | ||
| 60 | + fi | ||
| 35 | fi | 61 | fi |
| 36 | fi | 62 | fi |
| 37 | 63 | ||
| @@ -45,17 +71,29 @@ sleep 1 | @@ -45,17 +71,29 @@ sleep 1 | ||
| 45 | 71 | ||
| 46 | onnxruntime_version=1.17.1 | 72 | onnxruntime_version=1.17.1 |
| 47 | 73 | ||
| 48 | -if [ ! -f $onnxruntime_version/jni/x86_64/libonnxruntime.so ]; then | ||
| 49 | - mkdir -p $onnxruntime_version | ||
| 50 | - pushd $onnxruntime_version | ||
| 51 | - wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-${onnxruntime_version}.zip | ||
| 52 | - unzip onnxruntime-android-${onnxruntime_version}.zip | ||
| 53 | - rm onnxruntime-android-${onnxruntime_version}.zip | ||
| 54 | - popd | ||
| 55 | -fi | 74 | +if [ $BUILD_SHARED_LIBS == ON ]; then |
| 75 | + if [ ! -f $onnxruntime_version/jni/x86_64/libonnxruntime.so ]; then | ||
| 76 | + mkdir -p $onnxruntime_version | ||
| 77 | + pushd $onnxruntime_version | ||
| 78 | + wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-${onnxruntime_version}.zip | ||
| 79 | + unzip onnxruntime-android-${onnxruntime_version}.zip | ||
| 80 | + rm onnxruntime-android-${onnxruntime_version}.zip | ||
| 81 | + popd | ||
| 82 | + fi | ||
| 83 | + | ||
| 84 | + export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version/jni/x86_64/ | ||
| 85 | + export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version/headers/ | ||
| 86 | +else | ||
| 87 | + if [ ! -f ${onnxruntime_version}-static/lib/libonnxruntime.a ]; then | ||
| 88 | + wget -c -q https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime-android-x86_64-static_lib-${onnxruntime_version}.zip | ||
| 89 | + unzip onnxruntime-android-x86_64-static_lib-${onnxruntime_version}.zip | ||
| 90 | + rm onnxruntime-android-x86_64-static_lib-${onnxruntime_version}.zip | ||
| 91 | + mv onnxruntime-android-x86_64-static_lib-${onnxruntime_version} ${onnxruntime_version}-static | ||
| 92 | + fi | ||
| 56 | 93 | ||
| 57 | -export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version/jni/x86_64/ | ||
| 58 | -export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version/headers/ | 94 | + export SHERPA_ONNXRUNTIME_LIB_DIR=$dir/$onnxruntime_version-static/lib/ |
| 95 | + export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$dir/$onnxruntime_version-static/include/ | ||
| 96 | +fi | ||
| 59 | 97 | ||
| 60 | echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR" | 98 | echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR" |
| 61 | echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" | 99 | echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" |
| @@ -89,20 +127,27 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" | @@ -89,20 +127,27 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" | ||
| 89 | -DBUILD_ESPEAK_NG_EXE=OFF \ | 127 | -DBUILD_ESPEAK_NG_EXE=OFF \ |
| 90 | -DBUILD_ESPEAK_NG_TESTS=OFF \ | 128 | -DBUILD_ESPEAK_NG_TESTS=OFF \ |
| 91 | -DCMAKE_BUILD_TYPE=Release \ | 129 | -DCMAKE_BUILD_TYPE=Release \ |
| 92 | - -DBUILD_SHARED_LIBS=ON \ | 130 | + -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS \ |
| 93 | -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ | 131 | -DSHERPA_ONNX_ENABLE_PYTHON=OFF \ |
| 94 | -DSHERPA_ONNX_ENABLE_TESTS=OFF \ | 132 | -DSHERPA_ONNX_ENABLE_TESTS=OFF \ |
| 95 | -DSHERPA_ONNX_ENABLE_CHECK=OFF \ | 133 | -DSHERPA_ONNX_ENABLE_CHECK=OFF \ |
| 96 | -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ | 134 | -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ |
| 97 | -DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \ | 135 | -DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \ |
| 136 | + -DSHERPA_ONNX_LINK_LIBSTDCPP_STATICALLY=OFF \ | ||
| 98 | -DCMAKE_INSTALL_PREFIX=./install \ | 137 | -DCMAKE_INSTALL_PREFIX=./install \ |
| 99 | -DANDROID_ABI="x86_64" \ | 138 | -DANDROID_ABI="x86_64" \ |
| 100 | -DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \ | 139 | -DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \ |
| 101 | -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \ | 140 | -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \ |
| 102 | -DANDROID_PLATFORM=android-21 .. | 141 | -DANDROID_PLATFORM=android-21 .. |
| 103 | 142 | ||
| 143 | + # By default, it links to libc++_static.a | ||
| 144 | + # -DANDROID_STL=c++_shared \ | ||
| 145 | + | ||
| 104 | # make VERBOSE=1 -j4 | 146 | # make VERBOSE=1 -j4 |
| 105 | make -j4 | 147 | make -j4 |
| 106 | make install/strip | 148 | make install/strip |
| 107 | -cp -fv $onnxruntime_version/jni/x86_64/libonnxruntime.so install/lib | 149 | + |
| 150 | +cp -fv $onnxruntime_version/jni/x86_64/libonnxruntime.so install/lib 2>/dev/null || true | ||
| 151 | +rm -rf install/share | ||
| 108 | rm -rf install/lib/pkgconfig | 152 | rm -rf install/lib/pkgconfig |
| 153 | +rm -rf install/lib/lib*.a |
| 1 | #!/usr/bin/env bash | 1 | #!/usr/bin/env bash |
| 2 | set -ex | 2 | set -ex |
| 3 | 3 | ||
| 4 | +if [ x$BUILD_SHARED_LIBS == xOFF ]; then | ||
| 5 | + echo "BUILD_SHARED_LIBS=OFF is ignored for Android x86." | ||
| 6 | + echo "Always link with libonnxruntime.so" | ||
| 7 | + sleep 2 | ||
| 8 | +fi | ||
| 9 | + | ||
| 4 | dir=$PWD/build-android-x86 | 10 | dir=$PWD/build-android-x86 |
| 5 | 11 | ||
| 6 | mkdir -p $dir | 12 | mkdir -p $dir |
| @@ -39,7 +39,7 @@ if(SHERPA_ONNX_ENABLE_SPEAKER_DIARIZATION) | @@ -39,7 +39,7 @@ if(SHERPA_ONNX_ENABLE_SPEAKER_DIARIZATION) | ||
| 39 | ) | 39 | ) |
| 40 | endif() | 40 | endif() |
| 41 | 41 | ||
| 42 | -add_library(sherpa-onnx-jni ${sources}) | 42 | +add_library(sherpa-onnx-jni SHARED ${sources}) |
| 43 | 43 | ||
| 44 | target_compile_definitions(sherpa-onnx-jni PRIVATE SHERPA_ONNX_BUILD_SHARED_LIBS=1) | 44 | target_compile_definitions(sherpa-onnx-jni PRIVATE SHERPA_ONNX_BUILD_SHARED_LIBS=1) |
| 45 | target_compile_definitions(sherpa-onnx-jni PRIVATE SHERPA_ONNX_BUILD_MAIN_LIB=1) | 45 | target_compile_definitions(sherpa-onnx-jni PRIVATE SHERPA_ONNX_BUILD_MAIN_LIB=1) |
-
请 注册 或 登录 后发表评论