# Copyright 2014 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")
import("//build/config/ui.gni")

# Collection of examples which are currently capable of being built as pexes.
# TODO(smklein): Make all examples build as pexes.
group("portable_examples") {
  testonly = true

  deps = [
    "//examples/apptest",
    "//examples/audio_play_test",
    "//examples/content_handler_demo",
    "//examples/dart",
    "//examples/echo",
    "//examples/echo_terminal",
    "//examples/forwarding_content_handler",
    "//examples/hello_mojo",
    "//examples/http_handler",
    "//examples/indirect_service",
    "//examples/native_run_app",
    "//examples/notification_generator",
    "//examples/recursive_content_handler",
    "//examples/serialization",
    "//examples/spinning_cube",
    "//examples/tiny",
    "//examples/trace_me",
    "//examples/wget",
  ]
}

group("examples") {
  testonly = true

  deps = [
    ":portable_examples",
    "//examples/moterm_example_app",
    "//examples/ui/noodles",
    "//examples/ui/png_viewer",
    "//examples/ui/shapes",
    "//examples/ui/spinning_cube",
    "//examples/ui/tile",
  ]

  # TODO(cstout) - javascript/v8 build support for fnl/musl
  if (!is_android && !is_fnl) {
    deps += [ "//examples/ui/pdf_viewer" ]
  }

  if (is_android) {
    deps += [
      "//examples/device_name",
      "//examples/java_android/echo",
      "//examples/java_android/example_service",
    ]
  }

  if (defined(go_build_tool) && go_build_tool != "") {
    deps += [ "//examples/go" ]
    if (is_android) {
      deps += [ "//examples/bank_app" ]
    }
  }

  if (is_linux && !is_fnl) {
    deps += [ "//examples/python" ]
  }

  if (mojo_use_nacl && (is_linux || is_android) && !is_asan) {
    deps += [ ":portable_examples(//build/toolchain/nacl:newlib_pnacl)" ]
  }
}
