-termux-packages
+Termux packages
===============
+[![Join the chat at https://gitter.im/termux/termux](https://badges.gitter.im/termux/termux.svg)](https://gitter.im/termux/termux)
+
This project contains scripts and patches to cross compile and package packages for
the [Termux](http://termux.com/) Android application.
Initial setup
=============
-Building packages are for now only tested to work on Ubuntu 15.04. Perform the following
+Building packages are for now only tested to work on Ubuntu 15.10. Perform the following
setup steps:
* Run `ubuntu-setup.sh` to install required packages and setup the `/data/` folder (see below).
* Install the Android SDK at `$HOME/lib/android-sdk`. Override this by setting the environment
variable `$ANDROID_HOME` to point at another location.
-* Install the Android NDK, version r10e, at `$HOME/lib/android-ndk`. Override this by setting
+* Install the Android NDK, version r11, at `$HOME/lib/android-ndk`. Override this by setting
the environment variable `$NDK` to point at another location.
Alternatively a Dockerfile is provided which sets up a pristine image
* glob(3) system function (glob.h) - not in bionic, but use the `libandroid-glob` package
-* undefined reference to 'rpl_malloc' and/or 'rpl_realloc': These functions are added by some autoconf setups
- when it fails to detect 0-safe malloc and realloc during cross-compilating. Avoided by defining
- "ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes".
- See http://wiki.buici.com/xwiki/bin/view/Programing+C+and+C%2B%2B/Autoconf+and+RPL_MALLOC
-
* cmake and cross compiling: http://www.cmake.org/Wiki/CMake_Cross_Compiling
CMAKE_FIND_ROOT_PATH=$TERMUX_PREFIX to search there.
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY and
dlopen() and RTLD_* flags
=================================
-<dlfcn.h> declares
+<dlfcn.h> originally declares
enum { RTLD_NOW=0, RTLD_LAZY=1, RTLD_LOCAL=0, RTLD_GLOBAL=2, RTLD_NOLOAD=4}; // 32-bit
enum { RTLD_NOW=2, RTLD_LAZY=1, RTLD_LOCAL=0, RTLD_GLOBAL=0x00100, RTLD_NOLOAD=4}; // 64-bit
These differs from glibc ones in that
-1. They are not preprocessor #define:s so cannot be checked for with #ifdef RTLD_GLOBAL (dln.c in ruby does this)
+1. They are not preprocessor #define:s so cannot be checked for with `#ifdef RTLD_GLOBAL`. Termux patches this to
+ #define values for compatibility with several packages.
2. They differ in value from glibc ones, so cannot be hardcoded in files (DLFCN.py in python does this)
-3. They are missing some values (RTLD_BINDING_MASK, RTLD_NOLOAD, ...)
+3. They are missing some values (`RTLD_BINDING_MASK`, `RTLD_NOLOAD`, ...)
RPATH, LD_LIBRARY_PATH AND RUNPATH