# Copyright 2018 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.

import("//build/package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

group("components") {
  testonly = true

  deps = [
    ":component_hello_world",
    ":component_hello_world_tests",
  ]
}

executable("bin") {
  output_name = "app"

  sources = [ "hello_world.cc" ]

  deps = [ "//zircon/public/lib/zx" ]
}

executable("bin2") {
  output_name = "app2"

  sources = [ "hello_world2.cc" ]

  deps = [ "//zircon/public/lib/zx" ]
}

package("component_hello_world") {
  deps = [
    ":bin",
    ":bin2",
  ]

  binaries = [
    {
      name = "app"
    },
    {
      name = "app2"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/hello_world.cmx")
      dest = "hello_world.cmx"
    },
    {
      path = rebase_path("meta/hello_world2.cmx")
      dest = "hello_world2.cmx"
    },
  ]
}

executable("hello_world_test") {
  testonly = true
  sources = [ "hello_world_test.cc" ]
  deps = [ "//src/lib/fxl/test:gtest_main" ]
}

test_package("component_hello_world_tests") {
  deps = [ ":hello_world_test" ]

  tests = [
    {
      name = "hello_world_test"
      environments = basic_envs
    },
  ]
}
