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

source_set("cmx") {
  sources = [
    "cmx.cc",
    "cmx.h",
    "program.cc",
    "program.h",
    "runtime.cc",
    "runtime.h",
    "sandbox.cc",
    "sandbox.h",
  ]

  deps = [
    "//garnet/public/lib/cmx_facet_parser",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/json",
    "//garnet/public/lib/pkg_url",
    "//third_party/rapidjson",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/trace",
  ]
}

executable("tests") {
  testonly = true

  output_name = "cmx_unittests"

  sources = [
    "cmx_unittest.cc",
    "program_unittest.cc",
    "runtime_unittest.cc",
    "sandbox_unittest.cc",
  ]

  deps = [
    ":cmx",
    "//garnet/public/lib/fxl/test:gtest_main",
    "//garnet/public/lib/gtest",
    "//garnet/public/lib/json",
    "//garnet/public/lib/pkg_url",
    "//third_party/googletest:gmock",
    "//third_party/rapidjson",
  ]
}

package("cmx_unittests") {
  testonly = true

  deps = [
    ":tests",
  ]
  tests = [
    {
      name = "cmx_unittests"
    },
  ]
}
