OSDN Git Service

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