Skip to content

LWJGL CI configuration #201

LWJGL CI configuration

LWJGL CI configuration #201

Workflow file for this run

name: LWJGL Build
on:
push:
branches:
- master
env:
AWS_DEFAULT_REGION: us-east-1
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
S3_PARAMS: --cache-control "public,must-revalidate,proxy-revalidate,max-age=0"
jobs:
linux:
name: Linux
runs-on: ubuntu-latest
container:
image: centos:7
strategy:
fail-fast: false
matrix:
ARCH: [x64]
include:
- ARCH: x64
HOST: x86_64-pc-linux-gnu
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 3
- name: Configure yum
run: |
yum -y install epel-release
yum -y update
- name: Install build dependencies
run: |
yum -y install centos-release-scl
yum -y install devtoolset-11-gcc-c++
yum -y install awscli
- name: Install libffi dependencies
run: yum -y install autoconf automake libtool texinfo
- name: Install autoconf 2.71
run: |
source scl_source enable devtoolset-11 || true
curl -L https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz | tar -xz
(cd autoconf-2.71; ./configure; make; make install)
- name: Configure build
run: |
source scl_source enable devtoolset-11 || true
./autogen.sh
./configure --disable-shared --with-pic --host=${{matrix.HOST}} || (cat */config.log ; exit 1)
- name: Build
run: |
source scl_source enable devtoolset-11 || true
make
- name: Upload artifact
run: aws s3 cp ${{matrix.HOST}}/.libs/libffi_convenience.a s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/core/libffi.a $S3_PARAMS
linux-cross:
name: Linux Cross
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
ARCH: [arm32, arm64, mips64, ppc64le, riscv64]
include:
# -----
- ARCH: arm32
CROSS_ARCH: armhf
CONTAINER: ubuntu:18.04
TRIPLET: arm-linux-gnueabihf
HOST: arm-unknown-linux-gnueabihf
# -----
- ARCH: arm64
CROSS_ARCH: arm64
CONTAINER: ubuntu:18.04
TRIPLET: aarch64-linux-gnu
HOST: aarch64-unknown-linux-gnu
# -----
- ARCH: mips64
CROSS_ARCH: mips64el
CONTAINER: ubuntu:18.04
TRIPLET: mips64el-linux-gnuabi64
HOST: mips64el-unknown-linux-gnu
# ----
- ARCH: ppc64le
CROSS_ARCH: ppc64el
CONTAINER: ubuntu:18.04
TRIPLET: powerpc64le-linux-gnu
HOST: powerpc64le-unknown-linux-gnu
# -----
- ARCH: riscv64
CROSS_ARCH: riscv64
CONTAINER: ubuntu:20.04
TRIPLET: riscv64-linux-gnu
HOST: riscv64-unknown-linux-gnu
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: sudo apt-get install -yq m4 make automake libtool texinfo gcc-${{matrix.TRIPLET}} libc6-dev-${{matrix.CROSS_ARCH}}-cross
- name: Configure build
run: |
PATH=$HOME/i/bin:$PATH ./autogen.sh
./configure --disable-shared --with-pic CC=${{matrix.TRIPLET}}-gcc --host=${{matrix.HOST}} || (cat */config.log ; exit 1)
- name: Build
run: make
- name: Upload artifact
run: aws s3 cp ${{matrix.HOST}}/.libs/libffi_convenience.a s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/core/libffi.a $S3_PARAMS
# linux-cross:
# name: Linux Cross
# runs-on: ubuntu-latest
# container:
# image: ${{matrix.CONTAINER}}
# strategy:
# fail-fast: false
# matrix:
# ARCH: [arm32, arm64, mips64, ppc64le, riscv64]
# include:
# # -----
# - ARCH: arm32
# CROSS_ARCH: armhf
# CONTAINER: ubuntu:18.04
# TRIPLET: arm-linux-gnueabihf
# HOST: arm-unknown-linux-gnueabihf
# # -----
# - ARCH: arm64
# CROSS_ARCH: arm64
# CONTAINER: ubuntu:18.04
# TRIPLET: aarch64-linux-gnu
# HOST: aarch64-unknown-linux-gnu
# # -----
# - ARCH: mips64
# CROSS_ARCH: mips64el
# CONTAINER: ubuntu:18.04
# TRIPLET: mips64el-linux-gnuabi64
# HOST: mips64el-unknown-linux-gnu
# # ----
# - ARCH: ppc64le
# CROSS_ARCH: ppc64el
# CONTAINER: ubuntu:18.04
# TRIPLET: powerpc64le-linux-gnu
# HOST: powerpc64le-unknown-linux-gnu
# # -----
# - ARCH: riscv64
# CROSS_ARCH: riscv64
# CONTAINER: ubuntu:20.04
# TRIPLET: riscv64-linux-gnu
# HOST: riscv64-unknown-linux-gnu
# defaults:
# run:
# shell: bash
# steps:
# - name: Upgrade git
# run: |
# apt-get -y update
# apt-get -y install software-properties-common wget
# apt-get -y install --reinstall ca-certificates
# apt-get -y update
# apt-get -y upgrade
# wget https://apt.kitware.com/keys/kitware-archive-latest.asc
# apt-key add kitware-archive-latest.asc
# add-apt-repository -y 'deb https://apt.kitware.com/ubuntu/ bionic main'
# add-apt-repository -y ppa:git-core/ppa
# apt-get -y update
# DEBIAN_FRONTEND=noninteractive apt-get -yq install awscli git
# - uses: actions/checkout@v3
# with:
# fetch-depth: 1
# - name: Install dependencies
# run: apt-get install -yq m4 make automake libtool texinfo gcc-${{matrix.TRIPLET}} libc6-dev-${{matrix.CROSS_ARCH}}-cross
# - name: Install autoconf 2.71
# run: |
# wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 -qO - https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz | tar -xvzf -
# mkdir -p ~/i
# (cd autoconf-2.71; ./configure --prefix=$HOME/i; make; make install)
# rm -rf autoconf-2.71
# - name: Configure build
# run: |
# PATH=$HOME/i/bin:$PATH ./autogen.sh
# ./configure --disable-shared --with-pic CC=${{matrix.TRIPLET}}-gcc --host=${{matrix.HOST}} || cat */config.log
# - name: Build
# run: make
# - name: Upload artifact
# run: aws s3 cp ${{matrix.HOST}}/.libs/libffi_convenience.a s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/core/libffi.a $S3_PARAMS
freebsd-cross:
name: FreeBSD Cross
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Build
uses: cross-platform-actions/[email protected]
with:
operating_system: freebsd
architecture: x86-64
version: '13.2'
memory: 4G
shell: bash
run: |
sudo pkg install -y m4 gmake automake libtool texinfo
./autogen.sh
./configure --disable-shared --with-pic || (cat */config.log ; exit 1)
make
- name: Upload artifact
run: aws s3 cp x86_64-unknown-freebsd13.2/.libs/libffi_convenience.a s3://lwjgl-build/nightly/freebsd/x64/core/libffi.a $S3_PARAMS
macos:
name: macOS
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
ARCH: [x64, arm64]
include:
- ARCH: x64
DARWIN: 15
CC: MACOSX_DEPLOYMENT_TARGET=10.11
CFLAGS: -target x64-apple-darwin -arch x86_64 -mmacosx-version-min=10.11
LDFLAGS: -target x64-apple-darwin -arch x86_64 -mmacosx-version-min=10.11
HOST: x86_64
- ARCH: arm64
DARWIN: 20
CC: MACOSX_DEPLOYMENT_TARGET=11.0
CFLAGS: -target aarch64-apple-darwin -arch arm64 -mmacosx-version-min=11.0
LDFLAGS: -target aarch64-apple-darwin -arch arm64 -mmacosx-version-min=11.0
HOST: aarch64
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Install dependencies
run: brew install automake libtool texinfo
- name: Configure build
run: |
./autogen.sh
${{matrix.CC}} ./configure --disable-shared CC=clang CFLAGS='${{matrix.CFLAGS}}' LDFLAGS='${{matrix.LDFLAGS}}' --target ${{matrix.ARCH}}-apple-darwin${{matrix.DARWIN}} --host=${{matrix.HOST}}-apple-darwin${{matrix.DARWIN}} || (cat */config.log ; exit 1)
- name: Build
run: ${{matrix.CC}} make
- name: Upload artifact
run: aws s3 cp ${{matrix.HOST}}-apple-darwin${{matrix.DARWIN}}/.libs/libffi_convenience.a s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/core/libffi.a $S3_PARAMS
windows:
name: Windows
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
ARCH: [x86, x64, arm64]
include:
# -----
- ARCH: x86
SOURCE_ARCH: x86
MSVC_ARCH: amd64_x86
MSVC_SH: msvcc.sh
HOST: i686-pc-cygwin
# -----
- ARCH: x64
SOURCE_ARCH: x86
MSVC_ARCH: amd64
MSVC_SH: msvcc.sh -m64
HOST: x86_64-pc-cygwin
# -----
- ARCH: arm64
SOURCE_ARCH: aarch64
MSVC_ARCH: amd64_arm64
MSVC_SH: msvcc.sh -marm64
HOST: aarch64-pc-cygwin
defaults:
run:
shell: cmd
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Install dependencies
uses: egor-tensin/setup-cygwin@v3
with:
platform: x64
install-dir: C:\cygwin
packages: wget autoconf automake libtool
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.MSVC_ARCH }}
- name: Build
run: |
cd $(cygpath $RUNNER_WORKSPACE)/libffi
./autogen.sh
./configure \
CC="$PWD/${{matrix.MSVC_SH}}" \
CXX="$PWD/${{matrix.MSVC_SH}}" \
LD='link' \
CPP='cl -nologo -EP' \
CXXCPP='cl -nologo -EP' \
CPPFLAGS='-DFFI_BUILDING_DLL -DUSE_STATIC_RTL' \
NM='dumpbin -symbols' \
STRIP=':' \
CONFIGURE_OPTIONS=--disable-shared \
--host=${{matrix.HOST}} \
|| (cat */config.log ; exit 1)
cp src/${{matrix.SOURCE_ARCH}}/ffitarget.h include
make
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
- name: Upload artifact
run: aws s3 cp ${{matrix.HOST}}\.libs\libffi_convenience.lib s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/core/libffi.lib %S3_PARAMS%