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

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

group("cpp") {
  deps = [
    ":hello_world_cpp",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":hello_world_cpp_tests",
  ]
}

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

  sources = [
    "hello_world.cc",
  ]
}

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

  binaries = [
    {
      name = "hello_world_cpp"
    },
  ]

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

test("hello_world_cpp_unittests") {
  sources = [
    "hello_world_unittest.cc",
  ]

  deps = [
    "//src/lib/fxl/test:gtest_main",
  ]
}

test_package("hello_world_cpp_tests") {
  deps = [
    ":hello_world_cpp_unittests",
  ]

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