name: Ubuntu Latest on: [push, pull_request] jobs: build: strategy: matrix: build_compiler: [gcc, clang] build_type: [release, debug] build_options: [default, link_off, translations_only, libretro] include: - cmake_compiler: '-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++' build_compiler: gcc - cmake_compiler: '-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++' build_compiler: clang - cmake_build: '-DCMAKE_BUILD_TYPE=Release' build_type: release - cmake_build: '-DCMAKE_BUILD_TYPE=Debug' build_type: debug - cmake_options: '-DENABLE_LINK=OFF' build_options: link_off - cmake_options: '-DTRANSLATIONS_ONLY=ON' build_options: translations_only - libretro_build: 'DEBUG=0' build_type: release build_options: libretro - libretro_build: 'DEBUG=1' build_type: debug build_options: libretro exclude: # Exclude debug/translations_only build - build_type: debug build_options: translations_only - build_type: release build_options: translations_only build_compiler: clang runs-on: ubuntu-latest steps: - name: Checkout the code uses: actions/checkout@v4 with: submodules: recursive - name: Install Dependencies run: >- bash installdeps; if [ "${{ matrix.build_compiler }}" = clang ]; then sudo apt -y install clang; fi - name: Install xvfb run: sudo apt -y install xvfb # CMake build - if: matrix.build_options != 'libretro' name: Configure CMake run: >- cmake -B build -G Ninja ${{ matrix.cmake_compiler }} ${{ matrix.cmake_build }} ${{ matrix.cmake_options }} - if: matrix.build_options != 'libretro' name: Build run: ninja -C build - if: matrix.build_options != 'libretro' name: Install run: sudo ninja -C build install # Libretro build - if: matrix.build_options == 'libretro' name: Build libretro core run: make -C src/libretro ${{ matrix.libretro_build }} # Run tests - if: matrix.build_options == 'default' name: Run tests run: cd build && xvfb-run ctest -j --output-on-failure