diff options
Diffstat (limited to 'deps/v8/build/linux/unbundle/yasm.gn')
-rw-r--r-- | deps/v8/build/linux/unbundle/yasm.gn | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/deps/v8/build/linux/unbundle/yasm.gn b/deps/v8/build/linux/unbundle/yasm.gn new file mode 100644 index 0000000000..b5b440e66f --- /dev/null +++ b/deps/v8/build/linux/unbundle/yasm.gn @@ -0,0 +1,102 @@ +# Copyright 2016 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. + +if (current_cpu == "x86") { + _yasm_flags = [ + "-felf32", + "-m", + "x86", + ] +} else if (current_cpu == "x64") { + _yasm_flags = [ + "-DPIC", + "-felf64", + "-m", + "amd64", + ] +} + +template("yasm_assemble") { + action_name = "${target_name}_action" + source_set_name = target_name + + action_foreach(action_name) { + # Only the source set can depend on this. + visibility = [ ":$source_set_name" ] + + script = "//third_party/yasm/run_yasm.py" + sources = invoker.sources + + if (defined(invoker.inputs)) { + inputs = invoker.inputs + } + + deps = [] + if (defined(invoker.deps)) { + deps += invoker.deps + } + + args = [ "yasm" ] + _yasm_flags + if (defined(invoker.yasm_flags)) { + args += invoker.yasm_flags + } + + # User defined include dirs go first. + if (defined(invoker.include_dirs)) { + foreach(include, invoker.include_dirs) { + args += [ "-I" + rebase_path(include, root_build_dir) ] + } + } + + # Default yasm include dirs. Make it match the native build (source root and + # root generated code directory). + # This goes to the end of include list. + args += [ + "-I.", + + # Using "//." will produce a relative path "../.." which looks better than + # "../../" which will result from using "//" as the base (although both + # work). This is because rebase_path will terminate the result in a + # slash if the input ends in a slash. + "-I" + rebase_path("//.", root_build_dir), + "-I" + rebase_path(root_gen_dir, root_build_dir), + ] + + # Extra defines. + if (defined(invoker.defines)) { + foreach(def, invoker.defines) { + args += [ "-D$def" ] + } + } + + # Output file. + outputs = [ + "$target_out_dir/$source_set_name/{{source_name_part}}.o", + ] + args += [ + "-o", + rebase_path(outputs[0], root_build_dir), + "{{source}}", + ] + + # The wrapper script run_yasm will write the depfile to the same name as + # the output but with .d appended (like gcc will). + depfile = outputs[0] + ".d" + } + + # Gather the .o files into a linkable thing. This doesn't actually link + # anything (a source set just compiles files to link later), but will pass + # the object files generated by the action up the dependency chain. + static_library(source_set_name) { + if (defined(invoker.visibility)) { + visibility = invoker.visibility + } + + sources = get_target_outputs(":$action_name") + + deps = [ + ":$action_name", + ] + } +} |