Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77f3538a authored by Dan Albert's avatar Dan Albert Committed by Android (Google) Code Review
Browse files

Merge "Don't mention armeabi-v7a-hard." into mnc-mr-docs

parents 4a17d8f8 332f7d0b
Loading
Loading
Loading
Loading
+3 −29
Original line number Diff line number Diff line
@@ -59,14 +59,13 @@ the instruction sets each ABI supports.</p>
</tr>

<tr>
<td><a href="#v7a">{@code armeabi-v7a} ({@code armeabi-v7a-hard)}</a></td>
<td><a href="#v7a">{@code armeabi-v7a}</a></td>
<td>
<li>armeabi</li>
<li>Thumb-2</li>
<li>VFPv3-D16</li>
<li>Other, optional</li></td>
<td>Hard float when specified as {@code armeabi-v7a-hard}.
Incompatible with ARMv5, v6 devices.</td>
<td>Incompatible with ARMv5, v6 devices.</td>
</tr>

<tr>
@@ -162,7 +161,7 @@ code by default unless you specify different behavior using the
<a href="{@docRoot}ndk/guides/android_mk.html">{@code Android.mk}</a>
file.</p>

<h3 id="v7a">armeabi-v7a (armeabi-v7a-hard)</h3>
<h3 id="v7a">armeabi-v7a</h3>
<p>This ABI extends armeabi to include several
<a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html">
CPU instruction set extensions</a>. The instruction extensions that this Android-specific
@@ -197,31 +196,6 @@ enforce the rule that the compiler must pass all double values in core register
function calls, instead of dedicated floating-point ones. The system can perform all internal
computations using the FP registers. Doing so speeds up the computations greatly.</p>

<p>Although the requirement to use core register pairs produces a modest performance hit, it ensures
compatibility with all existing armeabi binaries. If you need the additional
performance, you can specify your ABI as {@code armeabi-v7a-hard} instead. Doing so
allows you to use hard floats, while still linking with Android native APIs
that use {@code softfp}. For more information, refer to the comments in
{@code $NDK/tests/device/hard-float/jni/android.mk}.</p>

<p class="note"><strong>Note:</strong> You cannot specify {@code APP_ABI} as both
{@code armeabi-v7a} and {@code armeabi-v7a-hard}. In either case, the build system places the
shared libraries in the {@code armeabi-v7a/} directory.</p>

<h3 id="hard">armeabi-v7a-hard</h3>
<p>This variant of the {@code armeabi-v7a} ABI is unique to the NDK. The NDK build
system adds the following flags in addition to those that it uses for the
{@code armeabi-v7a} ABI:</p>

<pre class="no-pretty-print">
TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
</pre>

<p>The compiler compiles all code with hard-float, and links it with {@code libm_hard.a}.
This math library is the same one as {@code libm.a}, except that it follows hard-float ABI
conventions. In the APK, the generated shared libraries reside in {@code /lib/armeabi-v7a/}.</p>

<h3 id="arm64-v8a">arm64-v8a</h3>
<p>This ABI is for ARMv8-based CPUs that support AArch64. It also includes the NEON and
VFPv4 instruction sets.</p>