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

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",
  ]
  data_deps = [ ":host_tools" ]
}

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

  outputs = [ "catapult_converter" ]
}

group("tests") {
  testonly = true
  deps = [
    ":catapult_converter_unittest($host_toolchain)",
    ":host_tools",
  ]
}
