diff --git a/.github/workflows/platforms.yml b/.github/workflows/platforms.yml new file mode 100644 index 00000000..94263728 --- /dev/null +++ b/.github/workflows/platforms.yml @@ -0,0 +1,47 @@ +name: Platform builds + +on: + schedule: [cron: '0 14 * * *'] + +jobs: + build_linux_platforms: + runs-on: ubuntu-latest + name: ${{ matrix.conf.name }} + if: github.event_name != 'pull_request' || contains('dreamer,kcgen,ant-222', github.actor) == false + strategy: + matrix: + conf: + - name: ARMv6 (Debian Buster) + architecture: armv6 + distribution: buster + - name: ARMv7 (Debian Buster) + architecture: armv7 + distribution: buster + - name: AArch64 (Ubuntu 18.04) + architecture: aarch64 + distribution: ubuntu18.04 + - name: LinuxONE (Ubuntu 18.04) + architecture: s390x + distribution: ubuntu18.04 + - name: POWER8 (Ubuntu 18.04) + architecture: ppc64le + distribution: ubuntu18.04 + steps: + - uses: actions/checkout@v2 + + - name: Check repo for commits + id: repo-meta + shell: bash + run: 'echo ::set-output name=has-commits::$(./scripts/has-commits-since.sh "24 hours ago")' + + - uses: uraimo/run-on-arch-action@master + if: steps.repo-meta.outputs.has-commits == 'true' + with: + architecture: ${{ matrix.conf.architecture }} + distribution: ${{ matrix.conf.distribution }} + run: | + set -x + apt-get update + apt-get install -y $(./scripts/list-build-dependencies.sh -c gcc -m apt) + ./scripts/log-env.sh + ./scripts/build.sh -c gcc -t release diff --git a/scripts/automator/build/gcc-linux_aarch64 b/scripts/automator/build/gcc-linux_aarch64 new file mode 100644 index 00000000..7cb2cd47 --- /dev/null +++ b/scripts/automator/build/gcc-linux_aarch64 @@ -0,0 +1,3 @@ +# GCC flags for generically identified AArch64 +# Note: Advanced SIMD (aka NEON) is mandatory for AArch64 and implied +cflags_release+=(-mcpu=native -mstrict-align) diff --git a/scripts/automator/build/gcc-linux_armv6 b/scripts/automator/build/gcc-linux_armv6 new file mode 100644 index 00000000..47ad4f44 --- /dev/null +++ b/scripts/automator/build/gcc-linux_armv6 @@ -0,0 +1,2 @@ +# GCC flags for generically identified ARMv6 SBCs +cflags_release+=(-marm -mfpu=vfpv2 -mfloat-abi=hard) diff --git a/scripts/automator/build/gcc-linux_armv7l b/scripts/automator/build/gcc-linux_armv7l new file mode 100644 index 00000000..158ce97d --- /dev/null +++ b/scripts/automator/build/gcc-linux_armv7l @@ -0,0 +1,14 @@ +# GCC flags for generically identified ARMv7 SBCs + +# Note: NEON SIMD instructions for floating-point operations are +# not generated by GCC’s auto-vectorization pass unless +# -funsafe-math-optimizations is also specified. This is because +# NEON hardware does not fully implement the IEEE 754 standard for +# some floating-point arithmetic operations, specifically +# "denormal" values are treated as zero, so in these corner-cases, +# the use of NEON instructions may lead to a loss of precision. +# For our purposes, we expect to perform normal calculations and +# thus accept this risk for release builds. + +cflags_release+=(-mcpu=generic-armv7-a -march=armv7-a -mfloat-abi=hard + -funsafe-math-optimizations -mfpu=auto) diff --git a/scripts/automator/build/gcc-linux_ppc64le b/scripts/automator/build/gcc-linux_ppc64le new file mode 100644 index 00000000..4023df7b --- /dev/null +++ b/scripts/automator/build/gcc-linux_ppc64le @@ -0,0 +1,2 @@ +# GCC flags specific to the IBM POWER8 platform +cflags_release+=(-mcpu=power8) diff --git a/scripts/automator/build/gcc-linux_s390x b/scripts/automator/build/gcc-linux_s390x new file mode 100644 index 00000000..bf8d6cc3 --- /dev/null +++ b/scripts/automator/build/gcc-linux_s390x @@ -0,0 +1,8 @@ +# GCC flags for the IBM S/390 and zSeries platform + +# Defaults include: +# -mlong-double-128, 128-bit long doubles +# -m64, generate 64-bit instructions +# -mfused-madd, use floating point multiply and accumulate instructions + +cflags_release+=(-march=native -mhard-float) diff --git a/scripts/automator/build/machine-aarch64 b/scripts/automator/build/machine-aarch64 new file mode 100644 index 00000000..e69de29b diff --git a/scripts/automator/build/machine-armv6 b/scripts/automator/build/machine-armv6 new file mode 100644 index 00000000..e69de29b diff --git a/scripts/automator/build/machine-armv7l b/scripts/automator/build/machine-armv7l new file mode 100644 index 00000000..e69de29b diff --git a/scripts/automator/build/machine-ppc64le b/scripts/automator/build/machine-ppc64le new file mode 100644 index 00000000..e69de29b diff --git a/scripts/automator/build/machine-s390x b/scripts/automator/build/machine-s390x new file mode 100644 index 00000000..e69de29b