History log of /ndk/build/tools/prebuilt-common.sh
Revision Date Author Comments
0ff95f4b0c576971f5079c9976e1f98f629aca6d 07-Aug-2013 Ray Donnelly <mingw.android@gmail.com> Fix --ldflags param passed to gen-toolchain-wrapper.sh

.. in build/tools/prebuilt-common.sh, --ldflags is passed
without the $ in-front of HOST_LDFLAGS so that ends up as
the first parameter the wrapper passes to the real ld.
92f8a188221f677a9b4fb84bc25244c90b534665 25-Jul-2013 Pavel Chupin <pavel.v.chupin@intel.com> Update gen-platforms.sh to be able to generate multilib crtfiles/libs

Run with -arch=x86_64 will produce lib, lib64, and libx32 dirs which are
expected for multilib toolchain build.

Crtfiles update is required:
https://android-review.googlesource.com/62598

Change-Id: If0b65a269c1d22fa039d042cf07d930aaeb7f80a
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
8475232a287eb019f55a06eaddd519ed1f4c1ae3 16-Jul-2013 Pavel Chupin <pavel.v.chupin@intel.com> Fix x86 multi-target gcc build with 32-bit host

It enables 32-bit host compiler build which is able to generate
x86/x86_64/x32 code with -m32/-m64/-mx32 accordingly.

Change-Id: Ia50d10d134078ed9eddea279a50f2affed438922
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2798655eb091adf04c7e09f57184b69056624a1c 21-Jun-2013 Pavel Chupin <pavel.v.chupin@intel.com> Enable x86_64 target in common scripts and related misc fixes

dev-defaults.sh:

* Handle x86_64 target name.

prebuilt-common.sh:

* Enforce x86_64 host for x86_64 target.

build-host-gcc.sh:

* Setup gold as default linker.
* Enable libgomp for x86.
* Add special case to use bfd linker for x86_64-4.7.
* Remove mutually exclusive -O2 -Os at the same line.
* -fomit-frame-pointer is default at -O1 and above.
* Cleanup x86/x86_64 flags in build-host-gcc.sh. All flags which makes
sense here are passed with configure options. Don't need this full set.
* Disable libsanitizer for 4.8 where it appears, it fails on build.

dev-rebuild-ndk.sh:

* Remove duplicated register_try64 call.
* Replace archs list hardcode with variable.

Change-Id: Iad6607e05ca7c3d8abed73e0b51c73d25e2a0e0a
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
bd7544d2c67817fc565e89529a56bae3cc063622 10-Jun-2013 David 'Digit' Turner <digit@android.com> Move ndk-common.sh to build/tools/

It doesn't make sense to put it under build/core/ anymore.

Change-Id: I3a63ecabd15d4c34c2ba3800b95246f5eeb6a6f3
5c982c5a68f715a60a3589d1e1f69c526148356d 22-May-2013 Pavel Chupin <pavel.v.chupin@intel.com> Enable x86_64-* toolchains build in build-gcc.sh script

Enabling x86_64-4.7 and x86_64-4.8 as the targets.

These patches are required to have successful builds:
https://android-review.googlesource.com/59146
https://android-review.googlesource.com/59157

Note that in general platforms are required to have successful builds,
crt* files in particular. But... this patch disables a few gcc libs
which really require platforms, and others don't need them in fact. We
don't have x86_64 platforms at this moment. To have successful build one
can create temporary symlinks android-[9,14]/arch-x86_64 to
android-[9,14]/arch-x86 and run gen-platforms.sh --arch=x86_64 prior to
running build-gcc.sh. This can be used as temporary workaround until we
have real x86_64/x32 platforms in place.

See also https://android-review.googlesource.com/#/c/57220 for the same
change in build-host-gcc.sh

Change-Id: If2473252ed251f37235d77d7602e60b7b4a46fd0
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
3874f073abc9098ec95721d64824027fc4a3b462 21-May-2013 Lai Wei-Chih <Robert.Lai@mediatek.com> Build compiler-rt.

Need https://android-review.googlesource.com/#/c/54645/

Change-Id: If128de05f80f6f859dbd2327162b6360e727785b
b662e86e1550c29e870b82ab08c155cc6e1f34e8 16-May-2013 Lai Wei-Chih <Robert.Lai@mediatek.com> Generate shared libraries for plugin header.

Also add helper function 'arch_in_unknown_archs' to
determine whether given arch is unknown.

Change-Id: Ia51923bca6015aef38eadd69a0b58905518db863
7801cdebd6d91deb6c8ab1c457d22f9223d430cd 07-May-2013 Ray Donnelly <mingw.android@gmail.com> Add -D__USE_MINGW_ANSI_STDIO=1 for MinGW-w64 GCC build
Fix usage of ABI_CONFIGURE_BUILD in build-host-sed.sh
Add usage of ABI_CONFIGURE_BUILD in build-host-make.sh
to fix configure error.
4a25e76b4654c937a5aac548720d1a9d28172f0a 09-Apr-2013 Andrew Hsieh <andrewhsieh@google.com> Experimental aarch64 build support

Change-Id: I66e4bde02ed0db75afd96475d53852e79d6e6df4
e627a6145b678c273ed63de90097cd1b79708d2c 22-Mar-2013 Andrew Hsieh <andrewhsieh@google.com> Warn if shell isn't bash

We try to avoid bashism in build scripts but the claim
isn't rigorously validated on regular basis. Warn
the possiblity that setting shell to bash (eg. from
dash in Ubuntu) might solve weird build problems.

Change-Id: I67790b3a632dd12c5e5ccd78d1ffe572679dd609
632c4678596aa3416764a8d8ec3242ca378e8a29 13-Mar-2013 Lai Wei-Chih <Robert.Lai@mediatek.com> Support plugin in platforms.

Change-Id: I5480f8bf6883de3e685fb8293335f2200b49c834
0269f62fb52a4c3434296a37df00cdc180baac89 12-Mar-2013 Lai Wei-Chih <Robert.Lai@mediatek.com> Support rebuilding stlport/gabi++ libraries with clang.

Pass --llvm-version=<ver> to build_stlport.sh/build_gabi++.sh to enable.
Note that the default toolchain is still gcc.

Change-Id: Ibab76c443137b71aa215ce3a740ff77d2b760dcc
3b28972d8a5a108579496233266fccd69c9d2fe5 17-Jan-2013 Andrew Hsieh <andrewhsieh@google.com> Fix canadian build

1. Rename functions *_mingw_* to *_canadian_* to cover new
switch --darwin which define DARWIN=yes and expect toolchain
prefix at ${DARWIN_TOOLCHAIN}-
2. Add new flags CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD
for "build". See https://android-review.googlesource.com/#/c/50032
and https://android-review.googlesource.com/#/c/50121
Now we can export LDFLAGS as well.
3. Add NATIVE_CC for awk which needs to run "maketab"
4. "Clean up" in build-ndk-stack.sh
5. Fix make-3.81 and sed-4.2.1 configure $CPP to take $CFLAGS as well
6. make-release.sh and rebuild-all-prebuilt.sh build darwin-x86 too
if ${DARWIN_TOOLCHAIN}-gcc is found

Change-Id: If0d1452990b705e0d62b9e8c6de8911296158533
67d1b33e49eac68db9e8f0d2553d181851aa2d8b 06-Jan-2013 Andrew Hsieh <andrewhsieh@google.com> Move i586-mingw32msvc- ahead of i686-w64-mingw32- in search order

awk.exe generated by i686-w64-mingw32-gcc crashes in WINE 1.2.
It runs fine in real machine. But for testability 32-bit
toolchain is better compiled by i586-mingw32msvc-gcc

Change-Id: Ibdba2ae3ac7416c2c05719a31a960d90dfd78a8f
d0b797fbf45f3cec923b22f93b61e86a1f867844 02-Jan-2013 Andrew Hsieh <andrewhsieh@google.com> Misc fixes for 64-bit Windows toolchain

Change-Id: Idaf7d93dfd031e40b7b005805e71688f079e94ac
3574653b120d5a973f2c2c2a09f77639158c02d3 26-Dec-2012 Andrew Hsieh <andrewhsieh@google.com> Enable threading support for MIPS

Change-Id: I0309db487a56ea9fe4afbc6fa4c7648e63077d43
c8078f93e69b23919ae82b070a95962470c68c34 25-Dec-2012 Andrew Hsieh <andrewhsieh@google.com> Use HOST_CFLAGS more consistently

HOST_CFLAGS which may contain MacOSX SDK and flags is now
used by all build-host*.sh

Also fixed:
1. Compile GCC with -O2 !!
2. Bump up SDK to 10.6 (the min version of SDK/NDK for a while)
3. run llvm and polly test but don't fail when ont all test pass
4. Remove link to polly
5. No need to show "Using C compiler" "Using C++ compiler" for --mingw
which uses wrapper

Change-Id: I25298529d40b6a09530aa35aa2ec2cb3223857e3
cfad5b32b5806b04977893bbe20de5ce3e693a3e 30-Nov-2012 Ben Cheng <bccheng@google.com> Enable multilib for arm-eabi toolchains.

Change-Id: I46c7187f31aeecde5ad5b45bd91b52aa1bed5114
034f19d88fc067e6276af68b499b814689a13224 28-Nov-2012 Lai Wei-Chih <Robert.Lai@mediatek.com> Add missing arm-eabi-* in the error message.

Change-Id: I614a2f595e3653d00a41010f13b755b0e6461f25
db2796c58c16aab2ad159f154b64885e77addffb 20-Nov-2012 Andrew Hsieh <andrewhsieh@google.com> Use host prebuilt gcc to build MacOSX tools

1. Use prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1
to build MacOSX tools
2. Better way to detect bitness of compiler: similiar to the
config.guess in morden GCC
3. Add "-m64" when needed. Note that the prebuilt GCC generates
32-bit by default.
4. Drop 10.4 SDK

Change-Id: Ia69138b0b1eb442499f467171fd3f34fa93280a4
adf6ae3dd2bec8520f6bc7a995b48d4a682d6422 15-Nov-2012 Ben Cheng <bccheng@google.com> Add arm-eabi configuration target for kernel build.

Change-Id: I004ebed2187588995c588d976879bb9ba3e98a73
ef8df853bb5306773875d94f08162b9fea8db96e 13-Nov-2012 Andrew Hsieh <andrewhsieh@google.com> Use gcc-sdk wrapper for 64-bit legacy toolchain

