dart-sdk/build/config/linux/BUILD.gn
Ryan Macnak ddc11f8084 [build] Build the standard c++ library from source.
This allows it to be instrumented by the sanitizers.

Enabled only for MSAN and for Android.

Don't pick up Flutter's including no_exceptions in the default config set.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/44312
Bug: https://github.com/dart-lang/sdk/issues/44377
Bug: https://github.com/dart-lang/sdk/issues/43075
Bug: https://github.com/dart-lang/sdk/issues/50248
Bug: https://github.com/dart-lang/sdk/issues/50271
Bug: https://github.com/dart-lang/sdk/issues/52441
Change-Id: If01704ff29569fba8f8181ed31d52faba8d8370f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/304824
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2023-05-22 23:38:58 +00:00

73 lines
1.9 KiB
Plaintext

# Copyright (c) 2013 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/sysroot.gni")
config("sdk") {
ldflags = []
cflags = []
if (is_clang) {
# Don't allow visible symbols from libc++ to be re-exported.
ldflags += [ "-Wl,--exclude-libs=libc++.a" ]
}
# Explicitly use static linking for libstdc++ and libgcc to minimize
# dependencies.
if (!use_flutter_cxx) {
ldflags += [
"-static-libgcc",
"-static-libstdc++",
]
}
if (sysroot != "") {
cflags += [ "--sysroot=" + sysroot ]
ldflags += [ "--sysroot=" + sysroot ]
# Need to get some linker flags out of the sysroot.
ldflags += [ exec_script("sysroot_ld_path.py",
[
rebase_path("//build/linux/sysroot_ld_path.sh",
root_build_dir),
sysroot,
],
"value") ]
if (dart_sysroot == "alpine") {
# When using the alpine sysroot, prefers lld as linker.
if (is_clang) {
ldflags += [ "-fuse-ld=lld" ]
}
}
# When using the pulled Debian sysroot with gcc, we have to specify these
# explicitly.
if (dart_sysroot == "debian" && !is_clang) {
cflags += [
"-I=/usr/include/c++/4.8",
"-I=/usr/include/c++/4.8/i486-linux-gnu",
]
}
}
# Enable Large File Support extension (LFS)
cflags += [
"-D_FILE_OFFSET_BITS=64",
"-D_LARGEFILE_SOURCE",
"-D_LARGEFILE64_SOURCE",
]
}
config("executable_config") {
# GDB cannot find the executable's mapping in QEMU when PIE is enabled.
if (is_qemu) {
cflags = [ "-fno-pie" ]
ldflags = [ "-no-pie" ]
} else if (current_cpu != "x86") {
cflags = [ "-fPIE" ]
ldflags = [ "-pie" ]
}
}