4646 - {name: "ubuntu-22.04-arm64", os: "ubuntu-22.04", arch: "aarch64", cross_compile: true, cmake_extra: "-DLSL_BUNDLED_PUGIXML=ON" }
4747 - {name: "ubuntu-22.04-armhf", os: "ubuntu-22.04", arch: "armv7", cross_compile: true, cmake_extra: "-DLSL_BUNDLED_PUGIXML=ON" }
4848
49- # Native ARM build (optional - can be enabled for additional validation)
49+ # Native ARM build
5050 # - {name: "ubuntu-24.04-arm64-native", os: "ubuntu-24.04-arm", arch: "aarch64", cmake_extra: "-DLSL_BUNDLED_PUGIXML=OFF" }
5151
5252 # Windows builds
5555 - {name: "windows-arm64", os: "windows-11-arm", arch: "aarch64", cmake_extra: "-T v143,host=ARM64 -A ARM64"}
5656
5757 # macOS builds (Apple Silicon + Intel)
58- - {name: "macos-latest", os: "macos-latest", arch: "universal"}
58+ # - {name: "macos-latest", os: "macos-latest", arch: "universal"}
5959
6060 steps :
6161 - uses : actions/checkout@v5
@@ -68,17 +68,13 @@ jobs:
6868 if [[ "${{ matrix.config.arch }}" == "aarch64" ]]; then
6969 sudo apt-get install -y --no-install-recommends \
7070 gcc-aarch64-linux-gnu \
71- g++-aarch64-linux-gnu \
72- qemu-user-static
71+ g++-aarch64-linux-gnu
7372 echo "CMAKE_TOOLCHAIN=-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/cmake/toolchains/aarch64-linux-gnu.cmake" >> $GITHUB_ENV
74- echo "QEMU_LD_PREFIX=/usr/aarch64-linux-gnu" >> $GITHUB_ENV
7573 elif [[ "${{ matrix.config.arch }}" == "armv7" ]]; then
7674 sudo apt-get install -y --no-install-recommends \
7775 gcc-arm-linux-gnueabihf \
78- g++-arm-linux-gnueabihf \
79- qemu-user-static
76+ g++-arm-linux-gnueabihf
8077 echo "CMAKE_TOOLCHAIN=-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/cmake/toolchains/arm-linux-gnueabihf.cmake" >> $GITHUB_ENV
81- echo "QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf" >> $GITHUB_ENV
8278 fi
8379
8480 # Cache dependencies for Linux
@@ -123,7 +119,7 @@ jobs:
123119
124120 - name : Configure CMake
125121 run : |
126- # Set up ccache as compiler wrapper
122+ # Set up ccache as compiler wrapper (skip for cross-compilation)
127123 if [[ "${{ runner.os }}" == "Linux" || "${{ runner.os }}" == "macOS" ]] && [[ "${{ matrix.config.cross_compile }}" != "true" ]]; then
128124 export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
129125 export CC="ccache gcc"
@@ -158,16 +154,6 @@ jobs:
158154
159155 - name : Test install using examples
160156 run : |
161- # Set up QEMU for cross-compiled binaries
162- QEMU_RUNNER=""
163- if [[ "${{ matrix.config.cross_compile }}" == "true" ]]; then
164- if [[ "${{ matrix.config.arch }}" == "aarch64" ]]; then
165- QEMU_RUNNER="qemu-aarch64-static -L /usr/aarch64-linux-gnu"
166- elif [[ "${{ matrix.config.arch }}" == "armv7" ]]; then
167- QEMU_RUNNER="qemu-arm-static -L /usr/arm-linux-gnueabihf"
168- fi
169- fi
170-
171157 # Test that the in-tree install was successful by building the examples
172158 cmake -S examples -B examples/build \
173159 -DLSL_INSTALL_ROOT=${PWD}/install \
@@ -178,11 +164,12 @@ jobs:
178164 ${{ github.event.inputs.cmakeextra }}
179165 cmake --build examples/build --target install --config Release -j
180166
181- # Run example with QEMU if cross-compiled
182- if [[ -n "$QEMU_RUNNER" ]]; then
183- $QEMU_RUNNER ./examples/build/install/bin/HandleMetaData
184- else
167+ # Run example binary (skip for cross-compiled builds - no QEMU)
168+ if [[ "${{ matrix.config.cross_compile }}" != "true" ]]; then
185169 ./examples/build/install/bin/HandleMetaData
170+ else
171+ echo "Skipping example execution for cross-compiled build (requires real ARM hardware)"
172+ echo "Build validation successful - binary can be tested on target hardware"
186173 fi
187174
188175 - name : Package
@@ -230,35 +217,20 @@ jobs:
230217 ip -6 route
231218 fi
232219
233- # Run internal tests (with QEMU for cross-compiled binaries )
220+ # Run tests (native builds only )
234221 - name : Unit tests
222+ if : matrix.config.cross_compile != true
235223 run : |
236- # Set up core dumps for debugging (native builds only)
237- if [[ "${{ matrix.config.name }}" == ubuntu-* ]] && [[ "${{ matrix.config.cross_compile }}" != "true" ]] ; then
224+ # Set up core dumps for debugging
225+ if [[ "${{ matrix.config.name }}" == ubuntu-* ]]; then
238226 ulimit -c unlimited
239227 echo "$PWD/dumps/corefile-%e-%p-%t" | sudo tee /proc/sys/kernel/core_pattern
240228 fi
241229 mkdir -p dumps
242230
243- # Set up QEMU for cross-compiled binaries
244- QEMU_RUNNER=""
245- if [[ "${{ matrix.config.cross_compile }}" == "true" ]]; then
246- if [[ "${{ matrix.config.arch }}" == "aarch64" ]]; then
247- QEMU_RUNNER="qemu-aarch64-static -L /usr/aarch64-linux-gnu"
248- elif [[ "${{ matrix.config.arch }}" == "armv7" ]]; then
249- QEMU_RUNNER="qemu-arm-static -L /usr/arm-linux-gnueabihf"
250- fi
251- echo "Running tests with QEMU: $QEMU_RUNNER"
252- fi
253-
254231 # Run unit tests
255- if [[ -n "$QEMU_RUNNER" ]]; then
256- $QEMU_RUNNER install/bin/lsl_test_internal --order rand --wait-for-keypress never --durations yes
257- $QEMU_RUNNER install/bin/lsl_test_exported --order rand --wait-for-keypress never --durations yes
258- else
259- install/bin/lsl_test_internal --order rand --wait-for-keypress never --durations yes
260- install/bin/lsl_test_exported --order rand --wait-for-keypress never --durations yes
261- fi
232+ install/bin/lsl_test_internal --order rand --wait-for-keypress never --durations yes
233+ install/bin/lsl_test_exported --order rand --wait-for-keypress never --durations yes
262234 timeout-minutes : 10
263235
264236 - name : upload dump
0 commit comments