README.NDK
1 This is a copy of LLVM's libc++ project, slightly modified to build
2 with this NDK. It's currently *EXPERIMENTAL*.
3
4 Upstream: See 'upstream.config' file in this directory.
5 Patches: see patches.android/
6 Tracking: 36496
7
8 This is a version of LLVM's libc++ that was modified to be built
9 with GAbi++. At the moment, only linking a small test executable is
10 supported, and it will very likely crash as soon as you start it.
11
12 It also includes Android-specific support code, providing missing C
13 library functionality, under android/support. Most of the code there
14 consists in stubs waiting for a real implementation.
15
16 All patches are under patches.android/ to make it easier to update
17 the upstream revision of the library while working on this.
18
19 You need a recent NDK release, one which provides a version
20 of the GAbi++ C++ runtime that supports rtti _and_ exceptions.
21
22 Build instructions:
23
24 1/ Set NDK to the path of a recent Android NDK install path
25 (Use Android NDK r8e or above), e.g.:
26
27 NDK=$HOME/android/ndk-r8e
28
29 2/ From the top-level directory, do:
30
31 $NDK/ndk-build -C android/test
32
33 This is actually equivalent to:
34
35 cd android/test
36 $NDK/ndk-build
37
38 3/ To see build commands, use V=1, as in:
39
40 $NDK/ndk-build -C android/test V=1
41
42
43 Android support files:
44
45 android/support/include:
46 Android system header wrappers, to add missing declarations
47
48 android/support/src:
49 Put the implementation of the missing system functions here.
50
51 Android.mk:
52 Main build file for the library. This builds one static and
53 one shared version of the library.
54
55 If modifications are not obvious, read $NDK/docs/ANDROID-MK.html
56 for a description of the Android.mk format.
57
58 android/test/jni:
59 NDK build project for two test programs that link against the
60 static and shared versions of the library.
61
62 See the Android.mk and Application.mk files in this directory
63 if you want to add new test files.
64
65
66 Toolchain selection:
67 By default, ndk-build tries to build with GCC 4.6, however, experimental
68 versions of GCC 4.8 and Clang 3.4 are available with recent NDK releases.
69
70 Use the NDK_TOOLCHAIN_VERSION environment variable to switch to a
71 different one, valid examples:
72
73
74 export NDK_TOOLCHAIN_VERSION=4.6 # this is the default
75 $NDK/ndk-build -C android/test
76
77 # This is equivalent, but for GCC 4.8
78 $NDK/ndk-build -C android/test NDK_TOOLCHAIN_VERSION=4.8
79
80 # Also equivalent, but for Clang 3.4
81 NDK_TOOLCHAIN_VERSION=Clang3.4 $NDK/ndk-build -C android/test
82
83
84 Updating the sources to a newer revision:
85
86 You can use the tools/update-upstream.sh script to automatically try
87 to update to a more recent version of the upstream sources.
88
89 In case of success, this adds all relevant changes to the current git
90 index so you can review them before committing them.
91
92 In case of problem, try using the --verbose and --no-cleanup options
93 to see the details of the failure. This may require manually updating
94 the patch files.
95