David 'Digit' Turner | 5ad95c5 | 2009-05-27 14:20:44 +0200 | [diff] [blame] | 1 | Android NDK ChangeLog: |
David 'Digit' Turner | 979c98c | 2009-05-20 16:08:19 +0200 | [diff] [blame] | 2 | |
David 'Digit' Turner | 979c98c | 2009-05-20 16:08:19 +0200 | [diff] [blame] | 3 | ------------------------------------------------------------------------------- |
David 'Digit' Turner | eef791e | 2010-01-13 16:50:57 -0800 | [diff] [blame] | 4 | android-ndk-r3 |
David 'Digit' Turner | 1dbeeca | 2009-09-24 15:48:44 -0700 | [diff] [blame] | 5 | |
| 6 | IMPORTANT BUG FIXES: |
| 7 | |
David 'Digit' Turner | a78a775 | 2009-10-01 16:38:44 -0700 | [diff] [blame] | 8 | - Fix build/host-setup.sh to execute as a Bourne shell script (again) |
| 9 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame] | 10 | - Make target shared libraries portable to systems that don't use the exact |
| 11 | same toolchain. This is needed due to differences in libgcc.a implementations |
| 12 | between gcc 4.2.1 and 4.4.0. This change ensures that generated machine |
| 13 | code doesn't depend on helper functions provided by the Android platform |
| 14 | runtime. |
David 'Digit' Turner | cc230ba | 2009-10-01 16:44:54 -0700 | [diff] [blame] | 15 | |
David 'Digit' Turner | 27ad1ef | 2009-10-22 16:59:10 -0700 | [diff] [blame] | 16 | |
| 17 | IMPORTANT CHANGES: |
| 18 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame] | 19 | - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI |
| 20 | corresponding to ARMv7-a class devices. |
| 21 | |
| 22 | Note that by default, the NDK will still generate machine code for the old |
| 23 | 'armeabi' ABI (ARMv5TE based) which is supported by all official Android |
| 24 | system images to date. |
| 25 | |
| 26 | You will need to define APP_ABI in your Application.mk file to change this. |
| 27 | See docs/APPLICATION-MK.TXT |
| 28 | |
| 29 | More details about ABIs is now available in docs/CPU-ARCH-ABIS.TXT |
| 30 | |
David 'Digit' Turner | da4b831 | 2010-02-09 12:25:56 -0800 | [diff] [blame] | 31 | - A small static library named 'cpufeatures' is provided with source code |
| 32 | and can be used at runtime to determine the CPU features supported by the |
| 33 | target device. It should run on all Android platforms, starting from 1.5. |
David 'Digit' Turner | 4380991 | 2010-02-05 14:29:11 -0800 | [diff] [blame] | 34 | |
David 'Digit' Turner | da4b831 | 2010-02-09 12:25:56 -0800 | [diff] [blame] | 35 | For more information, see docs/CPU-FEATURES.TXT |
| 36 | |
| 37 | - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set |
| 38 | extension through the use the LOCAL_ARM_NEON variable in Android.mk, or |
| 39 | the '.neon' suffix when listing source files. |
| 40 | |
| 41 | Neon is an *optional* instruction set extension, and not all Android ARMv7 |
| 42 | devices will support it. You will need to use the 'cpufeatures' library to |
| 43 | determine if such code can be used at runtime, and provide alternate code |
| 44 | paths if this is not the case. This is similar to MMX/SSE/3DNow on x86 |
| 45 | platforms. |
| 46 | |
| 47 | For more information, see docs/CPU-ARM-NEON.TXT |
David 'Digit' Turner | 4380991 | 2010-02-05 14:29:11 -0800 | [diff] [blame] | 48 | |
David 'Digit' Turner | 92210fe | 2010-02-12 17:23:21 -0800 | [diff] [blame] | 49 | - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures' |
| 50 | and NEON intrinsics & build support. |
| 51 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame] | 52 | - GCC 4.4.0 is now used by default by the NDK. It generates better code than |
| 53 | GCC 4.2.1, which was used in previous releases. However, the compiler's C++ |
| 54 | frontend is also a lot more pedantic regarding certain template constructs |
| 55 | and will even refuse to build some of them. |
| 56 | |
| 57 | For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and |
| 58 | you can force its usage by defining NDK_TOOLCHAIN in your environment to |
| 59 | the value 'arm-eabi-4.2.1'. For example: |
| 60 | |
| 61 | export NDK_TOOLCHAIN=arm-eabi-4.2.1 |
| 62 | make APP=hello-jni |
| 63 | |
| 64 | Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We |
| 65 | recommend switching to 4.2.1 *only* if you encounter compilation problems |
| 66 | with 4.4.0. |
| 67 | |
| 68 | The 4.2.1 prebuilt binaries will probably be removed from a future release |
| 69 | of the Android NDK, we thus *strongly* invite you to fix your code if such |
| 70 | problems happen. |
| 71 | |
| 72 | - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to |
| 73 | reflect Android 2.0 (previously the Eclair branch). This is merely a copy |
David 'Digit' Turner | 27ad1ef | 2009-10-22 16:59:10 -0700 | [diff] [blame] | 74 | of android-4 that also includes headers and libraries for OpenGL ES 2.0. |
| 75 | |
| 76 | See the sample named "hello-gl2" for a *very* basic demonstration. Note that |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame] | 77 | OpenGL ES 2.0 is currently *not* available from Java, and must be used |
| 78 | through native code exclusively. |
David 'Digit' Turner | 27ad1ef | 2009-10-22 16:59:10 -0700 | [diff] [blame] | 79 | |
David 'Digit' Turner | a13e890 | 2009-12-09 15:46:07 -0800 | [diff] [blame] | 80 | IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this |
| 81 | time. Running/testing any native code that depends on it thus |
| 82 | requires a real device. |
| 83 | |
David 'Digit' Turner | cb96cdd | 2009-11-23 16:12:12 -0800 | [diff] [blame] | 84 | - The NDK build script will now remove installed binaries from the application |
| 85 | project's path before starting the build. This ensures that: |
| 86 | |
| 87 | - if the build fails for some reason, a stale/obsolete file is not left in |
| 88 | your application project tree by mistake. |
| 89 | |
| 90 | - if you change the target ABI, a stale/obsolete file is not left into the |
| 91 | folder corresponding to the old ABI. |
| 92 | |
David 'Digit' Turner | 27ad1ef | 2009-10-22 16:59:10 -0700 | [diff] [blame] | 93 | |
David 'Digit' Turner | eef791e | 2010-01-13 16:50:57 -0800 | [diff] [blame] | 94 | - Updated the STABLE-APIS.TXT document to clarify the OpenGL ES 1.0/1.1/2.0 |
| 95 | issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and |
| 96 | 2.0 on specific devices only, need for <uses-feature> tag in manifest). |
| 97 | |
| 98 | |
David 'Digit' Turner | 854f820 | 2009-10-14 15:22:11 -0700 | [diff] [blame] | 99 | OTHER FIXES & CHANGES: |
| 100 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame] | 101 | - Actually use the awk version detected by host-setup.sh during the build. |
| 102 | |
David 'Digit' Turner | da4b831 | 2010-02-09 12:25:56 -0800 | [diff] [blame] | 103 | - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set |
| 104 | to 'true', just like the documentation says it works. Also fix a typo |
| 105 | in CLEAR_VARS that prevented this variable from being cleared properly. |
| 106 | |
David 'Digit' Turner | 92210fe | 2010-02-12 17:23:21 -0800 | [diff] [blame] | 107 | - Simplified build/tools/make-release.sh, the --prebuilt-dir option is |
| 108 | gone, and --help will dump a clearer description of expected options |
| 109 | and input files. |
| 110 | |
David 'Digit' Turner | 854f820 | 2009-10-14 15:22:11 -0700 | [diff] [blame] | 111 | - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to |
| 112 | package a new experimental NDK package archive from the current source tree |
| 113 | plus the toolchain binaries of an existing NDK release package. E.g.: |
| 114 | |
| 115 | build/tools/make-release.sh \ |
| 116 | --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip |
| 117 | |
| 118 | will generate a new NDK package in /tmp/ndk-release that contains the most |
| 119 | up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which |
| 120 | are not in the git repository). |
| 121 | |
| 122 | Also added the --no-git option to collect all sources from the current |
| 123 | NDK root directory, instead of the list given by 'git ls-files'. This can |
| 124 | be useful if you don't want to checkout the whole 'platform/development' |
| 125 | project from repo and still work on the NDK. |
| 126 | |
| 127 | This change is to help people easily package experimental NDK releases to |
| 128 | test and distribute fixes and improvements. |
| 129 | |
David 'Digit' Turner | 1db4662 | 2009-10-15 13:29:06 -0700 | [diff] [blame] | 130 | - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to |
| 131 | build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04) |
| 132 | |
David 'Digit' Turner | f7aa22a | 2009-10-20 15:33:40 -0700 | [diff] [blame] | 133 | - Remove bash-ism from build/tools/build-ndk-sysroot.sh |
| 134 | |
David 'Digit' Turner | 898b43f | 2009-10-20 15:25:40 -0700 | [diff] [blame] | 135 | - Refresh C library headers for all platforms: |
| 136 | |
| 137 | - make <endian.h> simply include <sys/endian.h> |
| 138 | - make <stdint.h> properly declare 64-bit integer types with a C99 compiler |
| 139 | - add missing <sys/types.h> to <strings.h> |
| 140 | - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and |
| 141 | st_ctimensec) to <stat.h> |
| 142 | - add missing declaration for tzset() in <time.h> |
| 143 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame] | 144 | - Added build/tools/download-toolchain-sources.sh, a script that allows you |
| 145 | to download the toolchain sources from the official open-source repository |
| 146 | at android.git.kernel.org and nicely package them into a tarball that can |
| 147 | later be used by build/tools/build-toolchain.sh to rebuild the prebuilt |
| 148 | binaries for your system. |
| 149 | |
| 150 | - Updated build/tools/build-toolchain.sh to support the tarballs generated |
| 151 | by download-toolchain-sources.sh with the --package=<file> option. This |
| 152 | also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to |
| 153 | gcc 4.4.0. |
| 154 | |
David 'Digit' Turner | 1dbeeca | 2009-09-24 15:48:44 -0700 | [diff] [blame] | 155 | ------------------------------------------------------------------------------- |
David 'Digit' Turner | 902706a | 2009-08-14 20:51:58 +0200 | [diff] [blame] | 156 | android-ndk-1.6_r1 |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 157 | |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 158 | IMPORTANT BUG FIXES: |
| 159 | |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 160 | - Fix build/host-setup.sh to: |
David 'Digit' Turner | d6ec172 | 2009-06-29 16:13:25 +0200 | [diff] [blame] | 161 | * execute as a Bourne shell script |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 162 | * remove unused host gcc dependency |
| 163 | * improve Windows host auto-detection |
David 'Digit' Turner | d6ec172 | 2009-06-29 16:13:25 +0200 | [diff] [blame] | 164 | * add GNU Make version check |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 165 | * add Nawk/Gawk check |
David 'Digit' Turner | d6ec172 | 2009-06-29 16:13:25 +0200 | [diff] [blame] | 166 | * ensure that the script is run from $NDKROOT as build/host-setup.sh |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 167 | * add --help, --verbose, --no-awk-check and --no-make-check options |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 168 | |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 169 | - Properly add sysroot library search path at build time. This makes a line |
| 170 | in Android.mk like: |
| 171 | |
| 172 | LOCAL_LDLIBS := -lz |
| 173 | |
| 174 | Actually work correctly, instead of having the linker complaining that it |
David 'Digit' Turner | 7ec528c | 2009-07-22 13:34:54 +0200 | [diff] [blame] | 175 | could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS |
| 176 | in $(CLEAR_VARS) script. |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 177 | |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 178 | |
David 'Digit' Turner | 1dbeeca | 2009-09-24 15:48:44 -0700 | [diff] [blame] | 179 | IMPORTANT CHANGES: |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 180 | |
| 181 | - The 'sources' directory is gone. The NDK build system now looks for |
| 182 | $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with |
| 183 | the new APP_BUILD_SCRIPT variable in Application.mk |
| 184 | |
| 185 | For example, the 'hello-jni' sample uses the following files: |
| 186 | |
| 187 | apps/hello-jni/project/jni/Android.mk |
| 188 | apps/hello-jni/project/jni/hello-jni.c |
| 189 | |
| 190 | The 'apps/<name>' directory is still needed in this release though. |
| 191 | |
| 192 | - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build |
| 193 | system. This means that: |
| 194 | |
| 195 | - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C) |
| 196 | - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++) |
| 197 | - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete. |
| 198 | (will disappear in next release) |
| 199 | |
| 200 | Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly. |
| 201 | |
| 202 | - Rename build/platforms/android-1.5 to build/platforms/android-3 to match |
| 203 | the Android API level instead of the marketing speak. |
| 204 | |
| 205 | Also add a new build/platforms/android-4, and make the build system select |
| 206 | which platform to use based on the content of the project file named |
| 207 | $(APP_PROJECT_PATH)/default.properties. |
| 208 | |
| 209 | - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs. |
| 210 | (NOTE: they are *not* available for android-3) |
| 211 | |
| 212 | Also provide a small port of the "San Angeles Observation" demo to show |
| 213 | how to make a simple Android application that uses them. |
| 214 | |
| 215 | |
| 216 | OTHER FIXES & CHANGES |
| 217 | |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 218 | - Generate thumb binaries by default. |
| 219 | |
David 'Digit' Turner | 67d8edd | 2009-06-29 16:44:31 +0200 | [diff] [blame] | 220 | - Add support for LOCAL_ARM_MODE in Android.mk. |
| 221 | |
| 222 | - Add support for the '.arm' suffix in source file names to force the |
| 223 | compilation of a single source in arm (32-bit) mode. |
| 224 | |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 225 | - Generate proper unoptimized versions of binaries when APP_OPTIM := debug |
| 226 | |
David 'Digit' Turner | 6c01aba | 2009-06-29 16:48:56 +0200 | [diff] [blame] | 227 | - Add support for LOCAL_C_INCLUDES in Android.mk |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 228 | |
David 'Digit' Turner | 7f0688d | 2009-07-20 15:38:48 +0200 | [diff] [blame] | 229 | - Fix compilation of assembler files (e.g. foo.S) |
| 230 | |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 231 | ------------------------------------------------------------------------------- |
David 'Digit' Turner | fdc5ea2 | 2009-07-24 17:56:51 +0200 | [diff] [blame] | 232 | android-ndk-1.5_r1 released. |