This patch modifies the NDK build scripts to support the 'armeabi-v7a' ABI.
(For the record, it corresponds to Thumb-2 + FPU support, to speed up native
code on certain devices like the Droid).
To build for this ABI, the Application.mk file should use a line like:
APP_ABI := armeabi-v7a
It is also possible to build for both 'armeabi' and 'armeabi-v7a' by using:
APP_ABI := armeabi armeabi-v7a
This will result in the generation of two distinct shared libraries that both
will be copied to the final application package.
This is dependent on having GCC 4.4.0 prebuilt binaries under
build/prebuilt/<host>/arm-eabi-4.4.0, since gcc 4.2.1 does not support
this new ABI.
Note that this also changes the NDK to use gcc 4.4.0 by default, unless
the user defines NDK_TOOLCHAIN to 'arm-eabi-4.2.1' in its environment to
switch back to the previous one.
The main idea is that libgcc.a should appear after object files and
static libraries but before depending shared libraries. This willl
force the linker to copy the libgcc.a functions required by the
generated library into the target binary, instead of relying on
what's available in libc.so and others.
This ensures maximum portability, and prevent problems in the future
when we change the toolchain, which translates to different libgcc.a
functions embedded in libc.so and other exposed native libraries.
However, this will make also generated shared libraries bigger, because
the compiler insists on generating code that depends on a bunch of C++
support functions (even when building from C sources). An increase of
about 8KB per shared library is expected.