# Copyright 2017 The Chromium OS 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("//common-mk/pkg_config.gni")

group("all") {
  deps = [
    ":libcbor_static",
    ":libcbor_shared",
    ":libcbor_pc",
  ]
  if (use.test) {
    deps += [ ":cbor_unittests" ]
  }
  if (use.fuzzer) {
    deps += [ ":reader_fuzzer" ]
  }
}

pkg_config("target_defaults") {
  pkg_deps = [
    "libchrome",
  ]
}

generate_pkg_config("libcbor_pc") {
  deps = [
    ":libcbor_static",
  ]
  output_name = "cbor"
  description = "Concise Binary Object Representation library"
  version = "0.1"
}

source_set("libcbor_source_set") {
  configs += [
    "//common-mk:pic",
    ":target_defaults",
  ]
  defines = [
    # Define COMPONENT_BUILD so that symbols are exported. See cbor_export.h
    "COMPONENT_BUILD",
    "CBOR_IMPLEMENTATION",
  ]
  sources = [
    "diagnostic_writer.cc",
    "reader.cc",
    "values.cc",
    "writer.cc",
  ]
}

static_library("libcbor_static") {
  output_name = "libcbor"
  deps = [ ":libcbor_source_set" ]
}

shared_library("libcbor_shared") {
  output_name = "libcbor"
  deps = [ ":libcbor_source_set" ]
}

if (use.test) {
  pkg_config("libchrome_test_config") {
    pkg_deps = [ "libchrome-test" ]
  }
  executable("cbor_unittests") {
    configs += [
      "//common-mk:test",
      ":libchrome_test_config",
      ":target_defaults",
    ]
    sources = [
      "diagnostic_writer_unittest.cc",
      "reader_unittest.cc",
      "values_unittest.cc",
      "writer_unittest.cc",
    ]
    deps = [
      ":libcbor_static",
      "//common-mk/testrunner",
    ]
  }
}

if (use.fuzzer) {
  pkg_config("libchrome_test_config") {
    pkg_deps = [ "libchrome-test" ]
  }
  executable("reader_fuzzer") {
    configs += [
      "//common-mk/common_fuzzer",
      ":libchrome_test_config",
      ":target_defaults",
    ]
    sources = [ "reader_fuzzer.cc" ]
    deps = [
      ":libcbor_static",
    ]
  }
}
