Chromium Code Reviews| Index: build/config/nacl/rules.gni |
| diff --git a/build/config/nacl/rules.gni b/build/config/nacl/rules.gni |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8d7042453ff89a0fb4c5502d3541cf7222f97d5c |
| --- /dev/null |
| +++ b/build/config/nacl/rules.gni |
| @@ -0,0 +1,134 @@ |
| +# Copyright 2015 The Native Client 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("//build/config/features.gni") |
| +import("//build/config/nacl/config.gni") |
| + |
| +# Generate a nmf file |
| +# |
| +# Native Client Manifest (nmf) is a JSON file that tells the browser where to |
| +# download and load Native Client application files and libraries. |
| +# |
| +# Variables: |
| +# executables: .nexe/.pexe/.bc executables to generate nmf for |
| +# lib_prefix: path to prepend to shared libraries in the nmf |
| +# nmf: the name and the path of the output file |
| +# nmfflags: additional flags for the nmf generator |
| +# stage_dependencies: directory for staging libraries |
| +template("generate_nmf") { |
| + assert(defined(invoker.executables), "Must define executables") |
| + assert(defined(invoker.nmf), "Must define nmf") |
| + |
| + action(target_name) { |
| + nmfflags = [] |
| + |
| + forward_variables_from(invoker, |
| + [ |
| + "deps", |
| + "data_deps", |
| + "executables", |
| + "lib_prefix", |
| + "nmf", |
| + "nmfflags", |
| + "public_deps", |
| + "stage_dependencies", |
| + "testonly", |
| + ]) |
| + |
| + script = "//native_client_sdk/src/tools/create_nmf.py" |
| + sources = executables |
| + outputs = [ |
| + nmf, |
| + ] |
| + if (is_nacl_glibc) { |
| + if (defined(stage_dependencies)) { |
| + nmfflags += [ "--stage-dependencies=" + |
| + rebase_path(stage_dependencies, root_build_dir) ] |
| + lib_path = stage_dependencies |
| + } else { |
| + lib_path = root_build_dir |
| + } |
| + if (defined(lib_prefix)) { |
| + nmfflags += [ "--lib-prefix=" + lib_prefix ] |
| + lib_path += "/${lib_prefix}" |
| + } |
| + |
| + # NOTE: There is no explicit dependency for the lib32 |
| + # and lib64 directories created in the product directory. |
| + # They are created as a side-effect of nmf creation. |
| + if (current_cpu == "x86") { |
| + nmfflags += [ "--library-path=" + |
| + rebase_path("${nacl_toolchain_tooldir}/lib32") ] |
| + data = [ |
| + "${lib_path}/lib32/", |
| + ] |
| + } else if (current_cpu == "x64") { |
| + nmfflags += |
| + [ "--library-path=" + rebase_path("${nacl_toolchain_tooldir}/lib") ] |
| + data = [ |
| + "${lib_path}/lib64/", |
| + ] |
| + } else { |
| + nmfflags += |
| + [ "--library-path=" + rebase_path("${nacl_toolchain_tooldir}/lib") ] |
| + data = [ |
| + "${lib_path}/lib/", |
| + ] |
| + } |
| + } |
| + args = [ |
| + "--no-default-libpath", |
| + "--objdump=" + rebase_path("${nacl_toolprefix}objdump"), |
| + "--output=" + rebase_path(nmf, root_build_dir), |
| + ] + nmfflags + rebase_path(sources, root_build_dir) |
| + if (is_nacl_glibc && current_cpu == "arm") { |
| + deps += [ "//native_client/src/untrusted/elf_loader:elf_loader" ] |
| + } |
| + } |
| +} |
| + |
| +# Generate a nmf file for Non-SFI tests |
| +# |
| +# Non-SFI tests use a different manifest format from regular Native Client and |
| +# as such requires a different generator. |
| +# |
| +# Variables: |
| +# executable: Non-SFI .nexe executable to generate nmf for |
| +# nmf: the name and the path of the output file |
| +template("generate_nonsfi_test_nmf") { |
| + assert(defined(invoker.executable), "Must define executable") |
| + assert(defined(invoker.nmf), "Must define nmf") |
| + |
| + action(target_name) { |
| + forward_variables_from(invoker, |
| + [ |
| + "deps", |
| + "data_deps", |
| + "executable", |
| + "nmf", |
| + "testonly", |
| + "public_deps", |
| + ]) |
| + |
| + script = "//ppapi/tests/create_nonsfi_test_nmf.py" |
| + sources = [ |
| + executable, |
| + ] |
| + outputs = [ |
| + nmf, |
| + ] |
| + if (target_cpu == "x86") { |
|
Roland McGrath
2015/11/13 19:08:20
Add a comment saying why this is target_cpu rather
Petr Hosek
2015/11/13 20:38:09
Done.
|
| + arch = "x86-32" |
| + } else if (target_cpu == "x64") { |
| + arch = "x86-64" |
| + } else { |
| + arch = target_cpu |
| + } |
| + args = [ |
| + "--program=" + rebase_path(executable, root_build_dir), |
| + "--arch=${arch}", |
| + "--output=" + rebase_path(nmf, root_build_dir), |
| + ] |
| + } |
| +} |