# 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")

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 = [
    "//garnet/public/lib/fxl/test:gtest_main",
  ]
}

package("component_hello_world_tests") {
  testonly = true

  deps = [
    ":hello_world_test",
  ]

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

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