| # Copyright 2017 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/sanitizers/sanitizers.gni") |
| |
| declare_args() { |
| # Use libc++ (buildtools/third_party/libc++ and |
| # buildtools/third_party/libc++abi) instead of stdlibc++ as standard |
| # library. |
| # Don't check in changes that set this to false for more platforms; doing so |
| # is not supported. |
| use_custom_libcxx = |
| is_msan || is_fuchsia || is_android || |
| (is_linux && |
| (!is_chromeos || default_toolchain != "//build/toolchain/cros:target")) |
| |
| # Use libc++ instead of stdlibc++ when using the host_cpu toolchain, even if |
| # use_custom_libcxx is false. This is useful for cross-compiles where a custom |
| # toolchain for the target_cpu has been set as the default toolchain, but |
| # use_custom_libcxx should still be true when building for the host. The |
| # expected usage is to set use_custom_libcxx=false and |
| # use_custom_libcxx_for_host=true in the passed in buildargs. |
| use_custom_libcxx_for_host = false |
| } |
| |
| use_custom_libcxx = |
| use_custom_libcxx || (use_custom_libcxx_for_host && current_cpu == host_cpu) |
| use_custom_libcxx = use_custom_libcxx && !is_nacl |
| |
| # libc++abi needs to be exported from executables to be picked up by shared |
| # libraries on certian instrumented builds. |
| export_libcxxabi_from_executables = |
| use_custom_libcxx && !is_component_build && (is_asan || is_ubsan_vptr) |
| |
| libcxx_prefix = "//buildtools/third_party/libc++/trunk" |
| libcxxabi_prefix = "//buildtools/third_party/libc++abi/trunk" |