Index: build/config/compiler/BUILD.gn |
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn |
index b50a64c2595049a735f91314a33571e2c674ed1a..9739093b64a7a1cbe4e287783288c24e3db8af00 100644 |
--- a/build/config/compiler/BUILD.gn |
+++ b/build/config/compiler/BUILD.gn |
@@ -529,7 +529,7 @@ |
] |
} |
- # Android standard library setup. |
+ # Stlport setup. Android uses a different (smaller) version of the STL. |
if (is_android) { |
if (is_clang) { |
# Work around incompatibilities between bionic and clang headers. |
@@ -539,44 +539,55 @@ |
] |
} |
- defines += [ "__GNU_SOURCE=1" ] # Necessary for clone(). |
+ defines += [ |
+ "USE_STLPORT=1", |
+ "_STLP_USE_PTR_SPECIALIZATIONS=1", |
+ "__GNU_SOURCE=1", # Necessary for clone(). |
+ ] |
ldflags += [ |
"-Wl,--warn-shared-textrel", |
"-nostdlib", |
] |
- android_libcpp_root = "$android_ndk_root/sources/cxx-stl/llvm-libc++" |
- |
- 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), |
- ] |
- |
- lib_dirs += [ "$android_libcpp_root/libs/$android_app_abi" ] |
+ # NOTE: The stlport 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" |
+ |
+ cflags += [ "-isystem" + |
+ rebase_path("$android_stlport_root/stlport", root_build_dir) ] |
+ lib_dirs += [ "$android_stlport_root/libs/$android_app_abi" ] |
if (component_mode == "shared_library") { |
- android_libcpp_library = "c++_shared" |
+ libs += [ "stlport_shared" ] |
} else { |
- android_libcpp_library = "c++_static" |
+ libs += [ "stlport_static" ] |
+ } |
+ |
+ if (cpu_arch == "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", |
+ ] |
+ } 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), |
+ ] |
} |
libs += [ |
- "$android_libcpp_library", |
- "atomic", |
- |
- # 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), |
- "m", |
"c", |
"dl", |
+ "m", |
] |
} |
} |