name: Build OpenJDK 22 for Android ARM64 on: workflow_dispatch: jobs: build: runs-on: ubuntu-22.04 steps: # 1. Checkout source - name: Checkout JDK 22 source uses: actions/checkout@v4 with: repository: openjdk/jdk22 ref: jdk-22-ga path: jdk22 # 2. Install dependencies - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y build-essential autoconf make zip unzip \ clang gcc g++ git libasound2-dev libcups2-dev libx11-dev libxext-dev \ libxrender-dev libxrandr-dev libxtst-dev libxt-dev libfontconfig1-dev \ libfreetype6-dev libpng-dev libffi-dev \ libtool-bin pkg-config libxkbcommon-x11-dev libasound2-dev libpulse-dev \ libgl-dev libglu1-mesa-dev libgif-dev libjpeg-dev libxinerama-dev \ libxcomposite-dev libncurses-dev zlib1g-dev libc6-dev wget unzip # 3. Download Android NDK r26d - name: Download Android NDK r26d run: | wget https://dl.google.com/android/repository/android-ndk-r26d-linux.zip unzip -q android-ndk-r26d-linux.zip mv android-ndk-r26d $HOME/android-ndk # 4. Configure JDK for Android ARM64 - name: Configure JDK for Android ARM64 working-directory: jdk22 run: | SYSROOT=$HOME/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot TOOLCHAIN=$HOME/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin API_LEVEL=21 # Cross-compile compiler for target (Android ARM64) export CC=$TOOLCHAIN/aarch64-linux-android$API_LEVEL-clang export CXX=$TOOLCHAIN/aarch64-linux-android$API_LEVEL-clang++ export CPP=$CC # BuildC sanity check compiler (host x86_64) export BUILD_CC=/usr/bin/clang export BUILD_CXX=/usr/bin/clang++ # Run configure bash configure \ --openjdk-target=aarch64-linux-android$API_LEVEL \ --with-boot-jdk=$JAVA_HOME_21_X64 \ --with-toolchain-type=clang \ --with-toolchain-path=$TOOLCHAIN \ --with-build-tools-dir=/usr/bin \ --with-extra-cflags="--sysroot=$SYSROOT" \ --with-extra-cxxflags="--sysroot=$SYSROOT" \ --with-extra-ldflags="--sysroot=$SYSROOT" \ --with-jvm-variants=server \ --disable-warnings-as-errors # 5. Build JDK - name: Build JDK working-directory: jdk22 run: make images JOBS=2 # 6. Upload artifact - name: Upload built JDK uses: actions/upload-artifact@v4 with: name: openjdk22-android-arm64 path: jdk22/build/linux-aarch64-server-release/images/jdk