# 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/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/content_handler_demo",
    "//examples/dart",
    "//examples/echo",
    "//examples/echo_terminal",
    "//examples/forwarding_content_handler",
    "//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

  # TODO(smklein) - These deps are not compatible with NaCl because they depend
  # on skia. Make Skia build with NaCl.
  deps = [
    ":portable_examples",
    "//examples/embedded_app",
    "//examples/ganesh_app",
    "//examples/keyboard_client",
    "//examples/nfc_sender",
    "//examples/png_viewer",
  ]

  # 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 ((is_linux || is_android) && !is_asan) {
    deps += [ ":portable_examples(//build/toolchain/nacl:newlib_pnacl)" ]
  }
}
