# 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/authentication_demo",
    "//examples/content_handler_demo",
    "//examples/dart",
    "//examples/echo",
    "//examples/echo_terminal",
    "//examples/flog_viewer",
    "//examples/forwarding_content_handler",
    "//examples/hello_mojo",
    "//examples/http_handler",
    "//examples/indirect_service",
    "//examples/media_test",
    "//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/shadows",
    "//examples/ui/jank",
    "//examples/ui/motown_video",
    "//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)" ]
  }
}
