diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 40fa0f9b93..db9f9756b1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -6,52 +6,89 @@ env: DESTDIR: ${{ github.workspace }}/build/tmp jobs: - macos-libs: - runs-on: macos-latest + linux: + strategy: + matrix: + include: + - container: debian:11 + - container: debian:12 + - container: ubuntu:20.04 + - container: ubuntu:22.04 + - container: ubuntu:23.10 + runs-on: ubuntu-latest + container: + image: ${{ matrix.container }} steps: - uses: actions/checkout@v3 - name: Set up dependencies run: | - brew install cmake fluid-synth liblo libmagic libsndfile pkg-config + apt-get update -qq + apt-get install -yqq cmake g++ libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev lsb-release pkg-config + echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}" - name: configure - run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=OFF + run: cmake -S cmake -B build - name: build - run: cmake --build build -j $(sysctl -n hw.logicalcpu) + run: cmake --build build -j $(nproc) - name: install run: cmake --install build --verbose - uses: actions/upload-artifact@v3 with: - name: macos-libs + name: linux-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} - macos-frameworks: + macos: + strategy: + matrix: + include: + - frameworks: ON + - frameworks: OFF runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Set up dependencies run: | brew install cmake fluid-synth liblo libmagic libsndfile pkg-config + if [ "${{ matrix.frameworks }}" = "" ]; then + echo "PACK_NAME=frameworks" >> "${GITHUB_ENV}" + else + echo "PACK_NAME=libs" >> "${GITHUB_ENV}" + fi - name: configure - run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=ON + run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=${{ matrix.frameworks }} - name: build run: cmake --build build -j $(sysctl -n hw.logicalcpu) - name: install run: cmake --install build --verbose - uses: actions/upload-artifact@v3 with: - name: macos-frameworks + name: macos-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} mingw32-cross: - runs-on: ubuntu-22.04 + strategy: + matrix: + include: + #- container: debian:11 + - container: debian:12 + - container: ubuntu:20.04 + - container: ubuntu:22.04 + - container: ubuntu:23.10 + runs-on: ubuntu-latest + container: + image: ${{ matrix.container }} steps: - uses: actions/checkout@v3 - name: Set up dependencies run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo dpkg --add-architecture i386 - sudo apt-get update -qq - sudo apt-get install -yqq --allow-downgrades cmake libc6:i386 libgcc-s1:i386 libstdc++6:i386 binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 + dpkg --add-architecture i386 + apt-get update -qq + apt-get install -yqq cmake binutils-mingw-w64-i686 g++-mingw-w64 lsb-release make mingw-w64 pkg-config + if [ "$(lsb_release -si 2>/dev/null)" = "Debian" ]; then + apt-get install -yqq wine wine32 wine64 + else + apt-get install -yqq wine-stable + fi + echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}" - name: configure env: PKG_CONFIG: false @@ -62,27 +99,47 @@ jobs: -DCMAKE_SYSTEM_PROCESSOR=i686 \ -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc \ -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ \ - -DCMAKE_RANLIB=i686-w64-mingw32-ranlib \ - -DCMAKE_AR=$(which i686-w64-mingw32-ar) + -DCMAKE_AR=/usr/bin/i686-w64-mingw32-ar \ + -DCMAKE_C_COMPILER_AR=/usr/bin/i686-w64-mingw32-ar \ + -DCMAKE_CXX_COMPILER_AR=/usr/bin/i686-w64-mingw32-ar \ + -DCMAKE_RANLIB=/usr/bin/i686-w64-mingw32-ranlib \ + -DCMAKE_C_COMPILER_RANLIB=/usr/bin/i686-w64-mingw32-ranlib \ + -DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/i686-w64-mingw32-ranlib \ + -DCMAKE_RC_COMPILER=/usr/bin/i686-w64-mingw32-windres - name: build run: cmake --build build -j $(nproc) - name: install run: cmake --install build --verbose - uses: actions/upload-artifact@v3 with: - name: mingw32 + name: mingw32-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} mingw64-cross: - runs-on: ubuntu-22.04 + strategy: + matrix: + include: + #- container: debian:11 + - container: debian:12 + - container: ubuntu:20.04 + - container: ubuntu:22.04 + - container: ubuntu:23.10 + runs-on: ubuntu-latest + container: + image: ${{ matrix.container }} steps: - uses: actions/checkout@v3 - name: Set up dependencies run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo dpkg --add-architecture i386 - sudo apt-get update -qq - sudo apt-get install -yqq --allow-downgrades cmake libc6:i386 libgcc-s1:i386 libstdc++6:i386 binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable + dpkg --add-architecture i386 + apt-get update -qq + apt-get install -yqq cmake binutils-mingw-w64-x86-64 g++-mingw-w64 lsb-release make mingw-w64 pkg-config + if [ "$(lsb_release -si 2>/dev/null)" = "Debian" ]; then + apt-get install -yqq wine wine32 wine64 + else + apt-get install -yqq wine-stable + fi + echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}" - name: configure env: PKG_CONFIG: false @@ -93,53 +150,20 @@ jobs: -DCMAKE_SYSTEM_PROCESSOR=x86_64 \ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \ - -DCMAKE_RANLIB=x86_64-w64-mingw32-ranlib \ - -DCMAKE_AR=$(which x86_64-w64-mingw32-ar) - - name: build - run: cmake --build build -j $(nproc) - - name: install - run: cmake --install build --verbose - - uses: actions/upload-artifact@v3 - with: - name: mingw64 - path: ${{ env.DESTDIR }} - - ubuntu-20_04: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - - name: Set up dependencies - run: | - sudo apt-get update -qq - sudo apt-get install -yqq cmake libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev pkg-config - - name: configure - run: cmake -S cmake -B build - - name: build - run: cmake --build build -j $(nproc) - - name: install - run: cmake --install build --verbose - - uses: actions/upload-artifact@v3 - with: - name: ubuntu-20.04 - path: ${{ env.DESTDIR }} - - ubuntu-22_04: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v3 - - name: Set up dependencies - run: | - sudo apt-get update -qq - sudo apt-get install -yqq cmake libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev pkg-config - - name: configure - run: cmake -S cmake -B build + -DCMAKE_AR=/usr/bin/x86_64-w64-mingw32-ar \ + -DCMAKE_C_COMPILER_AR=/usr/bin/x86_64-w64-mingw32-ar \ + -DCMAKE_CXX_COMPILER_AR=/usr/bin/x86_64-w64-mingw32-ar \ + -DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib \ + -DCMAKE_C_COMPILER_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib \ + -DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib \ + -DCMAKE_RC_COMPILER=/usr/bin/x86_64-w64-mingw32-windres - name: build run: cmake --build build -j $(nproc) - name: install run: cmake --install build --verbose - uses: actions/upload-artifact@v3 with: - name: ubuntu-22.04 + name: mingw64-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} windows: