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