This will make things as std::to_string() and other C++ features
work with a modern and supported C++ library.
We package up libc++_shared.so and bump the revision of every C++
using package to make it rebuild against it.
Users who have built C++ using libraries or programs will probably
need to rebuild them if they are linked against Termux-supplied
libraries, as user code was previously linked against gnustl while
the system libraries are now using libc++, and it's not a good idea
to mix C++ standard libraries in a program.
By setting the TERMUX_PKG_API_LEVEL property to an android api
level packages can build against later API levels than the current
Termux default of 21.
32-bit android uses 32-bit off_t by default. When building with
-D_FILE_OFFSET_BITS=64 with unified headers off_t are promoted
to 64-bit, but there are bugs in the toolchain and spotty support
for it in the platform (not all functions are available until
android-24, and the platform zlib is compiled with 32-bit off_t).
Also, unless every library&program is rebuilt with 64-bit off_t,
including user-built ones, we risk a mismatch between programs and
libraries which can cause serious (but sometimes subtle) runtime
failures.
As -D_FILE_OFFSET_BITS=64 is not that important for most users
(with mariadb requiring it as an exception), we drop the support
for now by patching it away in <sys/cdefs.h>.
EXPERIMENTAL STATUS!
To try things out: Define TERMUX_UNIFIED_HEADERS=1 and build to
use the new unified headers.
This causes ndk_patches_unified/ to be used to patch the NDK header
files instead of ndk_patches/.
The docker image has been updated, use
./scripts/update-docker.sh
to update.
Note that we are still using the old deprecated non-unified headers
- updating to that is the next step.
* remove ndk_patches/sys-shm.h.patch
add a note about libandroid-shmem and posix semaphores
* libandroid-shmem: enable package
* separate function to replace autoconf guess scripts
For those using Docker build environments: run scripts/update-docker.sh
to pull the latest Docker image with r14 installed.
Otherwise, remove the $NDK directory (defaults to
$HOME/lib/android-ndk if not setup in the environment) and run
scripts/setup-android-sdk.sh to setup a r14 installation.