History log of /ndk/build/core/definitions.mk
Revision Date Author Comments
4fab4150af0c180a6e45e2bfbcdf3c6c0aa479dd 24-Jun-2014 Andrew Hsieh <andrewhsieh@google.com> Add PCH support in LOCAL_PCH

See b.android.com/25412

Contributors:
DodoEntertainment
Alex.Holkner
ezradreisbach

Change-Id: Ie11a737fcf01f063dbf7812432a7356359cca01e
b216d9bbe851841b884c6fb4ba7d8f5548e85cf5 18-Feb-2014 Andrew Hsieh <andrewhsieh@google.com> Add APP_STL := libc++_static | libc++_shared

Change-Id: I6cb681160c3f6dee585f0471fe0521d19f9f4b95
f064277b216f263f5f1f1d99c3aa77e83c359c79 06-Feb-2014 Andrew Hsieh <andrewhsieh@google.com> Build .asm with yasm; Add a testcase

Change-Id: Iacbe580157552fc52a9a0ef2f58d5b09801fc059
3feac42ebbdbebc1a311edc27b845387c7da6da7 30-Dec-2013 Andrew Hsieh <andrewhsieh@google.com> Fixed RS to link arch-specific libclcore.bc

Change-Id: I581e5350f32b21959d6e1ab964ccf67e4773e916
6818b74a366cce707d927e7603a02d3401bfcbc1 14-Nov-2013 Andrew Hsieh <andrewhsieh@google.com> Fix build in ndk-build.cmd when LOCAL_SRC_FILES contain absolute path

In windows $(abspath $(src)) returns path with drive letter, eg.
C:/path/to/your/source.c. We should replace ':' with something else
('_' in this CL), otherwise the computed obj file may contain invalid
':', eg.
./obj/local/armeabi-v7a/objs/project/C:/path/to/your/source.o

Internal BUG 11482427

Change-Id: I4f764486c05a4200ce03a3cd6c853ba231f9b76c
621b1552abe536a6dd9d57ba9950bc83fc35ff7c 10-Nov-2013 Andrew Hsieh <andrewhsieh@google.com> Add LOCAL_EXPORT_LDFLAGS

Like other LOCAL_EXPORT_* flags, now module can export LDFLAGS

Change-Id: I2d85a151b64a120034d08a8a09169f8c8bdacdaf
67259dd98f05d48c5d1120eb4db0ec86bb15b02d 24-Oct-2013 Andrew Hsieh <andrewhsieh@google.com> Add RS support in API19

Change-Id: I31b7c747c045cbbf3ffef96edd4910c75fe6da29
4953c51f28a48bc8e98fedfefbb74922f14c47ae 07-Oct-2013 Andrew Hsieh <andrewhsieh@google.com> Fix [$ABI] in ndk-build

The new ndk-build echo build step prefix with [$TARGET_ARCH_ABI].
Unfortunately by the time it's echoed $TARGET_ARCH_ABI becomes
the last word of NDK_APP_ABI. For examples,

cd $NDK/samples/bitmap-plasma
../../ndk-build -B # APP_ABI := armeabi armeabi-v7a

[armeabi-v7a] Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
[armeabi-v7a] Gdbsetup : libs/armeabi/gdb.setup
[armeabi-v7a] Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi-v7a/gdbserver
[armeabi-v7a] Gdbsetup : libs/armeabi-v7a/gdb.setup
[armeabi-v7a] Compile thumb : plasma <= plasma.c
[armeabi-v7a] SharedLibrary : libplasma.so
[armeabi-v7a] Install : libplasma.so => libs/armeabi/libplasma.so
[armeabi-v7a] Compile thumb : plasma <= plasma.c
[armeabi-v7a] SharedLibrary : libplasma.so
[armeabi-v7a] Install : libplasma.so => libs/armeabi-v7a/libplasma.so

Fix to record the current ABI at the time when make targets are created

Change-Id: I1a316e982d2f9ccbe4919c474cb70ad41106e5a2
2f84ee41d7f2388e65aa829f93165e1ae461c873 02-Oct-2013 David 'Digit' Turner <digit@android.com> Improve ndk-build output + fix double-quotes on Windows.

This patche slightly improves the ndk-build output for individual
build steps, i.e.:

BEFORE:
Compile <abi> : <some details>

AFTER:
[abi] Compile : <some details>

The reason for this is that there are some build steps which didn't
include the <abi>, which is ambiguous when doing a multi-ABI build with
lots of parallel jobs.

Note that for ARM, 'Compile arm' or 'Compile thumb' are still being
used to distinguish between 32-bit ARM and 16 or 16/32 Thumb compilation
modes. This only affects Compile and Compile++ build steps.

+ Fix the extra-quoting issue on Windows described
by https://code.google.com/p/android/issues/detail?id=60649

Change-Id: Ib0bb7587f7113d488696e1c820d89adabad3070c
73859e01a9e2b63c0ce882ebbc9cc6b3eff91dc0 29-Aug-2013 Andrew Hsieh <andrewhsieh@google.com> Add LOCAL_CONLY_FLAGS and APP_CONLY_FLAGS

LOCAL_CFLAGS is passed for C++ compilation as well. This is by design
to save developers from the trouble of specifying flags twice for both
LOCAL_CFLAGS and LOCAL_CPPFLAGS. Unfortunately for flags like -std=gnu99
is harmful to g++ (warning) and clang++ (error), and better be specified
in APP/LOCAL_CONLY_FLAGS

Change-Id: I110516ef14e57df78b477a7f51d89bbc9176ad13
4192b2972079ba849c8859cea2a6486564648675 11-Jun-2013 Nick Kralevich <nnk@google.com> NDK: Enable -Werror=format-security

Don't allow code to compile which has format string vulnerabilities.
This is already the default in the Android platform itself.
Extend these protections to NDK compiled applications.

Change-Id: Ic582739c0e1d3dbf78ebe2deffa3917856cd0bf2
7bc161cadc7e5f389a5175d486b68d4ce694aa23 17-Jun-2013 David 'Digit' Turner <digit@android.com> ndk-build: Refine the handle of circular dependencies.

This changes the way circular dependencies are treated when computing
the topological sort in definitions-graph.mk.

Previously, only circular dependencies that cycled back to the
top-level module were handled properly, other ones were dropped.

For example, with an example like:

A -> B
B -> B

The module B was dropped from the result. This resulted in the
inability to use STLPORT_FORCE_REBUILD with stlport_static
(see bug entry below).

This implementation detects cycles at any level, and returns
the corresponding nodes, in their original listed order.

Since this modifies the result of the function when circular
dependencies are involved, had to modify one test case.

+ Fix typo.

https://code.google.com/p/android/issues/detail?id=56607

Change-Id: I20976d7d6d56ee0976dadc500d55dd34a8d7fa3b
9505b505d507f2d193f69fd84b9cc5a7de9cfa5c 29-Apr-2013 David 'Digit' Turner <digit@android.com> Add LOCAL_THIN_ARCHIVE support.

This adds support for generating "thin archives" when building
static libraries. Instead of containing a copy of their object
files, these contain just pointers/paths to them, making the file
much smaller and avoiding data duplication, reducing the size
of the build output.

The drawback is that these libraries cannot generally be moved,
or will fail at link time if the object files are removed.

BUG=40303

Change-Id: Iee8fc34d9a2b197dac867bb87f6a6977e3ad1443
618bc65a2d50d700b31418d321b4ebf70afe6d2d 29-Apr-2013 David 'Digit' Turner <digit@android.com> ndk-build: Support absolute paths in LOCAL_SRC_FILES

This patch allows one to use absolute paths in LOCAL_SRC_FILES.
This can be useful in situations where computing a path relative
to LOCAL_PATH is too complicated.

(Main purpose is to ease testing of libc++ out of the NDK tree).

+ Avoid double slashes in object file paths during the build,
i.e.:

obj/local/$ABI/obj/<module>/foo.o

instead of:
obj/local/$ABI/obj/<module>//foo.o

Change-Id: I816d7f8782b94eea722d6a0c14249b8a921a9b72
be3de0e9415c9662719b9b70318d314ad6502e4c 05-Apr-2013 David 'Digit' Turner <digit@android.com> Add warnings if LOCAL_LDLIBS/LDFLAGS are used in static library modules.

This also adds the following:

- Add warnings if there are no modules to build.

- Add warning about non-system libraries used in LOCAL_LDLIBS/FLAGS
of shared library or executable modules.

- If APP_MODULES is not defined and only static libraries
are listed in Android.mk, force-build all of them.

BUG=53502

Change-Id: If4b363cb3d9e23c5095b404f77e70ba0c2bfa609
0498e3a7a78f13886cf028fada0a46823c743118 22-Mar-2013 Martin Storsjo <martin@martin.st> Clear LOCAL_BUILT_MODULE_NOT_COPIED between modules

This makes sure that built libraries actually are removed on
ndk-build clean, from projects that include prebuilt static
libraries.

Change-Id: I5e58e82cab062a79d6609f9a8fb18acbec1a1a38
37f0ccac958c582b3083a41b66ee9e358c323e3b 16-Mar-2013 Andrew Hsieh <andrewhsieh@google.com> Fix ndk-build warning in windows

When running ndk-build from jni/ directory, directory path is
expanded to full-path. In windows, the full-path is completed
with drive letter and ':', eg. c:/path/to/project/jni. As a
result, the following statement in "generate-dir" which is supposed
to ensure single rule for each directory since NDK r8c doesn't work
when $1 contain ':'.

__ndk_dir_flag__$1 := true

The warning reads:
...android-ndk/build/core/build-binary.mk:350: warning: overriding commands for target c:/path/to/project/obj/local/armeabi
...android-ndk/build/core/build-binary.mk:350: warning: ignoring old commands for target c:/path/to/project/obj/local/armeabi

The solution is to use indirection via variable __ndk_dir instead.

See https://code.google.com/p/android/issues/detail?id=40192

Change-Id: Ic3f7016987e03440728d3d1b3282acb5afcdae9a
79740de85d70ef1759332186a6448f39048cf622 06-Feb-2013 David 'Digit' Turner <digit@android.com> Fix ndk-build unit test.

The test has to define TARGET_OBJ_EXTENSION since it is run
before anything that does that.

Change-Id: I3928e69ce9953242211d8baff1287b087e70603f
7aa6cc13872bb10bb9c7723b789f19c13adb7a09 04-Feb-2013 David 'Digit' Turner <digit@android.com> Fix dependency graph computation in ndk-build

This introduces a new definitions-graph.mk file providing
proper topological sorting (with wild unit tests for it),
and make the rest of ndk-build use it.

This solves the incorrect dependency computation demonstrated
by the 'topological-sort' test, which is no longer in BROKEN_BUILD
state after this change. For more information, see
http://b.android.com/39378

Note that this also simplifies the build process a little, i.e.:

- if a shared library or executable depends on several
static libraries, try to build them in parallel, even
if one depends on the other.

- better computation of the list of whole static libraries.
in general, whole libraries are treated like regular ones
now when it comes to computing dependencies. Only at
link time, the libraries that are tagged as 'whole will
be put in a separate function.

There is no unit test for this, I probably need to add
one.

Change-Id: I36d9179e53b0b7bcb7de50e2a1a769c231c28201
244e6d54811de81f6f473b3e7c114198db6325ef 15-Nov-2012 David 'Digit' Turner <digit@android.com> Move internal functions.

This patch moves a few internal functions from definitions.mk
to two new files named definitions-utils.mk and definitions-host.mk.

Functions in definitions-utils.mk should be generic and not rely
on any global variables / environment variables / the file system.
This makes them trivial to test properly.

Functions in definitions-host.mk depends on the value of HOST_OS
and are really used to generate shell commands during the build.

definitions.mk still contains functions related to the build, e.g.
the module database.

+ Add three new utility functions, and corresponding tests:

filter-by
filter-out-by
find-first

They'll be used by functions defined in later patches.

Change-Id: I4d841fab74dd83a434a5c408f0b31d7847166d52
cdf4a1640245ceabe1c17b79ff78728cd77f2132 09-Nov-2012 David 'Digit' Turner <digit@android.com> build/core: introduce internal ndk-build unit tests.

This patch introduces many unit test related definitions
under build/core/definitions-tests.mk, and also implement
a few unit tests for the functions in build/core/definitions.mk

Note that there are still functions acting on global variables,
that are harder to test this way. A future patch might make
these more testable in the future.

The test functions are not run during a ndk-build pass, unless
NDK_UNIT_TESTS is defined, so this won't slow down regular
builds.

There is a new build test to run all the unit tests and easily
detect regressions when invoking tests/run-tests.sh

Finally, the last2 and last3 functions were removed, they were
not used, and testing showed they didn't work correctly (ah ah).

Change-Id: I72a31bdc0126528c260f1c7565f88f100203a353
f79965de365170cd3d7011ef62226dccbb6bba71 09-Nov-2012 David 'Digit' Turner <digit@android.com> ndk-build: module database simplification.

This patch ensures that the "lib" prefix is always removed from a
module name when it is first recorded in the module database.

This simplifies dependency computations (which don't have to call
strip-lib-prefix during recursive operations).

Change-Id: Ic7a049866b7fa5bfdc47856d10fdd0f9658fb397
a355a4e66652cc6fea742b9802e350a63cac2992 31-Jan-2013 Andrew Hsieh <andrewhsieh@google.com> Parameterize target-obj/lib/soname-extension

Make it more friendly to plugin

Change-Id: Iecc7ef66dd67d98449832c414e8d2cec9ea033c3
f13b17d6cd1fcff8e1eee259fda6ee40fc59ae46 03-Jan-2013 Andrew Hsieh <andrewhsieh@google.com> Add APP_LDFLAGS, whole project flags for linking

Change-Id: I1111f488648a64b35e32cb4a430b2117beead77a
b9f4a9cfb939dd47b4c77be34cfd5ab8100e2150 28-Dec-2012 Andrew Hsieh <andrewhsieh@google.com> Move to SRC_DIR, instead of copy, after downloading toolchain source

