Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Unified Diff: build/config/compiler/BUILD.gn

Issue 951983002: Reland "Enable libc++ on Android" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix clang+mesa Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/android/config.gni ('k') | net/base/net_util_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/compiler/BUILD.gn
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 95e09d93c3f1fae4ce2cfef7905828c07a9833b1..ad947050cc52f88c4b1ea2e465d326ba03d22364 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -462,10 +462,10 @@ config("compiler") {
ldflags += [
"-Wl,--no-undefined",
- # Don't allow visible symbols from libgcc or stlport to be
+ # Don't allow visible symbols from libgcc or libc++ to be
# re-exported.
"-Wl,--exclude-libs=libgcc.a",
- "-Wl,--exclude-libs=libstlport_static.a",
+ "-Wl,--exclude-libs=libc++_static.a",
# Don't allow visible symbols from libraries that contain
# assembly code with symbols that aren't hidden properly.
@@ -547,7 +547,7 @@ config("runtime_library") {
]
}
- # Stlport setup. Android uses a different (smaller) version of the STL.
+ # Android standard library setup.
if (is_android) {
if (is_clang) {
# Work around incompatibilities between bionic and clang headers.
@@ -557,11 +557,7 @@ config("runtime_library") {
]
}
- defines += [
- "USE_STLPORT=1",
- "_STLP_USE_PTR_SPECIALIZATIONS=1",
- "__GNU_SOURCE=1", # Necessary for clone().
- ]
+ defines += [ "__GNU_SOURCE=1" ] # Necessary for clone().
# TODO(jdduke) Re-enable on mips after resolving linking
# issues with libc++ (crbug.com/456380).
@@ -570,45 +566,48 @@ config("runtime_library") {
}
ldflags += [ "-nostdlib" ]
- # NOTE: The stlport header include paths below are specified in cflags
+ # NOTE: The libc++ header include paths below are specified in cflags
# rather than include_dirs because they need to come after include_dirs.
# Think of them like system headers, but don't use '-isystem' because the
# arm-linux-androideabi-4.4.3 toolchain (circa Gingerbread) will exhibit
# strange errors. The include ordering here is important; change with
# caution.
- android_stlport_root = "$android_ndk_root/sources/cxx-stl/stlport"
+ android_libcpp_root = "$android_ndk_root/sources/cxx-stl/llvm-libc++"
- cflags += [ "-isystem" +
- rebase_path("$android_stlport_root/stlport", root_build_dir) ]
- lib_dirs += [ "$android_stlport_root/libs/$android_app_abi" ]
+ cflags += [
+ "-isystem" +
+ rebase_path("$android_libcpp_root/libcxx/include", root_build_dir),
+ "-isystem" + rebase_path(
+ "$android_ndk_root/sources/cxx-stl/llvm-libc++abi/libcxxabi/include",
+ root_build_dir),
+ "-isystem" +
+ rebase_path("$android_ndk_root/sources/android/support/include",
+ root_build_dir),
+ ]
- if (component_mode == "shared_library") {
- libs += [ "stlport_shared" ]
- } else {
- libs += [ "stlport_static" ]
- }
+ lib_dirs += [ "$android_libcpp_root/libs/$android_app_abi" ]
- if (current_cpu == "mipsel") {
- libs += [
- # ld linker is used for mips Android, and ld does not accept library
- # absolute path prefixed by "-l"; Since libgcc does not exist in mips
- # sysroot the proper library will be linked.
- # TODO(gordanac): Remove once gold linker is used for mips Android.
- "gcc",
- ]
+ if (component_mode == "shared_library") {
+ android_libcpp_library = "c++_shared"
} else {
- libs += [
- # Manually link the libgcc.a that the cross compiler uses. This is
- # absolute because the linker will look inside the sysroot if it's not.
- rebase_path(android_libgcc_file),
- ]
+ android_libcpp_library = "c++_static"
}
libs += [
+ "$android_libcpp_library",
+
+ # Manually link the libgcc.a that the cross compiler uses. This is
+ # absolute because the linker will look inside the sysroot if it's not.
+ rebase_path(android_libgcc_file),
"c",
"dl",
"m",
]
+
+ # Clang with libc++ does not require an explicit atomic library reference.
+ if (!is_clang) {
+ libs += [ "atomic" ]
+ }
}
}
« no previous file with comments | « build/config/android/config.gni ('k') | net/base/net_util_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698