1 <html><body><pre>Android NDK ChangeLog: 2 3 ------------------------------------------------------------------------------- 4 android-ndk-r5b 5 6 This release fixes a few bugs in r5. There are no new features. 7 8 IMPORTANT BUG FIXES: 9 10 - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain. 11 The previous binary generated invalid thumb instruction sequences when 12 dealing with signed chars. This problem was first reported on the 13 android-ndk forum and fixed by the following change in the toolchain 14 sources: 15 16 https://review.source.android.com/#change,19474 17 18 - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the 19 "gnustl_static" value for APP_STL, that allows you to link against 20 a static library version of GNU libstdc++. 21 22 - ndk-build: Fix a bug that created inconsistent dependency files when a 23 compilation error occured on Windows, preventing building properly after 24 the error was fixed in the source code. 25 26 - ndk-build: Fix a Cygwin-specific bug where using very short paths for 27 the Android NDK installation or the project path could lead to the 28 generation of invalid dependency files, making incremental builds 29 impossible. 30 31 - Fix a typo that prevented the cpufeatures library to work correctly 32 with the new NDK toolchain. 33 34 - Linux toolchain binaries now run on Ubuntu 8.04 or higher. 35 More specifically, the r5 binaries did require GLibc 2.11 on the host 36 system, and refused to run with previous releases due to an ABI mismatch 37 in the GNU C Library. The r5b binaries are generated with a special 38 toolchain that instead targets GLibc 2.7 or higher. 39 40 OTHER FIXES & CHANGES: 41 42 - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m" 43 from GNU Make for each and every source or object file. This was a problem 44 for users with very large source trees. 45 46 In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your 47 environment to use 'cygpath -m' as usual. 48 49 Also, if 'cygpath' is not in your path, completely ignore it 50 (seems to be enough to run the NDK under MSys). 51 52 - ndk-build: Handle installation paths containing spaces when checking 53 cygwin installation. Before that, the script complained that the user 54 was using an incorrect version of GNU Make (even if he had the right one). 55 56 - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when 57 it contained multiple directories separated with ":" 58 59 - prebuilt-common.sh: Make the script check the compiler directly for 64-bit 60 generated machine code, instead of relying on the host tag. That should 61 allow the 32-bit toolchain to rebuild properly on Snow Leopard. 62 63 - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when 64 using a 32-bit host toolchain. 65 66 - <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN 67 - <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL 68 and IN6_IS_ADDR_MC_GLOBAL. 69 70 - <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation 71 with -std=c99. See https://review.source.android.com/#change,20076 72 73 - standalone toolchain: The -fpic flag is now the default for the 74 arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance 75 degradation when compared to the old android-eabi configuration. 76 77 This only affects users of the standalone toolchain. The NDK build script 78 always enforced -fpic implicitely. 79 80 ------------------------------------------------------------------------------- 81 android-ndk-r5 82 83 IMPORTANT BUG FIXES: 84 85 - Allow dlclose() to properly call static C++ destructors when unloading 86 a shared library. This requires changes in both the C library and the 87 build system. IMPORTANT: This feature is only available for API level 9. 88 89 - Fix packaging error for system libraries of level 5 and 8. The libraries 90 bundled with the NDK and used at link time were not the correct version, 91 and this prevented linking against certain symbols appropriately. 92 93 - ndk-gdb: do not start activity unless --start or --launch is used. 94 (the documentation was correct, the implementation wrong) 95 96 - The system headers for all API levels have been cleaned up and will 97 not provide the declarations of functions that are not available in 98 the corresponding system libraries. 99 100 IMPORTANT CHANGES: 101 102 - Support for API level 9, (a.k.a. Android 2.3) which adds the following 103 native features to the platform: 104 105 - Native audio API based on the Khronos Group OpenSL ES™ 1.0.1 Standard. 106 New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h> 107 are provided to allow applications targetting this API level to perform 108 audio input, output and processing directly from native code. 109 110 - Native activity support, i.e. the ability to build applications that 111 are coded entirely in C or C++. More precisely, such applications still 112 run inside a VM, and will have to access most of the platform's features 113 using JNI (i.e. native code calling VM methods). However, this also 114 comes with a series of headers and libraries to implement the following 115 directly from native code: 116 117 - activity lifecycle management. 118 - user input handling (touch, keyboard, trackball, ...). 119 - window management (including accessing the pixel buffer). 120 - sensor listeners (e.g. accelerometer, compass, ...). 121 - hardware configuration management. 122 - easily reading assets out of an APK from native code. 123 - access to the storage manager, a new feature of Android X.X 124 that allows one to provide Opaque Binary Objects containing 125 large amounts of data outside of the APK. 126 127 See the documentation in docs/STABLE-APIS.html for more details. 128 129 Note that most of these new features are targetted at game developers. 130 131 - Improved gdbserver binary to allow debugging _threaded_ programs properly 132 with ndk-gdb (the previous binary could only set breakpoints on the main 133 thread). 134 135 IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER. 136 137 The root cause of the problem is a platform bug that was only fixed in 138 2.3. If you try to debug on a previous platform, the gdbserver binary 139 will only be able to set breakpoints on the main thread. 140 141 For more information, see the specific section in docs/NDK-GDB.html. 142 143 - Easier debuggable builds: just invoke ndk-build while defining the 144 NDK_DEBUG variable to 1, as in: 145 146 $NDK/ndk-build NDK_DEBUG=1 147 148 This will have the same result that setting the android:debuggable="true" 149 in the <application> element of your AndroidManifest.xml file. See the 150 file docs/NDK-BUILD.html for more details. 151 152 Note that you will need to use the SDKr8 build tools to use this feature 153 properly! 154 155 - Refresh of system C++ headers: 156 157 - Headers have been moved out of the platform directory hierarchy. 158 This is to prevent conflicts with other STLs like STLport or the 159 GNU libstdc++ which provide their own version of the headers, but 160 does not affect your builds. 161 162 - The list of headers has grown to include the following: 163 164 cassert, cctype, cerrno, cfloat, climits, cmath, 165 csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib, 166 cstring, ctime, cwchar, new, typeinfo, utility 167 168 Note that they still correspond to our minimal C++ runtime, no new feature 169 was introduced here. 170 171 - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for 172 all details (and limitations). 173 174 - STLport implementation: Add sources and prebuilt binaries for a port of 175 the STLport C++ Standard Library (www.stlport.org), and an easy way to use 176 it at build time by defining APP_STL in your Application.mk. See 177 docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details. 178 179 - GNU libstdc++ implementation: Available as a static library that you can 180 select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html 181 for all details. 182 183 - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and 184 PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation 185 file named docs/PREBUILTS.html for explanations and usage examples. 186 187 - Support for module exports: A module can now define a set of compiler or 188 linker flags that will be automatically 'imported' by any other module that 189 depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES. 190 191 This is achieved with the help of new Android.mk variables named 192 LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and 193 LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and 194 a 'samples/module-exports' for a sample project that uses this. 195 196 - Add support to specify a different file name for generated files, through 197 the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an 198 example. 199 200 - Add support for module imports, through the NDK_MODULE_PATH environment 201 variable and the new 'import-module' function. This allows you to avoid 202 hard-coding the path of third-party modules into your project files. 203 204 See docs/IMPORT-MODULE.html for details. 205 206 - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging 207 easier. Also fixes an issue that prevented clean parallel builds of 208 debuggable applications to work correctly. This fixes an error message that 209 said: 210 211 /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory 212 213 When doing a "ndk-build -j<number>", with <number> bigger than 1. 214 215 - Add support for assembly-level source filtering. See the description of 216 LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful 217 for certain kinds of obfuscation tasks. 218 219 - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3) 220 which provides many benefits, including: 221 222 - Better code generation than the previous one (gcc-4.4.0) 223 - On Windows, the binaries do not depend on Cygwin anymore. 224 - The ability to use it as a stand-alone cross-compiler 225 (see docs/STANDALONE-TOOLCHAIN.html for all details). 226 227 The binaries for gcc-4.4.0 are still provided for backwards compatibility. 228 Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage. 229 Note that it is now deprecated and will be removed in a future NDK release. 230 231 IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI, 232 STLport and GNU libstdc++. 233 234 The binaries for the already-deprecated gcc-4.2.1 have been removed. 235 236 - The 'cpufeatures' library has been updated to provide better architecture 237 and features detection (including a work-around for buggy ARMv6 kernels 238 which report an architecture version of 7). 239 240 The library is now also available as an import module, to simplify its 241 usage in your build scripts. See the updated docs/CPU-FEATURES.html file 242 for details. 243 244 NOTE: Please update your Android.mk to use module imports as soon as 245 possible. The location $NDK/source/cpufeatures/ is deprecated 246 and will be removed in a future NDK release. Avoid referencing 247 it directly in your build scritps! 248 249 OTHER FIXES AND CHANGES: 250 251 - Reduced the size of generated binaries by using --strip-unneeded 252 instead of --strip-debug. This gets rid of mor symbol table entries 253 in release shared libraries and executables, without impacting 254 runtime execution. 255 256 - Fix bad automatic dependency tracking when using multiple source 257 sub-directories. 258 259 - The path to system headers is now included last in the compilation command 260 line. This prevents conflicts with source code that define their own headers 261 with similar names (e.g. a custom "err.h" was ignored, because the system 262 <err.h> was used instead). 263 264 - Update documentation for 'my-dir' function to explain that, due to the 265 way GNU Make works, it really returns the path of the last included 266 Makefile (instead of the current one). Also provide examples on how 267 to deal with it. 268 269 - make-release.sh: Now has an --out-dir=<path> option to specify the 270 output directory where the packages are going to be copied. Also 271 ensure that generated packages have go+r permissions. 272 273 - ndk-build will now properly escape arguments. This means that something 274 like this: 275 276 ndk-build MY_CFLAGS="-DFOO -DBAR" 277 278 will now work correctly. 279 280 - Add --git-http option to download-toolchain-sources.sh and 281 rebuild-all-prebuilt.sh in order to download sources from 282 android.git.kernel.org through HTTP. 283 284 - ndk-gdb: properly launch activities for which name does not contain any dot. 285 286 - ndk-gdb: add --delay=<timeout> option to specify a delay in seconds 287 between activity launch and gdbserver attach. This is needed because certain 288 activities can take a long time to properly launch. The default delay is 289 also increased to 2 seconds (instead of 1). 290 291 - build/tools/build-gcc.sh: copy the sysroot to the build directory. This 292 avoids the generated toolchain binaries from hard-coding host build paths. 293 294 - Platform files are now under $NDK/platforms instead of $NDK/build/platforms 295 296 - Toolchain files are now under $NDK/toolchains instead of 297 $NDK/build/toolchains and $NDK/build/prebuilt. 298 299 - Release and debug objects are stored under two different directories now 300 (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This 301 prevents rebuilding *everything* when you switch between these two modes, 302 which can be a real time-saver for complex projects. 303 304 - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command 305 when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true' 306 307 ------------------------------------------------------------------------------- 308 android-ndk-r4b 309 310 This release fixes a few bugs in r4 scripts. There are no new features. 311 312 OTHER FIXES & CHANGES: 313 314 - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'. 315 Fix the script (and others in the same directory) to do that properly. 316 317 - ndk-gdb: check the target device's API level, and dump an error message if 318 it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly 319 remove control characters like '\r' from adb shell's output. Also fix 320 script to work properly with OS X's BSD awk. 321 322 - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try 323 to look for jni/Android.mk if no manifest is found. If you don't use this, 324 you can also define NDK_PROJECT_PATH to point to your tree. 325 326 Also, on Windows, check that a Cygwin-compatible make executable is being 327 used, and dump a readable help message to solve the issue if this is not 328 the case. 329 330 - Place generated binaries under $PROJECT_PATH/obj/ instead of 331 $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned 332 by the JDT, resulting in the inability to properly load symbol versions 333 of the shared libraries when running ndk-gdb. 334 335 - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES. 336 Previous behaviour was to silently ignore them. 337 338 - Set the optimization mode to 'debug' automatically if the manifest sets 339 android:debuggable to 'true'. You can override this by using 340 'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to 341 your LOCAL_CFLAGS. 342 343 Note that even in release mode, the NDK build scripts will produce 344 binaries with symbols under obj/local/<abi>/ that will be used for 345 debugging with gdb. However, the debugger will have a harder time to 346 print proper local variable values that have been optimized out or 347 even set breakpoints properly. 348 349 ------------------------------------------------------------------------------- 350 android-ndk-r4 351 352 IMPORTANT BUG FIXES: 353 354 - The <fenv.h> header was not placed in the correct location and could not 355 be found by normal builds. 356 357 IMPORTANT CHANGES: 358 359 - On Windows, Cygwin 1.7 or higher is now required. The NDK will not 360 work properly with Cygwin 1.5 which is now officially obsolete 361 anyway. 362 363 - Simplified build system: You no longer need to run build/host-setup.sh 364 or modify anything under $NDK_ROOT/apps/. Instead, just invoke the 365 new 'ndk-build' script from your application's project directory, or 366 one of its sub-directories. 367 368 See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details. 369 370 NOTE: For compatibility purpose, you can still define projects 371 through $NDK_ROOT/apps/<name> though. 372 373 However, not that sample applications have moved from 374 'apps/<name>/project' to 'samples/<name>' and now must 375 be built with 'ndk-build'. The source code of pre-existing 376 samples didn't change though. 377 378 - Easy native debugging support when running debuggable applications 379 on Android 2.2 or higher, through the new 'ndk-gdb' helper script. 380 See docs/NDK-GDB.html for details. 381 382 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI 383 corresponding to ARMv7-a class devices. 384 385 Note that by default, the NDK will still generate machine code for the old 386 'armeabi' ABI (ARMv5TE based) which is supported by all official Android 387 system images to date. 388 389 You will need to define APP_ABI in your Application.mk file to change this. 390 See docs/APPLICATION-MK.html 391 392 More details about ABIs is now available in docs/CPU-ARCH-ABIS.html 393 394 - A small static library named 'cpufeatures' is provided with source code 395 and can be used at runtime to determine the CPU features supported by the 396 target device. It should run on all Android platforms, starting from 1.5. 397 398 For more information, see docs/CPU-FEATURES.html 399 400 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set 401 extension through the use the LOCAL_ARM_NEON variable in Android.mk, or 402 the '.neon' suffix when listing source files. 403 404 Neon is an *optional* instruction set extension, and not all Android ARMv7 405 devices will support it. You will need to use the 'cpufeatures' library to 406 determine if such code can be used at runtime, and provide alternate code 407 paths if this is not the case. This is similar to MMX/SSE/3DNow on x86 408 platforms. 409 410 For more information, see docs/CPU-ARM-NEON.html 411 412 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures' 413 and NEON intrinsics and build support. 414 415 - Added <android/bitmap.h>, a new stable API available from android-8 416 (a.k.a. Android 2.2) to reliably access the pixel buffer of an 417 android.graphics.Bitmap object from native code. See docs/STABLE-API.html 418 and the new sample program under 'samples/bitmap-plasma' for details 419 and usage example. 420 421 - Support the NX (No Execute) security feature, where special sections 422 are added to the generated shared libraries to instruct the kernel 423 that code shall not be executed from the heap and stack by default. 424 425 See docs/ANDROID-MK.html to see how to disable this, plus reference 426 links for more information. 427 428 OTHER FIXES AND CHANGES: 429 430 - support the .s extension for raw assembly sources (.S is already supported 431 but the input files are parsed by the C-preprocessor before being sent to 432 the assembler). 433 434 - build/host-setup.sh has been removed. There is no need for a 'setup' step 435 when using the NDK for the first time. All host-specific autodetection and 436 basic tool sanity checking have been moved to the build scripts themselves. 437 438 - APP_MODULES in Application.mk is now optional. If not defined, the NDK 439 will simply build _all_ the modules that are declared from your Android.mk. 440 441 You can still use APP_MODULES to restrict the set of modules you want to 442 build. Note that the NDK now computes the transitive dependencies of these 443 modules for you now. See docs/APPLICATION-MK.html for details. 444 445 - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library 446 (libdl.so). It is actually supported by all API levels. 447 448 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default 449 instead of the 'eclair' one. 450 451 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding 452 them. This is primarily to ease development. All you need to do is put a patch 453 under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied 454 with 'patch -p1' into the <foo> directory of the unpacked toolchain sources 455 before the configure step. 456 457 - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI. 458 459 - build/core/mkdeps.sh: Removed obsolete script. 460 461 - the NDK build script now only parses the Application.mk and Android.mk of 462 the applications listed by APP. The error messages when APP is empty or 463 malformed have also been improved. 464 465 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4' 466 warning when building with GCC 4.4.0 for ARM. 467 468 - C Library header fixes: 469 470 For all platforms: 471 472 - <arpa/inet.h>: no longer includes <netinet/in6.h>. 473 - <ctype.h>: better inlining with -ansi option. 474 - <mntent.h>: add missing include for <stdio.h>. 475 - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any + 476 in6addr_loopback. 477 - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, 478 IN6ADDR_ANY_INIT, ipv6mr_interface. 479 - <sys/epoll.h>: add missing C++ inclusion guards. 480 - <sys/resource.h>: add missing rlim_t declaration. 481 - <sys/system_properties.h>: add missing C++ inclusion guards. 482 - <time64.h>: add missing C++ inclusion guards. 483 - <netdb.h>: move h_errno declaration inside C++ inclusion guards. 484 485 - C Library changes: 486 487 For android-8 (a.k.a. Android 2.2): 488 489 - <dlfcn.h>: add DL_info and dladdr(). 490 - <err.h>: add err(), warn() and other variants. 491 - <regex.h>, <fts.h>, <sys/queue.h>: added 492 - <pthread.h>: add pthread_condattr_t 493 - <sched.h>: added proper clone() declaration (and implementation). 494 - <signal.h>: added killpg(). 495 - <stdio.h>: add fdprintf() and vfdprintf(). 496 - <stdlib.h>: fix ptsname_r() signature in declaration. previous 497 implementation was broken anyway. 498 - <unistd.h>: add getusershell(), setusershell(), endusershell(), 499 ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature 500 (now returns int). 501 - <wchar.h>: add fake mbstowcs() and wcstombs(). 502 503 More details available under docs/system/libc/CHANGES.html 504 505 ------------------------------------------------------------------------------- 506 android-ndk-r3 507 508 IMPORTANT BUG FIXES: 509 510 - Fix build/host-setup.sh to execute as a Bourne shell script (again) 511 512 - Make target shared libraries portable to systems that don't use the exact 513 same toolchain. This is needed due to differences in libgcc.a implementations 514 between gcc 4.2.1 and 4.4.0. This change ensures that generated machine 515 code doesn't depend on helper functions provided by the Android platform 516 runtime. 517 518 519 IMPORTANT CHANGES: 520 521 - GCC 4.4.0 is now used by default by the NDK. It generates better code than 522 GCC 4.2.1, which was used in previous releases. However, the compiler's C++ 523 frontend is also a lot more pedantic regarding certain template constructs 524 and will even refuse to build some of them. 525 526 For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and 527 you can force its usage by defining NDK_TOOLCHAIN in your environment to 528 the value 'arm-eabi-4.2.1'. For example: 529 530 export NDK_TOOLCHAIN=arm-eabi-4.2.1 531 make APP=hello-jni 532 533 Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We 534 recommend switching to 4.2.1 *only* if you encounter compilation problems 535 with 4.4.0. 536 537 The 4.2.1 prebuilt binaries will probably be removed from a future release 538 of the Android NDK, we thus *strongly* invite you to fix your code if such 539 problems happen. 540 541 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to 542 reflect Android 2.0 (previously the Eclair branch). This is merely a copy 543 of android-4 that also includes headers and libraries for OpenGL ES 2.0. 544 545 See the sample named "hello-gl2" for a *very* basic demonstration. Note that 546 OpenGL ES 2.0 is currently *not* available from Java, and must be used 547 through native code exclusively. 548 549 IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this 550 time. Running/testing any native code that depends on it thus 551 requires a real device. 552 553 - The NDK build script will now remove installed binaries from the application 554 project's path before starting the build. This ensures that: 555 556 - if the build fails for some reason, a stale/obsolete file is not left in 557 your application project tree by mistake. 558 559 - if you change the target ABI, a stale/obsolete file is not left into the 560 folder corresponding to the old ABI. 561 562 563 - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0 564 issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and 565 2.0 on specific devices only, need for <uses-feature> tag in manifest). 566 567 568 OTHER FIXES AND CHANGES: 569 570 - Actually use the awk version detected by host-setup.sh during the build. 571 572 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set 573 to 'true', just like the documentation says it works. Also fix a typo 574 in CLEAR_VARS that prevented this variable from being cleared properly. 575 576 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is 577 gone, and --help will dump a clearer description of expected options 578 and input files. 579 580 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to 581 package a new experimental NDK package archive from the current source tree 582 plus the toolchain binaries of an existing NDK release package. E.g.: 583 584 build/tools/make-release.sh \ 585 --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip 586 587 will generate a new NDK package in /tmp/ndk-release that contains the most 588 up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which 589 are not in the git repository). 590 591 Also added the --no-git option to collect all sources from the current 592 NDK root directory, instead of the list given by 'git ls-files'. This can 593 be useful if you don't want to checkout the whole 'platform/development' 594 project from repo and still work on the NDK. 595 596 This change is to help people easily package experimental NDK releases to 597 test and distribute fixes and improvements. 598 599 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to 600 build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04) 601 602 - Remove bash-ism from build/tools/build-ndk-sysroot.sh 603 604 - Refresh C library headers for all platforms: 605 606 - make <endian.h> simply include <sys/endian.h> 607 - make <stdint.h> properly declare 64-bit integer types with a C99 compiler 608 - add missing <sys/types.h> to <strings.h> 609 - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and 610 st_ctimensec) to <stat.h> 611 - add missing declaration for tzset() in <time.h> 612 613 - Added build/tools/download-toolchain-sources.sh, a script that allows you 614 to download the toolchain sources from the official open-source repository 615 at android.git.kernel.org and nicely package them into a tarball that can 616 later be used by build/tools/build-toolchain.sh to rebuild the prebuilt 617 binaries for your system. 618 619 - Updated build/tools/build-toolchain.sh to support the tarballs generated 620 by download-toolchain-sources.sh with the --package=<file> option. This 621 also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to 622 gcc 4.4.0. 623 624 ------------------------------------------------------------------------------- 625 android-ndk-1.6_r1 626 627 IMPORTANT BUG FIXES: 628 629 - Fix build/host-setup.sh to: 630 * execute as a Bourne shell script 631 * remove unused host gcc dependency 632 * improve Windows host auto-detection 633 * add GNU Make version check 634 * add Nawk/Gawk check 635 * ensure that the script is run from $NDKROOT as build/host-setup.sh 636 * add --help, --verbose, --no-awk-check and --no-make-check options 637 638 - Properly add sysroot library search path at build time. This makes a line 639 in Android.mk like: 640 641 LOCAL_LDLIBS := -lz 642 643 Actually work correctly, instead of having the linker complaining that it 644 could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS 645 in $(CLEAR_VARS) script. 646 647 648 IMPORTANT CHANGES: 649 650 - The 'sources' directory is gone. The NDK build system now looks for 651 $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with 652 the new APP_BUILD_SCRIPT variable in Application.mk 653 654 For example, the 'hello-jni' sample uses the following files: 655 656 apps/hello-jni/project/jni/Android.mk 657 apps/hello-jni/project/jni/hello-jni.c 658 659 The 'apps/<name>' directory is still needed in this release though. 660 661 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build 662 system. This means that: 663 664 - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C) 665 - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++) 666 - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete. 667 (will disappear in next release) 668 669 Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly. 670 671 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match 672 the Android API level instead of the marketing speak. 673 674 Also add a new build/platforms/android-4, and make the build system select 675 which platform to use based on the content of the project file named 676 $(APP_PROJECT_PATH)/default.properties. 677 678 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs. 679 (NOTE: they are *not* available for android-3) 680 681 Also provide a small port of the "San Angeles Observation" demo to show 682 how to make a simple Android application that uses them. 683 684 685 OTHER FIXES AND CHANGES 686 687 - Ensure that the __ANDROID__ macro is always defined when building code 688 with the NDK. Normally, the macro must be defined by the toolchain 689 automatically to indicate that you're targetting the Android runtime. 690 691 This works for the new arm-linux-androideabi toolchain, but there is 692 a bug in the way we built the arm-eabi one, so add the flag manually 693 through the NDK build script for it. 694 695 Note that the ANDROID macro, is now deprecated. While it is still defined 696 by the NDK, you should modify your code to test against __ANDROID__ instead! 697 698 - Generate thumb binaries by default. 699 700 - Add support for LOCAL_ARM_MODE in Android.mk. 701 702 - Add support for the '.arm' suffix in source file names to force the 703 compilation of a single source in arm (32-bit) mode. 704 705 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug 706 707 - Add support for LOCAL_C_INCLUDES in Android.mk 708 709 - Fix compilation of assembler files (e.g. foo.S) 710 711 ------------------------------------------------------------------------------- 712 android-ndk-1.5_r1 released. 713 </pre></body></html> 714