ndk-multilib: Care for 32-bit variant in native libs

Mod to hook in the parent package follows.

%ci:no-build
This commit is contained in:
termux-pacman-bot
2023-04-14 18:01:16 +00:00
parent e9082f198f
commit cfb2d534fe
5 changed files with 80 additions and 61 deletions

View File

@@ -31,6 +31,12 @@ prepare_libs() {
cp $BASEDIR/lib{c++_static,c++abi}.a $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/$SUFFIX/lib
echo 'INPUT(-lc++_static -lc++abi)' > $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/$SUFFIX/lib/libc++_shared.a
local f
for f in lib{c,dl,log,m}.so lib{c,dl,m}.a; do
ln -sfT $TERMUX_PREFIX/opt/ndk-multilib/$SUFFIX/lib/${f} \
$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/$SUFFIX/lib/${f}
done
if [ $ARCH == "x86" ]; then
LIBATOMIC=toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/*/lib/linux/i386
elif [ $ARCH == "arm64" ]; then
@@ -59,10 +65,12 @@ termux_step_make_install() {
add_cross_compiler_rt
}
termux_step_post_make_install() {
local p
for p in ndk-multilib-native-{static,stubs}; do
install -Dm600 /dev/null $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/share/doc/${p}/.placeholder
termux_step_post_massage() {
local triple f
for triple in aarch64-linux-android arm-linux-androideabi i686-linux-android x86_64-linux-android; do
for f in lib{c,dl,log,m}.so lib{c,dl,m}.a; do
rm -f ${triple}/lib/${f}
done
done
}

View File

@@ -1,22 +1,36 @@
TERMUX_SUBPKG_DESCRIPTION="Install native static libs from NDK"
TERMUX_SUBPKG_INCLUDE="
share/doc/ndk-multilib-native-static/
"
# Existence of libfoo.a without stub libfoo.so causes troubles.
TERMUX_SUBPKG_DEPENDS="ndk-multilib-native-stubs"
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=false
TERMUX_SUBPKG_INCLUDE=
termux_step_create_subpkg_debscripts() {
local f
for f in postinst prerm; do
sed -e "s|@TERMUX_PREFIX@|${TERMUX_PREFIX}|g" \
-e "s|@TERMUX_PACKAGE_FORMAT@|${TERMUX_PACKAGE_FORMAT}|g" \
$TERMUX_PKG_BUILDER_DIR/postinst-header.in > "${f}"
done
sed 's|@COMMAND@|ln -sf "'$TERMUX_PREFIX'/opt/ndk-multilib/$triple/lib/$a" "'$TERMUX_PREFIX'/\$triple/lib"|' \
$TERMUX_PKG_BUILDER_DIR/postinst-native-static.in >> postinst
sed 's|@COMMAND@|rm -f "'$TERMUX_PREFIX'/$triple/lib/$a"|' \
$TERMUX_PKG_BUILDER_DIR/postinst-native-static.in >> prerm
chmod 0700 postinst prerm
}
case "$TERMUX_ARCH" in
aarch64 )
TERMUX_SUBPKG_INCLUDE+="
aarch64-linux-android/lib/libc.a
aarch64-linux-android/lib/libdl.a
aarch64-linux-android/lib/libm.a
"
;& # fallthrough
arm )
TERMUX_SUBPKG_INCLUDE+="
arm-linux-androideabi/lib/libc.a
arm-linux-androideabi/lib/libdl.a
arm-linux-androideabi/lib/libm.a
"
;;
x86_64 )
TERMUX_SUBPKG_INCLUDE+="
x86_64-linux-android/lib/libc.a
x86_64-linux-android/lib/libdl.a
x86_64-linux-android/lib/libm.a
"
;& # fallthrough
i686 )
TERMUX_SUBPKG_INCLUDE+="
i686-linux-android/lib/libc.a
i686-linux-android/lib/libdl.a
i686-linux-android/lib/libm.a
"
;;
esac

View File

@@ -1,19 +1,38 @@
TERMUX_SUBPKG_DESCRIPTION="Install native stubs for shared libs from NDK"
TERMUX_SUBPKG_INCLUDE="
share/doc/ndk-multilib-native-stubs/
"
termux_step_create_subpkg_debscripts() {
local f
for f in postinst prerm; do
sed -e "s|@TERMUX_PREFIX@|${TERMUX_PREFIX}|g" \
-e "s|@TERMUX_PACKAGE_FORMAT@|${TERMUX_PACKAGE_FORMAT}|g" \
$TERMUX_PKG_BUILDER_DIR/postinst-header.in > "${f}"
done
sed 's|@COMMAND@|ln -sf "'$TERMUX_PREFIX'/opt/ndk-multilib/$triple/lib/$so" "'$TERMUX_PREFIX'/\$triple/lib"|' \
$TERMUX_PKG_BUILDER_DIR/postinst-native-stubs.in >> postinst
sed 's|@COMMAND@|rm -f "'$TERMUX_PREFIX'/$triple/lib/$so"|' \
$TERMUX_PKG_BUILDER_DIR/postinst-native-stubs.in >> prerm
chmod 0700 postinst prerm
}
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=false
TERMUX_SUBPKG_INCLUDE=
case "$TERMUX_ARCH" in
aarch64 )
TERMUX_SUBPKG_INCLUDE+="
aarch64-linux-android/lib/libc.so
aarch64-linux-android/lib/libdl.so
aarch64-linux-android/lib/liblog.so
aarch64-linux-android/lib/libm.so
"
;& # fallthrough
arm )
TERMUX_SUBPKG_INCLUDE+="
arm-linux-androideabi/lib/libc.so
arm-linux-androideabi/lib/libdl.so
arm-linux-androideabi/lib/liblog.so
arm-linux-androideabi/lib/libm.so
"
;;
x86_64 )
TERMUX_SUBPKG_INCLUDE+="
x86_64-linux-android/lib/libc.so
x86_64-linux-android/lib/libdl.so
x86_64-linux-android/lib/liblog.so
x86_64-linux-android/lib/libm.so
"
;& # fallthrough
i686 )
TERMUX_SUBPKG_INCLUDE+="
i686-linux-android/lib/libc.so
i686-linux-android/lib/libdl.so
i686-linux-android/lib/liblog.so
i686-linux-android/lib/libm.so
"
;;
esac

View File

@@ -1,11 +0,0 @@
triple="$native_triple"
if [ x"$triple" = x"unknown" ]; then
echo "Error: cannot determine the native architecture."
exit 1
fi
for a in libc.a libdl.a libm.a; do
@COMMAND@
done
exit 0

View File

@@ -1,11 +0,0 @@
triple="$native_triple"
if [ x"$triple" = x"unknown" ]; then
echo "Error: cannot determine the native architecture."
exit 1
fi
for so in libc.so libdl.so liblog.so libm.so; do
@COMMAND@
done
exit 0