# 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/components.gni")
import("//build/host.gni")
import("//build/test.gni")

source_set("converter") {
  sources = [ "converter.cc" ]
  deps = [
    "//src/lib/fxl",
    "//third_party/rapidjson",
  ]
}

executable("converter_bin") {
  output_name = "catapult_converter"

  sources = [ "main.cc" ]
  deps = [
    ":converter",
    "//third_party/rapidjson",
  ]
}

# TODO(fxbug.dev/70300): consider deleting this fuchsia_package if it's unused.
fuchsia_package_with_single_component("catapult_converter") {
  manifest = "meta/catapult_converter.cmx"
  deps = [
    ":converter_bin",
    ":host_tools",
  ]
}

test("catapult_converter_unittest") {
  sources = [ "converter_unittest.cc" ]

  deps = [
    ":converter",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
    "//third_party/rapidjson",
  ]
}

fuchsia_unittest_package("catapult_converter_tests") {
  manifest = "meta/catapult_converter_tests.cmx"
  deps = [ ":catapult_converter_unittest" ]
}

install_host_tools("host_tools") {
  deps = [ ":converter_bin" ]

  outputs = [ "catapult_converter" ]
}
