Xenobd/whisper.cpp
0
1name: CI2 3on:4 push:5 branches:6 - master7 tags:8 - 'v*'9 paths: ['.github/workflows/build.yml',10 '**/CMakeLists.txt',11 '**/Makefile',12 '**/*.mk',13 '**/*.cmake',14 '**/*.in',15 '**/*.h',16 '**/*.hpp',17 '**/*.c',18 '**/*.cpp',19 '**/*.cu',20 '**/*.cuh',21 '**/*.cl',22 '**/*.swift',23 '**/*.m',24 '**/*.mm',25 '**/*.metal',26 '**/*.comp',27 '**/*.java']28 pull_request:29 types: [opened, synchronize, reopened]30 workflow_dispatch:31 inputs:32 create_release:33 description: 'Create new release'34 required: true35 type: boolean36 pre_release_tag:37 description: 'Pre-release tag name'38 required: false39 type: string40 run_type:41 description: 'Workflow type to run'42 required: true43 type: choice44 options:45 - full-ci46 - release-only47 48concurrency:49 group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}50 cancel-in-progress: true51 52permissions:53 contents: write # for creating release54 55env:56 BRANCH_NAME: ${{ github.head_ref || github.ref_name }}57 ubuntu_image: "ubuntu:22.04"58 VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"59 60jobs:61 determine-tag:62 runs-on: ubuntu-latest63 outputs:64 tag_name: ${{ steps.tag.outputs.name }}65 should_release: ${{ steps.tag.outputs.should_release }}66 67 steps:68 - name: Checkout with full history69 uses: actions/checkout@v470 with:71 fetch-depth: 072 73 - name: Determine tag name74 id: tag75 shell: bash76 run: |77 BUILD_NUMBER=$(git rev-list --count HEAD)78 SHORT_HASH=$(git rev-parse --short=7 HEAD)79 CUSTOM_TAG="${{ github.event.inputs.pre_release_tag }}"80 SHOULD_RELEASE="false"81 82 echo "Raw values:"83 echo "BUILD_NUMBER: $BUILD_NUMBER"84 echo "SHORT_HASH: $SHORT_HASH"85 echo "BRANCH_NAME: ${{ env.BRANCH_NAME }}"86 echo "CUSTOM_TAG: $CUSTOM_TAG"87 88 if [[ "${{ github.ref_type }}" == "tag" ]]; then89 echo "Using pushed tag name"90 TAG_NAME="${{ github.ref_name }}"91 SHOULD_RELEASE="true"92 elif [[ -n "$CUSTOM_TAG" ]]; then93 echo "Using custom tag"94 TAG_NAME="${CUSTOM_TAG}"95 SHOULD_RELEASE="true"96 elif [[ "${{ github.event.inputs.create_release }}" == "true" ]]; then97 echo "Manual release requested"98 SHOULD_RELEASE="true"99 TAG_NAME="b${BUILD_NUMBER}"100 elif [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then101 echo "Using master branch format"102 TAG_NAME="b${BUILD_NUMBER}"103 SHOULD_RELEASE="false"104 else105 echo "Using non-master branch format"106 SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')107 TAG_NAME="${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}"108 SHOULD_RELEASE="false"109 fi110 111 echo "Final tag name: $TAG_NAME"112 echo "Should release: $SHOULD_RELEASE"113 echo "name=$TAG_NAME" >> $GITHUB_OUTPUT114 echo "should_release=$SHOULD_RELEASE" >> $GITHUB_OUTPUT115 116 117 ubuntu-22:118 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||119 github.event.inputs.run_type == 'full-ci' }}120 runs-on: ubuntu-22.04121 122 strategy:123 fail-fast: false124 matrix:125 arch: [linux/amd64, linux/ppc64le]126 127 steps:128 - name: Clone129 uses: actions/checkout@v4130 131 - name: Set up QEMU132 uses: docker/setup-qemu-action@v3133 134 - name: Build ${{ matrix.arch }}135 run: |136 docker run --platform ${{ matrix.arch }} --rm \137 -v ${{ github.workspace }}:/workspace \138 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '139 set -e140 export DEBIAN_FRONTEND=noninteractive141 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list142 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list143 144 apt update145 apt install -y build-essential libsdl2-dev cmake git146 cmake -B build147 cmake --build build --config Release -j $(nproc)'148 149 ubuntu-22-arm64:150 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||151 github.event.inputs.run_type == 'full-ci' }}152 runs-on: ubuntu-22.04153 154 strategy:155 fail-fast: false156 matrix:157 arch: [linux/arm64]158 159 steps:160 - name: Clone161 uses: actions/checkout@v4162 163 - name: Set up QEMU164 uses: docker/setup-qemu-action@v3165 166 - name: Build ${{ matrix.arch }}167 run: |168 docker run --platform ${{ matrix.arch }} --rm \169 -v ${{ github.workspace }}:/workspace \170 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '171 set -e172 export DEBIAN_FRONTEND=noninteractive173 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list174 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list175 176 apt-get update177 apt-get install -y ca-certificates178 sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list179 180 apt update181 apt install -y build-essential libsdl2-dev cmake git182 cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8-a183 cmake --build build --config Release -j $(nproc)'184 185 ubuntu-22-arm-v7:186 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||187 github.event.inputs.run_type == 'full-ci' }}188 runs-on: ubuntu-22.04189 190 strategy:191 fail-fast: false192 matrix:193 arch: [linux/arm/v7]194 195 steps:196 - name: Clone197 uses: actions/checkout@v4198 199 - name: Set up QEMU200 uses: docker/setup-qemu-action@v3201 202 - name: Build ${{ matrix.arch }}203 run: |204 docker run --platform ${{ matrix.arch }} --rm \205 -v ${{ github.workspace }}:/workspace \206 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '207 set -e208 export DEBIAN_FRONTEND=noninteractive209 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list210 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list211 212 apt-get update213 apt-get install -y ca-certificates214 sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list215 216 apt update217 apt install -y build-essential libsdl2-dev cmake git218 cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv7-a+fp219 cmake --build build --config Release -j $(nproc)'220 221 macOS-latest:222 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||223 github.event.inputs.run_type == 'full-ci' }}224 runs-on: macOS-latest225 226 strategy:227 matrix:228 destination: ['generic/platform=macOS', 'generic/platform=iOS', 'generic/platform=tvOS']229 230 steps:231 - name: Clone232 id: checkout233 uses: actions/checkout@v4234 235 - name: ccache236 uses: hendrikmuhs/ccache-action@v1.2.16237 with:238 key: macOS-latest-swift239 evict-old-files: 1d240 241 - name: Dependencies242 run: |243 brew update244 brew install sdl2 cmake245 246 - name: Build247 run: |248 sysctl -a249 cmake -B build -G Xcode \250 -DGGML_METAL_USE_BF16=ON \251 -DGGML_METAL_EMBED_LIBRARY=ON \252 -DWHISPER_BUILD_EXAMPLES=OFF \253 -DWHISPER_BUILD_TESTS=OFF \254 -DWHISPER_BUILD_SERVER=OFF \255 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64"256 cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)257 258 259# freeBSD-latest:260# runs-on: macos-13261#262# steps:263# - name: Clone264# uses: actions/checkout@v4265#266# - name: Build267# uses: cross-platform-actions/action@v0.27.0268# with:269# operating_system: freebsd270# version: '14.2'271# run: |272# sudo pkg update273# sudo pkg install -y gmake sdl2 cmake git274# cmake -B build275# cmake --build build --config Release276 277 ubuntu-22-gcc:278 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||279 github.event.inputs.run_type == 'full-ci' }}280 runs-on: ubuntu-22.04281 282 strategy:283 fail-fast: false284 matrix:285 build: [Debug, Release]286 arch: [linux/amd64, linux/ppc64le]287 288 steps:289 - name: Clone290 uses: actions/checkout@v4291 292 - name: Set up QEMU293 uses: docker/setup-qemu-action@v3294 295 - name: Build ${{ matrix.arch }}296 run: |297 docker run --platform ${{ matrix.arch }} --rm \298 -v ${{ github.workspace }}:/workspace \299 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '300 set -e301 export DEBIAN_FRONTEND=noninteractive302 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list303 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list304 305 apt update306 apt install -y build-essential cmake libsdl2-dev git307 cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }}308 make309 ctest -L gh --output-on-failure'310 311 ubuntu-22-gcc-arm64:312 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||313 github.event.inputs.run_type == 'full-ci' }}314 runs-on: ubuntu-22.04315 316 strategy:317 fail-fast: false318 matrix:319 build: [Debug, Release]320 arch: [linux/arm64]321 322 steps:323 - name: Clone324 uses: actions/checkout@v4325 326 - name: Set up QEMU327 uses: docker/setup-qemu-action@v3328 329 - name: Build ${{ matrix.arch }}330 run: |331 docker run --platform ${{ matrix.arch }} --rm \332 -v ${{ github.workspace }}:/workspace \333 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '334 set -e335 export DEBIAN_FRONTEND=noninteractive336 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list337 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list338 339 apt-get update340 apt-get install -y ca-certificates341 sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list342 343 apt update344 apt install -y build-essential cmake libsdl2-dev git345 cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8-a346 make347 ctest -L gh --output-on-failure'348 349 ubuntu-22-gcc-arm-v7:350 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||351 github.event.inputs.run_type == 'full-ci' }}352 runs-on: ubuntu-22.04353 354 strategy:355 fail-fast: false356 matrix:357 build: [Debug, Release]358 arch: [linux/arm/v7]359 360 steps:361 - name: Clone362 uses: actions/checkout@v4363 364 - name: Set up QEMU365 uses: docker/setup-qemu-action@v3366 367 - name: Build ${{ matrix.arch }}368 run: |369 docker run --platform ${{ matrix.arch }} --rm \370 -v ${{ github.workspace }}:/workspace \371 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '372 set -e373 export DEBIAN_FRONTEND=noninteractive374 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list375 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list376 377 apt-get update378 apt-get install -y ca-certificates379 sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list380 381 apt update382 apt install -y build-essential cmake libsdl2-dev git383 cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv7-a+fp384 make385 ctest -L gh --output-on-failure'386 387 ubuntu-22-clang:388 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||389 github.event.inputs.run_type == 'full-ci' }}390 runs-on: ubuntu-22.04391 392 strategy:393 fail-fast: false394 matrix:395 build: [Debug, Release]396 #arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le]397 # TODO: arm/v7 disabled due to clang bug398 # https://github.com/ggerganov/whisper.cpp/actions/runs/9657764109/job/26637633042?pr=2256#step:4:1990399 arch: [linux/amd64, linux/arm64, linux/ppc64le]400 401 steps:402 - name: Clone403 uses: actions/checkout@v4404 405 - name: Set up QEMU406 uses: docker/setup-qemu-action@v3407 408 - name: Build ${{ matrix.arch }}409 run: |410 docker run --platform ${{ matrix.arch }} --rm \411 -v ${{ github.workspace }}:/workspace \412 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '413 set -e414 export DEBIAN_FRONTEND=noninteractive415 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list416 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list417 418 apt-get update419 apt-get install -y ca-certificates420 sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list421 422 apt update423 apt install -y clang build-essential cmake libsdl2-dev git424 cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang425 make426 ctest -L gh --output-on-failure'427 428 ubuntu-22-gcc-sanitized:429 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||430 github.event.inputs.run_type == 'full-ci' }}431 runs-on: ubuntu-22.04432 433 strategy:434 fail-fast: false435 matrix:436 sanitizer: [ADDRESS, THREAD, UNDEFINED]437 arch: [linux/amd64]438 439 steps:440 - name: Clone441 uses: actions/checkout@v4442 443 - name: Set up QEMU444 uses: docker/setup-qemu-action@v3445 446 - name: Build ${{ matrix.arch }}447 run: |448 docker run --platform ${{ matrix.arch }} --rm \449 -v ${{ github.workspace }}:/workspace \450 -w /workspace ${{ env.ubuntu_image }} /bin/sh -c '451 set -e452 export DEBIAN_FRONTEND=noninteractive453 sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list454 sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list455 456 apt update457 apt install -y build-essential cmake git458 cmake . -DCMAKE_BUILD_TYPE=Debug \459 -DWHISPER_SANITIZE_${{ matrix.sanitizer }}=ON \460 -DGGML_OPENMP=OFF461 make462 ctest -L gh --output-on-failure'463 464 ubuntu-22-cmake-sycl:465 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||466 github.event.inputs.run_type == 'full-ci' }}467 runs-on: ubuntu-22.04468 469 strategy:470 fail-fast: false471 matrix:472 dwhisper_sycl: [ON]473 dcmake_c_compiler: [icx]474 dcmake_cxx_compiler: [icpx]475 arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le]476 477 continue-on-error: true478 479 steps:480 - name: Clone481 uses: actions/checkout@v4482 483 - name: add oneAPI to apt484 shell: bash485 run: |486 cd /tmp487 wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB488 sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB489 rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB490 sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"491 492 - name: install oneAPI dpcpp compiler493 shell: bash494 run: |495 sudo apt update496 sudo apt install intel-oneapi-compiler-dpcpp-cpp git497 498 - name: install oneAPI MKL library499 shell: bash500 run: |501 sudo apt install intel-oneapi-mkl-devel git502 503 - name: Clone504 id: checkout505 uses: actions/checkout@v4506 507 - name: Build508 id: cmake_build509 run: |510 source /opt/intel/oneapi/setvars.sh511 mkdir build512 cd build513 cmake -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx ..514 cmake --build . --config Release -j $(nproc)515 516 ubuntu-22-cmake-sycl-fp16:517 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||518 github.event.inputs.run_type == 'full-ci' }}519 runs-on: ubuntu-22.04520 521 strategy:522 fail-fast: false523 matrix:524 dwhisper_sycl: [ON]525 dcmake_c_compiler: [icx]526 dcmake_cxx_compiler: [icpx]527 arch: [linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le]528 529 continue-on-error: true530 531 steps:532 - name: Clone533 uses: actions/checkout@v4534 535 - name: add oneAPI to apt536 shell: bash537 run: |538 cd /tmp539 wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB540 sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB541 rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB542 sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"543 544 - name: install oneAPI dpcpp compiler545 shell: bash546 run: |547 sudo apt update548 sudo apt install intel-oneapi-compiler-dpcpp-cpp git549 550 - name: install oneAPI MKL library551 shell: bash552 run: |553 sudo apt install intel-oneapi-mkl-devel554 555 - name: Clone556 id: checkout557 uses: actions/checkout@v4558 559 - name: Build560 id: cmake_build561 run: |562 source /opt/intel/oneapi/setvars.sh563 mkdir build564 cd build565 cmake -DGGML_SYCL_F16=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx ..566 cmake --build . --config Release -j $(nproc)567 568 windows-msys2:569 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||570 github.event.inputs.run_type == 'full-ci' }}571 runs-on: windows-latest572 573 strategy:574 fail-fast: false575 matrix:576 include:577 - { sys: UCRT64, env: ucrt-x86_64, build: Release }578 - { sys: CLANG64, env: clang-x86_64, build: Release }579 580 steps:581 - name: Clone582 uses: actions/checkout@v4583 584 - name: Setup ${{ matrix.sys }}585 uses: msys2/setup-msys2@v2586 with:587 update: true588 msystem: ${{matrix.sys}}589 install: >-590 base-devel591 git592 mingw-w64-${{matrix.env}}-toolchain593 mingw-w64-${{matrix.env}}-cmake594 mingw-w64-${{matrix.env}}-SDL2595 mingw-w64-${{matrix.env}}-openblas596 597 - name: Build using CMake598 shell: msys2 {0}599 run: |600 cmake -B build -DWHISPER_SDL2=ON601 cmake --build build --config ${{ matrix.build }} -j $(nproc)602 603 - name: Clean after building using CMake604 shell: msys2 {0}605 run: |606 rm -rf build607 608 - name: Build using CMake w/ OpenBLAS609 shell: msys2 {0}610 run: |611 cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS612 cmake --build build --config ${{ matrix.build }} -j $(nproc)613 614 windows:615 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||616 github.event.inputs.run_type == 'full-ci' }}617 runs-on: windows-latest618 needs: determine-tag619 620 strategy:621 matrix:622 build: [Release]623 arch: [Win32, x64]624 sdl2: [ON]625 include:626 - arch: Win32627 s2arc: x86628 jnaPath: win32-x86629 - arch: x64630 s2arc: x64631 jnaPath: win32-x86-64632 - sdl2: ON633 s2ver: 2.28.5634 635 steps:636 - name: Clone637 uses: actions/checkout@v4638 639 - name: Add msbuild to PATH640 uses: microsoft/setup-msbuild@v2641 642 - name: Fetch SDL2 and set SDL2_DIR643 if: matrix.sdl2 == 'ON'644 run: |645 C:/msys64/usr/bin/wget.exe -qO sdl2.zip https://github.com/libsdl-org/SDL/releases/download/release-${{ matrix.s2ver }}/SDL2-devel-${{ matrix.s2ver }}-VC.zip646 7z x sdl2.zip647 echo "SDL2_DIR=$env:GITHUB_WORKSPACE/SDL2-${{ matrix.s2ver }}/cmake" >> $env:GITHUB_ENV648 649 - name: Configure650 run: >651 cmake -S . -B ./build -A ${{ matrix.arch }}652 -DCMAKE_BUILD_TYPE=${{ matrix.build }}653 -DBUILD_SHARED_LIBS=ON654 -DWHISPER_SDL2=${{ matrix.sdl2 }}655 656 - name: Build657 run: |658 cd ./build659 msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }}660 661 - name: Copy SDL2.dll662 if: matrix.sdl2 == 'ON'663 run: copy "$env:SDL2_DIR/../lib/${{ matrix.s2arc }}/SDL2.dll" build/bin/${{ matrix.build }}664 665 - name: Upload SDL2.dll666 if: matrix.sdl2 == 'ON'667 uses: actions/upload-artifact@v4668 with:669 name: ${{ matrix.s2arc }}_SDL2.dll670 path: build/bin/${{ matrix.build }}/SDL2.dll671 672 - name: Upload whisper dll673 uses: actions/upload-artifact@v4674 with:675 name: whisper_${{ matrix.arch }}.dll676 path: build/bin/${{ matrix.build }}/whisper.dll677 678 - name: Upload ggml dll679 uses: actions/upload-artifact@v4680 with:681 name: ggml_${{ matrix.arch }}.dll682 path: build/bin/${{ matrix.build }}/ggml.dll683 684 - name: Upload ggml base dll685 uses: actions/upload-artifact@v4686 with:687 name: ggml_base_${{ matrix.arch }}.dll688 path: build/bin/${{ matrix.build }}/ggml-base.dll689 690 - name: Upload ggml cpu dll691 uses: actions/upload-artifact@v4692 with:693 name: ggml_cpu_${{ matrix.arch }}.dll694 path: build/bin/${{ matrix.build }}/ggml-cpu.dll695 696 - name: Pack bin artifacts697 shell: pwsh698 run: |699 Compress-Archive -Path "build/bin/${{ matrix.build }}" -DestinationPath "whisper-bin-${{ matrix.arch }}.zip"700 701 - name: Upload binaries702 if: matrix.sdl2 == 'ON' && ${{ needs.determine-tag.outputs.should_release }}703 uses: actions/upload-artifact@v4704 with:705 name: whisper-bin-${{ matrix.arch }}.zip706 path: whisper-bin-${{ matrix.arch }}.zip707 708 windows-blas:709 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||710 github.event.inputs.run_type == 'full-ci' }}711 runs-on: windows-latest712 713 strategy:714 matrix:715 build: [Release]716 arch: [Win32, x64]717 blas: [ON]718 sdl2: [ON]719 blasver: [0.3.29]720 include:721 - arch: Win32722 s2arc: x86723 blasfile: x86724 - arch: x64725 s2arc: x64726 blasfile: x64_64727 - sdl2: ON728 s2ver: 2.28.5729 730 steps:731 - name: Clone732 uses: actions/checkout@v4733 734 - name: Export GitHub Actions cache environment variables735 uses: actions/github-script@v7736 with:737 script: |738 core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');739 core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');740 741 - name: Add msbuild to PATH742 uses: microsoft/setup-msbuild@v2743 744 - name: Install OpenBLAS and pkgconfiglite745 if: matrix.blas == 'ON'746 run: |747 Invoke-WebRequest "https://github.com/OpenMathLib/OpenBLAS/releases/download/v${{matrix.blasver}}/OpenBLAS-${{matrix.blasver}}_${{matrix.blasfile}}.zip" -OutFile "OpenBLAS-${{matrix.blasver}}.zip"748 Expand-Archive "OpenBLAS-${{matrix.blasver}}.zip" -DestinationPath "OpenBLAS-${{matrix.blasver}}"749 choco install pkgconfiglite750 751 - name: Fetch SDL2 and set SDL2_DIR752 if: matrix.sdl2 == 'ON'753 run: |754 C:/msys64/usr/bin/wget.exe -qO sdl2.zip https://github.com/libsdl-org/SDL/releases/download/release-${{ matrix.s2ver }}/SDL2-devel-${{ matrix.s2ver }}-VC.zip755 7z x sdl2.zip756 echo "SDL2_DIR=$env:GITHUB_WORKSPACE/SDL2-${{ matrix.s2ver }}/cmake" >> $env:GITHUB_ENV757 758 - name: Configure759 run: >760 cmake -S . -B ./build -A ${{ matrix.arch }}761 -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"762 -DCMAKE_BUILD_TYPE=${{ matrix.build }}763 -DGGML_BLAS=${{ matrix.blas }}764 -DGGML_BLAS_VENDOR=OpenBLAS765 -DBLAS_LIBRARIES="$env:GITHUB_WORKSPACE/OpenBLAS-${{matrix.blasver}}/lib/libopenblas.lib"766 -DBLAS_INCLUDE_DIRS="$env:GITHUB_WORKSPACE/OpenBLAS-${{matrix.blasver}}/include"767 -DWHISPER_SDL2=${{ matrix.sdl2 }}768 769 - name: Build770 run: |771 cd ./build772 msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }}773 774 - name: Copy openblas.dll775 if: matrix.blas == 'ON'776 run: copy "$env:GITHUB_WORKSPACE/OpenBLAS-${{matrix.blasver}}/bin/libopenblas.dll" build/bin/${{ matrix.build }}777 778 - name: Copy SDL2.dll779 if: matrix.sdl2 == 'ON'780 run: copy "$env:SDL2_DIR/../lib/${{ matrix.s2arc }}/SDL2.dll" build/bin/${{ matrix.build }}781 782 - name: Pack bin artifacts783 shell: pwsh784 run: |785 Compress-Archive -Path "build/bin/${{ matrix.build }}" -DestinationPath "whisper-blas-bin-${{ matrix.arch }}.zip"786 787 - name: Upload binaries788 if: matrix.blas == 'ON' && matrix.sdl2 == 'ON' && ${{ needs.determine-tag.outputs.should_release }}789 uses: actions/upload-artifact@v4790 with:791 name: whisper-blas-bin-${{ matrix.arch }}.zip792 path: whisper-blas-bin-${{ matrix.arch }}.zip793 794 windows-cublas:795 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||796 github.event.inputs.run_type == 'full-ci' }}797 runs-on: windows-2022798 needs: determine-tag799 strategy:800 fail-fast: false801 matrix:802 build: [Release]803 arch: [x64]804 cublas: [ON]805 sdl2: [ON]806 cuda-toolkit: [12.4.0, 11.8.0]807 include:808 - arch: x64809 sdl2: ON810 sdl2_ver: 2.28.5811 steps:812 - name: Clone repository813 uses: actions/checkout@v4814 815 - name: Install Ninja816 id: install_ninja817 run: |818 choco install ninja819 820 - name: Install ccache821 uses: hendrikmuhs/ccache-action@v1.2.16822 with:823 key: ${{ github.job }}-${{ matrix.cuda-toolkit }}-${{ matrix.build }}824 variant: sccache825 evict-old-files: 5d826 827 - name: Install Cuda Toolkit 11.8.0828 if: ${{ matrix.cuda-toolkit == '11.8.0' }}829 run: |830 $CUDA_VERSION = ${{ matrix.cuda-toolkit }}831 $CUDA_TOOLKIT_DIR = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v$CUDA_VERSION"832 $CUDA_DOWNLOAD = "https://developer.download.nvidia.com/compute/cuda/redist"833 834 # Components versions835 $CUDART_VER = "11.8.89"836 $NVCC_VER = "11.8.89"837 $NVRTC_VER = "11.8.89"838 $CUBLAS_VER = "11.8.1.74"839 $NVTX_VER = "11.8.86"840 $VS_VER = "11.8.86"841 $NVPROF_VER = "11.8.87"842 $CCCL_VER = "11.8.89"843 844 # Create the directory where the CUDA Toolkit will be installed845 mkdir -p $CUDA_TOOLKIT_DIR846 847 # Install unzip to extract the downloaded files848 choco install unzip -y849 850 # Download all the required components851 curl -O "$CUDA_DOWNLOAD/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-${CUDART_VER}-archive.zip"852 curl -O "$CUDA_DOWNLOAD/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-${NVCC_VER}-archive.zip"853 curl -O "$CUDA_DOWNLOAD/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-${NVRTC_VER}-archive.zip"854 curl -O "$CUDA_DOWNLOAD/libcublas/windows-x86_64/libcublas-windows-x86_64-${CUBLAS_VER}-archive.zip"855 curl -O "$CUDA_DOWNLOAD/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-${NVTX_VER}-archive.zip"856 curl -O "$CUDA_DOWNLOAD/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-${VS_VER}-archive.zip"857 curl -O "$CUDA_DOWNLOAD/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-${NVPROF_VER}-archive.zip"858 curl -O "$CUDA_DOWNLOAD/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-${CCCL_VER}-archive.zip"859 860 # Extract all the downloaded files to the CUDA Toolkit directory861 unzip '*.zip' -d $CUDA_TOOLKIT_DIR862 863 # Copy all the extracted files to the main CUDA Toolkit directory864 xcopy "$CUDA_TOOLKIT_DIR\cuda_cudart-windows-x86_64-${CUDART_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y865 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvcc-windows-x86_64-${NVCC_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y866 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvrtc-windows-x86_64-${NVRTC_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y867 xcopy "$CUDA_TOOLKIT_DIR\libcublas-windows-x86_64-${CUBLAS_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y868 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvtx-windows-x86_64-${NVTX_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y869 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvprof-windows-x86_64-${NVPROF_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y870 xcopy "$CUDA_TOOLKIT_DIR\cuda_cccl-windows-x86_64-${CCCL_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y871 xcopy "$CUDA_TOOLKIT_DIR\visual_studio_integration-windows-x86_64-${VS_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y872 873 # Visual Studio integration874 xcopy "$CUDA_TOOLKIT_DIR\visual_studio_integration-windows-x86_64-${VS_VER}-archive\visual_studio_integration\MSBuildExtensions\*" "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\BuildCustomizations" /E /I /H /Y875 876 # Set environment variables877 echo "$CUDA_TOOLKIT_DIR\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append878 echo "$CUDA_TOOLKIT_DIR\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append879 echo "CUDA_PATH=$CUDA_TOOLKIT_DIR" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8880 echo "CUDA_PATH_V11_8=$CUDA_TOOLKIT_DIR" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8881 882 - name: Install Cuda Toolkit 12.4.0883 if: ${{ matrix.cuda-toolkit == '12.4.0' }}884 run: |885 $CUDA_VERSION = ${{ matrix.cuda-toolkit }}886 $CUDA_TOOLKIT_DIR = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v$CUDA_VERSION"887 $CUDA_DOWNLOAD = "https://developer.download.nvidia.com/compute/cuda/redist"888 889 # Components versions890 $CUDART_VER = "12.4.127"891 $NVCC_VER = "12.4.131"892 $NVRTC_VER = "12.4.127"893 $CUBLAS_VER = "12.4.5.8"894 $NVTX_VER = "12.4.127"895 $PROFILER_VER = "12.4.127"896 $VS_VER = "12.4.127"897 $NVPROF_VER = "12.4.128"898 $CCCL_VER = "12.4.127"899 900 # Create the directory where the CUDA Toolkit will be installed901 mkdir -p $CUDA_TOOLKIT_DIR902 903 # Install unzip to extract the downloaded files904 choco install unzip -y905 906 # Download all the required components907 curl -O "$CUDA_DOWNLOAD/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-${CUDART_VER}-archive.zip"908 curl -O "$CUDA_DOWNLOAD/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-${NVCC_VER}-archive.zip"909 curl -O "$CUDA_DOWNLOAD/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-${NVRTC_VER}-archive.zip"910 curl -O "$CUDA_DOWNLOAD/libcublas/windows-x86_64/libcublas-windows-x86_64-${CUBLAS_VER}-archive.zip"911 curl -O "$CUDA_DOWNLOAD/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-${NVTX_VER}-archive.zip"912 curl -O "$CUDA_DOWNLOAD/cuda_profiler_api/windows-x86_64/cuda_profiler_api-windows-x86_64-${PROFILER_VER}-archive.zip"913 curl -O "$CUDA_DOWNLOAD/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-${VS_VER}-archive.zip"914 curl -O "$CUDA_DOWNLOAD/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-${NVPROF_VER}-archive.zip"915 curl -O "$CUDA_DOWNLOAD/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-${CCCL_VER}-archive.zip"916 917 # Extract all the downloaded files to the CUDA Toolkit directory918 unzip -q '*.zip' -d $CUDA_TOOLKIT_DIR919 920 # Copy all the extracted files to the main CUDA Toolkit directory921 xcopy "$CUDA_TOOLKIT_DIR\cuda_cudart-windows-x86_64-${CUDART_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y922 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvcc-windows-x86_64-${NVCC_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y923 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvrtc-windows-x86_64-${NVRTC_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y924 xcopy "$CUDA_TOOLKIT_DIR\libcublas-windows-x86_64-${CUBLAS_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y925 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvtx-windows-x86_64-${NVTX_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y926 xcopy "$CUDA_TOOLKIT_DIR\cuda_nvprof-windows-x86_64-${NVPROF_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y927 xcopy "$CUDA_TOOLKIT_DIR\cuda_cccl-windows-x86_64-${CCCL_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y928 xcopy "$CUDA_TOOLKIT_DIR\cuda_profiler_api-windows-x86_64-${PROFILER_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y929 xcopy "$CUDA_TOOLKIT_DIR\visual_studio_integration-windows-x86_64-${VS_VER}-archive\*" "$CUDA_TOOLKIT_DIR" /E /I /H /Y930 931 # Visual Studio integration932 xcopy "$CUDA_TOOLKIT_DIR\visual_studio_integration-windows-x86_64-${VS_VER}-archive\visual_studio_integration\MSBuildExtensions\*" "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\BuildCustomizations" /E /I /H /Y933 934 # Set environment variables935 echo "$CUDA_TOOLKIT_DIR\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append936 echo "$CUDA_TOOLKIT_DIR\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append937 echo "CUDA_PATH=$CUDA_TOOLKIT_DIR" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8938 echo "CUDA_PATH_V12_2=$CUDA_TOOLKIT_DIR" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8939 940 - name: Add msbuild to PATH941 uses: microsoft/setup-msbuild@v2942 943 - name: Install 7-Zip944 run: choco install 7zip -y945 946 - name: Fetch SDL2 and set SDL2_DIR947 if: matrix.sdl2 == 'ON'948 run: |949 Invoke-WebRequest -Uri https://github.com/libsdl-org/SDL/releases/download/release-${{ matrix.sdl2_ver }}/SDL2-devel-${{ matrix.sdl2_ver }}-VC.zip -OutFile sdl2.zip950 7z x sdl2.zip951 echo "SDL2_DIR=${{ github.workspace }}\SDL2-${{ matrix.sdl2_ver }}\cmake" | Out-File -FilePath $env:GITHUB_ENV -Append952 echo "${{ github.workspace }}\SDL2-${{ matrix.sdl2_ver }}\cmake" > SDL2_PATH.txt953 954 - name: Install cmake955 run: choco install cmake956 957 - name: Build Project958 shell: cmd959 run: |960 call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"961 cmake --version962 where cmake963 if "${{ matrix.cuda-toolkit }}" == "11.8.0" (964 set CUDA_FLAGS=-allow-unsupported-compiler -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH -D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR965 ) else (966 set CUDA_FLAGS=967 )968 cmake -S . -B build -G "Ninja Multi-Config" ^969 -DCMAKE_BUILD_TYPE=${{ matrix.build }} ^970 -DGGML_CUDA=${{ matrix.cublas }} ^971 -DWHISPER_SDL2=${{ matrix.sdl2 }} ^972 -DSDL2_DIR="%SDL2_DIR%" ^973 -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ^974 -DCMAKE_CUDA_FLAGS="%CUDA_FLAGS%"975 set /A NINJA_JOBS=%NUMBER_OF_PROCESSORS%-1976 cmake --build build --config ${{ matrix.build }} -j %NUMBER_OF_PROCESSORS%977 978 - name: Check sccache status after build979 run: |980 sccache --show-stats981 982 - name: Copy CUDA DLLs983 run: |984 Get-ChildItem "$env:CUDA_PATH\bin\" -Filter "*.dll" |985 Copy-Item -Destination "build/bin/${{ matrix.build }}"986 987 - name: Copy SDL2.dll988 if: matrix.sdl2 == 'ON'989 run: copy "$env:SDL2_DIR/../lib/${{ matrix.arch }}/SDL2.dll" build/bin/${{ matrix.build }}990 991 - name: Pack bin artifacts992 shell: pwsh993 run: |994 Compress-Archive -Path "build/bin/${{ matrix.build }}" -DestinationPath "whisper-cublas-${{ matrix.cuda-toolkit }}-bin-${{ matrix.arch }}.zip"995 996 - name: Upload binaries997 if: ${{ needs.determine-tag.outputs.should_release }}998 uses: actions/upload-artifact@v4999 with:1000 name: whisper-cublas-${{ matrix.cuda-toolkit }}-bin-${{ matrix.arch }}.zip1001 path: whisper-cublas-${{ matrix.cuda-toolkit }}-bin-${{ matrix.arch }}.zip1002 1003 emscripten:1004 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||1005 github.event.inputs.run_type == 'full-ci' }}1006 runs-on: ubuntu-22.041007 1008 strategy:1009 matrix:1010 build: [Release]1011 1012 steps:1013 - name: Clone1014 uses: actions/checkout@v41015 1016 - name: Setup emsdk1017 uses: mymindstorm/setup-emsdk@v141018 1019 - name: Verify1020 run: emcc -v1021 1022 - name: Build1023 run: |1024 emcmake cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}1025 make1026 1027 ios-xcode-build:1028 runs-on: macos-latest1029 needs: determine-tag1030 1031 strategy:1032 matrix:1033 build: [Release]1034 1035 steps:1036 - name: Checkout code1037 uses: actions/checkout@v41038 1039 - name: Configure1040 run: |1041 cp models/for-tests-ggml-base.en.bin models/ggml-base.en.bin1042 mkdir models/ggml-base.en-encoder.mlmodelc1043 1044 - name: Build1045 id: cmake_build1046 run: |1047 sysctl -a1048 mkdir build1049 cd build1050 cmake -G Xcode .. \1051 -DGGML_METAL_USE_BF16=ON \1052 -DGGML_METAL_EMBED_LIBRARY=ON \1053 -DWHISPER_BUILD_EXAMPLES=OFF \1054 -DWHISPER_BUILD_TESTS=OFF \1055 -DWHISPER_BUILD_SERVER=OFF \1056 -DCMAKE_SYSTEM_NAME=iOS \1057 -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 \1058 -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml1059 cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO1060 1061 - name: xcodebuild for swift package1062 id: xcodebuild1063 run: |1064 ./build-xcframework.sh1065 1066 - name: Build objc example1067 run: xcodebuild -project examples/whisper.objc/whisper.objc.xcodeproj -scheme whisper.objc -configuration ${{ matrix.build }} -sdk iphoneos CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO FRAMEWORK_FOLDER_PATH=./build-ios build1068 1069 - name: Build swiftui example1070 run: xcodebuild -project examples/whisper.swiftui/whisper.swiftui.xcodeproj -scheme WhisperCppDemo -configuration ${{ matrix.build }} -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build1071 1072 - name: Pack artifacts1073 id: pack_artifacts1074 run: |1075 zip --symlinks -r whisper-${{ needs.determine-tag.outputs.tag_name }}-xcframework.zip build-apple/whisper.xcframework1076 1077 - name: Upload artifacts1078 if: ${{ needs.determine-tag.outputs.should_release }}1079 uses: actions/upload-artifact@v41080 with:1081 path: whisper-${{ needs.determine-tag.outputs.tag_name }}-xcframework.zip1082 name: whisper-${{ needs.determine-tag.outputs.tag_name }}-xcframework.zip1083 1084 android:1085 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||1086 github.event.inputs.run_type == 'full-ci' }}1087 runs-on: ubuntu-22.041088 1089 steps:1090 - name: Clone1091 uses: actions/checkout@v41092 with:1093 path: whisper1094 1095 - name: Install Java1096 uses: actions/setup-java@v41097 with:1098 distribution: zulu1099 java-version: 211100 1101 - name: Setup Android SDK1102 uses: android-actions/setup-android@v31103 1104 - name: Build1105 run: |1106 cd whisper/examples/whisper.android1107 ./gradlew assembleRelease --no-daemon1108 1109 - name: Build with external ggml1110 run: |1111 export PATH_TO_GGML=$PWD/ggml1112 cd whisper/examples/whisper.android1113 ./gradlew assembleRelease --no-daemon1114 1115 android_java:1116 runs-on: ubuntu-22.041117 1118 steps:1119 - name: Clone1120 uses: actions/checkout@v41121 1122 - name: set up JDK 111123 uses: actions/setup-java@v41124 with:1125 java-version: '11'1126 distribution: 'temurin'1127 cache: gradle1128 1129 - name: Setup Android SDK1130 uses: android-actions/setup-android@v31131 with:1132 cmdline-tools-version: 9.01133 1134 - name: Build1135 run: |1136 cd examples/whisper.android.java1137 chmod +x ./gradlew1138 ./gradlew assembleRelease1139 1140 bindings-java:1141 if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' ||1142 github.event.inputs.run_type == 'full-ci' }}1143 needs: ['windows']1144 runs-on: windows-latest1145 steps:1146 - uses: actions/checkout@v41147 1148 - name: Install Java1149 uses: actions/setup-java@v41150 with:1151 distribution: zulu1152 java-version: 201153 1154 - name: Download Whisper Windows lib1155 uses: actions/download-artifact@v41156 with:1157 name: whisper_x64.dll1158 1159 - name: Download GGML Windows lib1160 uses: actions/download-artifact@v41161 with:1162 name: ggml_x64.dll1163 1164 - name: Download GGML Base Windows lib1165 uses: actions/download-artifact@v41166 with:1167 name: ggml_base_x64.dll1168 1169 - name: Download GGML CPU Windows lib1170 uses: actions/download-artifact@v41171 with:1172 name: ggml_cpu_x64.dll1173 1174 - name: Download SDL2.dll1175 uses: actions/download-artifact@v41176 with:1177 name: x64_SDL2.dll1178 1179 - name: List downloaded files1180 shell: pwsh1181 run: |1182 Get-ChildItem -Path "." -Recurse -Filter "*.dll"1183 1184 - name: Move DLL to correct location1185 shell: pwsh1186 run: |1187 New-Item -Path "build\bin\Release" -ItemType Directory -Force1188 1189 Copy-Item -Path "whisper.dll" -Destination "build\bin\Release\whisper.dll" -Force1190 Write-Host "Copied whisper.dll to build\bin\Release\whisper.dll directory"1191 1192 Copy-Item -Path "ggml.dll" -Destination "build\bin\Release\ggml.dll" -Force1193 Write-Host "Copied ggml.dll to build\bin\Release\ggml.dll directory"1194 1195 Copy-Item -Path "ggml-base.dll" -Destination "build\bin\Release\ggml-base.dll" -Force1196 Write-Host "Copied ggml-base.dll to build\bin\Release\ggml-base.dll directory"1197 1198 Copy-Item -Path "ggml-cpu.dll" -Destination "build\bin\Release\ggml-cpu.dll" -Force1199 Write-Host "Copied ggml-cpu.dll to build\bin\Release\ggml-cpu.dll directory"1200 