# Configs that enables Deep Redudancy (DRED) name: DRED on: [push, pull_request] jobs: 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: 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: 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_DRED=ON -DOPUS_OSCE=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 AutoToolsBuild: name: AutoTools/${{ 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: 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