Ensures that no stale/obsolete shared libraries are left in the application's project path before the build. Also fix a minor typo that made the ABI selection process not work properly in certain cases.
195 lines
7.5 KiB
Plaintext
195 lines
7.5 KiB
Plaintext
Android NDK ChangeLog:
|
|
|
|
-------------------------------------------------------------------------------
|
|
current version
|
|
|
|
IMPORTANT BUG FIXES:
|
|
|
|
- Fix build/host-setup.sh to execute as a Bourne shell script (again)
|
|
|
|
- Make target shared libraries portable to systems that don't use the exact
|
|
same toolchain. This is needed due to differences in libgcc.a implementations
|
|
between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
|
|
code doesn't depend on helper functions provided by the Android platform
|
|
runtime.
|
|
|
|
|
|
IMPORTANT CHANGES:
|
|
|
|
- Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
|
|
corresponding to ARMv7-a class devices.
|
|
|
|
Note that by default, the NDK will still generate machine code for the old
|
|
'armeabi' ABI (ARMv5TE based) which is supported by all official Android
|
|
system images to date.
|
|
|
|
You will need to define APP_ABI in your Application.mk file to change this.
|
|
See docs/APPLICATION-MK.TXT
|
|
|
|
More details about ABIs is now available in docs/CPU-ARCH-ABIS.TXT
|
|
|
|
- GCC 4.4.0 is now used by default by the NDK. It generates better code than
|
|
GCC 4.2.1, which was used in previous releases. However, the compiler's C++
|
|
frontend is also a lot more pedantic regarding certain template constructs
|
|
and will even refuse to build some of them.
|
|
|
|
For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
|
|
you can force its usage by defining NDK_TOOLCHAIN in your environment to
|
|
the value 'arm-eabi-4.2.1'. For example:
|
|
|
|
export NDK_TOOLCHAIN=arm-eabi-4.2.1
|
|
make APP=hello-jni
|
|
|
|
Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
|
|
recommend switching to 4.2.1 *only* if you encounter compilation problems
|
|
with 4.4.0.
|
|
|
|
The 4.2.1 prebuilt binaries will probably be removed from a future release
|
|
of the Android NDK, we thus *strongly* invite you to fix your code if such
|
|
problems happen.
|
|
|
|
- Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
|
|
reflect Android 2.0 (previously the Eclair branch). This is merely a copy
|
|
of android-4 that also includes headers and libraries for OpenGL ES 2.0.
|
|
|
|
See the sample named "hello-gl2" for a *very* basic demonstration. Note that
|
|
OpenGL ES 2.0 is currently *not* available from Java, and must be used
|
|
through native code exclusively.
|
|
|
|
- The NDK build script will now remove installed binaries from the application
|
|
project's path before starting the build. This ensures that:
|
|
|
|
- if the build fails for some reason, a stale/obsolete file is not left in
|
|
your application project tree by mistake.
|
|
|
|
- if you change the target ABI, a stale/obsolete file is not left into the
|
|
folder corresponding to the old ABI.
|
|
|
|
|
|
OTHER FIXES & CHANGES:
|
|
|
|
- Actually use the awk version detected by host-setup.sh during the build.
|
|
|
|
- Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
|
|
package a new experimental NDK package archive from the current source tree
|
|
plus the toolchain binaries of an existing NDK release package. E.g.:
|
|
|
|
build/tools/make-release.sh \
|
|
--prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
|
|
|
|
will generate a new NDK package in /tmp/ndk-release that contains the most
|
|
up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
|
|
are not in the git repository).
|
|
|
|
Also added the --no-git option to collect all sources from the current
|
|
NDK root directory, instead of the list given by 'git ls-files'. This can
|
|
be useful if you don't want to checkout the whole 'platform/development'
|
|
project from repo and still work on the NDK.
|
|
|
|
This change is to help people easily package experimental NDK releases to
|
|
test and distribute fixes and improvements.
|
|
|
|
- Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
|
|
build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
|
|
|
|
- Remove bash-ism from build/tools/build-ndk-sysroot.sh
|
|
|
|
- Refresh C library headers for all platforms:
|
|
|
|
- make <endian.h> simply include <sys/endian.h>
|
|
- make <stdint.h> properly declare 64-bit integer types with a C99 compiler
|
|
- add missing <sys/types.h> to <strings.h>
|
|
- add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
|
|
st_ctimensec) to <stat.h>
|
|
- add missing declaration for tzset() in <time.h>
|
|
|
|
- Added build/tools/download-toolchain-sources.sh, a script that allows you
|
|
to download the toolchain sources from the official open-source repository
|
|
at android.git.kernel.org and nicely package them into a tarball that can
|
|
later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
|
|
binaries for your system.
|
|
|
|
- Updated build/tools/build-toolchain.sh to support the tarballs generated
|
|
by download-toolchain-sources.sh with the --package=<file> option. This
|
|
also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
|
|
gcc 4.4.0.
|
|
|
|
-------------------------------------------------------------------------------
|
|
android-ndk-1.6_r1
|
|
|
|
IMPORTANT BUG FIXES:
|
|
|
|
- Fix build/host-setup.sh to:
|
|
* execute as a Bourne shell script
|
|
* remove unused host gcc dependency
|
|
* improve Windows host auto-detection
|
|
* add GNU Make version check
|
|
* add Nawk/Gawk check
|
|
* ensure that the script is run from $NDKROOT as build/host-setup.sh
|
|
* add --help, --verbose, --no-awk-check and --no-make-check options
|
|
|
|
- Properly add sysroot library search path at build time. This makes a line
|
|
in Android.mk like:
|
|
|
|
LOCAL_LDLIBS := -lz
|
|
|
|
Actually work correctly, instead of having the linker complaining that it
|
|
could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
|
|
in $(CLEAR_VARS) script.
|
|
|
|
|
|
IMPORTANT CHANGES:
|
|
|
|
- The 'sources' directory is gone. The NDK build system now looks for
|
|
$(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
|
|
the new APP_BUILD_SCRIPT variable in Application.mk
|
|
|
|
For example, the 'hello-jni' sample uses the following files:
|
|
|
|
apps/hello-jni/project/jni/Android.mk
|
|
apps/hello-jni/project/jni/hello-jni.c
|
|
|
|
The 'apps/<name>' directory is still needed in this release though.
|
|
|
|
- Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
|
|
system. This means that:
|
|
|
|
- LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C)
|
|
- LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
|
|
- LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
|
|
(will disappear in next release)
|
|
|
|
Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
|
|
|
|
- Rename build/platforms/android-1.5 to build/platforms/android-3 to match
|
|
the Android API level instead of the marketing speak.
|
|
|
|
Also add a new build/platforms/android-4, and make the build system select
|
|
which platform to use based on the content of the project file named
|
|
$(APP_PROJECT_PATH)/default.properties.
|
|
|
|
- Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
|
|
(NOTE: they are *not* available for android-3)
|
|
|
|
Also provide a small port of the "San Angeles Observation" demo to show
|
|
how to make a simple Android application that uses them.
|
|
|
|
|
|
OTHER FIXES & CHANGES
|
|
|
|
- Generate thumb binaries by default.
|
|
|
|
- Add support for LOCAL_ARM_MODE in Android.mk.
|
|
|
|
- Add support for the '.arm' suffix in source file names to force the
|
|
compilation of a single source in arm (32-bit) mode.
|
|
|
|
- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
|
|
|
|
- Add support for LOCAL_C_INCLUDES in Android.mk
|
|
|
|
- Fix compilation of assembler files (e.g. foo.S)
|
|
|
|
-------------------------------------------------------------------------------
|
|
android-ndk-1.5_r1 released.
|