Replace prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6
with prebuilts/tools/gcc-sdk otherwise "build-gcc.sh --try-64"
may fail in libbfd when "-m32" is passed to x86_64-linux-gcc
(which isn't built to accept -m32)

Also remove outdated comments

Change-Id: Iafc853d3a19ae003c43a1acf05e63d2dd2da2b1a
151e9ec1eb7544dac1750a2b48d508f2f185d006 18-Oct-2012 David 'Digit' Turner <digit@android.com> Ensure 64-bit host binaries are generated with the legacy toolchain.

This ensures that any 64-bit binary can run on older Linux
distributions than the one the host machine runs.

Change-Id: I20206b90e45c40d0f8b0a67a5bfe49289893dcf0
b61488846bc5e63ed02252ca0ccbee4beedd8cca 30-Aug-2012 Pavel Chupin <pavel.v.chupin@intel.com> Add i386-pc-linux-gnu- to the list of wrappers for BUILD toolchain

Clang build with mingw wants *-pc* on configure. Checked on Fedora 17.

Change-Id: Icfef86056e36d20c4fb51c341041ebe920b219a2
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
ed218f8bf0ca487f2e76230a20c5e856226ee4a3 27-Aug-2012 Andrew Hsieh <andrewhsieh@google.com> Add new functions log_n and dump_n

"echo -n" isn't supported in MacOSX.
Add new functions log_n and dump_n to use printf instead

Change-Id: Ie635edda5242e8dc13dd190132343af5750407de
9663333b0571152f648b4ce280de4ce9404ec5d5 23-Aug-2012 Andrew Hsieh <andrewhsieh@google.com> Fixed mingw build in make-release.sh

Fixed make-release.sh to not do windows build alone w/o also
build linux-x86.

Change-Id: I3783856a35ba446d563642581f31c0fc7334c34a
77c7cb6976c2c48b5dbc48030f19e31ae1e0c5ac 31-Jul-2012 Andrew Hsieh <andrewhsieh@google.com> Script build-gcc.sh builds gold as the default linker

Modify build-gcc.sh to build gold for X86/ARM on Linux, MaxOSX,
and Windows hosts, and set it as the default linker.

Bump up TOOLCHAIN_GIT_DATE to get fix in toolchain which allows
ld.gold to be built in Windows.

Put i586-mingw32msvc- in the last of mingw toolchain list,
because it may crash during ld.gold compilation

Change-Id: I779b734711693c8b4259919da9b4a442fe9c7cdd
1ed5aa1229fbf1baf3b22a12782e89c83a01043e 25-Jul-2012 Pavel Chupin <pavel.v.chupin@intel.com> Add more mingw gcc prefixes for Fedora17 host.

Change-Id: I2ad9622ee21d85f4aab896af46d445dbdaa94ca2
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
0136e5405c99a3fbe1be109ee8ff186475c0d99a 03-Jul-2012 Andrew Hsieh <andrewhsieh@google.com> Change default GCC to 4.6; Build separate gnu-libstdc++ for GCC 4.4.3 and GCC 4.6

All target prebuilt will be built with GCC 4.6.

GNU libstdc++ is GCC dependent. GCC 4.6 seems to take header/libraries
built by GCC 4.4.3, but the reverse isnĘžt true. With this CL GCC will
now use its own version of libstdc++.

make-standalone-toolchain by default install GCC 4.6. Use --toolchain to
select GCC 4.4.3.

Change-Id: I2f4042501989fbfce94a521e6c24e1102d95a3aa
6807ab93bc6bc50416b0055b4a0b67cfd54c231f 06-May-2012 David 'Digit' Turner <digit@google.com> build-host-gcc.sh: New script to rebuild toolchain.

This patch adds build-host-gcc.sh, a new script that can rebuild
our GCC-based toolchain from scratch, without using the AOSP
toolchain/build.git scripts.

NOTE: The script does *not* rebuild GDB at all (a future patch will
provide build-host-gdb.sh to do so).

The script is capable of building *several* toolchains at once,
minimizing what needs to be done to speed up the whole process.
For example, here's how to rebuild the linux-x86 and windows
toolchains for both gcc 4.4.3 and gcc 4.4.6 on all of arm,x86 and mips:

build/tools/build-host-gcc.sh --toolchain-src-dir=/path/to/toolchain/src \
--systems=linux-x86,windows \
arm-linux-androideabi-4.4.3 \
arm-linux-androideabi-4.6 \
x86-4.4.3 \
x86-4.6 \
mipsel-linux-android-4.4.3 \
mipsel-linux-android-4.6

This operations takes 31 minutes on a 16-core 2.4 GHz z600, not bad
for something that generates 12 different toolchains.

Define NDK_CCACHE=ccache in your environment to speed-up rebuilds.
On my machine, the above command takes above

+ The script will build for the host system by default. This means
linux-x86_64 on 64-bit Ubuntu 10.10, for example.

This script has been tested to build the following toolchains
succesfully:

arm-linux-androideabi-4.4.3
arm-linux-androideabi-4.6
x86-4.4.3
x86-4.6
mipsel-linux-android-4.4.3
mipsel-linux-android-4.6

For the following host systems:

linux-x86
linux-x86_64
windows (see note below)
windows-x86_64
darwin-x86
darwin-x86_64

Regarding windows, the build succeeds with the i586-mingw32msvc-gcc
cross-toolchain installed on Linux, and with x86_64-w64-mingw32 which
can be rebuilt from sources with build-mingw64-toolchain.sh

Change-Id: I00f5d16d8db729e7efdf0e138888f761936f3c4d
bf3f7295a6d9cb0a09dd8d950134abe5fa271ac9 05-Jun-2012 Pavel Chupin <pavel.v.chupin@intel.com> Fix windows cross NDK rebuild with mingw

Fix cross toolchain wrappers generation routine and add corresponding
calls per each tool. Tested on Linux Fedora with:
./build/tools/dev-rebuild-ndk.sh

Change-Id: Ib88c59d0b37d089e79f0dca76394e01a431d1e60
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
f3bba2e7a5623552aa505d55bdd198cab031e2bc 02-May-2012 Pavel Chupin <pavel.v.chupin@intel.com> Add convert_arch_to_abi and fix STL runtimes builds

Build only abis targetted by corresponding arch, otherwise one arch
build will require another arch platform.

Change-Id: I102a8a1d00c0557ebcd99f651ef03ca04c555562
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
0f38b5404153c1fc0116db3159289f48aba9f62e 17-May-2012 Andrew Hsieh <andrewhsieh@google.com> Update toolchain patches; Change GDBSERVER_HOST

Update patches to better fix for "ld --gc-sections" issue.

07e1f1545d1f8f81a67ce17256f96df8ab7f70e3
2023b793f050f20fe8fbed6270994f99ca1fef38

Also, changed GDBSERVER_HOST to *-linux-android.

Change-Id: Ib47923c142672fa66d83806dd608e767634020f8
61c1722b71ed63f0a3098610459459a51ca041b8 17-May-2012 Chao-Ying Fu <fu@mips.com> Remove mipself.x, mipself.xsc, and MIPS linker commands, since binutils 2.21
has modified linker scripts.
Please check https://android-review.googlesource.com/#/c/34960/ .

Change-Id: I8b74bd76f2b80e1673d43ddb85740f35a037d4c1
fccac5708744076f26aaf708844c531601b0c56e 09-May-2012 Andrew Hsieh <andrewhsieh@google.com> Rename x86 toolchain prefix from i686-android-linux- to i686-linux-android-

Requested by Intel.
Various configure scripts check linux-android for Android specific features.
ARM and MIPS toolchain alrady follow this convension.

Related CL: https://android-review.googlesource.com/#/c/36450/
Depends on: https://android-review.googlesource.com/#/c/36421/

Change-Id: Icd5f5eab2a97495ef1e53eeb37af48f062a9eb33
8db29a81de9ca8d047884a038364f96530f88359 20-Apr-2012 David 'Digit' Turner <digit@google.com> Fix typo that prevent building mips target prebuilts.

Due to a typo, building mips prebuilts would fail if NDK
is not defined in your environment.

Change-Id: Id4eda46e256bf375915aeef3ec1009c9c6ae6443
248296a021718020905a736f9b3c7bc24a830139 20-Apr-2012 David 'Digit' Turner <digit@google.com> Fix typo that prevent building mips target prebuilts.

Due to a typo, building mips prebuilts would fail if NDK
is not defined in your environment.

Change-Id: Id4eda46e256bf375915aeef3ec1009c9c6ae6443
7d114f674cef06310af1661595437a77bbd40367 09-Apr-2012 Andrew Hsieh <andrewhsieh@google.com> Reference to correct prebuilt toolchain location

Change from prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.4.3
to prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.4.3.
NOTE that the 4.4.3 version doesn't exist in AOSP.

Change-Id: I690b1db3a99a92e7b071ca12cfa521cf23f95a2a
49472609babc8e7b998d9314d4040f234a2a3cb2 05-Apr-2012 Chao-Ying Fu <fu@mips.com> Change toolchain name from mips-linux-android to mipsel-linux-android,
because the target triplet requires el for MIPS little-endian targets.

Change-Id: I1ff6b888c2d7e2517ce00979dfa3719616d13d71
4208729705bce3cd57b29195672776b0fe072772 04-Apr-2012 Andrew Hsieh <andrewhsieh@google.com> Fixed typo: darwin_x86_64 -> darwin-x86_64

In get_prebuilt_host_tag, darwin-x86_64 is translated into darwin-x86.

Change-Id: Ia113e45831685d0d57d85df24edeac846ca287a6
097812d190ebd3539c82c9c2b24161ae5e75cbb8 30-Mar-2012 Chao-Ying Fu <fu@mips.com> [MIPS] Support to ndk scripts to build MIPS NDK

Change-Id: I36e85a57d409d3f56c37737713bbeb9953b24eaa
0fa45c47b867a2b94ac63316ada0337546e4beb8 22-Feb-2012 David 'Digit' Turner <digit@google.com> build-gcc.sh: Fix Windows canadian-cross build for binutils 2.21

For some exotic reason, binutils 2.21 will fail to build properly
in canadian-cross configuration (i.e. generating ARM-targetting
Windows toolchain binaries on Linux)

Experimentation showed that this was due to the fact that CC and
CXX were defined in the environment at the wrong time. To solve this
we need to unset these variables and instead rely on a host-specific
toolchain named 'i586-pc-mingw32msvc-gcc'.

Note that this is different from 'i586-mingw32msvc-gcc' which is
the name of the 'mingw32' toolchain installed on Debian/Ubuntu.

To solve this problem, and still be able to build binutils 2.19,
we generate a wrapper toolchain with the right name.

This also means we can't use ccache when using --mingw to build
the intermediate host cross-compiler during the canadian build
(i.e. the one that is used to generate the ARM binaries like
libgcc.a during the build).

Change-Id: Ia75b6b651762e5d262635c6832ef4df827539fb2
b80ca3129550f14afb7a22429318f12737ab1f92 10-Jan-2012 Jean-Baptiste Queru <jbq@google.com> Reference new location of SDK toolchain

Change-Id: I0089c2ea5cc19bcc20fe80f0bc547b7ddaf71629
3da8f16cb524b943d2a0896ec7e14b2eaf98c8be 15-Dec-2011 David 'Digit' Turner <digit@google.com> Fix the armeabi-v7a gnu libstdc++ library

This patch ensures that the content of
sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a
really contains armeabi-v7a binaries, instead of
armeabi ones.

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

Change-Id: I729d6504641f9c481901bc6ad017add56be9dbf5
66850386d842e890ae22c5f220a2a24a167602cd 02-Dec-2011 David 'Digit' Turner <digit@google.com> Fix standalone toolchain C++ linking issue.

Gets rid of a regression introduced with NDK r7

This patches gets rid of libstdc++.so in the standalone
toolchain installation, because when used at link time,
it generated executables and shared libraries that could
not be properly loaded by the dynamic linker.

Instead, one has to link with -lgnustl_shared now to be
able to use the shared version of the GNU STL with the
standalone toolchain. You can still use -lstdc++ but this
will always use the static version of the library, just
as before NDK r7.

+ fix tests/run-standalone-tests.sh

Change-Id: Ib992ce6f5a97bbd02cc318748636dca766b80857
ec2b8ddacdadf4c04325dfd0a4135566ec29a8ef 27-Oct-2011 David 'Digit' Turner <digit@google.com> Fix the use of $@ in all shell scripts

This patch allows all our development scripts, as well as ndk-gdb
to work well when parameters containing spaces are used.

The $@ shell variable is very special because it will expand
differently if inside a quoted string. What this means is that,
while $@ normally corresponds to the list of all parameters to
a function or script, we have:

$@ -> expands to a single string
"$@" -> expands to a series of strings

This is important when using them as parameters to other commands
for example consider:

# Simple function to dump all parameters, one per line.
dump () {
for ITEM; do
echo "$ITEM"
done
}

dump1 () { # this will always print a single line
dump $@
}

dump2 () { # this will print one line per item
dump "$@"
}

dump1 aaa bbb ccc # prints "aaa bbb ccc" on a single line
dump2 aaa bbb ccc # prints three lines: "aaa", "bbb" and "ccc"

Generally speaking, one should always use "$@" except in very rare cases
(e.g. when called from an eval command).

Change-Id: I87ec2a7b078cbe463f0ec0257ecad8fd38835b2e
612e5d967db47c99996511a9e78f7c29d2dbdc67 10-Nov-2011 Nick Kralevich <nnk@google.com> expand error messages.

Add information to the error messages to make it easier to
determine what went wrong when the scripts error out.

Change-Id: I6c30f35f408beabec3c375b28499552dddb3743e
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
1c663b4a2961e4c9bde69eb740327083bbc92ed8 14-Oct-2011 David 'Digit' Turner <digit@google.com> build-target-prebuilts.sh: new script

This patch adds a new script that can be used to rebuild
all target prebuilts at once. This assumes that you have run
build-host-toolchain.sh previously (and thus have all cross
toolchains installed in your NDK directory).

+ Add check_toolchain_src_dir in prebuilt-common.sh and modify
other scripts to use it.

+ Add missing --sysroot compiled flags in builder-funcs.sh

Change-Id: I75ee8d6dffb9fba3155b71a291b1f9240e02f76f
d9bb7ebc331f10c98f5c5513fc8d9e5daf12c6e6 13-Oct-2011 David 'Digit' Turner <digit@google.com> build-ndk-stack.sh: Fix the script

This makes the script work again. Also adds --package-dir
and --ndk-dir options to it.

Change-Id: Ib50d169dabdfc40a3875163e1517b8d6b3269447
fba82fbe071106eab571853953c5c4e37cb1c2bf 13-Oct-2011 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: Do not build libstdc++ with GCC

We disable the build of the GNU libstdc++ when building the
toolchain, because we are now able to do that with the new
build-gnu-libstdc++.sh script.

Change-Id: Ibe97cd59eef136f15da61d767ecff8d1f1497590
13b5f454053aa62ea4cda3c5aa0fb80cfca82dad 10-Oct-2011 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: minor refinements

+ Make some messages "log" instead of "dump"
+ Add the ability to specify host system as parameter to many functions
+ Define HOST_TAG32 as the 32-bit variant of HOST_TAG

Change-Id: Id0bfaf48c1599be78a4f9f7441c3f48568867d4f
b0d90531b30c42891feaa4860e21ed43af63c93a 10-Oct-2011 David 'Digit' Turner <digit@google.com> build/tools/dev-defaults.sh: new script

This patch moves the definitions of all defaults to dev-defaults.
This should make it easier in the future to upgrade the toolchains
or target binaries.

Change-Id: I140b51c5b5116d37d16e628120f8f58974252de4
251da5e27a332d0d67f6db67c6caa3747a79b099 03-Oct-2011 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: refinements

Change-Id: I26e43eef14ced900fade15058bd3d95b4fa3e369
2397ae759e7f575437625c5d905cba3eafacb42c 07-Oct-2011 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: add register_jobs_option

Change-Id: Ibed2026c0ff80041a4d024b7b15dc2c70240dc27
0528f4d870022e4c3ee4e32714a7ef88908e310f 01-Oct-2011 David 'Digit' Turner <digit@google.com> dev-platform-imports.sh: new development script

This patch introduces the dev-platform-imports.sh script.
Its role is import system headers and libraries from a fresh
Android platform build and use them to populate a special
"import directory" (e.g. /tmp/ndk-$USER/platforms-import/)

The import directory will contain only headers and symbols
file. For each system shared library, two symbol files will
be generated:

- $DST/android-$PLATFORM/arch-$ARCH/symbols/$LIBNAME.functions.txt
- $DST/android-$PLATFORM/arch-$ARCH/symbols/$LIBNAME.variables.txt

The idea is that we're going to remove all prebuilt shared libraries
from development/ndk in a future patch. Instead, we will store the
symbols and generate shell libraries when calling build-platforms.sh

We need to keep the prebuilt static libraries though because they
are required to build the toolchain files (plus, some NDK developers
do use them to generate static executables).

+ add gen-system-symbols.sh which does the symbol file generation
plus the filtering of undesirable symbols in our system libraries.

Change-Id: I5882cd03a6e9ccc580a6577a6684ec40f6a1a739
49e5ea4fdd8960bbc856136c2aa7715292955c55 23-Sep-2011 David 'Digit' Turner <digit@google.com> Update GDB to version 7.1.x

Change-Id: Idabf82e3fa909a1000011fd621810a62857e453e
3da537977a724ebf88ba889f0d8177ea20f5c007 22-Sep-2011 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: Distinguish host and target builds

This patch modifies the helper functions inside prebuilt-common.sh
to distinguish between host and target builds more easily.

A target build is used to build target Android binaries, while a host
one is used to build binaries that will run on the host machine, i.e.
invoked by the NDK build script.

We will use host builds to generate the Windows helper binaries that
the NDK depends on (sed, awk, make, etc...) in future patches.

Change-Id: Ifbc2a112ee08fa42c9987ee26fee4539476e91a4
32849be716b35b437d1c338e43450af10b9fa9b1 22-Sep-2011 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: allow inclusion from any script

This patch allows any script to source prebuilt-common.sh
properly. Before that, only patches in the same directory,
i.e. build/tools/, could source it without errors.

Note: To do that, the parent script must define NDK_BUILDTOOLS_PATH
to point to the build/tools/ directory. If the variable is not defined,
prebuilt-common.sh assumes that it is sources from build/tools/

Change-Id: If91360a0a10571f968049003c8f7192ad98c7f5c
9ac252a15c54d43654ebbc915c02a948716cf1cc 28-Jul-2011 David Turner <digit@android.com> prebuilt-common.sh: get_prebuilt_install_prefix

This patch adds a new function to prebuilt-common.sh that can
return the install location of prebuilt host binaries. It
currently is: $NDK/prebuilt/$HOST_TAG/

This will be used to store host binaries, like the Win32 versions
of GNU Make, Awk, Sed and others.

Change-Id: I8a543b4f4d6b728e13046f3759a5b8584cea6001
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
533591775b30ed76d9f1b1aaa12f9b330e1d0318 21-Sep-2011 David 'Digit' Turner <digit@google.com> Add NDK_CCACHE support to GCC build

This patch allows host rebuild scripts to use NDK_CCACHE when
it is defined.

Unfortunately, this doesn't speed build-gcc.sh tremendously on
my machine, because most of the build time is done with the second-phase
"xgcc" binary that is generated during the first phase. Still shaves off
20s out of 4m40s on my machine with -j32.

Improvements should definitely be better for other host binaries.

Change-Id: I7c0c8cfcab9600dc3317f1c9569602a457b88d57
c0bf90ae0f4f84875d0af5d7166b57deb77e57a3 28-Jun-2011 David 'Digit' Turner <digit@android.com> ndk-stack: Fixes + Documentation

This patch fixes the ndk-stack tool to properly work as advertized, and
adds a new documentation file (docs/NDK-STACK.html) to illustrate its usage.

+ Add build/tools/build-ndk-stack.sh to automatically rebuild the
host tool from sources (and from scratch).

+ Ensure that rebuild-all-prebuilt.sh invokes build-ndk-stack.sh
and places the resulting binary at the top of target NDK directory.

+ Ensure that package-release.sh places the prebuilt binaries into
the final packages.

+ Add a --host-only option to rebuild-all-prebuilt.sh to indicate
that you only want to rebuilt the host binaries (and none of the
target ones). The --darwin-ssh and --mingw options also imply
--host-only.

Change-Id: I5f26e83378c02bfd3b62fa76a7c50c5755104fa9
951491bfe4536a1cde79d7db4134ba81a9988bd9 25-Jun-2011 David 'Digit' Turner <digit@android.com> Fix build-stlport.sh

We fix the script used to rebuild the STLport prebuilt libraries.
Instead of requiring a valid NDK installation, we only need prebuilt toolchain
binaries and platforms files instead.

By default, the script now builds a temporary Makefile that contains all the
build instructions. This allows us to launch it with parallel jobs (see -j<num>
options). You can use the new --no-makefile flag to disable this and build all
files in sequence directly from the script.

+ Fix the --package-dir option.

Note that this also fixes rebuild-all-prebuilt.sh which uses build-stlport.sh

Change-Id: Icf64e700cc110d2b304f0372875aa7752cb0ad82
5558b35a157b458bb0bd2b144b740c7230ae2803 24-Jun-2011 David 'Digit' Turner <digit@android.com> dev-platform-expand.sh: new script

This script is used to expand platform files into a target directory.

Change-Id: I89ce9c9bb9501ad98dea067a55058bcb20862569
b9007524f8244c5a7083447ef0342388d4c39c02 03-Jun-2011 David 'Digit' Turner <digit@android.com> Remove arm-eabi-4.4.0 support

The arm-eabi-4.4.0 was deprecated a long time ago, now remove any support
for it from the NDK to simplify things.

Change-Id: I41e65539824673466a1fc4c22bbd0d42a49d1394
3592767ce5ca9431eea728370c99d97aadb0800e 03-Jun-2011 David 'Digit' Turner <digit@android.com> build-stlport.sh: make script error-proof.

This patch improves build-stlport.sh by making it check that it can
use a fully complete NDK installation to perform the STLport libraries
build. Before that, it was easy to call the script from an incomplete
NDK installation (e.g. from the ndk git repository itself without
having called build-platforms.sh or built the toolchain previously).

Also modify rebuild-all-prebuilt.sh to properly call build-platforms.sh
before building the STLport libraries. As a secondary effect, this fixes
the "rebuild-all-prebuilt.sh --arch=x86" case.

Note that this breaks the --darwin-ssh option, but this issue will be
addressed in a later patch. You can still run build-all-prebuilt.sh
directly on a Darwin machine to generate the binaries.

Change-Id: I257f8536d3d156bc82f862d7f57a45ec39ebc8fe
7a54bc8cb5965d2fa65ccbe722bb2f42e0bbb9b4 30-May-2011 David 'Digit' Turner <digit@android.com> Ensure all build scripts use /tmp/ndk-$USER/

This patch ensures that all the scripts used to rebuild the NDK
are putting stuff under /tmp/ndk-$USER. This allows several users
to use the same NDK installation in parallel.

More cleanup will soon follow.

Change-Id: Iec765e44c7f89c9fbf21c15bfd69fb88b1bc03b9
2be921d20fbd4ad20881a858b76defcc3c41d9a8 27-May-2011 David 'Digit' Turner <digit@android.com> dev-system-import.sh: Add --force option.

This adds a --force option to the dev-system-import.sh script
to force it to copy all built platform files to a single
android-$PLATFORM directory under development/ndk.

The idea is to use this as:

dev-system/import.sh --force --arch=x86 9

In order to sanitize the headers and library files for x86
support.

Also, ensure that gdbserver is linked statically with the android-9
platform libraries for both arm and x86 by default now (the result is
a static executable that will run on previous releases of the platform).

Change-Id: I316d6d62a786145773a14a4762dc057531928b75
1c60afab0086a6ad50d375723610c16688e9ae7c 24-May-2011 David 'Digit' Turner <digit@android.com> build-gcc.sh: Update default GMP and MPFR version numbers.

This updates the default GMP and MPFR version numbers used
when building the toolchain binaries. This really makes
arm-eabi-4.4.0 the special case now.

+ Add --gmp-version option.

Change-Id: I267fa108b5e799598ee53bb28674870a3f98f695
9e1eea22a2de2e6f8f1aae73a80b336723030091 14-Apr-2011 David 'Digit' Turner <digit@android.com> build-platforms.sh: Add --arch option.

This adds the --arch=<list> option to replace --abi=<list> (which is
still supported, but deprecated). The reason is simply that the script
expects a list of architectures, not ABI names.

Also, make the script accept comma-separated lists as well as
space-separated ones, this means that now the following are equivalent:

build-platforms.sh --abi='arm x86'
build-platforms.sh --abi='arm,x86'
build-platforms.sh --arch='arm x86'
build-platforms.sh --arch=arm,x86

The last form is the preferred format, because it makes it easier to
invoke the script with an architecture list from other scripts.

Change-Id: Iad3ccf79470b221e3fa56173f55b8db66687d53b
9c6351a1ad842ce2ce01ec0eb96448eef68639c3 27-Apr-2011 Mark D Horn <mark.d.horn@intel.com> Corrected x86 build flags for PIC

Updated the NDK build flags to be in-sync with the compile
and link flags used for the image and SDK builds.
Ensured PIC flag enabled for all x64 target objects.

Change-Id: I78563c04992d6d97414f77fca04275fbc2b13d29
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
721e3f4f6b6d6ee2f03c37c687a6ab987d7e03f7 07-Apr-2011 David 'Digit' Turner <digit@android.com> build-gcc.sh: Support building x86-4.4.3 with GNU libstdc++

This patch allows build-gcc.sh to properly generate an x86-4.4.3 toolchain
with a working GNU libstdc++. This is done by providing a few local toolchain
patches.

Change-Id: I4ba04ad595b8e6f4f874855c694b16f999806ca5
88f474c8665e80d758553b03bdce91b508a57a26 07-Apr-2011 David 'Digit' Turner <digit@android.com> Update toolchain sources git date.

This patch modifies the git revision date when downloading the
toolchain sources (through download-toolchain-sources.sh).

Unfortunately, the old date didn't include a patch crucial
for canadian-cross build support (i.e. building Windows binaries
on Linux).

Change-Id: I0d2aceaacf14ccbe9176dec9197e7b32930d4652
75416eef498a223f22f944c86a8a044755f7f791 10-Mar-2011 David 'Digit' Turner <digit@android.com> Update NDK toolchain sources to 2011-02-22

Changes the reference git date for the toolchain source download
script, and removes two local patches that are no longer needed
since they are now in android.git.kernel.org/toolchain/...

Change-Id: I75a660112db51edd4d511d7daa2faac0878a4b9a
6e579472330a0d03a5fa9957139cfe9a3ffc135a 31-Jan-2011 Bruce Beare <bruce.j.beare@intel.com> prebuilt-common: Allow versioning of GCC to be 4.4.x

Change-Id: I541348eab42ded028307910229f84e9f7b083548
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
f178bf583ba3e2cbce2effa50f8d7268a5b1a35d 31-Jan-2011 Bruce Beare <bruce.j.beare@intel.com> prebuilt-common: Update the PLATFORM and API target for x86

Change-Id: Ie4f7b35bd0342f76583d8c396633f2e5d33780a9
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
e26ba793cd1014a23514223ef6f6d0a06acdbe2e 25-Jan-2011 David 'Digit' Turner <digit@android.com> build-gcc.sh: Add --try-64 option

It is used to build a 64-bit toolchain on Linux.

Change-Id: I96d7d2d98aa8613f9fbb1c2b16fa5acda1769e34
e9db711d8b5dd1c816c782afd0b30fb245250418 05-Jan-2011 David 'Digit' Turner <digit@google.com> Generate 8.04-compatible Linux toolchain binaries whenever possible.

This patch forces our toolchain build script to look for our
i686-linux-glibc2.7-4.4.3 prebuilt toolchain, and use it, if found,
in order to generate Linux binaries that run on Ubuntu 8.04 and
higher.

+ document the 'asm' to '__asm__' change in development/ndk

Change-Id: I1f119439784fd8b5708e80f75f7c53b09ad8e1fa
ee9a8ad3302f67a22045700cd34a3b44d5aeb5ea 14-Dec-2010 David 'Digit' Turner <digit@google.com> Fix mingw build.

Change-Id: I38d3df244ca80033ba99eaf15b46af3600c4b9cf
b1b7c642b46447e0df78a08d51eb26a8808d7e3e 14-Dec-2010 David 'Digit' Turner <digit@google.com> Fix compiler bug (invalud thumb instructions for signed chars)

This change modifies the reference git date used when downloading the
toolchain sources in order to get the following fix which was submitted
on 2010-12-13:

https://review.source.android.com/#change,19474

+ Add a unit-test to check for the bad code generation
+ Slight reformating of docs/CHANGES.html

Change-Id: Iea9e6dc717e7a256743c276f00be6767151c2776
6f01017c0c85d0d19874b87ea4e973f051757c61 10-Dec-2010 David 'Digit' Turner <digit@google.com> Fix toolchain rebuild script for 32-bit toolchains.

This allows build-gcc.sh or rebuild-all-prebuilts.sh to work properly
when the host toolchain is 32-bits.

Change-Id: Ic11e52d197c6aea3772ff3485e980df346cfb2d5
818c32e1b7974301bd8a7390c9787c5ed749820c 08-Dec-2010 David 'Digit' Turner <digit@google.com> prebuilt-common.sh: Better 64-bit compiler detection.

This improves the detection of compilers that generate 64-bit
machine code by default, in order to enfore 32-bit generation,
as required by the NDK toolchain binaries.

This should allow the toolchain to build properly on Snow Leopard.

Change-Id: I79ba8e844cd6ed3794dc7eb2f656e9be47241378
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
1df30003913d8e1dbc2de769a131567272d9d5ec 30-Nov-2010 David 'Digit' Turner <digit@google.com> Disable gold linker build.

The ARM gold linker has too many issues at the moment:
- Does not build on Mingw cross-builds
- Crashes with SIGBUS on darwin-x86
- On linux-x86, generates weird binaries that 'strip' complains about

Change-Id: I328ed19d137b75a268e247a014ba0ac27df409f3
728259794fa6d8f81d211124dfc8935f6314d56d 30-Nov-2010 David 'Digit' Turner <digit@google.com> Package and use libsupc++ prebuilt tarballs.

Since the mingw build cannot generate valid libsupc++ binaries
we need to package them during the Linux build and reuse the
new tarballs when packaging new releases.

Change-Id: I6a84d2ba7737cdc3e59cce2ff65f4b477abae19a
da25f0b61422ac8d908778bf2bca5406919afe6a 30-Nov-2010 David 'Digit' Turner <digit@google.com> Generate GNU libstdc++ static library binaries and tarballs.

These are placed under sources/cxx-stl/gnu-libstdc++
Another patch will add APP_STL support for them.

Change-Id: I63bb6d2bd25eefb474d21b18979e9b72024ee613
8b1664f43e66813a489d32ee072b58bd62c6acf9 26-Nov-2010 David 'Digit' Turner <digit@google.com> Fix handling of mingw toolchain builds.

Rather than forcing all mingw builds to use -j1, start in parallel
and only retry with -j1 if an error is detected. This seems to be
enough to build the toolchain, and doesn't penalize machines where
the build does succeed in parallel.

+ Disable gold linker for mingw builds: it doesn't compile at all
for now!

Change-Id: I53041f8b98d970b80e42f5919014c370d62ad7c5
e1ffa3fd89266e13c887a8d25f6f7eb4abfa0ec2 25-Nov-2010 David 'Digit' Turner <digit@google.com> Proper thread support for gdbserver.

WARNING: DEEP MAGIC AHEAD!

This patch allows the gdbserver binary that we build for the
NDK to properly support threads on Android 2.3 and higher.

For previous platforms, the binary will still be limited to
to only set breakpoints on the main thread (just like with
previous NDK releases).

The root cause of the problem is a platform bug that was only
fixed in Android 2.3, so there is little we can do in the NDK
to fix it (apart from hoping the fix is back-ported properly).

Now the hairy details:

- The patch provides sources for libthread_db.a which will
get recompiled explicitely by build-gdbserver.sh.

Note that libthread_db has no real stable ABI/API so we
provide GDB version-specific implementations here
(see sources/android/libthread_db/gdb-<version>)

- Both libthread_db.c versions have been modified to probe
the system at runtime and detect if the platform bug is in
effect.

If it is, the library acts as if there are no threads in the
process. The reason for this behaviour (i.e. instead of
patching the gdbserver sources) is explained in comments
inside libthread_db.c.

+ Local patches to make signal handling and libthread_db support work
properly with gdbserver 6.6.

Change-Id: Idf3d71422d337f4384f51ca45cafe7f71fd8559d
b08f5a995557b9b7dfb24e604d28d2dcea3a786d 26-Nov-2010 David 'Digit' Turner <digit@google.com> download-toolchain-sources.sh: Add --git-date

The option allows you to specify a date for the toolchain
sources that are checked-out from android.git.kernel.org.

The default date is set in prebuilt-common.sh and allows us
to ensure that the patches we have under build/tools/toolchain-patches
do apply correctly.

The plan is to modify the default date if needed when updating the
toolchain patches.

Change-Id: I27b94390c19e385d2232ab97f0be193e8a5a4c0d
72497cec671acb7f6d908e2e1485c548225f5feb 24-Nov-2010 David 'Digit' Turner <digit@google.com> Add C++ exceptions and RTTI support.

This enables C++ exceptions and RTTI support to the NDK
toolchain through a local patch.

C++ sources are still built with -fno-exceptions and -fno-rtti
by default for compatibility purpose, so use -fexceptions and/or
-frtti in your LOCAL_CPPFLAGS to enable these features.

You will also need to link against libsupc++.a directly with:

LOCAL_LDLIBS := -lsupc++

+ Add two device tests to check that the features work properly.

Change-Id: I41956a04997336d8135aaef291a1579267e0ad2a
f3500e47358be859bc15dc5e0bd1b6621a048540 23-Nov-2010 David 'Digit' Turner <digit@google.com> Add script to generate <android/api-level.h> headers

These headers are used to define the __ANDROID_API__ macro
which corresponds to the API level of a given sysroot. It
will be used in a later patch to adjust C++ system header
definitions.

Change-Id: I8e36ee34cb706c068526fc91660a5e59740eecfd
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
a0f307d9a1b8e0d5e2a8b4ea0a4126ef7fb3a29b 06-Oct-2010 David 'Digit' Turner <digit@google.com> Rework toolchain build scripts.

* 'make-release.sh' can now be used to rebuild
everything *from* scratch (ultra long).
Use the new 'package-release.sh' if you want the old behaviour.

* 'download-toolchain-sources.sh'will now apply patches
by default before packaging the sources into a tarball.
Use the --no-patch option to prevent this.

* Add missing patches for proper Canadian-cross build
and gdbserver thread support under build/tools/toolchain-patches

* Rework the way 'rebuild-all-prebuilts.sh' works

* Update docs/DEVELOPMENT.TXT to indicate how things work in
the new world order.

This change doesn't affect the NDK build system itself but simplifies
release package generation greatly.

Change-Id: I9a07fe1e64450b0d1329c4a9b47c22094cb29617
e11a9b58ffe6d0dd9c61b651e2ce39ef0601e186 24-Sep-2010 David 'Digit' Turner <digit@google.com> Reorder location of toolchains files.

build/toolchains/<name>/* --> toolchains/<name>/*
build/prebuilt/<system>/<name>/lib/gdbserver --> toolchains/<name>/prebuilt/gdbserver
build/prebuilt/<system>/<name>/ --> toolchains/<name>/prebuilt/<system>/

The main idea is to group all toolchain-related files under the same directory.

Change-Id: Idb41de49b5d81b6881ac4e0eea24506ff4a07f03
ea573da2c3f1a8379f4344d023035fdf795c768d 24-Jul-2010 David 'Digit' Turner <digit@google.com> Update toolchain to arm-linux-androideabi-4.4.3

You can still use the old one with NDK_TOOLCHAIN=arm-eabi-4.4.0
defined in your environment.

Removed support for arm-eabi-4.2.1

+ Add --mingw option to build/tools/build-gcc.sh

Change-Id: I03f6b7cb67b1110e5794da9c4e9b6b8d1e029bb9
6b5bc468b9be34c7dbd4531274bb1a2d55542731 30-Aug-2010 David 'Digit' Turner <digit@google.com> Fix build/tools/rebuild-all-prebuilt.sh to work with $NDK/platforms/...

This requires fixing the fix_sysroot() function in prebuilt-common.sh
Also remove CleanSpec.mk from final release package.

Change-Id: Ic05052e0246121679c508064d80dca15bd2442c7
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
24f3d9e99d26d478caf1f1c287bd95687e6cba64 01-Jun-2010 David 'Digit' Turner <digit@google.com> ndk/build/tools: fix improper mktemp usage

Change-Id: I592b025ebdf2181a80f5c7014fb40d3cdcd8e2ca
52a3c27f1384be5ade6404ca047d2428274c13b3 03-May-2010 David 'Digit' Turner <digit@google.com> Fix --package option processing in build/tools/download-toolchain-sources.sh

Also fix common option processing on OS X. Its 'expr' command works slightly differently from Linux.

Change-Id: I7d79b8cea1b14eb8f0efe67f5fb08db342bbbf84
f051ab722edb8c443e73dea83724e50f6c858970 16-Apr-2010 David 'Digit' Turner <digit@google.com> Rework toolchain binaries build scripts.

Remove build-toolchain.sh and now provide rebuild-all-prebuilts.sh

Change-Id: I558c95d1667d1283be9b3a075ad0565e05da0dc5