Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: GraalVM Native Image builds
name: Build AppleCommander disassembler

on:
push:
Expand All @@ -9,8 +9,50 @@ on:
branches: [ "main" ]

jobs:
build:
build-java:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
- name: Build with Gradle
run: ./gradlew build
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: build-artifacts
path: cli/build/libs/acdasm-*.jar
archive: false
if-no-files-found: error

# This is a crude license header check. The ones I tested were susceptible to whitespace differences
# and I never got them to work. My primary goal is to ensure the headers exist, so this suffices.
license-check:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Look for license phrase
run: |
outfile=$(mktemp)
find . -name "*.java" | xargs grep -L "GNU General Public License" > ${outfile}
if [ -s "${outfile}" ]
then
echo "License headers missing on the following files:"
cat ${outfile}
exit 1
else
echo "License headers appear to be valid!"
fi

build-native:
name: acdasm on ${{ matrix.os }}-${{ matrix.arch }}
needs: [build-java, license-check]
runs-on: ${{ matrix.label }}
strategy:
matrix:
Expand All @@ -34,24 +76,28 @@ jobs:
arch: arm64
steps:
- uses: actions/checkout@v7

- uses: graalvm/setup-graalvm@v1
with:
java-version: '25'
distribution: 'liberica'
github-token: ${{ secrets.GITHUB_TOKEN }}
native-image-job-reports: 'true'

# Note that Graal v21 builds to the current architecture, and "--target" is not functional.
# Therefore, we try to find runners that fit our targets (see above).
- name: Build 'acdasm'
run: ./gradlew nativeCompile
env:
# Needed for Windows; not an issue for other OSes
GRADLE_OPTS: -Djava.io.tmpdir=${{ runner.temp }}

- name: Run UPX
uses: crazy-max/ghaction-upx@v4
if: runner.os == 'Windows' || runner.os == 'Linux'
with:
files: |
cli/build/native/nativeCompile/acdasm*
- name: Upload binary
uses: actions/upload-artifact@v7
with:
name: acdasm-${{ matrix.os }}-${{ matrix.arch }}
path: cli/build/native/nativeCompile/acdasm*
archive: false
42 changes: 0 additions & 42 deletions .github/workflows/gradle.yml

This file was deleted.

36 changes: 0 additions & 36 deletions .github/workflows/license.yml

This file was deleted.