# 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_sfi") {
    testonly = true
    sources = [
      "monacl_shell.cc",
    ]
    deps = [
      "//base",
      "//mojo/edk/base_edk",
      "//mojo/edk/system",
      "//mojo/gles2:mgl",
      "//mojo/nacl/sfi/nacl_bindings:monacl_sel",
      "//mojo/public/cpp/environment:standalone",
    ]

    data_deps = [
      "//mojo/nacl/sfi/nacl_bindings:irt_mojo(//build/toolchain/nacl:irt_${target_cpu})",
    ]
  }
}

group("mojo_nacl") {
  deps = [
    "//services/nacl/sfi:content_handler_sfi_nexe",
  ]
}

group("mojo_nacl_tests_sfi") {
  testonly = true
  deps = [
    "//mojo/nacl:mojo_nacl_tests_untrusted(//build/toolchain/nacl:clang_newlib_${current_cpu})",
    ":monacl_shell_sfi",
  ]
}
