shithub: opus

Download patch

ref: 3b147202eed3ce461f4be25dce0dfdf127284062
parent: d819cde563d81ef92c0d39d0a8db3a3eed59f01a
author: Marcus Asteborg <xnorpx@outlook.com>
date: Wed May 24 17:27:46 EDT 2023

Github actions for neural fec

--- /dev/null
+++ b/.github/workflows/build.yml
@@ -1,0 +1,136 @@
+name: Opus Neural FEC Build Matrix
+
+on: [push, pull_request]
+
+jobs:
+  CheckTrailingWhiteSpaces:
+    name: Check trailing white spaces
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+          submodules: recursive
+      - name: Check Whitespaces
+        run: |
+          git diff-tree --check origin/master HEAD
+
+  CMakeBuild:
+    name: CMake/${{ matrix.config.name }}
+    runs-on: ${{ matrix.config.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        config:
+        - {
+            name: "Windows/Lib/X64/Release",
+            os: windows-latest,
+            config: Release,
+            args: -G "Visual Studio 17 2022" -DOPUS_X86_PRESUME_AVX2=ON
+          }
+        - {
+           name: "Windows/Lib/armv8/Release",
+           os: windows-latest,
+           config: Release,
+           args: -G "Visual Studio 17 2022" -A ARM64
+          }
+        - {
+            name: "Linux/Lib/X64/Release",
+            os: ubuntu-latest,
+            config: Release,
+            args: -DOPUS_X86_PRESUME_AVX2=ON
+          }
+        - {
+            name: "Android/Lib/X64/Release",
+            os: ubuntu-latest,
+            config: Release,
+            args: "-DCMAKE_TOOLCHAIN_FILE=${ANDROID_HOME}/ndk/25.2.9519653/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86_64"
+          }
+        - {
+            name: "Android/Lib/ARMv8/Release",
+            os: ubuntu-latest,
+            config: Release,
+            args: "-DCMAKE_TOOLCHAIN_FILE=${ANDROID_HOME}/ndk/25.2.9519653/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a"
+          }
+        - {
+            name: "MacOSX/Lib/X64/Release",
+            os: macos-latest,
+            config: Release,
+            # some macs are really old in githubs lab so they don't support avx
+            args: -DOPUS_X86_PRESUME_AVX2=OFF
+          }
+        - {
+            name: "iOS/Lib/arm64/Release",
+            os: macos-latest,
+            config: Release,
+            args: -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64
+          }
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+      - name: Pull git submodules
+        run: git submodule update --init --recursive
+      - name: Install AutoConf, AutoMake and LibTool # Needed for autogen.sh
+        if: matrix.config.os == 'macos-latest'
+        run: brew install autoconf automake libtool
+      - name: Download models Windows
+        if: contains(matrix.config.name, 'Windows')
+        run: .\autogen.bat
+      - name: Submodule init and Download models
+        if: contains(matrix.config.name, 'MacOSX') ||
+            contains(matrix.config.name, 'Linux') ||
+            contains(matrix.config.name, 'Android') ||
+            contains(matrix.config.name, 'iOS')
+        run: ./autogen.sh
+      - name: Create Work Dir
+        run: mkdir build
+      - name: Configure
+        working-directory: ./build
+        run: cmake .. ${{ matrix.config.args }} -DCMAKE_BUILD_TYPE=${{ matrix.config.config }} -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DOPUS_FAST_MATH=ON -DOPUS_FLOAT_APPROX=ON -DOPUS_NEURAL_FEC=ON
+      - name: Build
+        working-directory: ./build
+        run: cmake --build . -j 2 --config ${{ matrix.config.config }} --target package
+      - name: Test
+        if: contains(matrix.config.name, 'Windows') && !contains(matrix.config.name, 'ARM') && !contains(matrix.config.name, 'Dll') ||
+            contains(matrix.config.name, 'MacOSX') && !contains(matrix.config.name, 'ARM') && !contains(matrix.config.name, 'Dll') ||
+            contains(matrix.config.name, 'Linux') && !contains(matrix.config.name, 'ARM') && !contains(matrix.config.name, 'Dll')
+        working-directory: ./build
+        run: ctest -j 2 -C ${{ matrix.config.config }} --output-on-failure
+
+  AutoMakeBuild:
+    name: AutoMake/${{ matrix.config.name }}
+    runs-on: ${{ matrix.config.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        config:
+        - {
+            name: "Linux/GCC",
+            os: ubuntu-latest,
+            compiler: gcc,
+            automakeconfig:
+          }
+        - {
+            name: "Linux/Clang",
+            os: ubuntu-latest,
+            compiler: clang,
+            automakeconfig:
+          }
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+      - name: Pull git submodules
+        run: git submodule update --init --recursive
+      - name: Install AutoConf, AutoMake and LibTool on MacOSX
+        if: matrix.config.os == 'macos-latest'
+        run: brew install autoconf automake libtool
+      - name: Autogen
+        run: CC=${{ matrix.config.compiler }} ./autogen.sh
+      - name: Configure
+        run: CFLAGS="-mavx -mfma -mavx2 -O2 -ffast-math" ./configure --enable-float-approx
+      - name: Build
+        run: make -j 2
+      - name: Test
+        run: make check -j 2
\ No newline at end of file
--