termux-packages/packages/openjdk-17/build.sh

116 lines
4.1 KiB
Bash

TERMUX_PKG_HOMEPAGE=https://github.com/PojavLauncherTeam/mobile
TERMUX_PKG_DESCRIPTION="Java development kit and runtime"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION=17.0
TERMUX_PKG_REVISION=7
TERMUX_PKG_SRCURL=https://github.com/termux/openjdk-mobile-termux/archive/ec285598849a27f681ea6269342cf03cf382eb56.tar.gz
TERMUX_PKG_SHA256=d7c6ead9d80d0f60d98d0414e9dc87f5e18a304e420f5cd21f1aa3210c1a1528
TERMUX_PKG_DEPENDS="freetype, libandroid-shmem, libandroid-spawn, libiconv, zlib"
TERMUX_PKG_BUILD_DEPENDS="cups, fontconfig, libpng, libx11, libxrender"
TERMUX_PKG_SUGGESTS="cups, fontconfig, libx11, libxrender"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_HAS_DEBUG=false
termux_step_pre_configure() {
# Provide fake gcc.
mkdir -p $TERMUX_PKG_SRCDIR/wrappers-bin
cat <<- EOF > $TERMUX_PKG_SRCDIR/wrappers-bin/android-wrapped-clang
#!/bin/bash
name=\$(basename "\$0")
if [ "\$name" = "android-wrapped-clang" ]; then
name=gcc
compiler=$CC
else
name=g++
compiler=$CXX
fi
if [ "\$1" = "--version" ]; then
echo "${TERMUX_HOST_PLATFORM/arm/armv7a}-\${name} (GCC) 4.9 20140827 (prerelease)"
echo "Copyright (C) 2014 Free Software Foundation, Inc."
echo "This is free software; see the source for copying conditions. There is NO"
echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit 0
fi
exec \$compiler "\${@/-fno-var-tracking-assignments/}"
EOF
chmod +x $TERMUX_PKG_SRCDIR/wrappers-bin/android-wrapped-clang
ln -sfr $TERMUX_PKG_SRCDIR/wrappers-bin/android-wrapped-clang \
$TERMUX_PKG_SRCDIR/wrappers-bin/android-wrapped-clang++
CC=$TERMUX_PKG_SRCDIR/wrappers-bin/android-wrapped-clang
CXX=$TERMUX_PKG_SRCDIR/wrappers-bin/android-wrapped-clang++
cat <<- EOF > $TERMUX_STANDALONE_TOOLCHAIN/devkit.info
DEVKIT_NAME="Android"
DEVKIT_TOOLCHAIN_PATH="\$DEVKIT_ROOT"
DEVKIT_SYSROOT="\$DEVKIT_ROOT/sysroot"
EOF
# OpenJDK uses same makefile for host and target builds, so we can't
# easily patch usage of librt and libpthread. Using linker scripts
# instead.
echo 'INPUT(-lc)' > $TERMUX_PREFIX/lib/librt.so
echo 'INPUT(-lc)' > $TERMUX_PREFIX/lib/libpthread.so
}
termux_step_configure() {
bash ./configure \
--openjdk-target=$TERMUX_HOST_PLATFORM \
--with-extra-cflags="$CFLAGS $CPPFLAGS -DLE_STANDALONE -DANDROID -D__TERMUX__=1" \
--with-extra-cxxflags="$CXXFLAGS $CPPFLAGS -DLE_STANDALONE -DANDROID -D__TERMUX__=1" \
--with-extra-ldflags="-L${TERMUX_PREFIX}/lib -landroid-shmem -landroid-spawn" \
--disable-precompiled-headers \
--disable-warnings-as-errors \
--enable-option-checking=fatal \
--enable-headless-only=yes \
--with-toolchain-type=gcc \
--with-jvm-variants=server \
--with-devkit="$TERMUX_STANDALONE_TOOLCHAIN" \
--with-debug-level=release \
--with-cups-include="$TERMUX_PREFIX/include" \
--with-fontconfig-include="$TERMUX_PREFIX/include" \
--with-freetype-include="$TERMUX_PREFIX/include/freetype2" \
--with-freetype-lib="$TERMUX_PREFIX/lib" \
--with-libpng=system \
--with-zlib=system \
--x-includes="$TERMUX_PREFIX/include/X11" \
--x-libraries="$TERMUX_PREFIX/lib"
}
termux_step_make() {
cd build/linux-${TERMUX_ARCH/i686/x86}-server-release
make JOBS=1 images
# Delete created library stubs.
rm $TERMUX_PREFIX/lib/librt.so $TERMUX_PREFIX/lib/libpthread.so
}
termux_step_make_install() {
rm -rf $TERMUX_PREFIX/opt/openjdk
mkdir -p $TERMUX_PREFIX/opt/openjdk
cp -r build/linux-${TERMUX_ARCH/i686/x86}-server-release/images/jdk/* \
$TERMUX_PREFIX/opt/openjdk/
find $TERMUX_PREFIX/opt/openjdk -name "*.debuginfo" -delete
# OpenJDK is not installed into /prefix/bin.
local i
for i in $TERMUX_PREFIX/opt/openjdk/bin/*; do
if [ ! -f "$i" ]; then
continue
fi
ln -sfr $i $TERMUX_PREFIX/bin/$(basename $i)
done
# Dependent projects may need JAVA_HOME.
mkdir -p $TERMUX_PREFIX/etc/profile.d
echo "export JAVA_HOME=$TERMUX_PREFIX/opt/openjdk" > \
$TERMUX_PREFIX/etc/profile.d/java.sh
# Symlink external dependencies.
local l
for l in libandroid-shmem.so libandroid-spawn.so libfreetype.so libiconv.so libz.so.1; do
ln -sfr $TERMUX_PREFIX/lib/$l \
$TERMUX_PREFIX/opt/openjdk/lib/$l
done
}