Skip to content

Commit 2294328

Browse files
committed
optimised linux compilation for non-x86 platforms
1 parent 8f5f68c commit 2294328

1 file changed

Lines changed: 38 additions & 31 deletions

File tree

.github/workflows/cross-platform-build.yml

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,52 +32,59 @@ jobs:
3232
matrix:
3333
include:
3434
- arch: amd64
35-
platform: linux/amd64
36-
image: debian:bookworm
35+
compiler: g++
3736
- arch: arm64
38-
platform: linux/arm64
39-
image: debian:bookworm
37+
compiler: aarch64-linux-gnu-g++
38+
package: g++-aarch64-linux-gnu
39+
processor: aarch64
4040
- arch: armhf
41-
platform: linux/arm/v7
42-
image: debian:bookworm
41+
compiler: arm-linux-gnueabihf-g++
42+
package: g++-arm-linux-gnueabihf
43+
processor: arm
4344
- arch: armel
44-
platform: linux/arm/v6
45-
image: debian:bookworm
45+
compiler: arm-linux-gnueabi-g++
46+
package: g++-arm-linux-gnueabi
47+
processor: arm
4648
- arch: i386
47-
platform: linux/386
48-
image: debian:bookworm
49+
compiler: i686-linux-gnu-g++
50+
package: g++-i686-linux-gnu
51+
processor: i686
4952
- arch: mips64el
50-
platform: linux/mips64le
51-
image: debian:bookworm
53+
compiler: mips64el-linux-gnuabi64-g++
54+
package: g++-mips64el-linux-gnuabi64
55+
processor: mips64
5256
- arch: ppc64el
53-
platform: linux/ppc64le
54-
image: debian:bookworm
57+
compiler: powerpc64le-linux-gnu-g++
58+
package: g++-powerpc64le-linux-gnu
59+
processor: powerpc64le
5560
- arch: riscv64
56-
platform: linux/riscv64
57-
image: debian:sid
61+
compiler: riscv64-linux-gnu-g++
62+
package: g++-riscv64-linux-gnu
63+
processor: riscv64
5864
- arch: s390x
59-
platform: linux/s390x
60-
image: debian:bookworm
65+
compiler: s390x-linux-gnu-g++
66+
package: g++-s390x-linux-gnu
67+
processor: s390x
6168

6269
steps:
6370
- uses: actions/checkout@v4
6471

65-
- name: Set up QEMU
66-
uses: docker/setup-qemu-action@v4
72+
- name: Install tools (${{ matrix.arch }})
73+
run: |
74+
sudo apt-get update -q
75+
sudo apt-get install -y --no-install-recommends cmake ${{ matrix.package }}
6776
6877
- name: Build (${{ matrix.arch }})
6978
run: |
70-
docker run --rm \
71-
--platform ${{ matrix.platform }} \
72-
-v ${{ github.workspace }}:/src \
73-
-w /src \
74-
${{ matrix.image }} \
75-
bash -c "
76-
apt-get update -q &&
77-
apt-get install -y --no-install-recommends cmake g++ build-essential &&
78-
cmake -B build -DCMAKE_BUILD_TYPE=Release &&
79-
cmake --build build --config Release
80-
"
79+
CROSS_ARGS=""
80+
if [ -n "${{ matrix.processor }}" ]; then
81+
CROSS_ARGS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.processor }}"
82+
fi
83+
cmake -B build \
84+
-DCMAKE_BUILD_TYPE=Release \
85+
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }} \
86+
$CROSS_ARGS
87+
cmake --build build --config Release
8188
8289
- name: Upload binary artifact
8390
uses: actions/upload-artifact@v4

0 commit comments

Comments
 (0)