prism-sys 0.1.3

Raw FFI bindings to the prism speech library
Documentation
# SPDX-License-Identifier: MPL-2.0
name: CI
on:
  push:
    branches: [master]
  pull_request:
  workflow_dispatch:
permissions:
  contents: read
concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

jobs:
  changes:
    runs-on: ubuntu-latest
    outputs:
      docs:        ${{ steps.compute.outputs.docs }}
      windows:     ${{ steps.compute.outputs.windows }}
      linux:       ${{ steps.compute.outputs.linux }}
      macos:       ${{ steps.compute.outputs.macos }}
      ios:         ${{ steps.compute.outputs.ios }}
      android:     ${{ steps.compute.outputs.android }}
      emscripten:  ${{ steps.compute.outputs.emscripten }}
      gdextension: ${{ steps.compute.outputs.gdextension }}
      wheels:      ${{ steps.compute.outputs.wheels }}
      sdist:       ${{ steps.compute.outputs.sdist }}
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false
      - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
        id: filter
        with:
          filters: |
            docs:
              - 'doc/**'
            gdext_src:
              - 'gdextension/**'
            windows:
              - 'source/backends/sapi.cpp'
              - 'source/backends/nvda.cpp'
              - 'source/backends/jaws.cpp'
              - 'source/backends/uia.cpp'
              - 'source/backends/onecore.cpp'
              - 'source/backends/window_eyes.cpp'
              - 'source/backends/zdsr.cpp'
              - 'source/backends/zoom_text.cpp'
              - 'source/backends/pc_talker.cpp'
              - 'source/backends/boy_pc_reader.cpp'
              - 'source/backends/sense_reader.cpp'
              - 'third_party/moderncom/**'
              - 'source/delayimp.cpp'
              - 'source/backends/speech_dispatcher.cpp'
              - 'source/backends/orca.cpp'
              - 'idl/**'
            linux:
              - 'source/backends/speech_dispatcher.cpp'
              - 'source/backends/orca.cpp'
              - 'winelibs/**'
            apple:
              - 'source/backends/voiceover.cpp'
              - 'source/backends/avspeech.cpp'
            android:
              - 'source/backends/android_tts.cpp'
              - 'source/backends/android_screen_reader.cpp'
              - 'source/backends/android/**'
              - 'source/AndroidManifest.xml'
              - 'android/**'
              - 'build.gradle'
              - 'settings.gradle'
              - 'gradle.properties'
              - 'gradle/**'
              - 'gradlew'
              - 'gradlew.bat'
              - 'third_party/djinni/**'
              - 'tests/android/**'
            web:
              - 'source/backends/web_speech_synthesis_backend.cpp'
            python:
              - 'bindings/py/**'
              - 'pyproject.toml'
              - 'pytest.ini'
              - 'uv.lock'
            core:
              - 'include/**'
              - 'source/*.cpp'
              - 'source/*.h'
              - 'third_party/simdutf/**'
              - 'third_party/concurrentqueue/**'
              - 'third_party/dr_wav/**'
              - 'third_party/highway/**'
              - 'third_party/fmt/**'
              - 'CMakeLists.txt'
              - 'cmake/**'
              - 'shims/**'
            ci_core:
              - '.github/workflows/ci.yml'
            ci_docs:
              - '.github/workflows/build-docs.yml'
            ci_windows:
              - '.github/workflows/build-windows.yml'
            ci_linux:
              - '.github/workflows/build-linux.yml'
            ci_macos:
              - '.github/workflows/build-macos.yml'
            ci_ios:
              - '.github/workflows/build-ios.yml'
            ci_android:
              - '.github/workflows/build-android.yml'
            ci_emscripten:
              - '.github/workflows/build-emscripten.yml'
            ci_gdextension:
              - '.github/workflows/build-gdextension.yml'
            ci_wheels:
              - '.github/workflows/build-wheels.yml'
            ci_sdist:
              - '.github/workflows/build-sdist.yml'
      - id: compute
        env:
          F_DOCS:          ${{ steps.filter.outputs.docs }}
          F_GDEXT_SRC:     ${{ steps.filter.outputs.gdext_src }}
          F_WINDOWS:       ${{ steps.filter.outputs.windows }}
          F_LINUX:         ${{ steps.filter.outputs.linux }}
          F_APPLE:         ${{ steps.filter.outputs.apple }}
          F_ANDROID:       ${{ steps.filter.outputs.android }}
          F_WEB:           ${{ steps.filter.outputs.web }}
          F_PYTHON:        ${{ steps.filter.outputs.python }}
          F_CORE:          ${{ steps.filter.outputs.core }}
          F_CI_CORE:       ${{ steps.filter.outputs.ci_core }}
          F_CI_DOCS:       ${{ steps.filter.outputs.ci_docs }}
          F_CI_WINDOWS:    ${{ steps.filter.outputs.ci_windows }}
          F_CI_LINUX:      ${{ steps.filter.outputs.ci_linux }}
          F_CI_MACOS:      ${{ steps.filter.outputs.ci_macos }}
          F_CI_IOS:        ${{ steps.filter.outputs.ci_ios }}
          F_CI_ANDROID:    ${{ steps.filter.outputs.ci_android }}
          F_CI_EMSCRIPTEN: ${{ steps.filter.outputs.ci_emscripten }}
          F_CI_GDEXT:      ${{ steps.filter.outputs.ci_gdextension }}
          F_CI_WHEELS:     ${{ steps.filter.outputs.ci_wheels }}
          F_CI_SDIST:      ${{ steps.filter.outputs.ci_sdist }}
        run: |
          any() {
            for v in "$@"; do
              if [ "$v" = "true" ]; then echo true; return; fi
            done
            echo false
          }
          CI_ALL=$(any "$F_CORE" "$F_CI_CORE")
          PLATFORM_ANY=$(any "$F_WINDOWS" "$F_LINUX" "$F_APPLE" "$F_ANDROID" "$F_WEB")
          {
            echo "docs=$(any "$CI_ALL" "$F_DOCS" "$F_CI_DOCS")"
            echo "windows=$(any "$CI_ALL" "$F_WINDOWS" "$F_CI_WINDOWS")"
            echo "linux=$(any "$CI_ALL" "$F_LINUX" "$F_CI_LINUX")"
            echo "macos=$(any "$CI_ALL" "$F_APPLE" "$F_CI_MACOS")"
            echo "ios=$(any "$CI_ALL" "$F_APPLE" "$F_CI_IOS")"
            echo "android=$(any "$CI_ALL" "$F_ANDROID" "$F_CI_ANDROID")"
            echo "emscripten=$(any "$CI_ALL" "$F_WEB" "$F_CI_EMSCRIPTEN")"
            echo "gdextension=$(any "$CI_ALL" "$F_GDEXT_SRC" "$PLATFORM_ANY" "$F_CI_GDEXT")"
            echo "wheels=$(any "$CI_ALL" "$F_PYTHON" "$PLATFORM_ANY" "$F_CI_WHEELS")"
            echo "sdist=$(any "$CI_ALL" "$F_PYTHON" "$F_CI_SDIST")"
          } >> "$GITHUB_OUTPUT"

  build-docs:
    needs: changes
    if: needs.changes.outputs.docs == 'true'
    uses: $/.github/workflows/build-docs.yml

  build-windows:
    needs: changes
    if: needs.changes.outputs.windows == 'true'
    uses: $/.github/workflows/build-windows.yml

  build-linux:
    needs: changes
    if: needs.changes.outputs.linux == 'true'
    uses: $/.github/workflows/build-linux.yml

  build-macos:
    needs: changes
    if: needs.changes.outputs.macos == 'true'
    uses: $/.github/workflows/build-macos.yml

  build-ios:
    needs: changes
    if: needs.changes.outputs.ios == 'true'
    uses: $/.github/workflows/build-ios.yml

  build-tvos:
    needs: changes
    if: needs.changes.outputs.ios == 'true'
    uses: $/.github/workflows/build-tvos.yml

  build-visionos:
    needs: changes
    if: needs.changes.outputs.ios == 'true'
    uses: $/.github/workflows/build-visionos.yml

  build-watchos:
    needs: changes
    if: needs.changes.outputs.ios == 'true'
    uses: $/.github/workflows/build-watchos.yml

  build-android:
    needs: changes
    if: needs.changes.outputs.android == 'true'
    uses: $/.github/workflows/build-android.yml

  build-emscripten:
    needs: changes
    if: needs.changes.outputs.emscripten == 'true'
    uses: $/.github/workflows/build-emscripten.yml

  build-gdextension:
    needs: changes
    if: needs.changes.outputs.gdextension == 'true'
    uses: $/.github/workflows/build-gdextension.yml

  build-wheels:
    needs: changes
    if: needs.changes.outputs.wheels == 'true'
    uses: $/.github/workflows/build-wheels.yml

  build-sdist:
    needs: changes
    if: needs.changes.outputs.sdist == 'true'
    uses: $/.github/workflows/build-sdist.yml