Skip to content

Commit 856b79b

Browse files
add cross targets to CI file
1 parent 8ca035d commit 856b79b

File tree

1 file changed

+92
-11
lines changed

1 file changed

+92
-11
lines changed

.github/workflows/cmake_ci.yml

Lines changed: 92 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ jobs:
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
@@ -101,9 +98,6 @@ jobs:
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

Comments
 (0)