    Android NDK ChangeLog:

    -------------------------------------------------------------------------------
    android-ndk-r7b

    IMPORTANT BUG FIXES:

    - Updated <sys/atomics.h> to avoid correctness issues on some multi-core
      ARM-based devices. Rebuild your unmodified sources with this version of the
      NDK and this problem should completely be eliminated. For more details, read
      docs/ANDROID-ATOMICS.html.

    - Reverted to binutils 2.19 to try to fix debugging issues that
      appeared in NDK r7 (which switched to binutils 2.20.1).

    - Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
      of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.

    - Fixed native Windows build (ndk-build.cmd). Other build modes were not
      affected. The fixes include:

        * Removed an infinite loop / stack overflow bug that happened when trying
          to call ndk-build.cmd from a directory that was _not_ the top of your
          project path (e.g. any sub-directory of it).

        * Fixed a problem where the auto-generated dependency files were ignored.
          This meant that updating a header didn't trigger recompilation of sources
          that included it.

        * Fixed a problem where special characters in files or paths, other than
          spaces and quotes, were not correctly handled.

    - Fixed the standalone toolchain to generate proper binaries when using
      -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
      use -lgnustl_shared if you want to link against the shared library
      version or -lstdc++ for the static version.

      See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.

    - Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
      libsupc++.a while the file was at the right location.

    - Fixed cygwin C++ link when not using any specific C++ runtime through
      APP_STL.

    OTHER CHANGES:

    - When your application uses the GNU libstdc++ runtime, the compiler will
      no longer forcibly enable exceptions and RTTI. This change results in smaller
      code. If you need these features, you need to do either one of these:

         1/ Enable exceptions and/or RTTI explicitely in your modules or
            Application.mk. (recommended)

         2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
            in your Application.mk. See docs/APPLICATION-MK.html for more details.

    - ndk-gdb now works properly when your application has private services
      running in independent processes. It debugs the main application process,
      instead of the first process listed by 'ps', which is usually a service
      process.

    - Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
      and always compile certain source files (but not all) to 32-bit instructions.

    - stlport: Refresh the sources to match the Android platform version. This
      update fixes a few minor bugs:

       - Fixed instantiation of an incomplete type.
       - Fixed minor == versus = typo
       - Use memmove instead of memcpy in string::assign
       - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..

      For complete details, see the commit log.

    - stlport: Removed 5 un-necessary static initializers from the library.

    - The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
      armeabi instead. This had no impact on correctness, but using the right
      ABI should provide for slightly better performance.

    - the 'cpu-features' helper library was updated to report three optional
      x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
      for more details.

    - docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
      of NDK_APP_APPLICATION_MK to select a custom Application.mk file.

    - cygwin: ndk-build no longer creates an empty "NUL" file in the current
      directory when invoked.

    - cygwin: better automatic dependency detection. It previously didn't work
      properly in the following case:

        - When the cygwin drive prefix was not /cygdrive
        - When using drive-less mounts, e.g. when Cygwin would translate /home
          to \\server\subdir instead of C:\Some\Dir.

    - cygwin: ndk-build does not try to use the native Windows tools under
      $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
      GNU Make.

    -------------------------------------------------------------------------------
    android-ndk-r7

    IMPORTANT CHANGES:

    - New official NDK APIs for Android 4.0 (a.k.a. API level 14),
      which adds the following native features to the platform:

         - Native multimedia API based on the Khronos Group OpenMAX AL™
           1.0.1 Standard.  New headers <OMXAL/OpenMAXAL.h> and
           <OMXAL/OpenMAXAL_Android.h> are provided to allow
           applications targeting this API level to perform multimedia output
           directly from native code using a new Android-specific buffer
           queue interface.  For more details, see docs/openmaxal/index.html
           and http://www.khronos.org/openmax/.

         - Updated the native audio API based on the Khronos Group OpenSL ES
           1.0.1™ Standard.  API Level 14 can now decode compressed
           audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
           docs/opensles/index.html and http://www.khronos.org/opensles/.

    - CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
      environment variable to 'ccache' (or the path to your ccache binary), as in:

            export NDK_CCACHE=ccache

      The NDK build system will automatically use it when compiling any source
      file. For more information about CCache, see http://ccache.samba.org

    - You can now set your APP_ABI to 'all' to indicate that you want to build
      your NDK modules for all the ABIs supported by your given NDK release.

      This means that either one of these two lines in your Application.mk are
      equivalent with this release:

            APP_ABI := all
            APP_ABI := armeabi armeabi-v7a x86

      This also works if you define APP_ABI on the command-line, as in:

            ndk-build APP_ABI=all

      Which is a quick way to check that your project builds for all supported
      ABIs without changing its Application.mk file.

    - Shorter paths to source and object files used in build commands.
      When invoking $NDK/ndk-build from your project path, the paths to the
      source, object and binary files passed to the build commands will be
      significantly shorter now because they are now passed relative to the
      current directory.

      This is useful when building projects with a lot of source files, to
      avoid limits on the maximum command line length supported by your host
      operating system.

      The behaviour is unchanged if you invoked ndk-build from a sub-directory
      of your project tree, or if you define NDK_PROJECT_PATH to point to a
      specific directory.

    - New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
      features (RTTI or Exceptions) your module uses. This is especially handy
      if you have prebuilt modules that depend on them since this will ensure
      the final link will work correctly.

      See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details

    - WARNING: VERY EXPERIMENTAL!!

         You can now build your NDK sources on Windows *without* Cygwin.
         Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
         command-line, when in your project path.

         The script takes exactly the same arguments than the original
         ndk-build one.

         Note that the Windows NDK package comes with its own prebuilt
         binaries for GNU Make, Awk and other tools required by the build,
         i.e. you shouldn't need to install anything else to get a working
         build system.

         IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
                    at the moment!

         This feature is still very experimental, but feel free to try it
         and report issues on the public forum (android-ndk@googlegroups.com)
         or the public bug databse (http://b.android.com).

         Note that all samples and unit tests succesfully compile with it.

    IMPORTANT BUG FIXES:

    - Imported shared libraries are now installed by default to the target
      installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
      defined in your Application.mk.

      This means that if a top-level module "foo" imports a module "bar", then
      both libfoo.so and libbar.so will be copied to the install location.

      Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
      too.

      If you define APP_MODULES explicitely, the behaviour is unchanged.

    - Static library imports are now properly transitive. If top-level module
      'foo' imports static library 'bar' which imports static library 'zoo',
      the libfoo.so will now be linked against both libbar.a and libzoo.a.

    - ndk-gdb now works correctly for activities with multiple categories
      in their MAIN intent filters.

    OTHER CHANGES:

    - docs/STABLE-APIS.html: Added missing documentation listing EGL
      as a supported stable API, starting from API level 9.

    - Add a new C++ support runtime named "gabi++". More details about it
      are available in the updated docs/CPLUSPLUS-SUPPORT.html.

    - The STLport C++ runtimes now support RTTI (no exceptions yet though).

    - Add a new C++ support runtime named "gnustl_shared" corresponding to the
      shared library version of GNU libstdc++ v3 (GPLv3 license). See more
      info at docs/CPLUSPLUS-SUPPORT.html

    - You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:

            LOCAL_CPP_EXTENSION := .cpp .cxx

      To compile both foo.cpp and bar.cxx as C++ sources.

    - Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
      Note that this does *not* change the NDK ABIs for the corresponding
      libraries, since each extension must be probed at runtime by the client
      application.

      Which extensions are available depends on your actual device (and GPU
      drivers), not the version of the platform it provides.

      The header changes simply add new constants and types to make it easier
      to use the extensions why they have been probed with eglGetProcAddress() or
      glGetProcAddress(). Here is the list of newly supported extensions:

        GLES 1.x
        --------
        GL_OES_vertex_array_object
        GL_OES_EGL_image_external
        GL_APPLE_texture_2D_limited_npot
        GL_EXT_blend_minmax
        GL_EXT_discard_framebuffer
        GL_EXT_multi_draw_arrays
        GL_EXT_read_format_bgra
        GL_EXT_texture_filter_anisotropic
        GL_EXT_texture_format_BGRA8888
        GL_EXT_texture_lod_bias
        GL_IMG_read_format
        GL_IMG_texture_compression_pvrtc
        GL_IMG_texture_env_enhanced_fixed_function
        GL_IMG_user_clip_plane
        GL_IMG_multisampled_render_to_texture
        GL_NV_fence
        GL_QCOM_driver_control
        GL_QCOM_extended_get
        GL_QCOM_extended_get2
        GL_QCOM_perfmon_global_mode
        GL_QCOM_writeonly_rendering
        GL_QCOM_tiled_rendering

        GLES 2.0
        --------
        GL_OES_element_index_uint
        GL_OES_get_program_binary
        GL_OES_mapbuffer
        GL_OES_packed_depth_stencil
        GL_OES_texture_3D
        GL_OES_texture_float
        GL_OES_texture_float_linear
        GL_OES_texture_half_float_linear
        GL_OES_texture_npot
        GL_OES_vertex_array_object
        GL_OES_EGL_image_external
        GL_AMD_program_binary_Z400
        GL_EXT_blend_minmax
        GL_EXT_discard_framebuffer
        GL_EXT_multi_draw_arrays
        GL_EXT_read_format_bgra
        GL_EXT_texture_format_BGRA8888
        GL_EXT_texture_compression_dxt1
        GL_IMG_program_binary
        GL_IMG_read_format
        GL_IMG_shader_binary
        GL_IMG_texture_compression_pvrtc
        GL_IMG_multisampled_render_to_texture
        GL_NV_coverage_sample
        GL_NV_depth_nonlinear
        GL_QCOM_extended_get
        GL_QCOM_extended_get2
        GL_QCOM_writeonly_rendering
        GL_QCOM_tiled_rendering

        EGL:
        ----
        EGL_ANDROID_recordable
        EGL_NV_system_time

    - docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
      should be 9, not 8 for native activities.

    - removed many unwanted exported symbols from the link-time shared
      system libraries provided by the NDK. This ensures that code generated
      with the standalone toolchain doesn't risk to accidentally depend
      on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
      each time the toolchain used to build the platform is changed).

    - download-toolchain-sources.sh: Script was updated to download the toolchain
      sources from android.googlesource.com, the new location for AOSP servers.

    -------------------------------------------------------------------------------
    android-ndk-r6b

    This is a bug-fix release for NDK r6, no new features are provided.

    IMPORTANT BUG FIXES:

    - Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"

    - Fixed location of prebuilt STLport binaries in the NDK release package.
      (A bug in the packaging script placed them in the wrong location).

    - Fixed atexit() usage in shared libraries with the x86 standalone toolchain.

    - Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
      proper GNU libstdc++ binaries to the right location).

    - Fixed standalone toolchain linker warnings about missing definition and
      size for '__dso_handle' symbol (arm only).

    - Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
      see http://code.google.com/p/android/issues/detail?id=18540

    - Fixed the definitions of ptrdiff_t and size_t in x86-specific system
      when used with the x86 standalone toolchain.

    -------------------------------------------------------------------------------
    android-ndk-r6

    IMPORTANT CHANGES:

    - Official support for the x86 ABI.

      This release of the Android NDK now provides support for the 'x86' ABI.
      This allows you to generate machine code that runs on future x86-based
      Android devices.

      Note that by default, code is still generated for ARM-based devices.
      You can however add 'x86' to your APP_PLATFORM definition in your
      Application.mk. For example, the following line instructs ndk-build
      to build your code for three distinct ABIs:

        APP_ABI := armeabi armeabi-v7a x86

      Unless you rely on ARM-based assembly sources, you shouldn't need to touch
      your Android.mk files to build x86 machine code.

      For all details regarding x86 support, please read the new documentation
      file named docs/CPU-X86.html.

      Don't hesitate to file NDK bugs related to x86 at http://b.android.com

    - You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
      option when calling make-standalone-toolchain.sh. See
      docs/STANDALONE-TOOLCHAIN.html for more details.

    - The new 'ndk-stack' tool can be used to translate stack traces
      (as reported by adb logcat in case of crash in native code) into
      something more readable, i.e. containing function / source file /
      line number information corresponding to each stack frame.

      For more information and usage example, see the new documentation
      file docs/NDK-STACK.html

    OTHER FIXES & CHANGES:

    - The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
      finally removed from the NDK distribution.

    - Support a project.properties file in the application's directory
      instead of default.properties. This is in preparation for future SDK Tools
      changes.

    -------------------------------------------------------------------------------
    android-ndk-r5c

    This release fixes a few bugs in r5b. There are no new features.

    IMPORTANT BUG FIXES:

    - Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
      with the new toolchain. Also properly document this variable in
      docs/ANDROID-MK.html.

    - Fixed a bug where code linked against gnustl_static would crash when run
      on Android platform releases older than 2.2.

    - <android/input.h>: Two functions in this header file, introduced
      by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
      this breaks the source API, the binary interface to the system is
      unchanged.

      The functions missing a third 'history_index' parameter. They correct
      definition is now:

          float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
                                               size_t pointer_index,
                                               size_t history_index);

          float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
                                               size_t pointer_index,
                                               size_t history_index);

    - Updated the android-9 C library arm binary to correctly expose at link time
      new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).

    - Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
      the Motorola Xoom).

    OTHER FIXES & CHANGES:

    - Object files are now always linked in the order they appear in
      LOCAL_SRC_FILES. This was not the case previously because the files
      were grouped by source extensions instead.

    - download-toolchain-sources.sh: Fixed a silly bug that prevented the
      --git-date option to work properly when downloading the master branch.

    - Fix an issue where a module could import itself, resulting in an infinite
      loop in GNU Make.

    - When import-module fails, it now prints the list of directories
      that were searched. This is useful to check that the NDK_MODULE_PATH
      definition used by the build system is correct.

    - When import-module succeeds, it now prints the directory where the module
      was found to the log (visible with NDK_LOG=1).

    - <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
      android-9 API level and higher.

    - Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
      fail (typo in build/core/build-binary.mk)

    - Fixed a bug that prevented the compilation of .s assembly files
      (.S files were ok).

    - Speed-up the build of debuggable applications when there is a very
      large number of include directories in a project.

    - ndk-gdb: Better detection of 'adb shell' failures (improves error messages).

    - ndk-build: Fix a rare bug that appeared when trying to perform parallel
      builds of debuggable projects.

    -------------------------------------------------------------------------------
    android-ndk-r5b

    This release fixes a few bugs in r5. There are no new features.

    IMPORTANT BUG FIXES:

    - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
      The previous binary generated invalid thumb instruction sequences when
      dealing with signed chars. This problem was first reported on the
      android-ndk forum and fixed by the following change in the toolchain
      sources:

            https://review.source.android.com/#change,19474

    - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
      "gnustl_static" value for APP_STL, that allows you to link against
      a static library version of GNU libstdc++.

    - ndk-build: Fix a bug that created inconsistent dependency files when a
      compilation error occured on Windows, preventing building properly after
      the error was fixed in the source code.

    - ndk-build: Fix a Cygwin-specific bug where using very short paths for
      the Android NDK installation or the project path could lead to the
      generation of invalid dependency files, making incremental builds
      impossible.

    - Fix a typo that prevented the cpufeatures library to work correctly
      with the new NDK toolchain.

    - Linux toolchain binaries now run on Ubuntu 8.04 or higher.
      More specifically, the r5 binaries did require GLibc 2.11 on the host
      system, and refused to run with previous releases due to an ABI mismatch
      in the GNU C Library. The r5b binaries are generated with a special
      toolchain that instead targets GLibc 2.7 or higher.

    - GNU libstdc++ will not crash anymore when printing floating-point values
      through i/o streams.

    OTHER FIXES & CHANGES:

    - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
      from GNU Make for each and every source or object file. This was a problem
      for users with very large source trees.

      In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
      environment to use 'cygpath -m' as usual.

      Also, if 'cygpath' is not in your path, completely ignore it
      (seems to be enough to run the NDK under MSys).

    - ndk-build: Handle installation paths containing spaces when checking
      cygwin installation. Before that, the script complained that the user
      was using an incorrect version of GNU Make (even if he had the right one).

    - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
      it contained multiple directories separated with ":"

    - prebuilt-common.sh: Make the script check the compiler directly for 64-bit
      generated machine code, instead of relying on the host tag. That should
      allow the 32-bit toolchain to rebuild properly on Snow Leopard.

    - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
      using a 32-bit host toolchain.

    - <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN
    - <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
      and IN6_IS_ADDR_MC_GLOBAL.

    - <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation
      with -std=c99. See https://review.source.android.com/#change,20076

    - standalone toolchain: The -fpic flag is now the default for the
      arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
      degradation when compared to the old android-eabi configuration.

      This only affects users of the standalone toolchain. The NDK build script
      always enforced -fpic implicitely.

    -------------------------------------------------------------------------------
    android-ndk-r5

    IMPORTANT BUG FIXES:

    - Allow dlclose() to properly call static C++ destructors when unloading
      a shared library. This requires changes in both the C library and the
      build system. IMPORTANT: This feature is only available for API level 9.

    - Fix packaging error for system libraries of level 5 and 8. The libraries
      bundled with the NDK and used at link time were not the correct version,
      and this prevented linking against certain symbols appropriately.

    - ndk-gdb: do not start activity unless --start or --launch is used.
      (the documentation was correct, the implementation wrong)

    - The system headers for all API levels have been cleaned up and will
      not provide the declarations of functions that are not available in
      the corresponding system libraries.

    IMPORTANT CHANGES:

    - Support for API level 9, (a.k.a. Android 2.3) which adds the following
      native features to the platform:

         - Native audio API based on the Khronos Group OpenSL ES™ 1.0.1 Standard.
           New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h>
           are provided to allow applications targeting this API level to perform
           audio input, output and processing directly from native code.

         - Native activity support, i.e. the ability to build applications that
           are coded entirely in C or C++. More precisely, such applications still
           run inside a VM, and will have to access most of the platform's features
           using JNI (i.e. native code calling VM methods). However, this also
           comes with a series of headers and libraries to implement the following
           directly from native code:

              - activity lifecycle management.
              - user input handling (touch, keyboard, trackball, ...).
              - window management (including accessing the pixel buffer).
              - sensor listeners (e.g. accelerometer, compass, ...).
              - hardware configuration management.
              - easily reading assets out of an APK from native code.
              - access to the storage manager, a new feature of Android X.X
                that allows one to provide Opaque Binary Objects containing
                large amounts of data outside of the APK.

           See the documentation in docs/STABLE-APIS.html for more details.

           Note that most of these new features are targeted at game developers.

    - Improved gdbserver binary to allow debugging _threaded_ programs properly
      with ndk-gdb (the previous binary could only set breakpoints on the main
      thread).

      IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.

      The root cause of the problem is a platform bug that was only fixed in
      2.3. If you try to debug on a previous platform, the gdbserver binary
      will only be able to set breakpoints on the main thread.

      For more information, see the specific section in docs/NDK-GDB.html.

    - Easier debuggable builds: just invoke ndk-build while defining the
      NDK_DEBUG variable to 1, as in:

          $NDK/ndk-build NDK_DEBUG=1

      This will have the same result that setting the android:debuggable="true"
      in the <application> element of your AndroidManifest.xml file. See the
      file docs/NDK-BUILD.html for more details.

      Note that you will need to use the SDKr8 build tools to use this feature
      properly!

    - Refresh of system C++ headers:

         - Headers have been moved out of the platform directory hierarchy.
           This is to prevent conflicts with other STLs like STLport or the
           GNU libstdc++ which provide their own version of the headers, but
           does not affect your builds.

         - The list of headers has grown to include the following:

                cassert, cctype, cerrno, cfloat, climits, cmath,
                csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
                cstring, ctime, cwchar, new, typeinfo, utility

        Note that they still correspond to our minimal C++ runtime, no new feature
        was introduced here.

    - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
      all details (and limitations).

    - STLport implementation: Add sources and prebuilt binaries for a port of
      the STLport C++ Standard Library (www.stlport.org), and an easy way to use
      it at build time by defining APP_STL in your Application.mk. See
      docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.

    - GNU libstdc++ implementation: Available as a static library that you can
      select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
      for all details.

    - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
      PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
      file named docs/PREBUILTS.html for explanations and usage examples.

    - Support for module exports: A module can now define a set of compiler or
      linker flags that will be automatically 'imported' by any other module that
      depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.

      This is achieved with the help of new Android.mk variables named
      LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
      LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
      a 'samples/module-exports' for a sample project that uses this.

    - Add support to specify a different file name for generated files, through
      the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
      example.

    - Add support for module imports, through the NDK_MODULE_PATH environment
      variable and the new 'import-module' function. This allows you to avoid
      hard-coding the path of third-party modules into your project files.

      See docs/IMPORT-MODULE.html for details.

    - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
      easier. Also fixes an issue that prevented clean parallel builds of
      debuggable applications to work correctly. This fixes an error message that
      said:

          /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory

      When doing a "ndk-build -j<number>", with <number> bigger than 1.

    - Add support for assembly-level source filtering. See the description of
      LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
      for certain kinds of obfuscation tasks.

    - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
      which provides many benefits, including:

         - Better code generation than the previous one (gcc-4.4.0)
         - On Windows, the binaries do not depend on Cygwin anymore.
         - The ability to use it as a stand-alone cross-compiler
           (see docs/STANDALONE-TOOLCHAIN.html for all details).

      The binaries for gcc-4.4.0 are still provided for backwards compatibility.
      Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
      Note that it is now deprecated and will be removed in a future NDK release.

      IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
                 STLport and GNU libstdc++.

      The binaries for the already-deprecated gcc-4.2.1 have been removed.

    - The 'cpufeatures' library has been updated to provide better architecture
      and features detection (including a work-around for buggy ARMv6 kernels
      which report an architecture version of 7).

      The library is now also available as an import module, to simplify its
      usage in your build scripts. See the updated docs/CPU-FEATURES.html file
      for details.

      NOTE: Please update your Android.mk to use module imports as soon as
            possible. The location $NDK/source/cpufeatures/ is deprecated
            and will be removed in a future NDK release. Avoid referencing
            it directly in your build scritps!

    OTHER FIXES AND CHANGES:

    - Reduced the size of generated binaries by using --strip-unneeded
      instead of --strip-debug. This gets rid of mor symbol table entries
      in release shared libraries and executables, without impacting
      runtime execution.

    - Fix bad automatic dependency tracking when using multiple source
      sub-directories.

    - The path to system headers is now included last in the compilation command
      line. This prevents conflicts with source code that define their own headers
      with similar names (e.g. a custom "err.h" was ignored, because the system
      <err.h> was used instead).

    - Update documentation for 'my-dir' function to explain that, due to the
      way GNU Make works, it really returns the path of the last included
      Makefile (instead of the current one). Also provide examples on how
      to deal with it.

    - make-release.sh: Now has an --out-dir=<path> option to specify the
      output directory where the packages are going to be copied. Also
      ensure that generated packages have go+r permissions.

    - ndk-build will now properly escape arguments. This means that something
      like this:

         ndk-build  MY_CFLAGS="-DFOO -DBAR"

      will now work correctly.

    - Add --git-http option to download-toolchain-sources.sh and
      rebuild-all-prebuilt.sh in order to download sources from
      android.git.kernel.org through HTTP.

    - ndk-gdb: properly launch activities for which name does not contain any dot.

    - ndk-gdb: add --delay=<timeout> option to specify a delay in seconds
      between activity launch and gdbserver attach. This is needed because certain
      activities can take a long time to properly launch. The default delay is
      also increased to 2 seconds (instead of 1).

    - build/tools/build-gcc.sh: copy the sysroot to the build directory. This
      avoids the generated toolchain binaries from hard-coding host build paths.

    - Platform files are now under $NDK/platforms instead of $NDK/build/platforms

    - Toolchain files are now under $NDK/toolchains instead of
      $NDK/build/toolchains and $NDK/build/prebuilt.

    - Release and debug objects are stored under two different directories now
      (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This
      prevents rebuilding *everything* when you switch between these two modes,
      which can be a real time-saver for complex projects.

    - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
      when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'

    -------------------------------------------------------------------------------
    android-ndk-r4b

    This release fixes a few bugs in r4 scripts. There are no new features.

    OTHER FIXES & CHANGES:

    - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
      Fix the script (and others in the same directory) to do that properly.

    - ndk-gdb: check the target device's API level, and dump an error message if
      it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
      remove control characters like '\r' from adb shell's output. Also fix
      script to work properly with OS X's BSD awk.

    - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
      to look for jni/Android.mk if no manifest is found. If you don't use this,
      you can also define NDK_PROJECT_PATH to point to your tree.

      Also, on Windows, check that a Cygwin-compatible make executable is being
      used, and dump a readable help message to solve the issue if this is not
      the case.

    - Place generated binaries under $PROJECT_PATH/obj/ instead of
      $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
      by the JDT, resulting in the inability to properly load symbol versions
      of the shared libraries when running ndk-gdb.

    - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
      Previous behaviour was to silently ignore them.

    - Set the optimization mode to 'debug' automatically if the manifest sets
      android:debuggable to 'true'. You can override this by using
      'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
      your LOCAL_CFLAGS.

      Note that even in release mode, the NDK build scripts will produce
      binaries with symbols under obj/local/<abi>/ that will be used for
      debugging with gdb. However, the debugger will have a harder time to
      print proper local variable values that have been optimized out or
      even set breakpoints properly.

    -------------------------------------------------------------------------------
    android-ndk-r4

    IMPORTANT BUG FIXES:

    - The <fenv.h> header was not placed in the correct location and could not
      be found by normal builds.

    IMPORTANT CHANGES:

    - On Windows, Cygwin 1.7 or higher is now required. The NDK will not
      work properly with Cygwin 1.5 which is now officially obsolete
      anyway.

    - Simplified build system: You no longer need to run build/host-setup.sh
      or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
      new 'ndk-build' script from your application's project directory, or
      one of its sub-directories.

      See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.

      NOTE: For compatibility purpose, you can still define projects
            through $NDK_ROOT/apps/<name> though.

            However, not that sample applications have moved from
            'apps/<name>/project' to 'samples/<name>' and now must
            be built with 'ndk-build'. The source code of pre-existing
            samples didn't change though.

    - Easy native debugging support when running debuggable applications
      on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
      See docs/NDK-GDB.html for details.

    - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
      corresponding to ARMv7-a class devices.

      Note that by default, the NDK will still generate machine code for the old
      'armeabi' ABI (ARMv5TE based) which is supported by all official Android
      system images to date.

      You will need to define APP_ABI in your Application.mk file to change this.
      See docs/APPLICATION-MK.html

      More details about ABIs is now available in docs/CPU-ARCH-ABIS.html

    - A small static library named 'cpufeatures' is provided with source code
      and can be used at runtime to determine the CPU features supported by the
      target device. It should run on all Android platforms, starting from 1.5.

      For more information, see docs/CPU-FEATURES.html

    - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
      extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
      the '.neon' suffix when listing source files.

      Neon is an *optional* instruction set extension, and not all Android ARMv7
      devices will support it. You will need to use the 'cpufeatures' library to
      determine if such code can be used at runtime, and provide alternate code
      paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
      platforms.

      For more information, see docs/CPU-ARM-NEON.html

    - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
      and NEON intrinsics and build support.

    - Added <android/bitmap.h>, a new stable API available from android-8
      (a.k.a. Android 2.2) to reliably access the pixel buffer of an
      android.graphics.Bitmap object from native code. See docs/STABLE-API.html
      and the new sample program under 'samples/bitmap-plasma' for details
      and usage example.

    - Support the NX (No Execute) security feature, where special sections
      are added to the generated shared libraries to instruct the kernel
      that code shall not be executed from the heap and stack by default.

      See docs/ANDROID-MK.html to see how to disable this, plus reference
      links for more information.

    OTHER FIXES AND CHANGES:

    - support the .s extension for raw assembly sources (.S is already supported
      but the input files are parsed by the C-preprocessor before being sent to
      the assembler).

    - build/host-setup.sh has been removed. There is no need for a 'setup' step
      when using the NDK for the first time. All host-specific autodetection and
      basic tool sanity checking have been moved to the build scripts themselves.

    - APP_MODULES in Application.mk is now optional. If not defined, the NDK
      will simply build _all_ the modules that are declared from your Android.mk.

      You can still use APP_MODULES to restrict the set of modules you want to
      build. Note that the NDK now computes the transitive dependencies of these
      modules for you now. See docs/APPLICATION-MK.html for details.

    - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
      (libdl.so). It is actually supported by all API levels.

    - build/tools/download-toolchain-sources.sh: Use 'master' branch by default
      instead of the 'eclair' one.

    - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
      them. This is primarily to ease development. All you need to do is put a patch
      under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied
      with 'patch -p1' into the <foo> directory of the unpacked toolchain sources
      before the configure step.

    - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.

    - build/core/mkdeps.sh: Removed obsolete script.

    - the NDK build script now only parses the Application.mk and Android.mk of
      the applications listed by APP. The error messages when APP is empty or
      malformed have also been improved.

    - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
      warning when building with GCC 4.4.0 for ARM.

    - C Library header fixes:

        For all platforms:

            - <arpa/inet.h>: no longer includes <netinet/in6.h>.
            - <ctype.h>: better inlining with -ansi option.
            - <mntent.h>: add missing include for <stdio.h>.
            - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any +
              in6addr_loopback.
            - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
              IN6ADDR_ANY_INIT, ipv6mr_interface.
            - <sys/epoll.h>: add missing C++ inclusion guards.
            - <sys/resource.h>: add missing rlim_t declaration.
            - <sys/system_properties.h>: add missing C++ inclusion guards.
            - <time64.h>: add missing C++ inclusion guards.
            - <netdb.h>: move h_errno declaration inside C++ inclusion guards.

    - C Library changes:

        For android-8 (a.k.a. Android 2.2):

            - <dlfcn.h>: add DL_info and dladdr().
            - <err.h>: add err(), warn() and other variants.
            - <regex.h>, <fts.h>, <sys/queue.h>: added
            - <pthread.h>: add pthread_condattr_t
            - <sched.h>: added proper clone() declaration (and implementation).
            - <signal.h>: added killpg().
            - <stdio.h>: add fdprintf() and vfdprintf().
            - <stdlib.h>: fix ptsname_r() signature in declaration. previous
              implementation was broken anyway.
            - <unistd.h>: add getusershell(), setusershell(), endusershell(),
              ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
              (now returns int).
            - <wchar.h>: add fake mbstowcs() and wcstombs().

      More details available under docs/system/libc/CHANGES.html

    -------------------------------------------------------------------------------
    android-ndk-r3

    IMPORTANT BUG FIXES:

    - Fix build/host-setup.sh to execute as a Bourne shell script (again)

    - Make target shared libraries portable to systems that don't use the exact
      same toolchain. This is needed due to differences in libgcc.a implementations
      between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
      code doesn't depend on helper functions provided by the Android platform
      runtime.

    IMPORTANT CHANGES:

    - GCC 4.4.0 is now used by default by the NDK. It generates better code than
      GCC 4.2.1, which was used in previous releases. However, the compiler's C++
      frontend is also a lot more pedantic regarding certain template constructs
      and will even refuse to build some of them.

      For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
      you can force its usage by defining NDK_TOOLCHAIN in your environment to
      the value 'arm-eabi-4.2.1'. For example:

            export NDK_TOOLCHAIN=arm-eabi-4.2.1
            make APP=hello-jni

      Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
      recommend switching to 4.2.1 *only* if you encounter compilation problems
      with 4.4.0.

      The 4.2.1 prebuilt binaries will probably be removed from a future release
      of the Android NDK, we thus *strongly* invite you to fix your code if such
      problems happen.

    - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
      reflect Android 2.0 (previously the Eclair branch). This is merely a copy
      of android-4 that also includes headers and libraries for OpenGL ES 2.0.

      See the sample named "hello-gl2" for a *very* basic demonstration. Note that
      OpenGL ES 2.0 is currently *not* available from Java, and must be used
      through native code exclusively.

      IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
                 time. Running/testing any native code that depends on it thus
                 requires a real device.

    - The NDK build script will now remove installed binaries from the application
      project's path before starting the build. This ensures that:

      - if the build fails for some reason, a stale/obsolete file is not left in
        your application project tree by mistake.

      - if you change the target ABI, a stale/obsolete file is not left into the
        folder corresponding to the old ABI.

    - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
      issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
      2.0 on specific devices only, need for <uses-feature> tag in manifest).

    OTHER FIXES AND CHANGES:

    - Actually use the awk version detected by host-setup.sh during the build.

    - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
      to 'true', just like the documentation says it works. Also fix a typo
      in CLEAR_VARS that prevented this variable from being cleared properly.

    - Simplified build/tools/make-release.sh, the --prebuilt-dir option is
      gone, and --help will dump a clearer description of expected options
      and input files.

    - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
      package a new experimental NDK package archive from the current source tree
      plus the toolchain binaries of an existing NDK release package. E.g.:

        build/tools/make-release.sh \
           --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip

      will generate a new NDK package in /tmp/ndk-release that contains the most
      up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
      are not in the git repository).

      Also added the --no-git option to collect all sources from the current
      NDK root directory, instead of the list given by 'git ls-files'. This can
      be useful if you don't want to checkout the whole 'platform/development'
      project from repo and still work on the NDK.

      This change is to help people easily package experimental NDK releases to
      test and distribute fixes and improvements.

    - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
      build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)

    - Remove bash-ism from build/tools/build-ndk-sysroot.sh

    - Refresh C library headers for all platforms:

        - make <endian.h> simply include <sys/endian.h>
        - make <stdint.h> properly declare 64-bit integer types with a C99 compiler
        - add missing <sys/types.h> to <strings.h>
        - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
          st_ctimensec) to <stat.h>
        - add missing declaration for tzset() in <time.h>

    - Added build/tools/download-toolchain-sources.sh, a script that allows you
      to download the toolchain sources from the official open-source repository
      at android.git.kernel.org and nicely package them into a tarball that can
      later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
      binaries for your system.

    - Updated build/tools/build-toolchain.sh to support the tarballs generated
      by download-toolchain-sources.sh with the --package=<file> option. This
      also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
      gcc 4.4.0.

    -------------------------------------------------------------------------------
    android-ndk-1.6_r1

    IMPORTANT BUG FIXES:

    - Fix build/host-setup.sh to:
      * execute as a Bourne shell script
      * remove unused host gcc dependency
      * improve Windows host auto-detection
      * add GNU Make version check
      * add Nawk/Gawk check
      * ensure that the script is run from $NDKROOT as build/host-setup.sh
      * add --help, --verbose, --no-awk-check and --no-make-check options

    - Properly add sysroot library search path at build time. This makes a line
      in Android.mk like:

         LOCAL_LDLIBS := -lz

      Actually work correctly, instead of having the linker complaining that it
      could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
      in $(CLEAR_VARS) script.

    IMPORTANT CHANGES:

    - The 'sources' directory is gone. The NDK build system now looks for
      $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
      the new APP_BUILD_SCRIPT variable in Application.mk

      For example, the 'hello-jni' sample uses the following files:

        apps/hello-jni/project/jni/Android.mk
        apps/hello-jni/project/jni/hello-jni.c

      The 'apps/<name>' directory is still needed in this release though.

    - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
      system. This means that:

        - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
        - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
        - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
          (will disappear in next release)

      Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.

    - Rename build/platforms/android-1.5 to build/platforms/android-3 to match
      the Android API level instead of the marketing speak.

      Also add a new build/platforms/android-4, and make the build system select
      which platform to use based on the content of the project file named
      $(APP_PROJECT_PATH)/default.properties.

    - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
      (NOTE: they are *not* available for android-3)

      Also provide a small port of the "San Angeles Observation" demo to show
      how to make a simple Android application that uses them.

    OTHER FIXES AND CHANGES

    - Ensure that the __ANDROID__ macro is always defined when building code
      with the NDK. Normally, the macro must be defined by the toolchain
      automatically to indicate that you're targeting the Android runtime.

      This works for the new arm-linux-androideabi toolchain, but there is
      a bug in the way we built the arm-eabi one, so add the flag manually
      through the NDK build script for it.

      Note that the ANDROID macro, is now deprecated. While it is still defined
      by the NDK, you should modify your code to test against __ANDROID__ instead!

    - Generate thumb binaries by default.

    - Add support for LOCAL_ARM_MODE in Android.mk.

    - Add support for the '.arm' suffix in source file names to force the
      compilation of a single source in ARM (32-bit) mode.

    - Generate proper unoptimized versions of binaries when APP_OPTIM := debug

    - Add support for LOCAL_C_INCLUDES in Android.mk

    - Fix compilation of assembler files (e.g. foo.S)

    -------------------------------------------------------------------------------
    android-ndk-1.5_r1 released.