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