• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Android NDK ChangeLog:
2
3----------------------------------------------------------------------------
4android-ndk-r9d
5===
6
7IMPORTANT CHANGES:
8---
9
10- Added Clang 3.4; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.4.
11  GCC 4.6 remains the default.
12
13- For ARM: Added APP_ABI=armeabi-v7a-hard.  All ARM toolchain are rebuilt with
14  additional multilib option -mfloat-abi=hard.  With "APP_ABI=armeabi-v7a-hard",
15>  1. ndk-build add "TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1" and
16      "TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard" on top of the existing
17      flags for armeabi-v7a.  The final library is installed at libs/armeabi-v7a,
18      (ie. can't coexist with armeabi-v7a in the same APP_ABI). Also note that APP_ABI=all
19      expands to "armeabi armeabi-v7a x86 mips" as before.
20>  2. make-standalone-toolchain.sh copies additional libaries under /hard directories.
21      Add the above CFLAGS and LFLAGS in your makefile for GCC/clang to link with
22      libraries in /hard
23
24- For X86: Added yasm and LOCAL_ASMFLAGS/EXPORT_ASMFLAGS.
25  ndk-build use prebuilts/*/bin/yasm* to compile source specified in LOCAL_SRC_FILES
26  with .asm extension
27
28- Updated mclinker to 2.6.0 with -gc-sections support
29
30- Added experimental libc++ support (upstream r201101).  To use it:
31>  1. Add "APP_STL := c++_static" or "APP_STL := c++_shared" in Application.mk.
32      You may rebuild from source via "LIBCXX_FORCE_REBUILD := true"
33>  2. "make-standalone-toolchain.sh --stl=libc++" to create standalone
34      toolchain with libc++ headers/lib
35  See b.android.com/36496 and CPLUSPLUS-SUPPORT.html
36
37
38IMPORTANT BUG FIXES:
39---
40
41- Fixed GCC 4.6/4.8 ARM EABI uncaught throw from unexpected exception
42  handler.
43  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392
44
45- Fixed GCC 4.8 not correctly resolve partial specialization of template with
46  dependent non-type template argument.
47  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59052
48
49- Added more modules to prebuilt python
50>  1. linux: zlib, nis, crypt, _curses and _curses_panel
51>  2. darwin: zlib, bz2, _curses, _curses_panel, _hashlib, _ssl
52> See b.android.com/59902
53
54- Fixed X86/MIPS' gdbserver event_getmsg_helper
55
56- Fixed numerous issues in the RenderScript NDK toolchain, including issues with
57  compatibility across older devices and C++ reflection.
58
59
60OTHER BUG FIXES:
61---
62
63- Fixed headers
64> 1. Fixed typo in sources/android/support/include/iconv.h.
65     See http://b.android.com/63806
66> 2. Fixed missing #include <sys/types.h> in android/asset_manager.h for API >= 13
67     See http://b.android.com/64988
68> 3. Fixed missing #include <stdint.h> in android/rect_manager.h for API >= 14
69> 4. Added JNICALL to JNI_OnLoad and JNI_OnUnload in jni.h.  Note that JNICALL
70     is defined to __NDK_FPABI__ (see sys/cdefs.h)
71> 5. Fixed the following headers to be inclued alone: android/tts.h, EGL/eglext.h,
72     fts.h GLES/glext.h, GLES2/gl2ext.h, OMXAL/OpenMAXSL_Android.h, SLES/OpenSLES_Android.h,
73     sys/prctl.h, sys/utime.h.  See http://b.android.com/64679
74> 6. Added sys/cachectl.h for all archs.  Only has effect to mips, but
75     developers no longer need to put #ifdef __mips__ around it
76> 7. Fixed platforms/android-18/include/android/input.h by adding
77     __NDK_FPABI__ to functions taking/returning float/double.
78> 8. Fixed MIPS' "struct stat" which was incorrectly set to its 64-bit
79     counterpart for API>=12 (regression in the last r9c release)
80> 9. Define __PTHREAD_MUTEX_INIT_VALUE, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE,
81     and __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE for API < 9
82> 10. Added scalbln, scalblnf, and scalblnl to x86's libm.so for API >= 18
83
84- Fixed gabi++ std::unexpected() to call std::terminate() so that
85  user-defined std::terminate() handler have chance to run
86
87- Fixed gabi++ to catch std::nullptr
88
89- Fixed samples Teapot and MoreTeapots to
90>  1. Rendering issue in Tegra2/3.  Now having medium precision for specular
91      variable, so that specular power can be <1.0
92>  2. Workaround an issue where SYSTEM_UI_FLAG_IMMERSIVE_STICKY is invalidated
93      when a volume button is pressed.  Issue remains: Immersive mode still does
94      not recover when the screen has been rotated, due to onSystemUiVisibilityChange
95      is not triggered when screen is rotated.
96
97- Fixed ndk-build to add -rpath-link=$SYSROOT/usr/lib and -rpath-link=$TARGET_OUT
98  for linking executable with ld.bfd.  See b.android.com/64266
99
100- Removed -Bsymbolic from all STL build
101
102- Fixed ndk-gdb-py.cmd by setting SHELL as env. var. instead of passing it to
103  python.exe which can't understand it.
104  See b.android.com/63054
105
106- Fixed "make-standalone-toolchain.sh --stl=stlport" to copy instead of symlink
107  gabi++ headers, otherwise the one created in cygwin wont' be understood by
108  cmd.exe and MinGW shell
109
110
111OTHER CHANGES:
112---
113
114- "chmod a+x" all *cmd scripts previously intended for use in CMD.exe only,
115  in case developers prefer to use ndk-build.cmd in cygwin instead of the
116  recommended ndk-build
117
118- Speed up make-standalone-toolchain.sh by moving instead of copying if
119  destination directory (eg. --install-dir=<dir>) doesn't exist.
120
121
122----------------------------------------------------------------------------
123android-ndk-r9c
124===
125
126IMPORTANT CHANGES:
127---
128
129- This is a bug-fix-only release.
130
131
132IMPORTANT BUG FIXES:
133---
134
135- Fixed GCC 4.8 ARM where stack pointer is restored too early than access
136  to varaible in stack frame via frame pointer.
137  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
138
139- Fixed GCC 4.8 libstdc++ where the generated code random segfault on std::nth_element
140  See http://b.android.com/62910
141
142- Fixed GCC 4.8 ICE in cc1/cc1plus with -fuse-ld=mcld.  Message reads:
143>  cc1: internal compiler error: in common_handle_option, at opts.c:1774
144
145- Fixed -mhard-float support for __builtin math functions.
146  See http://b.android.com/62496.  Please track comment of http://b.android.com/61784
147  for on-going fixes for -mhard-float with STL
148
149
150OTHER BUG FIXES:
151---
152
153- Fixed headers
154> 1. Fixed prototype of poll to poll(struct pollfd *, nfds_t, int); in poll.h
155> 2. Added utimensat and futimens to libc.so to API level >=12 and >=19, respectively.
156> 3. Added missing clock_settime() and clock_nanosleep() in time.h for API>=8.
157> 4. Added CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE,
158     CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, and CLOCK_BOOTTIME_ALARM in time.h.
159     Removed obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR.
160
161- Refactored samples Teapot, MoreTeapots and source/android/ndk_helper.
162  Use hard float-abi for armeabi-v7a, added immersive mode in android-19, etc.
163  Also fix crash on X86 device in  /system/lib/libdvm.so Check_ReleaseStringUTFChars
164
165- Fixed ndk-build fails in cygwin if NDK package is referenced via symlink
166
167- Fixed ndk-build.cmd fails in windows cmd.exe if LOCAL_SRC_FILES
168  contain absolute path.
169  See https://android-review.googlesource.com/#/c/69992
170
171- Fixed ndk-stack to proceed even when it can't parse a frame due to
172  unable to locate routine, filename, or line number, in which case "??"
173  is printed.
174
175- Fixed ndk-stack windows-x64_64 erroneously matches frame line with in "stack:"
176  section even when the line has no word "pc", "eip", or "ip" in it, eg.
177>     I/DEBUG   ( 1151):     #00  5f09db68  401f01c4  /system/lib/libc.so
178
179- Fixed gabi++ to not use malloc() to allocate C++ thread-local
180  objects, and avoid dead-lock in gabi++ when libc.debug.malloc is non-zero in
181  userdebug/eng Android platform builds
182
183
184OTHER CHANGES:
185---
186
187- Added LOCAL_EXPORT_LDFLAGS
188
189- Introducing NDK_PROJECT_PATH=null for use in an integrated build system
190  where options are explicitly passed to ndk-build.  With it ndk-build
191  make no attempt to look for NDK_PROJECT_PATH, and as a result the following
192  variables depending on NDK_PROJECT_PATH to be explicitly specified
193  (since they can on longer derive default value from NDK_PROJECT_PATH when it's null):
194  NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (optional, default to 0),
195  and other APP_* used to be in Application.mk
196
197- Allow APP_ABI to be comma-delimited list, eg. APP_ABI := "armeabi,armeabi-v7a"
198
199- Rebuild all STL with debugging info (ie. "-g") in separate optional package
200  android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip.
201  This helps ndk-stack to provide better stack dump across STL.
202  The code/size of the final stripped shouldn't be affected.
203
204- Enhanced hello-jni samples to report APP_ABI at compilation
205
206- Static libraries are built with Deterministic (option D) mode of ar
207  tool.  See http://b.android.com/60705
208
209
210----------------------------------------------------------------------------
211android-ndk-r9b
212===
213
214IMPORTANT CHANGES:
215---
216
217- Updated include/android/*h and math.h for all API up to 18, add API level 13,
218  15, 16 and 17 in the process.
219  See commit message in https://android-review.googlesource.com/#/c/68012
220  and https://android-review.googlesource.com/#/c/68014 for added APIs.
221  Issues http://b.android.com/47150, http://b.android.com/58528, and
222  http://b.android.com/38423
223
224- Added API19 for Renderscript binding support
225
226- Supported -mhard-float in the existing "armeabi-v7a" ABI.  See
227  tests/device/hard-float/jni/Android.mk for details and current
228  restriction on Clang.
229
230- Rebased GCC 4.8 to 4.8.2, and add diagnostic color support.  To enable
231  it, set -fdiagnostics-color=auto or -fdiagnostics-color=always, or
232  simply export GCC_COLORS, eg.
233>    export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
234
235>  See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html
236
237- Added two new samples to demostrate OpenGL ES3 features: Teapot and MoreTeapots.
238  Run on devices with API>=16 (Don't run on emulator)
239
240- Both GCC 4.7 and Clang 3.2 are deprecated, and will be removed from the next release.
241
242
243IMPORTANT BUG FIXES:
244---
245
246- Fixed ARM GCC 4.6 thumb2 fails to generate 16bit relative jump table.
247  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48328
248
249- Fixed GCC 4.8 ICE on g++.dg/cpp0x/lambda/lambda-defarg3.C
250  See https://android-review.googlesource.com/#/c/62770 and http://gcc.gnu.org/ml/gcc/2013-07/msg00424.html
251
252- Fixed Windows 32-bit *-gdb.exe fail to launch.
253  See http://b.android.com/58975
254
255- Fixed GCC 4.8 ICE when building bullet library with error message reads:
256>  internal compiler error: verify_flow_info failed
257
258>  See http://b.android.com/58916 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58165
259
260- Fixed GDB/ARM to skip ARM.exidx data for unwinding in prologue code.
261  Add a command "set arm exidx-unwinding" to control exidx-based stack
262  unwinding.
263  See http://b.android.com/55826
264
265- Fixed Clang 3.3 MIPS where HI and LO registers are incorrectly reused.
266
267- Fixed MIPS 4.7 ICE with erro reads:
268>  external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
269
270>  See http://gcc.gnu.org/ml/gcc-patches/2012-12/msg00830.html
271
272
273OTHER BUG FIXES:
274---
275
276- Fixed headers
277> 1. Fixed ARM's WCHAR_MIN / WCHAR_MAX to be unsigned according to spec.  (X86/MIPS'
278     are signed).  Define _WCHAR_IS_ALWAYS_SIGNED to restore old behavior.
279     See http://b.android.com/57749
280> 2. Fixed include/netinet/tcp.h to contain TCP_INFO state enum.
281     See http://b.android.com/38881
282> 3. Fixed cdefs_elh.h _C_LABEL_STRING macro which causes warnings with gcc 4.8 toolchain in c++11 mode.
283     See http://b.android.com/58135, http://b.android.com/58652
284> 4. Removed non-existence functions imaxabs and imaxdiv from header inttypes.h
285> 5. Marked pthread_exit() as __noreturn, and pthread_self() as __pure2.
286     See http://b.android.com/60686
287> 6. Added missing mkdtemp() already exists in bionic in stdlib.h
288
289- Fixed samples/gles3jni build with Clang at android-11
290
291- Fixed mclinker to allow mulitple occurrences of the following options: -gc-sections and --eh-frame-hdr.
292
293- Fixed mclinker to accept --no-warn-mismatch
294
295- Fixed cpu-features not to assume all VFPv4 devices support IDIV.
296  Now it only adds IDIV to white-listed devices (Nexus 4 at this moment)
297  http://b.android.com/57637
298
299- Fixed android_native_app_glue.c to stop errors being logged erroneously on event predispatch
300
301- Fixed all operations on gabi++ terminate and unexpected_handler to be thread-safe
302
303- More fixes on Clang -integrated-as to pass tests ssax-instructions and fenv
304
305- Fixed GCC 4.6/4.7/4.8 to pass linker option --eh-frame-hdr even for
306  static executable.  See http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00969.html
307
308- Fixed extra apostrophe in docs/CPU-ARCH-ABIS.html
309  See docs/NDK-DEPENDS.html, http://b.android.com/60142
310
311- Fixed extra quotes in ndk-build output on Windows
312  See http://b.android.com/60649
313
314- Fixed Clang 3.3 to compile ARM atomic builtin __atomic_fetch_add/sub/or/...
315
316- Fixed Clang 3.3 ICE on customized vfprintf. See
317  http://llvm.org/bugs/show_bug.cgi?id=16344
318
319
320OTHER CHANGES:
321---
322
323- Enabled OpenMP for all GCC:  Add the following flags: "LOCAL_CFLAGS += -fopenmp"
324  and "LOCAL_LDFLAGS += -fopenmp".
325  Please find examples in tests/device/test-openmp
326
327- Significantly reduced the size of ld.mcld (1.5MB vs. ld.bfd 3.5MB and ld.gold 7.5MB)
328  and result in ~20% speed up too.
329
330- Added LOCAL_CONLYFLAGS and APP_CONLYFLAGS to specify options applicable to C only
331  but not C++.  The reason being that the existing LOCAL_CFLAGS and APP_CFLAGS are
332  also used for C++ compilation (to save trouble of specifying most options twice),
333  option like -std=gnu99 may fail g++ (warning) and clang++ (error).
334
335- Added gabi++ array helper functions
336
337- All libgcc.a in gcc are built with -funwind-tables to allow stack to unwind past __aeabi_idiv0
338  for example
339
340- Added Ingenic MXU support in MIPS GCC 4.6/4.7/4.8 with new option -mmxu
341
342- Extended MIPS GCC 4.6/4.7/4.8 -mldc1-sdc1 to control ldxc1/sdxc1 too
343
344- Added crazy linker. See sources/android/crazy_linker/README.TXT
345
346- Fixed bitmap-plasma to draw on full screen rather than 200x200
347
348- Reduced linux and darwin toolchain size by 25% (by symlink to
349  identical files)
350
351
352----------------------------------------------------------------------------
353android-ndk-r9
354===
355
356IMPORTANT CHANGES:
357---
358
359- Added GLES3 headers/libraries and new API level 18.
360  See docs/STABLE-APIS.html and the new samples/gles3jni/README
361
362- Added GCC 4.8 compiler.  Since GCC 4.6 is still the default,
363  you need to explicitly enable it:
364>  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.8 or add it
365     in Application.mk.
366>  2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
367     eg. "--toolchain=arm-linux-androideabi-4.8"
368
369>  Note that:
370
371>  1. -Wunused-local-typedefs is enabled by -Wall. Be sure to add "\__attribute__((unused))"
372     if you use compile-time assert like sources/cxx-stl/stlport/stlport/stl/config/features.h
373     line #311.
374     See https://android-review.googlesource.com/#/c/55460
375>  2. Since 4.7 -munaligned-access is default for ARMv6+.  You may
376     compile with -mno-unaligned-access for kernel not supporting it.
377
378- Added Clang 3.3; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.3.
379
380- Both GCC 4.4.3 and Clang 3.1 are deprecated, and will be removed
381  from the next release.
382
383- Gdb is now built with python 2.7.5 support.
384
385- Added mclinker for Windows host.  Since ld.gold is the default
386  where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
387  APP_LDFLAGS to explicitly enable it.
388
389- New tool ndk-depends to print ELF library dependencies.
390  See docs/NDK-DEPENDS.html, http://b.android.com/53486
391
392
393IMPORTANT BUG FIXES:
394---
395
396- Fixed potential event handling issue in android_native_app_glue.
397  See http://b.android.com/41755
398
399- Fixed ARM/GCC-4.7 to generates sufficient alignment for NEON
400  instruction vst/vld.
401  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271
402
403- Fixed GCC 4.4.3/4.6/4.7 ICE at const negative index to string literal
404  See http://b.android.com/54623
405
406- Fixed GCC 4.7 segfault on const init to object address.
407  See http://b.android.com/56508
408
409- Fixed GCC 4.6 ARM broken -Os on boost 1.52.0.
410  See http://b.android.com/42891
411
412- Fixed libc.so and libc.a to contain wait4 already exist in header.
413  See http://b.android.com/19854
414
415- Fixed x86's libc.so and libc.a to contain clone()
416
417- Fixed LOCAL_SHORT_COMMANDS bug where linker.list file is empty and not
418  used.
419  See http://b.android.com/57105
420
421- Fixed GCC MIPS on darwin to use CFI directives.  Without this,
422  "ld.mcld --eh-frame-hdr" fail very often.
423
424- Fixed Clang 3.2 X86/MIPS ICE in llvm/lib/VMCore/Value.cpp.
425  See https://android-review.googlesource.com/#/c/59021
426
427- Fixed GCC 4.7 64-bit Windows assembler crash with error message reads:
428  "out of memory allocating 4294967280 bytes"
429
430- ndk-gdb "--start" or "--launch" now has application waits for gdbserver to
431  attach, which allows breakpoints set in early execution path (eg. JNI) to
432  be hit more reliably.  It does needs jdb and produces warning about pending
433  breakpoints.  You may specify "--nowait" to restore previous behavior.
434  See http://b.android.com/41278
435
436- Fixed GDB crashes when library list is empty
437
438- Fixed GDB crashes when "stepi" past a "bx pc" or "blx pc" Thumb instruction
439  See http://b.android.com/56962 and http://b.android.com/36149
440
441- Fixed MIPS gdbserver to look for DT_MIPS_RLD_MAP instead of DT_DEBUG.
442  See http://b.android.com/56586
443
444- Fixed ndk-build circular dependency, eg. A->B, B->B, then B was dropped from build.
445  See http://b.android.com/56690
446
447
448OTHER BUG FIXES:
449---
450
451- Fixed ndk-build to be able to replace NDK_TOOLCHAIN_VERSION=clang specified at
452  commandline to clang3.2. (Fine if it's specified in environment variable).
453  Error message reads
454
455    ... ndk/toolchains/arm-linux-androideabi-clang/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
456    Command not found
457
458- Fixed gabi++ sizeof(_Unwind_Exception) to be 24 for MIPS in Clang.
459  See https://android-review.googlesource.com/#/c/54141
460
461- Fixed ndk-build to ensure that built libraries actually are removed on
462  ndk-build clean, from projects that include prebuilt static libraries.
463  See See http://b.android.com/53527,
464  https://android-review.googlesource.com/#/c/54461/ and
465  https://android-review.googlesource.com/#/c/54480
466
467- Fixed NDK_ANALYZE=1 to be less verbose
468
469- Fixed gnu-libstdc++/Android.mk to include /backward path.
470  Error message reads:
471
472    sources/cxx-stl/gnu-libstdc++/4.6/include/ext/hash_map:61:30: fatal
473    error: backward_warning.h: No such file or directory
474
475>  See http://b.android.com/53404
476
477- Fixed stlport new somtimes return randon values
478
479- Fixed ndk-gdb to match in the order of CPU_ABIS, not APP_ABIS.
480  See http://b.android.com/54033
481
482- Fixed NDK 64-bit on MacOSX choses wrong path for compiler.
483  See http://b.android.com/53769
484
485- Fixed to detect 64-bit Windows Vista.
486  See http://b.android.com/54485
487
488- Fixed X86 ntonl/swap32.  Error message reads:
489    error: invalid 'asm': operand number out of range"
490
491>  See http://b.android.com/54465 and
492  https://android-review.googlesource.com/#/c/57242
493
494- Fixed ld.gold to merge string literals
495
496- Fixed ld.gold to handle large symbol alignemnt
497
498- Fixed ld.gold to enable "--sort-section=name" option
499
500- Fixed GCC 4.4.3/4.6/4.7 to supress -export-dynamic for statically linked
501  programs.  GCC no longer adds .interp section for statically linked programs.
502
503- Fixed GCC 4.4.3 stlport compilation error about inconsistent typedef of
504  _Unwind_Control_Block.
505  See https://android-review.googlesource.com/#/c/54426
506
507- Fixed awk scripts to handle AndroidManifest.xml created on Windows
508  which may contain trailing \r, and cause error message reads.
509  See http://b.android.com/42548
510
511>  __gmsl:512: *** non-numeric second argument to wordlist' function: ''. Stop.
512
513>  Invalid attribute name:
514>      package
515
516- Fixed make-standalone-toolchain.sh to probe the prebuilts/ dir to detect the
517  appropriate default host bitness.
518
519- Fixed clang3.2 -integrated-as
520
521- Fixed clang3.2 ARM EHABI compact model pr1/pr2 handlerdata
522
523- Fixed clang error with option "-mllvm -arm-enable-ehabi" which reads
524
525>    clang: for the -arm-enable-ehabi option: may only occur zero or one times!
526
527- Fixed NDK fails to build if there's no uses-sdk element in AndroidManifest.xml.
528  See http://b.android.com/57015
529
530
531OTHER CHANGES:
532---
533
534- Fixed headers
535>  1. \__set_errno in errno.h is deprecated, and libc.so no longer exports it.
536     To be compatible in the meantime, __set_errno becomes an inlined function in header
537>  2. \#include "stdint.h" in elf.h.
538    See http://b.android.com/55443
539>  3. Fixed sys/un.h to be included on its own.
540    See http://b.android.com/53646
541>  4. Fixed MotionEvent_getHistorical family of APIs in usr/include/android/input.h to
542    all take const AInputEvent* motion_event.
543    See http://b.android.com/55873
544>  5. Fixed malloc_usable_size to take "const void*".
545    See http://b.android.com/55725
546>  6. Fixed stdint.h to be more compatible with C99.
547    See https://android-review.googlesource.com/#/c/46821
548>  7. Fixed wchar.h not to redefine WCHAR_MAX/WCHAR_MIN
549>  8. Fixed <inttypes.h> declaration for pointer-related PRI/SCN macros.
550      See http://b.android.com/57218
551>  9. Changed sys/cdefs.h so __WCHAR_TYPE__ is 32-bit even for API < 9,
552      ie. wchat_t is 32-bit for all API level.
553      Define _WCHAR_IS_8BIT to restore old behavior.
554      See http://b.android.com/57267
555
556- Added more fomatting in NDK docs/, and misc docs/ fixes including callbacks/threads and others.
557
558- Support "thin-archive" for building static libraries.
559  See http://b.android.com/40303 and ANDROID-MK.html
560
561- Script make-standalone-toolchain.sh now supports stlport
562  in addition to gnustl, with --stl=stlport.
563  See http://b.android.com/53472 and STANDALONE-TOOLCHAIN.html
564
565- Script make-standalone-toolchain.sh --llvm-version= now also
566  creates scripts $TOOLCHAIN_PREFIX-clang and $TOOLCHAIN_PREFIX-clang++
567  in addition to clang and clang++, to avoid using host's clang/clang++
568  by accident.
569
570- Added two flags to re-enable two optimizations in upstream Clang
571  but disabled in NDK for better compatibility with code used to be
572  compiled by GCC:
573>  1. Added a flags -fcxx-missing-return-semantics to re-enable "missing
574     return semantics" in clang 3.2+.  Normally for a value-returning
575     function all paths should terminate with a return statment.  If not,
576     clang inserts undefined instruction (or trap in debug mode) at path
577     w/o return statement.  If you are sure your code is correct, use
578     this flag for optimizer to take advantage of the undefined behavior.
579     If you are not sure, don't use this flag.  The caller may still receiver
580     random incorrect value, but optimizer won't exploit it and make thing
581     even worse to debug.
582>  2. Added a flag -fglobal-ctor-const-promotion to re-enable promoting
583     global variables with static constructor to constant.   With this
584     flag, the global variable optimization pass of LLVM will try to
585     evalutate the global variables with static constructors, and promote
586     the global constants.  Although this optimization is correct, it may
587     cause some incompatability with code compiled by gcc.  For example,
588     code may do const_cast to cast the constant to mutable and modify it.
589     In GCC the variable is in read-write and the code run by accident.  But
590     in Clang the const variable will be in read-only memory and crash
591
592- Added -mldc1-sdc1 to MIPS GCC and Clang compilers.  By default
593  compilers align 8-byte objects properly and emit instructions
594  ldc1/sdc1 to move them around.  If your app use custom allocator
595  which doesn't always align new object 8-byte boundary like the default
596  one does, your app may crashes due to ldc1/sdc1 on unaligned memory.
597  In this case you may use -mno-ldc1-sdc1 to workaround.
598
599- Downgrade warning to "info" if APP_PLATFORM_LEVEL is larger than APP_MIN_PLATFORM_LEVEL.
600  APP_PLATFORM_LEVEL may be lower than APP_PLATFORM in jni/Application.mk
601  because NDK doesn't have headers for all level, and the actual level is
602  shifted downward.  APP_MIN_PLATFORM_LEVEL is retrieved from android:minSdkVersion
603  in AndroidManifest.xml.
604  See http://b.android.com/39752
605
606- cpu-features.c: add android_getCpuIdArm() and android_setCpuArm()
607  This allows retrieving the ARM CPUID information easily.
608  See http://b.android.com/53689
609
610- Clang now compiles with GCC 4.8's as/ld in ndk-build.
611  Note that from GCC 4.7, "monotonic_clock" and "is_monotonic" are
612  renamed to "steady_clock" and "is_steady", respectively
613
614- Added new warnings in ndk-build:
615>  1. if LOCAL_LDLIBS/LDFLAGS are used in static library modules
616>  2. if there is no module to build
617>  3. non-system libraries used in LOCAL_LDLIBS/LDFLAGS of shared library
618     or executable modules
619
620- Updated ndk-build so that if APP_MODULES is not defined and only static libraries
621  are listed in Android.mk, force-build all of them.
622  See http://b.android.com/53502
623
624- ndk-build now supports absolute paths in LOCAL_SRC_FILES
625
626- Executable "`*-gdbtui", which is equivalent to "`*-gdb -tui", is removed for the sake of space.
627
628- Issue warning when EDG front-end turns _STLP_HAS_INCLUDE_NEXT
629  back on.
630  See http://b.android.com/53646
631
632- Added NDK_LIBS_OUT to override path for libraries/gdbserver from the default
633  $PROJECT/libs.  See OVERVIEW.html
634
635- Changed ndk-build defaults to compile code with format string protection
636  "-Wformat -Werror=format-security".  You may set
637  LOCAL_DISABLE_FORMAT_STRING_CHECKS=true to disable it.
638  See ANDROID-MK.html
639
640- Added STL pretty-print support in ndk-gdb-py.
641  See NDK-GDB.html
642
643- Misc build/test
644>  - Added tests based on googletest frameworks
645>  - toolchain build script warns if shell isn't bash
646
647
648-------------------------------------------------------------------------------
649android-ndk-r8e
650===
651
652IMPORTANT CHANGES:
653---
654
655- NDK now delivers additional 64-bit host toolchain set (package name suffix
656  `*-x86_64.*`)
657
658>  1. The ndk-build script uses 64-bit toolchain if it's present and your OS
659     supports it.  If you install both 32-bit and 64-bit toolchain on 64-bit
660     OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to
661     always use the 32-bit host toolchain.
662
663>  2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64"
664     on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host
665     toolchain instead of the default 32-bit
666
667>  See NDK-BUILD.html
668
669- Added Clang 3.2 compiler.  Since GCC 4.6 is still the default, you need to
670  explicitly enable it:
671
672> 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or
673     NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the
674     clang compilers in the package) or add it in Application.mk.
675
676> 2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh
677     and replace CC and CXX in your makefile with <tool-path>/bin/clang
678     and <tool-path>/bin/clang++.
679
680- Added static code analyzer for Linux/MacOSX hosts
681
682>  1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line.
683
684>  2. For standalone, please refer to ndk-build for example to run scan-build
685     using /path/to/standalone/bin/<arch>/analyzer.
686
687>  This feature is experimental now but welcome to try and report issues.
688
689- Added MCLinker for Linux/MacOSX hosts.  Since ld.gold is the default
690  where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
691  APP_LDFLAGS to explicitly enable it.
692
693>  This feature is experimental now but welcome to try and report issues.
694  Please find project page: https://code.google.com/p/mclinker/
695
696- ndk-build now uses topological sort for module dependencies, ie.
697  it automatically sorts out the order of libraries specified in
698  LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and
699  LOCAL_SHARED_LIBRARIES.
700
701>  See http://b.android.com/39378 and an example in tests/build/topological-sort.
702
703
704IMPORTANT BUG FIXES:
705---
706
707- Fixed build script to build all toolchains in -O2.  Toolchains
708  in previous releases were incorrectly built without optimization.
709
710- Fixed build script which unconditionally builds Clang/llvm for MacOSX
711  in 64-bit
712
713- Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832.
714  See http://b.android.com/52732
715
716- Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in
717  functions.
718  See http://b.android.com/41297
719
720- Fixed GCC 4.7 linker error reads like
721  .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between
722  out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o)
723  and output.
724
725>  See http://sourceware.org/ml/binutils/2012-12/msg00202.html
726
727- Fixed GCC 4.7 ICE in build_data_member_initialization, at
728  cp/semantics.c:5790
729
730- Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214.
731  See http://b.android.com/52909
732
733- Fixed a GCC 4.7 segfault.
734  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
735
736- Fixed to <chrono> clock resolution and enable steady_clock.
737  See http://b.android.com/39680
738
739- Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++.
740  See http://b.android.com/41770 and http://b.android.com/41859
741
742- Fixed X86 MXX/SSE code fails to link due to missing posix_memalign.
743  See https://android-review.googlesource.com/#/c/51872
744
745- Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb().
746  See https://android-review.googlesource.com/#/c/50383
747
748- Fixed GCC4.7/X86 to resotre earlier cmov behavior.
749  See http://gcc.gnu.org/viewcvs?view=revision&revision=193554
750
751- More fixes to handle NULL return value of setlocale() in
752  libstdc++/GCC4.7.
753  See http://b.android.com/46718
754
755- Fixed ld.gold runtime undefined reference to __exidx_start/_end.
756  See https://android-review.googlesource.com/#/c/52134
757
758- Fixed Clang3.1 ICE using Eigen library.
759  See http://b.android.com/41246
760
761- Fixed Clang3.1 ICE including <chrono> in C++11 mode.
762  See http://b.android.com/39600
763
764- Fixed Clang3.1 ICE when generating object code for a method
765  call to a uniform initialized rvalue.
766  See http://b.android.com/41387
767
768- Fixed Clang3.1/X86 stack realignment.
769  See https://android-review.googlesource.com/#/c/52154
770
771- Fixed GDB SIGILL when debugging on platform 4.1.2.
772  See http://b.android.com/40941
773
774- Fixed GDB cannot set "source:line" breakpoints when symbols contain
775  frankenpaths.
776  See http://b.android.com/42448
777
778- Fixed GDB read_program_header for MIPS PIE executables.
779  See https://android-review.googlesource.com/#/c/49592
780
781- Fixed STLport segfault in uncaught_exception().
782  See https://android-review.googlesource.com/#/c/50236
783
784- Fixed STLport Bus error in exception handling due
785  to unaligned access of DW_EH_PE_udata2, 4 and 8.
786
787- Fixed Gabi++ nothrow new[] infinite recursion.
788  See http://b.android.com/52833
789
790- Fixed Gabi++ wrong offset to EH pointer.
791  See https://android-review.googlesource.com/#/c/53446
792
793- Removed Gabi++ redundant free on exception object.
794  See https://android-review.googlesource.com/#/c/53447
795
796
797OTHER BUG FIXES:
798---
799
800- Fix NDK headers
801
802>  1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t
803>  2. Fixed MIPS and ARM fenv.h
804>  3. Fixed stddef.h to not re-define offsetof already exists
805     in toolchain
806>  4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t.
807     See http://b.android.com/38441
808>  5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h.
809     See http://b.android.com/53163
810
811- Fixed STLport to abort after OOM instead of (silent) exit
812
813- Fixed 'system' and 'Gabi++' headers to be able to compile
814  with API level < 9
815
816- Fixed cpufeatures to not parse /proc/self/auxv.
817  See http://b.android.com/43055
818
819- Fixed ld.gold to not depending on host libstdc++, and in case
820  of windows, library libgcc_sjlj_1.dll
821
822- Fixed Clang3.1 which emits inconsistent register list in .vsave
823  and fails assembler. eg.
824   .vsave  {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22}
825  See https://android-review.googlesource.com/#/c/49930
826
827- Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport
828  on MIPS.
829  See https://android-review.googlesource.com/#/c/51961
830
831- Fixed Clang3.1 to only enable exception by default for C++,
832  not for C
833
834- Misc fixes in Clang3.1 to pass most GNU exception tests
835
836- Fixed script clang/clang++ in standalone NDK compiler to
837  detect -cc1 and don't specify "-target" when found
838
839- Fixed ndk-build to observe NDK_APP_OUT set in Application.mk
840  See http://b.android.com/42477
841
842- Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already
843  declared in setjmp.h.
844  See http://b.android.com/19851
845
846- Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11.
847  See http://clang.llvm.org/cxx_status.html
848
849- Fixed cygwin path in argument passed to HOST_AWK
850
851- Fixed ndk-build warning in windows when running from project's jni/
852  directory.
853  See http://b.android.com/40192
854
855- Fixed ndk-build won't build if makefile has tailing whitespace in
856  LOCAL_PATH definition.
857  See http://b.android.com/42841
858
859
860OTHER CHANGES:
861---
862
863- Enabled threading support in GCC/MIPS toolchain
864
865- Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match
866  in GNU libstdc++.
867
868>  See tests/build/b8247455-hidden-cxa/jni/Android.mk
869
870- Gabi++ and STLport static libraries are now built with hidden
871  visibility except for EH helpers
872
873- STLport in ARM is now built in thumb mode
874
875- Added support for std::set_new_handler in Gabi++.
876  See http://b.android.com/52805
877
878- Enabled FUTEX in GNU libstdc++
879
880- ndk-build no longer copies prebuilt static library to project's
881  obj/local/<abi>/directory.
882  See http://b.android.com/40302
883
884- Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk.
885  See http://b.android.com/21132
886
887- Built additional GNU libstdc++ libaries in thumb mode for ARM
888
889- Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt
890  instructions with 32-bit FPU
891
892- Enabled graphite in GCC 4.6 and 4.7.  Allow more loop optimizations:
893  -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten,
894  -floop-interchange, -floop-strip-mine, -floop-parallelize-all,
895  and -ftree-loop-linear.
896
897>  See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
898
899- Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes
900  and optimizes memory access pattern.
901
902>  See http://polly.llvm.org
903
904- Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO
905  via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold)
906
907- Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7
908
909- Enabled --text-reorder for ld.gold in GCC 4.7
910
911- GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef
912  isinf, etc (*1), in bionic header.  If you have code which does the following
913
914        #include <math.h>
915          ... use isinf
916        #include <cmath>
917        #include <math.h>
918          ... use isinf // fails
919
920>  The 2nd use of isinf may fail because cmath undefined isinf
921
922  (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf,
923       isnan, isnormal, isgreater, isgreaterequal, isless, islessequal,
924       islessgreater, isunordered, signbit
925
926- Added APP_LDFLAGS.  See ANDROID-MK.html.
927
928- Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain,
929  respectively.
930
931- Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom
932
933- Misc toolchain build script enhancements:
934
935>  1. Fixed a race condition in build-gcc.sh mingw build which used to prevent
936     high degree of parallel build
937>  2. build-gabi++.sh and build-stlport.sh can now run from NDK package.
938     See http://b.android.com/52835
939>  3. Fixed run-tests.sh in MSys
940>  4. Better 64-bit host toolchain and canadian build supports
941>  5. Updated build-mingw64-toolchain.sh for modern versions
942>  6. Option to build libgnustl_static.a and stlport_static.a without hidden
943     visibility
944
945
946-------------------------------------------------------------------------------
947android-ndk-r8d
948===
949
950IMPORTANT CHANGES:
951---
952
953- Added GCC 4.7 compiler.  Since GCC 4.6 is still the default,
954  you need to explicitly enable it:
955
956>  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.7 or add it
957     in Application.mk.
958>  2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
959     eg. "--toolchain=arm-linux-androideabi-4.7"
960
961>  This feature is experimental now but welcome to try and report issues.
962
963- Added stlport exception support via gabi++.  Note that the new gabi++
964  depends on dlopen, etc, meaning that:
965
966>  1. libstlport_static.a can no longer be used in "static" executable (-static,
967     only possible with standalone toolchain).  "dynamic" executable (eg.
968     include $(BUILD_EXECUTABLE)) can link fine because compiler impliciently adds -ldl
969>  2. If your project links with "-nostdlib -Wl,--no-undefined", you need to provide
970     your own -ldl
971
972>  See CPLUSPLUS-SUPPORT.html.
973
974>  This feature is experimental now and works better with GCC 4.6/4.7
975  than with GCC 4.4.3 and clang3.1.  Welcome to try and report issues.
976
977- Add -mstack-protector-guard= option for x86 to choose between "global"
978  (default, compatible with older bionic) and "tls" (new %gs:20) for
979  -fstack-protector, -fstack-protector-all, and -fstack-protector-strong
980  (GCC 4.6+).  Note that this alone doesn't enable any -fstack-protector*
981
982- Add android_setCpu() to sources/android/cpufeatures/cpu-features.c
983  when auto-detection via /proc isn't possible in and after JB.
984  See http://code.google.com/p/chromium/issues/detail?id=164154
985
986
987IMPORTANT BUG FIXES:
988---
989
990- Fixed un-needed rebuild of object files via ndk-build.
991  See http://code.google.com/p/android/issues/detail?id=39810
992
993- Fixed r8c linker fail in MacOSX 10.6.x with error reads:
994
995        dyld: lazy symbol binding failed: Symbol not found: _memmem
996        Referenced from: ...../arm-linux-androideabi/bin/ld
997        Expected in: /usr/lib/libSystem.B.dylib
998
999>  r8c was packaged on 10.7 machine which produced binaries not
1000  compatible with 10.6 SDK/NDK still supports.  Will build it
1001  on 10.6 from now on.
1002
1003- Removed '-x c++' from clang++ in standalone.
1004  See http://code.google.com/p/android/issues/detail?id=39089
1005
1006- Fixed issues using NDK_TOOLCHAIN_VERSION=clang3.1 in cygwin.
1007  See http://code.google.com/p/android/issues/detail?id=39585
1008
1009- Fixed make-standalone-toolchain.sh to create standalone toolchain
1010  on cygwin and MinGW, which works for all cygwin, MingGW, and CMD.exe.
1011  See http://code.google.com/p/android/issues/detail?id=39915 and
1012  http://code.google.com/p/android/issues/detail?id=39585 (again)
1013
1014- Added missing SL_IID_ANDROIDBUFFERQUEUESOURCE in android-14 for
1015  ARM/X86.
1016  See http://code.google.com/p/android/issues/detail?id=40625
1017
1018- Fixed x86 cpu detection for MOVBE.
1019  See http://code.google.com/p/android/issues/detail?id=39317
1020
1021- Fixed an issue preventing STL dependencies to C++ sources not
1022  in .cpp extension.
1023
1024- Fixed GCC 4.6 ARM ICE at reload1.c:1061.
1025  See http://code.google.com/p/android/issues/detail?id=20862
1026
1027- Fixed GCC 4.4.3 ARM ICE at emit-rtl.c:1954.
1028  See http://code.google.com/p/android/issues/detail?id=22336
1029
1030- Fixed GCC 4.4.3 ARM ICE at postreload.c:396.
1031  See http://code.google.com/p/android/issues/detail?id=22345
1032
1033- Fixed GCC 4.6/4.7 elides lambdas.
1034  See http://code.google.com/p/android/issues/detail?id=35933
1035
1036
1037OTHER BUG FIXES:
1038---
1039
1040- Fixed NDK headers
1041
1042>  1. Fixed __WINT_TYPE__ and wint_t to be the same type
1043>  2. Corrected typo in <android/bitmap.h>.
1044     See http://code.google.com/p/android/issues/detail?id=15134
1045>  3. Corrected typo in <errno.h>.
1046     See http://code.google.com/p/android/issues/detail?id=15134
1047>  4. Check the presence of __STDC_VERSION__ in <sys/cdefs.h>.
1048     See http://code.google.com/p/android/issues/detail?id=14627
1049>  5. Re-org headers byteswap.h and dirent.h
1050>  6. Fixed limits.h to include page.h which provides PAGE_SIZE.
1051     See http://code.google.com/p/android/issues/detail?id=39983
1052>  7. Fixed return type of glGetAttribLocation and glGetUniformLocation
1053     from int to GLint.
1054>  8. Fixed __BYTE_ORDER for x86.
1055     See http://code.google.com/p/android/issues/detail?id=39824
1056
1057- Fixed ndk-build to not overwrite -Os with -O2 in ARM
1058
1059- Fixed to allow overwriting HOST_AWK, HOST_SED, and HOST_MAKE.
1060
1061- Fixed ld.gold issue on fsck_msdos build linking objects built by ICC
1062
1063- Fixed ARM EHABI support in clang conforming to spec.
1064
1065- Fixed GDB to shorten the time spending on walking target's link map upon
1066  solib events.
1067  See http://code.google.com/p/android/issues/detail?id=38402
1068
1069- Fixed missing libgcc.a when linking shared libraries
1070
1071
1072OTHER CHANGES:
1073
1074- Backported 64-bit built-in atomic functions for ARM to GCC 4.6
1075
1076- Documentation for audio output latency, other misc docs/ fixes
1077
1078- Non-void functions in debug build by Clang now raise SIGILL on path w/o
1079  return statement
1080
1081- make-standalone-toolchain.sh now accepts surffix "-clang3.1" which is
1082  equivalent to adding "--llvm-version=3.1" on GCC 4.6 toolchain.
1083
1084- Changed GCC and Clang bug report URL to http://source.android.com/source/report-bugs.html
1085
1086- Added ARM ELF support to llvm-objdump.
1087
1088- Suppressed warning "treating c input as c++" in clang.
1089
1090- Only 32-bit of libiberty.a is built (placed at lib32/)
1091
1092
1093-------------------------------------------------------------------------------
1094android-ndk-r8c
1095===
1096
1097IMPORTANT CHANGES:
1098---
1099
1100- Added Clang 3.1 compiler.  Since GCC 4.6 is still the default,
1101  you need to explicitly enable it:
1102  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.1 or add it
1103     in Application.mk.
1104  2. For standalone: Add "--llvm-version=3.1" to make-standalone-toolchain.sh
1105     and replace CC and CXX in your makefile with <tool-path>/bin/clang
1106     and <tool-path>/bin/clang++.
1107
1108>  See STANDALONE-TOOLCHAIN.html for details.
1109  This feature is experimental now but welcome to try and report issues.
1110
1111- Gold linker ld.gold is now available in Windows toolchain.  Gold is also the
1112  default linker for ARM/X86 on all hosts.  You may override it to use ld.bfd
1113  linker by adding LOCAL_LDFLAGS += -fuse-ld=bfd in Android.mk, or pass
1114  -fuse-ld=bfd to g++/clang++ commandline which does the linking.
1115
1116- ndk-build[.cmd] and ndk-gdb now check and bail out if NDK path contains space.
1117
1118- Changes in API level
1119  1. Projects with android-10 .. 13 specified in APP_PLATFORM, project.properties or
1120     default.properties will link against android-9 instead of android-14.
1121  2. Executable in project with android-16 (Jelly Bean) or higher is compiled
1122     with -fPIE (position-independent executables).  A new APP_PIE allow manual control
1123     of this behavior.  See APPLICATION-MK.html for details.  Note that all API level
1124     above 14 still link against platforms/android-14. ie. no new platforms/android-N
1125     is added.
1126  3. ndk-build now warns about the adjusted API level is larger than android:minSdkVersion
1127     in project's AndroidManifest.xml.
1128
1129- ARM: Updated 'cpu-features' helper library to include 9 more ARM-specific features.
1130
1131>  See sources/android/cpufeatures/cpu-features.h for details.
1132
1133- X86: long double is still a distinct type but it's 8-byte in size now (same as double)
1134
1135- APP_ABI=armeabi-v7a:
1136  1. -march=armv7-a is also passed to linker to link v7-specific libraries and crt*.o
1137  2. -mfpu=vfpv3-d16 is added by ndk-build instead of -mfpu=vfp in the previous releases.
1138
1139
1140IMPORTANT BUG FIXES:
1141---
1142
1143- Fixed an issue when make-standalone-toolchain.sh is run under root privilege resulting
1144  in standalone toolchain inaccessible to some.
1145  1. All files/executables attributes in NDK release package are set to readable/executable to all
1146  2. The ownership/group of file libstdc++.a is now preserved when copied
1147
1148>  See http://code.google.com/p/android/issues/detail?id=35279
1149
1150- Removed redundant \r from Windows prebuilt echo.exe. The redundant \r in gdb.setup fails
1151  GDB because it incorrectly becomes part of the path.
1152
1153>  See http://code.google.com/p/android/issues/detail?id=36054
1154
1155- Fixed windows parallel builds that sometimes failed due to timing issues in the host-mkdir
1156  implementation.
1157
1158>  See http://code.google.com/p/android/issues/detail?id=25875
1159
1160- Fixed GCC 4.4.3 GNU libstdc++ to NOT merge typeinfo names by default.
1161
1162>  See toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo,
1163   http://code.google.com/p/android/issues/detail?id=22165, and
1164   https://groups.google.com/forum/#!msg/android-ndk/FlnuAOIKHOo/kLEwaBso7KYJ%5B1-25%5D
1165
1166- Fixed crash on null context in GCC 4.6 cp/mangle.c::write_unscoped_name, where gcc
1167  may crash when context == NULL and dereferenced in TREE_CODE
1168
1169- Fixed GCC 4.4.3 crashes on NEON specific typedef for float
1170
1171>  See http://code.google.com/p/android/issues/detail?id=34613
1172
1173- Fixed the STLport internal _IteWrapper::operator*() implementation where stale
1174  stack location holding the dereferenced value is returned and leads to runtime crashes
1175
1176>  See http://code.google.com/p/android/issues/detail?id=38630
1177
1178- ARM: Fixed ARM GCC 4.4.3/4.6 g++ to not warn about "the mangling of <va_list> has
1179  changed in GCC 4.4".  Switch -Wno-psabi is no longer needed to workaround.
1180
1181- ARM: Fix an issue when project with .arm/.neon suffixes in LOCAL_SRC_FILES also
1182  uses APP_STL.  With APP_STL, ndk-build searches for C++ file in LOCAL_SRC_FILES before
1183  adding STL header/lib paths to compilation.  Fix ndk-build to filter out .arm and .neon
1184  suffixes before the search, otherwise item in LOCAL_SRC_FILESfile like myfile.cpp.arm.neon
1185  won't be considered C++.
1186
1187- ARM: Fixed binutils-2.21/ld.bfd to be capable of linking object from older binutils w/o
1188  tag_FP_arch, which used to produce error message reads
1189
1190    BFD (GNU Binutils) 2.21 assertion fail
1191         ...../binutils/binutils-2.21/bfd/elf32-arm.c:10190
1192
1193>  The root cause is that ARM's binutils-2.21/ld.bfd performs sanity check and asserts
1194  when "tag_FP_arch==0 && tag_ABI_HardFP_use !=0".  This can happen in object using FP
1195  linked by older binutils when tag_FP_arch isn't produced at all (thus gets the default
1196  "zero" in new linker).
1197
1198>  See http://code.google.com/p/android/issues/detail?id=35209
1199
1200- ARM: Removed warning when binutils-2.19/ld links prebuilt object by newer binutils-2.21
1201  which reads
1202
1203    Unknown EABI object attribute 44
1204
1205>  The reason is that all prebuilt crt*.o and C++ STL are built with later GCC 4.6/binutils-2.21
1206  and contain new tag "DIV_use" with value set to "Not allowed".  This tag can be safely ignored
1207  by the original GCC4.4.3/binutils-2.19 toolchain since it is only for sanity check.
1208
1209- ARM: Fixed an issue in GNU stdc++ compilation with both -mthumb and -march=armv7-a, by
1210  making make-standalone-toolchain.sh to also populate headers/libs in sub-directory
1211  "armv7-a/thumb".
1212
1213>  See http://code.google.com/p/android/issues/detail?id=35616
1214
1215- ARM: Fix error: unresolvable R_ARM_THM_CALL relocation
1216
1217>  See http://code.google.com/p/android/issues/detail?id=35342 and
1218    https://groups.google.com/forum/?fromgroups#!topic/android-ndk/HaLycHImqL8
1219
1220- ARM: Fixed internal compiler error at "reload1.c:3633".  The reason is that ARM back-end
1221  expects wrong operand type when sign-extend from char.
1222
1223>  Back port fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099
1224
1225- ARM: Fixed internal compiler error with negative shift amount.
1226    int foo(int a, int b)
1227    {
1228        return a | (b << -3);
1229    }
1230
1231>  See http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00594.html
1232
1233- X86: Fixed -fstack-protector, which is also the default for ndk-build x86 ABI
1234
1235- MIPS: Fixed stlport endianess by setting _STLP_LITTLE_ENDIAN to 1 when compiling
1236  MIPS' libstlport_*
1237
1238- MIPS: Fixed GCC __builtin_unreachable issue compiling LLVM
1239
1240>  See Bug 54369: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369
1241
1242- MIPS: Backport fix to bug 50380: cc1 hangs eating 100% CPU
1243
1244>  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50380 and
1245    http://gcc.gnu.org/viewcvs/trunk/gcc/cse.c?r1=177852&r2=182498&pathrev=182498
1246
1247- GDB: Disable python support in gdb-7.x at build, otherwise gdb-7.x/configure may
1248  pick up whatever python in host and build gdb with hard-wired dependency to specific
1249  version of python.
1250
1251>  See http://code.google.com/p/android/issues/detail?id=36120
1252
1253- GDB: Fixed ndk-gdb when APP_ABI contains "all" and matches none of known architecture
1254
1255>  See http://code.google.com/p/android/issues/detail?id=35392
1256
1257- GDB: Fixed Windows pathname support.  Keep ':' if it looks like it could be part of
1258  a Windows path starting with a drive letter.
1259
1260>  See http://sourceware.org/ml/gdb/2011-06/msg00030.html and
1261    http://sourceware.org/bugzilla/show_bug.cgi?id=12843
1262
1263- GDB: Fixed add HW breakpoint support for ARM in gdbserver
1264
1265>  See http://sourceware.org/ml/gdb-patches/2011-09/msg00200.html
1266
1267- GDB: Fixed to only read current solibs when linker is consistent.  Speeds up solib
1268  event handling.
1269
1270>  See http://code.google.com/p/android/issues/detail?id=37677
1271
1272- GDB: Fixed to make repeated attempts to find solib breakpoint.  GDB will retry enable_break()
1273  during every call to svr4_current_sos() until it succeeds.
1274
1275>  See https://android-review.googlesource.com/#/c/43563
1276
1277- GDB: Fixed an issue where gdb cannot stop on breakpoints placed on dlopen-ed
1278  libraries.
1279
1280>  See http://code.google.com/p/android/issues/detail?id=34856
1281
1282- GDB: Fixed SIGILL in dynamic linker when calling dlopen(), on system
1283  where /system/bin/linker is stripped of symbols and rtld_db_dlactivity()
1284  is implemented as Thumb, due to not preserving LSB of sym_addr
1285
1286>  See http://code.google.com/p/android/issues/detail?id=37147
1287
1288
1289OTHER BUG FIXES:
1290---
1291
1292- Fixed NDK headers
1293  1. Fixed arch-mips/include/asm/* previously incorrectly cleaned from original kernel
1294     See https://android-review.googlesource.com/#/c/43335
1295  2. Replace struct member data "`__unused`" with "`__linux_unused`" in linux/sysctl.h
1296     and linux/icmp.h to avoid conflict with "#define __unused" in sys/cdefs.h
1297  3. Fixed fenv.h to enclosed C functions with __BEGIN_DECLS/__END_DECLS
1298  4. Removed unimplemented functions in malloc.h
1299  5. Fixed stdint.h.  See http://code.google.com/p/android/issues/detail?id=1952
1300  6. Fixed preprocessor macros in <arch>/include/machine/*
1301  7. Replaced link.h for mips with new version for all platforms
1302  8. Remove linux-unistd.h
1303  9. Move GLibc-specific macros LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX from
1304     <pthread.h> to <limits.h>.
1305
1306- Fixed a buffer overflow in ndk-stack-parser.
1307
1308- Fixed _STLP_USE_EXCEPTIONS, when not defined, to omit all declarations
1309  and uses of __Named_exception.  Compile and use __Named_exception only
1310  when STLport is being allowed to use exceptions.
1311
1312- Fixed to build Linux-only NDK packages (invoked as follow) w/o also building windows
1313
1314    ./build/tools/make-release.sh --force --systems=linux-x86
1315
1316- Fixed libc.so to not export atexit() and __do_handler.  These symbols are exported
1317  on ARM by the system version of the C library to support legacy native libraries.
1318  NDK-generated should never reference them directly. Instead, each shared library or
1319  executable should embed its own version of these symbols, provided by crtbegin_*.o
1320
1321>  If your project is linked with "-nostdlib -Wl,--no-undefined", you need to provide
1322  your own __dso_handle because crtbegin_so.o isn't linked.  The content of __dso_handle
1323  doesn't matter.  eg.
1324
1325    extern "C" {
1326      extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
1327      void *__dso_handle;
1328    }
1329
1330- ARM: Fixed symbol decoder (used in objdump) for plt entries to generate more
1331  readable form function@plt
1332
1333- X86: Removed the following symbols introduced in GCC 4.6/libgcc.a from X86's libc.so:
1334  __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2
1335
1336- MIPS: Removed unused .ctors, .dtors, and .eh_frame in MIPS crt*_so.S.
1337
1338- GDB: ndk-gdb now only takes the last line of output for ndk-build DUMP_XXXX.  This
1339  ensures that if Application.mk or Android.mk do print something with $(info ...),
1340  it doesn't get injected into the result of DUMP_XXX.
1341
1342> See https://groups.google.com/d/msg/android-ndk/-/ew0lTWGr1UEJ
1343
1344
1345OTHER CHANGES:
1346---
1347
1348- Removed arch-x86 and arch-mips headers from platforms/android-{3,4,5,8}.
1349  Those headers are incomplete to begin with, since both X86 and MIPS ABIs are only
1350  supported at API &ge; 9
1351
1352- Simplified c++ include path in standalone package, eg. change
1353
1354    <path>/arm-linux-androideabi/include/c++/4.6.x-google
1355  to
1356    <path>/include/c++/4.6/
1357
1358>  See http://code.google.com/p/android/issues/detail?id=35279
1359
1360- Enhanced ndk-build to recognize more C++ file extensions by default:
1361
1362    .cc .cp .cxx .cpp .CPP .c++ .C
1363
1364>  You may still use LOCAL_CPP_EXTENSION to override it
1365
1366- Fixed an issue in samples/san-angeles about black/freeze frame
1367  at re-launch.
1368
1369- Replaced deprecated APIs in NDK samples
1370  1. hello-gl2 from android-5 to android-7
1371  2. native-activity from android-9 to android-10
1372  3. native-audio from android-9 to android-10
1373  4. native-plasma from android-9 to android-10
1374
1375>  See http://code.google.com/p/android/issues/detail?id=20017
1376
1377- Added new branding for Android executables with a simpler scheme in section
1378  .note.android.ident (defined in crtbegin_static/dynamic.o) so that debugging
1379  tools can act accordingly.
1380
1381>  The structure member and values are defined as follows:
1382
1383    static const struct {
1384      int32_t namesz;  /* = 8,  sizeof ("Android") */
1385      int32_t descsz;  /* = 1 * sizeof(int32_t) */
1386      int32_t type;    /* = 1, ABI_NOTETYPE */
1387      char name[sizeof "Android"];  /* = "Android" */
1388      int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
1389    }
1390
1391>  Previous branding in section .note.ABI-tag is deprecated.
1392
1393- Added a new script run-tests-all.sh which calls run-tests.sh and standalone/run.sh
1394  with various conditions.  Script run-tests.sh w/o --abi is also enhanced to compile
1395  most of tests for all supported ABI and run on all attached devices
1396
1397
1398-------------------------------------------------------------------------------
1399android-ndk-r8b
1400===
1401
1402IMPORTANT BUG FIXES:
1403---
1404
1405- Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
1406  and for static libraries.  List file generation is sped up, and it is no longer
1407  regenerated and causes whole project to be rebuilt every time.
1408
1409- Fixed several issues in ndk-gdb
1410
1411    * to pass flags "-e", "-d", "-s" to adb more consistently
1412
1413    * to accept device serial name containing space
1414
1415    * to also pull /system/bin/link, so gdb on host can set a breakpoint in
1416      __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
1417      when dlopen() is called)
1418
1419- Fixed "ndk-build clean" in windows which failed to remove ./libs/\*/lib\*.so
1420
1421- Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
1422
1423- Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
1424
1425- Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
1426
1427- Fixed \__start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
1428  "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
1429  address and crash the program or do wield things.  With "call", return address is pushed
1430  on stack and unwinding stops correctly at _start.  Note that __libc_init never returns, so
1431  this fix wonʼt affect normal program execution.  But just in case it "does" return,
1432  jump to address 0 and halt.
1433
1434
1435IMPORTANT CHANGES:
1436---
1437
1438- GCC 4.6 toolchain
1439
1440  Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
1441  the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6).  Note:
1442
1443  * GCC 4.6 is the default.  You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
1444    to select the original one.
1445
1446  * Gold linker support is only available for ARM and x86 architectures on linux-86
1447    and  darwin-x86 hosts.  It's not turned on by default.  Add
1448    "LOCAL_LDFLAGS += -fuse-ld=gold" in Android.mk to enable it.
1449
1450  * You will need the new GDB to debug program compiled with -fPIE (including
1451    binaries in Jelly Bean image)
1452
1453  * The binutils 2.21 ld also contain back-port of fixes from 2.22
1454
1455   * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
1456     libraries.  See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
1457
1458   * Fixed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
1459     if they are valid.  Otherwise program built with -fPIE can't be debugged.
1460     http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
1461
1462  * Sincos optimization is not enabled for compatibility with old platforms which don't have
1463    it.
1464
1465- NX and relro/bind_now protections are enabled by default
1466
1467  Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
1468  protection against buffer overflow attacks by enabling NX bit on stack and heap.
1469
1470  Add "-z relro -z now" for linker to harden internal data sections after linking
1471  against security vulnerabilities due to memory corruption.  See
1472
1473  http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
1474  http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
1475
1476  For those who really needs it, these features can be disabled by
1477  1. Passing "--execstack" to assembler and "-z execstack" to linker to
1478     disable NX protection.
1479     Passing "-z norelro -z lazy" to linker to disable second protection.
1480  2. In NDK jni/Android.mk, set the following
1481     LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
1482     LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
1483  see $NDK/docs/ANDROID-MK.html for details
1484
1485- Brand executables with .note.ABI-tag section
1486
1487  Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
1488  tools to act accordingly.  The structure member and values are defined as follow.
1489
1490    static const struct {
1491      int32_t	namesz;  /* = 4,  sizeof ("GNU") */
1492      int32_t	descsz;  /* = 6 * sizeof(int32_t) */
1493      int32_t	type;    /* = 1 */
1494      char	name[sizeof "GNU"];  /* = "GNU" */
1495      int32_t	os;      /* = 0 */
1496      int32_t	major;   /* = 2 */
1497      int32_t	minor;   /* = 6 */
1498      int32_t	teeny;   /* = 15 */
1499      int32_t	os_variant;  /* = 1 */
1500      int32_t	android_api; /* = 3, 4, 5, 8, 9, 14 */
1501    }
1502
1503
1504OTHER BUG FIXES:
1505---
1506
1507- Backport several patches to fix MIPS issues.
1508
1509  * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
1510    mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
1511
1512  * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
1513    ld segfaults when using --gc-sections
1514
1515  * http://sourceware.org/ml/binutils/2011-05/msg00198.html
1516    Refix MIPS GOT_PAGE counting
1517
1518  * Follow warning symbol link in mips_elf_count_got_symbols.
1519
1520  * Follow warning symbol link in mips_elf_allocate_lazy_stub.
1521
1522  * Move MIPS .dynamic to the data segment, so that it is writable.
1523    Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
1524
1525  * Remove -mno-shared as default in MIPS toolchain.  -fPIC (or -fpic if supported)
1526    is default for Android toolchain.  Without explicitly specifying one of
1527    -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
1528    which turns off PIC.  Fixed it not to add -mno-shared as default.
1529
1530- Fixed wrong package names in samples hello-jni and two-libs so tests project
1531  underneath can compile
1532
1533
1534OTHER CHANGES:
1535---
1536
1537- New binaries locations
1538
1539  * gdbserver is moved from toolchain/<arch-os-ver>/prebuilt/gdbserver to
1540    prebuilt/android-<arch>/gdbserver/gdbserver
1541
1542  * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
1543
1544  * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
1545    sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
1546    sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
1547
1548  * libbfd.a and libintl.a are moved from lib/ to lib32/
1549
1550- Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
1551    it describes are specpfic to BSD (ie. don't exist in Linux)
1552
1553- Various scripts to rebuild/test NDK toolchain
1554
1555  * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
1556    Win32 and Win64 executables.
1557
1558  * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
1559    that we need to build the NDK toolchain binaries.
1560
1561  * New build-host-gcc.sh and build-host-gdb.sh
1562
1563  * Add tests/check-release.sh to check the content of a given NDK installation directory,
1564    or an existing NDK package.
1565
1566  * Rewrite standalone tests: tests/standalone/run.sh
1567
1568
1569-------------------------------------------------------------------------------
1570android-ndk-r8
1571===
1572
1573IMPORTANT BUG FIXES:
1574---
1575
1576- Fixed a typo in GAbi++ implementation where result of dynamic_cast<D>(b)
1577  of base class object 'b' to derived class D is adjusted wrong
1578  (in the opposite direction from base class). See
1579  http://code.google.com/p/android/issues/detail?id=28721
1580
1581- Fixed an issue in make-standalone-toolchain.sh which fails to copy
1582  libsupc++.*.
1583
1584
1585IMPORTANT CHANGES:
1586---
1587
1588- Added support for the mips ABI.
1589
1590>  This release of the Android NDK contains support for 'mips' ABI.
1591  To generate machine runs on MIPS-based Android devices, please add 'mips' to
1592  APP_ABI definition in your Application.mk, or 'all' to generate binaries for
1593  all currently supported ABI.  See docs/CPU-MIPS.html for details.
1594
1595- You can build a standalone mips toolchain using the
1596  --toolchain=mipsel-linux-android-4.4.3 option when calling
1597  make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
1598
1599
1600OTHER BUG FIXES:
1601---
1602
1603- Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
1604  the user has redefined the SHELL environment variable (which can happen under
1605  the hood when installing a variety of development tools on Windows)
1606
1607
1608-------------------------------------------------------------------------------
1609android-ndk-r7c
1610===
1611
1612This release of the NDK includes an important fix for Tegra2-based devices,
1613and a few additional fixes and improvements:
1614
1615IMPORTANT BUG FIXES:
1616---
1617
1618- Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
1619  The files provided with NDK r7b where not configured properly, resulting
1620  in crashes on Tegra2-based devices and others when trying to use certain
1621  floating-point functions (e.g., cosf, sinf, expf).
1622
1623
1624IMPORTANT CHANGES:
1625---
1626
1627- Added support for custom output directories through the NDK_OUT
1628  environment variable. When defined, this variable is used to store all
1629  intermediate generated files, instead of $PROJECT_PATH/obj.
1630
1631  The variable is also recognized by ndk-gdb.
1632
1633- Added support for building modules with hundreds or even thousand of source
1634  files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
1635
1636  This change forces the NDK build system to put most linker or archiver
1637  options into list files, to work-around command-line length limitations
1638  (particularly on Windows). See docs/ANDROID-MK.html for details.
1639
1640
1641OTHER BUG FIXES:
1642---
1643
1644- Fixed android_getCpuCount() implementation in the cpufeatures helper
1645  library. The previous implementation only listed the cores that were
1646  active the first time the function was called. This behavior could
1647  provide results that were too low on devices that disable and enable
1648  cores dynamically.
1649
1650-------------------------------------------------------------------------------
1651android-ndk-r7b
1652===
1653
1654IMPORTANT BUG FIXES:
1655---
1656
1657- Updated <sys/atomics.h> to avoid correctness issues on some multi-core
1658  ARM-based devices. Rebuild your unmodified sources with this version of the
1659  NDK and this problem should completely be eliminated. For more details, read
1660  docs/ANDROID-ATOMICS.html.
1661
1662- Reverted to binutils 2.19 to try to fix debugging issues that
1663  appeared in NDK r7 (which switched to binutils 2.20.1).
1664
1665- Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
1666  of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
1667
1668- Fixed native Windows build (ndk-build.cmd). Other build modes were not
1669  affected. The fixes include:
1670
1671    * Removed an infinite loop / stack overflow bug that happened when trying
1672      to call ndk-build.cmd from a directory that was _not_ the top of your
1673      project path (e.g. any sub-directory of it).
1674
1675    * Fixed a problem where the auto-generated dependency files were ignored.
1676      This meant that updating a header didn't trigger recompilation of sources
1677      that included it.
1678
1679    * Fixed a problem where special characters in files or paths, other than
1680      spaces and quotes, were not correctly handled.
1681
1682- Fixed the standalone toolchain to generate proper binaries when using
1683  -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
1684  use -lgnustl_shared if you want to link against the shared library
1685  version or -lstdc++ for the static version.
1686
1687  See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
1688
1689- Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
1690  libsupc++.a while the file was at the right location.
1691
1692- Fixed cygwin C++ link when not using any specific C++ runtime through
1693  APP_STL.
1694
1695OTHER CHANGES:
1696---
1697
1698- When your application uses the GNU libstdc++ runtime, the compiler will
1699  no longer forcibly enable exceptions and RTTI. This change results in smaller
1700  code. If you need these features, you need to do either one of these:
1701
1702     1/ Enable exceptions and/or RTTI explicitly in your modules or
1703        Application.mk. (recommended)
1704
1705     2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
1706        in your Application.mk. See docs/APPLICATION-MK.html for more details.
1707
1708- ndk-gdb now works properly when your application has private services
1709  running in independent processes. It debugs the main application process,
1710  instead of the first process listed by 'ps', which is usually a service
1711  process.
1712
1713- Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
1714  and always compile certain source files (but not all) to 32-bit instructions.
1715
1716- stlport: Refresh the sources to match the Android platform version. This
1717  update fixes a few minor bugs:
1718
1719   - Fixed instantiation of an incomplete type.
1720   - Fixed minor == versus = typo
1721   - Use memmove instead of memcpy in string::assign
1722   - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
1723
1724  For complete details, see the commit log.
1725
1726- stlport: Removed 5 un-necessary static initializers from the library.
1727
1728- The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
1729  armeabi instead. This had no impact on correctness, but using the right
1730  ABI should provide for slightly better performance.
1731
1732- the 'cpu-features' helper library was updated to report three optional
1733  x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
1734  for more details.
1735
1736- docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
1737  of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
1738
1739- cygwin: ndk-build no longer creates an empty "NUL" file in the current
1740  directory when invoked.
1741
1742- cygwin: better automatic dependency detection. It previously didn't work
1743  properly in the following case:
1744
1745    - When the cygwin drive prefix was not /cygdrive
1746    - When using drive-less mounts, e.g. when Cygwin would translate /home
1747      to \\server\subdir instead of C:\Some\Dir.
1748
1749- cygwin: ndk-build does not try to use the native Windows tools under
1750  $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
1751  GNU Make.
1752
1753-------------------------------------------------------------------------------
1754android-ndk-r7
1755===
1756
1757IMPORTANT CHANGES:
1758---
1759
1760- New official NDK APIs for Android 4.0 (a.k.a. API level 14),
1761  which adds the following native features to the platform:
1762
1763     - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
1764       1.0.1 Standard.  New headers <OMXAL/OpenMAXAL.h> and
1765       <OMXAL/OpenMAXAL_Android.h> are provided to allow
1766       applications targeting this API level to perform multimedia output
1767       directly from native code using a new Android-specific buffer
1768       queue interface.  For more details, see docs/openmaxal/index.html
1769       and http://www.khronos.org/openmax/.
1770
1771     - Updated the native audio API based on the Khronos Group OpenSL ES
1772       1.0.1&#0153; Standard.  API Level 14 can now decode compressed
1773       audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
1774       docs/opensles/index.html and http://www.khronos.org/opensles/.
1775
1776- CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
1777  environment variable to 'ccache' (or the path to your ccache binary), as in:
1778
1779        export NDK_CCACHE=ccache
1780
1781  The NDK build system will automatically use it when compiling any source
1782  file. For more information about CCache, see http://ccache.samba.org
1783
1784- You can now set your APP_ABI to 'all' to indicate that you want to build
1785  your NDK modules for all the ABIs supported by your given NDK release.
1786
1787  This means that either one of these two lines in your Application.mk are
1788  equivalent with this release:
1789
1790        APP_ABI := all
1791        APP_ABI := armeabi armeabi-v7a x86
1792
1793  This also works if you define APP_ABI on the command-line, as in:
1794
1795        ndk-build APP_ABI=all
1796
1797  Which is a quick way to check that your project builds for all supported
1798  ABIs without changing its Application.mk file.
1799
1800- Shorter paths to source and object files used in build commands.
1801  When invoking $NDK/ndk-build from your project path, the paths to the
1802  source, object and binary files passed to the build commands will be
1803  significantly shorter now because they are now passed relative to the
1804  current directory.
1805
1806  This is useful when building projects with a lot of source files, to
1807  avoid limits on the maximum command line length supported by your host
1808  operating system.
1809
1810  The behaviour is unchanged if you invoked ndk-build from a sub-directory
1811  of your project tree, or if you define NDK_PROJECT_PATH to point to a
1812  specific directory.
1813
1814- New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
1815  features (RTTI or Exceptions) your module uses. This is especially handy
1816  if you have prebuilt modules that depend on them since this will ensure
1817  the final link will work correctly.
1818
1819  See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
1820
1821- WARNING: VERY EXPERIMENTAL!!
1822
1823     You can now build your NDK sources on Windows *without* Cygwin.
1824     Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
1825     command-line, when in your project path.
1826
1827     The script takes exactly the same arguments than the original
1828     ndk-build one.
1829
1830     Note that the Windows NDK package comes with its own prebuilt
1831     binaries for GNU Make, Awk and other tools required by the build,
1832     i.e. you shouldn't need to install anything else to get a working
1833     build system.
1834
1835     IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
1836                at the moment!
1837
1838     This feature is still very experimental, but feel free to try it
1839     and report issues on the public forum (android-ndk@googlegroups.com)
1840     or the public bug database (http://b.android.com).
1841
1842     Note that all samples and unit tests successfully compile with it.
1843
1844IMPORTANT BUG FIXES:
1845---
1846
1847- Imported shared libraries are now installed by default to the target
1848  installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
1849  defined in your Application.mk.
1850
1851  This means that if a top-level module "foo" imports a module "bar", then
1852  both libfoo.so and libbar.so will be copied to the install location.
1853
1854  Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
1855  too.
1856
1857  If you define APP_MODULES explicitly, the behaviour is unchanged.
1858
1859- Static library imports are now properly transitive. If top-level module
1860  'foo' imports static library 'bar' which imports static library 'zoo',
1861  the libfoo.so will now be linked against both libbar.a and libzoo.a.
1862
1863- ndk-gdb now works correctly for activities with multiple categories
1864  in their MAIN intent filters.
1865
1866OTHER CHANGES:
1867---
1868
1869- docs/STABLE-APIS.html: Added missing documentation listing EGL
1870  as a supported stable API, starting from API level 9.
1871
1872- Add a new C++ support runtime named "gabi++". More details about it
1873  are available in the updated docs/CPLUSPLUS-SUPPORT.html.
1874
1875- The STLport C++ runtimes now support RTTI (no exceptions yet though).
1876
1877- Add a new C++ support runtime named "gnustl_shared" corresponding to the
1878  shared library version of GNU libstdc++ v3 (GPLv3 license). See more
1879  info at docs/CPLUSPLUS-SUPPORT.html
1880
1881- You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
1882
1883        LOCAL_CPP_EXTENSION := .cpp .cxx
1884
1885  To compile both foo.cpp and bar.cxx as C++ sources.
1886
1887- Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
1888  Note that this does *not* change the NDK ABIs for the corresponding
1889  libraries, since each extension must be probed at runtime by the client
1890  application.
1891
1892  Which extensions are available depends on your actual device (and GPU
1893  drivers), not the version of the platform it provides.
1894
1895  The header changes simply add new constants and types to make it easier
1896  to use the extensions why they have been probed with eglGetProcAddress() or
1897  glGetProcAddress(). Here is the list of newly supported extensions:
1898
1899    GLES 1.x
1900    --------
1901    GL_OES_vertex_array_object
1902    GL_OES_EGL_image_external
1903    GL_APPLE_texture_2D_limited_npot
1904    GL_EXT_blend_minmax
1905    GL_EXT_discard_framebuffer
1906    GL_EXT_multi_draw_arrays
1907    GL_EXT_read_format_bgra
1908    GL_EXT_texture_filter_anisotropic
1909    GL_EXT_texture_format_BGRA8888
1910    GL_EXT_texture_lod_bias
1911    GL_IMG_read_format
1912    GL_IMG_texture_compression_pvrtc
1913    GL_IMG_texture_env_enhanced_fixed_function
1914    GL_IMG_user_clip_plane
1915    GL_IMG_multisampled_render_to_texture
1916    GL_NV_fence
1917    GL_QCOM_driver_control
1918    GL_QCOM_extended_get
1919    GL_QCOM_extended_get2
1920    GL_QCOM_perfmon_global_mode
1921    GL_QCOM_writeonly_rendering
1922    GL_QCOM_tiled_rendering
1923
1924    GLES 2.0
1925    --------
1926    GL_OES_element_index_uint
1927    GL_OES_get_program_binary
1928    GL_OES_mapbuffer
1929    GL_OES_packed_depth_stencil
1930    GL_OES_texture_3D
1931    GL_OES_texture_float
1932    GL_OES_texture_float_linear
1933    GL_OES_texture_half_float_linear
1934    GL_OES_texture_npot
1935    GL_OES_vertex_array_object
1936    GL_OES_EGL_image_external
1937    GL_AMD_program_binary_Z400
1938    GL_EXT_blend_minmax
1939    GL_EXT_discard_framebuffer
1940    GL_EXT_multi_draw_arrays
1941    GL_EXT_read_format_bgra
1942    GL_EXT_texture_format_BGRA8888
1943    GL_EXT_texture_compression_dxt1
1944    GL_IMG_program_binary
1945    GL_IMG_read_format
1946    GL_IMG_shader_binary
1947    GL_IMG_texture_compression_pvrtc
1948    GL_IMG_multisampled_render_to_texture
1949    GL_NV_coverage_sample
1950    GL_NV_depth_nonlinear
1951    GL_QCOM_extended_get
1952    GL_QCOM_extended_get2
1953    GL_QCOM_writeonly_rendering
1954    GL_QCOM_tiled_rendering
1955
1956    EGL:
1957    ----
1958    EGL_ANDROID_recordable
1959    EGL_NV_system_time
1960
1961- docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
1962  should be 9, not 8 for native activities.
1963
1964- removed many unwanted exported symbols from the link-time shared
1965  system libraries provided by the NDK. This ensures that code generated
1966  with the standalone toolchain doesn't risk to accidentally depend
1967  on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
1968  each time the toolchain used to build the platform is changed).
1969
1970- download-toolchain-sources.sh: Script was updated to download the toolchain
1971  sources from android.googlesource.com, the new location for AOSP servers.
1972
1973-------------------------------------------------------------------------------
1974android-ndk-r6b
1975===
1976
1977This is a bug-fix release for NDK r6, no new features are provided.
1978
1979IMPORTANT BUG FIXES:
1980---
1981
1982- Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
1983
1984- Fixed location of prebuilt STLport binaries in the NDK release package.
1985  (A bug in the packaging script placed them in the wrong location).
1986
1987- Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
1988
1989- Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
1990  proper GNU libstdc++ binaries to the right location).
1991
1992- Fixed standalone toolchain linker warnings about missing definition and
1993  size for '__dso_handle' symbol (arm only).
1994
1995- Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
1996  see http://code.google.com/p/android/issues/detail?id=18540
1997
1998- Fixed the definitions of ptrdiff_t and size_t in x86-specific system
1999  when used with the x86 standalone toolchain.
2000
2001-------------------------------------------------------------------------------
2002android-ndk-r6
2003===
2004
2005IMPORTANT CHANGES:
2006---
2007
2008- Official support for the x86 ABI.
2009
2010  This release of the Android NDK now provides support for the 'x86' ABI.
2011  This allows you to generate machine code that runs on future x86-based
2012  Android devices.
2013
2014  Note that by default, code is still generated for ARM-based devices.
2015  You can however add 'x86' to your APP_ABI definition in your
2016  Application.mk. For example, the following line instructs ndk-build
2017  to build your code for three distinct ABIs:
2018
2019    APP_ABI := armeabi armeabi-v7a x86
2020
2021  Unless you rely on ARM-based assembly sources, you shouldn't need to touch
2022  your Android.mk files to build x86 machine code.
2023
2024  For all details regarding x86 support, please read the new documentation
2025  file named docs/CPU-X86.html.
2026
2027  Don't hesitate to file NDK bugs related to x86 at http://b.android.com
2028
2029- You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
2030  option when calling make-standalone-toolchain.sh. See
2031  docs/STANDALONE-TOOLCHAIN.html for more details.
2032
2033- The new 'ndk-stack' tool can be used to translate stack traces
2034  (as reported by adb logcat in case of crash in native code) into
2035  something more readable, i.e. containing function / source file /
2036  line number information corresponding to each stack frame.
2037
2038  For more information and usage example, see the new documentation
2039  file docs/NDK-STACK.html
2040
2041OTHER FIXES &amp; CHANGES:
2042---
2043
2044- The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
2045  finally removed from the NDK distribution.
2046
2047- Support a project.properties file in the application's directory
2048  instead of default.properties. This is in preparation for future SDK Tools
2049  changes.
2050
2051-------------------------------------------------------------------------------
2052android-ndk-r5c
2053===
2054
2055This release fixes a few bugs in r5b. There are no new features.
2056
2057IMPORTANT BUG FIXES:
2058---
2059
2060- Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
2061  with the new toolchain. Also properly document this variable in
2062  docs/ANDROID-MK.html.
2063
2064- Fixed a bug where code linked against gnustl_static would crash when run
2065  on Android platform releases older than 2.2.
2066
2067- <android/input.h>: Two functions in this header file, introduced
2068  by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
2069  this breaks the source API, the binary interface to the system is
2070  unchanged.
2071
2072  The functions missing a third 'history_index' parameter. They correct
2073  definition is now:
2074
2075      float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
2076                                           size_t pointer_index,
2077                                           size_t history_index);
2078
2079      float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
2080                                           size_t pointer_index,
2081                                           size_t history_index);
2082
2083- Updated the android-9 C library arm binary to correctly expose at link time
2084  new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
2085
2086- Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
2087  the Motorola Xoom).
2088
2089OTHER FIXES &amp; CHANGES:
2090---
2091
2092- Object files are now always linked in the order they appear in
2093  LOCAL_SRC_FILES. This was not the case previously because the files
2094  were grouped by source extensions instead.
2095
2096- download-toolchain-sources.sh: Fixed a silly bug that prevented the
2097  --git-date option to work properly when downloading the master branch.
2098
2099- Fix an issue where a module could import itself, resulting in an infinite
2100  loop in GNU Make.
2101
2102- When import-module fails, it now prints the list of directories
2103  that were searched. This is useful to check that the NDK_MODULE_PATH
2104  definition used by the build system is correct.
2105
2106- When import-module succeeds, it now prints the directory where the module
2107  was found to the log (visible with NDK_LOG=1).
2108
2109- <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
2110  android-9 API level and higher.
2111
2112- Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
2113  fail (typo in build/core/build-binary.mk)
2114
2115- Fixed a bug that prevented the compilation of .s assembly files
2116  (.S files were ok).
2117
2118- Speed-up the build of debuggable applications when there is a very
2119  large number of include directories in a project.
2120
2121- ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
2122
2123- ndk-build: Fix a rare bug that appeared when trying to perform parallel
2124  builds of debuggable projects.
2125
2126
2127-------------------------------------------------------------------------------
2128android-ndk-r5b
2129===
2130
2131This release fixes a few bugs in r5. There are no new features.
2132
2133IMPORTANT BUG FIXES:
2134---
2135
2136- Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
2137  The previous binary generated invalid thumb instruction sequences when
2138  dealing with signed chars. This problem was first reported on the
2139  android-ndk forum and fixed by the following change in the toolchain
2140  sources:
2141
2142        https://review.source.android.com/#change,19474
2143
2144- docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
2145  "gnustl_static" value for APP_STL, that allows you to link against
2146  a static library version of GNU libstdc++.
2147
2148- ndk-build: Fix a bug that created inconsistent dependency files when a
2149  compilation error occurred on Windows, preventing building properly after
2150  the error was fixed in the source code.
2151
2152- ndk-build: Fix a Cygwin-specific bug where using very short paths for
2153  the Android NDK installation or the project path could lead to the
2154  generation of invalid dependency files, making incremental builds
2155  impossible.
2156
2157- Fix a typo that prevented the cpufeatures library to work correctly
2158  with the new NDK toolchain.
2159
2160- Linux toolchain binaries now run on Ubuntu 8.04 or higher.
2161  More specifically, the r5 binaries did require GLibc 2.11 on the host
2162  system, and refused to run with previous releases due to an ABI mismatch
2163  in the GNU C Library. The r5b binaries are generated with a special
2164  toolchain that instead targets GLibc 2.7 or higher.
2165
2166- GNU libstdc++ will not crash anymore when printing floating-point values
2167  through i/o streams.
2168
2169OTHER FIXES &amp; CHANGES:
2170
2171- ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
2172  from GNU Make for each and every source or object file. This was a problem
2173  for users with very large source trees.
2174
2175  In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
2176  environment to use 'cygpath -m' as usual.
2177
2178  Also, if 'cygpath' is not in your path, completely ignore it
2179  (seems to be enough to run the NDK under MSys).
2180
2181- ndk-build: Handle installation paths containing spaces when checking
2182  cygwin installation. Before that, the script complained that the user
2183  was using an incorrect version of GNU Make (even if he had the right one).
2184
2185- Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
2186  it contained multiple directories separated with ":"
2187
2188- prebuilt-common.sh: Make the script check the compiler directly for 64-bit
2189  generated machine code, instead of relying on the host tag. That should
2190  allow the 32-bit toolchain to rebuild properly on Snow Leopard.
2191
2192- prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
2193  using a 32-bit host toolchain.
2194
2195- <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN
2196- <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
2197  and IN6_IS_ADDR_MC_GLOBAL.
2198
2199- <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation
2200  with -std=c99. See https://review.source.android.com/#change,20076
2201
2202- standalone toolchain: The -fpic flag is now the default for the
2203  arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
2204  degradation when compared to the old android-eabi configuration.
2205
2206  This only affects users of the standalone toolchain. The NDK build script
2207  always enforced -fpic implicitly.
2208
2209-------------------------------------------------------------------------------
2210android-ndk-r5
2211===
2212
2213IMPORTANT BUG FIXES:
2214---
2215
2216- Allow dlclose() to properly call static C++ destructors when unloading
2217  a shared library. This requires changes in both the C library and the
2218  build system. IMPORTANT: This feature is only available for API level 9.
2219
2220- Fix packaging error for system libraries of level 5 and 8. The libraries
2221  bundled with the NDK and used at link time were not the correct version,
2222  and this prevented linking against certain symbols appropriately.
2223
2224- ndk-gdb: do not start activity unless --start or --launch is used.
2225  (the documentation was correct, the implementation wrong)
2226
2227- The system headers for all API levels have been cleaned up and will
2228  not provide the declarations of functions that are not available in
2229  the corresponding system libraries.
2230
2231IMPORTANT CHANGES:
2232---
2233
2234- Support for API level 9, (a.k.a. Android 2.3) which adds the following
2235  native features to the platform:
2236
2237     - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
2238       New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h>
2239       are provided to allow applications targeting this API level to perform
2240       audio input, output and processing directly from native code.
2241
2242     - Native activity support, i.e. the ability to build applications that
2243       are coded entirely in C or C++. More precisely, such applications still
2244       run inside a VM, and will have to access most of the platform's features
2245       using JNI (i.e. native code calling VM methods). However, this also
2246       comes with a series of headers and libraries to implement the following
2247       directly from native code:
2248
2249          - activity lifecycle management.
2250          - user input handling (touch, keyboard, trackball, ...).
2251          - window management (including accessing the pixel buffer).
2252          - sensor listeners (e.g. accelerometer, compass, ...).
2253          - hardware configuration management.
2254          - easily reading assets out of an APK from native code.
2255          - access to the storage manager, a new feature of Android X.X
2256            that allows one to provide Opaque Binary Objects containing
2257            large amounts of data outside of the APK.
2258
2259       See the documentation in docs/STABLE-APIS.html for more details.
2260
2261       Note that most of these new features are targeted at game developers.
2262
2263- Improved gdbserver binary to allow debugging _threaded_ programs properly
2264  with ndk-gdb (the previous binary could only set breakpoints on the main
2265  thread).
2266
2267  IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
2268
2269  The root cause of the problem is a platform bug that was only fixed in
2270  2.3. If you try to debug on a previous platform, the gdbserver binary
2271  will only be able to set breakpoints on the main thread.
2272
2273  For more information, see the specific section in docs/NDK-GDB.html.
2274
2275- Easier debuggable builds: just invoke ndk-build while defining the
2276  NDK_DEBUG variable to 1, as in:
2277
2278      $NDK/ndk-build NDK_DEBUG=1
2279
2280  This will have the same result that setting the android:debuggable="true"
2281  in the <application> element of your AndroidManifest.xml file. See the
2282  file docs/NDK-BUILD.html for more details.
2283
2284  Note that you will need to use the SDKr8 build tools to use this feature
2285  properly!
2286
2287- Refresh of system C++ headers:
2288
2289     - Headers have been moved out of the platform directory hierarchy.
2290       This is to prevent conflicts with other STLs like STLport or the
2291       GNU libstdc++ which provide their own version of the headers, but
2292       does not affect your builds.
2293
2294     - The list of headers has grown to include the following:
2295
2296            cassert, cctype, cerrno, cfloat, climits, cmath,
2297            csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
2298            cstring, ctime, cwchar, new, typeinfo, utility
2299
2300    Note that they still correspond to our minimal C++ runtime, no new feature
2301    was introduced here.
2302
2303- Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
2304  all details (and limitations).
2305
2306- STLport implementation: Add sources and prebuilt binaries for a port of
2307  the STLport C++ Standard Library (www.stlport.org), and an easy way to use
2308  it at build time by defining APP_STL in your Application.mk. See
2309  docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
2310
2311- GNU libstdc++ implementation: Available as a static library that you can
2312  select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
2313  for all details.
2314
2315- Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
2316  PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
2317  file named docs/PREBUILTS.html for explanations and usage examples.
2318
2319- Support for module exports: A module can now define a set of compiler or
2320  linker flags that will be automatically 'imported' by any other module that
2321  depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
2322
2323  This is achieved with the help of new Android.mk variables named
2324  LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
2325  LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
2326  a 'samples/module-exports' for a sample project that uses this.
2327
2328- Add support to specify a different file name for generated files, through
2329  the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
2330  example.
2331
2332- Add support for module imports, through the NDK_MODULE_PATH environment
2333  variable and the new 'import-module' function. This allows you to avoid
2334  hard-coding the path of third-party modules into your project files.
2335
2336  See docs/IMPORT-MODULE.html for details.
2337
2338- Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
2339  easier. Also fixes an issue that prevented clean parallel builds of
2340  debuggable applications to work correctly. This fixes an error message that
2341  said:
2342
2343      /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory
2344
2345  When doing a "ndk-build -j<number>", with <number> bigger than 1.
2346
2347- Add support for assembly-level source filtering. See the description of
2348  LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
2349  for certain kinds of obfuscation tasks.
2350
2351- This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
2352  which provides many benefits, including:
2353
2354     - Better code generation than the previous one (gcc-4.4.0)
2355     - On Windows, the binaries do not depend on Cygwin anymore.
2356     - The ability to use it as a stand-alone cross-compiler
2357       (see docs/STANDALONE-TOOLCHAIN.html for all details).
2358
2359  The binaries for gcc-4.4.0 are still provided for backwards compatibility.
2360  Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
2361  Note that it is now deprecated and will be removed in a future NDK release.
2362
2363  IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
2364             STLport and GNU libstdc++.
2365
2366  The binaries for the already-deprecated gcc-4.2.1 have been removed.
2367
2368- The 'cpufeatures' library has been updated to provide better architecture
2369  and features detection (including a work-around for buggy ARMv6 kernels
2370  which report an architecture version of 7).
2371
2372  The library is now also available as an import module, to simplify its
2373  usage in your build scripts. See the updated docs/CPU-FEATURES.html file
2374  for details.
2375
2376  NOTE: Please update your Android.mk to use module imports as soon as
2377        possible. The location $NDK/source/cpufeatures/ is deprecated
2378        and will be removed in a future NDK release. Avoid referencing
2379        it directly in your build scripts!
2380
2381OTHER FIXES AND CHANGES:
2382---
2383
2384- Reduced the size of generated binaries by using --strip-unneeded
2385  instead of --strip-debug. This gets rid of mor symbol table entries
2386  in release shared libraries and executables, without impacting
2387  runtime execution.
2388
2389- Fix bad automatic dependency tracking when using multiple source
2390  sub-directories.
2391
2392- The path to system headers is now included last in the compilation command
2393  line. This prevents conflicts with source code that define their own headers
2394  with similar names (e.g. a custom "err.h" was ignored, because the system
2395  <err.h> was used instead).
2396
2397- Update documentation for 'my-dir' function to explain that, due to the
2398  way GNU Make works, it really returns the path of the last included
2399  Makefile (instead of the current one). Also provide examples on how
2400  to deal with it.
2401
2402- make-release.sh: Now has an --out-dir=<path> option to specify the
2403  output directory where the packages are going to be copied. Also
2404  ensure that generated packages have go+r permissions.
2405
2406- ndk-build will now properly escape arguments. This means that something
2407  like this:
2408
2409     ndk-build  MY_CFLAGS="-DFOO -DBAR"
2410
2411  will now work correctly.
2412
2413- Add --git-http option to download-toolchain-sources.sh and
2414  rebuild-all-prebuilt.sh in order to download sources from
2415  android.git.kernel.org through HTTP.
2416
2417- ndk-gdb: properly launch activities for which name does not contain any dot.
2418
2419- ndk-gdb: add --delay=<timeout> option to specify a delay in seconds
2420  between activity launch and gdbserver attach. This is needed because certain
2421  activities can take a long time to properly launch. The default delay is
2422  also increased to 2 seconds (instead of 1).
2423
2424- build/tools/build-gcc.sh: copy the sysroot to the build directory. This
2425  avoids the generated toolchain binaries from hard-coding host build paths.
2426
2427- Platform files are now under $NDK/platforms instead of $NDK/build/platforms
2428
2429- Toolchain files are now under $NDK/toolchains instead of
2430  $NDK/build/toolchains and $NDK/build/prebuilt.
2431
2432- Release and debug objects are stored under two different directories now
2433  (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This
2434  prevents rebuilding *everything* when you switch between these two modes,
2435  which can be a real time-saver for complex projects.
2436
2437- Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
2438  when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
2439
2440-------------------------------------------------------------------------------
2441android-ndk-r4b
2442===
2443
2444This release fixes a few bugs in r4 scripts. There are no new features.
2445
2446OTHER FIXES &amp; CHANGES:
2447---
2448
2449- build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
2450  Fix the script (and others in the same directory) to do that properly.
2451
2452- ndk-gdb: check the target device's API level, and dump an error message if
2453  it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
2454  remove control characters like '\r' from adb shell's output. Also fix
2455  script to work properly with OS X's BSD awk.
2456
2457- ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
2458  to look for jni/Android.mk if no manifest is found. If you don't use this,
2459  you can also define NDK_PROJECT_PATH to point to your tree.
2460
2461  Also, on Windows, check that a Cygwin-compatible make executable is being
2462  used, and dump a readable help message to solve the issue if this is not
2463  the case.
2464
2465- Place generated binaries under $PROJECT_PATH/obj/ instead of
2466  $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
2467  by the JDT, resulting in the inability to properly load symbol versions
2468  of the shared libraries when running ndk-gdb.
2469
2470- Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
2471  Previous behaviour was to silently ignore them.
2472
2473- Set the optimization mode to 'debug' automatically if the manifest sets
2474  android:debuggable to 'true'. You can override this by using
2475  'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
2476  your LOCAL_CFLAGS.
2477
2478  Note that even in release mode, the NDK build scripts will produce
2479  binaries with symbols under obj/local/<abi>/ that will be used for
2480  debugging with gdb. However, the debugger will have a harder time to
2481  print proper local variable values that have been optimized out or
2482  even set breakpoints properly.
2483
2484-------------------------------------------------------------------------------
2485android-ndk-r4
2486===
2487
2488IMPORTANT BUG FIXES:
2489---
2490
2491- The <fenv.h> header was not placed in the correct location and could not
2492  be found by normal builds.
2493
2494IMPORTANT CHANGES:
2495---
2496
2497- On Windows, Cygwin 1.7 or higher is now required. The NDK will not
2498  work properly with Cygwin 1.5 which is now officially obsolete
2499  anyway.
2500
2501- Simplified build system: You no longer need to run build/host-setup.sh
2502  or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
2503  new 'ndk-build' script from your application's project directory, or
2504  one of its sub-directories.
2505
2506  See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
2507
2508  NOTE: For compatibility purpose, you can still define projects
2509        through $NDK_ROOT/apps/<name> though.
2510
2511        However, not that sample applications have moved from
2512        'apps/<name>/project' to 'samples/<name>' and now must
2513        be built with 'ndk-build'. The source code of pre-existing
2514        samples didn't change though.
2515
2516- Easy native debugging support when running debuggable applications
2517  on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
2518  See docs/NDK-GDB.html for details.
2519
2520- Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
2521  corresponding to ARMv7-a class devices.
2522
2523  Note that by default, the NDK will still generate machine code for the old
2524  'armeabi' ABI (ARMv5TE based) which is supported by all official Android
2525  system images to date.
2526
2527  You will need to define APP_ABI in your Application.mk file to change this.
2528  See docs/APPLICATION-MK.html
2529
2530  More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
2531
2532- A small static library named 'cpufeatures' is provided with source code
2533  and can be used at runtime to determine the CPU features supported by the
2534  target device. It should run on all Android platforms, starting from 1.5.
2535
2536  For more information, see docs/CPU-FEATURES.html
2537
2538- Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
2539  extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
2540  the '.neon' suffix when listing source files.
2541
2542  Neon is an *optional* instruction set extension, and not all Android ARMv7
2543  devices will support it. You will need to use the 'cpufeatures' library to
2544  determine if such code can be used at runtime, and provide alternate code
2545  paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
2546  platforms.
2547
2548  For more information, see docs/CPU-ARM-NEON.html
2549
2550- Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
2551  and NEON intrinsics and build support.
2552
2553- Added <android/bitmap.h>, a new stable API available from android-8
2554  (a.k.a. Android 2.2) to reliably access the pixel buffer of an
2555  android.graphics.Bitmap object from native code. See docs/STABLE-API.html
2556  and the new sample program under 'samples/bitmap-plasma' for details
2557  and usage example.
2558
2559- Support the NX (No Execute) security feature, where special sections
2560  are added to the generated shared libraries to instruct the kernel
2561  that code shall not be executed from the heap and stack by default.
2562
2563  See docs/ANDROID-MK.html to see how to disable this, plus reference
2564  links for more information.
2565
2566OTHER FIXES AND CHANGES:
2567---
2568
2569- support the .s extension for raw assembly sources (.S is already supported
2570  but the input files are parsed by the C-preprocessor before being sent to
2571  the assembler).
2572
2573- build/host-setup.sh has been removed. There is no need for a 'setup' step
2574  when using the NDK for the first time. All host-specific autodetection and
2575  basic tool sanity checking have been moved to the build scripts themselves.
2576
2577- APP_MODULES in Application.mk is now optional. If not defined, the NDK
2578  will simply build _all_ the modules that are declared from your Android.mk.
2579
2580  You can still use APP_MODULES to restrict the set of modules you want to
2581  build. Note that the NDK now computes the transitive dependencies of these
2582  modules for you now. See docs/APPLICATION-MK.html for details.
2583
2584- docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
2585  (libdl.so). It is actually supported by all API levels.
2586
2587- build/tools/download-toolchain-sources.sh: Use 'master' branch by default
2588  instead of the 'eclair' one.
2589
2590- build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
2591  them. This is primarily to ease development. All you need to do is put a patch
2592  under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied
2593  with 'patch -p1' into the <foo> directory of the unpacked toolchain sources
2594  before the configure step.
2595
2596- docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
2597
2598- build/core/mkdeps.sh: Removed obsolete script.
2599
2600- the NDK build script now only parses the Application.mk and Android.mk of
2601  the applications listed by APP. The error messages when APP is empty or
2602  malformed have also been improved.
2603
2604- removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
2605  warning when building with GCC 4.4.0 for ARM.
2606
2607- C Library header fixes:
2608
2609    For all platforms:
2610
2611        - <arpa/inet.h>: no longer includes <netinet/in6.h>.
2612        - <ctype.h>: better inlining with -ansi option.
2613        - <mntent.h>: add missing include for <stdio.h>.
2614        - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any +
2615          in6addr_loopback.
2616        - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
2617          IN6ADDR_ANY_INIT, ipv6mr_interface.
2618        - <sys/epoll.h>: add missing C++ inclusion guards.
2619        - <sys/resource.h>: add missing rlim_t declaration.
2620        - <sys/system_properties.h>: add missing C++ inclusion guards.
2621        - <time64.h>: add missing C++ inclusion guards.
2622        - <netdb.h>: move h_errno declaration inside C++ inclusion guards.
2623
2624- C Library changes:
2625
2626    For android-8 (a.k.a. Android 2.2):
2627
2628        - <dlfcn.h>: add DL_info and dladdr().
2629        - <err.h>: add err(), warn() and other variants.
2630        - <regex.h>, <fts.h>, <sys/queue.h>: added
2631        - <pthread.h>: add pthread_condattr_t
2632        - <sched.h>: added proper clone() declaration (and implementation).
2633        - <signal.h>: added killpg().
2634        - <stdio.h>: add fdprintf() and vfdprintf().
2635        - <stdlib.h>: fix ptsname_r() signature in declaration. previous
2636          implementation was broken anyway.
2637        - <unistd.h>: add getusershell(), setusershell(), endusershell(),
2638          ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
2639          (now returns int).
2640        - <wchar.h>: add fake mbstowcs() and wcstombs().
2641
2642  More details available under docs/system/libc/CHANGES.html
2643
2644-------------------------------------------------------------------------------
2645android-ndk-r3
2646===
2647
2648IMPORTANT BUG FIXES:
2649---
2650
2651- Fix build/host-setup.sh to execute as a Bourne shell script (again)
2652
2653- Make target shared libraries portable to systems that don't use the exact
2654  same toolchain. This is needed due to differences in libgcc.a implementations
2655  between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
2656  code doesn't depend on helper functions provided by the Android platform
2657  runtime.
2658
2659
2660IMPORTANT CHANGES:
2661---
2662
2663- GCC 4.4.0 is now used by default by the NDK. It generates better code than
2664  GCC 4.2.1, which was used in previous releases. However, the compiler's C++
2665  frontend is also a lot more pedantic regarding certain template constructs
2666  and will even refuse to build some of them.
2667
2668  For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
2669  you can force its usage by defining NDK_TOOLCHAIN in your environment to
2670  the value 'arm-eabi-4.2.1'. For example:
2671
2672        export NDK_TOOLCHAIN=arm-eabi-4.2.1
2673        make APP=hello-jni
2674
2675  Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
2676  recommend switching to 4.2.1 *only* if you encounter compilation problems
2677  with 4.4.0.
2678
2679  The 4.2.1 prebuilt binaries will probably be removed from a future release
2680  of the Android NDK, we thus *strongly* invite you to fix your code if such
2681  problems happen.
2682
2683- Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
2684  reflect Android 2.0 (previously the Eclair branch). This is merely a copy
2685  of android-4 that also includes headers and libraries for OpenGL ES 2.0.
2686
2687  See the sample named "hello-gl2" for a *very* basic demonstration. Note that
2688  OpenGL ES 2.0 is currently *not* available from Java, and must be used
2689  through native code exclusively.
2690
2691  IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
2692             time. Running/testing any native code that depends on it thus
2693             requires a real device.
2694
2695- The NDK build script will now remove installed binaries from the application
2696  project's path before starting the build. This ensures that:
2697
2698  - if the build fails for some reason, a stale/obsolete file is not left in
2699    your application project tree by mistake.
2700
2701  - if you change the target ABI, a stale/obsolete file is not left into the
2702    folder corresponding to the old ABI.
2703
2704
2705- Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
2706  issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
2707  2.0 on specific devices only, need for <uses-feature> tag in manifest).
2708
2709
2710OTHER FIXES AND CHANGES:
2711---
2712
2713- Actually use the awk version detected by host-setup.sh during the build.
2714
2715- Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
2716  to 'true', just like the documentation says it works. Also fix a typo
2717  in CLEAR_VARS that prevented this variable from being cleared properly.
2718
2719- Simplified build/tools/make-release.sh, the --prebuilt-dir option is
2720  gone, and --help will dump a clearer description of expected options
2721  and input files.
2722
2723- Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
2724  package a new experimental NDK package archive from the current source tree
2725  plus the toolchain binaries of an existing NDK release package. E.g.:
2726
2727    build/tools/make-release.sh \
2728       --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
2729
2730  will generate a new NDK package in /tmp/ndk-release that contains the most
2731  up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
2732  are not in the git repository).
2733
2734  Also added the --no-git option to collect all sources from the current
2735  NDK root directory, instead of the list given by 'git ls-files'. This can
2736  be useful if you don't want to checkout the whole 'platform/development'
2737  project from repo and still work on the NDK.
2738
2739  This change is to help people easily package experimental NDK releases to
2740  test and distribute fixes and improvements.
2741
2742- Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
2743  build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
2744
2745- Remove bash-ism from build/tools/build-ndk-sysroot.sh
2746
2747- Refresh C library headers for all platforms:
2748
2749    - make <endian.h> simply include <sys/endian.h>
2750    - make <stdint.h> properly declare 64-bit integer types with a C99 compiler
2751    - add missing <sys/types.h> to <strings.h>
2752    - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
2753      st_ctimensec) to <stat.h>
2754    - add missing declaration for tzset() in <time.h>
2755
2756- Added build/tools/download-toolchain-sources.sh, a script that allows you
2757  to download the toolchain sources from the official open-source repository
2758  at android.git.kernel.org and nicely package them into a tarball that can
2759  later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
2760  binaries for your system.
2761
2762- Updated build/tools/build-toolchain.sh to support the tarballs generated
2763  by download-toolchain-sources.sh with the --package=<file> option. This
2764  also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
2765  gcc 4.4.0.
2766
2767-------------------------------------------------------------------------------
2768android-ndk-1.6_r1
2769===
2770
2771IMPORTANT BUG FIXES:
2772---
2773
2774- Fix build/host-setup.sh to:
2775  * execute as a Bourne shell script
2776  * remove unused host gcc dependency
2777  * improve Windows host auto-detection
2778  * add GNU Make version check
2779  * add Nawk/Gawk check
2780  * ensure that the script is run from $NDKROOT as build/host-setup.sh
2781  * add --help, --verbose, --no-awk-check and --no-make-check options
2782
2783- Properly add sysroot library search path at build time. This makes a line
2784  in Android.mk like:
2785
2786     LOCAL_LDLIBS := -lz
2787
2788  Actually work correctly, instead of having the linker complaining that it
2789  could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
2790  in $(CLEAR_VARS) script.
2791
2792
2793IMPORTANT CHANGES:
2794---
2795
2796- The 'sources' directory is gone. The NDK build system now looks for
2797  $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
2798  the new APP_BUILD_SCRIPT variable in Application.mk
2799
2800  For example, the 'hello-jni' sample uses the following files:
2801
2802    apps/hello-jni/project/jni/Android.mk
2803    apps/hello-jni/project/jni/hello-jni.c
2804
2805  The 'apps/<name>' directory is still needed in this release though.
2806
2807- Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
2808  system. This means that:
2809
2810    - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
2811    - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
2812    - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
2813      (will disappear in next release)
2814
2815  Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
2816
2817- Rename build/platforms/android-1.5 to build/platforms/android-3 to match
2818  the Android API level instead of the marketing speak.
2819
2820  Also add a new build/platforms/android-4, and make the build system select
2821  which platform to use based on the content of the project file named
2822  $(APP_PROJECT_PATH)/default.properties.
2823
2824- Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
2825  (NOTE: they are *not* available for android-3)
2826
2827  Also provide a small port of the "San Angeles Observation" demo to show
2828  how to make a simple Android application that uses them.
2829
2830
2831OTHER FIXES AND CHANGES
2832---
2833
2834- Ensure that the __ANDROID__ macro is always defined when building code
2835  with the NDK. Normally, the macro must be defined by the toolchain
2836  automatically to indicate that you're targeting the Android runtime.
2837
2838  This works for the new arm-linux-androideabi toolchain, but there is
2839  a bug in the way we built the arm-eabi one, so add the flag manually
2840  through the NDK build script for it.
2841
2842  Note that the ANDROID macro, is now deprecated. While it is still defined
2843  by the NDK, you should modify your code to test against __ANDROID__ instead!
2844
2845- Generate thumb binaries by default.
2846
2847- Add support for LOCAL_ARM_MODE in Android.mk.
2848
2849- Add support for the '.arm' suffix in source file names to force the
2850  compilation of a single source in ARM (32-bit) mode.
2851
2852- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
2853
2854- Add support for LOCAL_C_INCLUDES in Android.mk
2855
2856- Fix compilation of assembler files (e.g. foo.S)
2857
2858-------------------------------------------------------------------------------
2859android-ndk-1.5_r1 released.
2860===
2861