# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Top level BUILD file for gn samples



group("default") {
  deps = [
    "//src/hello_world",
  ]
  if (is_fuchsia) {
    deps += [
      "//src/bouncing_ball",
      "//src/calculator",
      "//src/rot13",
    ]
  }
}

group("tests") {
  testonly = true
  deps = [
    "//src/hello_world:tests",
  ]
  if (is_fuchsia) {
    deps += [
      "//src/calculator:tests",
      "//src/rot13:tests",
    ]
  }
}

# build all the targets exposed by the Fuchsia sdk.
if (is_fuchsia) {
  import("//third_party/fuchsia-sdk/build/test_targets.gni")
  fuchsia_sdk_test_targets("all_sdk_targets") {}
}

# A generated file that lists all of the test files.
generated_file("all_host_tests") {
  testonly = true
  deps = [
    "//:default",
    "//:tests",
  ]

  outputs = [
    "$root_build_dir/all_host_tests.txt",
  ]
  data_keys = [ "host_test_name" ]
}
