forked from LWJGL/lwjgl3
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
393 additions
and
7 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,295 @@ | ||
name: LWJGL CI Build | ||
|
||
on: | ||
workflow_dispatch: | ||
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 }} | ||
JAVA_HOME: jdk8 | ||
ANT_OPTS: -Xmx2G | ||
LWJGL_BUILD_TYPE: nightly | ||
|
||
jobs: | ||
check-kotlinc-cache: | ||
name: Check kotlinc cache | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 3 | ||
- name: Download JDK | ||
run: | | ||
mkdir jdk8 | ||
curl https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1 | ||
- name: Check generator hydration | ||
run: ant -emacs hydrate-kotlinc | ||
id: hydration | ||
continue-on-error: true | ||
- name: Cache kotlinc output | ||
run: | | ||
git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK | ||
ANT_OPTS=-Xmx4G ant -emacs cache-kotlinc -Drevision="HEAD~2..HEAD~1" | ||
if: steps.hydration.outcome == 'failure' | ||
|
||
linux: | ||
name: Linux | ||
needs: check-kotlinc-cache | ||
runs-on: ubuntu-latest | ||
container: | ||
image: centos:7 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ARCH: [x64] | ||
include: | ||
- ARCH: x64 | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- name: Upgrade git | ||
run: | | ||
yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm | ||
yum -y install git | ||
- name: Checkout repository | ||
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 ant awscli | ||
- name: Install LWJGL dependencies | ||
run: | | ||
yum -y install libX11-devel libXt-devel gtk3-devel libdbus-1-dev | ||
mkdir jdk8 | ||
curl -L https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1 | ||
- name: Hydrate generator | ||
run: | | ||
git config --global --add safe.directory $PWD | ||
ant -emacs hydrate-kotlinc clean-generated generate | ||
- name: Build Java | ||
run: ant -emacs compile | ||
- name: Build native | ||
run: | | ||
source scl_source enable devtoolset-11 || true | ||
ant -emacs compile-native | ||
- name: Run tests | ||
run: | | ||
source scl_source enable devtoolset-11 || true | ||
ant -emacs tests | ||
- name: Upload artifacts | ||
run: | | ||
source scl_source enable devtoolset-11 || true | ||
ant -emacs upload-native | ||
linux-cross: | ||
name: Linux Cross | ||
needs: check-kotlinc-cache | ||
runs-on: ubuntu-22.04 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ARCH: [arm32, arm64, ppc64le, riscv64] | ||
include: | ||
# ---- | ||
- ARCH: arm32 | ||
CROSS_ARCH: armhf | ||
TRIPLET: arm-linux-gnueabihf | ||
# ---- | ||
- ARCH: arm64 | ||
CROSS_ARCH: arm64 | ||
TRIPLET: aarch64-linux-gnu | ||
# ---- | ||
- ARCH: ppc64le | ||
CROSS_ARCH: ppc64el | ||
TRIPLET: powerpc64le-linux-gnu | ||
# ---- | ||
- ARCH: riscv64 | ||
CROSS_ARCH: riscv64 | ||
TRIPLET: riscv64-linux-gnu | ||
env: | ||
LWJGL_BUILD_ARCH: ${{matrix.ARCH}} | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 3 | ||
- name: Install dependencies | ||
run: | | ||
git config --global --add safe.directory $(pwd) | ||
DEBIAN_FRONTEND=noninteractive sudo apt-get -yq install ant awscli curl gcc-${{matrix.TRIPLET}} g++-${{matrix.TRIPLET}} libc6-dev-${{matrix.CROSS_ARCH}}-cross | ||
mkdir jdk8 | ||
curl -L https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1 | ||
- name: Prepare cross-compilation for ${{matrix.CROSS_ARCH}} | ||
run: | | ||
sudo sed -i 's/deb mirror/deb [arch=amd64,i386] mirror/' /etc/apt/sources.list | ||
sudo grep "mirror+file" /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/ports.list | ||
sudo sed -i 's/amd64,i386/${{matrix.CROSS_ARCH}}/' /etc/apt/sources.list.d/ports.list | ||
sudo sed -i 's#mirror+file:/etc/apt/apt-mirrors.txt#http://ports.ubuntu.com/ubuntu-ports/#' /etc/apt/sources.list.d/ports.list | ||
sudo dpkg --add-architecture ${{matrix.CROSS_ARCH}} | ||
sudo apt-get update || true | ||
- name: Install cross-compilation dependencies | ||
run: DEBIAN_FRONTEND=noninteractive sudo apt-get -yq -f --allow-unauthenticated --no-install-suggests --no-install-recommends install libgtk-3-dev:${{matrix.CROSS_ARCH}} libatk-bridge2.0-dev:${{matrix.CROSS_ARCH}} libgdk-pixbuf2.0-dev:${{matrix.CROSS_ARCH}} libglu-dev:${{matrix.CROSS_ARCH}} libgl1-mesa-glx:${{matrix.CROSS_ARCH}} libx11-dev:${{matrix.CROSS_ARCH}} libxt-dev:${{matrix.CROSS_ARCH}} libdbus-1-dev:${{matrix.CROSS_ARCH}} -o Dpkg::Options::="--force-overwrite" | ||
- name: Hydrate generator | ||
run: ant -emacs hydrate-kotlinc clean-generated generate | ||
- name: Build Java | ||
run: ant -emacs compile | ||
- name: Build native | ||
run: ant -emacs compile-native -Dgcc.libpath.opengl=/usr/lib/${{matrix.TRIPLET}}/mesa | ||
- name: Upload artifacts | ||
run: ant -emacs upload-native | ||
|
||
freebsd-cross: | ||
name: FreeBSD Cross | ||
needs: check-kotlinc-cache | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 20 | ||
strategy: | ||
fail-fast: false | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 3 | ||
fetch-tags: true | ||
- name: Install dependencies | ||
run: | | ||
mkdir jdk8 | ||
curl -L https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1 | ||
- name: Restore kotlinc output | ||
uses: actions/cache/restore@v3 | ||
with: | ||
path: | | ||
bin/classes/generator | ||
bin/classes/templates | ||
key: cache-kotlinc-${{ github.sha }} | ||
enableCrossOsArchive: true | ||
fail-on-cache-miss: true | ||
- name: Hydrate generator | ||
run: ant -emacs hydrate-kotlinc clean-generated generate | ||
- name: Build Java | ||
run: ant -emacs compile | ||
- name: Build, test and upload artifacts | ||
uses: cross-platform-actions/[email protected] | ||
with: | ||
operating_system: freebsd | ||
architecture: x86-64 | ||
version: '13.2' | ||
memory: 8G | ||
shell: bash | ||
environment_variables: AWS_DEFAULT_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY ANT_OPTS LWJGL_BUILD_TYPE | ||
run: | | ||
sudo pkg install -y git openjdk8 apache-ant devel/py-awscli gtk3 dbus | ||
git config --global --add safe.directory $PWD | ||
ant -emacs compile-native | ||
ant -emacs tests | ||
ant -emacs upload-native | ||
macos: | ||
name: macOS | ||
needs: check-kotlinc-cache | ||
runs-on: macos-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ARCH: [x64, arm64] | ||
include: | ||
- ARCH: x64 | ||
JDK: x64 | ||
- ARCH: arm64 | ||
JDK: aarch64 | ||
env: | ||
LWJGL_BUILD_ARCH: ${{matrix.ARCH}} | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 3 | ||
- name: Install dependencies | ||
run: | | ||
mkdir jdk8 | ||
curl -L https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-macosx_${{matrix.JDK}}.tar.gz | tar xz -C jdk8 --strip-components 1 | ||
- name: Hydrate generator | ||
run: ant -emacs hydrate-kotlinc clean-generated generate | ||
- name: Build Java | ||
run: ant -emacs compile | ||
- name: Build native | ||
run: ant -emacs compile-native | ||
- name: Run tests | ||
run: ant -emacs tests | ||
- name: Upload artifacts | ||
run: ant -emacs upload-native | ||
|
||
windows: | ||
name: Windows | ||
needs: check-kotlinc-cache | ||
runs-on: windows-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ARCH: [x86, x64, arm64] | ||
include: | ||
- ARCH: x86 | ||
JDK: zulu8.78.0.19-ca-jdk8.0.412-win_i686 | ||
MSVC_ARCH: amd64_x86 | ||
- ARCH: x64 | ||
JDK: zulu8.78.0.19-ca-jdk8.0.412-win_x64 | ||
MSVC_ARCH: amd64 | ||
- ARCH: arm64 | ||
JDK: zulu8.78.0.19-ca-jdk8.0.412-win_x64 | ||
MSVC_ARCH: amd64_arm64 | ||
env: | ||
ANT_OPTS: -Xmx1G | ||
JAVA_HOME: ${{matrix.JDK}} | ||
LWJGL_BUILD_ARCH: ${{matrix.ARCH}} | ||
defaults: | ||
run: | ||
shell: cmd | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 3 | ||
- name: Configure MSVC | ||
uses: ilammy/msvc-dev-cmd@v1 | ||
with: | ||
arch: ${{ matrix.MSVC_ARCH }} | ||
- name: Clone Oculus SDK | ||
run: git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK | ||
if: contains(matrix.ARCH, 'arm') != true | ||
- name: Install dependencies | ||
run: | | ||
Invoke-WebRequest https://cdn.azul.com/zulu/bin/${{matrix.JDK}}.zip -OutFile jdk.zip | ||
Expand-Archive -Path jdk.zip -DestinationPath .\ | ||
shell: pwsh | ||
- name: Generate bindings | ||
run: ant -emacs hydrate-kotlinc clean-generated generate | ||
- name: Build Java | ||
run: ant -emacs compile | ||
- name: Build native | ||
run: | | ||
set PATH=%PATH:C:\Program Files\LLVM\bin;=% | ||
ant -emacs compile-native | ||
- name: Run tests | ||
run: ant -emacs tests | ||
if: contains(matrix.ARCH, 'arm') != true | ||
- name: Print test results | ||
run: type bin\test\testng-results.xml | ||
if: failure() | ||
- name: Upload artifacts | ||
run: ant -emacs upload-native |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Generates javadoc for core + all bindings and uploads it to S3. | ||
# The resulting javadoc is available at https://javadoc.lwjgl.org/ | ||
name: LWJGL Javadoc generation | ||
|
||
on: | ||
workflow_dispatch: | ||
|
||
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" | ||
LWJGL_BUILD_TYPE: nightly | ||
|
||
jobs: | ||
macos: | ||
name: Javadoc | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 3 | ||
- run: | | ||
git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK | ||
mkdir jdk8 | ||
mkdir jdk21 | ||
curl -L https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1 | ||
curl -L https://cdn.azul.com/zulu/bin/zulu21.34.19-ca-jdk21.0.3-linux_x64.tar.gz | tar xz -C jdk21 --strip-components 1 | ||
name: Install dependencies | ||
- run: JAVA_HOME=$(pwd)/jdk8 ant -emacs hydrate-kotlinc clean-generated generate | ||
name: Generate bindings | ||
- run: JAVA_HOME=$(pwd)/jdk8 ant -emacs compile | ||
name: Build Java | ||
- run: JAVA8_HOME=$(pwd)/jdk8 JAVA_HOME=$(pwd)/jdk21 ANT_OPTS="-Djava.security.manager=allow" ant -emacs javadoc | ||
name: Generate javadoc | ||
- run: aws s3 sync bin/javadoc s3://lwjgl-javadoc/ --delete | ||
name: Upload javadoc to S3 |
Oops, something went wrong.