| # Copyright 2013 The Flutter 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("//flutter/common/fuchsia_config.gni") |
| |
| # The inputs to this template are 'binary_path' and a boolean 'unstripped'. |
| # If 'unstripped' is specified, we append '.debug' to the symbols name. |
| template("_copy_debug_symbols") { |
| assert(defined(invoker.binary_path), "'binary_path' needs to be defined.") |
| assert(defined(invoker.unstripped), "'unstripped' needs to be defined.") |
| |
| action(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "deps", |
| "unstripped", |
| "binary_path", |
| "testonly", |
| ]) |
| |
| script = "//flutter/tools/fuchsia/copy_debug_symbols.py" |
| |
| sources = [ binary_path ] |
| |
| _dest_base = "${root_out_dir}/flutter-debug-symbols-${flutter_runtime_mode}-${target_os}-${target_cpu}" |
| |
| args = [ |
| "--executable-name", |
| target_name, |
| "--executable-path", |
| rebase_path(binary_path), |
| "--destination-base", |
| rebase_path(_dest_base), |
| "--read-elf", |
| rebase_path("//buildtools/${host_os}-${host_cpu}/clang/bin/llvm-readelf"), |
| ] |
| |
| if (unstripped) { |
| args += [ "--unstripped" ] |
| } |
| |
| outputs = [ "${_dest_base}/.${target_name}_success" ] |
| } |
| } |
| |
| # Takes a binary and generates its debug symbols following |
| # the Fuchsia packaging convention. |
| template("fuchsia_debug_symbols") { |
| assert(defined(invoker.binary), "'binary' needs to be defined.") |
| |
| _copy_debug_symbols("_${target_name}_stripped") { |
| forward_variables_from(invoker, "*") |
| binary_path = rebase_path("${root_out_dir}/$binary") |
| unstripped = false |
| } |
| |
| _copy_debug_symbols("_${target_name}_unstripped") { |
| forward_variables_from(invoker, "*") |
| binary_path = "${root_out_dir}/exe.unstripped/$binary" |
| unstripped = true |
| } |
| |
| group(target_name) { |
| forward_variables_from(invoker, [ "testonly" ]) |
| deps = [ |
| ":_${target_name}_stripped", |
| ":_${target_name}_unstripped", |
| ] |
| } |
| } |