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