At 3.2GB, "move" can save lots of time compared to "copy"

Also, add more logging when adding c++ libraries dependencies

Change-Id: If220bd299e15c3015af8e30510604635eaadfa53
47097cee425d829a45dc4bef2f427309d978f6c7 30-Nov-2012 David 'Digit' Turner <digit@android.com> ndk-build: Do not copy prebuilt static libraries.

This patch modifies ndk-build to avoid copying prebuilt
static libraries un-necessarily. This fixes
http://code.google.com/p/android/issues/detail?id=40302

+ Add relevant unit test.

+ Make run-tests.sh copy tests with a 'build.sh' script
to a temporary location, just like other ones.

Change-Id: Id474cd86880efade1d9f49125724f7708b03d07a
45f2a04dc3542b9c9d537a0eec181299a27ed24c 19-Nov-2012 David 'Digit' Turner <digit@android.com> ndk-build: Fix un-needed rebuild of object files.

This fixes a bug where ndk-build would mistakenly rebuild object
files even if no sources have ever been touched. For more context
see http://code.google.com/p/android/issues/detail?id=39810

Change-Id: Ida1bbdb385a5867fecea820e6c4729793357e870
9fbd926d87db2195889c98c5a3b9cf4e887025ce 12-Nov-2012 David 'Digit' Turner <digit@android.com> Fix a bug preventing STL dependencies to certain C++ sources.

ndk-build was modified recently to recognize C++ source files
that don't use the .cpp extension. However, the module-get-cpp-sources
definition in build/core/definitions.mk was not updated properly.

The end result is that if a module only used C++ source files that
was not .cpp, it would get built with the C++ compiler (correctly),
but the APP_STL setting would not be applied to it, result in a build
error (for example, when including a C++ STL header).

This patch fixes this, and also adds a regression test for this issue.

Change-Id: Ib68d07492bdbb597e5c6f414cc989eb816ad8752
212c013c8c7fdb1c3cb4e7228f589e8e81dd1c0d 17-Oct-2012 Andrew Hsieh <andrewhsieh@google.com> Support -fPIE for API >= 16

Enhance ndk-build to add -fPIE when API level is larger than or
equal to 16. Note the the real API level is still adjusted back to
androi-14 for higher level, ie. no new headers/libs were added in
platforms/android-N

Also check and give warning when the adjusted API level is larger
than android:minSdkVersion in AndroidManifest.xml. Without this
check, it's possible for native code to compile with higher
API level w/o using new APIs, get -fPIE, and crash on Android
with level < 16, when the old code used to run by accident.

Also document API_PIE

Change-Id: Id0ffbdc3f31d0268741529502178b116e71e0c01
5e39db8dc7dfbb05fa4c089a9fb87e8ffc0edfa8 14-Aug-2012 Andrew Hsieh <andrewhsieh@google.com> Fix breakage when app with .arm/.neon suffix uses stlport

With APP_STL ndk-build searches for C++ file (default to have .cpp
extension) in LOCAL_SRC_FILES before adding STL header/lib paths
to compilation. Fix ndk-build to filter out .arm and .neon suffixes
first, otherwise file like myfile.cpp.arm.neon won't be considered C++!

Change-Id: I237cd9e2ebf6ddf79edf9dcd14c35f0289e070cd
544ecbef57ecf42fbe8a99a1a6cd6816a347f587 06-Aug-2012 David 'Digit' Turner <digit@android.com> Fix windows parallel builds

This patch fixes Windows parallel builds that sometimes
failed due to timing issues in the host-mkdir implementation.
http://code.google.com/p/android/issues/detail?id=25875

+ Optimize the creation of output directories.

Instead of invoking host-mkdir for every output file,
we now introduce a single rule and appropriate dependencies
to ensure that this operation is only done once.

+ Remove obsolete cmd-install-file definition
(use host-install instead).

Change-Id: I64a090a50c5b26cdaf8d989b55a8bbe68e9149d9
22c5065bae39793e5c3b0c5654c7e4f76f2de5f4 04-Jul-2012 David 'Digit' Turner <digit@google.com> Make LOCAL_SHORT_COMMANDS work on Darwin.

Our implementation of LOCAL_SHORT_COMMANDS relied on 'echo -n' to append
data to an existing file, but this option is not supported by Darwin's
echo program.

Modify our build scripts to use "printf %s" instead to do the same thing
on Posix systems. On Windows, which doesn't have printf, keep using the
toolbox echo program that supports the flag.

Change-Id: I35e14279a60e2dd54a0078cdcc5e177984e155d8
1253fb9584ff236b9fb2886cfc0986416751822d 21-Jun-2012 Andrew Hsieh <andrewhsieh@google.com> Fixed LOCAL_SHORT_COMMANDS to not recompile/relink source/object every time

When LOCAL_SHORT_COMMANDS is set to true, compiler options are emitted to a
response file and read off using the '@file' syntax. This is to support very
long commmand line w/o running over the limit of shell command buffer.

Obviously target depends on the response file which shall be regenerated
every time to account for potential changes in command line options.
Unfortunately this triggers rebuilding of target as well even when the content
of response file is identical to the last one.

This CL fixes it by emitting options to a temp file, and only update the response
file when contents differ

Change-Id: Ia2be6df7bbc0d0816b60d552f3fde004f42ca748
f74c373729bcd1519debe03cda90ef3fd3366848 17-May-2012 Nick Kralevich <nnk@google.com> ndk: compile third party apps with relro support.

Enable relro / bind_now when compiling NDK applications.
This marks certain regions of memory as read-only after linking,
making memory corruption security vulnerabilities harder
to exploit.

See:
* http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
* http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html

Change-Id: I52ebddca857845145d5192341d0343183b56843d
4f2c24bb8f6aaadc376151ceb39975763a53e3eb 17-May-2012 Andrew Hsieh <andrewhsieh@google.com> Fixed "ndk-build clean" in Windows

