| 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..8e93b6a1863798961449090b73ab2279696ca5a3
|
| --- /dev/null
|
| +++ b/build/config/nacl/rules.gni
|
| @@ -0,0 +1,139 @@
|
| +# 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.
|
| + nmfflags += [ "--library-path=" + rebase_path(root_out_dir) ]
|
| + 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,
|
| + ]
|
| +
|
| + # NOTE: We use target_cpu rather than current_cpu on purpose because
|
| + # current_cpu is always going to be pnacl for Non-SFI, but the Non-SFI
|
| + # .nexe executable is always translated to run on the target machine.
|
| + if (target_cpu == "x86") {
|
| + 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),
|
| + ]
|
| + }
|
| +}
|
|
|