| Android NDK ChangeLog: |
| |
| ---------------------------------------------------------------------------- |
| android-ndk-r9d |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Added Clang 3.4; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.4. |
| GCC 4.6 remains the default. |
| |
| - For ARM: Added APP_ABI=armeabi-v7a-hard. All ARM toolchain are rebuilt with |
| additional multilib option -mfloat-abi=hard. With "APP_ABI=armeabi-v7a-hard", |
| > 1. ndk-build add "TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1" and |
| "TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard" on top of the existing |
| flags for armeabi-v7a. The final library is installed at libs/armeabi-v7a, |
| (ie. can't coexist with armeabi-v7a in the same APP_ABI). Also note that APP_ABI=all |
| expands to "armeabi armeabi-v7a x86 mips" as before. |
| > 2. make-standalone-toolchain.sh copies additional libaries under /hard directories. |
| Add the above CFLAGS and LFLAGS in your makefile for GCC/clang to link with |
| libraries in /hard |
| |
| - For X86: Added yasm and LOCAL_ASMFLAGS/EXPORT_ASMFLAGS. |
| ndk-build use prebuilts/*/bin/yasm* to compile source specified in LOCAL_SRC_FILES |
| with .asm extension |
| |
| - Updated mclinker to 2.6.0 with -gc-sections support |
| |
| - Added experimental libc++ support (upstream r201101). To use it: |
| > 1. Add "APP_STL := c++_static" or "APP_STL := c++_shared" in Application.mk. |
| You may rebuild from source via "LIBCXX_FORCE_REBUILD := true" |
| > 2. "make-standalone-toolchain.sh --stl=libc++" to create standalone |
| toolchain with libc++ headers/lib |
| See b.android.com/36496 and CPLUSPLUS-SUPPORT.html |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed GCC 4.6/4.8 ARM EABI uncaught throw from unexpected exception |
| handler. |
| See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392 |
| |
| - Fixed GCC 4.8 not correctly resolve partial specialization of template with |
| dependent non-type template argument. |
| See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59052 |
| |
| - Added more modules to prebuilt python |
| > 1. linux: zlib, nis, crypt, _curses and _curses_panel |
| > 2. darwin: zlib, bz2, _curses, _curses_panel, _hashlib, _ssl |
| > See b.android.com/59902 |
| |
| - Fixed X86/MIPS' gdbserver event_getmsg_helper |
| |
| - Fixed numerous issues in the RenderScript NDK toolchain, including issues with |
| compatibility across older devices and C++ reflection. |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed headers |
| > 1. Fixed typo in sources/android/support/include/iconv.h. |
| See http://b.android.com/63806 |
| > 2. Fixed missing #include <sys/types.h> in android/asset_manager.h for API >= 13 |
| See http://b.android.com/64988 |
| > 3. Fixed missing #include <stdint.h> in android/rect_manager.h for API >= 14 |
| > 4. Added JNICALL to JNI_OnLoad and JNI_OnUnload in jni.h. Note that JNICALL |
| is defined to __NDK_FPABI__ (see sys/cdefs.h) |
| > 5. Fixed the following headers to be inclued alone: android/tts.h, EGL/eglext.h, |
| fts.h GLES/glext.h, GLES2/gl2ext.h, OMXAL/OpenMAXSL_Android.h, SLES/OpenSLES_Android.h, |
| sys/prctl.h, sys/utime.h. See http://b.android.com/64679 |
| > 6. Added sys/cachectl.h for all archs. Only has effect to mips, but |
| developers no longer need to put #ifdef __mips__ around it |
| > 7. Fixed platforms/android-18/include/android/input.h by adding |
| __NDK_FPABI__ to functions taking/returning float/double. |
| > 8. Fixed MIPS' "struct stat" which was incorrectly set to its 64-bit |
| counterpart for API>=12 (regression in the last r9c release) |
| > 9. Define __PTHREAD_MUTEX_INIT_VALUE, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE, |
| and __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE for API < 9 |
| > 10. Added scalbln, scalblnf, and scalblnl to x86's libm.so for API >= 18 |
| |
| - Fixed gabi++ std::unexpected() to call std::terminate() so that |
| user-defined std::terminate() handler have chance to run |
| |
| - Fixed gabi++ to catch std::nullptr |
| |
| - Fixed samples Teapot and MoreTeapots to |
| > 1. Rendering issue in Tegra2/3. Now having medium precision for specular |
| variable, so that specular power can be <1.0 |
| > 2. Workaround an issue where SYSTEM_UI_FLAG_IMMERSIVE_STICKY is invalidated |
| when a volume button is pressed. Issue remains: Immersive mode still does |
| not recover when the screen has been rotated, due to onSystemUiVisibilityChange |
| is not triggered when screen is rotated. |
| |
| - Fixed ndk-build to add -rpath-link=$SYSROOT/usr/lib and -rpath-link=$TARGET_OUT |
| for linking executable with ld.bfd. See b.android.com/64266 |
| |
| - Removed -Bsymbolic from all STL build |
| |
| - Fixed ndk-gdb-py.cmd by setting SHELL as env. var. instead of passing it to |
| python.exe which can't understand it. |
| See b.android.com/63054 |
| |
| - Fixed "make-standalone-toolchain.sh --stl=stlport" to copy instead of symlink |
| gabi++ headers, otherwise the one created in cygwin wont' be understood by |
| cmd.exe and MinGW shell |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - "chmod a+x" all *cmd scripts previously intended for use in CMD.exe only, |
| in case developers prefer to use ndk-build.cmd in cygwin instead of the |
| recommended ndk-build |
| |
| - Speed up make-standalone-toolchain.sh by moving instead of copying if |
| destination directory (eg. --install-dir=<dir>) doesn't exist. |
| |
| |
| ---------------------------------------------------------------------------- |
| android-ndk-r9c |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - This is a bug-fix-only release. |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed GCC 4.8 ARM where stack pointer is restored too early than access |
| to varaible in stack frame via frame pointer. |
| See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 |
| |
| - Fixed GCC 4.8 libstdc++ where the generated code random segfault on std::nth_element |
| See http://b.android.com/62910 |
| |
| - Fixed GCC 4.8 ICE in cc1/cc1plus with -fuse-ld=mcld. Message reads: |
| > cc1: internal compiler error: in common_handle_option, at opts.c:1774 |
| |
| - Fixed -mhard-float support for __builtin math functions. |
| See http://b.android.com/62496. Please track comment of http://b.android.com/61784 |
| for on-going fixes for -mhard-float with STL |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed headers |
| > 1. Fixed prototype of poll to poll(struct pollfd *, nfds_t, int); in poll.h |
| > 2. Added utimensat and futimens to libc.so to API level >=12 and >=19, respectively. |
| > 3. Added missing clock_settime() and clock_nanosleep() in time.h for API>=8. |
| > 4. Added CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, |
| CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, and CLOCK_BOOTTIME_ALARM in time.h. |
| Removed obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR. |
| |
| - Refactored samples Teapot, MoreTeapots and source/android/ndk_helper. |
| Use hard float-abi for armeabi-v7a, added immersive mode in android-19, etc. |
| Also fix crash on X86 device in /system/lib/libdvm.so Check_ReleaseStringUTFChars |
| |
| - Fixed ndk-build fails in cygwin if NDK package is referenced via symlink |
| |
| - Fixed ndk-build.cmd fails in windows cmd.exe if LOCAL_SRC_FILES |
| contain absolute path. |
| See https://android-review.googlesource.com/#/c/69992 |
| |
| - Fixed ndk-stack to proceed even when it can't parse a frame due to |
| unable to locate routine, filename, or line number, in which case "??" |
| is printed. |
| |
| - Fixed ndk-stack windows-x64_64 erroneously matches frame line with in "stack:" |
| section even when the line has no word "pc", "eip", or "ip" in it, eg. |
| > I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so |
| |
| - Fixed gabi++ to not use malloc() to allocate C++ thread-local |
| objects, and avoid dead-lock in gabi++ when libc.debug.malloc is non-zero in |
| userdebug/eng Android platform builds |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - Added LOCAL_EXPORT_LDFLAGS |
| |
| - Introducing NDK_PROJECT_PATH=null for use in an integrated build system |
| where options are explicitly passed to ndk-build. With it ndk-build |
| make no attempt to look for NDK_PROJECT_PATH, and as a result the following |
| variables depending on NDK_PROJECT_PATH to be explicitly specified |
| (since they can on longer derive default value from NDK_PROJECT_PATH when it's null): |
| NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (optional, default to 0), |
| and other APP_* used to be in Application.mk |
| |
| - Allow APP_ABI to be comma-delimited list, eg. APP_ABI := "armeabi,armeabi-v7a" |
| |
| - Rebuild all STL with debugging info (ie. "-g") in separate optional package |
| android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip. |
| This helps ndk-stack to provide better stack dump across STL. |
| The code/size of the final stripped shouldn't be affected. |
| |
| - Enhanced hello-jni samples to report APP_ABI at compilation |
| |
| - Static libraries are built with Deterministic (option D) mode of ar |
| tool. See http://b.android.com/60705 |
| |
| |
| ---------------------------------------------------------------------------- |
| android-ndk-r9b |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Updated include/android/*h and math.h for all API up to 18, add API level 13, |
| 15, 16 and 17 in the process. |
| See commit message in https://android-review.googlesource.com/#/c/68012 |
| and https://android-review.googlesource.com/#/c/68014 for added APIs. |
| Issues http://b.android.com/47150, http://b.android.com/58528, and |
| http://b.android.com/38423 |
| |
| - Added API19 for Renderscript binding support |
| |
| - Supported -mhard-float in the existing "armeabi-v7a" ABI. See |
| tests/device/hard-float/jni/Android.mk for details and current |
| restriction on Clang. |
| |
| - Rebased GCC 4.8 to 4.8.2, and add diagnostic color support. To enable |
| it, set -fdiagnostics-color=auto or -fdiagnostics-color=always, or |
| simply export GCC_COLORS, eg. |
| > export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' |
| |
| > See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html |
| |
| - Added two new samples to demostrate OpenGL ES3 features: Teapot and MoreTeapots. |
| Run on devices with API>=16 (Don't run on emulator) |
| |
| - Both GCC 4.7 and Clang 3.2 are deprecated, and will be removed from the next release. |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed ARM GCC 4.6 thumb2 fails to generate 16bit relative jump table. |
| See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48328 |
| |
| - Fixed GCC 4.8 ICE on g++.dg/cpp0x/lambda/lambda-defarg3.C |
| See https://android-review.googlesource.com/#/c/62770 and http://gcc.gnu.org/ml/gcc/2013-07/msg00424.html |
| |
| - Fixed Windows 32-bit *-gdb.exe fail to launch. |
| See http://b.android.com/58975 |
| |
| - Fixed GCC 4.8 ICE when building bullet library with error message reads: |
| > internal compiler error: verify_flow_info failed |
| |
| > See http://b.android.com/58916 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58165 |
| |
| - Fixed GDB/ARM to skip ARM.exidx data for unwinding in prologue code. |
| Add a command "set arm exidx-unwinding" to control exidx-based stack |
| unwinding. |
| See http://b.android.com/55826 |
| |
| - Fixed Clang 3.3 MIPS where HI and LO registers are incorrectly reused. |
| |
| - Fixed MIPS 4.7 ICE with erro reads: |
| > external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185 |
| |
| > See http://gcc.gnu.org/ml/gcc-patches/2012-12/msg00830.html |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed headers |
| > 1. Fixed ARM's WCHAR_MIN / WCHAR_MAX to be unsigned according to spec. (X86/MIPS' |
| are signed). Define _WCHAR_IS_ALWAYS_SIGNED to restore old behavior. |
| See http://b.android.com/57749 |
| > 2. Fixed include/netinet/tcp.h to contain TCP_INFO state enum. |
| See http://b.android.com/38881 |
| > 3. Fixed cdefs_elh.h _C_LABEL_STRING macro which causes warnings with gcc 4.8 toolchain in c++11 mode. |
| See http://b.android.com/58135, http://b.android.com/58652 |
| > 4. Removed non-existence functions imaxabs and imaxdiv from header inttypes.h |
| > 5. Marked pthread_exit() as __noreturn, and pthread_self() as __pure2. |
| See http://b.android.com/60686 |
| > 6. Added missing mkdtemp() already exists in bionic in stdlib.h |
| |
| - Fixed samples/gles3jni build with Clang at android-11 |
| |
| - Fixed mclinker to allow mulitple occurrences of the following options: -gc-sections and --eh-frame-hdr. |
| |
| - Fixed mclinker to accept --no-warn-mismatch |
| |
| - Fixed cpu-features not to assume all VFPv4 devices support IDIV. |
| Now it only adds IDIV to white-listed devices (Nexus 4 at this moment) |
| http://b.android.com/57637 |
| |
| - Fixed android_native_app_glue.c to stop errors being logged erroneously on event predispatch |
| |
| - Fixed all operations on gabi++ terminate and unexpected_handler to be thread-safe |
| |
| - More fixes on Clang -integrated-as to pass tests ssax-instructions and fenv |
| |
| - Fixed GCC 4.6/4.7/4.8 to pass linker option --eh-frame-hdr even for |
| static executable. See http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00969.html |
| |
| - Fixed extra apostrophe in docs/CPU-ARCH-ABIS.html |
| See docs/NDK-DEPENDS.html, http://b.android.com/60142 |
| |
| - Fixed extra quotes in ndk-build output on Windows |
| See http://b.android.com/60649 |
| |
| - Fixed Clang 3.3 to compile ARM atomic builtin __atomic_fetch_add/sub/or/... |
| |
| - Fixed Clang 3.3 ICE on customized vfprintf. See |
| http://llvm.org/bugs/show_bug.cgi?id=16344 |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - Enabled OpenMP for all GCC: Add the following flags: "LOCAL_CFLAGS += -fopenmp" |
| and "LOCAL_LDFLAGS += -fopenmp". |
| Please find examples in tests/device/test-openmp |
| |
| - Significantly reduced the size of ld.mcld (1.5MB vs. ld.bfd 3.5MB and ld.gold 7.5MB) |
| and result in ~20% speed up too. |
| |
| - Added LOCAL_CONLYFLAGS and APP_CONLYFLAGS to specify options applicable to C only |
| but not C++. The reason being that the existing LOCAL_CFLAGS and APP_CFLAGS are |
| also used for C++ compilation (to save trouble of specifying most options twice), |
| option like -std=gnu99 may fail g++ (warning) and clang++ (error). |
| |
| - Added gabi++ array helper functions |
| |
| - All libgcc.a in gcc are built with -funwind-tables to allow stack to unwind past __aeabi_idiv0 |
| for example |
| |
| - Added Ingenic MXU support in MIPS GCC 4.6/4.7/4.8 with new option -mmxu |
| |
| - Extended MIPS GCC 4.6/4.7/4.8 -mldc1-sdc1 to control ldxc1/sdxc1 too |
| |
| - Added crazy linker. See sources/android/crazy_linker/README.TXT |
| |
| - Fixed bitmap-plasma to draw on full screen rather than 200x200 |
| |
| - Reduced linux and darwin toolchain size by 25% (by symlink to |
| identical files) |
| |
| |
| ---------------------------------------------------------------------------- |
| android-ndk-r9 |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Added GLES3 headers/libraries and new API level 18. |
| See docs/STABLE-APIS.html and the new samples/gles3jni/README |
| |
| - Added GCC 4.8 compiler. Since GCC 4.6 is still the default, |
| you need to explicitly enable it: |
| > 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.8 or add it |
| in Application.mk. |
| > 2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh. |
| eg. "--toolchain=arm-linux-androideabi-4.8" |
| |
| > Note that: |
| |
| > 1. -Wunused-local-typedefs is enabled by -Wall. Be sure to add "\__attribute__((unused))" |
| if you use compile-time assert like sources/cxx-stl/stlport/stlport/stl/config/features.h |
| line #311. |
| See https://android-review.googlesource.com/#/c/55460 |
| > 2. Since 4.7 -munaligned-access is default for ARMv6+. You may |
| compile with -mno-unaligned-access for kernel not supporting it. |
| |
| - Added Clang 3.3; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.3. |
| |
| - Both GCC 4.4.3 and Clang 3.1 are deprecated, and will be removed |
| from the next release. |
| |
| - Gdb is now built with python 2.7.5 support. |
| |
| - Added mclinker for Windows host. Since ld.gold is the default |
| where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or |
| APP_LDFLAGS to explicitly enable it. |
| |
| - New tool ndk-depends to print ELF library dependencies. |
| See docs/NDK-DEPENDS.html, http://b.android.com/53486 |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed potential event handling issue in android_native_app_glue. |
| See http://b.android.com/41755 |
| |
| - Fixed ARM/GCC-4.7 to generates sufficient alignment for NEON |
| instruction vst/vld. |
| See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271 |
| |
| - Fixed GCC 4.4.3/4.6/4.7 ICE at const negative index to string literal |
| See http://b.android.com/54623 |
| |
| - Fixed GCC 4.7 segfault on const init to object address. |
| See http://b.android.com/56508 |
| |
| - Fixed GCC 4.6 ARM broken -Os on boost 1.52.0. |
| See http://b.android.com/42891 |
| |
| - Fixed libc.so and libc.a to contain wait4 already exist in header. |
| See http://b.android.com/19854 |
| |
| - Fixed x86's libc.so and libc.a to contain clone() |
| |
| - Fixed LOCAL_SHORT_COMMANDS bug where linker.list file is empty and not |
| used. |
| See http://b.android.com/57105 |
| |
| - Fixed GCC MIPS on darwin to use CFI directives. Without this, |
| "ld.mcld --eh-frame-hdr" fail very often. |
| |
| - Fixed Clang 3.2 X86/MIPS ICE in llvm/lib/VMCore/Value.cpp. |
| See https://android-review.googlesource.com/#/c/59021 |
| |
| - Fixed GCC 4.7 64-bit Windows assembler crash with error message reads: |
| "out of memory allocating 4294967280 bytes" |
| |
| - ndk-gdb "--start" or "--launch" now has application waits for gdbserver to |
| attach, which allows breakpoints set in early execution path (eg. JNI) to |
| be hit more reliably. It does needs jdb and produces warning about pending |
| breakpoints. You may specify "--nowait" to restore previous behavior. |
| See http://b.android.com/41278 |
| |
| - Fixed GDB crashes when library list is empty |
| |
| - Fixed GDB crashes when "stepi" past a "bx pc" or "blx pc" Thumb instruction |
| See http://b.android.com/56962 and http://b.android.com/36149 |
| |
| - Fixed MIPS gdbserver to look for DT_MIPS_RLD_MAP instead of DT_DEBUG. |
| See http://b.android.com/56586 |
| |
| - Fixed ndk-build circular dependency, eg. A->B, B->B, then B was dropped from build. |
| See http://b.android.com/56690 |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed ndk-build to be able to replace NDK_TOOLCHAIN_VERSION=clang specified at |
| commandline to clang3.2. (Fine if it's specified in environment variable). |
| Error message reads |
| |
| ... ndk/toolchains/arm-linux-androideabi-clang/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc |
| Command not found |
| |
| - Fixed gabi++ sizeof(_Unwind_Exception) to be 24 for MIPS in Clang. |
| See https://android-review.googlesource.com/#/c/54141 |
| |
| - Fixed ndk-build to ensure that built libraries actually are removed on |
| ndk-build clean, from projects that include prebuilt static libraries. |
| See See http://b.android.com/53527, |
| https://android-review.googlesource.com/#/c/54461/ and |
| https://android-review.googlesource.com/#/c/54480 |
| |
| - Fixed NDK_ANALYZE=1 to be less verbose |
| |
| - Fixed gnu-libstdc++/Android.mk to include /backward path. |
| Error message reads: |
| |
| sources/cxx-stl/gnu-libstdc++/4.6/include/ext/hash_map:61:30: fatal |
| error: backward_warning.h: No such file or directory |
| |
| > See http://b.android.com/53404 |
| |
| - Fixed stlport new somtimes return randon values |
| |
| - Fixed ndk-gdb to match in the order of CPU_ABIS, not APP_ABIS. |
| See http://b.android.com/54033 |
| |
| - Fixed NDK 64-bit on MacOSX choses wrong path for compiler. |
| See http://b.android.com/53769 |
| |
| - Fixed to detect 64-bit Windows Vista. |
| See http://b.android.com/54485 |
| |
| - Fixed X86 ntonl/swap32. Error message reads: |
| error: invalid 'asm': operand number out of range" |
| |
| > See http://b.android.com/54465 and |
| https://android-review.googlesource.com/#/c/57242 |
| |
| - Fixed ld.gold to merge string literals |
| |
| - Fixed ld.gold to handle large symbol alignemnt |
| |
| - Fixed ld.gold to enable "--sort-section=name" option |
| |
| - Fixed GCC 4.4.3/4.6/4.7 to supress -export-dynamic for statically linked |
| programs. GCC no longer adds .interp section for statically linked programs. |
| |
| - Fixed GCC 4.4.3 stlport compilation error about inconsistent typedef of |
| _Unwind_Control_Block. |
| See https://android-review.googlesource.com/#/c/54426 |
| |
| - Fixed awk scripts to handle AndroidManifest.xml created on Windows |
| which may contain trailing \r, and cause error message reads. |
| See http://b.android.com/42548 |
| |
| > __gmsl:512: *** non-numeric second argument to wordlist' function: ''. Stop. |
| |
| > Invalid attribute name: |
| > package |
| |
| - Fixed make-standalone-toolchain.sh to probe the prebuilts/ dir to detect the |
| appropriate default host bitness. |
| |
| - Fixed clang3.2 -integrated-as |
| |
| - Fixed clang3.2 ARM EHABI compact model pr1/pr2 handlerdata |
| |
| - Fixed clang error with option "-mllvm -arm-enable-ehabi" which reads |
| |
| > clang: for the -arm-enable-ehabi option: may only occur zero or one times! |
| |
| - Fixed NDK fails to build if there's no uses-sdk element in AndroidManifest.xml. |
| See http://b.android.com/57015 |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - Fixed headers |
| > 1. \__set_errno in errno.h is deprecated, and libc.so no longer exports it. |
| To be compatible in the meantime, __set_errno becomes an inlined function in header |
| > 2. \#include "stdint.h" in elf.h. |
| See http://b.android.com/55443 |
| > 3. Fixed sys/un.h to be included on its own. |
| See http://b.android.com/53646 |
| > 4. Fixed MotionEvent_getHistorical family of APIs in usr/include/android/input.h to |
| all take const AInputEvent* motion_event. |
| See http://b.android.com/55873 |
| > 5. Fixed malloc_usable_size to take "const void*". |
| See http://b.android.com/55725 |
| > 6. Fixed stdint.h to be more compatible with C99. |
| See https://android-review.googlesource.com/#/c/46821 |
| > 7. Fixed wchar.h not to redefine WCHAR_MAX/WCHAR_MIN |
| > 8. Fixed <inttypes.h> declaration for pointer-related PRI/SCN macros. |
| See http://b.android.com/57218 |
| > 9. Changed sys/cdefs.h so __WCHAR_TYPE__ is 32-bit even for API < 9, |
| ie. wchat_t is 32-bit for all API level. |
| Define _WCHAR_IS_8BIT to restore old behavior. |
| See http://b.android.com/57267 |
| |
| - Added more fomatting in NDK docs/, and misc docs/ fixes including callbacks/threads and others. |
| |
| - Support "thin-archive" for building static libraries. |
| See http://b.android.com/40303 and ANDROID-MK.html |
| |
| - Script make-standalone-toolchain.sh now supports stlport |
| in addition to gnustl, with --stl=stlport. |
| See http://b.android.com/53472 and STANDALONE-TOOLCHAIN.html |
| |
| - Script make-standalone-toolchain.sh --llvm-version= now also |
| creates scripts $TOOLCHAIN_PREFIX-clang and $TOOLCHAIN_PREFIX-clang++ |
| in addition to clang and clang++, to avoid using host's clang/clang++ |
| by accident. |
| |
| - Added two flags to re-enable two optimizations in upstream Clang |
| but disabled in NDK for better compatibility with code used to be |
| compiled by GCC: |
| > 1. Added a flags -fcxx-missing-return-semantics to re-enable "missing |
| return semantics" in clang 3.2+. Normally for a value-returning |
| function all paths should terminate with a return statment. If not, |
| clang inserts undefined instruction (or trap in debug mode) at path |
| w/o return statement. If you are sure your code is correct, use |
| this flag for optimizer to take advantage of the undefined behavior. |
| If you are not sure, don't use this flag. The caller may still receiver |
| random incorrect value, but optimizer won't exploit it and make thing |
| even worse to debug. |
| > 2. Added a flag -fglobal-ctor-const-promotion to re-enable promoting |
| global variables with static constructor to constant. With this |
| flag, the global variable optimization pass of LLVM will try to |
| evalutate the global variables with static constructors, and promote |
| the global constants. Although this optimization is correct, it may |
| cause some incompatability with code compiled by gcc. For example, |
| code may do const_cast to cast the constant to mutable and modify it. |
| In GCC the variable is in read-write and the code run by accident. But |
| in Clang the const variable will be in read-only memory and crash |
| |
| - Added -mldc1-sdc1 to MIPS GCC and Clang compilers. By default |
| compilers align 8-byte objects properly and emit instructions |
| ldc1/sdc1 to move them around. If your app use custom allocator |
| which doesn't always align new object 8-byte boundary like the default |
| one does, your app may crashes due to ldc1/sdc1 on unaligned memory. |
| In this case you may use -mno-ldc1-sdc1 to workaround. |
| |
| - Downgrade warning to "info" if APP_PLATFORM_LEVEL is larger than APP_MIN_PLATFORM_LEVEL. |
| APP_PLATFORM_LEVEL may be lower than APP_PLATFORM in jni/Application.mk |
| because NDK doesn't have headers for all level, and the actual level is |
| shifted downward. APP_MIN_PLATFORM_LEVEL is retrieved from android:minSdkVersion |
| in AndroidManifest.xml. |
| See http://b.android.com/39752 |
| |
| - cpu-features.c: add android_getCpuIdArm() and android_setCpuArm() |
| This allows retrieving the ARM CPUID information easily. |
| See http://b.android.com/53689 |
| |
| - Clang now compiles with GCC 4.8's as/ld in ndk-build. |
| Note that from GCC 4.7, "monotonic_clock" and "is_monotonic" are |
| renamed to "steady_clock" and "is_steady", respectively |
| |
| - Added new warnings in ndk-build: |
| > 1. if LOCAL_LDLIBS/LDFLAGS are used in static library modules |
| > 2. if there is no module to build |
| > 3. non-system libraries used in LOCAL_LDLIBS/LDFLAGS of shared library |
| or executable modules |
| |
| - Updated ndk-build so that if APP_MODULES is not defined and only static libraries |
| are listed in Android.mk, force-build all of them. |
| See http://b.android.com/53502 |
| |
| - ndk-build now supports absolute paths in LOCAL_SRC_FILES |
| |
| - Executable "`*-gdbtui", which is equivalent to "`*-gdb -tui", is removed for the sake of space. |
| |
| - Issue warning when EDG front-end turns _STLP_HAS_INCLUDE_NEXT |
| back on. |
| See http://b.android.com/53646 |
| |
| - Added NDK_LIBS_OUT to override path for libraries/gdbserver from the default |
| $PROJECT/libs. See OVERVIEW.html |
| |
| - Changed ndk-build defaults to compile code with format string protection |
| "-Wformat -Werror=format-security". You may set |
| LOCAL_DISABLE_FORMAT_STRING_CHECKS=true to disable it. |
| See ANDROID-MK.html |
| |
| - Added STL pretty-print support in ndk-gdb-py. |
| See NDK-GDB.html |
| |
| - Misc build/test |
| > - Added tests based on googletest frameworks |
| > - toolchain build script warns if shell isn't bash |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r8e |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - NDK now delivers additional 64-bit host toolchain set (package name suffix |
| `*-x86_64.*`) |
| |
| > 1. The ndk-build script uses 64-bit toolchain if it's present and your OS |
| supports it. If you install both 32-bit and 64-bit toolchain on 64-bit |
| OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to |
| always use the 32-bit host toolchain. |
| |
| > 2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64" |
| on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host |
| toolchain instead of the default 32-bit |
| |
| > See NDK-BUILD.html |
| |
| - Added Clang 3.2 compiler. Since GCC 4.6 is still the default, you need to |
| explicitly enable it: |
| |
| > 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or |
| NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the |
| clang compilers in the package) or add it in Application.mk. |
| |
| > 2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh |
| and replace CC and CXX in your makefile with <tool-path>/bin/clang |
| and <tool-path>/bin/clang++. |
| |
| - Added static code analyzer for Linux/MacOSX hosts |
| |
| > 1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line. |
| |
| > 2. For standalone, please refer to ndk-build for example to run scan-build |
| using /path/to/standalone/bin/<arch>/analyzer. |
| |
| > This feature is experimental now but welcome to try and report issues. |
| |
| - Added MCLinker for Linux/MacOSX hosts. Since ld.gold is the default |
| where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or |
| APP_LDFLAGS to explicitly enable it. |
| |
| > This feature is experimental now but welcome to try and report issues. |
| Please find project page: https://code.google.com/p/mclinker/ |
| |
| - ndk-build now uses topological sort for module dependencies, ie. |
| it automatically sorts out the order of libraries specified in |
| LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and |
| LOCAL_SHARED_LIBRARIES. |
| |
| > See http://b.android.com/39378 and an example in tests/build/topological-sort. |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed build script to build all toolchains in -O2. Toolchains |
| in previous releases were incorrectly built without optimization. |
| |
| - Fixed build script which unconditionally builds Clang/llvm for MacOSX |
| in 64-bit |
| |
| - Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832. |
| See http://b.android.com/52732 |
| |
| - Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in |
| functions. |
| See http://b.android.com/41297 |
| |
| - Fixed GCC 4.7 linker error reads like |
| .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between |
| out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o) |
| and output. |
| |
| > See http://sourceware.org/ml/binutils/2012-12/msg00202.html |
| |
| - Fixed GCC 4.7 ICE in build_data_member_initialization, at |
| cp/semantics.c:5790 |
| |
| - Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214. |
| See http://b.android.com/52909 |
| |
| - Fixed a GCC 4.7 segfault. |
| See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245 |
| |
| - Fixed to <chrono> clock resolution and enable steady_clock. |
| See http://b.android.com/39680 |
| |
| - Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++. |
| See http://b.android.com/41770 and http://b.android.com/41859 |
| |
| - Fixed X86 MXX/SSE code fails to link due to missing posix_memalign. |
| See https://android-review.googlesource.com/#/c/51872 |
| |
| - Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb(). |
| See https://android-review.googlesource.com/#/c/50383 |
| |
| - Fixed GCC4.7/X86 to resotre earlier cmov behavior. |
| See http://gcc.gnu.org/viewcvs?view=revision&revision=193554 |
| |
| - More fixes to handle NULL return value of setlocale() in |
| libstdc++/GCC4.7. |
| See http://b.android.com/46718 |
| |
| - Fixed ld.gold runtime undefined reference to __exidx_start/_end. |
| See https://android-review.googlesource.com/#/c/52134 |
| |
| - Fixed Clang3.1 ICE using Eigen library. |
| See http://b.android.com/41246 |
| |
| - Fixed Clang3.1 ICE including <chrono> in C++11 mode. |
| See http://b.android.com/39600 |
| |
| - Fixed Clang3.1 ICE when generating object code for a method |
| call to a uniform initialized rvalue. |
| See http://b.android.com/41387 |
| |
| - Fixed Clang3.1/X86 stack realignment. |
| See https://android-review.googlesource.com/#/c/52154 |
| |
| - Fixed GDB SIGILL when debugging on platform 4.1.2. |
| See http://b.android.com/40941 |
| |
| - Fixed GDB cannot set "source:line" breakpoints when symbols contain |
| frankenpaths. |
| See http://b.android.com/42448 |
| |
| - Fixed GDB read_program_header for MIPS PIE executables. |
| See https://android-review.googlesource.com/#/c/49592 |
| |
| - Fixed STLport segfault in uncaught_exception(). |
| See https://android-review.googlesource.com/#/c/50236 |
| |
| - Fixed STLport Bus error in exception handling due |
| to unaligned access of DW_EH_PE_udata2, 4 and 8. |
| |
| - Fixed Gabi++ nothrow new[] infinite recursion. |
| See http://b.android.com/52833 |
| |
| - Fixed Gabi++ wrong offset to EH pointer. |
| See https://android-review.googlesource.com/#/c/53446 |
| |
| - Removed Gabi++ redundant free on exception object. |
| See https://android-review.googlesource.com/#/c/53447 |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fix NDK headers |
| |
| > 1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t |
| > 2. Fixed MIPS and ARM fenv.h |
| > 3. Fixed stddef.h to not re-define offsetof already exists |
| in toolchain |
| > 4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t. |
| See http://b.android.com/38441 |
| > 5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h. |
| See http://b.android.com/53163 |
| |
| - Fixed STLport to abort after OOM instead of (silent) exit |
| |
| - Fixed 'system' and 'Gabi++' headers to be able to compile |
| with API level < 9 |
| |
| - Fixed cpufeatures to not parse /proc/self/auxv. |
| See http://b.android.com/43055 |
| |
| - Fixed ld.gold to not depending on host libstdc++, and in case |
| of windows, library libgcc_sjlj_1.dll |
| |
| - Fixed Clang3.1 which emits inconsistent register list in .vsave |
| and fails assembler. eg. |
| .vsave {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22} |
| See https://android-review.googlesource.com/#/c/49930 |
| |
| - Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport |
| on MIPS. |
| See https://android-review.googlesource.com/#/c/51961 |
| |
| - Fixed Clang3.1 to only enable exception by default for C++, |
| not for C |
| |
| - Misc fixes in Clang3.1 to pass most GNU exception tests |
| |
| - Fixed script clang/clang++ in standalone NDK compiler to |
| detect -cc1 and don't specify "-target" when found |
| |
| - Fixed ndk-build to observe NDK_APP_OUT set in Application.mk |
| See http://b.android.com/42477 |
| |
| - Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already |
| declared in setjmp.h. |
| See http://b.android.com/19851 |
| |
| - Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11. |
| See http://clang.llvm.org/cxx_status.html |
| |
| - Fixed cygwin path in argument passed to HOST_AWK |
| |
| - Fixed ndk-build warning in windows when running from project's jni/ |
| directory. |
| See http://b.android.com/40192 |
| |
| - Fixed ndk-build won't build if makefile has tailing whitespace in |
| LOCAL_PATH definition. |
| See http://b.android.com/42841 |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - Enabled threading support in GCC/MIPS toolchain |
| |
| - Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match |
| in GNU libstdc++. |
| |
| > See tests/build/b8247455-hidden-cxa/jni/Android.mk |
| |
| - Gabi++ and STLport static libraries are now built with hidden |
| visibility except for EH helpers |
| |
| - STLport in ARM is now built in thumb mode |
| |
| - Added support for std::set_new_handler in Gabi++. |
| See http://b.android.com/52805 |
| |
| - Enabled FUTEX in GNU libstdc++ |
| |
| - ndk-build no longer copies prebuilt static library to project's |
| obj/local/<abi>/directory. |
| See http://b.android.com/40302 |
| |
| - Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk. |
| See http://b.android.com/21132 |
| |
| - Built additional GNU libstdc++ libaries in thumb mode for ARM |
| |
| - Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt |
| instructions with 32-bit FPU |
| |
| - Enabled graphite in GCC 4.6 and 4.7. Allow more loop optimizations: |
| -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten, |
| -floop-interchange, -floop-strip-mine, -floop-parallelize-all, |
| and -ftree-loop-linear. |
| |
| > See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html |
| |
| - Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes |
| and optimizes memory access pattern. |
| |
| > See http://polly.llvm.org |
| |
| - Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO |
| via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold) |
| |
| - Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7 |
| |
| - Enabled --text-reorder for ld.gold in GCC 4.7 |
| |
| - GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef |
| isinf, etc (*1), in bionic header. If you have code which does the following |
| |
| #include <math.h> |
| ... use isinf |
| #include <cmath> |
| #include <math.h> |
| ... use isinf // fails |
| |
| > The 2nd use of isinf may fail because cmath undefined isinf |
| |
| (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf, |
| isnan, isnormal, isgreater, isgreaterequal, isless, islessequal, |
| islessgreater, isunordered, signbit |
| |
| - Added APP_LDFLAGS. See ANDROID-MK.html. |
| |
| - Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain, |
| respectively. |
| |
| - Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom |
| |
| - Misc toolchain build script enhancements: |
| |
| > 1. Fixed a race condition in build-gcc.sh mingw build which used to prevent |
| high degree of parallel build |
| > 2. build-gabi++.sh and build-stlport.sh can now run from NDK package. |
| See http://b.android.com/52835 |
| > 3. Fixed run-tests.sh in MSys |
| > 4. Better 64-bit host toolchain and canadian build supports |
| > 5. Updated build-mingw64-toolchain.sh for modern versions |
| > 6. Option to build libgnustl_static.a and stlport_static.a without hidden |
| visibility |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r8d |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Added GCC 4.7 compiler. Since GCC 4.6 is still the default, |
| you need to explicitly enable it: |
| |
| > 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.7 or add it |
| in Application.mk. |
| > 2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh. |
| eg. "--toolchain=arm-linux-androideabi-4.7" |
| |
| > This feature is experimental now but welcome to try and report issues. |
| |
| - Added stlport exception support via gabi++. Note that the new gabi++ |
| depends on dlopen, etc, meaning that: |
| |
| > 1. libstlport_static.a can no longer be used in "static" executable (-static, |
| only possible with standalone toolchain). "dynamic" executable (eg. |
| include $(BUILD_EXECUTABLE)) can link fine because compiler impliciently adds -ldl |
| > 2. If your project links with "-nostdlib -Wl,--no-undefined", you need to provide |
| your own -ldl |
| |
| > See CPLUSPLUS-SUPPORT.html. |
| |
| > This feature is experimental now and works better with GCC 4.6/4.7 |
| than with GCC 4.4.3 and clang3.1. Welcome to try and report issues. |
| |
| - Add -mstack-protector-guard= option for x86 to choose between "global" |
| (default, compatible with older bionic) and "tls" (new %gs:20) for |
| -fstack-protector, -fstack-protector-all, and -fstack-protector-strong |
| (GCC 4.6+). Note that this alone doesn't enable any -fstack-protector* |
| |
| - Add android_setCpu() to sources/android/cpufeatures/cpu-features.c |
| when auto-detection via /proc isn't possible in and after JB. |
| See http://code.google.com/p/chromium/issues/detail?id=164154 |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed un-needed rebuild of object files via ndk-build. |
| See http://code.google.com/p/android/issues/detail?id=39810 |
| |
| - Fixed r8c linker fail in MacOSX 10.6.x with error reads: |
| |
| dyld: lazy symbol binding failed: Symbol not found: _memmem |
| Referenced from: ...../arm-linux-androideabi/bin/ld |
| Expected in: /usr/lib/libSystem.B.dylib |
| |
| > r8c was packaged on 10.7 machine which produced binaries not |
| compatible with 10.6 SDK/NDK still supports. Will build it |
| on 10.6 from now on. |
| |
| - Removed '-x c++' from clang++ in standalone. |
| See http://code.google.com/p/android/issues/detail?id=39089 |
| |
| - Fixed issues using NDK_TOOLCHAIN_VERSION=clang3.1 in cygwin. |
| See http://code.google.com/p/android/issues/detail?id=39585 |
| |
| - Fixed make-standalone-toolchain.sh to create standalone toolchain |
| on cygwin and MinGW, which works for all cygwin, MingGW, and CMD.exe. |
| See http://code.google.com/p/android/issues/detail?id=39915 and |
| http://code.google.com/p/android/issues/detail?id=39585 (again) |
| |
| - Added missing SL_IID_ANDROIDBUFFERQUEUESOURCE in android-14 for |
| ARM/X86. |
| See http://code.google.com/p/android/issues/detail?id=40625 |
| |
| - Fixed x86 cpu detection for MOVBE. |
| See http://code.google.com/p/android/issues/detail?id=39317 |
| |
| - Fixed an issue preventing STL dependencies to C++ sources not |
| in .cpp extension. |
| |
| - Fixed GCC 4.6 ARM ICE at reload1.c:1061. |
| See http://code.google.com/p/android/issues/detail?id=20862 |
| |
| - Fixed GCC 4.4.3 ARM ICE at emit-rtl.c:1954. |
| See http://code.google.com/p/android/issues/detail?id=22336 |
| |
| - Fixed GCC 4.4.3 ARM ICE at postreload.c:396. |
| See http://code.google.com/p/android/issues/detail?id=22345 |
| |
| - Fixed GCC 4.6/4.7 elides lambdas. |
| See http://code.google.com/p/android/issues/detail?id=35933 |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed NDK headers |
| |
| > 1. Fixed __WINT_TYPE__ and wint_t to be the same type |
| > 2. Corrected typo in <android/bitmap.h>. |
| See http://code.google.com/p/android/issues/detail?id=15134 |
| > 3. Corrected typo in <errno.h>. |
| See http://code.google.com/p/android/issues/detail?id=15134 |
| > 4. Check the presence of __STDC_VERSION__ in <sys/cdefs.h>. |
| See http://code.google.com/p/android/issues/detail?id=14627 |
| > 5. Re-org headers byteswap.h and dirent.h |
| > 6. Fixed limits.h to include page.h which provides PAGE_SIZE. |
| See http://code.google.com/p/android/issues/detail?id=39983 |
| > 7. Fixed return type of glGetAttribLocation and glGetUniformLocation |
| from int to GLint. |
| > 8. Fixed __BYTE_ORDER for x86. |
| See http://code.google.com/p/android/issues/detail?id=39824 |
| |
| - Fixed ndk-build to not overwrite -Os with -O2 in ARM |
| |
| - Fixed to allow overwriting HOST_AWK, HOST_SED, and HOST_MAKE. |
| |
| - Fixed ld.gold issue on fsck_msdos build linking objects built by ICC |
| |
| - Fixed ARM EHABI support in clang conforming to spec. |
| |
| - Fixed GDB to shorten the time spending on walking target's link map upon |
| solib events. |
| See http://code.google.com/p/android/issues/detail?id=38402 |
| |
| - Fixed missing libgcc.a when linking shared libraries |
| |
| |
| OTHER CHANGES: |
| |
| - Backported 64-bit built-in atomic functions for ARM to GCC 4.6 |
| |
| - Documentation for audio output latency, other misc docs/ fixes |
| |
| - Non-void functions in debug build by Clang now raise SIGILL on path w/o |
| return statement |
| |
| - make-standalone-toolchain.sh now accepts surffix "-clang3.1" which is |
| equivalent to adding "--llvm-version=3.1" on GCC 4.6 toolchain. |
| |
| - Changed GCC and Clang bug report URL to http://source.android.com/source/report-bugs.html |
| |
| - Added ARM ELF support to llvm-objdump. |
| |
| - Suppressed warning "treating c input as c++" in clang. |
| |
| - Only 32-bit of libiberty.a is built (placed at lib32/) |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r8c |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Added Clang 3.1 compiler. Since GCC 4.6 is still the default, |
| you need to explicitly enable it: |
| 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.1 or add it |
| in Application.mk. |
| 2. For standalone: Add "--llvm-version=3.1" to make-standalone-toolchain.sh |
| and replace CC and CXX in your makefile with <tool-path>/bin/clang |
| and <tool-path>/bin/clang++. |
| |
| > See STANDALONE-TOOLCHAIN.html for details. |
| This feature is experimental now but welcome to try and report issues. |
| |
| - Gold linker ld.gold is now available in Windows toolchain. Gold is also the |
| default linker for ARM/X86 on all hosts. You may override it to use ld.bfd |
| linker by adding LOCAL_LDFLAGS += -fuse-ld=bfd in Android.mk, or pass |
| -fuse-ld=bfd to g++/clang++ commandline which does the linking. |
| |
| - ndk-build[.cmd] and ndk-gdb now check and bail out if NDK path contains space. |
| |
| - Changes in API level |
| 1. Projects with android-10 .. 13 specified in APP_PLATFORM, project.properties or |
| default.properties will link against android-9 instead of android-14. |
| 2. Executable in project with android-16 (Jelly Bean) or higher is compiled |
| with -fPIE (position-independent executables). A new APP_PIE allow manual control |
| of this behavior. See APPLICATION-MK.html for details. Note that all API level |
| above 14 still link against platforms/android-14. ie. no new platforms/android-N |
| is added. |
| 3. ndk-build now warns about the adjusted API level is larger than android:minSdkVersion |
| in project's AndroidManifest.xml. |
| |
| - ARM: Updated 'cpu-features' helper library to include 9 more ARM-specific features. |
| |
| > See sources/android/cpufeatures/cpu-features.h for details. |
| |
| - X86: long double is still a distinct type but it's 8-byte in size now (same as double) |
| |
| - APP_ABI=armeabi-v7a: |
| 1. -march=armv7-a is also passed to linker to link v7-specific libraries and crt*.o |
| 2. -mfpu=vfpv3-d16 is added by ndk-build instead of -mfpu=vfp in the previous releases. |
| |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed an issue when make-standalone-toolchain.sh is run under root privilege resulting |
| in standalone toolchain inaccessible to some. |
| 1. All files/executables attributes in NDK release package are set to readable/executable to all |
| 2. The ownership/group of file libstdc++.a is now preserved when copied |
| |
| > See http://code.google.com/p/android/issues/detail?id=35279 |
| |
| - Removed redundant \r from Windows prebuilt echo.exe. The redundant \r in gdb.setup fails |
| GDB because it incorrectly becomes part of the path. |
| |
| > See http://code.google.com/p/android/issues/detail?id=36054 |
| |
| - Fixed windows parallel builds that sometimes failed due to timing issues in the host-mkdir |
| implementation. |
| |
| > See http://code.google.com/p/android/issues/detail?id=25875 |
| |
| - Fixed GCC 4.4.3 GNU libstdc++ to NOT merge typeinfo names by default. |
| |
| > See toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo, |
| http://code.google.com/p/android/issues/detail?id=22165, and |
| https://groups.google.com/forum/#!msg/android-ndk/FlnuAOIKHOo/kLEwaBso7KYJ%5B1-25%5D |
| |
| - Fixed crash on null context in GCC 4.6 cp/mangle.c::write_unscoped_name, where gcc |
| may crash when context == NULL and dereferenced in TREE_CODE |
| |
| - Fixed GCC 4.4.3 crashes on NEON specific typedef for float |
| |
| > See http://code.google.com/p/android/issues/detail?id=34613 |
| |
| - Fixed the STLport internal _IteWrapper::operator*() implementation where stale |
| stack location holding the dereferenced value is returned and leads to runtime crashes |
| |
| > See http://code.google.com/p/android/issues/detail?id=38630 |
| |
| - ARM: Fixed ARM GCC 4.4.3/4.6 g++ to not warn about "the mangling of <va_list> has |
| changed in GCC 4.4". Switch -Wno-psabi is no longer needed to workaround. |
| |
| - ARM: Fix an issue when project with .arm/.neon suffixes in LOCAL_SRC_FILES also |
| uses APP_STL. With APP_STL, ndk-build searches for C++ file in LOCAL_SRC_FILES before |
| adding STL header/lib paths to compilation. Fix ndk-build to filter out .arm and .neon |
| suffixes before the search, otherwise item in LOCAL_SRC_FILESfile like myfile.cpp.arm.neon |
| won't be considered C++. |
| |
| - ARM: Fixed binutils-2.21/ld.bfd to be capable of linking object from older binutils w/o |
| tag_FP_arch, which used to produce error message reads |
| |
| BFD (GNU Binutils) 2.21 assertion fail |
| ...../binutils/binutils-2.21/bfd/elf32-arm.c:10190 |
| |
| > The root cause is that ARM's binutils-2.21/ld.bfd performs sanity check and asserts |
| when "tag_FP_arch==0 && tag_ABI_HardFP_use !=0". This can happen in object using FP |
| linked by older binutils when tag_FP_arch isn't produced at all (thus gets the default |
| "zero" in new linker). |
| |
| > See http://code.google.com/p/android/issues/detail?id=35209 |
| |
| - ARM: Removed warning when binutils-2.19/ld links prebuilt object by newer binutils-2.21 |
| which reads |
| |
| Unknown EABI object attribute 44 |
| |
| > The reason is that all prebuilt crt*.o and C++ STL are built with later GCC 4.6/binutils-2.21 |
| and contain new tag "DIV_use" with value set to "Not allowed". This tag can be safely ignored |
| by the original GCC4.4.3/binutils-2.19 toolchain since it is only for sanity check. |
| |
| - ARM: Fixed an issue in GNU stdc++ compilation with both -mthumb and -march=armv7-a, by |
| making make-standalone-toolchain.sh to also populate headers/libs in sub-directory |
| "armv7-a/thumb". |
| |
| > See http://code.google.com/p/android/issues/detail?id=35616 |
| |
| - ARM: Fix error: unresolvable R_ARM_THM_CALL relocation |
| |
| > See http://code.google.com/p/android/issues/detail?id=35342 and |
| https://groups.google.com/forum/?fromgroups#!topic/android-ndk/HaLycHImqL8 |
| |
| - ARM: Fixed internal compiler error at "reload1.c:3633". The reason is that ARM back-end |
| expects wrong operand type when sign-extend from char. |
| |
| > Back port fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099 |
| |
| - ARM: Fixed internal compiler error with negative shift amount. |
| int foo(int a, int b) |
| { |
| return a | (b << -3); |
| } |
| |
| > See http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00594.html |
| |
| - X86: Fixed -fstack-protector, which is also the default for ndk-build x86 ABI |
| |
| - MIPS: Fixed stlport endianess by setting _STLP_LITTLE_ENDIAN to 1 when compiling |
| MIPS' libstlport_* |
| |
| - MIPS: Fixed GCC __builtin_unreachable issue compiling LLVM |
| |
| > See Bug 54369: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369 |
| |
| - MIPS: Backport fix to bug 50380: cc1 hangs eating 100% CPU |
| |
| > See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50380 and |
| http://gcc.gnu.org/viewcvs/trunk/gcc/cse.c?r1=177852&r2=182498&pathrev=182498 |
| |
| - GDB: Disable python support in gdb-7.x at build, otherwise gdb-7.x/configure may |
| pick up whatever python in host and build gdb with hard-wired dependency to specific |
| version of python. |
| |
| > See http://code.google.com/p/android/issues/detail?id=36120 |
| |
| - GDB: Fixed ndk-gdb when APP_ABI contains "all" and matches none of known architecture |
| |
| > See http://code.google.com/p/android/issues/detail?id=35392 |
| |
| - GDB: Fixed Windows pathname support. Keep ':' if it looks like it could be part of |
| a Windows path starting with a drive letter. |
| |
| > See http://sourceware.org/ml/gdb/2011-06/msg00030.html and |
| http://sourceware.org/bugzilla/show_bug.cgi?id=12843 |
| |
| - GDB: Fixed add HW breakpoint support for ARM in gdbserver |
| |
| > See http://sourceware.org/ml/gdb-patches/2011-09/msg00200.html |
| |
| - GDB: Fixed to only read current solibs when linker is consistent. Speeds up solib |
| event handling. |
| |
| > See http://code.google.com/p/android/issues/detail?id=37677 |
| |
| - GDB: Fixed to make repeated attempts to find solib breakpoint. GDB will retry enable_break() |
| during every call to svr4_current_sos() until it succeeds. |
| |
| > See https://android-review.googlesource.com/#/c/43563 |
| |
| - GDB: Fixed an issue where gdb cannot stop on breakpoints placed on dlopen-ed |
| libraries. |
| |
| > See http://code.google.com/p/android/issues/detail?id=34856 |
| |
| - GDB: Fixed SIGILL in dynamic linker when calling dlopen(), on system |
| where /system/bin/linker is stripped of symbols and rtld_db_dlactivity() |
| is implemented as Thumb, due to not preserving LSB of sym_addr |
| |
| > See http://code.google.com/p/android/issues/detail?id=37147 |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed NDK headers |
| 1. Fixed arch-mips/include/asm/* previously incorrectly cleaned from original kernel |
| See https://android-review.googlesource.com/#/c/43335 |
| 2. Replace struct member data "`__unused`" with "`__linux_unused`" in linux/sysctl.h |
| and linux/icmp.h to avoid conflict with "#define __unused" in sys/cdefs.h |
| 3. Fixed fenv.h to enclosed C functions with __BEGIN_DECLS/__END_DECLS |
| 4. Removed unimplemented functions in malloc.h |
| 5. Fixed stdint.h. See http://code.google.com/p/android/issues/detail?id=1952 |
| 6. Fixed preprocessor macros in <arch>/include/machine/* |
| 7. Replaced link.h for mips with new version for all platforms |
| 8. Remove linux-unistd.h |
| 9. Move GLibc-specific macros LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX from |
| <pthread.h> to <limits.h>. |
| |
| - Fixed a buffer overflow in ndk-stack-parser. |
| |
| - Fixed _STLP_USE_EXCEPTIONS, when not defined, to omit all declarations |
| and uses of __Named_exception. Compile and use __Named_exception only |
| when STLport is being allowed to use exceptions. |
| |
| - Fixed to build Linux-only NDK packages (invoked as follow) w/o also building windows |
| |
| ./build/tools/make-release.sh --force --systems=linux-x86 |
| |
| - Fixed libc.so to not export atexit() and __do_handler. These symbols are exported |
| on ARM by the system version of the C library to support legacy native libraries. |
| NDK-generated should never reference them directly. Instead, each shared library or |
| executable should embed its own version of these symbols, provided by crtbegin_*.o |
| |
| > If your project is linked with "-nostdlib -Wl,--no-undefined", you need to provide |
| your own __dso_handle because crtbegin_so.o isn't linked. The content of __dso_handle |
| doesn't matter. eg. |
| |
| extern "C" { |
| extern void *__dso_handle __attribute__((__visibility__ ("hidden"))); |
| void *__dso_handle; |
| } |
| |
| - ARM: Fixed symbol decoder (used in objdump) for plt entries to generate more |
| readable form function@plt |
| |
| - X86: Removed the following symbols introduced in GCC 4.6/libgcc.a from X86's libc.so: |
| __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2 |
| |
| - MIPS: Removed unused .ctors, .dtors, and .eh_frame in MIPS crt*_so.S. |
| |
| - GDB: ndk-gdb now only takes the last line of output for ndk-build DUMP_XXXX. This |
| ensures that if Application.mk or Android.mk do print something with $(info ...), |
| it doesn't get injected into the result of DUMP_XXX. |
| |
| > See https://groups.google.com/d/msg/android-ndk/-/ew0lTWGr1UEJ |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - Removed arch-x86 and arch-mips headers from platforms/android-{3,4,5,8}. |
| Those headers are incomplete to begin with, since both X86 and MIPS ABIs are only |
| supported at API ≥ 9 |
| |
| - Simplified c++ include path in standalone package, eg. change |
| |
| <path>/arm-linux-androideabi/include/c++/4.6.x-google |
| to |
| <path>/include/c++/4.6/ |
| |
| > See http://code.google.com/p/android/issues/detail?id=35279 |
| |
| - Enhanced ndk-build to recognize more C++ file extensions by default: |
| |
| .cc .cp .cxx .cpp .CPP .c++ .C |
| |
| > You may still use LOCAL_CPP_EXTENSION to override it |
| |
| - Fixed an issue in samples/san-angeles about black/freeze frame |
| at re-launch. |
| |
| - Replaced deprecated APIs in NDK samples |
| 1. hello-gl2 from android-5 to android-7 |
| 2. native-activity from android-9 to android-10 |
| 3. native-audio from android-9 to android-10 |
| 4. native-plasma from android-9 to android-10 |
| |
| > See http://code.google.com/p/android/issues/detail?id=20017 |
| |
| - Added new branding for Android executables with a simpler scheme in section |
| .note.android.ident (defined in crtbegin_static/dynamic.o) so that debugging |
| tools can act accordingly. |
| |
| > The structure member and values are defined as follows: |
| |
| static const struct { |
| int32_t namesz; /* = 8, sizeof ("Android") */ |
| int32_t descsz; /* = 1 * sizeof(int32_t) */ |
| int32_t type; /* = 1, ABI_NOTETYPE */ |
| char name[sizeof "Android"]; /* = "Android" */ |
| int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ |
| } |
| |
| > Previous branding in section .note.ABI-tag is deprecated. |
| |
| - Added a new script run-tests-all.sh which calls run-tests.sh and standalone/run.sh |
| with various conditions. Script run-tests.sh w/o --abi is also enhanced to compile |
| most of tests for all supported ABI and run on all attached devices |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r8b |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment |
| and for static libraries. List file generation is sped up, and it is no longer |
| regenerated and causes whole project to be rebuilt every time. |
| |
| - Fixed several issues in ndk-gdb |
| |
| * to pass flags "-e", "-d", "-s" to adb more consistently |
| |
| * to accept device serial name containing space |
| |
| * to also pull /system/bin/link, so gdb on host can set a breakpoint in |
| __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols |
| when dlopen() is called) |
| |
| - Fixed "ndk-build clean" in windows which failed to remove ./libs/\*/lib\*.so |
| |
| - Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails |
| |
| - Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols |
| |
| - Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS. |
| |
| - Fixed \__start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of |
| "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return |
| address and crash the program or do wield things. With "call", return address is pushed |
| on stack and unwinding stops correctly at _start. Note that __libc_init never returns, so |
| this fix wonʼt affect normal program execution. But just in case it "does" return, |
| jump to address 0 and halt. |
| |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - GCC 4.6 toolchain |
| |
| Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with |
| the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6). Note: |
| |
| * GCC 4.6 is the default. You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk |
| to select the original one. |
| |
| * Gold linker support is only available for ARM and x86 architectures on linux-86 |
| and darwin-x86 hosts. It's not turned on by default. Add |
| "LOCAL_LDFLAGS += -fuse-ld=gold" in Android.mk to enable it. |
| |
| * You will need the new GDB to debug program compiled with -fPIE (including |
| binaries in Jelly Bean image) |
| |
| * The binutils 2.21 ld also contain back-port of fixes from 2.22 |
| |
| * Fixed "ld --gc-sections" which incorrectly retain zombie references to external |
| libraries. See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail. |
| |
| * Fixed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section |
| if they are valid. Otherwise program built with -fPIE can't be debugged. |
| http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553 |
| |
| * Sincos optimization is not enabled for compatibility with old platforms which don't have |
| it. |
| |
| - NX and relro/bind_now protections are enabled by default |
| |
| Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX |
| protection against buffer overflow attacks by enabling NX bit on stack and heap. |
| |
| Add "-z relro -z now" for linker to harden internal data sections after linking |
| against security vulnerabilities due to memory corruption. See |
| |
| http://www.akkadia.org/drepper/nonselsec.pdf (section 6) |
| http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html |
| |
| For those who really needs it, these features can be disabled by |
| 1. Passing "--execstack" to assembler and "-z execstack" to linker to |
| disable NX protection. |
| Passing "-z norelro -z lazy" to linker to disable second protection. |
| 2. In NDK jni/Android.mk, set the following |
| LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack" |
| LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now" |
| see $NDK/docs/ANDROID-MK.html for details |
| |
| - Brand executables with .note.ABI-tag section |
| |
| Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging |
| tools to act accordingly. The structure member and values are defined as follow. |
| |
| static const struct { |
| int32_t namesz; /* = 4, sizeof ("GNU") */ |
| int32_t descsz; /* = 6 * sizeof(int32_t) */ |
| int32_t type; /* = 1 */ |
| char name[sizeof "GNU"]; /* = "GNU" */ |
| int32_t os; /* = 0 */ |
| int32_t major; /* = 2 */ |
| int32_t minor; /* = 6 */ |
| int32_t teeny; /* = 15 */ |
| int32_t os_variant; /* = 1 */ |
| int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ |
| } |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Backport several patches to fix MIPS issues. |
| |
| * http://sourceware.org/bugzilla/show_bug.cgi?id=12637 |
| mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM |
| |
| * http://sourceware.org/bugzilla/show_bug.cgi?id=12845 |
| ld segfaults when using --gc-sections |
| |
| * http://sourceware.org/ml/binutils/2011-05/msg00198.html |
| Refix MIPS GOT_PAGE counting |
| |
| * Follow warning symbol link in mips_elf_count_got_symbols. |
| |
| * Follow warning symbol link in mips_elf_allocate_lazy_stub. |
| |
| * Move MIPS .dynamic to the data segment, so that it is writable. |
| Replace hard-coded 4096 with symbols for correct segment sizes for MIPS. |
| |
| * Remove -mno-shared as default in MIPS toolchain. -fPIC (or -fpic if supported) |
| is default for Android toolchain. Without explicitly specifying one of |
| -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared |
| which turns off PIC. Fixed it not to add -mno-shared as default. |
| |
| - Fixed wrong package names in samples hello-jni and two-libs so tests project |
| underneath can compile |
| |
| |
| OTHER CHANGES: |
| --- |
| |
| - New binaries locations |
| |
| * gdbserver is moved from toolchain/<arch-os-ver>/prebuilt/gdbserver to |
| prebuilt/android-<arch>/gdbserver/gdbserver |
| |
| * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android- |
| |
| * sources/cxx-stl/gnu-libstdc++/include and lib are moved to |
| sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or |
| sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC |
| |
| * libbfd.a and libintl.a are moved from lib/ to lib32/ |
| |
| - Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl |
| it describes are specpfic to BSD (ie. don't exist in Linux) |
| |
| - Various scripts to rebuild/test NDK toolchain |
| |
| * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates |
| Win32 and Win64 executables. |
| |
| * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories |
| that we need to build the NDK toolchain binaries. |
| |
| * New build-host-gcc.sh and build-host-gdb.sh |
| |
| * Add tests/check-release.sh to check the content of a given NDK installation directory, |
| or an existing NDK package. |
| |
| * Rewrite standalone tests: tests/standalone/run.sh |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r8 |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed a typo in GAbi++ implementation where result of dynamic_cast<D>(b) |
| of base class object 'b' to derived class D is adjusted wrong |
| (in the opposite direction from base class). See |
| http://code.google.com/p/android/issues/detail?id=28721 |
| |
| - Fixed an issue in make-standalone-toolchain.sh which fails to copy |
| libsupc++.*. |
| |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Added support for the mips ABI. |
| |
| > This release of the Android NDK contains support for 'mips' ABI. |
| To generate machine runs on MIPS-based Android devices, please add 'mips' to |
| APP_ABI definition in your Application.mk, or 'all' to generate binaries for |
| all currently supported ABI. See docs/CPU-MIPS.html for details. |
| |
| - You can build a standalone mips toolchain using the |
| --toolchain=mipsel-linux-android-4.4.3 option when calling |
| make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details. |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if |
| the user has redefined the SHELL environment variable (which can happen under |
| the hood when installing a variety of development tools on Windows) |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r7c |
| === |
| |
| This release of the NDK includes an important fix for Tegra2-based devices, |
| and a few additional fixes and improvements: |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices. |
| The files provided with NDK r7b where not configured properly, resulting |
| in crashes on Tegra2-based devices and others when trying to use certain |
| floating-point functions (e.g., cosf, sinf, expf). |
| |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Added support for custom output directories through the NDK_OUT |
| environment variable. When defined, this variable is used to store all |
| intermediate generated files, instead of $PROJECT_PATH/obj. |
| |
| The variable is also recognized by ndk-gdb. |
| |
| - Added support for building modules with hundreds or even thousand of source |
| files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk. |
| |
| This change forces the NDK build system to put most linker or archiver |
| options into list files, to work-around command-line length limitations |
| (particularly on Windows). See docs/ANDROID-MK.html for details. |
| |
| |
| OTHER BUG FIXES: |
| --- |
| |
| - Fixed android_getCpuCount() implementation in the cpufeatures helper |
| library. The previous implementation only listed the cores that were |
| active the first time the function was called. This behavior could |
| provide results that were too low on devices that disable and enable |
| cores dynamically. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r7b |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Updated <sys/atomics.h> to avoid correctness issues on some multi-core |
| ARM-based devices. Rebuild your unmodified sources with this version of the |
| NDK and this problem should completely be eliminated. For more details, read |
| docs/ANDROID-ATOMICS.html. |
| |
| - Reverted to binutils 2.19 to try to fix debugging issues that |
| appeared in NDK r7 (which switched to binutils 2.20.1). |
| |
| - Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version |
| of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7. |
| |
| - Fixed native Windows build (ndk-build.cmd). Other build modes were not |
| affected. The fixes include: |
| |
| * Removed an infinite loop / stack overflow bug that happened when trying |
| to call ndk-build.cmd from a directory that was _not_ the top of your |
| project path (e.g. any sub-directory of it). |
| |
| * Fixed a problem where the auto-generated dependency files were ignored. |
| This meant that updating a header didn't trigger recompilation of sources |
| that included it. |
| |
| * Fixed a problem where special characters in files or paths, other than |
| spaces and quotes, were not correctly handled. |
| |
| - Fixed the standalone toolchain to generate proper binaries when using |
| -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should |
| use -lgnustl_shared if you want to link against the shared library |
| version or -lstdc++ for the static version. |
| |
| See docs/STANDALONE-TOOLCHAIN.html for more details about this fix. |
| |
| - Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find |
| libsupc++.a while the file was at the right location. |
| |
| - Fixed cygwin C++ link when not using any specific C++ runtime through |
| APP_STL. |
| |
| OTHER CHANGES: |
| --- |
| |
| - When your application uses the GNU libstdc++ runtime, the compiler will |
| no longer forcibly enable exceptions and RTTI. This change results in smaller |
| code. If you need these features, you need to do either one of these: |
| |
| 1/ Enable exceptions and/or RTTI explicitly in your modules or |
| Application.mk. (recommended) |
| |
| 2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both |
| in your Application.mk. See docs/APPLICATION-MK.html for more details. |
| |
| - ndk-gdb now works properly when your application has private services |
| running in independent processes. It debugs the main application process, |
| instead of the first process listed by 'ps', which is usually a service |
| process. |
| |
| - Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value |
| and always compile certain source files (but not all) to 32-bit instructions. |
| |
| - stlport: Refresh the sources to match the Android platform version. This |
| update fixes a few minor bugs: |
| |
| - Fixed instantiation of an incomplete type. |
| - Fixed minor == versus = typo |
| - Use memmove instead of memcpy in string::assign |
| - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc.. |
| |
| For complete details, see the commit log. |
| |
| - stlport: Removed 5 un-necessary static initializers from the library. |
| |
| - The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for |
| armeabi instead. This had no impact on correctness, but using the right |
| ABI should provide for slightly better performance. |
| |
| - the 'cpu-features' helper library was updated to report three optional |
| x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html |
| for more details. |
| |
| - docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead |
| of NDK_APP_APPLICATION_MK to select a custom Application.mk file. |
| |
| - cygwin: ndk-build no longer creates an empty "NUL" file in the current |
| directory when invoked. |
| |
| - cygwin: better automatic dependency detection. It previously didn't work |
| properly in the following case: |
| |
| - When the cygwin drive prefix was not /cygdrive |
| - When using drive-less mounts, e.g. when Cygwin would translate /home |
| to \\server\subdir instead of C:\Some\Dir. |
| |
| - cygwin: ndk-build does not try to use the native Windows tools under |
| $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or |
| GNU Make. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r7 |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - New official NDK APIs for Android 4.0 (a.k.a. API level 14), |
| which adds the following native features to the platform: |
| |
| - Native multimedia API based on the Khronos Group OpenMAX AL™ |
| 1.0.1 Standard. New headers <OMXAL/OpenMAXAL.h> and |
| <OMXAL/OpenMAXAL_Android.h> are provided to allow |
| applications targeting this API level to perform multimedia output |
| directly from native code using a new Android-specific buffer |
| queue interface. For more details, see docs/openmaxal/index.html |
| and http://www.khronos.org/openmax/. |
| |
| - Updated the native audio API based on the Khronos Group OpenSL ES |
| 1.0.1™ Standard. API Level 14 can now decode compressed |
| audio (e.g. MP3, AAC, Vorbis) to PCM. For more details, see |
| docs/opensles/index.html and http://www.khronos.org/opensles/. |
| |
| - CCache support. To speed up large rebuilds, simply define the NDK_CCACHE |
| environment variable to 'ccache' (or the path to your ccache binary), as in: |
| |
| export NDK_CCACHE=ccache |
| |
| The NDK build system will automatically use it when compiling any source |
| file. For more information about CCache, see http://ccache.samba.org |
| |
| - You can now set your APP_ABI to 'all' to indicate that you want to build |
| your NDK modules for all the ABIs supported by your given NDK release. |
| |
| This means that either one of these two lines in your Application.mk are |
| equivalent with this release: |
| |
| APP_ABI := all |
| APP_ABI := armeabi armeabi-v7a x86 |
| |
| This also works if you define APP_ABI on the command-line, as in: |
| |
| ndk-build APP_ABI=all |
| |
| Which is a quick way to check that your project builds for all supported |
| ABIs without changing its Application.mk file. |
| |
| - Shorter paths to source and object files used in build commands. |
| When invoking $NDK/ndk-build from your project path, the paths to the |
| source, object and binary files passed to the build commands will be |
| significantly shorter now because they are now passed relative to the |
| current directory. |
| |
| This is useful when building projects with a lot of source files, to |
| avoid limits on the maximum command line length supported by your host |
| operating system. |
| |
| The behaviour is unchanged if you invoked ndk-build from a sub-directory |
| of your project tree, or if you define NDK_PROJECT_PATH to point to a |
| specific directory. |
| |
| - New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++ |
| features (RTTI or Exceptions) your module uses. This is especially handy |
| if you have prebuilt modules that depend on them since this will ensure |
| the final link will work correctly. |
| |
| See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details |
| |
| - WARNING: VERY EXPERIMENTAL!! |
| |
| You can now build your NDK sources on Windows *without* Cygwin. |
| Simply call the script 'ndk-build.cmd' from the Windows cmd.exe |
| command-line, when in your project path. |
| |
| The script takes exactly the same arguments than the original |
| ndk-build one. |
| |
| Note that the Windows NDK package comes with its own prebuilt |
| binaries for GNU Make, Awk and other tools required by the build, |
| i.e. you shouldn't need to install anything else to get a working |
| build system. |
| |
| IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug |
| at the moment! |
| |
| This feature is still very experimental, but feel free to try it |
| and report issues on the public forum (android-ndk@googlegroups.com) |
| or the public bug database (http://b.android.com). |
| |
| Note that all samples and unit tests successfully compile with it. |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Imported shared libraries are now installed by default to the target |
| installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not |
| defined in your Application.mk. |
| |
| This means that if a top-level module "foo" imports a module "bar", then |
| both libfoo.so and libbar.so will be copied to the install location. |
| |
| Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES |
| too. |
| |
| If you define APP_MODULES explicitly, the behaviour is unchanged. |
| |
| - Static library imports are now properly transitive. If top-level module |
| 'foo' imports static library 'bar' which imports static library 'zoo', |
| the libfoo.so will now be linked against both libbar.a and libzoo.a. |
| |
| - ndk-gdb now works correctly for activities with multiple categories |
| in their MAIN intent filters. |
| |
| OTHER CHANGES: |
| --- |
| |
| - docs/STABLE-APIS.html: Added missing documentation listing EGL |
| as a supported stable API, starting from API level 9. |
| |
| - Add a new C++ support runtime named "gabi++". More details about it |
| are available in the updated docs/CPLUSPLUS-SUPPORT.html. |
| |
| - The STLport C++ runtimes now support RTTI (no exceptions yet though). |
| |
| - Add a new C++ support runtime named "gnustl_shared" corresponding to the |
| shared library version of GNU libstdc++ v3 (GPLv3 license). See more |
| info at docs/CPLUSPLUS-SUPPORT.html |
| |
| - You can now list several file extensions in LOCAL_CPP_EXTENSION. As in: |
| |
| LOCAL_CPP_EXTENSION := .cpp .cxx |
| |
| To compile both foo.cpp and bar.cxx as C++ sources. |
| |
| - Refreshed the EGL and OpenGLES Khronos headers to support more extensions. |
| Note that this does *not* change the NDK ABIs for the corresponding |
| libraries, since each extension must be probed at runtime by the client |
| application. |
| |
| Which extensions are available depends on your actual device (and GPU |
| drivers), not the version of the platform it provides. |
| |
| The header changes simply add new constants and types to make it easier |
| to use the extensions why they have been probed with eglGetProcAddress() or |
| glGetProcAddress(). Here is the list of newly supported extensions: |
| |
| GLES 1.x |
| -------- |
| GL_OES_vertex_array_object |
| GL_OES_EGL_image_external |
| GL_APPLE_texture_2D_limited_npot |
| GL_EXT_blend_minmax |
| GL_EXT_discard_framebuffer |
| GL_EXT_multi_draw_arrays |
| GL_EXT_read_format_bgra |
| GL_EXT_texture_filter_anisotropic |
| GL_EXT_texture_format_BGRA8888 |
| GL_EXT_texture_lod_bias |
| GL_IMG_read_format |
| GL_IMG_texture_compression_pvrtc |
| GL_IMG_texture_env_enhanced_fixed_function |
| GL_IMG_user_clip_plane |
| GL_IMG_multisampled_render_to_texture |
| GL_NV_fence |
| GL_QCOM_driver_control |
| GL_QCOM_extended_get |
| GL_QCOM_extended_get2 |
| GL_QCOM_perfmon_global_mode |
| GL_QCOM_writeonly_rendering |
| GL_QCOM_tiled_rendering |
| |
| GLES 2.0 |
| -------- |
| GL_OES_element_index_uint |
| GL_OES_get_program_binary |
| GL_OES_mapbuffer |
| GL_OES_packed_depth_stencil |
| GL_OES_texture_3D |
| GL_OES_texture_float |
| GL_OES_texture_float_linear |
| GL_OES_texture_half_float_linear |
| GL_OES_texture_npot |
| GL_OES_vertex_array_object |
| GL_OES_EGL_image_external |
| GL_AMD_program_binary_Z400 |
| GL_EXT_blend_minmax |
| GL_EXT_discard_framebuffer |
| GL_EXT_multi_draw_arrays |
| GL_EXT_read_format_bgra |
| GL_EXT_texture_format_BGRA8888 |
| GL_EXT_texture_compression_dxt1 |
| GL_IMG_program_binary |
| GL_IMG_read_format |
| GL_IMG_shader_binary |
| GL_IMG_texture_compression_pvrtc |
| GL_IMG_multisampled_render_to_texture |
| GL_NV_coverage_sample |
| GL_NV_depth_nonlinear |
| GL_QCOM_extended_get |
| GL_QCOM_extended_get2 |
| GL_QCOM_writeonly_rendering |
| GL_QCOM_tiled_rendering |
| |
| EGL: |
| ---- |
| EGL_ANDROID_recordable |
| EGL_NV_system_time |
| |
| - docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level |
| should be 9, not 8 for native activities. |
| |
| - removed many unwanted exported symbols from the link-time shared |
| system libraries provided by the NDK. This ensures that code generated |
| with the standalone toolchain doesn't risk to accidentally depend |
| on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes |
| each time the toolchain used to build the platform is changed). |
| |
| - download-toolchain-sources.sh: Script was updated to download the toolchain |
| sources from android.googlesource.com, the new location for AOSP servers. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r6b |
| === |
| |
| This is a bug-fix release for NDK r6, no new features are provided. |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86" |
| |
| - Fixed location of prebuilt STLport binaries in the NDK release package. |
| (A bug in the packaging script placed them in the wrong location). |
| |
| - Fixed atexit() usage in shared libraries with the x86 standalone toolchain. |
| |
| - Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the |
| proper GNU libstdc++ binaries to the right location). |
| |
| - Fixed standalone toolchain linker warnings about missing definition and |
| size for '__dso_handle' symbol (arm only). |
| |
| - Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds, |
| see http://code.google.com/p/android/issues/detail?id=18540 |
| |
| - Fixed the definitions of ptrdiff_t and size_t in x86-specific system |
| when used with the x86 standalone toolchain. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r6 |
| === |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Official support for the x86 ABI. |
| |
| This release of the Android NDK now provides support for the 'x86' ABI. |
| This allows you to generate machine code that runs on future x86-based |
| Android devices. |
| |
| Note that by default, code is still generated for ARM-based devices. |
| You can however add 'x86' to your APP_ABI definition in your |
| Application.mk. For example, the following line instructs ndk-build |
| to build your code for three distinct ABIs: |
| |
| APP_ABI := armeabi armeabi-v7a x86 |
| |
| Unless you rely on ARM-based assembly sources, you shouldn't need to touch |
| your Android.mk files to build x86 machine code. |
| |
| For all details regarding x86 support, please read the new documentation |
| file named docs/CPU-X86.html. |
| |
| Don't hesitate to file NDK bugs related to x86 at http://b.android.com |
| |
| - You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3 |
| option when calling make-standalone-toolchain.sh. See |
| docs/STANDALONE-TOOLCHAIN.html for more details. |
| |
| - The new 'ndk-stack' tool can be used to translate stack traces |
| (as reported by adb logcat in case of crash in native code) into |
| something more readable, i.e. containing function / source file / |
| line number information corresponding to each stack frame. |
| |
| For more information and usage example, see the new documentation |
| file docs/NDK-STACK.html |
| |
| OTHER FIXES & CHANGES: |
| --- |
| |
| - The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been |
| finally removed from the NDK distribution. |
| |
| - Support a project.properties file in the application's directory |
| instead of default.properties. This is in preparation for future SDK Tools |
| changes. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r5c |
| === |
| |
| This release fixes a few bugs in r5b. There are no new features. |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly |
| with the new toolchain. Also properly document this variable in |
| docs/ANDROID-MK.html. |
| |
| - Fixed a bug where code linked against gnustl_static would crash when run |
| on Android platform releases older than 2.2. |
| |
| - <android/input.h>: Two functions in this header file, introduced |
| by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While |
| this breaks the source API, the binary interface to the system is |
| unchanged. |
| |
| The functions missing a third 'history_index' parameter. They correct |
| definition is now: |
| |
| float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, |
| size_t pointer_index, |
| size_t history_index); |
| |
| float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, |
| size_t pointer_index, |
| size_t history_index); |
| |
| - Updated the android-9 C library arm binary to correctly expose at link time |
| new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init). |
| |
| - Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g. |
| the Motorola Xoom). |
| |
| OTHER FIXES & CHANGES: |
| --- |
| |
| - Object files are now always linked in the order they appear in |
| LOCAL_SRC_FILES. This was not the case previously because the files |
| were grouped by source extensions instead. |
| |
| - download-toolchain-sources.sh: Fixed a silly bug that prevented the |
| --git-date option to work properly when downloading the master branch. |
| |
| - Fix an issue where a module could import itself, resulting in an infinite |
| loop in GNU Make. |
| |
| - When import-module fails, it now prints the list of directories |
| that were searched. This is useful to check that the NDK_MODULE_PATH |
| definition used by the build system is correct. |
| |
| - When import-module succeeds, it now prints the directory where the module |
| was found to the log (visible with NDK_LOG=1). |
| |
| - <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for |
| android-9 API level and higher. |
| |
| - Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build |
| fail (typo in build/core/build-binary.mk) |
| |
| - Fixed a bug that prevented the compilation of .s assembly files |
| (.S files were ok). |
| |
| - Speed-up the build of debuggable applications when there is a very |
| large number of include directories in a project. |
| |
| - ndk-gdb: Better detection of 'adb shell' failures (improves error messages). |
| |
| - ndk-build: Fix a rare bug that appeared when trying to perform parallel |
| builds of debuggable projects. |
| |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r5b |
| === |
| |
| This release fixes a few bugs in r5. There are no new features. |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain. |
| The previous binary generated invalid thumb instruction sequences when |
| dealing with signed chars. This problem was first reported on the |
| android-ndk forum and fixed by the following change in the toolchain |
| sources: |
| |
| https://review.source.android.com/#change,19474 |
| |
| - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the |
| "gnustl_static" value for APP_STL, that allows you to link against |
| a static library version of GNU libstdc++. |
| |
| - ndk-build: Fix a bug that created inconsistent dependency files when a |
| compilation error occurred on Windows, preventing building properly after |
| the error was fixed in the source code. |
| |
| - ndk-build: Fix a Cygwin-specific bug where using very short paths for |
| the Android NDK installation or the project path could lead to the |
| generation of invalid dependency files, making incremental builds |
| impossible. |
| |
| - Fix a typo that prevented the cpufeatures library to work correctly |
| with the new NDK toolchain. |
| |
| - Linux toolchain binaries now run on Ubuntu 8.04 or higher. |
| More specifically, the r5 binaries did require GLibc 2.11 on the host |
| system, and refused to run with previous releases due to an ABI mismatch |
| in the GNU C Library. The r5b binaries are generated with a special |
| toolchain that instead targets GLibc 2.7 or higher. |
| |
| - GNU libstdc++ will not crash anymore when printing floating-point values |
| through i/o streams. |
| |
| OTHER FIXES & CHANGES: |
| |
| - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m" |
| from GNU Make for each and every source or object file. This was a problem |
| for users with very large source trees. |
| |
| In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your |
| environment to use 'cygpath -m' as usual. |
| |
| Also, if 'cygpath' is not in your path, completely ignore it |
| (seems to be enough to run the NDK under MSys). |
| |
| - ndk-build: Handle installation paths containing spaces when checking |
| cygwin installation. Before that, the script complained that the user |
| was using an incorrect version of GNU Make (even if he had the right one). |
| |
| - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when |
| it contained multiple directories separated with ":" |
| |
| - prebuilt-common.sh: Make the script check the compiler directly for 64-bit |
| generated machine code, instead of relying on the host tag. That should |
| allow the 32-bit toolchain to rebuild properly on Snow Leopard. |
| |
| - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when |
| using a 32-bit host toolchain. |
| |
| - <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN |
| - <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL |
| and IN6_IS_ADDR_MC_GLOBAL. |
| |
| - <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation |
| with -std=c99. See https://review.source.android.com/#change,20076 |
| |
| - standalone toolchain: The -fpic flag is now the default for the |
| arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance |
| degradation when compared to the old android-eabi configuration. |
| |
| This only affects users of the standalone toolchain. The NDK build script |
| always enforced -fpic implicitly. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r5 |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Allow dlclose() to properly call static C++ destructors when unloading |
| a shared library. This requires changes in both the C library and the |
| build system. IMPORTANT: This feature is only available for API level 9. |
| |
| - Fix packaging error for system libraries of level 5 and 8. The libraries |
| bundled with the NDK and used at link time were not the correct version, |
| and this prevented linking against certain symbols appropriately. |
| |
| - ndk-gdb: do not start activity unless --start or --launch is used. |
| (the documentation was correct, the implementation wrong) |
| |
| - The system headers for all API levels have been cleaned up and will |
| not provide the declarations of functions that are not available in |
| the corresponding system libraries. |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - Support for API level 9, (a.k.a. Android 2.3) which adds the following |
| native features to the platform: |
| |
| - Native audio API based on the Khronos Group OpenSL ES™ 1.0.1 Standard. |
| New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h> |
| are provided to allow applications targeting this API level to perform |
| audio input, output and processing directly from native code. |
| |
| - Native activity support, i.e. the ability to build applications that |
| are coded entirely in C or C++. More precisely, such applications still |
| run inside a VM, and will have to access most of the platform's features |
| using JNI (i.e. native code calling VM methods). However, this also |
| comes with a series of headers and libraries to implement the following |
| directly from native code: |
| |
| - activity lifecycle management. |
| - user input handling (touch, keyboard, trackball, ...). |
| - window management (including accessing the pixel buffer). |
| - sensor listeners (e.g. accelerometer, compass, ...). |
| - hardware configuration management. |
| - easily reading assets out of an APK from native code. |
| - access to the storage manager, a new feature of Android X.X |
| that allows one to provide Opaque Binary Objects containing |
| large amounts of data outside of the APK. |
| |
| See the documentation in docs/STABLE-APIS.html for more details. |
| |
| Note that most of these new features are targeted at game developers. |
| |
| - Improved gdbserver binary to allow debugging _threaded_ programs properly |
| with ndk-gdb (the previous binary could only set breakpoints on the main |
| thread). |
| |
| IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER. |
| |
| The root cause of the problem is a platform bug that was only fixed in |
| 2.3. If you try to debug on a previous platform, the gdbserver binary |
| will only be able to set breakpoints on the main thread. |
| |
| For more information, see the specific section in docs/NDK-GDB.html. |
| |
| - Easier debuggable builds: just invoke ndk-build while defining the |
| NDK_DEBUG variable to 1, as in: |
| |
| $NDK/ndk-build NDK_DEBUG=1 |
| |
| This will have the same result that setting the android:debuggable="true" |
| in the <application> element of your AndroidManifest.xml file. See the |
| file docs/NDK-BUILD.html for more details. |
| |
| Note that you will need to use the SDKr8 build tools to use this feature |
| properly! |
| |
| - Refresh of system C++ headers: |
| |
| - Headers have been moved out of the platform directory hierarchy. |
| This is to prevent conflicts with other STLs like STLport or the |
| GNU libstdc++ which provide their own version of the headers, but |
| does not affect your builds. |
| |
| - The list of headers has grown to include the following: |
| |
| cassert, cctype, cerrno, cfloat, climits, cmath, |
| csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib, |
| cstring, ctime, cwchar, new, typeinfo, utility |
| |
| Note that they still correspond to our minimal C++ runtime, no new feature |
| was introduced here. |
| |
| - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for |
| all details (and limitations). |
| |
| - STLport implementation: Add sources and prebuilt binaries for a port of |
| the STLport C++ Standard Library (www.stlport.org), and an easy way to use |
| it at build time by defining APP_STL in your Application.mk. See |
| docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details. |
| |
| - GNU libstdc++ implementation: Available as a static library that you can |
| select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html |
| for all details. |
| |
| - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and |
| PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation |
| file named docs/PREBUILTS.html for explanations and usage examples. |
| |
| - Support for module exports: A module can now define a set of compiler or |
| linker flags that will be automatically 'imported' by any other module that |
| depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES. |
| |
| This is achieved with the help of new Android.mk variables named |
| LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and |
| LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and |
| a 'samples/module-exports' for a sample project that uses this. |
| |
| - Add support to specify a different file name for generated files, through |
| the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an |
| example. |
| |
| - Add support for module imports, through the NDK_MODULE_PATH environment |
| variable and the new 'import-module' function. This allows you to avoid |
| hard-coding the path of third-party modules into your project files. |
| |
| See docs/IMPORT-MODULE.html for details. |
| |
| - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging |
| easier. Also fixes an issue that prevented clean parallel builds of |
| debuggable applications to work correctly. This fixes an error message that |
| said: |
| |
| /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory |
| |
| When doing a "ndk-build -j<number>", with <number> bigger than 1. |
| |
| - Add support for assembly-level source filtering. See the description of |
| LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful |
| for certain kinds of obfuscation tasks. |
| |
| - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3) |
| which provides many benefits, including: |
| |
| - Better code generation than the previous one (gcc-4.4.0) |
| - On Windows, the binaries do not depend on Cygwin anymore. |
| - The ability to use it as a stand-alone cross-compiler |
| (see docs/STANDALONE-TOOLCHAIN.html for all details). |
| |
| The binaries for gcc-4.4.0 are still provided for backwards compatibility. |
| Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage. |
| Note that it is now deprecated and will be removed in a future NDK release. |
| |
| IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI, |
| STLport and GNU libstdc++. |
| |
| The binaries for the already-deprecated gcc-4.2.1 have been removed. |
| |
| - The 'cpufeatures' library has been updated to provide better architecture |
| and features detection (including a work-around for buggy ARMv6 kernels |
| which report an architecture version of 7). |
| |
| The library is now also available as an import module, to simplify its |
| usage in your build scripts. See the updated docs/CPU-FEATURES.html file |
| for details. |
| |
| NOTE: Please update your Android.mk to use module imports as soon as |
| possible. The location $NDK/source/cpufeatures/ is deprecated |
| and will be removed in a future NDK release. Avoid referencing |
| it directly in your build scripts! |
| |
| OTHER FIXES AND CHANGES: |
| --- |
| |
| - Reduced the size of generated binaries by using --strip-unneeded |
| instead of --strip-debug. This gets rid of mor symbol table entries |
| in release shared libraries and executables, without impacting |
| runtime execution. |
| |
| - Fix bad automatic dependency tracking when using multiple source |
| sub-directories. |
| |
| - The path to system headers is now included last in the compilation command |
| line. This prevents conflicts with source code that define their own headers |
| with similar names (e.g. a custom "err.h" was ignored, because the system |
| <err.h> was used instead). |
| |
| - Update documentation for 'my-dir' function to explain that, due to the |
| way GNU Make works, it really returns the path of the last included |
| Makefile (instead of the current one). Also provide examples on how |
| to deal with it. |
| |
| - make-release.sh: Now has an --out-dir=<path> option to specify the |
| output directory where the packages are going to be copied. Also |
| ensure that generated packages have go+r permissions. |
| |
| - ndk-build will now properly escape arguments. This means that something |
| like this: |
| |
| ndk-build MY_CFLAGS="-DFOO -DBAR" |
| |
| will now work correctly. |
| |
| - Add --git-http option to download-toolchain-sources.sh and |
| rebuild-all-prebuilt.sh in order to download sources from |
| android.git.kernel.org through HTTP. |
| |
| - ndk-gdb: properly launch activities for which name does not contain any dot. |
| |
| - ndk-gdb: add --delay=<timeout> option to specify a delay in seconds |
| between activity launch and gdbserver attach. This is needed because certain |
| activities can take a long time to properly launch. The default delay is |
| also increased to 2 seconds (instead of 1). |
| |
| - build/tools/build-gcc.sh: copy the sysroot to the build directory. This |
| avoids the generated toolchain binaries from hard-coding host build paths. |
| |
| - Platform files are now under $NDK/platforms instead of $NDK/build/platforms |
| |
| - Toolchain files are now under $NDK/toolchains instead of |
| $NDK/build/toolchains and $NDK/build/prebuilt. |
| |
| - Release and debug objects are stored under two different directories now |
| (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This |
| prevents rebuilding *everything* when you switch between these two modes, |
| which can be a real time-saver for complex projects. |
| |
| - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command |
| when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true' |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r4b |
| === |
| |
| This release fixes a few bugs in r4 scripts. There are no new features. |
| |
| OTHER FIXES & CHANGES: |
| --- |
| |
| - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'. |
| Fix the script (and others in the same directory) to do that properly. |
| |
| - ndk-gdb: check the target device's API level, and dump an error message if |
| it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly |
| remove control characters like '\r' from adb shell's output. Also fix |
| script to work properly with OS X's BSD awk. |
| |
| - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try |
| to look for jni/Android.mk if no manifest is found. If you don't use this, |
| you can also define NDK_PROJECT_PATH to point to your tree. |
| |
| Also, on Windows, check that a Cygwin-compatible make executable is being |
| used, and dump a readable help message to solve the issue if this is not |
| the case. |
| |
| - Place generated binaries under $PROJECT_PATH/obj/ instead of |
| $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned |
| by the JDT, resulting in the inability to properly load symbol versions |
| of the shared libraries when running ndk-gdb. |
| |
| - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES. |
| Previous behaviour was to silently ignore them. |
| |
| - Set the optimization mode to 'debug' automatically if the manifest sets |
| android:debuggable to 'true'. You can override this by using |
| 'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to |
| your LOCAL_CFLAGS. |
| |
| Note that even in release mode, the NDK build scripts will produce |
| binaries with symbols under obj/local/<abi>/ that will be used for |
| debugging with gdb. However, the debugger will have a harder time to |
| print proper local variable values that have been optimized out or |
| even set breakpoints properly. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r4 |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - The <fenv.h> header was not placed in the correct location and could not |
| be found by normal builds. |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - On Windows, Cygwin 1.7 or higher is now required. The NDK will not |
| work properly with Cygwin 1.5 which is now officially obsolete |
| anyway. |
| |
| - Simplified build system: You no longer need to run build/host-setup.sh |
| or modify anything under $NDK_ROOT/apps/. Instead, just invoke the |
| new 'ndk-build' script from your application's project directory, or |
| one of its sub-directories. |
| |
| See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details. |
| |
| NOTE: For compatibility purpose, you can still define projects |
| through $NDK_ROOT/apps/<name> though. |
| |
| However, not that sample applications have moved from |
| 'apps/<name>/project' to 'samples/<name>' and now must |
| be built with 'ndk-build'. The source code of pre-existing |
| samples didn't change though. |
| |
| - Easy native debugging support when running debuggable applications |
| on Android 2.2 or higher, through the new 'ndk-gdb' helper script. |
| See docs/NDK-GDB.html for details. |
| |
| - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI |
| corresponding to ARMv7-a class devices. |
| |
| Note that by default, the NDK will still generate machine code for the old |
| 'armeabi' ABI (ARMv5TE based) which is supported by all official Android |
| system images to date. |
| |
| You will need to define APP_ABI in your Application.mk file to change this. |
| See docs/APPLICATION-MK.html |
| |
| More details about ABIs is now available in docs/CPU-ARCH-ABIS.html |
| |
| - A small static library named 'cpufeatures' is provided with source code |
| and can be used at runtime to determine the CPU features supported by the |
| target device. It should run on all Android platforms, starting from 1.5. |
| |
| For more information, see docs/CPU-FEATURES.html |
| |
| - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set |
| extension through the use the LOCAL_ARM_NEON variable in Android.mk, or |
| the '.neon' suffix when listing source files. |
| |
| Neon is an *optional* instruction set extension, and not all Android ARMv7 |
| devices will support it. You will need to use the 'cpufeatures' library to |
| determine if such code can be used at runtime, and provide alternate code |
| paths if this is not the case. This is similar to MMX/SSE/3DNow on x86 |
| platforms. |
| |
| For more information, see docs/CPU-ARM-NEON.html |
| |
| - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures' |
| and NEON intrinsics and build support. |
| |
| - Added <android/bitmap.h>, a new stable API available from android-8 |
| (a.k.a. Android 2.2) to reliably access the pixel buffer of an |
| android.graphics.Bitmap object from native code. See docs/STABLE-API.html |
| and the new sample program under 'samples/bitmap-plasma' for details |
| and usage example. |
| |
| - Support the NX (No Execute) security feature, where special sections |
| are added to the generated shared libraries to instruct the kernel |
| that code shall not be executed from the heap and stack by default. |
| |
| See docs/ANDROID-MK.html to see how to disable this, plus reference |
| links for more information. |
| |
| OTHER FIXES AND CHANGES: |
| --- |
| |
| - support the .s extension for raw assembly sources (.S is already supported |
| but the input files are parsed by the C-preprocessor before being sent to |
| the assembler). |
| |
| - build/host-setup.sh has been removed. There is no need for a 'setup' step |
| when using the NDK for the first time. All host-specific autodetection and |
| basic tool sanity checking have been moved to the build scripts themselves. |
| |
| - APP_MODULES in Application.mk is now optional. If not defined, the NDK |
| will simply build _all_ the modules that are declared from your Android.mk. |
| |
| You can still use APP_MODULES to restrict the set of modules you want to |
| build. Note that the NDK now computes the transitive dependencies of these |
| modules for you now. See docs/APPLICATION-MK.html for details. |
| |
| - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library |
| (libdl.so). It is actually supported by all API levels. |
| |
| - build/tools/download-toolchain-sources.sh: Use 'master' branch by default |
| instead of the 'eclair' one. |
| |
| - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding |
| them. This is primarily to ease development. All you need to do is put a patch |
| under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied |
| with 'patch -p1' into the <foo> directory of the unpacked toolchain sources |
| before the configure step. |
| |
| - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI. |
| |
| - build/core/mkdeps.sh: Removed obsolete script. |
| |
| - the NDK build script now only parses the Application.mk and Android.mk of |
| the applications listed by APP. The error messages when APP is empty or |
| malformed have also been improved. |
| |
| - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4' |
| warning when building with GCC 4.4.0 for ARM. |
| |
| - C Library header fixes: |
| |
| For all platforms: |
| |
| - <arpa/inet.h>: no longer includes <netinet/in6.h>. |
| - <ctype.h>: better inlining with -ansi option. |
| - <mntent.h>: add missing include for <stdio.h>. |
| - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any + |
| in6addr_loopback. |
| - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, |
| IN6ADDR_ANY_INIT, ipv6mr_interface. |
| - <sys/epoll.h>: add missing C++ inclusion guards. |
| - <sys/resource.h>: add missing rlim_t declaration. |
| - <sys/system_properties.h>: add missing C++ inclusion guards. |
| - <time64.h>: add missing C++ inclusion guards. |
| - <netdb.h>: move h_errno declaration inside C++ inclusion guards. |
| |
| - C Library changes: |
| |
| For android-8 (a.k.a. Android 2.2): |
| |
| - <dlfcn.h>: add DL_info and dladdr(). |
| - <err.h>: add err(), warn() and other variants. |
| - <regex.h>, <fts.h>, <sys/queue.h>: added |
| - <pthread.h>: add pthread_condattr_t |
| - <sched.h>: added proper clone() declaration (and implementation). |
| - <signal.h>: added killpg(). |
| - <stdio.h>: add fdprintf() and vfdprintf(). |
| - <stdlib.h>: fix ptsname_r() signature in declaration. previous |
| implementation was broken anyway. |
| - <unistd.h>: add getusershell(), setusershell(), endusershell(), |
| ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature |
| (now returns int). |
| - <wchar.h>: add fake mbstowcs() and wcstombs(). |
| |
| More details available under docs/system/libc/CHANGES.html |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-r3 |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fix build/host-setup.sh to execute as a Bourne shell script (again) |
| |
| - Make target shared libraries portable to systems that don't use the exact |
| same toolchain. This is needed due to differences in libgcc.a implementations |
| between gcc 4.2.1 and 4.4.0. This change ensures that generated machine |
| code doesn't depend on helper functions provided by the Android platform |
| runtime. |
| |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - GCC 4.4.0 is now used by default by the NDK. It generates better code than |
| GCC 4.2.1, which was used in previous releases. However, the compiler's C++ |
| frontend is also a lot more pedantic regarding certain template constructs |
| and will even refuse to build some of them. |
| |
| For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and |
| you can force its usage by defining NDK_TOOLCHAIN in your environment to |
| the value 'arm-eabi-4.2.1'. For example: |
| |
| export NDK_TOOLCHAIN=arm-eabi-4.2.1 |
| make APP=hello-jni |
| |
| Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We |
| recommend switching to 4.2.1 *only* if you encounter compilation problems |
| with 4.4.0. |
| |
| The 4.2.1 prebuilt binaries will probably be removed from a future release |
| of the Android NDK, we thus *strongly* invite you to fix your code if such |
| problems happen. |
| |
| - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to |
| reflect Android 2.0 (previously the Eclair branch). This is merely a copy |
| of android-4 that also includes headers and libraries for OpenGL ES 2.0. |
| |
| See the sample named "hello-gl2" for a *very* basic demonstration. Note that |
| OpenGL ES 2.0 is currently *not* available from Java, and must be used |
| through native code exclusively. |
| |
| IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this |
| time. Running/testing any native code that depends on it thus |
| requires a real device. |
| |
| - The NDK build script will now remove installed binaries from the application |
| project's path before starting the build. This ensures that: |
| |
| - if the build fails for some reason, a stale/obsolete file is not left in |
| your application project tree by mistake. |
| |
| - if you change the target ABI, a stale/obsolete file is not left into the |
| folder corresponding to the old ABI. |
| |
| |
| - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0 |
| issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and |
| 2.0 on specific devices only, need for <uses-feature> tag in manifest). |
| |
| |
| OTHER FIXES AND CHANGES: |
| --- |
| |
| - Actually use the awk version detected by host-setup.sh during the build. |
| |
| - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set |
| to 'true', just like the documentation says it works. Also fix a typo |
| in CLEAR_VARS that prevented this variable from being cleared properly. |
| |
| - Simplified build/tools/make-release.sh, the --prebuilt-dir option is |
| gone, and --help will dump a clearer description of expected options |
| and input files. |
| |
| - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to |
| package a new experimental NDK package archive from the current source tree |
| plus the toolchain binaries of an existing NDK release package. E.g.: |
| |
| build/tools/make-release.sh \ |
| --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip |
| |
| will generate a new NDK package in /tmp/ndk-release that contains the most |
| up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which |
| are not in the git repository). |
| |
| Also added the --no-git option to collect all sources from the current |
| NDK root directory, instead of the list given by 'git ls-files'. This can |
| be useful if you don't want to checkout the whole 'platform/development' |
| project from repo and still work on the NDK. |
| |
| This change is to help people easily package experimental NDK releases to |
| test and distribute fixes and improvements. |
| |
| - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to |
| build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04) |
| |
| - Remove bash-ism from build/tools/build-ndk-sysroot.sh |
| |
| - Refresh C library headers for all platforms: |
| |
| - make <endian.h> simply include <sys/endian.h> |
| - make <stdint.h> properly declare 64-bit integer types with a C99 compiler |
| - add missing <sys/types.h> to <strings.h> |
| - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and |
| st_ctimensec) to <stat.h> |
| - add missing declaration for tzset() in <time.h> |
| |
| - Added build/tools/download-toolchain-sources.sh, a script that allows you |
| to download the toolchain sources from the official open-source repository |
| at android.git.kernel.org and nicely package them into a tarball that can |
| later be used by build/tools/build-toolchain.sh to rebuild the prebuilt |
| binaries for your system. |
| |
| - Updated build/tools/build-toolchain.sh to support the tarballs generated |
| by download-toolchain-sources.sh with the --package=<file> option. This |
| also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to |
| gcc 4.4.0. |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-1.6_r1 |
| === |
| |
| IMPORTANT BUG FIXES: |
| --- |
| |
| - Fix build/host-setup.sh to: |
| * execute as a Bourne shell script |
| * remove unused host gcc dependency |
| * improve Windows host auto-detection |
| * add GNU Make version check |
| * add Nawk/Gawk check |
| * ensure that the script is run from $NDKROOT as build/host-setup.sh |
| * add --help, --verbose, --no-awk-check and --no-make-check options |
| |
| - Properly add sysroot library search path at build time. This makes a line |
| in Android.mk like: |
| |
| LOCAL_LDLIBS := -lz |
| |
| Actually work correctly, instead of having the linker complaining that it |
| could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS |
| in $(CLEAR_VARS) script. |
| |
| |
| IMPORTANT CHANGES: |
| --- |
| |
| - The 'sources' directory is gone. The NDK build system now looks for |
| $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with |
| the new APP_BUILD_SCRIPT variable in Application.mk |
| |
| For example, the 'hello-jni' sample uses the following files: |
| |
| apps/hello-jni/project/jni/Android.mk |
| apps/hello-jni/project/jni/hello-jni.c |
| |
| The 'apps/<name>' directory is still needed in this release though. |
| |
| - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build |
| system. This means that: |
| |
| - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C) |
| - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++) |
| - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete. |
| (will disappear in next release) |
| |
| Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly. |
| |
| - Rename build/platforms/android-1.5 to build/platforms/android-3 to match |
| the Android API level instead of the marketing speak. |
| |
| Also add a new build/platforms/android-4, and make the build system select |
| which platform to use based on the content of the project file named |
| $(APP_PROJECT_PATH)/default.properties. |
| |
| - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs. |
| (NOTE: they are *not* available for android-3) |
| |
| Also provide a small port of the "San Angeles Observation" demo to show |
| how to make a simple Android application that uses them. |
| |
| |
| OTHER FIXES AND CHANGES |
| --- |
| |
| - Ensure that the __ANDROID__ macro is always defined when building code |
| with the NDK. Normally, the macro must be defined by the toolchain |
| automatically to indicate that you're targeting the Android runtime. |
| |
| This works for the new arm-linux-androideabi toolchain, but there is |
| a bug in the way we built the arm-eabi one, so add the flag manually |
| through the NDK build script for it. |
| |
| Note that the ANDROID macro, is now deprecated. While it is still defined |
| by the NDK, you should modify your code to test against __ANDROID__ instead! |
| |
| - Generate thumb binaries by default. |
| |
| - Add support for LOCAL_ARM_MODE in Android.mk. |
| |
| - Add support for the '.arm' suffix in source file names to force the |
| compilation of a single source in ARM (32-bit) mode. |
| |
| - Generate proper unoptimized versions of binaries when APP_OPTIM := debug |
| |
| - Add support for LOCAL_C_INCLUDES in Android.mk |
| |
| - Fix compilation of assembler files (e.g. foo.S) |
| |
| ------------------------------------------------------------------------------- |
| android-ndk-1.5_r1 released. |
| === |