name: cmake on: [push, pull_request] env: DESTDIR: ${{ github.workspace }}/build/tmp jobs: 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: | 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 - name: build run: cmake --build build -j $(nproc) - name: install run: cmake --install build --verbose - uses: actions/upload-artifact@v3 with: name: linux-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} 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=${{ 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-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} mingw32-cross: 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: | dpkg --add-architecture i386 apt-get update -qq apt-get install -yqq cmake binutils-mingw-w64-i686 gcc g++-mingw-w64 lsb-release 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 run: cmake -S cmake -B build -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CROSSCOMPILING_EMULATOR=wine -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=i686 -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ -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-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} mingw64-cross: 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: | dpkg --add-architecture i386 apt-get update -qq apt-get install -yqq cmake binutils-mingw-w64-x86-64 gcc g++-mingw-w64 lsb-release 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 run: cmake -S cmake -B build -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CROSSCOMPILING_EMULATOR=wine -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -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: mingw64-${{ env.PACK_NAME }} path: ${{ env.DESTDIR }} windows: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: configure run: cmake -S cmake -B build - name: build run: cmake --build build # FIXME fails with error # https://github.com/falkTX/Carla/actions/runs/5137608233/jobs/9245932221 #- name: install #run: cmake --install build --verbose