6161 - name : Build
6262 run : cmake --build build_msvc_${{ matrix.msvc_version }} --config Release
6363
64- - name : Run Tests
65- run : cmake --build build_msvc_${{ matrix.msvc_version }} --target testbed-c
66-
6764 - name : Upload Build Log
6865 if : failure()
6966 uses : actions/upload-artifact@v4
10198 - name : Build
10299 run : cmake --build builddir --config Release
103100
104- - name : Run Tests
105- run : cmake --build builddir --target testbed-c
106-
107101 - name : Upload Build Log
108102 if : failure()
109103 uses : actions/upload-artifact@v4
@@ -148,9 +142,6 @@ jobs:
148142 - name : Build
149143 run : cmake --build builddir --config Release
150144
151- - name : Run Tests
152- run : cmake --build builddir --target testbed-c
153-
154145 - name : Upload Build Log
155146 if : failure()
156147 uses : actions/upload-artifact@v4
@@ -198,5 +189,95 @@ jobs:
198189 /bin/bash -c "
199190 apt-get update
200191 cmake -S . -B builddir -G Ninja -DWITH_TESTS=ON
201- cmake --build builddir --config Release
202- cmake --build builddir --target testbed-c"
192+ cmake --build builddir --config Release"
193+
194+ build_cross :
195+ name : Building on Bedrock ${{ matrix.architecture }}
196+ runs-on : ubuntu-latest # Using Ubuntu as the base system for cross-compilation
197+
198+ strategy :
199+ matrix :
200+ architecture : [arm, arm64, mips, mipsel, riscv64, ppc, ppc64le, sparc64, s390x]
201+
202+ steps :
203+ - name : Checkout code
204+ uses : actions/checkout@v4
205+ with :
206+ fetch-depth : 0
207+
208+ - name : Set up Python
209+ uses : actions/setup-python@v5
210+ with :
211+ python-version : ' 3.12'
212+
213+ - name : Install Cross-Compilation Toolchain
214+ run : |
215+ sudo apt-get update
216+ if [ "${{ matrix.architecture }}" == "arm" ]; then
217+ sudo apt-get install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
218+ elif [ "${{ matrix.architecture }}" == "arm64" ]; then
219+ sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
220+ elif [ "${{ matrix.architecture }}" == "mips" ]; then
221+ sudo apt-get install -y gcc-mips-linux-gnu g++-mips-linux-gnu
222+ elif [ "${{ matrix.architecture }}" == "mipsel" ]; then
223+ sudo apt-get install -y gcc-mipsel-linux-gnu g++-mipsel-linux-gnu
224+ elif [ "${{ matrix.architecture }}" == "riscv64" ]; then
225+ sudo apt-get install -y gcc-riscv64-linux-gnu g++-riscv64-linux-gnu
226+ elif [ "${{ matrix.architecture }}" == "ppc" ]; then
227+ sudo apt-get install -y gcc-powerpc-linux-gnu g++-powerpc-linux-gnu
228+ elif [ "${{ matrix.architecture }}" == "ppc64le" ]; then
229+ sudo apt-get install -y gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu
230+ elif [ "${{ matrix.architecture }}" == "sparc64" ]; then
231+ sudo apt-get install -y gcc-sparc64-linux-gnu g++-sparc64-linux-gnu
232+ elif [ "${{ matrix.architecture }}" == "s390x" ]; then
233+ sudo apt-get install -y gcc-s390x-linux-gnu g++-s390x-linux-gnu
234+ fi
235+
236+ - name : Set Cross-Compilation Environment Variables
237+ run : |
238+ if [ "${{ matrix.architecture }}" == "arm" ]; then
239+ echo "CC=arm-linux-gnueabi-gcc" >> $GITHUB_ENV
240+ echo "CXX=arm-linux-gnueabi-g++" >> $GITHUB_ENV
241+ elif [ "${{ matrix.architecture }}" == "arm64" ]; then
242+ echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
243+ echo "CXX=aarch64-linux-gnu-g++" >> $GITHUB_ENV
244+ elif [ "${{ matrix.architecture }}" == "mips" ]; then
245+ echo "CC=mips-linux-gnu-gcc" >> $GITHUB_ENV
246+ echo "CXX=mips-linux-gnu-g++" >> $GITHUB_ENV
247+ elif [ "${{ matrix.architecture }}" == "mipsel" ]; then
248+ echo "CC=mipsel-linux-gnu-gcc" >> $GITHUB_ENV
249+ echo "CXX=mipsel-linux-gnu-g++" >> $GITHUB_ENV
250+ elif [ "${{ matrix.architecture }}" == "riscv64" ]; then
251+ echo "CC=riscv64-linux-gnu-gcc" >> $GITHUB_ENV
252+ echo "CXX=riscv64-linux-gnu-g++" >> $GITHUB_ENV
253+ elif [ "${{ matrix.architecture }}" == "ppc" ]; then
254+ echo "CC=powerpc-linux-gnu-gcc" >> $GITHUB_ENV
255+ echo "CXX=powerpc-linux-gnu-g++" >> $GITHUB_ENV
256+ elif [ "${{ matrix.architecture }}" == "ppc64le" ]; then
257+ echo "CC=powerpc64le-linux-gnu-gcc" >> $GITHUB_ENV
258+ echo "CXX=powerpc64le-linux-gnu-g++" >> $GITHUB_ENV
259+ elif [ "${{ matrix.architecture }}" == "sparc64" ]; then
260+ echo "CC=sparc64-linux-gnu-gcc" >> $GITHUB_ENV
261+ echo "CXX=sparc64-linux-gnu-g++" >> $GITHUB_ENV
262+ elif [ "${{ matrix.architecture }}" == "s390x" ]; then
263+ echo "CC=s390x-linux-gnu-gcc" >> $GITHUB_ENV
264+ echo "CXX=s390x-linux-gnu-g++" >> $GITHUB_ENV
265+ fi
266+
267+ - name : Install CMake and Ninja
268+ run : |
269+ python -m pip install cmake ninja
270+
271+ - name : Configure CMake
272+ run : cmake -S . -B builddir -G "Ninja" -DWITH_TESTS=ON
273+
274+ - name : Build
275+ run : cmake --build builddir --config Release
276+
277+ - name : Upload Build Log
278+ if : failure()
279+ uses : actions/upload-artifact@v4
280+ with :
281+ name : cross_${{ matrix.architecture }}_cmake_buildlog
282+ path : builddir/build.ninja
283+
0 commit comments