GCC-Based Cross Building #31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # .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 |