blob: 51088d7f14a9e06b9ddbe4e4c4506b82384c0588 [file] [log] [blame]
David 'Digit' Turner5ad95c52009-05-27 14:20:44 +02001Android NDK ChangeLog:
David 'Digit' Turner979c98c2009-05-20 16:08:19 +02002
David 'Digit' Turner979c98c2009-05-20 16:08:19 +02003-------------------------------------------------------------------------------
David 'Digit' Turnereef791e2010-01-13 16:50:57 -08004android-ndk-r3
David 'Digit' Turner1dbeeca2009-09-24 15:48:44 -07005
6IMPORTANT BUG FIXES:
7
David 'Digit' Turnera78a7752009-10-01 16:38:44 -07008- Fix build/host-setup.sh to execute as a Bourne shell script (again)
9
David 'Digit' Turnerf5862d82009-11-18 18:05:55 -080010- 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' Turnercc230ba2009-10-01 16:44:54 -070015
David 'Digit' Turner27ad1ef2009-10-22 16:59:10 -070016
17IMPORTANT CHANGES:
18
David 'Digit' Turnerf5862d82009-11-18 18:05:55 -080019- 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' Turnerda4b8312010-02-09 12:25:56 -080031- 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' Turner43809912010-02-05 14:29:11 -080034
David 'Digit' Turnerda4b8312010-02-09 12:25:56 -080035 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' Turner43809912010-02-05 14:29:11 -080048
David 'Digit' Turner92210fe2010-02-12 17:23:21 -080049- Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
50 and NEON intrinsics & build support.
51
David 'Digit' Turnerf5862d82009-11-18 18:05:55 -080052- 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' Turner27ad1ef2009-10-22 16:59:10 -070074 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' Turnerf5862d82009-11-18 18:05:55 -080077 OpenGL ES 2.0 is currently *not* available from Java, and must be used
78 through native code exclusively.
David 'Digit' Turner27ad1ef2009-10-22 16:59:10 -070079
David 'Digit' Turnera13e8902009-12-09 15:46:07 -080080 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' Turnercb96cdd2009-11-23 16:12:12 -080084- 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' Turner27ad1ef2009-10-22 16:59:10 -070093
David 'Digit' Turnereef791e2010-01-13 16:50:57 -080094- 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' Turner854f8202009-10-14 15:22:11 -070099OTHER FIXES & CHANGES:
100
David 'Digit' Turnerf5862d82009-11-18 18:05:55 -0800101- Actually use the awk version detected by host-setup.sh during the build.
102
David 'Digit' Turnerda4b8312010-02-09 12:25:56 -0800103- 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' Turner92210fe2010-02-12 17:23:21 -0800107- 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' Turner854f8202009-10-14 15:22:11 -0700111- 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' Turner1db46622009-10-15 13:29:06 -0700130- 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' Turnerf7aa22a2009-10-20 15:33:40 -0700133- Remove bash-ism from build/tools/build-ndk-sysroot.sh
134
David 'Digit' Turner898b43f2009-10-20 15:25:40 -0700135- 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' Turnerf5862d82009-11-18 18:05:55 -0800144- 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' Turner1dbeeca2009-09-24 15:48:44 -0700155-------------------------------------------------------------------------------
David 'Digit' Turner902706a2009-08-14 20:51:58 +0200156android-ndk-1.6_r1
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200157
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200158IMPORTANT BUG FIXES:
159
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200160- Fix build/host-setup.sh to:
David 'Digit' Turnerd6ec1722009-06-29 16:13:25 +0200161 * execute as a Bourne shell script
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200162 * remove unused host gcc dependency
163 * improve Windows host auto-detection
David 'Digit' Turnerd6ec1722009-06-29 16:13:25 +0200164 * add GNU Make version check
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200165 * add Nawk/Gawk check
David 'Digit' Turnerd6ec1722009-06-29 16:13:25 +0200166 * ensure that the script is run from $NDKROOT as build/host-setup.sh
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200167 * add --help, --verbose, --no-awk-check and --no-make-check options
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200168
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200169- 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' Turner7ec528c2009-07-22 13:34:54 +0200175 could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
176 in $(CLEAR_VARS) script.
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200177
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200178
David 'Digit' Turner1dbeeca2009-09-24 15:48:44 -0700179IMPORTANT CHANGES:
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200180
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
216OTHER FIXES & CHANGES
217
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200218- Generate thumb binaries by default.
219
David 'Digit' Turner67d8edd2009-06-29 16:44:31 +0200220- 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' Turnera046aad2009-06-29 16:33:30 +0200225- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
226
David 'Digit' Turner6c01aba2009-06-29 16:48:56 +0200227- Add support for LOCAL_C_INCLUDES in Android.mk
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200228
David 'Digit' Turner7f0688d2009-07-20 15:38:48 +0200229- Fix compilation of assembler files (e.g. foo.S)
230
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200231-------------------------------------------------------------------------------
David 'Digit' Turnerfdc5ea22009-07-24 17:56:51 +0200232android-ndk-1.5_r1 released.