LWJGL configuration #33
This file contains 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
# IMPORTANT: after HEAD is updated, the "LWJGL" tag must be recreated! | |
# This workflow builds the standalone harfbuzz library. | |
# However, this git tag ("LWJGL") is also used by LWJGL-CI/freetype. | |
# Any changes to non-workflow files should be tested with both workflows. | |
name: LWJGL Build | |
on: | |
push: | |
branches: | |
- main | |
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" | |
HARFBUZZ_PARAMS: --wrap-mode=default -Dfreetype=disabled -Dtests=disabled -Dbenchmark=disabled -Ddocs=disabled -Dexperimental_api=true --buildtype=release -Db_lto=true -Db_ndebug=true | |
jobs: | |
linux: | |
name: Linux | |
runs-on: ubuntu-latest | |
container: | |
image: centos:7 | |
strategy: | |
fail-fast: false | |
matrix: | |
ARCH: [x64] | |
include: | |
- ARCH: x64 | |
steps: | |
- run: | | |
yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm | |
yum -y install git | |
name: Upgrade git | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 3 | |
- run: | | |
yum -y install epel-release | |
yum -y update | |
name: Configure yum | |
- run: | | |
yum -y install centos-release-scl | |
yum -y install devtoolset-11-gcc-c++ | |
yum -y install python3 awscli | |
name: Install build dependencies | |
- run: | | |
yum -y install ninja-build | |
pip3 install meson | |
name: Install HarfBuzz dependencies | |
- run: | | |
source scl_source enable devtoolset-11 || true | |
meson setup build ${{env.HARFBUZZ_PARAMS}} | |
name: Configure build | |
- run: | | |
source scl_source enable devtoolset-11 || true | |
meson compile --verbose -C build | |
strip build/src/libharfbuzz.so | |
name: Build | |
- run: aws s3 cp build/src/libharfbuzz.so s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS | |
name: Upload artifact | |
- run: | | |
git config --global --add safe.directory $PWD | |
git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libharfbuzz.so.git | |
aws s3 cp libharfbuzz.so.git s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS | |
name: Upload git revision | |
linux-cross: | |
name: Linux Cross | |
runs-on: ubuntu-latest | |
container: | |
image: ${{matrix.CONTAINER}} | |
strategy: | |
fail-fast: false | |
matrix: | |
ARCH: [arm32, arm64, riscv64] | |
include: | |
- ARCH: arm32 | |
CROSS_ARCH: armhf | |
CONTAINER: ubuntu:18.04 | |
PACKAGES: gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dev-armhf-cross | |
MESON_PARAMS: --cross-file lwjgl_linux_arm32.cross | |
STRIP: arm-linux-gnueabihf-strip | |
- ARCH: arm64 | |
CROSS_ARCH: arm64 | |
CONTAINER: ubuntu:18.04 | |
PACKAGES: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross | |
MESON_PARAMS: --cross-file lwjgl_linux_arm64.cross | |
STRIP: aarch64-linux-gnu-strip | |
- ARCH: riscv64 | |
CROSS_ARCH: riscv64 | |
CONTAINER: ubuntu:20.04 | |
PACKAGES: gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dev-riscv64-cross | |
MESON_PARAMS: --cross-file lwjgl_linux_riscv64.cross | |
STRIP: riscv64-linux-gnu-strip | |
env: | |
LWJGL_ARCH: ${{matrix.ARCH}} | |
steps: | |
- run: | | |
apt-get -y update | |
apt-get -y install software-properties-common | |
apt-get -y install --reinstall ca-certificates | |
add-apt-repository -y ppa:git-core/ppa | |
name: Update apt repositories | |
if: ${{ matrix.CONTAINER == 'ubuntu:18.04' }} | |
- run: | | |
apt-get -y update | |
apt-get -y upgrade | |
DEBIAN_FRONTEND=noninteractive apt-get -yq install awscli git ninja-build python3-pip | |
name: Upgrade git | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 3 | |
- run: pip3 install meson | |
name: Install meson | |
- run: | | |
sed -i 's/deb http/deb [arch=amd64,i386] http/' /etc/apt/sources.list | |
grep "ubuntu.com/ubuntu" /etc/apt/sources.list | tee /etc/apt/sources.list.d/ports.list | |
sed -i 's/amd64,i386/${{matrix.CROSS_ARCH}}/' /etc/apt/sources.list.d/ports.list | |
sed -i 's#http://.*/ubuntu#http://ports.ubuntu.com/ubuntu-ports#' /etc/apt/sources.list.d/ports.list | |
dpkg --add-architecture ${{matrix.CROSS_ARCH}} | |
apt-get update || true | |
name: Prepare cross-compilation | |
- run: apt-get -fyq --allow-unauthenticated --no-install-suggests --no-install-recommends install ${{matrix.PACKAGES}} -o Dpkg::Options::="--force-overwrite" | |
name: Install dependencies | |
- run: meson setup build ${{env.HARFBUZZ_PARAMS}} ${{matrix.MESON_PARAMS}} | |
name: Configure build | |
- run: | | |
meson compile --verbose -C build | |
${{matrix.STRIP}} build/src/libharfbuzz.so | |
name: Build | |
- run: aws s3 cp build/src/libharfbuzz.so s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS | |
name: Upload artifact | |
- run: | | |
git config --global --add safe.directory $(pwd) | |
git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libharfbuzz.so.git | |
aws s3 cp libharfbuzz.so.git s3://lwjgl-build/nightly/linux/${{matrix.ARCH}}/ $S3_PARAMS | |
name: Upload git revision | |
macos: | |
name: macOS | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ARCH: [x64, arm64] | |
include: | |
- ARCH: x64 | |
MACOS: 10.9 | |
MESON_PARAMS: | |
- ARCH: arm64 | |
MACOS: 11.0 | |
MESON_PARAMS: --cross-file lwjgl_macos_arm64.cross | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 11.0 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 3 | |
- run: brew install meson | |
name: Install dependencies | |
- run: MACOSX_DEPLOYMENT_TARGET=${{matrix.MACOS}} meson setup build ${{env.HARFBUZZ_PARAMS}} -Dcoretext=enabled ${{matrix.MESON_PARAMS}} | |
name: Configure build | |
- run: | | |
MACOSX_DEPLOYMENT_TARGET=${{matrix.MACOS}} meson compile --verbose -C build | |
strip -u -r build/src/libharfbuzz.dylib | |
name: Build | |
- run: aws s3 cp build/src/libharfbuzz.dylib s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/ $S3_PARAMS | |
name: Upload artifact | |
- run: | | |
git log --first-parent --pretty=format:%H HEAD~2..HEAD~1 > libharfbuzz.dylib.git | |
aws s3 cp libharfbuzz.dylib.git s3://lwjgl-build/nightly/macosx/${{matrix.ARCH}}/ $S3_PARAMS | |
name: Upload git revision | |
windows: | |
name: Windows | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ARCH: [x86, x64, arm64] | |
include: | |
- ARCH: x86 | |
MSVC_ARCH: amd64_x86 | |
PLATFORM: Win32 | |
MESON_PARAMS: | |
- ARCH: x64 | |
MSVC_ARCH: amd64 | |
PLATFORM: x64 | |
MESON_PARAMS: | |
- ARCH: arm64 | |
MSVC_ARCH: amd64_arm64 | |
PLATFORM: ARM64 | |
MESON_PARAMS: --cross-file lwjgl_windows_arm64.cross | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 3 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: ${{matrix.MSVC_ARCH}} | |
# Strawberry: see LWJGL-CI/freetype's workflow for details. | |
- run: | | |
pip3 install meson | |
rmdir C:\Strawberry /s /q | |
shell: cmd | |
name: Install dependencies | |
- run: meson setup build ${{env.HARFBUZZ_PARAMS}} -Dgdi=enabled -Ddirectwrite=enabled -Db_vscrt=mt ${{matrix.MESON_PARAMS}} | |
shell: cmd | |
name: Configure build | |
- run: meson compile --verbose -C build | |
shell: cmd | |
name: Build | |
- run: aws s3 cp build\src\harfbuzz.dll s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/ ${{env.S3_PARAMS}} | |
shell: cmd | |
name: Upload artifact | |
- run: | | |
git log --first-parent --pretty=format:%%H HEAD~2..HEAD~1 > harfbuzz.dll.git | |
aws s3 cp harfbuzz.dll.git s3://lwjgl-build/nightly/windows/${{matrix.ARCH}}/ ${{env.S3_PARAMS}} | |
shell: cmd | |
name: Upload git revision |