From d2d3a8b217ae39397aef73efa1558a5809fdf00b Mon Sep 17 00:00:00 2001 From: termux-pacman-bot Date: Tue, 3 Jan 2023 20:01:11 +0000 Subject: [PATCH] enhance(main/ndk-sysroot): make package buildable on device By downloading android-ndk zip instead of relying on the toolchain directory. --- packages/ndk-sysroot/build.sh | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/packages/ndk-sysroot/build.sh b/packages/ndk-sysroot/build.sh index b444ecd09b..db9e9da85c 100644 --- a/packages/ndk-sysroot/build.sh +++ b/packages/ndk-sysroot/build.sh @@ -2,21 +2,37 @@ TERMUX_PKG_HOMEPAGE=https://developer.android.com/tools/sdk/ndk/index.html TERMUX_PKG_DESCRIPTION="System header and library files from the Android NDK needed for compiling C programs" TERMUX_PKG_LICENSE="NCSA" TERMUX_PKG_MAINTAINER="@termux" -TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION +# Version should be equal to TERMUX_NDK_{VERSION_NUM,REVISION} in +# scripts/properties.sh +TERMUX_PKG_VERSION=25b TERMUX_PKG_REVISION=3 -TERMUX_PKG_SKIP_SRC_EXTRACT=true +TERMUX_PKG_SRCURL=https://dl.google.com/android/repository/android-ndk-r${TERMUX_PKG_VERSION}-linux.zip +TERMUX_PKG_SHA256=403ac3e3020dd0db63a848dcaba6ceb2603bf64de90949d5c4361f848e44b005 # This package has taken over from the previous libutil-dev # and iconv.h from libandroid-support-dev: TERMUX_PKG_CONFLICTS="libutil-dev, libgcc, libandroid-support-dev" TERMUX_PKG_REPLACES="libutil-dev, libgcc, libandroid-support-dev, ndk-stl" TERMUX_PKG_NO_STATICSPLIT=true -TERMUX_PKG_ON_DEVICE_BUILD_NOT_SUPPORTED=true +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_pre_configure() { + for patch in $TERMUX_SCRIPTDIR/ndk-patches/$TERMUX_PKG_VERSION/*.patch; do + echo "Applying ndk patch: $(basename $patch)" + test -f "$patch" && sed \ + -e "s%\@TERMUX_APP_PACKAGE\@%${TERMUX_APP_PACKAGE}%g" \ + -e "s%\@TERMUX_BASE_DIR\@%${TERMUX_BASE_DIR}%g" \ + -e "s%\@TERMUX_CACHE_DIR\@%${TERMUX_CACHE_DIR}%g" \ + -e "s%\@TERMUX_HOME\@%${TERMUX_ANDROID_HOME}%g" \ + -e "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" \ + "$patch" | patch --silent -p1 + done +} termux_step_extract_into_massagedir() { mkdir -p $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib \ $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include - cp -Rf $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include/* \ + cp -Rf sysroot/usr/include/* \ $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include # replace vulkan headers with upstream version @@ -25,11 +41,11 @@ termux_step_extract_into_massagedir() { # replace ICU headers with upstream version rm -rf $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/unicode - patch -d $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/c++/v1 -p1 < $TERMUX_PKG_BUILDER_DIR/math-header.diff + patch -d $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/c++/v1 -p1 < $TERMUX_PKG_BUILDER_DIR/math-header.diff # disable for now # patch -d $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/ -p1 < $TERMUX_PKG_BUILDER_DIR/gcc_fixes.diff - cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/*.o \ + cp sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/*.o \ $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib if [ $TERMUX_ARCH == "i686" ]; then @@ -42,7 +58,7 @@ termux_step_extract_into_massagedir() { cp $LIBATOMIC/libatomic.a $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/ - cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/libcompiler_rt-extras.a $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/ + cp sysroot/usr/lib/$TERMUX_HOST_PLATFORM/libcompiler_rt-extras.a $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/ # librt and libpthread are built into libc on android, so setup them as symlinks # to libc for compatibility with programs that users try to build: local _SYSTEM_LIBDIR=/system/lib64 @@ -52,7 +68,7 @@ termux_step_extract_into_massagedir() { NDK_ARCH=$TERMUX_ARCH test $NDK_ARCH == 'i686' && NDK_ARCH='i386' # clang 13 requires libunwind on Android. - cp $TERMUX_STANDALONE_TOOLCHAIN/lib64/clang/14.0.6/lib/linux/$NDK_ARCH/libunwind.a . + cp lib64/clang/14.0.6/lib/linux/$NDK_ARCH/libunwind.a . for lib in librt.so libpthread.so libutil.so; do echo 'INPUT(-lc)' > $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/$lib