@@ -24,6 +24,9 @@ permissions:
2424 contents : read # needed for CodeQL
2525 security-events : write # needed for CodeQL
2626
27+ env :
28+ EGL_PLATFORM : surfaceless
29+
2730jobs :
2831 pre_job :
2932 runs-on : ubuntu-22.04
5356 strategy :
5457 fail-fast : true
5558 matrix :
56- renderer : [vulkan, drawable, drawable-rust]
59+ variant :
60+ - renderer : vulkan
61+ rust : false
62+ - renderer : opengl
63+ rust : false
64+ - renderer : opengl
65+ rust : true
5766 runs-on : ubuntu-22.04
5867 steps :
5968 - uses : actions/checkout@v4
7584 - name : Install dependencies
7685 run : .github/scripts/install-linux-deps
7786
78- - if : matrix.renderer == 'drawable-rust'
79- run : |
80- echo "renderer_flag_cmake=DMLN_WITH_OPENGL=ON -DMLN_USE_RUST=ON" >> "$GITHUB_ENV"
81- cargo install cxxbridge-cmd --version 1.0.157 --locked
82-
83- - if : matrix.renderer == 'drawable'
84- run : |
85- echo "-DMLN_WITH_OPENGL=ON" >> "$GITHUB_ENV"
86-
87- - if : matrix.renderer == 'vulkan'
88- run : echo renderer_flag_cmake="-DMLN_WITH_VULKAN=ON -DMLN_WITH_OPENGL=OFF" >> "$GITHUB_ENV"
87+ - if : matrix.variant.rust
88+ run : cargo install cxxbridge-cmd --version 1.0.157 --locked
8989
9090 - name : Install sccache
9191 run : |
@@ -103,7 +103,7 @@ jobs:
103103 role-to-assume : ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
104104 role-session-name : ${{ github.run_id }}
105105
106- - name : Build MapLibre Native Core
106+ - name : Build MapLibre Native
107107 env :
108108 CI : 1
109109 run : |
@@ -118,39 +118,39 @@ jobs:
118118 export SCCACHE_S3_NO_CREDENTIALS=1
119119 fi
120120
121- cmake -B build -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMLN_WITH_CLANG_TIDY=ON \
121+ cmake --preset linux-${{ matrix.variant.renderer }} \
122+ -DMLN_WITH_CLANG_TIDY=ON \
122123 -DCMAKE_C_COMPILER_LAUNCHER=sccache \
123124 -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \
124- -DMLN_WITH_COVERAGE=ON \
125- ${{ env.renderer_flag_cmake }}
126- cmake --build build --target mbgl-core mbgl-test-runner mbgl-render-test-runner mbgl-expression-test mbgl-render mbgl-benchmark-runner
125+ -DMLN_WITH_COVERAGE=ON
126+ cmake --build build-linux-${{ matrix.variant.renderer }} --target mbgl-core mbgl-test-runner mbgl-render-test-runner mbgl-expression-test mbgl-render mbgl-benchmark-runner
127127
128128 # mbgl-render (used for size test) & mbgl-benchmark-runner
129129
130130 - name : Show sccache stats
131131 run : sccache --show-stats
132132
133133 - name : Upload mbgl-render as artifact
134- if : matrix.renderer == 'drawable' && github.event_name == 'pull_request'
134+ if : matrix.variant. renderer == 'opengl' && !matrix.variant.rust && github.event_name == 'pull_request'
135135 uses : actions/upload-artifact@v4
136136 with :
137137 name : mbgl-render
138138 path : |
139- build/bin/mbgl-render
139+ build-linux-${{ matrix.variant.renderer }} /bin/mbgl-render
140140
141141 - name : Upload mbgl-benchmark-runner as artifact
142- if : matrix.renderer == 'drawable' && github.event_name == 'pull_request'
142+ if : matrix.variant. renderer == 'opengl' && !matrix.variant.rust && github.event_name == 'pull_request'
143143 uses : actions/upload-artifact@v4
144144 with :
145145 name : mbgl-benchmark-runner
146146 path : |
147- build/mbgl-benchmark-runner
147+ build-linux-${{ matrix.variant.renderer }} /mbgl-benchmark-runner
148148
149149 - name : Upload mbgl-render & mbgl-benchmark-runner to S3
150- if : matrix.renderer == 'drawable' && github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
150+ if : matrix.variant. renderer == 'opengl' && !matrix.variant.rust && github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
151151 run : |
152- aws s3 cp build/bin/mbgl-render s3://maplibre-native/mbgl-render-main
153- aws s3 cp build/mbgl-benchmark-runner s3://maplibre-native/mbgl-benchmark-runner-main
152+ aws s3 cp build-linux-${{ matrix.variant.renderer }} /bin/mbgl-render s3://maplibre-native/mbgl-render-main
153+ aws s3 cp build-linux-${{ matrix.variant.renderer }} /mbgl-benchmark-runner s3://maplibre-native/mbgl-benchmark-runner-main
154154
155155 # CodeQL
156156
@@ -161,39 +161,39 @@ jobs:
161161
162162 # unit tests
163163
164- - run : chmod +x build/mbgl-test-runner
164+ - run : chmod +x build-linux-${{ matrix.variant.renderer }} /mbgl-test-runner
165165
166166 - name : Run C++ tests
167- continue-on-error : ${{ matrix.renderer == 'vulkan' }}
168- run : xvfb-run -a build/mbgl-test-runner
167+ continue-on-error : ${{ matrix.variant. renderer == 'vulkan' }}
168+ run : xvfb-run -a build-linux-${{ matrix.variant.renderer }} /mbgl-test-runner
169169
170170 # render tests
171171
172- - run : chmod +x build/mbgl-render-test-runner
172+ - run : chmod +x build-linux-${{ matrix.variant.renderer }} /mbgl-render-test-runner
173173
174174 - name : Run render test
175175 id : render_test
176176 run : |
177- renderer="${{ matrix.renderer }}"
177+ renderer="${{ matrix.variant. renderer }}"
178178 if [[ "$renderer" == *-rust ]]; then
179179 renderer=${renderer%-rust}
180180 fi
181- xvfb-run -a build/mbgl-render-test-runner --manifestPath=metrics/linux-"$renderer".json
181+ xvfb-run -a build-linux-${{ matrix.variant.renderer }} /mbgl-render-test-runner --manifestPath=metrics/linux-"$renderer".json
182182
183183 - name : Upload render test result
184184 if : always() && steps.render_test.outcome == 'failure'
185185 uses : actions/upload-artifact@v4
186186 with :
187- name : render-test-result-${{ matrix.renderer }}
187+ name : render-test-result-${{ matrix.variant. renderer }}
188188 path : |
189- metrics/linux-${{ matrix.renderer }}.html
189+ metrics/linux-${{ matrix.variant. renderer }}.html
190190
191191 # expression tests
192192
193- - run : chmod +x build/expression-test/mbgl-expression-test
193+ - run : chmod +x build-linux-${{ matrix.variant.renderer }} /expression-test/mbgl-expression-test
194194
195195 - name : Run expression test
196- run : build/expression-test/mbgl-expression-test
196+ run : build-linux-${{ matrix.variant.renderer }} /expression-test/mbgl-expression-test
197197
198198 - if : github.event_name == 'pull_request'
199199 uses : ./.github/actions/save-pr-number
0 commit comments