xref: /aosp_15_r20/external/angle/build/config/fuchsia/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2017 The Chromium Authors
2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file.
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/clang/clang.gni")
6*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/fuchsia/generate_runner_scripts.gni")
7*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/fuchsia/gn_configs.gni")
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard Workerassert(is_fuchsia)
10*8975f5c5SAndroid Build Coastguard Workerassert(!is_posix, "Fuchsia is not POSIX.")
11*8975f5c5SAndroid Build Coastguard Worker
12*8975f5c5SAndroid Build Coastguard Workerconfig("compiler") {
13*8975f5c5SAndroid Build Coastguard Worker  configs = [ "//third_party/fuchsia-gn-sdk/src/config:compiler" ]
14*8975f5c5SAndroid Build Coastguard Worker
15*8975f5c5SAndroid Build Coastguard Worker  # TODO(crbug.com/40513182): The stack defaults to 256k on Fuchsia (see
16*8975f5c5SAndroid Build Coastguard Worker  # https://fuchsia.googlesource.com/zircon/+/master/system/private/zircon/stack.h#9),
17*8975f5c5SAndroid Build Coastguard Worker  # but on other platforms it's much higher, so a variety of code assumes more
18*8975f5c5SAndroid Build Coastguard Worker  # will be available. Raise to 8M which matches e.g. macOS.
19*8975f5c5SAndroid Build Coastguard Worker  ldflags = [
20*8975f5c5SAndroid Build Coastguard Worker    "-Wl,-z,stack-size=0x800000",
21*8975f5c5SAndroid Build Coastguard Worker    "-fexperimental-relative-c++-abi-vtables",
22*8975f5c5SAndroid Build Coastguard Worker  ]
23*8975f5c5SAndroid Build Coastguard Worker  cflags_cc = [ "-fexperimental-relative-c++-abi-vtables" ]
24*8975f5c5SAndroid Build Coastguard Worker}
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Worker# Files required to run on Fuchsia on isolated swarming clients.
27*8975f5c5SAndroid Build Coastguard Workergroup("deployment_resources") {
28*8975f5c5SAndroid Build Coastguard Worker  data = [
29*8975f5c5SAndroid Build Coastguard Worker    "//build/fuchsia/",
30*8975f5c5SAndroid Build Coastguard Worker    "//build/util/lib/",
31*8975f5c5SAndroid Build Coastguard Worker    "//third_party/fuchsia-sdk/sdk/.build-id/",
32*8975f5c5SAndroid Build Coastguard Worker    "//third_party/fuchsia-sdk/sdk/meta/manifest.json",
33*8975f5c5SAndroid Build Coastguard Worker    "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/",
34*8975f5c5SAndroid Build Coastguard Worker  ]
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard Worker  if (fuchsia_additional_boot_images == []) {
37*8975f5c5SAndroid Build Coastguard Worker    data += [ "${boot_image_root}" ]
38*8975f5c5SAndroid Build Coastguard Worker  } else {
39*8975f5c5SAndroid Build Coastguard Worker    # We never need to use both qemu images and device images.
40*8975f5c5SAndroid Build Coastguard Worker    foreach(fuchsia_additional_boot_image, fuchsia_additional_boot_images) {
41*8975f5c5SAndroid Build Coastguard Worker      data += [ "${fuchsia_additional_boot_image}/" ]
42*8975f5c5SAndroid Build Coastguard Worker    }
43*8975f5c5SAndroid Build Coastguard Worker  }
44*8975f5c5SAndroid Build Coastguard Worker
45*8975f5c5SAndroid Build Coastguard Worker  if (test_isolate_uses_emulator && test_host_cpu == "arm64") {
46*8975f5c5SAndroid Build Coastguard Worker    data += [
47*8975f5c5SAndroid Build Coastguard Worker      "//third_party/qemu-${host_os}-${test_host_cpu}/",
48*8975f5c5SAndroid Build Coastguard Worker      "//third_party/edk2/",
49*8975f5c5SAndroid Build Coastguard Worker    ]
50*8975f5c5SAndroid Build Coastguard Worker  }
51*8975f5c5SAndroid Build Coastguard Worker}
52*8975f5c5SAndroid Build Coastguard Worker
53*8975f5c5SAndroid Build Coastguard Worker# Copy the loader to place it at the expected path in the final package.
54*8975f5c5SAndroid Build Coastguard Workercopy("sysroot_asan_libs") {
55*8975f5c5SAndroid Build Coastguard Worker  sources = [ "${fuchsia_arch_root}/sysroot/dist/lib/asan/ld.so.1" ]
56*8975f5c5SAndroid Build Coastguard Worker  outputs = [ "${root_out_dir}/lib/asan/{{source_file_part}}" ]
57*8975f5c5SAndroid Build Coastguard Worker}
58*8975f5c5SAndroid Build Coastguard Worker
59*8975f5c5SAndroid Build Coastguard Worker# Copy the loader to place it at the expected path in the final package.
60*8975f5c5SAndroid Build Coastguard Workercopy("sysroot_asan_runtime_libs") {
61*8975f5c5SAndroid Build Coastguard Worker  sources = [ "$clang_base_path/lib/clang/$clang_version/lib/x86_64-unknown-fuchsia/libclang_rt.asan.so" ]
62*8975f5c5SAndroid Build Coastguard Worker  outputs = [ "${root_out_dir}/lib/{{source_file_part}}" ]
63*8975f5c5SAndroid Build Coastguard Worker}
64*8975f5c5SAndroid Build Coastguard Worker
65*8975f5c5SAndroid Build Coastguard Worker# This adds the runtime deps for Fuchsia ASAN builds.
66*8975f5c5SAndroid Build Coastguard Workergroup("asan_runtime_library") {
67*8975f5c5SAndroid Build Coastguard Worker  data_deps = [
68*8975f5c5SAndroid Build Coastguard Worker    ":sysroot_asan_libs",
69*8975f5c5SAndroid Build Coastguard Worker    ":sysroot_asan_runtime_libs",
70*8975f5c5SAndroid Build Coastguard Worker  ]
71*8975f5c5SAndroid Build Coastguard Worker}
72*8975f5c5SAndroid Build Coastguard Worker
73*8975f5c5SAndroid Build Coastguard Worker# rustc gives the linker (clang++) "-pie" directives. clang++ complains on
74*8975f5c5SAndroid Build Coastguard Worker# Fuchsia that these don't make any sense. On Fuchsia alone, for Rust-linked
75*8975f5c5SAndroid Build Coastguard Worker# targets only, disable these warnings.
76*8975f5c5SAndroid Build Coastguard Workerconfig("rustc_no_pie_warning") {
77*8975f5c5SAndroid Build Coastguard Worker  ldflags = [ "-Wno-unused-command-line-argument" ]
78*8975f5c5SAndroid Build Coastguard Worker}
79