# Copyright (c) 2015 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. # TODO(dpranke) - it's very dangerous to have files being built with one # toolchain having as part of the include_dirs a path to another toolchain's # gen/ directory; it would be easy to end up including files meant for a # different toolchain. We should either change this code to generate the # files in every toolchain, or check in the generated code. Currently # the plan is to do the latter. # All toolchains use the same generated code. gen_dir = "$root_build_dir/gen/mojo/nacl" config("mojo_nacl") { include_dirs = [ "$root_build_dir/gen" ] } # Only allow the generator to be run by one toolchain. if (current_toolchain == default_toolchain) { # Generate the code to plumb the Mojo public API into the NaCl sandbox. action("mojo_nacl_codegen") { script = "generator/generate_nacl_bindings.py" args = [ "-d", rebase_path(gen_dir, root_build_dir), ] inputs = [ script, "generator/interface.py", "generator/interface_dsl.py", "generator/mojo_syscall.cc.tmpl", "generator/libmojo.cc.tmpl", ] outputs = [ "$gen_dir/mojo_irt.c", "$gen_dir/mojo_irt.h", "$gen_dir/mojo_syscall.cc", "$gen_dir/libmojo.cc", ] } } # Trusted code if (!is_nacl) { # A library for launching a NaCl sandbox connected to a Mojo embedder. static_library("monacl_sel") { sources = [ "$gen_dir/mojo_syscall.cc", "mojo_syscall_internal.h", "monacl_sel_main.cc", ] deps = [ # This target makes sure we have all the pre-processor defines needed to # use NaCl's headers. "//native_client/build/config/nacl:nacl_base", "//native_client/src/trusted/desc:nrd_xfer", "//native_client/src/trusted/service_runtime:sel_main_chrome", ":mojo_nacl_codegen($default_toolchain)", ] public_configs = [ "//third_party/mojo/src/mojo/public/build/config:mojo_sdk" ] } } # Untrusted code if (is_nacl) { # Thunk mapping the Mojo public API onto NaCl syscalls. static_library("mojo") { sources = [ "$gen_dir/libmojo.cc", "$gen_dir/mojo_irt.h", ] public_configs = [ ":mojo_nacl", "//third_party/mojo/src/mojo/public/build/config:mojo_sdk", ] public_deps = [ ":mojo_nacl_codegen($default_toolchain)", ] } source_set("irt_mojo_sources") { cflags_c = [ "-std=c99" ] sources = [ "$gen_dir/mojo_irt.c", "$gen_dir/mojo_irt.h", ] public_configs = [ ":mojo_nacl", "//third_party/mojo/src/mojo/public/build/config:mojo_sdk", ] public_deps = [ "//native_client/build/config/nacl:nacl_base", "//native_client/src/untrusted/irt:irt_core_lib", "//native_client/src/untrusted/nacl:imc_syscalls", ":mojo_nacl_codegen($default_toolchain)", ] } }