# 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.

import("//build/config/nacl/config.gni")

# Collection of apps which are currently capable of being built as pexes.
group("portable_apps") {
  testonly = true

  deps = []
}

group("apps") {
  testonly = true

  deps = [
    ":portable_apps",
    "//apps/benchmark",
    "//apps/benchmark:apptests",
    "//apps/moterm",
    "//apps/moterm:apptests",
  ]

  if (is_android) {
    deps += [ "//apps/shortcut" ]
  }

  if (mojo_use_nacl) {
    deps += [ ":portable_apps(//build/toolchain/nacl:newlib_pnacl)" ]
  }
}
