# All toolchains use the same generated code. gen_dir = "$root_build_dir/gen/mojo/nacl" # 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_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 = [ "mojo_syscall_internal.h", "$gen_dir/mojo_syscall.cc", "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)", ] } # A simple shell for running untrusted binaries that talk to the Mojo # embedder. (No services.) executable("monacl_shell") { testonly = true sources = [ "monacl_shell.cc", ] deps = [ "//base:base", "//third_party/mojo/src/mojo/edk/system:system", ":monacl_sel", ] } } # Untrusted code if (is_nacl) { # Thunk mapping the Mojo public API onto NaCl syscalls. static_library("mojo") { sources = [ "$gen_dir/libmojo.cc", ] deps = [ ":mojo_nacl_codegen($default_toolchain)", ] } # Unit test for the Mojo public API. executable("monacl_test") { testonly = true sources = [ "//third_party/mojo/src/mojo/public/cpp/system/tests/core_unittest.cc", "//third_party/mojo/src/mojo/public/cpp/system/tests/macros_unittest.cc", ] deps = [ "//native_client/src/untrusted/nacl:imc_syscalls", "//testing/gtest:gtest", "//testing/gtest:gtest_main", "//third_party/mojo/src/mojo/public/c/system/tests:tests", "//third_party/mojo/src/mojo/public/cpp/system:system", ":mojo", ] } } group("mojo_nacl") { deps = [ "//native_client/src/untrusted/irt:irt_core(//native_client/build/toolchain/nacl:irt_${cpu_arch})", ] } group("mojo_nacl_tests") { testonly = true deps = [ ":monacl_shell", ":monacl_test(//native_client/build/toolchain/nacl:clang_newlib_${cpu_arch})", ] }