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 | 1dbeeca | 2009-09-24 15:48:44 -0700 | [diff] [blame] | 4 | current version |
| 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 | |
| 31 | - GCC 4.4.0 is now used by default by the NDK. It generates better code than |
| 32 | GCC 4.2.1, which was used in previous releases. However, the compiler's C++ |
| 33 | frontend is also a lot more pedantic regarding certain template constructs |
| 34 | and will even refuse to build some of them. |
| 35 | |
| 36 | For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and |
| 37 | you can force its usage by defining NDK_TOOLCHAIN in your environment to |
| 38 | the value 'arm-eabi-4.2.1'. For example: |
| 39 | |
| 40 | export NDK_TOOLCHAIN=arm-eabi-4.2.1 |
| 41 | make APP=hello-jni |
| 42 | |
| 43 | Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We |
| 44 | recommend switching to 4.2.1 *only* if you encounter compilation problems |
| 45 | with 4.4.0. |
| 46 | |
| 47 | The 4.2.1 prebuilt binaries will probably be removed from a future release |
| 48 | of the Android NDK, we thus *strongly* invite you to fix your code if such |
| 49 | problems happen. |
| 50 | |
| 51 | - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to |
| 52 | 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] | 53 | of android-4 that also includes headers and libraries for OpenGL ES 2.0. |
| 54 | |
| 55 | 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^] | 56 | OpenGL ES 2.0 is currently *not* available from Java, and must be used |
| 57 | through native code exclusively. |
David 'Digit' Turner | 27ad1ef | 2009-10-22 16:59:10 -0700 | [diff] [blame] | 58 | |
| 59 | |
David 'Digit' Turner | 854f820 | 2009-10-14 15:22:11 -0700 | [diff] [blame] | 60 | OTHER FIXES & CHANGES: |
| 61 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame^] | 62 | - Actually use the awk version detected by host-setup.sh during the build. |
| 63 | |
David 'Digit' Turner | 854f820 | 2009-10-14 15:22:11 -0700 | [diff] [blame] | 64 | - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to |
| 65 | package a new experimental NDK package archive from the current source tree |
| 66 | plus the toolchain binaries of an existing NDK release package. E.g.: |
| 67 | |
| 68 | build/tools/make-release.sh \ |
| 69 | --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip |
| 70 | |
| 71 | will generate a new NDK package in /tmp/ndk-release that contains the most |
| 72 | up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which |
| 73 | are not in the git repository). |
| 74 | |
| 75 | Also added the --no-git option to collect all sources from the current |
| 76 | NDK root directory, instead of the list given by 'git ls-files'. This can |
| 77 | be useful if you don't want to checkout the whole 'platform/development' |
| 78 | project from repo and still work on the NDK. |
| 79 | |
| 80 | This change is to help people easily package experimental NDK releases to |
| 81 | test and distribute fixes and improvements. |
| 82 | |
David 'Digit' Turner | 1db4662 | 2009-10-15 13:29:06 -0700 | [diff] [blame] | 83 | - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to |
| 84 | build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04) |
| 85 | |
David 'Digit' Turner | f7aa22a | 2009-10-20 15:33:40 -0700 | [diff] [blame] | 86 | - Remove bash-ism from build/tools/build-ndk-sysroot.sh |
| 87 | |
David 'Digit' Turner | 898b43f | 2009-10-20 15:25:40 -0700 | [diff] [blame] | 88 | - Refresh C library headers for all platforms: |
| 89 | |
| 90 | - make <endian.h> simply include <sys/endian.h> |
| 91 | - make <stdint.h> properly declare 64-bit integer types with a C99 compiler |
| 92 | - add missing <sys/types.h> to <strings.h> |
| 93 | - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and |
| 94 | st_ctimensec) to <stat.h> |
| 95 | - add missing declaration for tzset() in <time.h> |
| 96 | |
David 'Digit' Turner | f5862d8 | 2009-11-18 18:05:55 -0800 | [diff] [blame^] | 97 | - Added build/tools/download-toolchain-sources.sh, a script that allows you |
| 98 | to download the toolchain sources from the official open-source repository |
| 99 | at android.git.kernel.org and nicely package them into a tarball that can |
| 100 | later be used by build/tools/build-toolchain.sh to rebuild the prebuilt |
| 101 | binaries for your system. |
| 102 | |
| 103 | - Updated build/tools/build-toolchain.sh to support the tarballs generated |
| 104 | by download-toolchain-sources.sh with the --package=<file> option. This |
| 105 | also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to |
| 106 | gcc 4.4.0. |
| 107 | |
David 'Digit' Turner | 1dbeeca | 2009-09-24 15:48:44 -0700 | [diff] [blame] | 108 | ------------------------------------------------------------------------------- |
David 'Digit' Turner | 902706a | 2009-08-14 20:51:58 +0200 | [diff] [blame] | 109 | android-ndk-1.6_r1 |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 110 | |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 111 | IMPORTANT BUG FIXES: |
| 112 | |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 113 | - Fix build/host-setup.sh to: |
David 'Digit' Turner | d6ec172 | 2009-06-29 16:13:25 +0200 | [diff] [blame] | 114 | * execute as a Bourne shell script |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 115 | * remove unused host gcc dependency |
| 116 | * improve Windows host auto-detection |
David 'Digit' Turner | d6ec172 | 2009-06-29 16:13:25 +0200 | [diff] [blame] | 117 | * add GNU Make version check |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 118 | * add Nawk/Gawk check |
David 'Digit' Turner | d6ec172 | 2009-06-29 16:13:25 +0200 | [diff] [blame] | 119 | * 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] | 120 | * add --help, --verbose, --no-awk-check and --no-make-check options |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 121 | |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 122 | - Properly add sysroot library search path at build time. This makes a line |
| 123 | in Android.mk like: |
| 124 | |
| 125 | LOCAL_LDLIBS := -lz |
| 126 | |
| 127 | Actually work correctly, instead of having the linker complaining that it |
David 'Digit' Turner | 7ec528c | 2009-07-22 13:34:54 +0200 | [diff] [blame] | 128 | could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS |
| 129 | in $(CLEAR_VARS) script. |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 130 | |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 131 | |
David 'Digit' Turner | 1dbeeca | 2009-09-24 15:48:44 -0700 | [diff] [blame] | 132 | IMPORTANT CHANGES: |
David 'Digit' Turner | eee1675 | 2009-07-29 19:04:44 +0200 | [diff] [blame] | 133 | |
| 134 | - The 'sources' directory is gone. The NDK build system now looks for |
| 135 | $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with |
| 136 | the new APP_BUILD_SCRIPT variable in Application.mk |
| 137 | |
| 138 | For example, the 'hello-jni' sample uses the following files: |
| 139 | |
| 140 | apps/hello-jni/project/jni/Android.mk |
| 141 | apps/hello-jni/project/jni/hello-jni.c |
| 142 | |
| 143 | The 'apps/<name>' directory is still needed in this release though. |
| 144 | |
| 145 | - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build |
| 146 | system. This means that: |
| 147 | |
| 148 | - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C) |
| 149 | - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++) |
| 150 | - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete. |
| 151 | (will disappear in next release) |
| 152 | |
| 153 | Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly. |
| 154 | |
| 155 | - Rename build/platforms/android-1.5 to build/platforms/android-3 to match |
| 156 | the Android API level instead of the marketing speak. |
| 157 | |
| 158 | Also add a new build/platforms/android-4, and make the build system select |
| 159 | which platform to use based on the content of the project file named |
| 160 | $(APP_PROJECT_PATH)/default.properties. |
| 161 | |
| 162 | - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs. |
| 163 | (NOTE: they are *not* available for android-3) |
| 164 | |
| 165 | Also provide a small port of the "San Angeles Observation" demo to show |
| 166 | how to make a simple Android application that uses them. |
| 167 | |
| 168 | |
| 169 | OTHER FIXES & CHANGES |
| 170 | |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 171 | - Generate thumb binaries by default. |
| 172 | |
David 'Digit' Turner | 67d8edd | 2009-06-29 16:44:31 +0200 | [diff] [blame] | 173 | - Add support for LOCAL_ARM_MODE in Android.mk. |
| 174 | |
| 175 | - Add support for the '.arm' suffix in source file names to force the |
| 176 | compilation of a single source in arm (32-bit) mode. |
| 177 | |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 178 | - Generate proper unoptimized versions of binaries when APP_OPTIM := debug |
| 179 | |
David 'Digit' Turner | 6c01aba | 2009-06-29 16:48:56 +0200 | [diff] [blame] | 180 | - Add support for LOCAL_C_INCLUDES in Android.mk |
David 'Digit' Turner | a046aad | 2009-06-29 16:33:30 +0200 | [diff] [blame] | 181 | |
David 'Digit' Turner | 7f0688d | 2009-07-20 15:38:48 +0200 | [diff] [blame] | 182 | - Fix compilation of assembler files (e.g. foo.S) |
| 183 | |
David 'Digit' Turner | fadee81 | 2009-06-29 12:28:04 +0200 | [diff] [blame] | 184 | ------------------------------------------------------------------------------- |
David 'Digit' Turner | fdc5ea2 | 2009-07-24 17:56:51 +0200 | [diff] [blame] | 185 | android-ndk-1.5_r1 released. |