bdf1a73dd8
Do not set DT_RUNPATH for OpenJDK binaries to prevent conflicts between internal libs with present in $TERMUX_PREFIX/lib, specifically libnet.so cups, x11 and others are not hard dependencies and shouldn't be necessary in most cases. Move them to suggests .deb package metadata.
116 lines
4.0 KiB
Bash
116 lines
4.0 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=6
|
|
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" \
|
|
--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 libfreetype.so libiconv.so libz.so.1; do
|
|
ln -sfr $TERMUX_PREFIX/lib/$l \
|
|
$TERMUX_PREFIX/opt/openjdk/lib/$l
|
|
done
|
|
}
|