# 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"
    },
  ]
}
