summaryrefslogtreecommitdiff
path: root/deps/v8/build/config/fuchsia/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/build/config/fuchsia/BUILD.gn')
-rw-r--r--deps/v8/build/config/fuchsia/BUILD.gn128
1 files changed, 128 insertions, 0 deletions
diff --git a/deps/v8/build/config/fuchsia/BUILD.gn b/deps/v8/build/config/fuchsia/BUILD.gn
new file mode 100644
index 0000000000..59da62e766
--- /dev/null
+++ b/deps/v8/build/config/fuchsia/BUILD.gn
@@ -0,0 +1,128 @@
+# 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/rules.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.
+ cflags += [ "-fno-sanitize=safe-stack" ]
+
+ libs = [ "zircon" ]
+}
+
+# Writes an extended version of fvm.blk to fvm.extended.blk.
+blobstore_extended_path = "$root_out_dir/fvm.extended.blk"
+action("blobstore_extended_fvm") {
+ # The file is grown by 1GB, which should be large enough to hold packaged
+ # binaries and assets. The value should be increased if the size becomes a
+ # limitation in the future.
+ _extend_size = "1073741824" # 1GB
+
+ _target_dir = "${fuchsia_sdk}/target/${current_cpu}"
+
+ script = "//build/config/fuchsia/extend_fvm.py"
+
+ inputs = [
+ "${fuchsia_sdk}/tools/fvm",
+ "${_target_dir}/fvm.blk",
+ ]
+ outputs = [
+ blobstore_extended_path,
+ ]
+
+ args = [
+ rebase_path("${fuchsia_sdk}/tools/fvm", root_build_dir),
+ rebase_path("${_target_dir}/fvm.blk", root_build_dir),
+ rebase_path(blobstore_extended_path, root_build_dir),
+ _extend_size,
+ ]
+}
+
+# _________________________________________
+# / Create a compressed copy-on-write (COW) \
+# \ image based on fvm.blk. /
+# -----------------------------------------
+# \ ^__^
+# \ (oo)\_______
+# (__)\ )\/\
+# ||----w |
+# || ||
+action("blobstore_extended_qcow2") {
+ script = "//build/gn_run_binary.py"
+
+ deps = [
+ ":blobstore_extended_fvm",
+ ]
+ inputs = [
+ blobstore_extended_path,
+ ]
+ outputs = [
+ blobstore_qcow_path,
+ ]
+ data = [
+ blobstore_qcow_path,
+ ]
+
+ args = [
+ rebase_path("${qemu_root}/bin/qemu-img", root_build_dir),
+ "convert",
+ "-f",
+ "raw",
+ "-O",
+ "qcow2",
+ "-c",
+ rebase_path(blobstore_extended_path, root_build_dir),
+ rebase_path(blobstore_qcow_path, root_build_dir),
+ ]
+}
+
+# Settings for executables.
+config("executable_config") {
+ ldflags = [ "-pie" ]
+}