Home | History | Annotate | Download | only in docs
      1 <html><body><pre>Android NDK ChangeLog:
      2 
      3 -------------------------------------------------------------------------------
      4 android-ndk-r8e
      5 
      6 IMPORTANT CHANGES:
      7 
      8 - NDK now delivers additional 64-bit host toolchain set (package name suffix
      9   *-x86_64.*)
     10   1. The ndk-build script uses 64-bit toolchain if it's present and your OS
     11      supports it.  If you install both 32-bit and 64-bit toolchain on 64-bit
     12      OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to
     13      always use the 32-bit host toolchain.
     14   2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64"
     15      on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host
     16      toolchain instead of the default 32-bit
     17 
     18   See NDK-BUILD.html
     19 
     20 - Added Clang 3.2 compiler.  Since GCC 4.6 is still the default, you need to
     21   explicitly enable it:
     22   1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or
     23      NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the
     24      clang compilers in the package) or add it in Application.mk.
     25   2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh
     26      and replace CC and CXX in your makefile with &lt;tool-path&gt;/bin/clang
     27      and &lt;tool-path&gt;/bin/clang++.
     28 
     29 - Added static code analyzer for Linux/MacOSX hosts
     30   1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line.
     31   2. For standalone, please refer to ndk-build for example to run scan-build
     32      using /path/to/standalone/bin/&lt;arch&gt;/analyzer.
     33 
     34   This feature is experimental now but welcome to try and report issues.
     35 
     36 - Added MCLinker for for Linux/MacOSX hosts.  Since ld.gold is the default
     37   where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
     38   APP_LDFLAGS to explicitly enable it.
     39 
     40   This feature is experimental now but welcome to try and report issues.
     41   Please find project page: https://code.google.com/p/mclinker/
     42 
     43 - ndk-build now uses topological sort for module dependencies, ie.
     44   it automatically sorts out the order of libraries specified in
     45   LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and
     46   LOCAL_SHARED_LIBRARIES.
     47 
     48   See http://b.android.com/39378
     49   and an example in tests/build/topological-sort.
     50 
     51 
     52 IMPORTANT BUG FIXES:
     53 
     54 - Fixed build script to build all toolchains in -O2.  Toolchains
     55   in previous releases were incorrectly built without optimization.
     56 
     57 - Fixed build script which unconditionally builds Clang/llvm for MacOSX
     58   in 64-bit
     59 
     60 - Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832
     61   See http://b.android.com/52732
     62 
     63 - Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in
     64   functions
     65   See http://b.android.com/41297
     66 
     67 - Fixed GCC 4.7 linker error reads like
     68   .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between
     69   out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o)
     70   and output
     71 
     72   See http://sourceware.org/ml/binutils/2012-12/msg00202.html
     73 
     74 - Fixed GCC 4.7 ICE in build_data_member_initialization, at
     75   cp/semantics.c:5790
     76 
     77 - Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214
     78   See http://b.android.com/52909
     79 
     80 - Fixed a GCC 4.7 segfault
     81   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
     82 
     83 - Fixed to &lt;chrono&gt; clock resolution and enable steady_clock
     84   See http://b.android.com/39680
     85 
     86 - Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++
     87   See http://b.android.com/41770 and http://b.android.com/41859
     88 
     89 - Fixed X86 MXX/SSE code fails to link due to missing posix_memalign
     90   See https://android-review.googlesource.com/#/c/51872
     91 
     92 - Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb()
     93   See https://android-review.googlesource.com/#/c/50383
     94 
     95 - Fixed GCC4.7/X86 to resotre earlier cmov behavior
     96   See http://gcc.gnu.org/viewcvs?view=revision&revision=193554
     97 
     98 - More fixes to handle NULL return value of setlocale() in
     99   libstdc++/GCC4.7
    100   See http://b.android.com/46718
    101 
    102 - Fixed ld.gold runtime undefined reference to __exidx_start/_end
    103   See https://android-review.googlesource.com/#/c/52134
    104 
    105 - Fixed Clang3.1 ICE using Eigen library
    106   See http://b.android.com/41246
    107 
    108 - Fixed Clang3.1 ICE including &lt;chrono&gt; in C++11 mode
    109   See http://b.android.com/39600
    110 
    111 - Fixed Clang3.1 ICE when generating object code for a method
    112   call to a uniform initialized rvalue
    113   See http://b.android.com/41387
    114 
    115 - Fixed Clang3.1/X86 stack realignment
    116   See https://android-review.googlesource.com/#/c/52154
    117 
    118 - Fixed GDB SIGILL when debugging on platform 4.1.2
    119   See http://b.android.com/40941
    120 
    121 - Fixed GDB cannot set "source:line" breakpoints when symbols contain
    122   frankenpaths
    123   See http://b.android.com/42448
    124 
    125 - Fixed GDB read_program_header for MIPS PIE executables
    126   See https://android-review.googlesource.com/#/c/49592
    127 
    128 - Fixed STLport segfault in uncaught_exception()
    129   See https://android-review.googlesource.com/#/c/50236
    130 
    131 - Fixed STLport Bus error in exception handling due
    132   to unaligned access of DW_EH_PE_udata2, 4 and 8.
    133 
    134 - Fixed Gabi++ nothrow new[] infinite recursion.
    135   See http://b.android.com/52833
    136 
    137 - Fixed Gabi++ wrong offset to EH pointer
    138   See https://android-review.googlesource.com/#/c/53446
    139 
    140 - Removed Gabi++ redundant free on exception object
    141   See https://android-review.googlesource.com/#/c/53447
    142 
    143 
    144 OTHER BUG FIXES:
    145 
    146 - Fix NDK headers
    147   1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t
    148   2. Fixed MIPS and ARM fenv.h
    149   3. Fixed stddef.h to not re-define offsetof already exists
    150      in toolchain
    151   4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t
    152      See http://b.android.com/38441
    153   5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h
    154      See http://b.android.com/53163
    155 
    156 - Fixed STLport to abort after OOM instead of (silent) exit
    157 
    158 - Fixed 'system' and 'Gabi++' headers to be able to compile
    159   with API level &lt; 9
    160 
    161 - Fixed cpufeatures to not parse /proc/self/auxv
    162   See http://b.android.com/43055
    163 
    164 - Fixed ld.gold to not depending on host libstdc++, and in case
    165   of windows, library libgcc_sjlj_1.dll
    166 
    167 - Fixed Clang3.1 which emits inconsistent register list in .vsave
    168   and fails assembler. eg.
    169    .vsave  {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22}
    170   See https://android-review.googlesource.com/#/c/49930
    171 
    172 - Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport
    173   on MIPS
    174   See https://android-review.googlesource.com/#/c/51961
    175 
    176 - Fixed Clang3.1 to only enable exception by default for C++,
    177   not for C
    178 
    179 - Misc fixes in Clang3.1 to pass most GNU exception tests
    180 
    181 - Fixed script clang/clang++ in standalone NDK compiler to
    182   detect -cc1 and don't specify "-target" when found
    183 
    184 - Fixed ndk-build to observe NDK_APP_OUT set in Application.mk
    185 
    186 - Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already
    187   declared in setjmp.h
    188   See http://b.android.com/19851
    189 
    190 - Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11
    191   See http://clang.llvm.org/cxx_status.html
    192 
    193 - Fixed cygwin path in argument passed to HOST_AWK
    194 
    195 - Fixed ndk-build warning in windows when running from project's jni/
    196   directory.
    197   See See http://b.android.com/40192
    198 
    199 - Fixed ndk-build won't build if makefile has tailing whitespace in
    200   LOCAL_PATH definition
    201   See See http://b.android.com/42841
    202 
    203 
    204 OTHER CHANGES:
    205 
    206 - Enabled threading support in GCC/MIPS toolchain
    207 
    208 - Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match
    209   in GNU libstdc++
    210 
    211   See tests/build/b8247455-hidden-cxa/jni/Android.mk
    212 
    213 - Gabi++ and STLport static libraries are now built with hidden
    214   visibility except for EH helpers
    215 
    216 - STLport in ARM is now built in thumb mode
    217 
    218 - Added support for std::set_new_handler in Gabi++
    219   See http://b.android.com/52805
    220 
    221 - Enabled FUTEX in GNU libstdc++
    222 
    223 - ndk-build no longer copies prebuilt static library to project's
    224   obj/local/&lt;abi&gt;/directory
    225   See http://b.android.com/40302
    226 
    227 - Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk
    228   See http://b.android.com/21132
    229 
    230 - Built additional GNU libstdc++ libaries in thumb mode for ARM
    231 
    232 - Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt
    233   instructions with 32-bit FPU
    234 
    235 - Enabled graphite in GCC 4.6 and 4.7.  Allow more loop optimizations:
    236   -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten,
    237   -floop-interchange, -floop-strip-mine, -floop-parallelize-all,
    238   and -ftree-loop-linear
    239 
    240   See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
    241 
    242 - Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes
    243   and optimizes memory access pattern
    244 
    245   See http://polly.llvm.org
    246 
    247 - Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO
    248   via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold)
    249 
    250 - Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7
    251 
    252 - Enabled --text-reorder for ld.gold in GCC 4.7
    253 
    254 - GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef
    255   isinf, etc (*1), in bionic header.  If you have code which does the following
    256      #include <math.h>
    257        ... use isinf
    258      #include <cmath>
    259      #include <math.h>
    260        ... use isinf // fails
    261   The 2nd use of isinf may fail because cmath undefined isinf
    262 
    263   (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf,
    264        isnan, isnormal, isgreater, isgreaterequal, isless, islessequal,
    265        islessgreater, isunordered, signbit
    266 
    267 - Added APP_LDFLAGS.  See ANDROID-MK.html.
    268 
    269 - Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain,
    270   respectively.
    271 
    272 - Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom
    273 
    274 - Misc toolchain build script enhancements:
    275   1. Fixed a race condition in build-gcc.sh mingw build which used to prevent
    276      high degree of parallel build
    277   2. build-gabi++.sh and build-stlport.sh can now run from NDK package
    278      See http://b.android.com/52835
    279   3. Fixed run-tests.sh in MSys
    280   4. Better 64-bit host toolchain and canadian build supports
    281   5. Updated build-mingw64-toolchain.sh for modern versions
    282   6. Option to build libgnustl_static.a and stlport_static.a without hidden
    283      visibility
    284 
    285 
    286 -------------------------------------------------------------------------------
    287 android-ndk-r8d
    288 
    289 IMPORTANT CHANGES:
    290 
    291 - Added GCC 4.7 compiler.  Since GCC 4.6 is still the default,
    292   you need to explicitly enable it:
    293   1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.7 or add it
    294      in Application.mk.
    295   2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
    296      eg. "--toolchain=arm-linux-androideabi-4.7"
    297 
    298   This feature is experimental now but welcome to try and report issues.
    299 
    300 - Added stlport exception support via gabi++.  Note that the new gabi++
    301   depends on dlopen, etc, meaning that:
    302   1. libstlport_static.a can no longer be used in "static" executable (-static,
    303      only possible with standalone toolchain).  "dynamic" executable (eg.
    304      include $(BUILD_EXECUTABLE)) can link fine because compiler impliciently adds -ldl
    305   2. If your project links with "-nostdlib -Wl,--no-undefined", you need to provide
    306      your own -ldl
    307 
    308   See CPLUSPLUS-SUPPORT.html.
    309 
    310   This feature is experimental now and works better with GCC 4.6/4.7
    311   than with GCC 4.4.3 and clang3.1.  Welcome to try and report issues.
    312 
    313 - Add -mstack-protector-guard= option for x86 to choose between "global"
    314   (default, compatible with older bionic) and "tls" (new %gs:20) for
    315   -fstack-protector, -fstack-protector-all, and -fstack-protector-strong
    316   (GCC 4.6+).  Note that this alone doesn't enable any -fstack-protector*
    317 
    318 - Add android_setCpu() to sources/android/cpufeatures/cpu-features.c
    319   when auto-detection via /proc isn't possible in and after JB
    320   See http://code.google.com/p/chromium/issues/detail?id=164154
    321 
    322 
    323 IMPORTANT BUG FIXES:
    324 
    325 - Fixed un-needed rebuild of object files via ndk-build
    326   See http://code.google.com/p/android/issues/detail?id=39810
    327 
    328 - Fixed r8c linker fail in MacOSX 10.6.x with error reads:
    329 
    330     dyld: lazy symbol binding failed: Symbol not found: _memmem
    331     Referenced from: ...../arm-linux-androideabi/bin/ld
    332     Expected in: /usr/lib/libSystem.B.dylib
    333 
    334   r8c was packaged on 10.7 machine which produced binaries not
    335   compatible with 10.6 SDK/NDK still supports.  Will build it
    336   on 10.6 from now on.
    337 
    338 - Removed '-x c++' from clang++ in standalone.
    339   See http://code.google.com/p/android/issues/detail?id=39089
    340 
    341 - Fixed issues using NDK_TOOLCHAIN_VERSION=clang3.1 in cygwin
    342   See http://code.google.com/p/android/issues/detail?id=39585
    343 
    344 - Fixed make-standalone-toolchain.sh to create standalone toolchain
    345   on cygwin and MinGW, which works for all cygwin, MingGW, and CMD.exe.
    346   See http://code.google.com/p/android/issues/detail?id=39915 and
    347   http://code.google.com/p/android/issues/detail?id=39585 (again)
    348 
    349 - Added  missing SL_IID_ANDROIDBUFFERQUEUESOURCE in android-14 for
    350   ARM/X86.  See http://code.google.com/p/android/issues/detail?id=40625
    351 
    352 - Fixed x86 cpu detection for MOVBE
    353   See http://code.google.com/p/android/issues/detail?id=39317
    354 
    355 - Fixed an issue preventing STL dependencies to C++ sources not
    356   in .cpp extension.
    357 
    358 - Fixed GCC 4.6 ARM ICE at reload1.c:1061
    359   See http://code.google.com/p/android/issues/detail?id=20862
    360 
    361 - Fixed GCC 4.4.3 ARM ICE at emit-rtl.c:1954
    362   See http://code.google.com/p/android/issues/detail?id=22336
    363 
    364 - Fixed GCC 4.4.3 ARM ICE at postreload.c:396
    365   See http://code.google.com/p/android/issues/detail?id=22345
    366 
    367 - Fixed GCC 4.6/4.7 elides lambdas
    368   See http://code.google.com/p/android/issues/detail?id=35933
    369 
    370 
    371 OTHER BUG FIXES:
    372 
    373 - Fixed NDK headers
    374   1. Fixed __WINT_TYPE__ and wint_t to be the same type
    375   2. Corrected typo in &lt;android/bitmap.h&gt;
    376      See http://code.google.com/p/android/issues/detail?id=15134
    377   3. Corrected typo in &lt;errno.h&gt;
    378      See http://code.google.com/p/android/issues/detail?id=15134
    379   4. Check the presence of __STDC_VERSION__ in &lt;sys/cdefs.h&gt;
    380      See http://code.google.com/p/android/issues/detail?id=14627
    381   5. Re-org headers byteswap.h and dirent.h
    382   6. Fixed limits.h to include page.h which provides PAGE_SIZE
    383      See http://code.google.com/p/android/issues/detail?id=39983
    384   7. Fixed return type of glGetAttribLocation and glGetUniformLocation
    385      from int to GLint.
    386   8. Fixed __BYTE_ORDER for x86
    387      See http://code.google.com/p/android/issues/detail?id=39824
    388 
    389 - Fixed ndk-build to not overwrite -Os with -O2 in ARM
    390 
    391 - Fixed to allow overwriting HOST_AWK, HOST_SED, and HOST_MAKE.
    392 
    393 - Fixed ld.gold issue on fsck_msdos build linking objects built by ICC
    394 
    395 - Fixed ARM EHABI support in clang conforming to spec.
    396 
    397 - Fixed GDB to shorten the time spending on walking target's link map upon
    398   solib events.  See http://code.google.com/p/android/issues/detail?id=38402
    399 
    400 - Fixed missing libgcc.a when linking shared libraries
    401 
    402 
    403 OTHER CHANGES:
    404 
    405 - Backported 64-bit built-in atomic functions for ARM to GCC 4.6
    406 
    407 - Documentation for audio output latency, other misc docs/ fixes
    408 
    409 - Non-void functions in debug build by Clang now raise SIGILL on path w/o
    410   return statement
    411 
    412 - make-standalone-toolchain.sh now accepts surffix "-clang3.1" which is
    413   equivalent to adding "--llvm-version=3.1" on GCC 4.6 toolchain.
    414 
    415 - Changed GCC and Clang bug report URL to http://source.android.com/source/report-bugs.html
    416 
    417 - Added ARM ELF support to llvm-objdump.
    418 
    419 - Suppressed warning "treating c input as c++" in clang.
    420 
    421 - Only 32-bit of libiberty.a is built (placed at lib32/)
    422 
    423 
    424 -------------------------------------------------------------------------------
    425 android-ndk-r8c
    426 
    427 IMPORTANT CHANGES:
    428 
    429 - Added Clang 3.1 compiler.  Since GCC 4.6 is still the default,
    430   you need to explicitly enable it:
    431   1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.1 or add it
    432      in Application.mk.
    433   2. For standalone: Add "--llvm-version=3.1" to make-standalone-toolchain.sh
    434      and replace CC and CXX in your makefile with &lt;tool-path&gt;/bin/clang
    435      and &lt;tool-path&gt;/bin/clang++.
    436 
    437   See STANDALONE-TOOLCHAIN.html for details.
    438   This feature is experimental now but welcome to try and report issues.
    439 
    440 - Gold linker ld.gold is now available in Windows toolchain.  Gold is also the
    441   default linker for ARM/X86 on all hosts.  You may override it to use ld.bfd
    442   linker by adding LOCAL_LDFLAGS += -fuse-ld=bfd in Android.mk, or pass
    443   -fuse-ld=bfd to g++/clang++ commandline which does the linking.
    444 
    445 - ndk-build[.cmd] and ndk-gdb now check and bail out if NDK path contains space.
    446 
    447 - Changes in API level
    448   1. Projects with android-10 .. 13 specified in APP_PLATFORM, project.properties or
    449      default.properties will link against android-9 instead of android-14.
    450   2. Executable in project with android-16 (Jelly Bean) or higher is compiled
    451      with -fPIE (position-independent executables).  A new APP_PIE allow manual control
    452      of this behavior.  See APPLICATION-MK.html for details.  Note that all API level
    453      above 14 still link against platforms/android-14. ie. no new platforms/android-N
    454      is added.
    455   3. ndk-build now warns about the adjusted API level is larger than android:minSdkVersion
    456      in project's AndroidManifest.xml.
    457 
    458 - ARM: Updated 'cpu-features' helper library to include 9 more ARM-specific features
    459 
    460   See sources/android/cpufeatures/cpu-features.h for details.
    461 
    462 - X86: long double is still a distinct type but it's 8-byte in size now (same as double)
    463 
    464 - APP_ABI=armeabi-v7a: 
    465   1. -march=armv7-a is also passed to linker to link v7-specific libraries and crt*.o
    466   2. -mfpu=vfpv3-d16 is added by ndk-build instead of -mfpu=vfp in the previous releases.
    467 
    468 
    469 IMPORTANT BUG FIXES:
    470 
    471 - Fixed an issue when make-standalone-toolchain.sh is run under root privilege resulting
    472   in standalone toolchain inaccessible to some.
    473   1. All files/executables attributes in NDK release package are set to readable/executable to all
    474   2. The ownership/group of file libstdc++.a is now preserved when copied
    475 
    476   See http://code.google.com/p/android/issues/detail?id=35279
    477 
    478 - Removed redundant \r from Windows prebuilt echo.exe. The redundant \r in gdb.setup fails
    479   GDB because it incorrectly becomes part of the path.
    480 
    481   See http://code.google.com/p/android/issues/detail?id=36054
    482 
    483 - Fixed windows parallel builds that sometimes failed due to timing issues in the host-mkdir
    484   implementation.
    485 
    486   See http://code.google.com/p/android/issues/detail?id=25875
    487 
    488 - Fixed GCC 4.4.3 GNU libstdc++ to NOT merge typeinfo names by default.
    489 
    490   See
    491     toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
    492     http://code.google.com/p/android/issues/detail?id=22165
    493     https://groups.google.com/forum/#!msg/android-ndk/FlnuAOIKHOo/kLEwaBso7KYJ%5B1-25%5D
    494 
    495 - Fixed crash on null context in GCC 4.6 cp/mangle.c::write_unscoped_name, where gcc
    496   may crash when context == NULL and dereferenced in TREE_CODE
    497 
    498 - Fixed GCC 4.4.3 crashes on NEON specific typedef for float
    499 
    500   See http://code.google.com/p/android/issues/detail?id=34613
    501 
    502 - Fixed the STLport internal _IteWrapper::operator*() implementation where stale
    503   stack location holding the dereferenced value is returned and leads to runtime crashes
    504 
    505   See http://code.google.com/p/android/issues/detail?id=38630
    506 
    507 - ARM: Fixed ARM GCC 4.4.3/4.6 g++ to not warn about "the mangling of &lt;va_list&gt; has
    508   changed in GCC 4.4".  Switch -Wno-psabi is no longer needed to workaround.
    509 
    510 - ARM: Fix an issue when project with .arm/.neon suffixes in LOCAL_SRC_FILES also
    511   uses APP_STL.  With APP_STL, ndk-build searches for C++ file in LOCAL_SRC_FILES before
    512   adding STL header/lib paths to compilation.  Fix ndk-build to filter out .arm and .neon
    513   suffixes before the search, otherwise item in LOCAL_SRC_FILESfile like myfile.cpp.arm.neon
    514   won't be considered C++.
    515 
    516 - ARM: Fixed binutils-2.21/ld.bfd to be capable of linking object from older binutils w/o
    517   tag_FP_arch, which used to produce error message reads
    518 
    519     BFD (GNU Binutils) 2.21 assertion fail
    520          ...../binutils/binutils-2.21/bfd/elf32-arm.c:10190
    521 
    522   The root cause is that ARM's binutils-2.21/ld.bfd performs sanity check and asserts
    523   when "tag_FP_arch==0 && tag_ABI_HardFP_use !=0".  This can happen in object using FP
    524   linked by older binutils when tag_FP_arch isn't produced at all (thus gets the default
    525   "zero" in new linker).
    526 
    527   See http://code.google.com/p/android/issues/detail?id=35209
    528 
    529 - ARM: Removed warning when binutils-2.19/ld links prebuilt object by newer binutils-2.21
    530   which reads
    531 
    532     Unknown EABI object attribute 44
    533 
    534   The reason is that all prebuilt crt*.o and C++ STL are built with later GCC 4.6/binutils-2.21
    535   and contain new tag "DIV_use" with value set to "Not allowed".  This tag can be safely ignored
    536   by the original GCC4.4.3/binutils-2.19 toolchain since it is only for sanity check.
    537 
    538 - ARM: Fixed an issue in GNU stdc++ compilation with both -mthumb and -march=armv7-a, by
    539   making make-standalone-toolchain.sh to also populate headers/libs in sub-directory
    540   "armv7-a/thumb".
    541 
    542   See http://code.google.com/p/android/issues/detail?id=35616
    543 
    544 - ARM: Fix error: unresolvable R_ARM_THM_CALL relocation
    545 
    546   See
    547     http://code.google.com/p/android/issues/detail?id=35342
    548     https://groups.google.com/forum/?fromgroups#!topic/android-ndk/HaLycHImqL8
    549 
    550 - ARM: Fixed internal compiler error at "reload1.c:3633".  The reason is that ARM back-end
    551   expects wrong operand type when sign-extend from char.
    552 
    553   Back port fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099
    554 
    555 - ARM: Fixed internal compiler error with negative shift amount.
    556     int foo(int a, int b)
    557     {
    558         return a | (b &lt;&lt; -3);
    559     }
    560 
    561   See http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00594.html
    562 
    563 - X86: Fixed -fstack-protector, which is also the default for ndk-build x86 ABI
    564 
    565 - MIPS: Fixed stlport endianess by setting _STLP_LITTLE_ENDIAN to 1 when compiling
    566   MIPS' libstlport_*
    567 
    568 - MIPS: Fixed GCC __builtin_unreachable issue compiling LLVM
    569 
    570   See Bug 54369: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369
    571 
    572 - MIPS: Backport fix to bug 50380: cc1 hangs eating 100% CPU
    573 
    574   See
    575     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50380
    576     http://gcc.gnu.org/viewcvs/trunk/gcc/cse.c?r1=177852&r2=182498&pathrev=182498
    577 
    578 - GDB: Disable python support in gdb-7.x at build, otherwise gdb-7.x/configure may
    579   pick up whatever python in host and build gdb with hard-wired dependency to specific
    580   version of python.
    581 
    582   See http://code.google.com/p/android/issues/detail?id=36120
    583 
    584 - GDB: Fixed ndk-gdb when APP_ABI contains "all" and matches none of known architecture
    585 
    586   See http://code.google.com/p/android/issues/detail?id=35392
    587 
    588 - GDB: Fixed Windows pathname support.  Keep ':' if it looks like it could be part of
    589   a Windows path starting with a drive letter.
    590 
    591   See
    592     http://sourceware.org/ml/gdb/2011-06/msg00030.html
    593     http://sourceware.org/bugzilla/show_bug.cgi?id=12843
    594 
    595 - GDB: Fixed add HW breakpoint support for ARM in gdbserver
    596 
    597   See http://sourceware.org/ml/gdb-patches/2011-09/msg00200.html
    598 
    599 - GDB: Fixed to only read current solibs when linker is consistent.  Speeds up solib
    600   event handling.
    601 
    602   See http://code.google.com/p/android/issues/detail?id=37677
    603 
    604 - GDB: Fixed to make repeated attempts to find solib breakpoint.  GDB will retry enable_break()
    605   during every call to svr4_current_sos() until it succeeds.
    606 
    607   See https://android-review.googlesource.com/#/c/43563
    608 
    609 - GDB: Fixed an issue where gdb cannot stop on breakpoints placed on dlopen-ed
    610   libraries.
    611 
    612   See http://code.google.com/p/android/issues/detail?id=34856
    613 
    614 - GDB: Fixed SIGILL in dynamic linker when calling dlopen(), on system
    615   where /system/bin/linker is stripped of symbols and rtld_db_dlactivity()
    616   is implemented as Thumb, due to not preserving LSB of sym_addr
    617 
    618   See http://code.google.com/p/android/issues/detail?id=37147
    619 
    620 
    621 OTHER BUG FIXES:
    622 
    623 - Fixed NDK headers
    624   1. Fixed arch-mips/include/asm/* previously incorrectly cleaned from original kernel
    625      See https://android-review.googlesource.com/#/c/43335
    626   2. Replace struct member data "__unused" with "__linux_unused" in linux/sysctl.h
    627      and linux/icmp.h to avoid conflict with "#define __unused" in sys/cdefs.h
    628   3. Fixed fenv.h to enclosed C functions with __BEGIN_DECLS/__END_DECLS
    629   4. Removed unimplemented functions in malloc.h
    630   5. Fixed stdint.h.  See http://code.google.com/p/android/issues/detail?id=1952
    631   6. Fixed preprocessor macros in &lt;arch&gt;/include/machine/*
    632   7. Replaced link.h for mips with new version for all platforms
    633   8. Remove linux-unistd.h
    634   9. Move GLibc-specific macros LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX from
    635      &lt;pthread.h&gt; to &lt;limits.h&gt;.
    636 
    637 - Fixed a buffer overflow in ndk-stack-parser.
    638 
    639 - Fixed _STLP_USE_EXCEPTIONS, when not defined, to omit all declarations
    640   and uses of __Named_exception.  Compile and use __Named_exception only
    641   when STLport is being allowed to use exceptions.
    642 
    643 - Fixed to build Linux-only NDK packages (invoked as follow) w/o also building windows
    644 
    645     ./build/tools/make-release.sh --force --systems=linux-x86
    646 
    647 - Fixed libc.so to not export atexit() and __do_handler.  These symbols are exported
    648   on ARM by the system version of the C library to support legacy native libraries.
    649   NDK-generated should never reference them directly. Instead, each shared library or
    650   executable should embed its own version of these symbols, provided by crtbegin_*.o
    651 
    652   If your project is linked with "-nostdlib -Wl,--no-undefined", you need to provide
    653   your own __dso_handle because crtbegin_so.o isn't linked.  The content of __dso_handle
    654   doesn't matter.  eg.
    655 
    656     extern "C" {
    657       extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
    658       void *__dso_handle;
    659     }
    660 
    661 - ARM: Fixed symbol decoder (used in objdump) for plt entries to generate more
    662   readable form function@plt
    663 
    664 - X86: Removed the following symbols introduced in GCC 4.6/libgcc.a from X86's libc.so
    665 
    666     __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2
    667 
    668 - MIPS: Removed unused .ctors, .dtors, and .eh_frame in MIPS crt*_so.S.
    669 
    670 - GDB: ndk-gdb now only takes the last line of output for ndk-build DUMP_XXXX.  This
    671   ensures that if Application.mk or Android.mk do print something with $(info ...),
    672   it doesn't get injected into the result of DUMP_XXX.
    673 
    674   See https://groups.google.com/d/msg/android-ndk/-/ew0lTWGr1UEJ
    675 
    676 
    677 OTHER CHANGES:
    678 
    679 - Removed arch-x86 and arch-mips headers from platforms/android-{3,4,5,8}.
    680   Those headers are incomplete to begin with, since both X86 and MIPS ABIs are only
    681   supported at API &ge; 9
    682 
    683 - Simplified c++ include path in standalone package, eg. change
    684 
    685     &lt;path&gt;/arm-linux-androideabi/include/c++/4.6.x-google
    686   to
    687     &lt;path&gt;/include/c++/4.6/
    688 
    689   See http://code.google.com/p/android/issues/detail?id=35279
    690 
    691 - Enhanced ndk-build to recognize more C++ file extensions by default:
    692 
    693     .cc .cp .cxx .cpp .CPP .c++ .C
    694 
    695   You may still use LOCAL_CPP_EXTENSION to override it
    696 
    697 - Fixed an issue in samples/san-angeles about black/freeze frame
    698   at re-launch.
    699 
    700 - Replaced deprecated APIs in NDK samples
    701   1. hello-gl2 from android-5 to android-7
    702   2. native-activity from android-9 to android-10
    703   3. native-audio from android-9 to android-10
    704   4. native-plasma from android-9 to android-10
    705 
    706   See http://code.google.com/p/android/issues/detail?id=20017
    707 
    708 - Added new branding for Android executables with a simpler scheme in section
    709   .note.android.ident (defined in crtbegin_static/dynamic.o) so that debugging
    710   tools can act accordingly.
    711 
    712   The structure member and values are defined as follows:
    713 
    714   static const struct {
    715     int32_t namesz;  /* = 8,  sizeof ("Android") */
    716     int32_t descsz;  /* = 1 * sizeof(int32_t) */
    717     int32_t type;    /* = 1, ABI_NOTETYPE */
    718     char name[sizeof "Android"];  /* = "Android" */
    719     int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
    720   }
    721 
    722   Previous branding in section .note.ABI-tag is deprecated.
    723 
    724 - Added a new script run-tests-all.sh which calls run-tests.sh and standalone/run.sh
    725   with various conditions.  Script run-tests.sh w/o --abi is also enhanced to compile
    726   most of tests for all supported ABI and run on all attached devices
    727 
    728 
    729 -------------------------------------------------------------------------------
    730 android-ndk-r8b
    731 
    732 IMPORTANT BUG FIXES:
    733 
    734 - Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
    735   and for static libraries.  List file generation is sped up, and it is no longer
    736   regenerated and causes whole project to be rebuilt every time.
    737 
    738 - Fixed several issues in ndk-gdb
    739 
    740     * to pass flags "-e", "-d", "-s" to adb more consistently
    741 
    742     * to accept device serial name containing space
    743 
    744     * to also pull /system/bin/link, so gdb on host can set a breakpoint in
    745       __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
    746       when dlopen() is called)
    747 
    748 - Fixed "ndk-build clean" in windows which failed to remove ./libs/*/lib*.so
    749 
    750 - Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
    751 
    752 - Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
    753 
    754 - Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
    755 
    756   Fixed __start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
    757   "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
    758   address and crash the program or do wield things.  With "call", return address is pushed
    759   on stack and unwinding stops correctly at _start.  Note that __libc_init never returns, so
    760   this fix wont affect normal program execution.  But just in case it "does" return,
    761   jump to address 0 and halt.
    762 
    763 
    764 IMPORTANT CHANGES:
    765 
    766 - GCC 4.6 toolchain
    767 
    768   Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
    769   the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6).  Note:
    770 
    771     * GCC 4.6 is the default.  You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
    772       to select the original one.
    773 
    774     * Gold linker support is only available for ARM and x86 architectures on linux-86
    775       and  darwin-x86 hosts.  It's not turned on by default.  Add
    776       "LOCAL_LDFLAGS += -fuse-ld=gold" in Android.mk to enable it.
    777 
    778     * You will need the new GDB to debug program compiled with -fPIE (including
    779       binaries in Jelly Bean image)
    780 
    781     * The binutils 2.21 ld also contain back-port of fixes from 2.22
    782 
    783       * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
    784         libraries.  See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
    785 
    786       * Fuxed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
    787         if they are valid.  Otherwise program built with -fPIE can't be debugged.
    788         http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
    789 
    790     * Sincos optimization is not enabled for compatibility with old platforms which don't have
    791       it.
    792 
    793 - NX and relro/bind_now protections are enabled by default
    794 
    795   Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
    796   protection against buffer overflow attacks by enabling NX bit on stack and heap.
    797 
    798   Add "-z relro -z now" for linker to harden internal data sections after linking
    799   against security vulnerabilities due to memory corruption.  See
    800 
    801   http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
    802   http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
    803 
    804   For those who really needs it, these features can be disabled by
    805   1. Passing "--execstack" to assembler and "-z execstack" to linker to
    806      disable NX protection.
    807      Passing "-z norelro -z lazy" to linker to disable second protection.
    808   2. In NDK jni/Android.mk, set the following
    809      LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
    810      LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
    811   see $NDK/docs/ANDROID-MK.html for details
    812 
    813 - Brand executables with .note.ABI-tag section
    814 
    815   Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
    816   tools to act accordingly.  The structure member and values are defined as follow.
    817 
    818   static const struct {
    819     int32_t	namesz;  /* = 4,  sizeof ("GNU") */
    820     int32_t	descsz;  /* = 6 * sizeof(int32_t) */
    821     int32_t	type;    /* = 1 */
    822     char	name[sizeof "GNU"];  /* = "GNU" */
    823     int32_t	os;      /* = 0 */
    824     int32_t	major;   /* = 2 */
    825     int32_t	minor;   /* = 6 */
    826     int32_t	teeny;   /* = 15 */
    827     int32_t	os_variant;  /* = 1 */
    828     int32_t	android_api; /* = 3, 4, 5, 8, 9, 14 */
    829   }
    830 
    831 
    832 OTHER BUG FIXES:
    833 
    834 - Backport several patches to fix MIPS issues.
    835 
    836     * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
    837       mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
    838 
    839     * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
    840       ld segfaults when using --gc-sections
    841 
    842     * http://sourceware.org/ml/binutils/2011-05/msg00198.html
    843       Refix MIPS GOT_PAGE counting
    844 
    845     * Follow warning symbol link in mips_elf_count_got_symbols.
    846 
    847     * Follow warning symbol link in mips_elf_allocate_lazy_stub.
    848 
    849     * Move MIPS .dynamic to the data segment, so that it is writable.
    850       Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
    851 
    852     * Remove -mno-shared as default in MIPS toolchain.  -fPIC (or -fpic if supported)
    853       is default for Android toolchain.  Without explicitly specifying one of
    854       -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
    855       which turns off PIC.  Fixed it not to add -mno-shared as default.
    856 
    857 - Fixed wrong package names in samples hello-jni and two-libs so tests project
    858   underneath can compile
    859 
    860 
    861 OTHER CHANGES:
    862 
    863 - New binaries locations
    864 
    865     * gdbserver is moved from toolchain/&lt;arch-os-ver&gt;/prebuilt/gdbserver to
    866       prebuilt/android-&lt;arch&gt;/gdbserver/gdbserver
    867 
    868     * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
    869 
    870     * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
    871       sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
    872       sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
    873 
    874     * libbfd.a and libintl.a are moved from lib/ to lib32/
    875 
    876 - Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
    877     it describes are specpfic to BSD (ie. don't exist in Linux)
    878 
    879 - Various scripts to rebuild/test NDK toolchain
    880 
    881     * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
    882       Win32 and Win64 executables.
    883 
    884     * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
    885       that we need to build the NDK toolchain binaries.
    886 
    887     * New build-host-gcc.sh and build-host-gdb.sh
    888 
    889     * Add tests/check-release.sh to check the content of a given NDK installation directory,
    890       or an existing NDK package.
    891 
    892     * Rewrite standalone tests: tests/standalone/run.sh
    893 
    894 
    895 -------------------------------------------------------------------------------
    896 android-ndk-r8
    897 
    898 IMPORTANT BUG FIXES:
    899 
    900 - Fixed a typo in GAbi++ implementation where result of dynamic_cast&lt;D&gt;(b)
    901   of base class object 'b' to derived class D is adjusted wrong
    902   (in the opposite direction from base class). See
    903   http://code.google.com/p/android/issues/detail?id=28721
    904 
    905 - Fixed an issue in make-standalone-toolchain.sh which fails to copy
    906   libsupc++.*.
    907 
    908 
    909 IMPORTANT CHANGES:
    910 
    911 - Added support for the mips ABI.
    912 
    913   This release of the Android NDK contains support for 'mips' ABI.
    914   To generate machine runs on MIPS-based Android devices, please add 'mips' to
    915   APP_ABI definition in your Application.mk, or 'all' to generate binaries for
    916   all currently supported ABI.  See docs/CPU-MIPS.html for details.
    917 
    918 - You can build a standalone mips toolchain using the
    919   --toolchain=mipsel-linux-android-4.4.3 option when calling
    920   make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
    921 
    922 
    923 OTHER BUG FIXES:
    924 
    925 - Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
    926   the user has redefined the SHELL environment variable (which can happen under
    927   the hood when installing a variety of development tools on Windows)
    928 
    929 
    930 -------------------------------------------------------------------------------
    931 android-ndk-r7c
    932 
    933 This release of the NDK includes an important fix for Tegra2-based devices,
    934 and a few additional fixes and improvements:
    935 
    936 IMPORTANT BUG FIXES:
    937 
    938 - Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
    939   The files provided with NDK r7b where not configured properly, resulting
    940   in crashes on Tegra2-based devices and others when trying to use certain
    941   floating-point functions (e.g., cosf, sinf, expf).
    942 
    943 
    944 IMPORTANT CHANGES:
    945 
    946 - Added support for custom output directories through the NDK_OUT
    947   environment variable. When defined, this variable is used to store all
    948   intermediate generated files, instead of $PROJECT_PATH/obj.
    949 
    950   The variable is also recognized by ndk-gdb.
    951 
    952 - Added support for building modules with hundreds or even thousand of source
    953   files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
    954 
    955   This change forces the NDK build system to put most linker or archiver
    956   options into list files, to work-around command-line length limitations
    957   (particularly on Windows). See docs/ANDROID-MK.html for details.
    958 
    959 
    960 OTHER BUG FIXES:
    961 
    962 - Fixed android_getCpuCount() implementation in the cpufeatures helper
    963   library. The previous implementation only listed the cores that were
    964   active the first time the function was called. This behavior could
    965   provide results that were too low on devices that disable and enable
    966   cores dynamically.
    967 
    968 -------------------------------------------------------------------------------
    969 android-ndk-r7b
    970 
    971 IMPORTANT BUG FIXES:
    972 
    973 - Updated &lt;sys/atomics.h&gt; to avoid correctness issues on some multi-core
    974   ARM-based devices. Rebuild your unmodified sources with this version of the
    975   NDK and this problem should completely be eliminated. For more details, read
    976   docs/ANDROID-ATOMICS.html.
    977 
    978 - Reverted to binutils 2.19 to try to fix debugging issues that
    979   appeared in NDK r7 (which switched to binutils 2.20.1).
    980 
    981 - Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
    982   of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
    983 
    984 - Fixed native Windows build (ndk-build.cmd). Other build modes were not
    985   affected. The fixes include:
    986 
    987     * Removed an infinite loop / stack overflow bug that happened when trying
    988       to call ndk-build.cmd from a directory that was _not_ the top of your
    989       project path (e.g. any sub-directory of it).
    990 
    991     * Fixed a problem where the auto-generated dependency files were ignored.
    992       This meant that updating a header didn't trigger recompilation of sources
    993       that included it.
    994 
    995     * Fixed a problem where special characters in files or paths, other than
    996       spaces and quotes, were not correctly handled.
    997 
    998 - Fixed the standalone toolchain to generate proper binaries when using
    999   -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
   1000   use -lgnustl_shared if you want to link against the shared library
   1001   version or -lstdc++ for the static version.
   1002 
   1003   See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
   1004 
   1005 - Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
   1006   libsupc++.a while the file was at the right location.
   1007 
   1008 - Fixed cygwin C++ link when not using any specific C++ runtime through
   1009   APP_STL.
   1010 
   1011 OTHER CHANGES:
   1012 
   1013 - When your application uses the GNU libstdc++ runtime, the compiler will
   1014   no longer forcibly enable exceptions and RTTI. This change results in smaller
   1015   code. If you need these features, you need to do either one of these:
   1016 
   1017      1/ Enable exceptions and/or RTTI explicitly in your modules or
   1018         Application.mk. (recommended)
   1019 
   1020      2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
   1021         in your Application.mk. See docs/APPLICATION-MK.html for more details.
   1022 
   1023 - ndk-gdb now works properly when your application has private services
   1024   running in independent processes. It debugs the main application process,
   1025   instead of the first process listed by 'ps', which is usually a service
   1026   process.
   1027 
   1028 - Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
   1029   and always compile certain source files (but not all) to 32-bit instructions.
   1030 
   1031 - stlport: Refresh the sources to match the Android platform version. This
   1032   update fixes a few minor bugs:
   1033 
   1034    - Fixed instantiation of an incomplete type.
   1035    - Fixed minor == versus = typo
   1036    - Use memmove instead of memcpy in string::assign
   1037    - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
   1038 
   1039   For complete details, see the commit log.
   1040 
   1041 - stlport: Removed 5 un-necessary static initializers from the library.
   1042 
   1043 - The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
   1044   armeabi instead. This had no impact on correctness, but using the right
   1045   ABI should provide for slightly better performance.
   1046 
   1047 - the 'cpu-features' helper library was updated to report three optional
   1048   x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
   1049   for more details.
   1050 
   1051 - docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
   1052   of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
   1053 
   1054 - cygwin: ndk-build no longer creates an empty "NUL" file in the current
   1055   directory when invoked.
   1056 
   1057 - cygwin: better automatic dependency detection. It previously didn't work
   1058   properly in the following case:
   1059 
   1060     - When the cygwin drive prefix was not /cygdrive
   1061     - When using drive-less mounts, e.g. when Cygwin would translate /home
   1062       to \\server\subdir instead of C:\Some\Dir.
   1063 
   1064 - cygwin: ndk-build does not try to use the native Windows tools under
   1065   $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
   1066   GNU Make.
   1067 
   1068 -------------------------------------------------------------------------------
   1069 android-ndk-r7
   1070 
   1071 IMPORTANT CHANGES:
   1072 
   1073 - New official NDK APIs for Android 4.0 (a.k.a. API level 14),
   1074   which adds the following native features to the platform:
   1075 
   1076      - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
   1077        1.0.1 Standard.  New headers &lt;OMXAL/OpenMAXAL.h&gt; and
   1078        &lt;OMXAL/OpenMAXAL_Android.h&gt; are provided to allow
   1079        applications targeting this API level to perform multimedia output
   1080        directly from native code using a new Android-specific buffer
   1081        queue interface.  For more details, see docs/openmaxal/index.html
   1082        and http://www.khronos.org/openmax/.
   1083 
   1084      - Updated the native audio API based on the Khronos Group OpenSL ES
   1085        1.0.1&#0153; Standard.  API Level 14 can now decode compressed
   1086        audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
   1087        docs/opensles/index.html and http://www.khronos.org/opensles/.
   1088 
   1089 - CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
   1090   environment variable to 'ccache' (or the path to your ccache binary), as in:
   1091 
   1092         export NDK_CCACHE=ccache
   1093 
   1094   The NDK build system will automatically use it when compiling any source
   1095   file. For more information about CCache, see http://ccache.samba.org  
   1096 
   1097 - You can now set your APP_ABI to 'all' to indicate that you want to build
   1098   your NDK modules for all the ABIs supported by your given NDK release.
   1099 
   1100   This means that either one of these two lines in your Application.mk are
   1101   equivalent with this release:
   1102 
   1103         APP_ABI := all
   1104         APP_ABI := armeabi armeabi-v7a x86
   1105 
   1106   This also works if you define APP_ABI on the command-line, as in:
   1107 
   1108         ndk-build APP_ABI=all
   1109 
   1110   Which is a quick way to check that your project builds for all supported
   1111   ABIs without changing its Application.mk file.
   1112 
   1113 - Shorter paths to source and object files used in build commands.
   1114   When invoking $NDK/ndk-build from your project path, the paths to the
   1115   source, object and binary files passed to the build commands will be
   1116   significantly shorter now because they are now passed relative to the
   1117   current directory.
   1118 
   1119   This is useful when building projects with a lot of source files, to
   1120   avoid limits on the maximum command line length supported by your host
   1121   operating system.
   1122 
   1123   The behaviour is unchanged if you invoked ndk-build from a sub-directory
   1124   of your project tree, or if you define NDK_PROJECT_PATH to point to a
   1125   specific directory.
   1126 
   1127 - New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
   1128   features (RTTI or Exceptions) your module uses. This is especially handy
   1129   if you have prebuilt modules that depend on them since this will ensure
   1130   the final link will work correctly.
   1131 
   1132   See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
   1133 
   1134 - WARNING: VERY EXPERIMENTAL!!
   1135 
   1136      You can now build your NDK sources on Windows *without* Cygwin.
   1137      Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
   1138      command-line, when in your project path.
   1139 
   1140      The script takes exactly the same arguments than the original
   1141      ndk-build one.
   1142 
   1143      Note that the Windows NDK package comes with its own prebuilt
   1144      binaries for GNU Make, Awk and other tools required by the build,
   1145      i.e. you shouldn't need to install anything else to get a working
   1146      build system.
   1147 
   1148      IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
   1149                 at the moment!
   1150 
   1151      This feature is still very experimental, but feel free to try it
   1152      and report issues on the public forum (android-ndk (a] googlegroups.com)
   1153      or the public bug database (http://b.android.com).
   1154 
   1155      Note that all samples and unit tests successfully compile with it.
   1156 
   1157 IMPORTANT BUG FIXES:
   1158 
   1159 - Imported shared libraries are now installed by default to the target
   1160   installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
   1161   defined in your Application.mk.
   1162 
   1163   This means that if a top-level module "foo" imports a module "bar", then
   1164   both libfoo.so and libbar.so will be copied to the install location.
   1165 
   1166   Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
   1167   too.
   1168 
   1169   If you define APP_MODULES explicitly, the behaviour is unchanged.
   1170 
   1171 - Static library imports are now properly transitive. If top-level module
   1172   'foo' imports static library 'bar' which imports static library 'zoo',
   1173   the libfoo.so will now be linked against both libbar.a and libzoo.a.
   1174 
   1175 - ndk-gdb now works correctly for activities with multiple categories
   1176   in their MAIN intent filters.
   1177 
   1178 OTHER CHANGES:
   1179 
   1180 - docs/STABLE-APIS.html: Added missing documentation listing EGL
   1181   as a supported stable API, starting from API level 9.
   1182 
   1183 - Add a new C++ support runtime named "gabi++". More details about it
   1184   are available in the updated docs/CPLUSPLUS-SUPPORT.html.
   1185 
   1186 - The STLport C++ runtimes now support RTTI (no exceptions yet though).
   1187 
   1188 - Add a new C++ support runtime named "gnustl_shared" corresponding to the
   1189   shared library version of GNU libstdc++ v3 (GPLv3 license). See more
   1190   info at docs/CPLUSPLUS-SUPPORT.html
   1191 
   1192 - You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
   1193 
   1194         LOCAL_CPP_EXTENSION := .cpp .cxx
   1195 
   1196   To compile both foo.cpp and bar.cxx as C++ sources.
   1197 
   1198 - Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
   1199   Note that this does *not* change the NDK ABIs for the corresponding
   1200   libraries, since each extension must be probed at runtime by the client
   1201   application.
   1202 
   1203   Which extensions are available depends on your actual device (and GPU
   1204   drivers), not the version of the platform it provides.
   1205 
   1206   The header changes simply add new constants and types to make it easier
   1207   to use the extensions why they have been probed with eglGetProcAddress() or
   1208   glGetProcAddress(). Here is the list of newly supported extensions:
   1209 
   1210     GLES 1.x
   1211     --------
   1212     GL_OES_vertex_array_object
   1213     GL_OES_EGL_image_external
   1214     GL_APPLE_texture_2D_limited_npot
   1215     GL_EXT_blend_minmax
   1216     GL_EXT_discard_framebuffer
   1217     GL_EXT_multi_draw_arrays
   1218     GL_EXT_read_format_bgra
   1219     GL_EXT_texture_filter_anisotropic
   1220     GL_EXT_texture_format_BGRA8888
   1221     GL_EXT_texture_lod_bias
   1222     GL_IMG_read_format
   1223     GL_IMG_texture_compression_pvrtc
   1224     GL_IMG_texture_env_enhanced_fixed_function
   1225     GL_IMG_user_clip_plane
   1226     GL_IMG_multisampled_render_to_texture
   1227     GL_NV_fence
   1228     GL_QCOM_driver_control
   1229     GL_QCOM_extended_get
   1230     GL_QCOM_extended_get2
   1231     GL_QCOM_perfmon_global_mode
   1232     GL_QCOM_writeonly_rendering
   1233     GL_QCOM_tiled_rendering
   1234 
   1235     GLES 2.0
   1236     --------
   1237     GL_OES_element_index_uint
   1238     GL_OES_get_program_binary
   1239     GL_OES_mapbuffer
   1240     GL_OES_packed_depth_stencil
   1241     GL_OES_texture_3D
   1242     GL_OES_texture_float
   1243     GL_OES_texture_float_linear
   1244     GL_OES_texture_half_float_linear
   1245     GL_OES_texture_npot
   1246     GL_OES_vertex_array_object
   1247     GL_OES_EGL_image_external
   1248     GL_AMD_program_binary_Z400
   1249     GL_EXT_blend_minmax
   1250     GL_EXT_discard_framebuffer
   1251     GL_EXT_multi_draw_arrays
   1252     GL_EXT_read_format_bgra
   1253     GL_EXT_texture_format_BGRA8888
   1254     GL_EXT_texture_compression_dxt1
   1255     GL_IMG_program_binary
   1256     GL_IMG_read_format
   1257     GL_IMG_shader_binary
   1258     GL_IMG_texture_compression_pvrtc
   1259     GL_IMG_multisampled_render_to_texture
   1260     GL_NV_coverage_sample
   1261     GL_NV_depth_nonlinear
   1262     GL_QCOM_extended_get
   1263     GL_QCOM_extended_get2
   1264     GL_QCOM_writeonly_rendering
   1265     GL_QCOM_tiled_rendering
   1266 
   1267     EGL:
   1268     ----
   1269     EGL_ANDROID_recordable
   1270     EGL_NV_system_time
   1271 
   1272 - docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
   1273   should be 9, not 8 for native activities.
   1274 
   1275 - removed many unwanted exported symbols from the link-time shared
   1276   system libraries provided by the NDK. This ensures that code generated
   1277   with the standalone toolchain doesn't risk to accidentally depend
   1278   on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
   1279   each time the toolchain used to build the platform is changed).
   1280 
   1281 - download-toolchain-sources.sh: Script was updated to download the toolchain
   1282   sources from android.googlesource.com, the new location for AOSP servers.
   1283 
   1284 -------------------------------------------------------------------------------
   1285 android-ndk-r6b
   1286 
   1287 This is a bug-fix release for NDK r6, no new features are provided.
   1288 
   1289 IMPORTANT BUG FIXES:
   1290 
   1291 - Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
   1292 
   1293 - Fixed location of prebuilt STLport binaries in the NDK release package.
   1294   (A bug in the packaging script placed them in the wrong location).
   1295 
   1296 - Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
   1297 
   1298 - Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
   1299   proper GNU libstdc++ binaries to the right location).
   1300 
   1301 - Fixed standalone toolchain linker warnings about missing definition and
   1302   size for '__dso_handle' symbol (arm only).
   1303 
   1304 - Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
   1305   see http://code.google.com/p/android/issues/detail?id=18540
   1306 
   1307 - Fixed the definitions of ptrdiff_t and size_t in x86-specific system
   1308   when used with the x86 standalone toolchain.
   1309 
   1310 -------------------------------------------------------------------------------
   1311 android-ndk-r6
   1312 
   1313 IMPORTANT CHANGES:
   1314 
   1315 - Official support for the x86 ABI.
   1316 
   1317   This release of the Android NDK now provides support for the 'x86' ABI.
   1318   This allows you to generate machine code that runs on future x86-based
   1319   Android devices.
   1320 
   1321   Note that by default, code is still generated for ARM-based devices.
   1322   You can however add 'x86' to your APP_PLATFORM definition in your
   1323   Application.mk. For example, the following line instructs ndk-build
   1324   to build your code for three distinct ABIs:
   1325 
   1326     APP_ABI := armeabi armeabi-v7a x86
   1327 
   1328   Unless you rely on ARM-based assembly sources, you shouldn't need to touch
   1329   your Android.mk files to build x86 machine code.
   1330 
   1331   For all details regarding x86 support, please read the new documentation
   1332   file named docs/CPU-X86.html.
   1333 
   1334   Don't hesitate to file NDK bugs related to x86 at http://b.android.com
   1335 
   1336 - You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
   1337   option when calling make-standalone-toolchain.sh. See
   1338   docs/STANDALONE-TOOLCHAIN.html for more details.
   1339 
   1340 - The new 'ndk-stack' tool can be used to translate stack traces
   1341   (as reported by adb logcat in case of crash in native code) into
   1342   something more readable, i.e. containing function / source file /
   1343   line number information corresponding to each stack frame.
   1344 
   1345   For more information and usage example, see the new documentation
   1346   file docs/NDK-STACK.html
   1347 
   1348 OTHER FIXES &amp; CHANGES:
   1349 
   1350 - The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
   1351   finally removed from the NDK distribution.
   1352 
   1353 - Support a project.properties file in the application's directory
   1354   instead of default.properties. This is in preparation for future SDK Tools
   1355   changes.
   1356 
   1357 -------------------------------------------------------------------------------
   1358 android-ndk-r5c
   1359 
   1360 This release fixes a few bugs in r5b. There are no new features.
   1361 
   1362 IMPORTANT BUG FIXES:
   1363 
   1364 - Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
   1365   with the new toolchain. Also properly document this variable in
   1366   docs/ANDROID-MK.html.
   1367 
   1368 - Fixed a bug where code linked against gnustl_static would crash when run
   1369   on Android platform releases older than 2.2.
   1370 
   1371 - &lt;android/input.h&gt;: Two functions in this header file, introduced
   1372   by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
   1373   this breaks the source API, the binary interface to the system is
   1374   unchanged.
   1375 
   1376   The functions missing a third 'history_index' parameter. They correct
   1377   definition is now:
   1378 
   1379       float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
   1380                                            size_t pointer_index,
   1381                                            size_t history_index);
   1382 
   1383       float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
   1384                                            size_t pointer_index,
   1385                                            size_t history_index);
   1386 
   1387 - Updated the android-9 C library arm binary to correctly expose at link time
   1388   new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
   1389 
   1390 - Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
   1391   the Motorola Xoom).
   1392 
   1393 OTHER FIXES &amp; CHANGES:
   1394 
   1395 - Object files are now always linked in the order they appear in
   1396   LOCAL_SRC_FILES. This was not the case previously because the files
   1397   were grouped by source extensions instead.
   1398 
   1399 - download-toolchain-sources.sh: Fixed a silly bug that prevented the
   1400   --git-date option to work properly when downloading the master branch.
   1401 
   1402 - Fix an issue where a module could import itself, resulting in an infinite
   1403   loop in GNU Make.
   1404 
   1405 - When import-module fails, it now prints the list of directories
   1406   that were searched. This is useful to check that the NDK_MODULE_PATH
   1407   definition used by the build system is correct.
   1408 
   1409 - When import-module succeeds, it now prints the directory where the module
   1410   was found to the log (visible with NDK_LOG=1).
   1411 
   1412 - &lt;pthread.h&gt;: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
   1413   android-9 API level and higher.
   1414 
   1415 - Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
   1416   fail (typo in build/core/build-binary.mk)
   1417 
   1418 - Fixed a bug that prevented the compilation of .s assembly files
   1419   (.S files were ok).
   1420 
   1421 - Speed-up the build of debuggable applications when there is a very
   1422   large number of include directories in a project.
   1423 
   1424 - ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
   1425 
   1426 - ndk-build: Fix a rare bug that appeared when trying to perform parallel
   1427   builds of debuggable projects.
   1428 
   1429 
   1430 -------------------------------------------------------------------------------
   1431 android-ndk-r5b
   1432 
   1433 This release fixes a few bugs in r5. There are no new features.
   1434 
   1435 IMPORTANT BUG FIXES:
   1436 
   1437 - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
   1438   The previous binary generated invalid thumb instruction sequences when
   1439   dealing with signed chars. This problem was first reported on the
   1440   android-ndk forum and fixed by the following change in the toolchain
   1441   sources:
   1442 
   1443         https://review.source.android.com/#change,19474
   1444 
   1445 - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
   1446   "gnustl_static" value for APP_STL, that allows you to link against
   1447   a static library version of GNU libstdc++.
   1448 
   1449 - ndk-build: Fix a bug that created inconsistent dependency files when a
   1450   compilation error occurred on Windows, preventing building properly after
   1451   the error was fixed in the source code.
   1452 
   1453 - ndk-build: Fix a Cygwin-specific bug where using very short paths for
   1454   the Android NDK installation or the project path could lead to the
   1455   generation of invalid dependency files, making incremental builds
   1456   impossible.
   1457 
   1458 - Fix a typo that prevented the cpufeatures library to work correctly
   1459   with the new NDK toolchain.
   1460 
   1461 - Linux toolchain binaries now run on Ubuntu 8.04 or higher.
   1462   More specifically, the r5 binaries did require GLibc 2.11 on the host
   1463   system, and refused to run with previous releases due to an ABI mismatch
   1464   in the GNU C Library. The r5b binaries are generated with a special
   1465   toolchain that instead targets GLibc 2.7 or higher.
   1466 
   1467 - GNU libstdc++ will not crash anymore when printing floating-point values
   1468   through i/o streams.
   1469 
   1470 OTHER FIXES &amp; CHANGES:
   1471 
   1472 - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
   1473   from GNU Make for each and every source or object file. This was a problem
   1474   for users with very large source trees.
   1475 
   1476   In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
   1477   environment to use 'cygpath -m' as usual.
   1478 
   1479   Also, if 'cygpath' is not in your path, completely ignore it
   1480   (seems to be enough to run the NDK under MSys).
   1481 
   1482 - ndk-build: Handle installation paths containing spaces when checking
   1483   cygwin installation. Before that, the script complained that the user
   1484   was using an incorrect version of GNU Make (even if he had the right one).
   1485 
   1486 - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
   1487   it contained multiple directories separated with ":"
   1488 
   1489 - prebuilt-common.sh: Make the script check the compiler directly for 64-bit
   1490   generated machine code, instead of relying on the host tag. That should
   1491   allow the 32-bit toolchain to rebuild properly on Snow Leopard.
   1492 
   1493 - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
   1494   using a 32-bit host toolchain.
   1495 
   1496 - &lt;netinet/in.h&gt;: Add missing declaration for INET_ADDRSTRLEN
   1497 - &lt;netinet/in6.h&gt;: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
   1498   and IN6_IS_ADDR_MC_GLOBAL.
   1499 
   1500 - &lt;asm/byteorder.&gt;: Replaced 'asm' with '__asm__' to allow compilation
   1501   with -std=c99. See https://review.source.android.com/#change,20076
   1502 
   1503 - standalone toolchain: The -fpic flag is now the default for the
   1504   arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
   1505   degradation when compared to the old android-eabi configuration.
   1506 
   1507   This only affects users of the standalone toolchain. The NDK build script
   1508   always enforced -fpic implicitly.
   1509 
   1510 -------------------------------------------------------------------------------
   1511 android-ndk-r5
   1512 
   1513 IMPORTANT BUG FIXES:
   1514 
   1515 - Allow dlclose() to properly call static C++ destructors when unloading
   1516   a shared library. This requires changes in both the C library and the
   1517   build system. IMPORTANT: This feature is only available for API level 9.
   1518 
   1519 - Fix packaging error for system libraries of level 5 and 8. The libraries
   1520   bundled with the NDK and used at link time were not the correct version,
   1521   and this prevented linking against certain symbols appropriately.
   1522 
   1523 - ndk-gdb: do not start activity unless --start or --launch is used.
   1524   (the documentation was correct, the implementation wrong)
   1525 
   1526 - The system headers for all API levels have been cleaned up and will
   1527   not provide the declarations of functions that are not available in
   1528   the corresponding system libraries.
   1529 
   1530 IMPORTANT CHANGES:
   1531 
   1532 - Support for API level 9, (a.k.a. Android 2.3) which adds the following
   1533   native features to the platform:
   1534 
   1535      - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
   1536        New headers &lt;SLES/OpenSLES.h&gt; and &lt;SLES/OpenSLES_Android.h&gt;
   1537        are provided to allow applications targeting this API level to perform
   1538        audio input, output and processing directly from native code.
   1539 
   1540      - Native activity support, i.e. the ability to build applications that
   1541        are coded entirely in C or C++. More precisely, such applications still
   1542        run inside a VM, and will have to access most of the platform's features
   1543        using JNI (i.e. native code calling VM methods). However, this also
   1544        comes with a series of headers and libraries to implement the following
   1545        directly from native code:
   1546 
   1547           - activity lifecycle management.
   1548           - user input handling (touch, keyboard, trackball, ...).
   1549           - window management (including accessing the pixel buffer).
   1550           - sensor listeners (e.g. accelerometer, compass, ...).
   1551           - hardware configuration management.
   1552           - easily reading assets out of an APK from native code.
   1553           - access to the storage manager, a new feature of Android X.X
   1554             that allows one to provide Opaque Binary Objects containing
   1555             large amounts of data outside of the APK.
   1556 
   1557        See the documentation in docs/STABLE-APIS.html for more details.
   1558 
   1559        Note that most of these new features are targeted at game developers.
   1560 
   1561 - Improved gdbserver binary to allow debugging _threaded_ programs properly
   1562   with ndk-gdb (the previous binary could only set breakpoints on the main
   1563   thread).
   1564 
   1565   IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
   1566 
   1567   The root cause of the problem is a platform bug that was only fixed in
   1568   2.3. If you try to debug on a previous platform, the gdbserver binary
   1569   will only be able to set breakpoints on the main thread.
   1570 
   1571   For more information, see the specific section in docs/NDK-GDB.html.
   1572 
   1573 - Easier debuggable builds: just invoke ndk-build while defining the
   1574   NDK_DEBUG variable to 1, as in:
   1575 
   1576       $NDK/ndk-build NDK_DEBUG=1
   1577 
   1578   This will have the same result that setting the android:debuggable="true"
   1579   in the &lt;application&gt; element of your AndroidManifest.xml file. See the
   1580   file docs/NDK-BUILD.html for more details.
   1581 
   1582   Note that you will need to use the SDKr8 build tools to use this feature
   1583   properly!
   1584 
   1585 - Refresh of system C++ headers:
   1586 
   1587      - Headers have been moved out of the platform directory hierarchy.
   1588        This is to prevent conflicts with other STLs like STLport or the
   1589        GNU libstdc++ which provide their own version of the headers, but
   1590        does not affect your builds.
   1591 
   1592      - The list of headers has grown to include the following:
   1593 
   1594             cassert, cctype, cerrno, cfloat, climits, cmath,
   1595             csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
   1596             cstring, ctime, cwchar, new, typeinfo, utility
   1597 
   1598     Note that they still correspond to our minimal C++ runtime, no new feature
   1599     was introduced here.
   1600 
   1601 - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
   1602   all details (and limitations).
   1603 
   1604 - STLport implementation: Add sources and prebuilt binaries for a port of
   1605   the STLport C++ Standard Library (www.stlport.org), and an easy way to use
   1606   it at build time by defining APP_STL in your Application.mk. See
   1607   docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
   1608 
   1609 - GNU libstdc++ implementation: Available as a static library that you can
   1610   select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
   1611   for all details.
   1612 
   1613 - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
   1614   PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
   1615   file named docs/PREBUILTS.html for explanations and usage examples.
   1616 
   1617 - Support for module exports: A module can now define a set of compiler or
   1618   linker flags that will be automatically 'imported' by any other module that
   1619   depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
   1620 
   1621   This is achieved with the help of new Android.mk variables named
   1622   LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
   1623   LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
   1624   a 'samples/module-exports' for a sample project that uses this.
   1625 
   1626 - Add support to specify a different file name for generated files, through
   1627   the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
   1628   example.
   1629 
   1630 - Add support for module imports, through the NDK_MODULE_PATH environment
   1631   variable and the new 'import-module' function. This allows you to avoid
   1632   hard-coding the path of third-party modules into your project files.
   1633 
   1634   See docs/IMPORT-MODULE.html for details.
   1635 
   1636 - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
   1637   easier. Also fixes an issue that prevented clean parallel builds of
   1638   debuggable applications to work correctly. This fixes an error message that
   1639   said:
   1640 
   1641       /bin/sh: &lt;project&gt;/libs/armeabi/gdb.setup: No such file or directory
   1642 
   1643   When doing a "ndk-build -j&lt;number&gt;", with &lt;number&gt; bigger than 1.
   1644 
   1645 - Add support for assembly-level source filtering. See the description of
   1646   LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
   1647   for certain kinds of obfuscation tasks.
   1648 
   1649 - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
   1650   which provides many benefits, including:
   1651 
   1652      - Better code generation than the previous one (gcc-4.4.0)
   1653      - On Windows, the binaries do not depend on Cygwin anymore.
   1654      - The ability to use it as a stand-alone cross-compiler
   1655        (see docs/STANDALONE-TOOLCHAIN.html for all details).
   1656 
   1657   The binaries for gcc-4.4.0 are still provided for backwards compatibility.
   1658   Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
   1659   Note that it is now deprecated and will be removed in a future NDK release.
   1660 
   1661   IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
   1662              STLport and GNU libstdc++.
   1663 
   1664   The binaries for the already-deprecated gcc-4.2.1 have been removed.
   1665 
   1666 - The 'cpufeatures' library has been updated to provide better architecture
   1667   and features detection (including a work-around for buggy ARMv6 kernels
   1668   which report an architecture version of 7).
   1669 
   1670   The library is now also available as an import module, to simplify its
   1671   usage in your build scripts. See the updated docs/CPU-FEATURES.html file
   1672   for details.
   1673 
   1674   NOTE: Please update your Android.mk to use module imports as soon as
   1675         possible. The location $NDK/source/cpufeatures/ is deprecated
   1676         and will be removed in a future NDK release. Avoid referencing
   1677         it directly in your build scripts!
   1678 
   1679 OTHER FIXES AND CHANGES:
   1680 
   1681 - Reduced the size of generated binaries by using --strip-unneeded
   1682   instead of --strip-debug. This gets rid of mor symbol table entries
   1683   in release shared libraries and executables, without impacting
   1684   runtime execution.
   1685 
   1686 - Fix bad automatic dependency tracking when using multiple source
   1687   sub-directories.
   1688 
   1689 - The path to system headers is now included last in the compilation command
   1690   line. This prevents conflicts with source code that define their own headers
   1691   with similar names (e.g. a custom "err.h" was ignored, because the system
   1692   &lt;err.h&gt; was used instead).
   1693 
   1694 - Update documentation for 'my-dir' function to explain that, due to the
   1695   way GNU Make works, it really returns the path of the last included
   1696   Makefile (instead of the current one). Also provide examples on how
   1697   to deal with it.
   1698 
   1699 - make-release.sh: Now has an --out-dir=&lt;path&gt; option to specify the
   1700   output directory where the packages are going to be copied. Also
   1701   ensure that generated packages have go+r permissions.
   1702 
   1703 - ndk-build will now properly escape arguments. This means that something
   1704   like this:
   1705 
   1706      ndk-build  MY_CFLAGS="-DFOO -DBAR"
   1707 
   1708   will now work correctly.
   1709 
   1710 - Add --git-http option to download-toolchain-sources.sh and
   1711   rebuild-all-prebuilt.sh in order to download sources from
   1712   android.git.kernel.org through HTTP.
   1713 
   1714 - ndk-gdb: properly launch activities for which name does not contain any dot.
   1715 
   1716 - ndk-gdb: add --delay=&lt;timeout&gt; option to specify a delay in seconds
   1717   between activity launch and gdbserver attach. This is needed because certain
   1718   activities can take a long time to properly launch. The default delay is
   1719   also increased to 2 seconds (instead of 1).
   1720 
   1721 - build/tools/build-gcc.sh: copy the sysroot to the build directory. This
   1722   avoids the generated toolchain binaries from hard-coding host build paths.
   1723 
   1724 - Platform files are now under $NDK/platforms instead of $NDK/build/platforms
   1725 
   1726 - Toolchain files are now under $NDK/toolchains instead of
   1727   $NDK/build/toolchains and $NDK/build/prebuilt.
   1728 
   1729 - Release and debug objects are stored under two different directories now
   1730   (i.e. obj/local/&lt;abi&gt;/objs and obj/local/&lt;abi&gt;/objs-debug). This
   1731   prevents rebuilding *everything* when you switch between these two modes,
   1732   which can be a real time-saver for complex projects.
   1733 
   1734 - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
   1735   when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
   1736 
   1737 -------------------------------------------------------------------------------
   1738 android-ndk-r4b
   1739 
   1740 This release fixes a few bugs in r4 scripts. There are no new features.
   1741 
   1742 OTHER FIXES &amp; CHANGES:
   1743 
   1744 - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
   1745   Fix the script (and others in the same directory) to do that properly.
   1746 
   1747 - ndk-gdb: check the target device's API level, and dump an error message if
   1748   it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
   1749   remove control characters like '\r' from adb shell's output. Also fix
   1750   script to work properly with OS X's BSD awk.
   1751 
   1752 - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
   1753   to look for jni/Android.mk if no manifest is found. If you don't use this,
   1754   you can also define NDK_PROJECT_PATH to point to your tree.
   1755 
   1756   Also, on Windows, check that a Cygwin-compatible make executable is being
   1757   used, and dump a readable help message to solve the issue if this is not
   1758   the case.
   1759 
   1760 - Place generated binaries under $PROJECT_PATH/obj/ instead of
   1761   $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
   1762   by the JDT, resulting in the inability to properly load symbol versions
   1763   of the shared libraries when running ndk-gdb.
   1764 
   1765 - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
   1766   Previous behaviour was to silently ignore them.
   1767 
   1768 - Set the optimization mode to 'debug' automatically if the manifest sets
   1769   android:debuggable to 'true'. You can override this by using
   1770   'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
   1771   your LOCAL_CFLAGS.
   1772 
   1773   Note that even in release mode, the NDK build scripts will produce
   1774   binaries with symbols under obj/local/&lt;abi&gt;/ that will be used for
   1775   debugging with gdb. However, the debugger will have a harder time to
   1776   print proper local variable values that have been optimized out or
   1777   even set breakpoints properly.
   1778 
   1779 -------------------------------------------------------------------------------
   1780 android-ndk-r4
   1781 
   1782 IMPORTANT BUG FIXES:
   1783 
   1784 - The &lt;fenv.h&gt; header was not placed in the correct location and could not
   1785   be found by normal builds.
   1786 
   1787 IMPORTANT CHANGES:
   1788 
   1789 - On Windows, Cygwin 1.7 or higher is now required. The NDK will not
   1790   work properly with Cygwin 1.5 which is now officially obsolete
   1791   anyway.
   1792 
   1793 - Simplified build system: You no longer need to run build/host-setup.sh
   1794   or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
   1795   new 'ndk-build' script from your application's project directory, or
   1796   one of its sub-directories.
   1797 
   1798   See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
   1799 
   1800   NOTE: For compatibility purpose, you can still define projects
   1801         through $NDK_ROOT/apps/&lt;name&gt; though.
   1802 
   1803         However, not that sample applications have moved from
   1804         'apps/&lt;name&gt;/project' to 'samples/&lt;name&gt;' and now must
   1805         be built with 'ndk-build'. The source code of pre-existing
   1806         samples didn't change though.
   1807 
   1808 - Easy native debugging support when running debuggable applications
   1809   on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
   1810   See docs/NDK-GDB.html for details.
   1811 
   1812 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
   1813   corresponding to ARMv7-a class devices.
   1814 
   1815   Note that by default, the NDK will still generate machine code for the old
   1816   'armeabi' ABI (ARMv5TE based) which is supported by all official Android
   1817   system images to date.
   1818 
   1819   You will need to define APP_ABI in your Application.mk file to change this.
   1820   See docs/APPLICATION-MK.html
   1821 
   1822   More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
   1823 
   1824 - A small static library named 'cpufeatures' is provided with source code
   1825   and can be used at runtime to determine the CPU features supported by the
   1826   target device. It should run on all Android platforms, starting from 1.5.
   1827 
   1828   For more information, see docs/CPU-FEATURES.html
   1829 
   1830 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
   1831   extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
   1832   the '.neon' suffix when listing source files.
   1833 
   1834   Neon is an *optional* instruction set extension, and not all Android ARMv7
   1835   devices will support it. You will need to use the 'cpufeatures' library to
   1836   determine if such code can be used at runtime, and provide alternate code
   1837   paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
   1838   platforms.
   1839 
   1840   For more information, see docs/CPU-ARM-NEON.html
   1841 
   1842 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
   1843   and NEON intrinsics and build support.
   1844 
   1845 - Added &lt;android/bitmap.h&gt;, a new stable API available from android-8
   1846   (a.k.a. Android 2.2) to reliably access the pixel buffer of an
   1847   android.graphics.Bitmap object from native code. See docs/STABLE-API.html
   1848   and the new sample program under 'samples/bitmap-plasma' for details
   1849   and usage example.
   1850 
   1851 - Support the NX (No Execute) security feature, where special sections
   1852   are added to the generated shared libraries to instruct the kernel
   1853   that code shall not be executed from the heap and stack by default.
   1854 
   1855   See docs/ANDROID-MK.html to see how to disable this, plus reference
   1856   links for more information.
   1857 
   1858 OTHER FIXES AND CHANGES:
   1859 
   1860 - support the .s extension for raw assembly sources (.S is already supported
   1861   but the input files are parsed by the C-preprocessor before being sent to
   1862   the assembler).
   1863 
   1864 - build/host-setup.sh has been removed. There is no need for a 'setup' step
   1865   when using the NDK for the first time. All host-specific autodetection and
   1866   basic tool sanity checking have been moved to the build scripts themselves.
   1867 
   1868 - APP_MODULES in Application.mk is now optional. If not defined, the NDK
   1869   will simply build _all_ the modules that are declared from your Android.mk.
   1870 
   1871   You can still use APP_MODULES to restrict the set of modules you want to
   1872   build. Note that the NDK now computes the transitive dependencies of these
   1873   modules for you now. See docs/APPLICATION-MK.html for details.
   1874 
   1875 - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
   1876   (libdl.so). It is actually supported by all API levels.
   1877 
   1878 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default
   1879   instead of the 'eclair' one.
   1880 
   1881 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
   1882   them. This is primarily to ease development. All you need to do is put a patch
   1883   under build/tools/toolchain-patches/&lt;foo&gt;/&lt;name&gt;.patch, and it will be applied
   1884   with 'patch -p1' into the &lt;foo&gt; directory of the unpacked toolchain sources
   1885   before the configure step.
   1886 
   1887 - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
   1888 
   1889 - build/core/mkdeps.sh: Removed obsolete script.
   1890 
   1891 - the NDK build script now only parses the Application.mk and Android.mk of
   1892   the applications listed by APP. The error messages when APP is empty or
   1893   malformed have also been improved.
   1894 
   1895 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
   1896   warning when building with GCC 4.4.0 for ARM.
   1897 
   1898 - C Library header fixes:
   1899 
   1900     For all platforms:
   1901 
   1902         - &lt;arpa/inet.h&gt;: no longer includes &lt;netinet/in6.h&gt;.
   1903         - &lt;ctype.h&gt;: better inlining with -ansi option.
   1904         - &lt;mntent.h&gt;: add missing include for &lt;stdio.h&gt;.
   1905         - &lt;netinet/in.h&gt;: include &lt;netinet/in6.h&gt; and define in6addr_any +
   1906           in6addr_loopback.
   1907         - &lt;netinet/in6.h&gt;: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
   1908           IN6ADDR_ANY_INIT, ipv6mr_interface.
   1909         - &lt;sys/epoll.h&gt;: add missing C++ inclusion guards.
   1910         - &lt;sys/resource.h&gt;: add missing rlim_t declaration.
   1911         - &lt;sys/system_properties.h&gt;: add missing C++ inclusion guards.
   1912         - &lt;time64.h&gt;: add missing C++ inclusion guards.
   1913         - &lt;netdb.h&gt;: move h_errno declaration inside C++ inclusion guards.
   1914 
   1915 - C Library changes:
   1916 
   1917     For android-8 (a.k.a. Android 2.2):
   1918 
   1919         - &lt;dlfcn.h&gt;: add DL_info and dladdr().
   1920         - &lt;err.h&gt;: add err(), warn() and other variants.
   1921         - &lt;regex.h&gt;, &lt;fts.h&gt;, &lt;sys/queue.h&gt;: added
   1922         - &lt;pthread.h&gt;: add pthread_condattr_t
   1923         - &lt;sched.h&gt;: added proper clone() declaration (and implementation).
   1924         - &lt;signal.h&gt;: added killpg().
   1925         - &lt;stdio.h&gt;: add fdprintf() and vfdprintf().
   1926         - &lt;stdlib.h&gt;: fix ptsname_r() signature in declaration. previous
   1927           implementation was broken anyway.
   1928         - &lt;unistd.h&gt;: add getusershell(), setusershell(), endusershell(),
   1929           ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
   1930           (now returns int).
   1931         - &lt;wchar.h&gt;: add fake mbstowcs() and wcstombs().
   1932 
   1933   More details available under docs/system/libc/CHANGES.html
   1934 
   1935 -------------------------------------------------------------------------------
   1936 android-ndk-r3
   1937 
   1938 IMPORTANT BUG FIXES:
   1939 
   1940 - Fix build/host-setup.sh to execute as a Bourne shell script (again)
   1941 
   1942 - Make target shared libraries portable to systems that don't use the exact
   1943   same toolchain. This is needed due to differences in libgcc.a implementations
   1944   between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
   1945   code doesn't depend on helper functions provided by the Android platform
   1946   runtime.
   1947 
   1948 
   1949 IMPORTANT CHANGES:
   1950 
   1951 - GCC 4.4.0 is now used by default by the NDK. It generates better code than
   1952   GCC 4.2.1, which was used in previous releases. However, the compiler's C++
   1953   frontend is also a lot more pedantic regarding certain template constructs
   1954   and will even refuse to build some of them.
   1955 
   1956   For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
   1957   you can force its usage by defining NDK_TOOLCHAIN in your environment to
   1958   the value 'arm-eabi-4.2.1'. For example:
   1959 
   1960         export NDK_TOOLCHAIN=arm-eabi-4.2.1
   1961         make APP=hello-jni
   1962 
   1963   Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
   1964   recommend switching to 4.2.1 *only* if you encounter compilation problems
   1965   with 4.4.0.
   1966 
   1967   The 4.2.1 prebuilt binaries will probably be removed from a future release
   1968   of the Android NDK, we thus *strongly* invite you to fix your code if such
   1969   problems happen.
   1970 
   1971 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
   1972   reflect Android 2.0 (previously the Eclair branch). This is merely a copy
   1973   of android-4 that also includes headers and libraries for OpenGL ES 2.0.
   1974 
   1975   See the sample named "hello-gl2" for a *very* basic demonstration. Note that
   1976   OpenGL ES 2.0 is currently *not* available from Java, and must be used
   1977   through native code exclusively.
   1978 
   1979   IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
   1980              time. Running/testing any native code that depends on it thus
   1981              requires a real device.
   1982 
   1983 - The NDK build script will now remove installed binaries from the application
   1984   project's path before starting the build. This ensures that:
   1985 
   1986   - if the build fails for some reason, a stale/obsolete file is not left in
   1987     your application project tree by mistake.
   1988 
   1989   - if you change the target ABI, a stale/obsolete file is not left into the
   1990     folder corresponding to the old ABI.
   1991 
   1992 
   1993 - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
   1994   issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
   1995   2.0 on specific devices only, need for &lt;uses-feature&gt; tag in manifest).
   1996 
   1997 
   1998 OTHER FIXES AND CHANGES:
   1999 
   2000 - Actually use the awk version detected by host-setup.sh during the build.
   2001 
   2002 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
   2003   to 'true', just like the documentation says it works. Also fix a typo
   2004   in CLEAR_VARS that prevented this variable from being cleared properly.
   2005 
   2006 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is
   2007   gone, and --help will dump a clearer description of expected options
   2008   and input files.
   2009 
   2010 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
   2011   package a new experimental NDK package archive from the current source tree
   2012   plus the toolchain binaries of an existing NDK release package. E.g.:
   2013 
   2014     build/tools/make-release.sh \
   2015        --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
   2016 
   2017   will generate a new NDK package in /tmp/ndk-release that contains the most
   2018   up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
   2019   are not in the git repository).
   2020 
   2021   Also added the --no-git option to collect all sources from the current
   2022   NDK root directory, instead of the list given by 'git ls-files'. This can
   2023   be useful if you don't want to checkout the whole 'platform/development'
   2024   project from repo and still work on the NDK.
   2025 
   2026   This change is to help people easily package experimental NDK releases to
   2027   test and distribute fixes and improvements.
   2028 
   2029 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
   2030   build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
   2031 
   2032 - Remove bash-ism from build/tools/build-ndk-sysroot.sh
   2033 
   2034 - Refresh C library headers for all platforms:
   2035 
   2036     - make &lt;endian.h&gt; simply include &lt;sys/endian.h&gt;
   2037     - make &lt;stdint.h&gt; properly declare 64-bit integer types with a C99 compiler
   2038     - add missing &lt;sys/types.h&gt; to &lt;strings.h&gt;
   2039     - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
   2040       st_ctimensec) to &lt;stat.h&gt;
   2041     - add missing declaration for tzset() in &lt;time.h&gt;
   2042 
   2043 - Added build/tools/download-toolchain-sources.sh, a script that allows you
   2044   to download the toolchain sources from the official open-source repository
   2045   at android.git.kernel.org and nicely package them into a tarball that can
   2046   later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
   2047   binaries for your system.
   2048 
   2049 - Updated build/tools/build-toolchain.sh to support the tarballs generated
   2050   by download-toolchain-sources.sh with the --package=&lt;file&gt; option. This
   2051   also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
   2052   gcc 4.4.0.
   2053 
   2054 -------------------------------------------------------------------------------
   2055 android-ndk-1.6_r1
   2056 
   2057 IMPORTANT BUG FIXES:
   2058 
   2059 - Fix build/host-setup.sh to:
   2060   * execute as a Bourne shell script
   2061   * remove unused host gcc dependency
   2062   * improve Windows host auto-detection
   2063   * add GNU Make version check
   2064   * add Nawk/Gawk check
   2065   * ensure that the script is run from $NDKROOT as build/host-setup.sh
   2066   * add --help, --verbose, --no-awk-check and --no-make-check options
   2067 
   2068 - Properly add sysroot library search path at build time. This makes a line
   2069   in Android.mk like:
   2070 
   2071      LOCAL_LDLIBS := -lz
   2072 
   2073   Actually work correctly, instead of having the linker complaining that it
   2074   could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
   2075   in $(CLEAR_VARS) script.
   2076 
   2077 
   2078 IMPORTANT CHANGES:
   2079 
   2080 - The 'sources' directory is gone. The NDK build system now looks for
   2081   $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
   2082   the new APP_BUILD_SCRIPT variable in Application.mk
   2083 
   2084   For example, the 'hello-jni' sample uses the following files:
   2085 
   2086     apps/hello-jni/project/jni/Android.mk
   2087     apps/hello-jni/project/jni/hello-jni.c
   2088 
   2089   The 'apps/&lt;name&gt;' directory is still needed in this release though.
   2090 
   2091 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
   2092   system. This means that:
   2093 
   2094     - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
   2095     - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
   2096     - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
   2097       (will disappear in next release)
   2098 
   2099   Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
   2100 
   2101 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match
   2102   the Android API level instead of the marketing speak.
   2103 
   2104   Also add a new build/platforms/android-4, and make the build system select
   2105   which platform to use based on the content of the project file named
   2106   $(APP_PROJECT_PATH)/default.properties.
   2107 
   2108 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
   2109   (NOTE: they are *not* available for android-3)
   2110 
   2111   Also provide a small port of the "San Angeles Observation" demo to show
   2112   how to make a simple Android application that uses them.
   2113 
   2114 
   2115 OTHER FIXES AND CHANGES
   2116 
   2117 - Ensure that the __ANDROID__ macro is always defined when building code
   2118   with the NDK. Normally, the macro must be defined by the toolchain
   2119   automatically to indicate that you're targeting the Android runtime.
   2120 
   2121   This works for the new arm-linux-androideabi toolchain, but there is
   2122   a bug in the way we built the arm-eabi one, so add the flag manually
   2123   through the NDK build script for it.
   2124 
   2125   Note that the ANDROID macro, is now deprecated. While it is still defined
   2126   by the NDK, you should modify your code to test against __ANDROID__ instead!
   2127 
   2128 - Generate thumb binaries by default.
   2129 
   2130 - Add support for LOCAL_ARM_MODE in Android.mk.
   2131 
   2132 - Add support for the '.arm' suffix in source file names to force the
   2133   compilation of a single source in ARM (32-bit) mode.
   2134 
   2135 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug
   2136 
   2137 - Add support for LOCAL_C_INCLUDES in Android.mk
   2138 
   2139 - Fix compilation of assembler files (e.g. foo.S)
   2140 
   2141 -------------------------------------------------------------------------------
   2142 android-ndk-1.5_r1 released.
   2143 </pre></body></html>
   2144