• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html><body><pre>Android NDK ChangeLog:
2
3-------------------------------------------------------------------------------
4android-ndk-r8b
5
6IMPORTANT BUG FIXES:
7
8- Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
9  and for static libraries.  List file generation is sped up, and it is no longer
10  regenerated and causes whole project to be rebuilt every time.
11
12- Fixed several issues in ndk-gdb
13
14    * to pass flags "-e", "-d", "-s" to adb more consistently
15
16    * to accept device serial name containing space
17
18    * to also pull /system/bin/link, so gdb on host can set a breakpoint in
19      __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
20      when dlopen() is called)
21
22- Fixed "ndk-build clean" in windows which failed to remove ./libs/*/lib*.so
23
24- Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
25
26- Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
27
28- Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
29
30  Fixed __start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
31  "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
32  address and crash the program or do wield things.  With "call", return address is pushed
33  on stack and unwinding stops correctly at _start.  Note that __libc_init never returns, so
34  this fix wonʼt affect normal program execution.  But just in case it "does" return,
35  jump to address 0 and halt.
36
37
38IMPORTANT CHANGES:
39
40- GCC 4.6 toolchain
41
42  Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
43  the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6).  Note:
44
45    * GCC 4.6 is the defualt.  You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
46      to select the origianl one.
47
48    * Gold linker support is only avaialble for ARM and x86 architectures on linux-86
49      and  darwin-x86 hosts.  It's not turned on by default.  Add
50      "LOCAL_LDLIBS += -fuse-ld=gold" in Android.mk to enable it.
51
52    * You will need the new GDB to debug program compiled with -fPIE (including
53      binaries in JellyBean image)
54
55    * The binutils 2.21 ld also contain back-port of fixes from 2.22
56
57      * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
58        libraries.  See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
59
60      * Fuxed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
61        if they are valid.  Otherwise program built with -fPIE can't be debugged.
62        http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
63
64    * Sincos optimization is not enabled for compatibility with old platforms which don't have
65      it.
66
67- NX and relro/bind_now protections are enabled by default
68
69  Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
70  protection against buffer overflow attacks by enabling NX bit on stack and heap.
71
72  Add "-z relro -z now" for linker to harden internal data sections after linking
73  against security vulnerabilities due to memory corruption.  See
74
75  http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
76  http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
77
78  For those who really needs it, these features can be disabled by
79  1. Passing "--execstack" to assembler and "-z execstack" to linker to
80     disable NX protection.
81     Passing "-z norelro -z lazy" to linker to disable second protection.
82  2. In NDK jni/Android.mk, set the following
83     LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
84     LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
85  see $NDK/docs/ANDROID-MK.html for details
86
87- Brand executables with .note.ABI-tag section
88
89  Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
90  tools to act accordingly.  The structure member and values are defined as follow.
91
92  static const struct {
93    int32_t	namesz;  /* = 4,  sizeof ("GNU") */
94    int32_t	descsz;  /* = 6 * sizeof(int32_t) */
95    int32_t	type;    /* = 1 */
96    char	name[sizeof "GNU"];  /* = "GNU" */
97    int32_t	os;      /* = 0 */
98    int32_t	major;   /* = 2 */
99    int32_t	minor;   /* = 6 */
100    int32_t	teeny;   /* = 15 */
101    int32_t	os_variant;  /* = 1 */
102    int32_t	android_api; /* = 3, 4, 5, 8, 9, 14 */
103  }
104
105
106OTHER BUG FIXES:
107
108- Backport several patches to fix MIPS issues.
109
110    * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
111      mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
112
113    * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
114      ld segfaults when using --gc-sections
115
116    * http://sourceware.org/ml/binutils/2011-05/msg00198.html
117      Refix MIPS GOT_PAGE counting
118
119    * Follow warning symbol link in mips_elf_count_got_symbols.
120
121    * Follow warning symbol link in mips_elf_allocate_lazy_stub.
122
123    * Move MIPS .dynamic to the data segement, so that it is writable.
124      Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
125
126    * Remove -mno-shared as default in MIPS toolchain.  -fPIC (or -fpic if supported)
127      is default for Android toolchain.  Without explicitly specifying one of
128      -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
129      which turns off PIC.  Fixed it not to add -mno-shared as default.
130
131- Fixed wrong package names in samples hello-jni and two-libs so tests project
132  underneath can compile
133
134
135OTHER CHANGES:
136
137- New binaries locations
138
139    * gdbserver is moved from toolchain/&lt;arch-os-ver&gt;/prebuilt/gdbserver to
140      prebuilt/android-&lt;arch&gt;/gdbserver/gdbserver
141
142    * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
143
144    * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
145      sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
146      sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
147
148    * libbfd.a and libintl.a are moved from lib/ to lib32/
149
150- Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
151    it describes are specpfic to BSD (ie. don't exist in Linux)
152
153- Various scripts to rebuild/test NDK toolchain
154
155    * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
156      Win32 and Win64 executables.
157
158    * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
159      that we need to build the NDK toolchain binaries.
160
161    * New build-host-gcc.sh and build-host-gdb.sh
162
163    * Add tests/check-release.sh to check the content of a given NDK installation directory,
164      or an existing NDK package.
165
166    * Rewrite standalone tests: tests/standalone/run.sh
167
168
169-------------------------------------------------------------------------------
170android-ndk-r8
171
172IMPORTANT BUG FIXES:
173
174- Fixed a typo in GAbi++ implementaiton where result of dynamic_cast&lt;D&gt;(b)
175  of base class object 'b' to derived class D is adjusted wrong
176  (in the opposite direction from base class). See
177  http://code.google.com/p/android/issues/detail?id=28721
178
179- Fixed an issue in make-standalone-toolchain.sh which fails to copy
180  libsupc++.*.
181
182
183IMPORTANT CHANGES:
184
185- Added support for the mips ABI.
186
187  This release of the Android NDK contains support for 'mips' ABI.
188  To generate machine runs on MIPS-based Android devices, please add 'mips' to
189  APP_ABI definition in your Application.mk, or 'all' to generate binaries for
190  all currently supported ABI.  See docs/CPU-MIPS.html for details.
191
192- You can build a standalone mips toolchain using the
193  --toolchain=mipsel-linux-android-4.4.3 option when calling
194  make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
195
196
197OTHER BUG FIXES:
198
199- Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
200  the user has redefined the SHELL environment variable (which can happen under
201  the hood when installing a variety of development tools on Windows)
202
203
204-------------------------------------------------------------------------------
205android-ndk-r7c
206
207This release of the NDK includes an important fix for Tegra2-based devices,
208and a few additional fixes and improvements:
209
210IMPORTANT BUG FIXES:
211
212- Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
213  The files provided with NDK r7b where not configured properly, resulting
214  in crashes on Tegra2-based devices and others when trying to use certain
215  floating-point functions (e.g., cosf, sinf, expf).
216
217
218IMPORTANT CHANGES:
219
220- Added support for custom output directories through the NDK_OUT
221  environment variable. When defined, this variable is used to store all
222  intermediate generated files, instead of $PROJECT_PATH/obj.
223
224  The variable is also recognized by ndk-gdb.
225
226- Added support for building modules with hundreds or even thousand of source
227  files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
228
229  This change forces the NDK build system to put most linker or archiver
230  options into list files, to work-around command-line length limitations
231  (particularly on Windows). See docs/ANDROID-MK.html for details.
232
233
234OTHER BUG FIXES:
235
236- Fixed android_getCpuCount() implementation in the cpufeatures helper
237  library. The previous implementation only listed the cores that were
238  active the first time the function was called. This behavior could
239  provide results that were too low on devices that disable and enable
240  cores dynamically.
241
242-------------------------------------------------------------------------------
243android-ndk-r7b
244
245IMPORTANT BUG FIXES:
246
247- Updated &lt;sys/atomics.h&gt; to avoid correctness issues on some multi-core
248  ARM-based devices. Rebuild your unmodified sources with this version of the
249  NDK and this problem should completely be eliminated. For more details, read
250  docs/ANDROID-ATOMICS.html.
251
252- Reverted to binutils 2.19 to try to fix debugging issues that
253  appeared in NDK r7 (which switched to binutils 2.20.1).
254
255- Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
256  of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
257
258- Fixed native Windows build (ndk-build.cmd). Other build modes were not
259  affected. The fixes include:
260
261    * Removed an infinite loop / stack overflow bug that happened when trying
262      to call ndk-build.cmd from a directory that was _not_ the top of your
263      project path (e.g. any sub-directory of it).
264
265    * Fixed a problem where the auto-generated dependency files were ignored.
266      This meant that updating a header didn't trigger recompilation of sources
267      that included it.
268
269    * Fixed a problem where special characters in files or paths, other than
270      spaces and quotes, were not correctly handled.
271
272- Fixed the standalone toolchain to generate proper binaries when using
273  -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
274  use -lgnustl_shared if you want to link against the shared library
275  version or -lstdc++ for the static version.
276
277  See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
278
279- Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
280  libsupc++.a while the file was at the right location.
281
282- Fixed cygwin C++ link when not using any specific C++ runtime through
283  APP_STL.
284
285OTHER CHANGES:
286
287- When your application uses the GNU libstdc++ runtime, the compiler will
288  no longer forcibly enable exceptions and RTTI. This change results in smaller
289  code. If you need these features, you need to do either one of these:
290
291     1/ Enable exceptions and/or RTTI explicitely in your modules or
292        Application.mk. (recommended)
293
294     2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
295        in your Application.mk. See docs/APPLICATION-MK.html for more details.
296
297- ndk-gdb now works properly when your application has private services
298  running in independent processes. It debugs the main application process,
299  instead of the first process listed by 'ps', which is usually a service
300  process.
301
302- Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
303  and always compile certain source files (but not all) to 32-bit instructions.
304
305- stlport: Refresh the sources to match the Android platform version. This
306  update fixes a few minor bugs:
307
308   - Fixed instantiation of an incomplete type.
309   - Fixed minor == versus = typo
310   - Use memmove instead of memcpy in string::assign
311   - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
312
313  For complete details, see the commit log.
314
315- stlport: Removed 5 un-necessary static initializers from the library.
316
317- The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
318  armeabi instead. This had no impact on correctness, but using the right
319  ABI should provide for slightly better performance.
320
321- the 'cpu-features' helper library was updated to report three optional
322  x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
323  for more details.
324
325- docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
326  of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
327
328- cygwin: ndk-build no longer creates an empty "NUL" file in the current
329  directory when invoked.
330
331- cygwin: better automatic dependency detection. It previously didn't work
332  properly in the following case:
333
334    - When the cygwin drive prefix was not /cygdrive
335    - When using drive-less mounts, e.g. when Cygwin would translate /home
336      to \\server\subdir instead of C:\Some\Dir.
337
338- cygwin: ndk-build does not try to use the native Windows tools under
339  $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
340  GNU Make.
341
342-------------------------------------------------------------------------------
343android-ndk-r7
344
345IMPORTANT CHANGES:
346
347- New official NDK APIs for Android 4.0 (a.k.a. API level 14),
348  which adds the following native features to the platform:
349
350     - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
351       1.0.1 Standard.  New headers &lt;OMXAL/OpenMAXAL.h&gt; and
352       &lt;OMXAL/OpenMAXAL_Android.h&gt; are provided to allow
353       applications targeting this API level to perform multimedia output
354       directly from native code using a new Android-specific buffer
355       queue interface.  For more details, see docs/openmaxal/index.html
356       and http://www.khronos.org/openmax/.
357
358     - Updated the native audio API based on the Khronos Group OpenSL ES
359       1.0.1&#0153; Standard.  API Level 14 can now decode compressed
360       audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
361       docs/opensles/index.html and http://www.khronos.org/opensles/.
362
363- CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
364  environment variable to 'ccache' (or the path to your ccache binary), as in:
365
366        export NDK_CCACHE=ccache
367
368  The NDK build system will automatically use it when compiling any source
369  file. For more information about CCache, see http://ccache.samba.org
370
371- You can now set your APP_ABI to 'all' to indicate that you want to build
372  your NDK modules for all the ABIs supported by your given NDK release.
373
374  This means that either one of these two lines in your Application.mk are
375  equivalent with this release:
376
377        APP_ABI := all
378        APP_ABI := armeabi armeabi-v7a x86
379
380  This also works if you define APP_ABI on the command-line, as in:
381
382        ndk-build APP_ABI=all
383
384  Which is a quick way to check that your project builds for all supported
385  ABIs without changing its Application.mk file.
386
387- Shorter paths to source and object files used in build commands.
388  When invoking $NDK/ndk-build from your project path, the paths to the
389  source, object and binary files passed to the build commands will be
390  significantly shorter now because they are now passed relative to the
391  current directory.
392
393  This is useful when building projects with a lot of source files, to
394  avoid limits on the maximum command line length supported by your host
395  operating system.
396
397  The behaviour is unchanged if you invoked ndk-build from a sub-directory
398  of your project tree, or if you define NDK_PROJECT_PATH to point to a
399  specific directory.
400
401- New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
402  features (RTTI or Exceptions) your module uses. This is especially handy
403  if you have prebuilt modules that depend on them since this will ensure
404  the final link will work correctly.
405
406  See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
407
408- WARNING: VERY EXPERIMENTAL!!
409
410     You can now build your NDK sources on Windows *without* Cygwin.
411     Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
412     command-line, when in your project path.
413
414     The script takes exactly the same arguments than the original
415     ndk-build one.
416
417     Note that the Windows NDK package comes with its own prebuilt
418     binaries for GNU Make, Awk and other tools required by the build,
419     i.e. you shouldn't need to install anything else to get a working
420     build system.
421
422     IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
423                at the moment!
424
425     This feature is still very experimental, but feel free to try it
426     and report issues on the public forum (android-ndk@googlegroups.com)
427     or the public bug databse (http://b.android.com).
428
429     Note that all samples and unit tests succesfully compile with it.
430
431IMPORTANT BUG FIXES:
432
433- Imported shared libraries are now installed by default to the target
434  installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
435  defined in your Application.mk.
436
437  This means that if a top-level module "foo" imports a module "bar", then
438  both libfoo.so and libbar.so will be copied to the install location.
439
440  Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
441  too.
442
443  If you define APP_MODULES explicitely, the behaviour is unchanged.
444
445- Static library imports are now properly transitive. If top-level module
446  'foo' imports static library 'bar' which imports static library 'zoo',
447  the libfoo.so will now be linked against both libbar.a and libzoo.a.
448
449- ndk-gdb now works correctly for activities with multiple categories
450  in their MAIN intent filters.
451
452OTHER CHANGES:
453
454- docs/STABLE-APIS.html: Added missing documentation listing EGL
455  as a supported stable API, starting from API level 9.
456
457- Add a new C++ support runtime named "gabi++". More details about it
458  are available in the updated docs/CPLUSPLUS-SUPPORT.html.
459
460- The STLport C++ runtimes now support RTTI (no exceptions yet though).
461
462- Add a new C++ support runtime named "gnustl_shared" corresponding to the
463  shared library version of GNU libstdc++ v3 (GPLv3 license). See more
464  info at docs/CPLUSPLUS-SUPPORT.html
465
466- You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
467
468        LOCAL_CPP_EXTENSION := .cpp .cxx
469
470  To compile both foo.cpp and bar.cxx as C++ sources.
471
472- Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
473  Note that this does *not* change the NDK ABIs for the corresponding
474  libraries, since each extension must be probed at runtime by the client
475  application.
476
477  Which extensions are available depends on your actual device (and GPU
478  drivers), not the version of the platform it provides.
479
480  The header changes simply add new constants and types to make it easier
481  to use the extensions why they have been probed with eglGetProcAddress() or
482  glGetProcAddress(). Here is the list of newly supported extensions:
483
484    GLES 1.x
485    --------
486    GL_OES_vertex_array_object
487    GL_OES_EGL_image_external
488    GL_APPLE_texture_2D_limited_npot
489    GL_EXT_blend_minmax
490    GL_EXT_discard_framebuffer
491    GL_EXT_multi_draw_arrays
492    GL_EXT_read_format_bgra
493    GL_EXT_texture_filter_anisotropic
494    GL_EXT_texture_format_BGRA8888
495    GL_EXT_texture_lod_bias
496    GL_IMG_read_format
497    GL_IMG_texture_compression_pvrtc
498    GL_IMG_texture_env_enhanced_fixed_function
499    GL_IMG_user_clip_plane
500    GL_IMG_multisampled_render_to_texture
501    GL_NV_fence
502    GL_QCOM_driver_control
503    GL_QCOM_extended_get
504    GL_QCOM_extended_get2
505    GL_QCOM_perfmon_global_mode
506    GL_QCOM_writeonly_rendering
507    GL_QCOM_tiled_rendering
508
509    GLES 2.0
510    --------
511    GL_OES_element_index_uint
512    GL_OES_get_program_binary
513    GL_OES_mapbuffer
514    GL_OES_packed_depth_stencil
515    GL_OES_texture_3D
516    GL_OES_texture_float
517    GL_OES_texture_float_linear
518    GL_OES_texture_half_float_linear
519    GL_OES_texture_npot
520    GL_OES_vertex_array_object
521    GL_OES_EGL_image_external
522    GL_AMD_program_binary_Z400
523    GL_EXT_blend_minmax
524    GL_EXT_discard_framebuffer
525    GL_EXT_multi_draw_arrays
526    GL_EXT_read_format_bgra
527    GL_EXT_texture_format_BGRA8888
528    GL_EXT_texture_compression_dxt1
529    GL_IMG_program_binary
530    GL_IMG_read_format
531    GL_IMG_shader_binary
532    GL_IMG_texture_compression_pvrtc
533    GL_IMG_multisampled_render_to_texture
534    GL_NV_coverage_sample
535    GL_NV_depth_nonlinear
536    GL_QCOM_extended_get
537    GL_QCOM_extended_get2
538    GL_QCOM_writeonly_rendering
539    GL_QCOM_tiled_rendering
540
541    EGL:
542    ----
543    EGL_ANDROID_recordable
544    EGL_NV_system_time
545
546- docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
547  should be 9, not 8 for native activities.
548
549- removed many unwanted exported symbols from the link-time shared
550  system libraries provided by the NDK. This ensures that code generated
551  with the standalone toolchain doesn't risk to accidentally depend
552  on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
553  each time the toolchain used to build the platform is changed).
554
555- download-toolchain-sources.sh: Script was updated to download the toolchain
556  sources from android.googlesource.com, the new location for AOSP servers.
557
558-------------------------------------------------------------------------------
559android-ndk-r6b
560
561This is a bug-fix release for NDK r6, no new features are provided.
562
563IMPORTANT BUG FIXES:
564
565- Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
566
567- Fixed location of prebuilt STLport binaries in the NDK release package.
568  (A bug in the packaging script placed them in the wrong location).
569
570- Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
571
572- Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
573  proper GNU libstdc++ binaries to the right location).
574
575- Fixed standalone toolchain linker warnings about missing definition and
576  size for '__dso_handle' symbol (arm only).
577
578- Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
579  see http://code.google.com/p/android/issues/detail?id=18540
580
581- Fixed the definitions of ptrdiff_t and size_t in x86-specific system
582  when used with the x86 standalone toolchain.
583
584-------------------------------------------------------------------------------
585android-ndk-r6
586
587IMPORTANT CHANGES:
588
589- Official support for the x86 ABI.
590
591  This release of the Android NDK now provides support for the 'x86' ABI.
592  This allows you to generate machine code that runs on future x86-based
593  Android devices.
594
595  Note that by default, code is still generated for ARM-based devices.
596  You can however add 'x86' to your APP_PLATFORM definition in your
597  Application.mk. For example, the following line instructs ndk-build
598  to build your code for three distinct ABIs:
599
600    APP_ABI := armeabi armeabi-v7a x86
601
602  Unless you rely on ARM-based assembly sources, you shouldn't need to touch
603  your Android.mk files to build x86 machine code.
604
605  For all details regarding x86 support, please read the new documentation
606  file named docs/CPU-X86.html.
607
608  Don't hesitate to file NDK bugs related to x86 at http://b.android.com
609
610- You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
611  option when calling make-standalone-toolchain.sh. See
612  docs/STANDALONE-TOOLCHAIN.html for more details.
613
614- The new 'ndk-stack' tool can be used to translate stack traces
615  (as reported by adb logcat in case of crash in native code) into
616  something more readable, i.e. containing function / source file /
617  line number information corresponding to each stack frame.
618
619  For more information and usage example, see the new documentation
620  file docs/NDK-STACK.html
621
622OTHER FIXES &amp; CHANGES:
623
624- The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
625  finally removed from the NDK distribution.
626
627- Support a project.properties file in the application's directory
628  instead of default.properties. This is in preparation for future SDK Tools
629  changes.
630
631-------------------------------------------------------------------------------
632android-ndk-r5c
633
634This release fixes a few bugs in r5b. There are no new features.
635
636IMPORTANT BUG FIXES:
637
638- Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
639  with the new toolchain. Also properly document this variable in
640  docs/ANDROID-MK.html.
641
642- Fixed a bug where code linked against gnustl_static would crash when run
643  on Android platform releases older than 2.2.
644
645- &lt;android/input.h&gt;: Two functions in this header file, introduced
646  by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
647  this breaks the source API, the binary interface to the system is
648  unchanged.
649
650  The functions missing a third 'history_index' parameter. They correct
651  definition is now:
652
653      float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
654                                           size_t pointer_index,
655                                           size_t history_index);
656
657      float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
658                                           size_t pointer_index,
659                                           size_t history_index);
660
661- Updated the android-9 C library arm binary to correctly expose at link time
662  new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
663
664- Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
665  the Motorola Xoom).
666
667OTHER FIXES &amp; CHANGES:
668
669- Object files are now always linked in the order they appear in
670  LOCAL_SRC_FILES. This was not the case previously because the files
671  were grouped by source extensions instead.
672
673- download-toolchain-sources.sh: Fixed a silly bug that prevented the
674  --git-date option to work properly when downloading the master branch.
675
676- Fix an issue where a module could import itself, resulting in an infinite
677  loop in GNU Make.
678
679- When import-module fails, it now prints the list of directories
680  that were searched. This is useful to check that the NDK_MODULE_PATH
681  definition used by the build system is correct.
682
683- When import-module succeeds, it now prints the directory where the module
684  was found to the log (visible with NDK_LOG=1).
685
686- &lt;pthread.h&gt;: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
687  android-9 API level and higher.
688
689- Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
690  fail (typo in build/core/build-binary.mk)
691
692- Fixed a bug that prevented the compilation of .s assembly files
693  (.S files were ok).
694
695- Speed-up the build of debuggable applications when there is a very
696  large number of include directories in a project.
697
698- ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
699
700- ndk-build: Fix a rare bug that appeared when trying to perform parallel
701  builds of debuggable projects.
702
703
704-------------------------------------------------------------------------------
705android-ndk-r5b
706
707This release fixes a few bugs in r5. There are no new features.
708
709IMPORTANT BUG FIXES:
710
711- Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
712  The previous binary generated invalid thumb instruction sequences when
713  dealing with signed chars. This problem was first reported on the
714  android-ndk forum and fixed by the following change in the toolchain
715  sources:
716
717        https://review.source.android.com/#change,19474
718
719- docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
720  "gnustl_static" value for APP_STL, that allows you to link against
721  a static library version of GNU libstdc++.
722
723- ndk-build: Fix a bug that created inconsistent dependency files when a
724  compilation error occured on Windows, preventing building properly after
725  the error was fixed in the source code.
726
727- ndk-build: Fix a Cygwin-specific bug where using very short paths for
728  the Android NDK installation or the project path could lead to the
729  generation of invalid dependency files, making incremental builds
730  impossible.
731
732- Fix a typo that prevented the cpufeatures library to work correctly
733  with the new NDK toolchain.
734
735- Linux toolchain binaries now run on Ubuntu 8.04 or higher.
736  More specifically, the r5 binaries did require GLibc 2.11 on the host
737  system, and refused to run with previous releases due to an ABI mismatch
738  in the GNU C Library. The r5b binaries are generated with a special
739  toolchain that instead targets GLibc 2.7 or higher.
740
741- GNU libstdc++ will not crash anymore when printing floating-point values
742  through i/o streams.
743
744OTHER FIXES &amp; CHANGES:
745
746- ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
747  from GNU Make for each and every source or object file. This was a problem
748  for users with very large source trees.
749
750  In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
751  environment to use 'cygpath -m' as usual.
752
753  Also, if 'cygpath' is not in your path, completely ignore it
754  (seems to be enough to run the NDK under MSys).
755
756- ndk-build: Handle installation paths containing spaces when checking
757  cygwin installation. Before that, the script complained that the user
758  was using an incorrect version of GNU Make (even if he had the right one).
759
760- Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
761  it contained multiple directories separated with ":"
762
763- prebuilt-common.sh: Make the script check the compiler directly for 64-bit
764  generated machine code, instead of relying on the host tag. That should
765  allow the 32-bit toolchain to rebuild properly on Snow Leopard.
766
767- prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
768  using a 32-bit host toolchain.
769
770- &lt;netinet/in.h&gt;: Add missing declaration for INET_ADDRSTRLEN
771- &lt;netinet/in6.h&gt;: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
772  and IN6_IS_ADDR_MC_GLOBAL.
773
774- &lt;asm/byteorder.&gt;: Replaced 'asm' with '__asm__' to allow compilation
775  with -std=c99. See https://review.source.android.com/#change,20076
776
777- standalone toolchain: The -fpic flag is now the default for the
778  arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
779  degradation when compared to the old android-eabi configuration.
780
781  This only affects users of the standalone toolchain. The NDK build script
782  always enforced -fpic implicitely.
783
784-------------------------------------------------------------------------------
785android-ndk-r5
786
787IMPORTANT BUG FIXES:
788
789- Allow dlclose() to properly call static C++ destructors when unloading
790  a shared library. This requires changes in both the C library and the
791  build system. IMPORTANT: This feature is only available for API level 9.
792
793- Fix packaging error for system libraries of level 5 and 8. The libraries
794  bundled with the NDK and used at link time were not the correct version,
795  and this prevented linking against certain symbols appropriately.
796
797- ndk-gdb: do not start activity unless --start or --launch is used.
798  (the documentation was correct, the implementation wrong)
799
800- The system headers for all API levels have been cleaned up and will
801  not provide the declarations of functions that are not available in
802  the corresponding system libraries.
803
804IMPORTANT CHANGES:
805
806- Support for API level 9, (a.k.a. Android 2.3) which adds the following
807  native features to the platform:
808
809     - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
810       New headers &lt;SLES/OpenSLES.h&gt; and &lt;SLES/OpenSLES_Android.h&gt;
811       are provided to allow applications targeting this API level to perform
812       audio input, output and processing directly from native code.
813
814     - Native activity support, i.e. the ability to build applications that
815       are coded entirely in C or C++. More precisely, such applications still
816       run inside a VM, and will have to access most of the platform's features
817       using JNI (i.e. native code calling VM methods). However, this also
818       comes with a series of headers and libraries to implement the following
819       directly from native code:
820
821          - activity lifecycle management.
822          - user input handling (touch, keyboard, trackball, ...).
823          - window management (including accessing the pixel buffer).
824          - sensor listeners (e.g. accelerometer, compass, ...).
825          - hardware configuration management.
826          - easily reading assets out of an APK from native code.
827          - access to the storage manager, a new feature of Android X.X
828            that allows one to provide Opaque Binary Objects containing
829            large amounts of data outside of the APK.
830
831       See the documentation in docs/STABLE-APIS.html for more details.
832
833       Note that most of these new features are targeted at game developers.
834
835- Improved gdbserver binary to allow debugging _threaded_ programs properly
836  with ndk-gdb (the previous binary could only set breakpoints on the main
837  thread).
838
839  IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
840
841  The root cause of the problem is a platform bug that was only fixed in
842  2.3. If you try to debug on a previous platform, the gdbserver binary
843  will only be able to set breakpoints on the main thread.
844
845  For more information, see the specific section in docs/NDK-GDB.html.
846
847- Easier debuggable builds: just invoke ndk-build while defining the
848  NDK_DEBUG variable to 1, as in:
849
850      $NDK/ndk-build NDK_DEBUG=1
851
852  This will have the same result that setting the android:debuggable="true"
853  in the &lt;application&gt; element of your AndroidManifest.xml file. See the
854  file docs/NDK-BUILD.html for more details.
855
856  Note that you will need to use the SDKr8 build tools to use this feature
857  properly!
858
859- Refresh of system C++ headers:
860
861     - Headers have been moved out of the platform directory hierarchy.
862       This is to prevent conflicts with other STLs like STLport or the
863       GNU libstdc++ which provide their own version of the headers, but
864       does not affect your builds.
865
866     - The list of headers has grown to include the following:
867
868            cassert, cctype, cerrno, cfloat, climits, cmath,
869            csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
870            cstring, ctime, cwchar, new, typeinfo, utility
871
872    Note that they still correspond to our minimal C++ runtime, no new feature
873    was introduced here.
874
875- Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
876  all details (and limitations).
877
878- STLport implementation: Add sources and prebuilt binaries for a port of
879  the STLport C++ Standard Library (www.stlport.org), and an easy way to use
880  it at build time by defining APP_STL in your Application.mk. See
881  docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
882
883- GNU libstdc++ implementation: Available as a static library that you can
884  select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
885  for all details.
886
887- Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
888  PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
889  file named docs/PREBUILTS.html for explanations and usage examples.
890
891- Support for module exports: A module can now define a set of compiler or
892  linker flags that will be automatically 'imported' by any other module that
893  depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
894
895  This is achieved with the help of new Android.mk variables named
896  LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
897  LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
898  a 'samples/module-exports' for a sample project that uses this.
899
900- Add support to specify a different file name for generated files, through
901  the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
902  example.
903
904- Add support for module imports, through the NDK_MODULE_PATH environment
905  variable and the new 'import-module' function. This allows you to avoid
906  hard-coding the path of third-party modules into your project files.
907
908  See docs/IMPORT-MODULE.html for details.
909
910- Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
911  easier. Also fixes an issue that prevented clean parallel builds of
912  debuggable applications to work correctly. This fixes an error message that
913  said:
914
915      /bin/sh: &lt;project&gt;/libs/armeabi/gdb.setup: No such file or directory
916
917  When doing a "ndk-build -j&lt;number&gt;", with &lt;number&gt; bigger than 1.
918
919- Add support for assembly-level source filtering. See the description of
920  LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
921  for certain kinds of obfuscation tasks.
922
923- This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
924  which provides many benefits, including:
925
926     - Better code generation than the previous one (gcc-4.4.0)
927     - On Windows, the binaries do not depend on Cygwin anymore.
928     - The ability to use it as a stand-alone cross-compiler
929       (see docs/STANDALONE-TOOLCHAIN.html for all details).
930
931  The binaries for gcc-4.4.0 are still provided for backwards compatibility.
932  Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
933  Note that it is now deprecated and will be removed in a future NDK release.
934
935  IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
936             STLport and GNU libstdc++.
937
938  The binaries for the already-deprecated gcc-4.2.1 have been removed.
939
940- The 'cpufeatures' library has been updated to provide better architecture
941  and features detection (including a work-around for buggy ARMv6 kernels
942  which report an architecture version of 7).
943
944  The library is now also available as an import module, to simplify its
945  usage in your build scripts. See the updated docs/CPU-FEATURES.html file
946  for details.
947
948  NOTE: Please update your Android.mk to use module imports as soon as
949        possible. The location $NDK/source/cpufeatures/ is deprecated
950        and will be removed in a future NDK release. Avoid referencing
951        it directly in your build scritps!
952
953OTHER FIXES AND CHANGES:
954
955- Reduced the size of generated binaries by using --strip-unneeded
956  instead of --strip-debug. This gets rid of mor symbol table entries
957  in release shared libraries and executables, without impacting
958  runtime execution.
959
960- Fix bad automatic dependency tracking when using multiple source
961  sub-directories.
962
963- The path to system headers is now included last in the compilation command
964  line. This prevents conflicts with source code that define their own headers
965  with similar names (e.g. a custom "err.h" was ignored, because the system
966  &lt;err.h&gt; was used instead).
967
968- Update documentation for 'my-dir' function to explain that, due to the
969  way GNU Make works, it really returns the path of the last included
970  Makefile (instead of the current one). Also provide examples on how
971  to deal with it.
972
973- make-release.sh: Now has an --out-dir=&lt;path&gt; option to specify the
974  output directory where the packages are going to be copied. Also
975  ensure that generated packages have go+r permissions.
976
977- ndk-build will now properly escape arguments. This means that something
978  like this:
979
980     ndk-build  MY_CFLAGS="-DFOO -DBAR"
981
982  will now work correctly.
983
984- Add --git-http option to download-toolchain-sources.sh and
985  rebuild-all-prebuilt.sh in order to download sources from
986  android.git.kernel.org through HTTP.
987
988- ndk-gdb: properly launch activities for which name does not contain any dot.
989
990- ndk-gdb: add --delay=&lt;timeout&gt; option to specify a delay in seconds
991  between activity launch and gdbserver attach. This is needed because certain
992  activities can take a long time to properly launch. The default delay is
993  also increased to 2 seconds (instead of 1).
994
995- build/tools/build-gcc.sh: copy the sysroot to the build directory. This
996  avoids the generated toolchain binaries from hard-coding host build paths.
997
998- Platform files are now under $NDK/platforms instead of $NDK/build/platforms
999
1000- Toolchain files are now under $NDK/toolchains instead of
1001  $NDK/build/toolchains and $NDK/build/prebuilt.
1002
1003- Release and debug objects are stored under two different directories now
1004  (i.e. obj/local/&lt;abi&gt;/objs and obj/local/&lt;abi&gt;/objs-debug). This
1005  prevents rebuilding *everything* when you switch between these two modes,
1006  which can be a real time-saver for complex projects.
1007
1008- Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
1009  when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
1010
1011-------------------------------------------------------------------------------
1012android-ndk-r4b
1013
1014This release fixes a few bugs in r4 scripts. There are no new features.
1015
1016OTHER FIXES &amp; CHANGES:
1017
1018- build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
1019  Fix the script (and others in the same directory) to do that properly.
1020
1021- ndk-gdb: check the target device's API level, and dump an error message if
1022  it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
1023  remove control characters like '\r' from adb shell's output. Also fix
1024  script to work properly with OS X's BSD awk.
1025
1026- ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
1027  to look for jni/Android.mk if no manifest is found. If you don't use this,
1028  you can also define NDK_PROJECT_PATH to point to your tree.
1029
1030  Also, on Windows, check that a Cygwin-compatible make executable is being
1031  used, and dump a readable help message to solve the issue if this is not
1032  the case.
1033
1034- Place generated binaries under $PROJECT_PATH/obj/ instead of
1035  $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
1036  by the JDT, resulting in the inability to properly load symbol versions
1037  of the shared libraries when running ndk-gdb.
1038
1039- Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
1040  Previous behaviour was to silently ignore them.
1041
1042- Set the optimization mode to 'debug' automatically if the manifest sets
1043  android:debuggable to 'true'. You can override this by using
1044  'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
1045  your LOCAL_CFLAGS.
1046
1047  Note that even in release mode, the NDK build scripts will produce
1048  binaries with symbols under obj/local/&lt;abi&gt;/ that will be used for
1049  debugging with gdb. However, the debugger will have a harder time to
1050  print proper local variable values that have been optimized out or
1051  even set breakpoints properly.
1052
1053-------------------------------------------------------------------------------
1054android-ndk-r4
1055
1056IMPORTANT BUG FIXES:
1057
1058- The &lt;fenv.h&gt; header was not placed in the correct location and could not
1059  be found by normal builds.
1060
1061IMPORTANT CHANGES:
1062
1063- On Windows, Cygwin 1.7 or higher is now required. The NDK will not
1064  work properly with Cygwin 1.5 which is now officially obsolete
1065  anyway.
1066
1067- Simplified build system: You no longer need to run build/host-setup.sh
1068  or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
1069  new 'ndk-build' script from your application's project directory, or
1070  one of its sub-directories.
1071
1072  See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
1073
1074  NOTE: For compatibility purpose, you can still define projects
1075        through $NDK_ROOT/apps/&lt;name&gt; though.
1076
1077        However, not that sample applications have moved from
1078        'apps/&lt;name&gt;/project' to 'samples/&lt;name&gt;' and now must
1079        be built with 'ndk-build'. The source code of pre-existing
1080        samples didn't change though.
1081
1082- Easy native debugging support when running debuggable applications
1083  on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
1084  See docs/NDK-GDB.html for details.
1085
1086- Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
1087  corresponding to ARMv7-a class devices.
1088
1089  Note that by default, the NDK will still generate machine code for the old
1090  'armeabi' ABI (ARMv5TE based) which is supported by all official Android
1091  system images to date.
1092
1093  You will need to define APP_ABI in your Application.mk file to change this.
1094  See docs/APPLICATION-MK.html
1095
1096  More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
1097
1098- A small static library named 'cpufeatures' is provided with source code
1099  and can be used at runtime to determine the CPU features supported by the
1100  target device. It should run on all Android platforms, starting from 1.5.
1101
1102  For more information, see docs/CPU-FEATURES.html
1103
1104- Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
1105  extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
1106  the '.neon' suffix when listing source files.
1107
1108  Neon is an *optional* instruction set extension, and not all Android ARMv7
1109  devices will support it. You will need to use the 'cpufeatures' library to
1110  determine if such code can be used at runtime, and provide alternate code
1111  paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
1112  platforms.
1113
1114  For more information, see docs/CPU-ARM-NEON.html
1115
1116- Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
1117  and NEON intrinsics and build support.
1118
1119- Added &lt;android/bitmap.h&gt;, a new stable API available from android-8
1120  (a.k.a. Android 2.2) to reliably access the pixel buffer of an
1121  android.graphics.Bitmap object from native code. See docs/STABLE-API.html
1122  and the new sample program under 'samples/bitmap-plasma' for details
1123  and usage example.
1124
1125- Support the NX (No Execute) security feature, where special sections
1126  are added to the generated shared libraries to instruct the kernel
1127  that code shall not be executed from the heap and stack by default.
1128
1129  See docs/ANDROID-MK.html to see how to disable this, plus reference
1130  links for more information.
1131
1132OTHER FIXES AND CHANGES:
1133
1134- support the .s extension for raw assembly sources (.S is already supported
1135  but the input files are parsed by the C-preprocessor before being sent to
1136  the assembler).
1137
1138- build/host-setup.sh has been removed. There is no need for a 'setup' step
1139  when using the NDK for the first time. All host-specific autodetection and
1140  basic tool sanity checking have been moved to the build scripts themselves.
1141
1142- APP_MODULES in Application.mk is now optional. If not defined, the NDK
1143  will simply build _all_ the modules that are declared from your Android.mk.
1144
1145  You can still use APP_MODULES to restrict the set of modules you want to
1146  build. Note that the NDK now computes the transitive dependencies of these
1147  modules for you now. See docs/APPLICATION-MK.html for details.
1148
1149- docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
1150  (libdl.so). It is actually supported by all API levels.
1151
1152- build/tools/download-toolchain-sources.sh: Use 'master' branch by default
1153  instead of the 'eclair' one.
1154
1155- build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
1156  them. This is primarily to ease development. All you need to do is put a patch
1157  under build/tools/toolchain-patches/&lt;foo&gt;/&lt;name&gt;.patch, and it will be applied
1158  with 'patch -p1' into the &lt;foo&gt; directory of the unpacked toolchain sources
1159  before the configure step.
1160
1161- docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
1162
1163- build/core/mkdeps.sh: Removed obsolete script.
1164
1165- the NDK build script now only parses the Application.mk and Android.mk of
1166  the applications listed by APP. The error messages when APP is empty or
1167  malformed have also been improved.
1168
1169- removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
1170  warning when building with GCC 4.4.0 for ARM.
1171
1172- C Library header fixes:
1173
1174    For all platforms:
1175
1176        - &lt;arpa/inet.h&gt;: no longer includes &lt;netinet/in6.h&gt;.
1177        - &lt;ctype.h&gt;: better inlining with -ansi option.
1178        - &lt;mntent.h&gt;: add missing include for &lt;stdio.h&gt;.
1179        - &lt;netinet/in.h&gt;: include &lt;netinet/in6.h&gt; and define in6addr_any +
1180          in6addr_loopback.
1181        - &lt;netinet/in6.h&gt;: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
1182          IN6ADDR_ANY_INIT, ipv6mr_interface.
1183        - &lt;sys/epoll.h&gt;: add missing C++ inclusion guards.
1184        - &lt;sys/resource.h&gt;: add missing rlim_t declaration.
1185        - &lt;sys/system_properties.h&gt;: add missing C++ inclusion guards.
1186        - &lt;time64.h&gt;: add missing C++ inclusion guards.
1187        - &lt;netdb.h&gt;: move h_errno declaration inside C++ inclusion guards.
1188
1189- C Library changes:
1190
1191    For android-8 (a.k.a. Android 2.2):
1192
1193        - &lt;dlfcn.h&gt;: add DL_info and dladdr().
1194        - &lt;err.h&gt;: add err(), warn() and other variants.
1195        - &lt;regex.h&gt;, &lt;fts.h&gt;, &lt;sys/queue.h&gt;: added
1196        - &lt;pthread.h&gt;: add pthread_condattr_t
1197        - &lt;sched.h&gt;: added proper clone() declaration (and implementation).
1198        - &lt;signal.h&gt;: added killpg().
1199        - &lt;stdio.h&gt;: add fdprintf() and vfdprintf().
1200        - &lt;stdlib.h&gt;: fix ptsname_r() signature in declaration. previous
1201          implementation was broken anyway.
1202        - &lt;unistd.h&gt;: add getusershell(), setusershell(), endusershell(),
1203          ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
1204          (now returns int).
1205        - &lt;wchar.h&gt;: add fake mbstowcs() and wcstombs().
1206
1207  More details available under docs/system/libc/CHANGES.html
1208
1209-------------------------------------------------------------------------------
1210android-ndk-r3
1211
1212IMPORTANT BUG FIXES:
1213
1214- Fix build/host-setup.sh to execute as a Bourne shell script (again)
1215
1216- Make target shared libraries portable to systems that don't use the exact
1217  same toolchain. This is needed due to differences in libgcc.a implementations
1218  between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
1219  code doesn't depend on helper functions provided by the Android platform
1220  runtime.
1221
1222
1223IMPORTANT CHANGES:
1224
1225- GCC 4.4.0 is now used by default by the NDK. It generates better code than
1226  GCC 4.2.1, which was used in previous releases. However, the compiler's C++
1227  frontend is also a lot more pedantic regarding certain template constructs
1228  and will even refuse to build some of them.
1229
1230  For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
1231  you can force its usage by defining NDK_TOOLCHAIN in your environment to
1232  the value 'arm-eabi-4.2.1'. For example:
1233
1234        export NDK_TOOLCHAIN=arm-eabi-4.2.1
1235        make APP=hello-jni
1236
1237  Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
1238  recommend switching to 4.2.1 *only* if you encounter compilation problems
1239  with 4.4.0.
1240
1241  The 4.2.1 prebuilt binaries will probably be removed from a future release
1242  of the Android NDK, we thus *strongly* invite you to fix your code if such
1243  problems happen.
1244
1245- Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
1246  reflect Android 2.0 (previously the Eclair branch). This is merely a copy
1247  of android-4 that also includes headers and libraries for OpenGL ES 2.0.
1248
1249  See the sample named "hello-gl2" for a *very* basic demonstration. Note that
1250  OpenGL ES 2.0 is currently *not* available from Java, and must be used
1251  through native code exclusively.
1252
1253  IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
1254             time. Running/testing any native code that depends on it thus
1255             requires a real device.
1256
1257- The NDK build script will now remove installed binaries from the application
1258  project's path before starting the build. This ensures that:
1259
1260  - if the build fails for some reason, a stale/obsolete file is not left in
1261    your application project tree by mistake.
1262
1263  - if you change the target ABI, a stale/obsolete file is not left into the
1264    folder corresponding to the old ABI.
1265
1266
1267- Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
1268  issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
1269  2.0 on specific devices only, need for &lt;uses-feature&gt; tag in manifest).
1270
1271
1272OTHER FIXES AND CHANGES:
1273
1274- Actually use the awk version detected by host-setup.sh during the build.
1275
1276- Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
1277  to 'true', just like the documentation says it works. Also fix a typo
1278  in CLEAR_VARS that prevented this variable from being cleared properly.
1279
1280- Simplified build/tools/make-release.sh, the --prebuilt-dir option is
1281  gone, and --help will dump a clearer description of expected options
1282  and input files.
1283
1284- Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
1285  package a new experimental NDK package archive from the current source tree
1286  plus the toolchain binaries of an existing NDK release package. E.g.:
1287
1288    build/tools/make-release.sh \
1289       --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
1290
1291  will generate a new NDK package in /tmp/ndk-release that contains the most
1292  up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
1293  are not in the git repository).
1294
1295  Also added the --no-git option to collect all sources from the current
1296  NDK root directory, instead of the list given by 'git ls-files'. This can
1297  be useful if you don't want to checkout the whole 'platform/development'
1298  project from repo and still work on the NDK.
1299
1300  This change is to help people easily package experimental NDK releases to
1301  test and distribute fixes and improvements.
1302
1303- Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
1304  build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
1305
1306- Remove bash-ism from build/tools/build-ndk-sysroot.sh
1307
1308- Refresh C library headers for all platforms:
1309
1310    - make &lt;endian.h&gt; simply include &lt;sys/endian.h&gt;
1311    - make &lt;stdint.h&gt; properly declare 64-bit integer types with a C99 compiler
1312    - add missing &lt;sys/types.h&gt; to &lt;strings.h&gt;
1313    - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
1314      st_ctimensec) to &lt;stat.h&gt;
1315    - add missing declaration for tzset() in &lt;time.h&gt;
1316
1317- Added build/tools/download-toolchain-sources.sh, a script that allows you
1318  to download the toolchain sources from the official open-source repository
1319  at android.git.kernel.org and nicely package them into a tarball that can
1320  later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
1321  binaries for your system.
1322
1323- Updated build/tools/build-toolchain.sh to support the tarballs generated
1324  by download-toolchain-sources.sh with the --package=&lt;file&gt; option. This
1325  also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
1326  gcc 4.4.0.
1327
1328-------------------------------------------------------------------------------
1329android-ndk-1.6_r1
1330
1331IMPORTANT BUG FIXES:
1332
1333- Fix build/host-setup.sh to:
1334  * execute as a Bourne shell script
1335  * remove unused host gcc dependency
1336  * improve Windows host auto-detection
1337  * add GNU Make version check
1338  * add Nawk/Gawk check
1339  * ensure that the script is run from $NDKROOT as build/host-setup.sh
1340  * add --help, --verbose, --no-awk-check and --no-make-check options
1341
1342- Properly add sysroot library search path at build time. This makes a line
1343  in Android.mk like:
1344
1345     LOCAL_LDLIBS := -lz
1346
1347  Actually work correctly, instead of having the linker complaining that it
1348  could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
1349  in $(CLEAR_VARS) script.
1350
1351
1352IMPORTANT CHANGES:
1353
1354- The 'sources' directory is gone. The NDK build system now looks for
1355  $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
1356  the new APP_BUILD_SCRIPT variable in Application.mk
1357
1358  For example, the 'hello-jni' sample uses the following files:
1359
1360    apps/hello-jni/project/jni/Android.mk
1361    apps/hello-jni/project/jni/hello-jni.c
1362
1363  The 'apps/&lt;name&gt;' directory is still needed in this release though.
1364
1365- Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
1366  system. This means that:
1367
1368    - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
1369    - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
1370    - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
1371      (will disappear in next release)
1372
1373  Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
1374
1375- Rename build/platforms/android-1.5 to build/platforms/android-3 to match
1376  the Android API level instead of the marketing speak.
1377
1378  Also add a new build/platforms/android-4, and make the build system select
1379  which platform to use based on the content of the project file named
1380  $(APP_PROJECT_PATH)/default.properties.
1381
1382- Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
1383  (NOTE: they are *not* available for android-3)
1384
1385  Also provide a small port of the "San Angeles Observation" demo to show
1386  how to make a simple Android application that uses them.
1387
1388
1389OTHER FIXES AND CHANGES
1390
1391- Ensure that the __ANDROID__ macro is always defined when building code
1392  with the NDK. Normally, the macro must be defined by the toolchain
1393  automatically to indicate that you're targeting the Android runtime.
1394
1395  This works for the new arm-linux-androideabi toolchain, but there is
1396  a bug in the way we built the arm-eabi one, so add the flag manually
1397  through the NDK build script for it.
1398
1399  Note that the ANDROID macro, is now deprecated. While it is still defined
1400  by the NDK, you should modify your code to test against __ANDROID__ instead!
1401
1402- Generate thumb binaries by default.
1403
1404- Add support for LOCAL_ARM_MODE in Android.mk.
1405
1406- Add support for the '.arm' suffix in source file names to force the
1407  compilation of a single source in ARM (32-bit) mode.
1408
1409- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
1410
1411- Add support for LOCAL_C_INCLUDES in Android.mk
1412
1413- Fix compilation of assembler files (e.g. foo.S)
1414
1415-------------------------------------------------------------------------------
1416android-ndk-1.5_r1 released.
1417</pre></body></html>
1418