OSDN Git Service

deb01b6e5c2d0c33b05034710460f9708435f0a4
[android-x86/ndk.git] / docs / CHANGES.TXT
1 Android NDK ChangeLog:
2
3 -------------------------------------------------------------------------------
4 android-ndk-r4
5
6 IMPORTANT BUG FIXES:
7
8 - The <fenv.h> header was not placed in the correct location and could not
9   be found by normal builds.
10
11 IMPORTANT CHANGES:
12
13 - Simplified build system: You no longer need to run build/host-setup.sh
14   or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
15   new 'ndk-build' script from your application's project directory, or
16   one of its sub-directories.
17
18   See docs/OVERVIEW.TXT and docs/NDK-BUILD.TXT for more details.
19
20   NOTE: For compatibility purpose, you can still define projects
21         through $NDK_ROOT/apps/<name> though.
22
23 - Easy native debugging support when running debuggable applications
24   on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
25   See docs/NDK-GDB.TXT for details.
26
27 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
28   corresponding to ARMv7-a class devices.
29
30   Note that by default, the NDK will still generate machine code for the old
31   'armeabi' ABI (ARMv5TE based) which is supported by all official Android
32   system images to date.
33
34   You will need to define APP_ABI in your Application.mk file to change this.
35   See docs/APPLICATION-MK.TXT
36
37   More details about ABIs is now available in docs/CPU-ARCH-ABIS.TXT
38
39 - A small static library named 'cpufeatures' is provided with source code
40   and can be used at runtime to determine the CPU features supported by the
41   target device. It should run on all Android platforms, starting from 1.5.
42
43   For more information, see docs/CPU-FEATURES.TXT
44
45 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
46   extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
47   the '.neon' suffix when listing source files.
48
49   Neon is an *optional* instruction set extension, and not all Android ARMv7
50   devices will support it. You will need to use the 'cpufeatures' library to
51   determine if such code can be used at runtime, and provide alternate code
52   paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
53   platforms.
54
55   For more information, see docs/CPU-ARM-NEON.TXT
56
57 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
58   and NEON intrinsics & build support.
59
60 OTHER FIXES & CHANGES:
61
62 - support the .s extension for raw assembly sources (.S is already supported
63   but the input files are parsed by the C-preprocessor before being sent to
64   the assembler).
65
66 - build/host-setup.sh has been removed. There is no need for a 'setup' step
67   when using the NDK for the first time. All host-specific autodetection and
68   basic tool sanity checking have been moved to the build scripts themselves.
69
70 - APP_MODULES in Application.mk is now optional. If not defined, the NDK
71   will simply build _all_ the modules that are declared from your Android.mk.
72
73   You can still use APP_MODULES to restrict the set of modules you want to
74   build. Note that the NDK now computes the transitive dependencies of these
75   modules for you now. See docs/APPLICATION-MK.TXT for details.
76
77 - docs/STABLE-APIS.TXT: Add missing section for Dynamic Linker Library
78   (libdl.so). It is actually supported by all API levels.
79
80 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default
81   instead of the 'eclair' one.
82
83 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
84   them. This is primarily to ease development. All you need to do is put a patch
85   under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied
86   with 'patch -p1' into the <foo> directory of the unpacked toolchain sources
87   before the configure step. 
88
89 - docs/CPU-ARCH-ABIS.TXT: Mention the experimental 'x86' ABI.
90
91 - build/core/mkdeps.sh: Removed obsolete script.
92
93 - the NDK build script now only parses the Application.mk and Android.mk of
94   the applications listed by APP. The error messages when APP is empty or
95   malformed have also been improved.
96
97 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
98   warning when building with GCC 4.4.0 for ARM.
99
100 -------------------------------------------------------------------------------
101 android-ndk-r3
102
103 IMPORTANT BUG FIXES:
104
105 - Fix build/host-setup.sh to execute as a Bourne shell script (again)
106
107 - Make target shared libraries portable to systems that don't use the exact
108   same toolchain. This is needed due to differences in libgcc.a implementations
109   between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
110   code doesn't depend on helper functions provided by the Android platform
111   runtime.
112
113
114 IMPORTANT CHANGES:
115
116 - GCC 4.4.0 is now used by default by the NDK. It generates better code than
117   GCC 4.2.1, which was used in previous releases. However, the compiler's C++
118   frontend is also a lot more pedantic regarding certain template constructs
119   and will even refuse to build some of them.
120
121   For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
122   you can force its usage by defining NDK_TOOLCHAIN in your environment to
123   the value 'arm-eabi-4.2.1'. For example:
124
125         export NDK_TOOLCHAIN=arm-eabi-4.2.1
126         make APP=hello-jni
127
128   Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
129   recommend switching to 4.2.1 *only* if you encounter compilation problems
130   with 4.4.0.
131
132   The 4.2.1 prebuilt binaries will probably be removed from a future release
133   of the Android NDK, we thus *strongly* invite you to fix your code if such
134   problems happen.
135
136 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
137   reflect Android 2.0 (previously the Eclair branch). This is merely a copy
138   of android-4 that also includes headers and libraries for OpenGL ES 2.0.
139
140   See the sample named "hello-gl2" for a *very* basic demonstration. Note that
141   OpenGL ES 2.0 is currently *not* available from Java, and must be used
142   through native code exclusively.
143
144   IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
145              time. Running/testing any native code that depends on it thus
146              requires a real device.
147
148 - The NDK build script will now remove installed binaries from the application
149   project's path before starting the build. This ensures that:
150
151   - if the build fails for some reason, a stale/obsolete file is not left in
152     your application project tree by mistake.
153
154   - if you change the target ABI, a stale/obsolete file is not left into the
155     folder corresponding to the old ABI.
156
157
158 - Updated the STABLE-APIS.TXT document to clarify the OpenGL ES 1.0/1.1/2.0
159   issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
160   2.0 on specific devices only, need for <uses-feature> tag in manifest).
161
162
163 OTHER FIXES & CHANGES:
164
165 - Actually use the awk version detected by host-setup.sh during the build.
166
167 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
168   to 'true', just like the documentation says it works. Also fix a typo
169   in CLEAR_VARS that prevented this variable from being cleared properly.
170
171 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is
172   gone, and --help will dump a clearer description of expected options
173   and input files.
174
175 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
176   package a new experimental NDK package archive from the current source tree
177   plus the toolchain binaries of an existing NDK release package. E.g.:
178
179     build/tools/make-release.sh \
180        --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
181
182   will generate a new NDK package in /tmp/ndk-release that contains the most
183   up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
184   are not in the git repository).
185
186   Also added the --no-git option to collect all sources from the current
187   NDK root directory, instead of the list given by 'git ls-files'. This can
188   be useful if you don't want to checkout the whole 'platform/development'
189   project from repo and still work on the NDK.
190
191   This change is to help people easily package experimental NDK releases to
192   test and distribute fixes and improvements.
193
194 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
195   build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
196
197 - Remove bash-ism from build/tools/build-ndk-sysroot.sh
198
199 - Refresh C library headers for all platforms:
200
201     - make <endian.h> simply include <sys/endian.h>
202     - make <stdint.h> properly declare 64-bit integer types with a C99 compiler
203     - add missing <sys/types.h> to <strings.h>
204     - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
205       st_ctimensec) to <stat.h>
206     - add missing declaration for tzset() in <time.h>
207
208 - Added build/tools/download-toolchain-sources.sh, a script that allows you
209   to download the toolchain sources from the official open-source repository
210   at android.git.kernel.org and nicely package them into a tarball that can
211   later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
212   binaries for your system.
213
214 - Updated build/tools/build-toolchain.sh to support the tarballs generated
215   by download-toolchain-sources.sh with the --package=<file> option. This
216   also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
217   gcc 4.4.0.
218
219 -------------------------------------------------------------------------------
220 android-ndk-1.6_r1
221
222 IMPORTANT BUG FIXES:
223
224 - Fix build/host-setup.sh to:
225   * execute as a Bourne shell script
226   * remove unused host gcc dependency
227   * improve Windows host auto-detection
228   * add GNU Make version check
229   * add Nawk/Gawk check
230   * ensure that the script is run from $NDKROOT as build/host-setup.sh
231   * add --help, --verbose, --no-awk-check and --no-make-check options
232
233 - Properly add sysroot library search path at build time. This makes a line
234   in Android.mk like:
235
236      LOCAL_LDLIBS := -lz
237
238   Actually work correctly, instead of having the linker complaining that it
239   could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
240   in $(CLEAR_VARS) script.
241
242
243 IMPORTANT CHANGES:
244
245 - The 'sources' directory is gone. The NDK build system now looks for
246   $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
247   the new APP_BUILD_SCRIPT variable in Application.mk
248
249   For example, the 'hello-jni' sample uses the following files:
250
251     apps/hello-jni/project/jni/Android.mk
252     apps/hello-jni/project/jni/hello-jni.c
253
254   The 'apps/<name>' directory is still needed in this release though.
255
256 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
257   system. This means that:
258
259     - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
260     - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
261     - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
262       (will disappear in next release)
263
264   Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
265
266 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match
267   the Android API level instead of the marketing speak.
268
269   Also add a new build/platforms/android-4, and make the build system select
270   which platform to use based on the content of the project file named
271   $(APP_PROJECT_PATH)/default.properties.
272
273 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
274   (NOTE: they are *not* available for android-3)
275
276   Also provide a small port of the "San Angeles Observation" demo to show
277   how to make a simple Android application that uses them.
278
279
280 OTHER FIXES & CHANGES
281
282 - Generate thumb binaries by default.
283
284 - Add support for LOCAL_ARM_MODE in Android.mk.
285
286 - Add support for the '.arm' suffix in source file names to force the
287   compilation of a single source in arm (32-bit) mode.
288
289 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug
290
291 - Add support for LOCAL_C_INCLUDES in Android.mk
292
293 - Fix compilation of assembler files (e.g. foo.S)
294
295 -------------------------------------------------------------------------------
296 android-ndk-1.5_r1 released.