| <html><body><pre>Android NDK ChangeLog: |
| |
| ------------------------------------------------------------------------------- |
| 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 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 |
| |
| - 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 See http://b.android.com/40192 |
| |
| - Fixed ndk-build won't build if makefile has tailing whitespace in |
| LOCAL_PATH definition |
| See 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 |
| 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 |
| 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 |
| 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 |
| 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. |
| |
| * Fuxed 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_PLATFORM 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. |
| </pre></body></html> |