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