# Copyright 2019 the V8 project 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("../../gni/v8.gni")

config("crdtp_config") {
  visibility = [ "../../src/inspector:*", ":*" ]
  configs = [ "../../:internal_config" ]
  include_dirs = [ "../../include" ]
}

v8_source_set("crdtp") {
  sources = [
    "crdtp/cbor.cc",
    "crdtp/cbor.h",
    "crdtp/dispatch.cc",
    "crdtp/dispatch.h",
    "crdtp/error_support.cc",
    "crdtp/error_support.h",
    "crdtp/export.h",
    "crdtp/find_by_first.h",
    "crdtp/json.cc",
    "crdtp/json.h",
    "crdtp/maybe.h",
    "crdtp/parser_handler.h",
    "crdtp/protocol_core.cc",
    "crdtp/protocol_core.h",
    "crdtp/serializable.cc",
    "crdtp/serializable.h",
    "crdtp/serializer_traits.h",
    "crdtp/span.cc",
    "crdtp/span.h",
    "crdtp/status.cc",
    "crdtp/status.h",
  ]
  configs = [ ":crdtp_config" ]
  deps = [ ":crdtp_platform" ]
}

# A small adapter library which only :crdtp may depend on.
v8_source_set("crdtp_platform") {
  visibility = [ ":crdtp" ]
  sources = [
    "crdtp/json_platform.h",
    "crdtp/json_platform_v8.cc",
  ]
  public_deps = [ "../..:v8_libbase" ]
  configs = [ ":crdtp_config" ]
}

if (!is_starboard) {
  # These tests are linked into test/unittests.
  v8_source_set("crdtp_test") {
    sources = [
      "crdtp/cbor_test.cc",
      "crdtp/dispatch_test.cc",
      "crdtp/error_support_test.cc",
      "crdtp/find_by_first_test.cc",
      "crdtp/glue_test.cc",
      "crdtp/json_test.cc",
      "crdtp/serializable_test.cc",
      "crdtp/serializer_traits_test.cc",
      "crdtp/span_test.cc",
      "crdtp/status_test.cc",
      "crdtp/status_test_support.cc",
      "crdtp/status_test_support.h",
    ]
    configs = [ ":crdtp_config" ]
    deps = [ ":crdtp_test_platform" ]
    testonly = true
  }

  # A small adapter library which only :crdtp_test may depend on.
  v8_source_set("crdtp_test_platform") {
    sources = [
      "crdtp/test_platform.h",
      "crdtp/test_platform_v8.cc",
    ]
    configs = [ ":crdtp_config" ]
    public_deps = [
      ":crdtp",
      "../..:v8_libbase",
      "../../src/inspector:inspector_string_conversions",
      "//testing/gmock",
      "//testing/gtest",
    ]
    testonly = true
  }
}
