Cleanup
[carla.git] / .github / workflows / build.yml
blobfe0974787963d46a1c46a8d82f503fd7ac44a98f
1 name: build
3 on: [push, pull_request]
5 env:
6   DEBIAN_FRONTEND: noninteractive
7   EMSCRIPTEN_VERSION: 3.1.27
8   HOMEBREW_NO_AUTO_UPDATE: 1
9   HOMEBREW_NO_INSTALL_CLEANUP: 1
11 jobs:
12   linux:
13     strategy:
14       matrix:
15         include:
16           - target: debian:11
17           - target: debian:12
18           - target: ubuntu:20.04
19           - target: ubuntu:22.04
20           - target: ubuntu:24.04
21     runs-on: ubuntu-latest
22     container:
23       image: ${{ matrix.target }}
24     steps:
25       - uses: actions/checkout@v3
26       - name: Set up dependencies
27         run: |
28           dpkg --add-architecture i386
29           apt-get update -qq
30           apt-get install -yqq g++-multilib libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev make pkg-config pyqt5-dev-tools qtbase5-dev
31           apt-get install -yqq libx11-6:i386 libxext6:i386
32           # Fix 32bit bridge build
33           ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
34           ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so
35       - name: make features
36         run: make features
37       - name: make
38         run: make -j $(nproc)
39       - name: make posix32
40         run: make posix32 -j $(nproc)
42   macos:
43     strategy:
44       matrix:
45         include:
46           - target: macos-12
47           - target: macos-13
48     runs-on: ${{ matrix.target }}
49     steps:
50       - uses: actions/checkout@v4
51         with:
52           submodules: recursive
53       - name: Set up dependencies
54         run: |
55           brew install fluid-synth liblo libmagic libsndfile pkg-config pyqt@5 qt@5 sdl2
56       - name: make features
57         run: make features
58       - name: make
59         run: make -j $(sysctl -n hw.logicalcpu)
61   wasm:
62     runs-on: ubuntu-22.04
63     steps:
64       - uses: actions/checkout@v4
65         with:
66           submodules: recursive
67       - name: Set up cache
68         id: cache
69         uses: actions/cache@v4
70         with:
71           path: |
72             ~/emsdk
73           key: emsdk-v1
74       - name: Set up dependencies
75         run: |
76           [ -d ~/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
77           cd ~/emsdk && ./emsdk install ${{ env.EMSCRIPTEN_VERSION }} && ./emsdk activate ${{ env.EMSCRIPTEN_VERSION }}
78       - name: make
79         env:
80           AR: emar
81           CC: emcc
82           CXX: em++
83           NM: emnm
84           RANLIB: emranlib
85           STRIP: emstrip
86           PKG_CONFIG: false
87         run: |
88           source ~/emsdk/emsdk_env.sh
89           make features
90           make -j $(nproc)