diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6af912e5..6abde25c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -320,50 +320,25 @@ jobs: fail-fast: false matrix: runner: [ "ubuntu-22.04", "ubuntu-20.04" ] - compiler: [ "GCC", "Clang" ] + compiler: [ "GCC-12", "GCC-11", "GCC-10", "Clang-16", "Clang-15", "Clang-14" ] qt: [ 5, 6 ] + CMAKE_GENERATOR: [ "Ninja Multi-Config" ] exclude: - runner: "ubuntu-22.04" qt: 5 + - runner: "ubuntu-22.04" + compiler: "gcc-10" - runner: "ubuntu-20.04" qt: 6 + - runner: "ubuntu-20.04" + compiler: "gcc-12" include: - runner: "ubuntu-22.04" - compiler: "GCC" - qt: 6 name: "Ubuntu 22.04" package_name: "ubuntu22.04-qt6" - CMAKE_GENERATOR: "Ninja" - CMAKE_C_COMPILER: "gcc-12" - CMAKE_CXX_COMPILER: "g++-12" - CMAKE_LINKER_COMPILER: "ld" - - runner: "ubuntu-22.04" - compiler: "Clang" - qt: 6 - name: "Ubuntu 22.04" - package_name: "ubuntu22.04-qt6-clang" - CMAKE_GENERATOR: "Ninja" - CMAKE_C_COMPILER: "clang-16" - CMAKE_CXX_COMPILER: "clang++16" - CMAKE_LINKER_COMPILER: "lld" - runner: "ubuntu-20.04" - compiler: "GCC" - qt: 5 name: "Ubuntu 20.04" package_name: "ubuntu20.04-qt5" - CMAKE_GENERATOR: "Ninja" - CMAKE_C_COMPILER: "gcc-11" - CMAKE_CXX_COMPILER: "g++-11" - CMAKE_LINKER_COMPILER: "ld" - - runner: "ubuntu-20.04" - compiler: "Clang" - qt: 5 - name: "Ubuntu 20.04" - package_name: "ubuntu20.04-qt5-clang" - CMAKE_GENERATOR: "Ninja" - CMAKE_C_COMPILER: "clang-16" - CMAKE_CXX_COMPILER: "clang++16" - CMAKE_LINKER_COMPILER: "lld" runs-on: "${{ matrix.runner }}" name: "${{ matrix.name }} (${{ matrix.compiler }}, Qt${{ matrix.qt }})" env: @@ -371,9 +346,7 @@ jobs: CMAKE_GENERATOR_PLATFORM: "${{ matrix.CMAKE_GENERATOR_PLATFORM }}" CMAKE_GENERATOR_TOOLSET: "${{ matrix.CMAKE_GENERATOR_TOOLSET }}" CMAKE_SYSTEM_VERSION: "${{ matrix.CMAKE_SYSTEM_VERSION }}" - CMAKE_C_COMPILER: "${{ matrix.CMAKE_C_COMPILER }}" - CMAKE_CXX_COMPILER: "${{ matrix.CMAKE_CXX_COMPILER }}" - CMAKE_LINKER_COMPILER: "${{ matrix.CMAKE_LINKER_COMPILER }}" + PACKAGE_NAME: "streamfx-${{ matrix.package_name }}" steps: - name: "Clone" uses: actions/checkout@v3 @@ -392,28 +365,37 @@ jobs: cmake \ ninja-build \ git - if [[ "${{ matrix.compiler }}" = GCC ]]; then - if [[ "${{ matrix.runner }}" = ubuntu-20* ]]; then - sudo apt-get install \ - binutils gcc-11 g++11 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 800 --slave /usr/bin/g++ g++ /usr/bin/g++-11 - else - sudo apt-get install \ - binutils gcc-12 g++12 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 800 --slave /usr/bin/g++ g++ /usr/bin/g++-12 - fi - else + IFS=$'-' compiler=(${{ matrix.compiler }}) + if [[ "${compiler[0]}" == "GCC" ]]; then + sudo apt-get install \ + binutils gcc-${compiler[1]} g++${compiler[1]} + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${compiler[1]} 800 --slave /usr/bin/g++ g++ /usr/bin/g++-${compiler[1]} + echo "CMAKE_C_COMPILER=gcc-${compiler[1]}" >> $GITHUB_ENV + echo "CMAKE_CXX_COMPILER=g++-${compiler[1]}" >> $GITHUB_ENV + echo "CMAKE_C_FLAGS=-fuse-ld=ld" >> $GITHUB_ENV + echo "CMAKE_CXX_FLAGS=-fuse-ld=ld" >> $GITHUB_ENV + elif [[ "${compiler[0]}" == "Clang" ]]; then curl -jLo /tmp/llvm.sh "https://apt.llvm.org/llvm.sh" chmod +x /tmp/llvm.sh - sudo /tmp/llvm.sh 16 all - sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-16 800 - sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-16 800 - sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-16 800 - sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-16 800 - sudo update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-16 800 - sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-16 800 - sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-16 800 + sudo /tmp/llvm.sh ${compiler[1]} all + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${compiler[1]} 800 + sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-${compiler[1]} 800 + sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${compiler[1]} 800 + sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-${compiler[1]} 800 + sudo update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-${compiler[1]} 800 + sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${compiler[1]} 800 + sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${compiler[1]} 800 + echo "CMAKE_C_COMPILER=clang-${compiler[1]}" >> $GITHUB_ENV + echo "CMAKE_CXX_COMPILER=clang++-${compiler[1]}" >> $GITHUB_ENV + echo "CMAKE_C_FLAGS=-fuse-ld=ld.lld" >> $GITHUB_ENV + echo "CMAKE_CXX_FLAGS=-fuse-ld=ld.lld" >> $GITHUB_ENV + else + echo "Unknown Compiler" + exit 1 fi + + # Adjust package name + echo "PACKAGE_NAME=${{ env.PACKAGE_NAME }}-${compiler[0]}${compiler[1]}" >> $GITHUB_ENV - name: "Dependency: Qt" id: qt shell: bash @@ -437,7 +419,7 @@ jobs: uses: actions/cache@v3 with: path: "${{ github.workspace }}/build/obs" - key: "obs${{ env.obs_version }}-${{ matrix.runner }}-${{ env.CACHE_VERSION }}" + key: "obs${{ env.obs_version }}-${{ matrix.runner }}-${{ matrix.compiler }}-${{ env.CACHE_VERSION }}" - name: "Dependency: OBS Libraries" id: obs if: ${{ steps.obs-cache.outputs.cache-hit != 'true' }} @@ -455,6 +437,8 @@ jobs: cmake \ -S "${{ github.workspace }}/third-party/obs-studio" \ -B "${{ github.workspace }}/build/obs" \ + -G "Unix Makefiles" \ + -DCMAKE_BUILD_TYPE="Release" \ -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/build/obs/install" \ -DCMAKE_PREFIX_PATH="${{ github.workspace }}/build/obsdeps;${{ github.workspace }}/build/qt" \ -DENABLE_PLUGINS=OFF \ @@ -462,11 +446,11 @@ jobs: -DENABLE_SCRIPTING=OFF cmake \ --build "${{ github.workspace }}/build/obs" \ - --config RelWithDebInfo \ + --config Release \ --target obs-frontend-api cmake \ --install "${{ github.workspace }}/build/obs" \ - --config RelWithDebInfo \ + --config Release \ --component obs_libraries - name: "Configure" continue-on-error: true @@ -476,7 +460,7 @@ jobs: -S "${{ github.workspace }}" \ -B "${{ github.workspace }}/build/ci" \ -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/build/ci/install" \ - -DPACKAGE_NAME="streamfx-${{ matrix.package_name }}" \ + -DPACKAGE_NAME="streamfx-${{ env.PACKAGE_NAME }}" \ -DPACKAGE_PREFIX="${{ github.workspace }}/build/package" \ -Dlibobs_DIR="${{ github.workspace }}/build/obs/install" - name: "Build: Debug"