Skip to content

GCC-Based Cross Building #31

GCC-Based Cross Building

GCC-Based Cross Building #31

Workflow file for this run

# .github/workflows/cross.yaml
name: Cross-Building
on:
workflow_dispatch: NULL
jobs:
cross-build:
name: ${{matrix.compiler.osver}}/${{matrix.target.triple}}/${{matrix.compiler.ver}}
runs-on: ubuntu-${{matrix.compiler.osver}}
strategy:
fail-fast: false
matrix:
target:
- { triple: aarch64-linux-gnu }
- { triple: arm-linux-gnueabihf }
- { triple: powerpc64le-linux-gnu }
- { triple: riscv64-linux-gnu }
- { triple: mipsel-linux-gnu }
- { triple: mips64el-linux-gnuabi64 }
- { triple: mipsisa64r6el-linux-gnuabi64 }
- { triple: alpha-linux-gnu }
- { triple: arm-linux-gnueabi, flags: '-march=armv7-a' }
- { triple: m68k-linux-gnu, flags: '-msoft-float' }
- { triple: sh4-linux-gnu }
# BE:
- { triple: hppa-linux-gnu }
- { triple: mips-linux-gnu }
- { triple: mips64-linux-gnuabi64 }
- { triple: mipsisa32r6-linux-gnu }
- { triple: mipsisa32r6el-linux-gnu }
- { triple: mipsisa64r6-linux-gnuabi64 }
- { triple: powerpc-linux-gnu }
- { triple: powerpc64-linux-gnu }
- { triple: s390x-linux-gnu }
- { triple: sparc64-linux-gnu }
compiler:
- { ver: '9', osver: '22.04' }
- { ver: '10', osver: '22.04' }
- { ver: '11', osver: '22.04' }
- { ver: '12', osver: '22.04' }
- { ver: '9', osver: '24.04' }
- { ver: '10', osver: '24.04' }
- { ver: '11', osver: '24.04' }
- { ver: '12', osver: '24.04' }
- { ver: '13', osver: '24.04' }
- { ver: '14', osver: '24.04' }
exclude:
- target: { triple: mipsel-linux-gnu }
compiler: { ver: '11', osver: '22.04' }
- target: { triple: mipsel-linux-gnu }
compiler: { ver: '12', osver: '22.04' }
- target: { triple: mips64el-linux-gnuabi64 }
compiler: { ver: '11', osver: '22.04' }
- target: { triple: mips64el-linux-gnuabi64 }
compiler: { ver: '12', osver: '22.04' }
- target: { triple: mipsisa64r6el-linux-gnuabi64 }
compiler: { ver: '11', osver: '22.04' }
- target: { triple: mipsisa64r6el-linux-gnuabi64 }
compiler: { ver: '12', osver: '22.04' }
- target: { triple: mips-linux-gnu }
compiler: { ver: '11', osver: '22.04' }
- target: { triple: mips-linux-gnu }
compiler: { ver: '12', osver: '22.04' }
- target: { triple: mips64-linux-gnuabi64 }
compiler: { ver: '11', osver: '22.04' }
- target: { triple: mips64-linux-gnuabi64 }
compiler: { ver: '12', osver: '22.04' }
- target: { triple: mipsisa64r6-linux-gnuabi64 }
compiler: { ver: '11', osver: '22.04' }
- target: { triple: mipsisa64r6-linux-gnuabi64 }
compiler: { ver: '12', osver: '22.04' }
- target: { triple: mipsisa32r6-linux-gnu }
compiler: { osver: '22.04' }
- target: { triple: mipsisa32r6el-linux-gnu }
compiler: { osver: '22.04' }
- target: { triple: m68k-linux-gnu }
compiler: { osver: '22.04' }
- target: { triple: sparc64-linux-gnu }
compiler: { osver: '22.04' }
defaults:
run: { shell: bash }
steps:
- name: Machine Information
run: |
lscpu; free -h; df -h .
- name: System Information
run: |
date; uname -a; uptime; cat /etc/os-release; ls -C /boot || :
- name: Context Information
run: |
tty || :; id; printf %s\\n "$SHELL"; printf %s\\n "$PATH"; pwd
- name: Setup
run: |
set -x
sudo apt-get update
sudo apt-get install g++-${{matrix.compiler.ver}}-${{matrix.target.triple}} qemu-user
- name: Build Tools Information
run: |
make --version; ${{matrix.target.triple}}-gcc-${{matrix.compiler.ver}} --version
- name: Checkout
uses: actions/checkout@v4
with:
ref: master
- name: Test
run: |
# Bash Script
exec 2>&1; set -x
#tee hi.cc <<'END'
## include <cstdio>
#int main() {
# std::puts("Hi");
# return 0;
#}
#END
#${{matrix.target.triple}}-g++-${{matrix.compiler.ver}} ${{matrix.target.flags}} -std=c++17 -Wno-psabi \
# -O3 -{fno-stack-protector,fcf-protection=none,fno-stack-clash-protection,U_FORTIFY_SOURCE} \
# -include prelude.cc -Werror hi.cc
#QEMU_LD_PREFIX=/usr/${{matrix.target.triple}} ./a.out
QEMU_LD_PREFIX=/usr/${{matrix.target.triple}} \
make -j5 run \
GCC='${{matrix.target.triple}}-gcc-${{matrix.compiler.ver}}' \
GXX='${{matrix.target.triple}}-g++-${{matrix.compiler.ver}}' \
CFLAGS='-Wno-psabi -O3 -fno-stack-protector -fcf-protection=none -fno-stack-clash-protection -U_FORTIFY_SOURCE' \
MARCH='${{matrix.target.flags}}'
# - name: Upload Results
# uses: actions/upload-artifact@v4
# with:
# name: build-gcc-${{matrix.compiler.ver}}-${{matrix.target.triple}}
# path: build