blob: 656b1b49917e8d301a079b3047f0386e74bbf11d [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' Turner1dbeeca2009-09-24 15:48:44 -07004current version
5
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
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' Turner27ad1ef2009-10-22 16:59:10 -070053 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' Turnerf5862d82009-11-18 18:05:55 -080056 OpenGL ES 2.0 is currently *not* available from Java, and must be used
57 through native code exclusively.
David 'Digit' Turner27ad1ef2009-10-22 16:59:10 -070058
59
David 'Digit' Turner854f8202009-10-14 15:22:11 -070060OTHER FIXES & CHANGES:
61
David 'Digit' Turnerf5862d82009-11-18 18:05:55 -080062- Actually use the awk version detected by host-setup.sh during the build.
63
David 'Digit' Turner854f8202009-10-14 15:22:11 -070064- 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' Turner1db46622009-10-15 13:29:06 -070083- 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' Turnerf7aa22a2009-10-20 15:33:40 -070086- Remove bash-ism from build/tools/build-ndk-sysroot.sh
87
David 'Digit' Turner898b43f2009-10-20 15:25:40 -070088- 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' Turnerf5862d82009-11-18 18:05:55 -080097- 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' Turner1dbeeca2009-09-24 15:48:44 -0700108-------------------------------------------------------------------------------
David 'Digit' Turner902706a2009-08-14 20:51:58 +0200109android-ndk-1.6_r1
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200110
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200111IMPORTANT BUG FIXES:
112
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200113- Fix build/host-setup.sh to:
David 'Digit' Turnerd6ec1722009-06-29 16:13:25 +0200114 * execute as a Bourne shell script
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200115 * remove unused host gcc dependency
116 * improve Windows host auto-detection
David 'Digit' Turnerd6ec1722009-06-29 16:13:25 +0200117 * add GNU Make version check
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200118 * add Nawk/Gawk check
David 'Digit' Turnerd6ec1722009-06-29 16:13:25 +0200119 * ensure that the script is run from $NDKROOT as build/host-setup.sh
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200120 * add --help, --verbose, --no-awk-check and --no-make-check options
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200121
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200122- 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' Turner7ec528c2009-07-22 13:34:54 +0200128 could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
129 in $(CLEAR_VARS) script.
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200130
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200131
David 'Digit' Turner1dbeeca2009-09-24 15:48:44 -0700132IMPORTANT CHANGES:
David 'Digit' Turnereee16752009-07-29 19:04:44 +0200133
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
169OTHER FIXES & CHANGES
170
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200171- Generate thumb binaries by default.
172
David 'Digit' Turner67d8edd2009-06-29 16:44:31 +0200173- 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' Turnera046aad2009-06-29 16:33:30 +0200178- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
179
David 'Digit' Turner6c01aba2009-06-29 16:48:56 +0200180- Add support for LOCAL_C_INCLUDES in Android.mk
David 'Digit' Turnera046aad2009-06-29 16:33:30 +0200181
David 'Digit' Turner7f0688d2009-07-20 15:38:48 +0200182- Fix compilation of assembler files (e.g. foo.S)
183
David 'Digit' Turnerfadee812009-06-29 12:28:04 +0200184-------------------------------------------------------------------------------
David 'Digit' Turnerfdc5ea22009-07-24 17:56:51 +0200185android-ndk-1.5_r1 released.