blob: fb658bfed3d3c73b5a14d61b64a7207d3ea4afdc [file] [log] [blame]
# Copyright 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.
# Trusted code
if (!is_nacl) {
# 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",
"//mojo/edk/system:system",
"//nacl_bindings:monacl_sel",
]
data_deps =
[ "//nacl_bindings:irt_mojo(//build/toolchain/nacl:irt_${target_cpu})" ]
}
if (current_cpu == "x86" || current_cpu == "arm") {
# Non-SFI NaCl currently supports x86-32 and ARMv7, but not anything 64-bit.
# Additionally, PNaCl pexes assume 32-bit pointers.
executable("monacl_shell_nonsfi") {
testonly = true
sources = [
"monacl_shell_nonsfi.cc",
]
deps = [
":irt_mojo_nonsfi",
"//mojo/edk/system",
"//native_client/src/nonsfi/loader:elf_loader",
]
}
}
}
group("monacl_shell_nonsfi_x86") {
testonly = true
deps = []
if ((target_cpu == "x64" || target_cpu == "x86") && is_linux) {
# Even when Mojo is built for x86-64 by default, we want to use x86-32
# for running programs under Non-SFI NaCl.
# The toolchain is hardcoded as 32-bit clang here -- although it must
# be 32 bit (for nonsfi), it assumes clang. Ideally, the toolchain would
# be defined as the 32 bit variant of whatever is being used (be it clang,
# gcc, or something else).
deps += [ ":monacl_shell_nonsfi(//build/toolchain/linux:clang_x86)" ]
}
}
# Untrusted code
if (is_nacl) {
# Unit test for the Mojo public API.
executable("monacl_test") {
testonly = true
sources = [
"//mojo/public/cpp/system/tests/core_unittest.cc",
"//mojo/public/cpp/system/tests/macros_unittest.cc",
]
deps = [
"//mojo/public/c/system/tests:tests",
"//mojo/public/cpp/system:system",
"//mojo/public/platform/nacl:mojo",
"//testing/gtest:gtest",
"//testing/gtest:gtest_main",
]
}
group("mojo_nacl_tests_untrusted") {
testonly = true
deps = [
":monacl_test",
"//examples/apptest",
"//examples/wget",
"//services/clipboard",
"//services/clipboard:apptests",
"//services/files:apptests",
"//services/http_server",
"//services/http_server:apptests",
"//services/view_manager:mojo_view_manager_client_apptests",
"//services/view_manager:view_manager_service_apptests",
"//services/window_manager:window_manager_apptests",
"//shell:apptests",
]
}
}
static_library("irt_mojo_nonsfi") {
sources = [
"irt_mojo_nonsfi.cc",
"irt_mojo_nonsfi.h",
"nexe_launcher_nonsfi.cc",
]
deps = [
"//base",
"//mojo/public/c/system",
"//mojo/public/platform/nacl:mojo_irt_header",
"//native_client/src/nonsfi/irt:irt_interfaces",
]
}
group("mojo_nacl") {
deps = [
"//services/nacl:nacl_content_handler",
]
}
group("mojo_nacl_nonsfi") {
deps = [
"//services/nacl:nacl_content_handler_nonsfi",
]
}
group("mojo_pnacl_tests") {
testonly = true
deps = [
":monacl_test(//build/toolchain/nacl:newlib_pnacl)",
]
}
action("translate_mojo_pnacl_tests_to_native") {
testonly = true
# Leaving default as linux for OSes which are similar to linux, but do
# not self-identify as linux through host_os.
nacl_toolchain_host_os = "linux"
if (host_os == "mac") {
nacl_toolchain_host_os = "mac"
}
script = rebase_path("//") + "native_client/toolchain/${nacl_toolchain_host_os}_x86/pnacl_newlib/bin/pydir/loader.py"
input = rebase_path(root_build_dir) + "/newlib_pnacl/monacl_test.pexe"
inputs = [
input,
]
output = "monacl_test_nonsfi.nexe"
outputs = [
"$root_out_dir/${output}",
]
args = [
"pnacl-translate",
"$input",
"-o",
"$output",
"-arch",
]
if (target_cpu == "x86" || target_cpu == "x64") {
args += [ "x86-32-nonsfi" ]
} else if (target_cpu == "arm") {
args += [ "arm-nonsfi" ]
} else {
assert(false, "Unrecognized target CPU for Non-SFI NaCl translation")
}
deps = [
":mojo_pnacl_tests",
]
}
action("prepend_shebang_to_nexe") {
testonly = true
script = rebase_path("//") + "mojo/public/tools/prepend.py"
nexe_path = "$root_out_dir/monacl_test_nonsfi"
input = "${nexe_path}.nexe"
inputs = [
input,
]
output = "${nexe_path}.mojo"
outputs = [
output,
]
line = "#!mojo mojo:nacl_content_handler_nonsfi"
args = [
"--input=" + rebase_path(input, root_build_dir),
"--output=" + rebase_path(output, root_build_dir),
"--line=$line",
]
deps = [
":translate_mojo_pnacl_tests_to_native",
]
}
group("monacl_test_nonsfi_nexes") {
testonly = true
deps = [
":translate_mojo_pnacl_tests_to_native",
":prepend_shebang_to_nexe",
]
}
group("mojo_nacl_tests") {
testonly = true
deps = [
":mojo_nacl_tests_untrusted(//build/toolchain/nacl:clang_newlib_${current_cpu})",
":monacl_shell",
]
}
group("mojo_nacl_tests_nonsfi") {
testonly = true
deps = [
":monacl_shell_nonsfi_x86",
":monacl_test_nonsfi_nexes",
]
}