1+ name : Build and Test
2+
3+ on :
4+ push :
5+ branches : [ main ]
6+ pull_request :
7+ branches : [ main ]
8+ workflow_dispatch :
9+
10+ jobs :
11+ build-and-test :
12+ strategy :
13+ matrix :
14+ os : [ ubuntu-22.04, macos-latest, windows-latest ]
15+ fail-fast : false
16+
17+ runs-on : ${{ matrix.os }}
18+
19+ steps :
20+ - name : Checkout code
21+ uses : actions/checkout@v4
22+ with :
23+ submodules : recursive
24+
25+ - name : Install dependencies (Linux)
26+ if : runner.os == 'Linux'
27+ run : |
28+ sudo apt-get update
29+ sudo apt-get install -y \
30+ build-essential \
31+ cmake \
32+ ninja-build \
33+ libasound2-dev \
34+ libjack-jackd2-dev \
35+ ladspa-sdk \
36+ libcurl4-openssl-dev \
37+ libfontconfig1-dev \
38+ libfreetype6-dev \
39+ libx11-dev \
40+ libxcomposite-dev \
41+ libxcursor-dev \
42+ libxext-dev \
43+ libxinerama-dev \
44+ libxrandr-dev \
45+ libxrender-dev \
46+ libglu1-mesa-dev \
47+ mesa-common-dev
48+
49+ - name : Install dependencies (macOS)
50+ if : runner.os == 'macOS'
51+ run : |
52+ brew install cmake ninja
53+
54+ - name : Install dependencies (Windows)
55+ if : runner.os == 'Windows'
56+ run : |
57+ choco install cmake ninja -y
58+
59+ - name : Setup MSVC environment (Windows)
60+ if : runner.os == 'Windows'
61+ uses : ilammy/msvc-dev-cmd@v1
62+ arch : x64
63+
64+ - name : Configure CMake (Windows)
65+ if : runner.os == 'Windows'
66+ run : |
67+ cmake -B build -G Ninja -A x64 `
68+ -DCMAKE_C_COMPILER=cl `
69+ -DCMAKE_CXX_COMPILER=cl `
70+ -DCMAKE_BUILD_TYPE=Release
71+
72+ - name : Configure CMake (macOS)
73+ if : runner.os == 'macOS'
74+ run : cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
75+
76+ - name : Configure CMake (Linux)
77+ if : runner.os == 'Linux'
78+ run : cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
79+
80+ - name : Build
81+ run : cmake --build build --config Release
82+
83+ - name : Run tests
84+ run : ctest --test-dir build --output-on-failure
85+
86+ - name : Installer
87+ run : cmake --build build --target installer --config Release
0 commit comments