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