diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml deleted file mode 100644 index 40f352ad..00000000 --- a/.github/workflows/android.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Android - -on: - workflow_dispatch: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - config: [debug, release] - include: - - config: debug - target: assembleDebug - apkname: espeak-debug.apk - - config: release - target: assembleRelease - apkname: espeak-release-unsigned.apk - name: Build ${{ matrix.config }} APK - steps: - - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - cache: gradle - - name: make - run: cd android && ./gradlew ${{ matrix.target }} --no-daemon - - name: upload - uses: actions/upload-artifact@v3 - with: - name: android-${{ matrix.config }}.apk - path: android/build/outputs/apk/${{ matrix.config }}/${{ matrix.apkname }} - retention-days: 5 diff --git a/.github/workflows/autoconf.yml b/.github/workflows/autoconf.yml deleted file mode 100644 index d1d00bca..00000000 --- a/.github/workflows/autoconf.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: Autoconf - -on: - workflow_dispatch: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: ${{ matrix.os }}-${{ matrix.osver }} - - name: "${{ matrix.os }} ${{ matrix.arch }}: ${{ matrix.compiler }}" - strategy: - fail-fast: false - matrix: - os: [ubuntu, macos] - arch: [amd64, i386] - compiler: [gcc, clang] - - include: - - os: ubuntu - osver: 22.04 - - os: macos - osver: 12 - - - arch: i386 - archcflags: "-m32 -msse2 -mfpmath=sse" - - exclude: - - os: macos - arch: i386 - - steps: - - # Linux - dependencies - - name: apt-build-deps - if: matrix.os == 'ubuntu' - run: | - sudo dpkg --add-architecture ${{ matrix.arch }} - sudo apt-get update - sudo apt-get install ronn kramdown python3 - - name: apt-arch-deps - if: matrix.os == 'ubuntu' - run: "sudo apt-get install libtool-bin valgrind g++-12-multilib linux-libc-dev:${{ matrix.arch }} libpcaudio-dev:${{ matrix.arch }} libsonic-dev:${{ matrix.arch }}" - - name: apt-compile-clang - if: matrix.os == 'ubuntu' && matrix.compiler == 'clang' - run: sudo apt-get install clang - - # MacOS - dependencies - - name: brew-deps - if: matrix.os == 'macos' - run: brew install libtool automake ronn OJFord/homebrew-formulae/kramdown - - name: brew-compile-deps - if: matrix.os == 'macos' && matrix.compiler == 'gcc' - run: brew install gcc@12 - - # Checkout code - - uses: actions/checkout@v3 - - # Configure - - name: configure - run: | - ./autogen.sh - chmod -x INSTALL m4/*.m4 - [ 'x${{ matrix.compiler }}' = 'xgcc' ] && export CC="gcc-12" - [ 'x${{ matrix.compiler }}' = 'xgcc' ] && export CXX="g++-12" - [ 'x${{ matrix.compiler }}' = 'xclang' ] && export CC="clang" - [ 'x${{ matrix.compiler }}' = 'xclang' ] && export CXX="clang++" - export CFLAGS="-g -Og -fno-omit-frame-pointer ${{ matrix.archcflags }}" - export CXXFLAGS="-g -Og -fno-omit-frame-pointer ${{ matrix.archcflags }}" - ./configure - - - name: config-failed-upload - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: config-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.compiler }}.log - path: config.log - - # Build and test - - name: build - run: make all-am - - name: test - run: make check diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index d1708175..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,238 +0,0 @@ -name: CI - -on: - workflow_dispatch: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: ${{ matrix.os }}-${{ matrix.osver }} - - name: "${{ matrix.os }} ${{ matrix.arch }}: ${{ matrix.compiler }} + ${{ matrix.config }}" - strategy: - fail-fast: false - matrix: - os: [ubuntu, macos] - arch: [amd64, i386, aarch64, arm, riscv64] - config: [debug, release, release-dyn, asan, lsan, msan, tsan, ubsan, valgrind] - compiler: [gcc, clang] - - include: - - os: ubuntu - osver: 22.04 - sys: linux-gnu - - os: macos - osver: 12 - sys: apple-darwin21 - - os: macos - compiler: clang - sys: apple-darwin21.6.0 - - - compiler: clang - compiler_flags: "-fdebug-default-version=4" - - - arch: amd64 - ccarch: x86_64 - archcflags: "" - cross: no - - arch: i386 - ccarch: x86_64 - archcflags: "-m32 -msse2 -mfpmath=sse" - cross: no - - arch: aarch64 - ccarch: aarch64 - archcflags: "-Wl,--dynamic-linker=/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1" - runenv: 'LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib:$LD_LIBRARY_PATH' - cross: yes - - arch: arm - ccarch: arm - sys: linux-gnueabi - archcflags: "-D_FILE_OFFSET_BITS=64 -latomic -Wl,--dynamic-linker=/usr/arm-linux-gnueabi/lib/ld-linux.so.3" - runenv: 'LD_LIBRARY_PATH=/usr/arm-linux-gnueabi/lib:$LD_LIBRARY_PATH' - cross: yes - - arch: riscv64 - ccarch: riscv64 - archcflags: "-Wl,--dynamic-linker=/usr/riscv64-linux-gnu/lib/ld-linux-riscv64-lp64d.so.1" - runenv: 'LD_LIBRARY_PATH=/usr/riscv64-linux-gnu/lib:$LD_LIBRARY_PATH' - cross: yes - - - config: "asan" - config_cflags: "-fsanitize=address" - config_env: "ASAN_OPTIONS=detect_leaks=0" - - - config: "lsan" - config_cflags: "-fsanitize=leak" - config_env: "LSAN_OPTIONS=fast_unwind_on_malloc=0" - - - config: "msan" - configenv: "CC=clang CXX=clang++" - config_cflags: "-fsanitize=memory -fsanitize-memory-track-origins=2" - settings: "-DUSE_LIBPCAUDIO:BOOL=OFF -DUSE_LIBSONIC:BOOL=OFF" - config_env: "MSAN_OPTIONS=exitcode=42" - - - config: "tsan" - config_cflags: "-fsanitize=thread" - - - config: "ubsan" - config_cflags: "-fsanitize=undefined" - config_env: "UBSAN_OPTIONS=halt_on_error=1" - - - config: "valgrind" - config_env: 'VALGRIND="valgrind --track-origins=yes --leak-check=full --error-exitcode=1"' - - - config: "release" - settings: "-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo" - - - config: "release-dyn" - settings: "-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DBUILD_SHARED_LIBS:BOOL=ON" - - exclude: - - os: macos - arch: i386 - - os: macos - arch: aarch64 - - os: macos - arch: arm - - os: macos - arch: riscv64 - - - os: macos - config: valgrind # Not supported on macOS - - - compiler: gcc - config: msan # Not supported by GCC - - - os: macos - compiler: clang - config: lsan # Not supported by Apple Clang - - os: macos - compiler: clang - config: msan # Not supported by Apple Clang - - os: macos - compiler: gcc - config: tsan # Failing on CI, should be supported? - - # Valgrind is unavailable for cross-builds - - arch: aarch64 - config: valgrind - - arch: arm - config: valgrind - - arch: riscv64 - config: valgrind - - # Leak sanitizer is unavailable for cross-builds - - arch: i386 - config: lsan - - arch: aarch64 - config: lsan - - arch: arm - config: lsan - - arch: riscv64 - config: lsan - - # Thread sanitizer is partially unavailable - - arch: i386 - config: tsan - - arch: arm - config: tsan - - arch: riscv64 - config: tsan - - arch: aarch64 - compiler: clang - config: tsan - - # Undefined sanitizer is partially unavailable - - arch: riscv64 - config: ubsan - - arch: arm - compiler: clang - config: ubsan - - arch: aarch64 - compiler: clang - config: ubsan - - # Memory sanitizer is partially unavailable - - arch: i386 - config: msan - - arch: riscv64 - config: msan - - arch: arm - config: msan - - arch: aarch64 - config: msan - - # Address sanitizer is partially unavailable - - arch: riscv64 - config: asan - - arch: arm - compiler: clang - config: asan - - arch: aarch64 - compiler: clang - config: asan - - # Disable Thread sanitizer that runs for over 2h on aarch64 - - arch: aarch64 - config: tsan - - steps: - - # Linux - dependencies - - name: apt-build-deps - if: matrix.os == 'ubuntu' - run: | - [ 'x${{ matrix.cross }}' == 'xno' ] && sudo dpkg --add-architecture ${{ matrix.arch }} - sudo apt-get update - sudo apt-get install ronn kramdown python3 - - name: apt-arch-deps - if: matrix.os == 'ubuntu' && matrix.cross == 'no' - run: "sudo apt-get install cmake valgrind g++-12-multilib linux-libc-dev:${{ matrix.arch }} libpcaudio-dev:${{ matrix.arch }} libsonic-dev:${{ matrix.arch }} libstdc++-12-dev:${{ matrix.arch }} libc6-dbg:${{ matrix.arch }}" - - name: apt-cross-deps - if: matrix.cross == 'yes' - run: sudo apt-get install qemu-user g++-12-${{ matrix.arch }}-${{ matrix.sys }} - - name: apt-compile-clang - if: matrix.os == 'ubuntu' && matrix.compiler == 'clang' - run: sudo apt-get install clang - - # MacOS - dependencies - - name: brew-deps - if: matrix.os == 'macos' - run: brew install cmake ronn OJFord/homebrew-formulae/kramdown - - name: brew-compile-deps - if: matrix.os == 'macos' && matrix.compiler == 'gcc' - run: brew install gcc@12 - - # Checkout code - - uses: actions/checkout@v3 - - # Configure - - name: configure - run: | - [ 'x${{ matrix.compiler }}' = 'xgcc' ] && export CC="${{ matrix.ccarch }}-${{ matrix.sys }}-gcc-12" - [ 'x${{ matrix.compiler }}' = 'xgcc' ] && export CXX="${{ matrix.ccarch }}-${{ matrix.sys }}-g++-12" - [ 'x${{ matrix.compiler }}' = 'xclang' ] && export CC="clang --target=${{ matrix.ccarch }}-${{ matrix.sys }}" - [ 'x${{ matrix.compiler }}' = 'xclang' ] && export CXX="clang++ --target=${{ matrix.ccarch }}-${{ matrix.sys }}" - [ 'x${{ matrix.cross }}' = 'xyes' ] && export LD="${{ matrix.ccarch }}-${{ matrix.sys }}-ld" - export CFLAGS="-g -Og -fno-omit-frame-pointer ${{ matrix.compiler_flags }} ${{ matrix.config_cflags }} ${{ matrix.archcflags }}" - export CXXFLAGS="-g -Og -fno-omit-frame-pointer ${{ matrix.compiler_flags }} ${{ matrix.config_cflags }} ${{ matrix.archcflags }}" - cmake -Bbuild ${{ matrix.settings }} -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -DUSE_ASYNC:BOOL=OFF - - - name: config-failed-upload - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: cmake-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.compiler }}-${{ matrix.config }}-builddir - path: build - - # Build and test - - name: make-binary - run: cmake --build build --target espeak-ng - - name: make-data - run: ${{ matrix.config_env }} ${{ matrix.runenv }} cmake --build build --target data - - name: test - run: | - ${{ matrix.config_env }} ${{ matrix.runenv }} cmake --build build --target tests - ${{ matrix.config_env }} ${{ matrix.runenv }} ctest --test-dir build -Ttest -j1 --output-on-failure diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml deleted file mode 100644 index c62a92bf..00000000 --- a/.github/workflows/dist.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Dist - -on: - workflow_dispatch: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -env: - deps: cmake libpcaudio-dev libsonic-dev ronn kramdown python3 - -jobs: - - reprotest: - - runs-on: ubuntu-latest - name: Build with reprotest on ${{ matrix.arch }} - strategy: - fail-fast: false - matrix: - arch: [x86-64, x86-32] - - include: - - arch: x86-32 - archdeps: "gcc-multilib g++-multilib libpcaudio-dev:i386 libsonic-dev:i386 libc6-dbg:i386" - archconfigflags: "-m32" - - - arch: x86-64 - archdeps: "" - archconfigflags: '' - - steps: - - uses: actions/checkout@v3 - - name: enable 32bit architecture - run: sudo dpkg --add-architecture i386 - if: matrix.arch == 'x86-32' - - name: dependencies - run: sudo apt-get update && sudo apt-get install ${{ env.deps }} reprotest ${{ matrix.archdeps }} - - name: run - run: reprotest 'CFLAGS="${{ matrix.archconfigflags }}" CXXFLAGS="${{ matrix.archconfigflags }}" rm -rf build && cmake -Bbuild -DUSE_ASYNC:BOOL=OFF && cmake --build build && ctest --test-dir build -Ttest -j1 --output-on-failure && touch success' success - - distcheck: - - runs-on: ubuntu-latest - name: Run distcheck - steps: - - uses: actions/checkout@v3 - - name: dependencies - run: sudo apt-get update && sudo apt-get install ${{ env.deps }} - - name: configure - run: cmake -Bbuild -DUSE_ASYNC:BOOL=OFF - - name: make - run: cmake --build build - - name: make check - run: ctest --test-dir build -Ttest -j1 --output-on-failure - - - name: make package_source - run: cmake --build build --target package_source - - name: unpack - run: mkdir unpack && tar -C unpack -xf build/espeak-ng-*-Source.tar.bz2 - - - name: re-configure - run: cd unpack/espeak-ng-* && cmake -Bbuild -DUSE_ASYNC:BOOL=OFF - - name: re-make - run: cd unpack/espeak-ng-* && cmake --build build - - name: re-make check - run: cd unpack/espeak-ng-* && ctest --test-dir build -Ttest -j1 --output-on-failure diff --git a/.github/workflows/fuzzing.yml b/.github/workflows/fuzzing.yml deleted file mode 100644 index 0c60b579..00000000 --- a/.github/workflows/fuzzing.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: fuzzing - -on: - workflow_dispatch: - schedule: - - cron: "0 4 * * 1" - -jobs: - build: - runs-on: ubuntu-latest - name: Build synth_espeak on ${{ matrix.arch }} - strategy: - fail-fast: false - matrix: - arch: [x86-32, x86-64] - include: - - arch: x86-32 - archdeps: "gcc-multilib g++-multilib libpcaudio-dev:i386 libsonic-dev:i386 libc6-dbg:i386" - archconfig: "--host=i686-linux-gnu" - archconfigflags: "-m32" - - - arch: x86-64 - archdeps: "" - archconfigflags: '' - steps: - - uses: actions/checkout@v3 - - name: enable 32bit architecture - run: sudo dpkg --add-architecture i386 - if: matrix.arch == 'x86-32' - - name: dependencies - run: sudo apt-get update && sudo apt-get install libpcaudio-dev libsonic-dev ronn kramdown clang llvm ${{ matrix.archdeps }} - - name: autoconf - run: ./autogen.sh ; chmod -x INSTALL m4/*.m4 - - name: configure - run: CC="clang ${{ matrix.archconfigflags }}" CXX="clang++ ${{ matrix.archconfigflags }}" - CFLAGS="-fsanitize=address,undefined -fstack-protector-strong -g -Og -fno-omit-frame-pointer" - CXXFLAGS="${{ matrix.archconfigflags }} -fsanitize=address,undefined -fstack-protector-strong -g -Og -fno-omit-frame-pointer" - LDFLAGS="-fsanitize=address,undefined -lubsan" - ./configure ${{ matrix.archconfig }} --with-libfuzzer - - name: Store the fuzzer config - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: config-${{ matrix.arch }}-${{ matrix.lang }}.log - path: config.log - - name: make - run: make -j - - uses: actions/cache@v3 - with: - path: /home/runner/work/espeak-ng/espeak-ng - key: build-${{ matrix.arch }}-${{ github.sha }} - - fuzzing: - needs: build - runs-on: ubuntu-latest - name: Fuzz synth_espeak on ${{ matrix.arch }} for ${{ matrix.lang }} - strategy: - fail-fast: false - matrix: - arch: [x86-32, x86-64] - lang: [af, am, an, ar, as, az, ba, be, bg, bn, bpy, bs, ca, chr, cmn, cs, cv, cy, da, de, el, en, eo, es, et, eu, fa, fi, fr, ga, gd, gn, grc, gu, hak, haw, he, hi, hr, ht, hu, hy, hyw, ia, id, io, is, it, ja, jbo, ka, kk, kl, kn, ko, kok, ku, ky, la, lb, lfn, lt, ltg, lv, mi, mk, ml, mr, ms, mt, mto, my, nb, nci, ne, nl, nog, om, or, pa, pap, piqd, pl, pt, pt-BR, py, qdb, qu, quc, qya, ro, ru, ru-LV, sd, shn, si, sjn, sk, sl, smj, sq, sr, sv, sw, ta, te, th, tk, tn, tr, tt, ug, uk, ur, uz, vi, yue] - include: - - arch: x86-32 - archdeps: "libpcaudio0:i386 libsonic0:i386 libubsan1:i386 libc6-dbg:i386" - - - arch: x86-64 - archdeps: "" - steps: - - uses: actions/cache@v3 - with: - path: /home/runner/work/espeak-ng/espeak-ng - key: build-${{ matrix.arch }}-${{ github.sha }} - - name: enable 32bit architecture - run: sudo dpkg --add-architecture i386 - if: matrix.arch == 'x86-32' - - name: dependencies - run: sudo apt-get update && sudo apt-get install libpcaudio0 libsonic0 libubsan1 ${{ matrix.archdeps }} - - name: Fuzz function synth_espeak() - run: mkdir tests/fuzzing/CORPUS_DIR ; FUZZ_VOICE=${{ matrix.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR - - name: Store the crash POC - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: crash-${{ matrix.arch }}-${{ matrix.lang }}.1 - path: crash-* timeout-* - - name: Fuzz function synth_espeak() with language-specific input - run: cp dictsource/${{ matrix.lang }}_* tests/fuzzing/CORPUS_DIR/ || true ; FUZZ_VOICE=${{ matrix.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR - - name: Store the crash POC - if: ${{ failure() }} - uses: actions/upload-artifact@v3 - with: - name: crash-${{ matrix.arch }}-${{ matrix.lang }}.2 - path: crash-* timeout-* diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml deleted file mode 100644 index 2b5b5e01..00000000 --- a/.github/workflows/gradle-wrapper-validation.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: "Validate Gradle Wrapper" -on: [push, pull_request] - -jobs: - validation: - name: "Validation" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: gradle/wrapper-validation-action@v1 - \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 802c5b5f..309fea7d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -14,9 +14,9 @@ jobs: strategy: fail-fast: false matrix: - arch: [Win32, x64] - config: [Debug, Release] - link: [static, dll] + arch: [x64] + config: [Release] + link: [dll] include: - link: static @@ -26,7 +26,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: configure - run: cmake -Bbuild -DUSE_ASYNC:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=${{ matrix.shlib }} -A ${{ matrix.arch }} + run: cmake -Bbuild -DUSE_ASYNC:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=${{ matrix.shlib }} -A ${{ matrix.arch }} -DUSE_MBROLA:BOOL=OFF -DUSE_LIBSONIC:BOOL=OFF -DUSE_LIBPCAUDIO:BOOL=OFF -DUSE_KLATT:BOOL=OFF -DUSE_SPEECHPLAYER:BOOL=OFF -DEXTRA_cmn:BOOL=ON -DEXTRA_ru:BOOL=ON - name: make run: cmake --build build --config ${{ matrix.config }} - name: make check