Browse Source

Make libintl.h provide inline stubs

Previously libandroid-support contained inline stubs for libintl.h
functions (gettext(), dgettext() and friends).

We now provide inline versions of them in libintl.h directly so
libandroid-support is no longer necessary to get them.
android-5
Fredrik Fornwall 7 years ago
parent
commit
50ed335795
  1. 4
      build-package.sh
  2. 53
      ndk-patches/libintl.h
  3. 8
      packages/libandroid-support/build.sh

4
build-package.sh

@ -365,7 +365,7 @@ termux_step_start_build() {
TERMUX_STANDALONE_TOOLCHAIN="$TERMUX_TOPDIR/_lib/${TERMUX_NDK_VERSION}-${TERMUX_ARCH}-${TERMUX_PKG_API_LEVEL}"
# Bump the below version if a change is made in toolchain setup to ensure
# that everyone gets an updated toolchain:
TERMUX_STANDALONE_TOOLCHAIN+="-v11"
TERMUX_STANDALONE_TOOLCHAIN+="-v12"
if [ -n "${TERMUX_PKG_BLACKLISTED_ARCHES:=""}" ] && [ "$TERMUX_PKG_BLACKLISTED_ARCHES" != "${TERMUX_PKG_BLACKLISTED_ARCHES/$TERMUX_ARCH/}" ]; then
echo "Skipping building $TERMUX_PKG_NAME for arch $TERMUX_ARCH"
@ -658,7 +658,7 @@ termux_step_setup_toolchain() {
# elf.h: Taken from glibc since the elf.h in the NDK is lacking.
# sysexits.h: Header-only and used by a few programs.
# ifaddrs.h: Added in android-24 unified headers, use a inline implementation for now.
cp "$TERMUX_SCRIPTDIR"/ndk-patches/{elf.h,sysexits.h,ifaddrs.h} usr/include
cp "$TERMUX_SCRIPTDIR"/ndk-patches/{elf.h,sysexits.h,ifaddrs.h,libintl.h} usr/include
# Remove <sys/shm.h> from the NDK in favour of that from the libandroid-shmem.
# Also remove <sys/sem.h> as it doesn't work for non-root.

53
ndk-patches/libintl.h

@ -0,0 +1,53 @@
#ifndef _LIBINTL_H
#define _LIBINTL_H
#include <errno.h>
#include <string.h>
static __inline__ char* gettext(const char* msgid)
{ return (char*) msgid; }
static __inline__ char* dgettext(const char* domainname, const char* msgid)
{ return (char*) msgid; }
static __inline__ char* dcgettext(const char* domainname, const char* msgid, int category)
{ return (char*) msgid; }
static __inline__ char* ngettext(const char* msgid1, const char* msgid2, unsigned long int n)
{ return (char *) ((n == 1) ? msgid1 : msgid2); }
static __inline__ char* dngettext(const char* domainname, const char* msgid1, const char* msgid2, unsigned long int n)
{ return (char *) ((n == 1) ? msgid1 : msgid2); }
static __inline__ char* dcngettext(const char* domainname, const char* msgid1, const char* msgid2, unsigned long int n, int category)
{ return (char *) ((n == 1) ? msgid1 : msgid2); }
static __inline__ char* textdomain(const char* domainname)
{
static const char default_str[] = "messages";
if (domainname && *domainname && strcmp(domainname, default_str)) {
errno = EINVAL;
return NULL;
}
return (char*) default_str;
}
static __inline__ char* bindtextdomain(const char* domainname, const char* dirname)
{
static const char dir[] = "/";
if (!domainname || !*domainname || (dirname && ((dirname[0] != '/') || dirname[1]))) {
errno = EINVAL;
return NULL;
}
return (char*) dir;
}
static __inline__ char* bind_textdomain_codeset(const char* domainname, const char* codeset)
{
if (!domainname || !*domainname || (codeset && strcasecmp(codeset, "UTF-8"))) {
errno = EINVAL;
}
return NULL;
}
#endif

8
packages/libandroid-support/build.sh

@ -1,7 +1,7 @@
TERMUX_PKG_HOMEPAGE=https://github.com/termux/libandroid-support
TERMUX_PKG_DESCRIPTION="Library extending the Android C library (Bionic) for additional multibyte, locale and math support"
TERMUX_PKG_VERSION=21
TERMUX_PKG_SHA256=e355c822d0891ba610275eac4b13e9b0fb4dd57e8e2891b9fd98d11edc6fd40d
TERMUX_PKG_VERSION=22
TERMUX_PKG_SHA256=667f20d0821a6305c50c667363486d546b293e846f31d02f559947d50121f51e
TERMUX_PKG_SRCURL=https://github.com/termux/libandroid-support/archive/v${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_FOLDERNAME=libandroid-support-$TERMUX_PKG_VERSION
TERMUX_PKG_BUILD_IN_SRC=yes
@ -17,11 +17,11 @@ termux_step_make_install () {
cp libandroid-support.so $TERMUX_PREFIX/lib/
(cd $TERMUX_PREFIX/lib; ln -f -s libandroid-support.so libiconv.so; ln -f -s libandroid-support.so libintl.so)
(cd $TERMUX_PREFIX/lib; ln -f -s libandroid-support.so libiconv.so; )
rm -Rf $TERMUX_PREFIX/include/libandroid-support
mkdir -p $TERMUX_PREFIX/include/libandroid-support
cp -Rf include/* $TERMUX_PREFIX/include/libandroid-support/
(cd $TERMUX_PREFIX/include; ln -f -s libandroid-support/libintl.h libintl.h; ln -f -s libandroid-support/iconv.h iconv.h)
(cd $TERMUX_PREFIX/include; ln -f -s libandroid-support/iconv.h iconv.h)
}

Loading…
Cancel
Save