# 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/embedded_app",
    "//examples/forwarding_content_handler",
    "//examples/ganesh_app",
    "//examples/http_handler",
    "//examples/indirect_service",
    "//examples/moterm_example_app",
    "//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",
  ]

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

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

  if (is_linux || is_android) {
    deps += [
      "//examples/ui/spinning_cube",
      "//examples/ui/tile",
      "//examples/surfaces_app",
    ]
  }

  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)" ]
  }
}
