chromium-src-build/config/fuchsia/BUILD.gn

67 строки
2.2 KiB
Plaintext

# 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/fuchsia/config.gni")
import("//build/config/fuchsia/generate_runner_scripts.gni")
import("//build/config/sysroot.gni")
assert(is_fuchsia)
assert(!is_posix)
config("compiler") {
sdk_version_file = "${fuchsia_sdk}/.hash"
sdk_version = read_file(sdk_version_file, "trim string")
defines = [
# To force full builds after SDK updates in case of ABI changes.
"FUCHSIA_SDK_VERSION=$sdk_version",
]
cflags = []
ldflags = []
if (current_cpu == "arm64") {
cflags += [ "--target=aarch64-fuchsia" ]
ldflags += [ "--target=aarch64-fuchsia" ]
} else if (current_cpu == "x64") {
cflags += [ "--target=x86_64-fuchsia" ]
ldflags += [ "--target=x86_64-fuchsia" ]
} else {
assert(false, "Unsupported architecture")
}
asmflags = cflags
ldflags += [
# The stack defaults to 256k on Fuchsia (see
# https://fuchsia.googlesource.com/zircon/+/master/system/private/zircon/stack.h#9),
# but on other platforms it's much higher, so a variety of code assumes more
# will be available. Raise to 8M which matches e.g. macOS.
"-Wl,-z,stack-size=0x800000",
# We always want fdio or else e.g. stdio wouldn't be initialized if fdio
# happens to not be directly referenced. The common POSIX-y compiler setup
# uses -Wl,--as-needed which drops it if it's simply "-lfdio" from a libs
# setting. Disable --as-needed, add fdio, and then set back to --as-needed.
# https://crbug.com/731217.
"-Wl,--no-as-needed",
"-lfdio",
"-Wl,--as-needed",
]
# Add SDK lib dir for -lfdio above.
lib_dirs = [ "${fuchsia_sdk}/arch/${current_cpu}/lib" ]
# TODO(crbug.com/821951): Clang enables SafeStack by default when targeting
# Fuchsia, but it breaks some tests, notably in V8.
# Force the toolchain to use shadow-call-stack instead, until that is default.
cflags += [
"-fno-sanitize=safe-stack",
"-fsanitize=shadow-call-stack",
]
libs = [ "zircon" ]
}
# Settings for executables.
config("executable_config") {
ldflags = [ "-pie" ]
}