Skip to content

GCC-Based Cross Building #134

GCC-Based Cross Building

GCC-Based Cross Building #134

Workflow file for this run

# .github/workflows/cross.yaml
name: GCC-Based Cross Building
on:
workflow_dispatch: NULL
defaults:
run: { shell: bash }
jobs:
build:
name: Ubuntu ${{matrix.compiler.os}}, gcc-${{matrix.compiler.ver}} => ${{matrix.target.triple}} (${{matrix.target.be && 'B' || 'L'}}E)
strategy:
fail-fast: FALSE
matrix:
target:
- { triple: aarch64-linux-gnu, ld: ld-linux-aarch64.so.1 }
- { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
- { triple: powerpc64le-linux-gnu, ld: ld64.so.2 }
- { triple: riscv64-linux-gnu, ld: ld-linux-riscv64-lp64d.so.1 }
- { triple: mipsel-linux-gnu, ld: ld.so.1 }
- { triple: mips64el-linux-gnuabi64, ld: ../lib64/ld.so.1 }
- { triple: mipsisa32r6el-linux-gnu, ld: ld-linux-mipsn8.so.1 }
- { triple: alpha-linux-gnu, ld: ld-linux.so.2 }
- { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a -mthumb' }
- { triple: mipsisa64r6el-linux-gnuabi64, ld: ../lib64/ld-linux-mipsn8.so.1 }
- { triple: loongarch64-linux-gnu, ld: ld-linux-loongarch-lp64d.so.1 }
- { triple: sh4-linux-gnu, ld: ld-linux.so.2 }
- { be: TRUE, triple: s390x-linux-gnu, ld: ld64.so.1 }
- { be: TRUE, triple: powerpc64-linux-gnu, ld: ld64.so.1 }
- { be: TRUE, triple: powerpc-linux-gnu, ld: ld.so.1 }
- { be: TRUE, triple: sparc64-linux-gnu, ld: ../lib64/ld-linux.so.2 }
- { be: TRUE, triple: mips-linux-gnu, ld: ld.so.1 }
- { be: TRUE, triple: mips64-linux-gnuabi64, ld: ../lib64/ld.so.1 }
- { be: TRUE, triple: mipsisa32r6-linux-gnu, ld: ld-linux-mipsn8.so.1 }
- { be: TRUE, triple: mipsisa64r6-linux-gnuabi64, ld: ../lib64/ld-linux-mipsn8.so.1 }
- { be: TRUE, triple: m68k-linux-gnu, ld: ld.so.1, march: '-msoft-float' }
- { be: TRUE, triple: hppa-linux-gnu, ld: ld.so.1 }
compiler:
- { ver: '9', os: '22.04' }
- { ver: '10', os: '22.04' }
- { ver: '11', os: '22.04' }
- { ver: '12', os: '22.04' }
- { ver: '9', os: '24.04' }
- { ver: '10', os: '24.04' }
- { ver: '11', os: '24.04' }
- { ver: '12', os: '24.04' }
- { ver: '13', os: '24.04' }
- { ver: '14', os: '24.04' }
exclude:
- target: { triple: mipsel-linux-gnu }
compiler: { ver: '11', os: '22.04' }
- target: { triple: mipsel-linux-gnu }
compiler: { ver: '12', os: '22.04' }
- target: { triple: mips64el-linux-gnuabi64 }
compiler: { ver: '11', os: '22.04' }
- target: { triple: mips64el-linux-gnuabi64 }
compiler: { ver: '12', os: '22.04' }
- target: { triple: mips-linux-gnu }
compiler: { ver: '11', os: '22.04' }
- target: { triple: mips-linux-gnu }
compiler: { ver: '12', os: '22.04' }
- target: { triple: mips64-linux-gnuabi64 }
compiler: { ver: '11', os: '22.04' }
- target: { triple: mips64-linux-gnuabi64 }
compiler: { ver: '12', os: '22.04' }
- target: { triple: mipsisa64r6el-linux-gnuabi64 }
compiler: { ver: '11', os: '22.04' }
- target: { triple: mipsisa64r6el-linux-gnuabi64 }
compiler: { ver: '12', os: '22.04' }
- target: { triple: mipsisa64r6-linux-gnuabi64 }
compiler: { ver: '11', os: '22.04' }
- target: { triple: mipsisa64r6-linux-gnuabi64 }
compiler: { ver: '12', os: '22.04' }
- target: { triple: mipsisa32r6-linux-gnu }
compiler: { os: '22.04' }
- target: { triple: mipsisa32r6el-linux-gnu }
compiler: { os: '22.04' }
- target: { triple: sparc64-linux-gnu }
compiler: { os: '22.04' }
- target: { triple: m68k-linux-gnu }
compiler: { os: '22.04' }
- target: { triple: loongarch64-linux-gnu }
- target: { triple: sh4-linux-gnu }
include:
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '9', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '10', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '11', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '12', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '9', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '10', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '11', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '12', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '13', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabihf, ld: ld-linux-armhf.so.3 }
compiler: { ver: '14', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '9', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '10', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '11', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '12', os: '22.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '9', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '10', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '11', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '12', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '13', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: arm-linux-gnueabi, ld: ld-linux.so.3, march: '-march=armv7-a' }
compiler: { ver: '14', os: '24.04-arm' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '9', os: '22.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '10', os: '22.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '11', os: '22.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '12', os: '22.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '9', os: '24.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '10', os: '24.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '11', os: '24.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '12', os: '24.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '13', os: '24.04' }
noqemu: TRUE
- target: { triple: i686-linux-gnu, ld: ld-linux.so.2, march: '-msse2 -mfpmath=sse' }
compiler: { ver: '14', os: '24.04' }
noqemu: TRUE
- target: { triple: loongarch64-linux-gnu, ld: ld-linux-loongarch-lp64d.so.1 }
compiler: { ver: '13', os: '24.04' }
- target: { triple: loongarch64-linux-gnu, ld: ld-linux-loongarch-lp64d.so.1 }
compiler: { ver: '14', os: '24.04' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '9', os: '22.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '10', os: '22.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '11', os: '22.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '12', os: '22.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '9', os: '24.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '10', os: '24.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '11', os: '24.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '12', os: '24.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '13', os: '24.04-arm' }
- target: { triple: x86_64-linux-gnu, ld: ld-linux-x86-64.so.2 }
compiler: { ver: '14', os: '24.04-arm' }
runs-on: ubuntu-${{matrix.compiler.os}}
steps:
- name: Machine Information
run: |
exec 2>&1
set -x
lscpu; free -h; df -H .
- name: System Information
run: |
exec 2>&1
date; uname -a; uptime
set -x
systemd-detect-virt || :
cat /etc/os-release
ls -C /boot || :
- name: Context Information
run: |
exec 2>&1
tty || :; id; printf %s\\n SHELL="$SHELL" PATH="$PATH"
set -x
pwd
ps -e --sort ppid,pid -o ppid,pid,user:12,group:12,comm:24,rsz:11,vsz:11,thcount,bsdstart,state,tname
- name: Update Package DB # use timeouts???
run: |
exec 2>&1
set -x
sudo sed -i /azure/d /etc/apt/apt-mirrors.txt
printf -- %s' ports.ubuntu.com\n' ${{vars.ip_ports_ubuntu_com}} | sudo tee -a /etc/hosts >/dev/null
sudo apt-get -oDpkg::Use-Pty=0 update
- name: Install Build Dependencies # use timeouts???
run: |
exec 2>&1
triple=${{matrix.target.triple}}
set -x
sudo apt-get -oDpkg::Use-Pty=0 install g++-${{matrix.compiler.ver}}-${triple//_/-}
- name: Install QEMU
if: (!matrix.noqemu)
run: |
exec 2>&1
sudo apt-get -oDpkg::Use-Pty=0 install qemu-user
- name: Build Tools Information
run: |
exec 2>&1
make --version; ${{matrix.target.triple}}-gcc-${{matrix.compiler.ver}} --version
- name: Checkout
uses: actions/checkout@v4
- name: Run Make and Check
timeout-minutes: 20
if: true
run: |
exec 2>&1
set -x
tee hi.cc <<'END' >/dev/null
# include <cstdio>
int main() {
std::puts("Hi");
return 0;
}
END
${{matrix.target.triple}}-g++-${{matrix.compiler.ver}} -pipe -{w,Wno-psabi} -DMNL_STRICT \
${{matrix.target.march}} -Wl,-{I/usr/${{matrix.target.triple}}/lib/${{matrix.target.ld}},R/usr/${{matrix.target.triple}}/lib} \
-pthread --std=c++17 \
-{O3,f{no-{math-errno,stack-{protector,clash-protection},cf-protection=none}},U_FORTIFY_SOURCE} \
-include prelude.cc \
-{S,o-} -Werror hi.cc
${{matrix.target.triple}}-g++-${{matrix.compiler.ver}} -pipe -{w,Wno-psabi} -DMNL_STRICT \
${{matrix.target.march}} -Wl,-{I/usr/${{matrix.target.triple}}/lib/${{matrix.target.ld}},R/usr/${{matrix.target.triple}}/lib} \
-pthread --std=c++17 \
-{O3,f{no-stack-{protector,clash-protection},cf-protection=none},U_FORTIFY_SOURCE} \
-include prelude.cc \
-rdynamic -s -Wl,--as-needed -l{m,dl,rt} \
hi.cc
file a.out
./a.out
- name: Checkout
if: (!matrix.target.be)
uses: actions/checkout@v4
with: { ref: master }
- name: Run Make and Check
if: (!matrix.target.be)
run: |
exec 2>&1
set -x
make -{j4,Otarget} \
GCC=${{matrix.target.triple}}-gcc-${{matrix.compiler.ver}} \
GXX=${{matrix.target.triple}}-g++-${{matrix.compiler.ver}} \
MARCH='${{matrix.target.march}} -Wl,-I/usr/${{matrix.target.triple}}/lib/${{matrix.target.ld}} -Wl,-rpath=/usr/${{matrix.target.triple}}/lib' \
run