Two issues:
1. There is a typo in host-rm (should be host-rmdir)
2. "ndk-build clean" in Windows fails to remove ./libs/*/lib*.so,
because $(wildcard .\libs\*\lib*.so) fail to expand.
Fixed to do $(subst '/','\',$) AFTER $(wildcard ...)

See http://code.google.com/p/android/issues/detail?id=31161

Change-Id: I5c1d2952db96f4bd615a5b8d0e68912d1acfa92d
488e22a37f47c49be48a0f2f877298dd5fd0d1c9 16-May-2012 Andrew Hsieh <andrewhsieh@google.com> More fix to LOCAL/APP_SHORT_COMMANDS

Related bug entries:
http://code.google.com/p/android/issues/detail?id=29682
http://code.google.com/p/android/issues/detail?id=29896

Related fix:
https://android-review.googlesource.com/#/c/36494

Change-Id: I80975491f0d2dbe1741b324ccd6c788c89c2243f
616aae78295c7618af87d0b3f53335c358945460 10-May-2012 David 'Digit' Turner <digit@google.com> Fix LOCAL/APP_SHORT_COMMANDS

See http://code.google.com/p/android/issues/detail?id=29896

This also speeds up the generation of the list file
through a small bisection algorithm. We now support up
to 6000 parameters per command-line :-)

Change-Id: Ic7f466346acee06fd390756e4384c2765df8c7ac
7a06c124be094134d81920a8f9fe363f6f30abd1 25-Nov-2011 David 'Digit' Turner <digit@google.com> Build modules with hundreds or thousands of sources.

This patch adds the support for LOCAL_SHORT_COMMANDS in Android.mk
and APP_SHORT_COMMANDS in Application.mk. Setting these variable to
'true' will force the use of a linker/archiver list file when building
your NDK modules.

This is mainly useful when you have a very large number of source
files and/or libraries on Windows, which has a limited
command-line length of 8191 characters.

Fixes http://code.google.com/p/android/issues/detail?id=25359

Change-Id: I6f4824e91231e92c0aa83631b89c462ff25ed1cc
62e94189bb3a26ea1f31e8e0cf921d9cb9b5c91e 05-Jan-2012 David 'Digit' Turner <digit@google.com> cygwin: better auto dependency detection.

This patch fixes the way we convert GCC-generated dependency
files from Windows to Cygwin path conventions.

The old script assumed that the cygwin drive prefix was always
"/cygdrive" and didn't support drive-less mounts at all. In these
cases, the converted dependency files didn't include valid paths,
making the dependency detection not work (i.e. updating a header
would not force the rebuild of the source files that include it).

We fix this by parsing the cygwin mount command and generating
a special temporary shell script that can properly make the
conversion of dependency files in all cases.

Change-Id: Ic557bad63873817cf2c19338eaffc10d8ea4e6e8
5f4cab0bea0af60cf3fcb37fbd8bbd64461b575f 25-Nov-2011 David 'Digit' Turner <digit@google.com> ndk-build.cmd: Support special characters in file and path names.

This fixes an issue reported on android-ndk where special characters
other than spaces or quotes that can happen in file or path names
were not treated properly. So add quoting to solve this.

+ Fix native windows implementation of host-rm and host-rmdir

Change-Id: I55e0aa453aff29aee65fc23f4328016b1b062b92
72ab69d4859feabb36868b17cd614cf7a4be6149 20-Oct-2011 David 'Digit' Turner <digit@google.com> Fix "ndk-build clean"

A typo prevented it to remove directories properly.

Change-Id: I6ace3ddb934c940f8bd8293736fef15ccb949688
1e631212bdc6f4d5f889cc5357ae631dccb01b8e 19-Oct-2011 David 'Digit' Turner <digit@google.com> Minor native win32 fixes

This fixes a couple of issues in the native win32 build
support. Mainly reduce verbosity of host cp/rm commands
and deals with cmd.exe program's limitations.

We really need our own implementations of "rm" and "mkdir"
in the toolbox to avoid this kind of hack, but for now this
is good enough.

Change-Id: I07b4ad977357de7eeae5217b36c7854765fc0f42
ad1afc5e66ab40201947a3178eba975515b0d73c 14-Oct-2011 David 'Digit' Turner <digit@google.com> Add win32 native build support

This patch is adds support to "native" (i.e. Cygwin-less) Windows
NDK build through the new 'ndk-build.cmd' Windows shell script.

Just call it from the cmd.exe command-line, when in your project
path. The script takes the same arguments than 'ndk-build'.

+ Adds the source of a new tiny Windows-specific command-line
"echo" program. The reason for this is that the 'echo' that
comes with cmd.exe is too weird and will not work properly
when invoked from make (e.g. it can't deal with double-quoted
strings properly: it will print the double-quotes in the
output).

+ build/tools/build-host-toolbox.sh: new script to rebuild the
'echo' program on Windows. The idea is that the 'toolbox' may
contain other command-line programs like "cp" or "mkdir" in
the future, to avoid relying on the not-so-robust cmd.exe
versions of these commands (del, md, xcopy), if necessary.

+ Make build-host-prebuilts.sh call build-host-toolbox.sh
when generating Windows binaries, and package-release.sh
unpack the corresponding archive when generating the
Windows packages.

+ build-funcs.sh can now be used to build host binaries too.

+ docs/CHANGES.html: document new native win32 build support.

Change-Id: I4d30f6c6532ae84deb95e7e5f595af76b97d9257
0059fb2aa9c710cfe7dfd3d67a1cdc7b5e3e284a 10-Oct-2011 David 'Digit' Turner <digit@google.com> gnustl_shared: New C++ runtime

This patch fixes build-gnu-libstdc++.sh to work properly
and generate libgnustl_shared.so from the GNU libstdc++ sources.

This is done by a custom patch to the gcc toolchain source tree
to force the generation of libgnustl_shared.so from the same objects
than libstdc++.so. This is required because there is no way to change
the internal DT_SONAME of a given shared library, so a simple rename
will not work.

We also ensure that libgnustl_static.a is properly generated and
used by the make-standalone-toolchain.sh script (which uses
copy-libstdcxx.sh)

+ Update definitions.mk to make "gnustl_shared" available in APP_STL
+ Update documentation to reflect that STLport now supports RTTI
+ Update documentation to reflect the new gnustl_shared runtime

Change-Id: Ie3ffaf825ba2d65eca027ec0be5e320d0ee39cbc
1322b9f426ef6aca8b6ce569411cdd3443c1caf4 30-Sep-2011 David 'Digit' Turner <digit@google.com> Fix a bug in the computation of installable dependencies

This patch fixes a bug in definitions.mk regarding the list
of installable dependencies for a given application. It ignored
prebuilt shared libraries.

+ Fix another bug where we were not using the prebuilt GAbi++
libraries when using APP_STL := gabi++_shared/static

Change-Id: Iefac2ccc49ee16e8b8e322c64979946d875212d6
462c63197acacd294d9835dd5afb6913058ea57a 22-Sep-2011 David 'Digit' Turner <digit@google.com> Define HOST_OS as 'cygwin' on Cygwin

This patch changes the definition of HOST_OS to 'cygwin' when
we detect that the build system is invoked from a Cygwin-compatible
GNU Make program.

The old value of 'windows' will now be used for the case where the
build system is invoked from a vanilla Win32 GNU Make binary, e.g.
from a standard Windows shell.

First step towards getting rid of Cygwin.

Change-Id: I4f355a5d254b8d0f544ab6de60c0d7ff85ca23ec
c6faf8bffb4884b59265aadcbaa22c8026c41649 22-Sep-2011 David 'Digit' Turner <digit@google.com> Support several C++ source file extensions

This patch modifies the build system to allow one to
list several C++ source file extensions in LOCAL_CPP_EXTENSION.

+ Check the value of LOCAL_CPP_EXTENSION and warn about values
that do not start with a dot (and ignore them).

Note that this doesn't change the default (which is to use '.cpp')

Change-Id: I0b5dfe8699f90955560cd0dbf9f52336970aaabd
c38f5f527a59f1d849371d662f8882d325edc3bf 14-Sep-2011 David 'Digit' Turner <digit@google.com> GAbi++: new C++ runtime with RTTI support

This patch adds a new C++ runtime that can be used by modules
by setting APP_STL to either 'gabi++_static' or 'gabi++_shared'
in their Application.mk

GAbi++ is an alternative to the GNU libsupc++ that provides
RTTI support (with exceptions added in the future).

The goal is to use it to support RTTI (and later exceptions)
with our version of STLport, or even a different non-GNU STL.

+ new build-gabi++.sh script to rebuild the prebuilt libraries
from sources.

+ support in rebuild-all-prebuilt.sh

+ support in package-release.sh

+ Unit test to check that RTTI actually works, both in the
static and shared library case.

Change-Id: I7e73a31a4d24b5baa36fef357b69064c192ddc56
c55bfcf671107b1b678f5a66a3ec74cbeb3927cb 15-Sep-2011 David 'Digit' Turner <digit@google.com> Add LOCAL_CPP_FEATURES support to Android.mk

This is a new variable that can be used to specify that a
given module relies on C++ exceptions or RTTI.

This is done for several reasons:

- First, we want to avoid always linking GNU libsupc++
to every final binary, because we're soon going to
provide an alternative.

- Second, it is useful to declare prebuilt binaries that
have been compiled with these features. It allows the
final link to work correctly.

Note that the change is backwards-compatible. You can still
use -frtti or -fexceptions in your compiler flags to enable
the features too.

Change-Id: I24b28935e4446c55b169d35990ec2a379ac08500
1208fe621223ae853a954fd0e0aaf0b0ed46ecda 15-Sep-2011 David 'Digit' Turner <digit@google.com> Fix transitive static library imports

Ensure that if 'foo' imports static library 'bar' which
imports static library 'zoo', then libfoo.so will be linked
against both libbar.a and libzoo.a

Before this patch, only libbar.a was used, which resulted
in a link error.

Change-Id: Icabb2d8eaa4c09b12d00b71919b4c3723d4f90e6
5edfe75d8ad0f19be9d05908822ed47628ba80ba 14-Sep-2011 David 'Digit' Turner <digit@google.com> Allow imported shared libraries to be installed by default.

This patch ensures that imported shared libraries are now copied
to the install location (libs/<abi>) by default. Previously, one
had to list them explicitely in APP_MODULES to do that (only
top-level project modules were installed).

Change-Id: I5a8628d2246d1ce4b4a8a56970fda64541bf3f19
8d06600aad07ddf7b6f80c0242269e0e44b3d99a 15-Sep-2011 David 'Digit' Turner <digit@google.com> Simplify non-Cygwin source compiles.

We don't need to rename the auto-generated dependency file when
we're not running inside Cygwin, so simplify operations.

In other words, before this patch, we would compile a source file
on Unix with something like:

gcc -c -MF foo.d.org -o foo.o foo.c &&
mv foo.d.org foo.d

Now we will simply do:

gcc -c -MF foo.d -o foo.o foo.c

Compilation on Cygwin isn't changed.

This makes the build commands dumped with V=1 easier to read.

Change-Id: Ic6f256ecb779de6c75ff940a1f14680bfd87127b
97f5b9de8f353ad15d5edd7cc77974d6fefe2caa 15-Sep-2011 David 'Digit' Turner <digit@google.com> Add ccache support to speed up rebuilds

Define NDK_CCACHE=ccache in your environment and the NDK build
system will automatically use the tool to speed-up your rebuilds.
See http://ccache.samba.org for more details.

Change-Id: I34c8084d4ef6e25326bbe1fd895d6fafd997e997
bb16bc7001669b23fa74f678d8ddff71e062967e 14-Sep-2011 David 'Digit' Turner <digit@google.com> Improve NDK_DEBUG_MODULES output.

This improves the output of the module database when you
define NDK_DEBUG_MODULES=1 when calling ndk-build.

This really means that:

- only dump the fields that are not empty
- break multiple field value into several lines
(it the value only has an item, print it in-line as before).

+ Fix doc typo

Change-Id: Icbdd7fbd0b50bcaab2a18dd3898c732310958992
bafbfe8866f1016cc9c651d9e9ead21a0b7eb16e 15-Mar-2011 David 'Digit' Turner <digit@android.com> Speed-up gdb.setup generation with large list of include directories.

The gmsl 'uniq' function is very slow with a very large number of items,
so provide an alternative, non-recursive, implementation that works much
faster.

See http://code.google.com/p/android/issues/detail?id=14961 for context.

Change-Id: I49d8bea5deccbe8b84aba08805144cd99a24d3d4
7dab8adb7172b44f92315312d54f6bbfa13b59b7 11-Mar-2011 David 'Digit' Turner <digit@android.com> Fix a bug that prevents the compilation of .s assembler files.

The root of the problem is that the compiler doesn't generate any
dependency file for .s files, only .S ones, so our dependency file
processor failed.

Add a simple test to do nothing if the file doesn't exist.

Change-Id: I6b054af4570d5d439dc3885ad8338d5c6ad3b968
b81b0563abbeedd1f1c135359b1a8ee1fb8069ed 02-Mar-2011 David 'Digit' Turner <digit@android.com> Fix minor issues related to module imports

- Remove an infinite loop when a module tries to import itself.
- Print better diagnostics in case of succesful/failed module import.

Change-Id: I7559d8fb8db69af4f67a1943d12b177f935349b8
93acba5133ede31bc20a2fb5e48ac68dc8b10ed5 21-Feb-2011 David 'Digit' Turner <digit@android.com> Fix object order at link time.

This patch ensures that objects are linked in the same order than
they appear in the LOCAL_SRC_FILES declaration. Previously, the objects
were grouped by source file extension.

This fixes http://code.google.com/p/android/issues/detail?id=14176

Change-Id: Id503284380a4690d29c6cc0eacfa6f6bce1910a2
1022d8d9fa56b2a82982e3ab56dc2b7576c0fb03 04-Jan-2011 David 'Digit' Turner <digit@google.com> Speedup cygwin to host path translation.

This change speeds up Cygwin builds by preventing the build system
from calling 'cygpath -m' from GNU Make for every source and object
file (which turns out to be very slow).

This is done by generating at init time a Make function named
cygwin-to-host-path that will perform simple substitutions (e.g.
"/cygdrive/c/foo" to "c:/foo").

The function itself is built dynamically by probing the Cygwin
environment then calling an awk script to generate a Makefile
fragment that is run through 'eval' in init.mk.

In case of problem, define NDK_USE_CYGPATH=1 in your environment
to use 'cygpath -m' as before.

+ If 'cygpath' is not in your path, simply ignore it. android-ndk
users report that this is enough to use the NDK under MSys
succesfully.

Change-Id: I291190d3f30a1e17ee27dd65b63f65701fba6b33
28246be1383b51ebb84596f465e2e25fbac46f5d 13-Dec-2010 David 'Digit' Turner <digit@google.com> Fix Windows rebuild bug after compilation error.

This fixes a bug where an inconsistent dependency file was generated
when a source file failed to compiler properly on Windows. After fixing
the source, trying to rebuild by launching "ndk-build" would fail because
the build system was including the broken dependency file automatically.

Change-Id: I4d47e0647ad53f43759a0788fa76088767163ab0
81dd1b4207dac8328a0ef33b676fcc773f4ca9a1 02-Dec-2010 David 'Digit' Turner <digit@google.com> Add new GNU libstdc++ device test.

This patch adds tests/test-gnustl-1 which performs a basic runtime
test of C++ exceptions support with the GNU STL.

+ Rename tests/test-gnustl to tests/test-gnustl-full (the test is
still broken right now)

+ Add missing "gnustl_static" registration to definitions.mk (doh)

+ Add missing headers to tests.

APP_STL=gnustl_static didn't work

Change-Id: Id1352c342eec9d06f460e57acb2a1e52fc635fdb
2ca50e007226d9d571c94aec476ef5fdf8c4d3fd 02-Dec-2010 David 'Digit' Turner <digit@google.com> Move stlport under sources/cxx-stl/

Move the STLport directory from sources/android/stlport/ to
sources/cxx-stl/stlport/ since we don't document it as an import
module anymore (use APP_STL in your Application.mk to use it instead).

+ Update the documentation under docs/CPLUSPLUS-SUPPORT.html
and sources/cxx-stl/stlport/README

+ Remove obsolete docs/STL-SUPPORT.html (replaced by CPLUSPLUS-SUPPORT.html)

Change-Id: Ie49e2fbeaceb02b0b765336d4a641e8149446711
26f23925041dfcbfde15e5c98d9e7c80fd2a7408 23-Nov-2010 David 'Digit' Turner <digit@google.com> Add APP_STL to select the C++ STL automatically.

This patch allows developers to define APP_STL in their
Application.mk in order to select the C++ STL they want to
use automatically.

Valid values are "system", "stlport_static" and "stlport_shared".
See the new document docs/STL-SUPPORT.html for more details.

Note that the patch also contains changes that will make room
for other C++ STL implementations (GNU libstdc++ and maybe uSTL)

Change-Id: Ica3fbad90d31deb9699e6cfb4a1cff3cd2e6c890
25fc114e97e8e31af9c8a47f80ca4fbd134bf912 19-Nov-2010 David 'Digit' Turner <digit@google.com> Add support for prebuilt STLport binaries.

This patch allows the NDK to be redistributed with prebuilt
STLport binaries, since rebuilding the library from sources
is quite slow, and its implementation should not change.

Note that the binaries are not added to the NDK git repository.
Instead:

- build/tools/build-stlport.sh is a new script that can be used
to rebuild the binaries and package/copy them appropriately.
It requires a valid NDK installation (i.e. with working toolchain
binaries)

- rebuild-all-prebuilt.sh and package-release.sh are also modified
to rebuild STLport and unpack the prebuilt tarballs when necessary.

- tests/build/prebuild-stlport is a fake project that is used
by build/tools/build-stlport.sh to force the rebuild of the
libraries with the NDK (the script later copies/packages the
libs to the appropriate location).

- sources/android/stlport/Android.mk is modified to auto-detect
whether the binaries are installed under the libs/<abi>/ subdir.
If not, the library will be rebuilt from sources.

Rebuilding from sources can be forced by setting STLPORT_FORCE_REBUILD
to 'true' in your environment. That can be useful for debugging purpose.

+ improve 'pretty-dir' function to recognize the NDK path as a prefix
and replace it in the output by '<NDK>'

+ improve formatting of NDK build messages for prebuilt binaries.
Now it looks like:

Prebuilt : <libname> <= <source-directory>/

Change-Id: I5158b9d7f13e0f6252d89f82b6fd2960e4a2ab1f
fc53a9dd8c214b498c00b3028c86de7085c2cab6 19-Nov-2010 David 'Digit' Turner <digit@google.com> Do not use -Wl,--whole-archive is not needed.

This is a mostly cosmetic fix: when linking the final
shared library or executable, dont' use in the final command
"-Wl,--whole-archive -Wl,--no-whole-archive" if there are
no whole static libraries to link to.

Change-Id: Ief95a1c0bb083889d714e77f1e3ab6a22e6e42c3
b1a60f32cc6b482c1209e1d53e773add926dc520 15-Nov-2010 David 'Digit' Turner <digit@google.com> Add support for LOCAL_WHOLE_STATIC_LIBRARIES.

These libraries are linked to the final binary with the help of
-Wl,--whole-archive .. -Wl,--no-whole-archive. The main difference
is the following:

Consider the following link command:

gcc -o libfoo.o libfoo.a libbar.a libzoo.a

The default Unix linker behaviour is the following:
- undefined symbols in libfoo.a will be searched in libbar.a and libzoo.a
(in this specific order)
- undefined symbols in libbar.a will only be searched in libzoo.a
- undefined symbols in libzoo.a will create an error.

Now consider:

gcc -o libfoo.so -Wl,--whole-archive libfoo.a -Wl,--no-whole-archive libbar.a libzoo.a

Then:

- undefined symbols in libfoo.a are still search in the same way
- undefined symbols in libbar.a are searched in libfoo.a then in libzoo.a
- undefined symbols in libzoo.a are searched in libfoo.a

LOCAL_WHOLE_STATIC_LIBRARIES is a way to group static libraries in the
"whole" category when linking final binaries. This is normally only used
when there are weird circular dependencies in your libraries.

Technically, it's not required, one could instead do:

gcc -o libfoo.o libfoo.a libbar.a libzoo.a libfoo.a

But this does not translate well with the NDK build system's definition of
LOCAL_STATIC_LIBRARIES, and forces the use of LOCAL_LDLIBS := libfoo.a which
is less elegant.

Change-Id: I4b90cad004280a78d596388911482d90bd0755f3
499fa5d674e2e85437c69e1ee32a8b8aec3965ad 15-Nov-2010 David 'Digit' Turner <digit@google.com> Prevent errors when a module is imported several times.

It's ok to import a module several times, and it is likely to
happen if import two modules which each import the same, third one.

Instead of aborting with an error, simply skip the second import
since the corresponding definitions have already been parsed by
the build script.

Change-Id: Ie982a28083a2a91a9cba76d1857e7567bc51a0a9
d49e5db44f5a514683ef600db88f8be0b40c3bfd 25-Oct-2010 David 'Digit' Turner <digit@google.com> Fix automatic dependency computation of imported modules.

Before this change, the build system would build any shared library
module that is listed in an imported Android.mk, even if the project
does not need it.

With this change, only the imported modules that are actually needed
by the project will be built.

+ update docs/IMPORT_MODULE.TXT

Change-Id: Iea2ee30dd73be5f9f55ebb1e5658b5368ecbbe31
1579cd933a0e3a1bdd494a312fb5b9e75a03be87 07-Oct-2010 David 'Digit' Turner <digit@google.com> Fix cygwin build on Windows.

This introduces changes to the build system to deal
with the fact that our Windows toolchain binaries are
not Cygwin programs anymore. As a consequence, they
don't understand paths like /cygdrive/c/stuff.

Essentially, this forces path conversions whenever we're
sending a path to the toolchain binaries, through the new
'host-path' and 'host-c-includes' helper functions.

Also, it reformats the auto-generated dependency files
in order for them to be properly parsed by Cygwin's
GNU Make (see build/awk/convert-deps-to-cygwin.awk for
examples).

As a bonus, this change also simplifies the setup of
each toolchain by grouping common definitions under
build/tools/default-build-commands.mk

Change-Id: I5af99b63cb53b3fcb5e1008dfb764e1e934623e5
7a6b17ae18e87e522a4449eff37800421a8bb6ab 22-Sep-2010 David 'Digit' Turner <digit@google.com> Add prebuilt static library support.

This is done with the new PREBUILT_STATIC_LIBRARY include script.

+ Simplify prebuilts dependencies by removing LOCAL_PREBUILTS.
You can now simply list your prebuilts into LOCAL_STATIC_LIBRARIES
and/or LOCAL_SHARED_LIBRARIES.

+ pretty-print paths during install build commands.

Change-Id: I4aca605fc6f818d9669343c6aefc419a78ee0df2
fd204377de03a20556b38acf0dc2bdb195729343 14-Sep-2010 David 'Digit' Turner <digit@google.com> Add easy native debugging support through NDK_DEBUG=1

"ndk-build NDK_DEBUG=1" will force the build of a debuggable application.
This really copies gdbserver to the proper location, as if android:debuggable
was set to "true" in the app's manifest.

The value of NDK_DEBUG can be 0, 1, true or false, and will override the content
of the manifest. The main benefit from this change is that you don't have to
edit your manifest file just to rebuilt

Change-Id: I3fafb620189ac53a72b492c963832dd0c7f8b7d7
7daefc38f01900f8a903d9955f7f8d6262d88f32 17-Jul-2010 David 'Digit' Turner <digit@google.com> Add support for asm-level filtering through LOCAL_FILTER_ASM

Change-Id: I937e9f8e53debf8a4eb3b64151ed8738d75158ac
d9851e70410ee5b14f5e9b772dd015e44a558c89 17-Jul-2010 David 'Digit' Turner <digit@google.com> Simplify module database definitions.

Introduce the LOCAL_MODULE_CLASS field, and use it.

Change-Id: I7103a78f801fa4fdd2080088a4ae81249ce011cf
4780f59d27aebbc44d493c2f1642bd8a703c95d6 15-Jul-2010 David 'Digit' Turner <digit@google.com> Put system headers at the end of the inclusion path.

Change-Id: I1c3eff1efd2d6c375bcaa1e076f9b85b14c5c6b3
6a8948dccbcde263f30c9d83ba09de47a2e19395 10-Jul-2010 David 'Digit' Turner <digit@google.com> Add support for module imports.

See docs/IMPORT-MODULE.TXT for details. You can now define NDK_MODULE_PATH
in your environment to list directories that will be searched when the new
function 'import-module' is called.

The goal is to avoid hard-coding third-party module paths into your
project tree.

Change-Id: I6f260299876d29e0492109b86824acab318e104e
bb9dc1a386532db74f47dd0af1930b27e8402926 09-Jul-2010 David 'Digit' Turner <digit@google.com> Add support for LOCAL_MODULE_FILENAME, that allows renaming generated files.

Change-Id: I228732001af7786f31439a8462310e8ffe67dc19
4013467963a9051585d23d6a0b157685605d2aa6 09-Jul-2010 David 'Digit' Turner <digit@google.com> Add support for prebuilt shared libraries.

Change-Id: I56de52c9206741c8300fb84e92602f75765f44a4
5b690c13f5d908a403e2d09cfa7ac50c8767a897 07-Jul-2010 David 'Digit' Turner <digit@google.com> C++ system headers refresh.

The headers are moved out of the platforms directory, and into
$NDK/sources/cxx-stl/system. This will drastically ease using other
STL implementations like STLport or GNU Libstdc++ in the future.

libstdc++ is not a mandatory dynamic dependency for C-based modules,
instead, it is now added automatically to modules that contain
at least one C++ source.

Change-Id: I84a859fdd460f3e9849e07c667c101a67aa84263
Note: nothing here is specific to a given Android API level.
e7943289cc2df73a99668615639c97ffe6240fce 17-Jun-2010 David 'Digit' Turner <digit@google.com> Fix BUILD_EXECUTABLE. For some reason, module-is-executable didn't work properly.

Change-Id: I657106ca09b4669bd02e9128af869602d83a865c
a5501b02c2f2a9e1bf9fce42a3faf601adc070e9 03-Jun-2010 David 'Digit' Turner <digit@google.com> Implement module exports + update docs + add a sample.

Change-Id: Ib892ca7d46b69599ce4569d5929f0149bdea8e3f
8700ca93c26e2908670a9982c68f4b8a2bf7dce4 10-Jun-2010 David 'Digit' Turner <digit@google.com> Implement two-pass script parsing.

In preparation of future work. The NDK build script will now parse all
Android.mk and record LOCAL_XXX variables in the modules database.

After all parsing is done, it will populate the dependency graph with
targets and commands. This will allow us to implement "exported" module
variables like LOCAL_EXPORT_CFLAGS and others in a reliable way.

Change-Id: If1eb4ce68b62b5dfa146520a77cbcad401272428
a775f5537568f4768cd61931bb1b5314694adc96 10-Jun-2010 David 'Digit' Turner <digit@google.com> Allow platforms and samples to be located under development/ndk/{platforms,samples}

Change-Id: Idb631a91de71c60dc6edc7d1989925fff9adc1aa
dfc478bcac20693422ee56a423377403bba46932 09-Jun-2010 David 'Digit' Turner <digit@google.com> ndk-build: On Windows, check that a Cygwin-compatible GNU Make is being used.

It looks like that many NDK developers on Windows have some sort of other GNU
Make program installed in their path (e.g. because they installed another IDE
or Developer Environment), and that conflicts badly with our build scripts.

Also fix a tiny bug where the debuggable flag was lost when building
the modules.

Change-Id: I2d26131b08cf19959122abdefec9a22955d2a89c
a08d605794902f5c7ed79b3d894adb722e1b6cac 16-Apr-2010 David 'Digit' Turner <digit@google.com> Add ndk-gdb script to the NDK.

This is a helper script used to launch a native debugging session.
To use it, follow these steps:

1. Make your application debuggable
2. Build the machine code with 'ndk-build' (make APP=<name> is not supported)
3. Build the package with ant or the ADT Eclipse plugin
4. Install it on your device/emulator
5. Launch it
6. Run 'ndk-gdb' from your application project directory.

Change-Id: Ie3b0557e70cefa0080075a34ad0ca46bebef3c42
NOTE: To work properly, a modified gdbserver binary must be used
(one that binds to Unix sockets instead of TCP ones). Patch
upcoming.
6724aaa2876f40ad270823bc933edf7552f67436 15-Apr-2010 David 'Digit' Turner <digit@google.com> Simplify build system with the 'ndk-build' script.

There is no need to modify $NDK/apps anymore to build an application.

Now all you need to do is launch $NDK/ndk-build from the project path,
or any of its sub-directory, and the build scripts will handle everything
automatically.

You can also place an optional Application.mk under $PROJECT/jni, but
by default the NDK will build all modules listed in your Android.mk for
the 'armeabi' ABI.

+ Update the documentation

Change-Id: I235c4051d7f00f37d50e6b4bb0e796c0bdaa001d
419390feceb0c39fd3cad8ec6e5253fb74c946a5 09-Apr-2010 David 'Digit' Turner <digit@google.com> Make APP_MODULES optional in Application.mk.

If APP_MODULES is defined, now computes the transitive closure of module dependencies automatically.

+ cleanup some of the build scripts
+ add module database management functions for future work

Change-Id: I4ae14d8a3cbd2240e1efec27c55f8314b618c4d9
a1d764b5d215601e007e01186de0be0db51df900 09-Apr-2010 The Android Open Source Project <initial-contribution@android.com> NDK snapshot from development/ndk/

Change-Id: I154f2fd3828ffd937c82410f5f9995402d7be15e
35f944d26f33fff3e59ab449c991b18260a5fa0b 08-Apr-2010 David 'Digit' Turner <digit@google.com> Perform auto-detection of host platform in build scripts.

This removes build/host-setup.sh and the generated file out/host/config.mk

Also: fix a bug that copied gdbserver into release projects, not debug ones.

Change-Id: Ie3641dadb6148b1a671534d9bbb5e587cd742845
62560ce2c27099e75ae964946663c252c5264218 02-Apr-2010 David 'Digit' Turner <digit@google.com> Remove obsolete script from NDK build process.

After this change, we no longer require running a shell script
during the build process. This makes us less dependent on Cygwin
and is a small step towards integrating the NDK into the SDK properly.

Change-Id: I62d7e200b47c8138abb39aaf9eb0f52d3f124bdf
5bc892834ff140ef11625fdf7602d09e229f73dc 09-Feb-2010 David 'Digit' Turner <digit@google.com> Add NEON support to the NDK build system + docs

You can now define LOCAL_ARM_NEON to 'true' in your Android.mk
to indicate that a whole module must be compiled with NEON support.

Alternatively, use the .neon suffix when listing source files in
LOCAL_SRC_FILES to indicate that they should be built with NEON
support. E.g.:

LOCAL_SRC_FILES := foo.c.neon bar.c zoo.c.arm.neon

Note that .arm.neon is supported, but .neon.arm is NOT.

Also added documentation in docs/CPU-ARM-NEON.TXT

Another patch will provide one or more sample applications
to demonstrate all of this.
654c27f00dbcbbb06c57c5d10a4bbb76695f21b4 13-Jan-2010 The Android Open Source Project <initial-contribution@android.com> android-2.1_r1 snapshot
cc049d5a779a6d64ba1dcd29a1ff031ad4891d47 19-Nov-2009 David 'Digit' Turner <digit@google.com> Add support for armeabi-v7a to the NDK.

This patch modifies the NDK build scripts to support the 'armeabi-v7a' ABI.
(For the record, it corresponds to Thumb-2 + FPU support, to speed up native
code on certain devices like the Droid).

To build for this ABI, the Application.mk file should use a line like:

APP_ABI := armeabi-v7a

It is also possible to build for both 'armeabi' and 'armeabi-v7a' by using:

APP_ABI := armeabi armeabi-v7a

This will result in the generation of two distinct shared libraries that both
will be copied to the final application package.

This is dependent on having GCC 4.4.0 prebuilt binaries under
build/prebuilt/<host>/arm-eabi-4.4.0, since gcc 4.2.1 does not support
this new ABI.

Note that this also changes the NDK to use gcc 4.4.0 by default, unless
the user defines NDK_TOOLCHAIN to 'arm-eabi-4.2.1' in its environment to
switch back to the previous one.
25f47bc03dbe536d2fb4a231316a38a2d0a8ee59 29-Jul-2009 David 'Digit' Turner <digit@google.com> Look for Android.mk in $(APP_PROJECT_PATH)/jni by default.

This gets rid of the 'sources' directory and allows all sources
of a given Android application to be in the same directory tree
without using a symlink trick.

Note that apps/<name>/Application.mk is still required though.
A later release of the NDK will get rid of it too, but the change
is too drastic for the upcoming release.

The change moves various source files from sources into their
app/<name>/project/jni directory as well.

The whole documentation is updated to reflect the change.
5815d77ccd68a5f6f8f7d6f4fa5dfbd05828d33f 29-Jul-2009 David 'Digit' Turner <digit@google.com> Add android-4 sysroot and use project's default.properties to get the right target.

Note that for now, android-4 contains the same things than android-3.
Another patch will add OpenGL ES headers and libraries to it.
61697d20c6e38ce007db1243aebf0a89836c440e 27-Jul-2009 David 'Digit' Turner <digit@google.com> Fix LOCAL_CFLAGS/CPPFLAGS handling to match full Android build system.

Also improve BUILD_SYSTEM directory detection logic in build/core/main.mk
2ab9c51a581188f1986d9ab578c513665a84460a 24-Jul-2009 David 'Digit' Turner <digit@google.com> Handle LOCAL_CPPFLAGS/CFLAGS/CXXFLAGS as claimed by the documentation.

The previous code did only use LOCAL_CFLAGS for both C and C++ sources.
4bfbac10e5411efca892417e6b6b30842c215dc0 20-Jul-2009 David 'Digit' Turner <digit@google.com> Fix compilation of assembly files (e.g. foo.S), by removing a typo.
f4532bc743fbfd4c5c60ebdd0f435006a100fc19 29-Jun-2009 David 'Digit' Turner <digit@google.com> Add support for LOCAL_C_INCLUDES in Android.mk, to better match the Android build system.
f5107032a58fc88cea9a2bb1211b1f7d9e9eeccb 29-Jun-2009 David 'Digit' Turner <digit@google.com> Fix several typos in the NDK build system that caused quite a few bugs:

- generate thumb code by default (type forced ARM generation)

- make the generation of unoptimized binaries with APP_OPTIM := debug actually work
(the -O0 -g flags were placed before the -Os -mthumb flags for thumb binaries)

- factor common code from build-executable/shared-library/static-library into build-binary.mk
and install-binary.mk

- properly add a -L$(SYSROOT)/usr/lib line to make LOCAL_LDLIBS := -lz work as advertized
(in build-binary.mk)

- add a few missing variables from clear-vars.mk
ce42f422169554ab5f646b9b3491ad9d632605e1 20-May-2009 David 'Digit' Turner <digit@google.com> This fixes the build to always define the ANDROID macro, and remove an empty -I from the compiler options.

The latter had the effect of removing the benefit of optimization settings, i.e. a typical compiler
command would look like:

<toolchain-compiler> .... -Isources/<module-path> -I -O2 -g

The "-I -O2" was interpreted literally as "search in '-O2' directory, and the optimization was
never set to 2 (or 0 in case of debug mode).
31d9dac441e28836a4fe6b2c052da6e35780c25d 19-May-2009 David 'Digit' Turner <digit@google.com> Fix typo which prevented APP_CFLAGS, APP_CXXFLAGS and others to work properly in the NDK build system.
48ef1859ef0bb25547e5aceeedb9b175c6193bc5 07-May-2009 David 'Digit' Turner <digit@google.com> Initial import of new NDK into donut tree