# 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/build/dart/dart.gni") # Generates an assembly file defining a given symbol with the bytes from a # binary file. Places the symbol in a text section if 'executable' is true, # otherwise places the symbol in a read-only data section. template("bin_to_assembly") { assert(defined(invoker.deps), "Must define deps") assert(defined(invoker.input), "Must define input binary file") assert(defined(invoker.symbol), "Must define symbol name") assert(defined(invoker.executable), "Must define boolean executable") action(target_name) { deps = invoker.deps script = "$dart_src/runtime/tools/bin_to_assembly.py" output = "$target_gen_dir/${invoker.input}.S" args = [ "--input", rebase_path(invoker.input), "--output", rebase_path(output), "--symbol_name", invoker.symbol, "--target_os", current_os, ] if (defined(invoker.size_symbol)) { args += [ "--size_symbol_name", invoker.size_symbol, "--target_arch", current_cpu, ] } if (invoker.executable) { args += [ "--executable" ] } if (current_os != "win") { args += [ "--incbin" ] } inputs = [ script, invoker.input, ] outputs = [ output ] } } # Generates an object file defining a given symbol with the bytes from a # binary file. Places the symbol in the read-only data section. template("bin_to_coff") { assert(defined(invoker.deps), "Must define deps") assert(defined(invoker.input), "Must define input binary file") assert(defined(invoker.symbol), "Must define symbol name") assert(defined(invoker.executable), "Must define executable") action(target_name) { deps = invoker.deps script = "$dart_src/runtime/tools/bin_to_coff.py" output = "$target_gen_dir/${invoker.input}.o" args = [ "--input", rebase_path(invoker.input), "--output", rebase_path(output), "--symbol_name", invoker.symbol, ] if (defined(invoker.size_symbol)) { args += [ "--size_symbol_name", invoker.size_symbol, ] } if (invoker.executable) { args += [ "--executable" ] } args += [ "--arch=$current_cpu" ] inputs = [ invoker.input ] outputs = [ output ] } } # Generates a linkable output file defining the specified symbol with the bytes # from the binary file. Emits a COFF object file when targeting Windows, # otherwise assembly. template("bin_to_linkable") { assert(defined(invoker.deps), "Must define deps") assert(defined(invoker.input), "Must define input binary file") assert(defined(invoker.symbol), "Must define symbol name") target_type = "bin_to_assembly" if (is_win) { target_type = "bin_to_coff" } target(target_type, target_name) { forward_variables_from(invoker, "*") } }