# Copyright 2018 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 = [
    ":generate-chromeos-dbus-bindings",
  ]
  if (use.test) {
    deps += [ ":chromeos_dbus_bindings_unittest" ]
  }
}

pkg_config("target_default_pkg_deps") {
  pkg_deps = [
    "libbrillo",
    "libchrome-${libbase_ver}",
  ]
}

config("target_defaults") {
  cflags = [
    "-Wextra",
    "-Wno-unused-parameter",  # for scoped_ptr.h, included indirectly
  ]
  cflags_cc = [
    "-fno-strict-aliasing",
    "-Woverloaded-virtual",
  ]
  configs = [ ":target_default_pkg_deps" ]
}

pkg_config("libchromeos-dbus-bindings_config") {
  pkg_deps = [ "dbus-1" ]
}

pkg_config("libchromeos-dbus-bindings_config_export") {
  pkg_deps = [ "expat" ]
}

static_library("libchromeos-dbus-bindings") {
  sources = [
    "adaptor_generator.cc",
    "dbus_signature.cc",
    "header_generator.cc",
    "indented_text.cc",
    "method_name_generator.cc",
    "name_parser.cc",
    "proxy_generator.cc",
    "xml_interface_parser.cc",
  ]
  configs += [
    ":target_defaults",
    ":libchromeos-dbus-bindings_config",
  ]
  all_dependent_configs = [ ":libchromeos-dbus-bindings_config_export" ]
}

executable("generate-chromeos-dbus-bindings") {
  sources = [
    "generate_chromeos_dbus_bindings.cc",
  ]
  configs += [ ":target_defaults" ]
  deps = [
    ":libchromeos-dbus-bindings",
  ]
}

if (use.test) {
  executable("chromeos_dbus_bindings_unittest") {
    sources = [
      "adaptor_generator_test.cc",
      "dbus_signature_test.cc",
      "indented_text_test.cc",
      "method_name_generator_test.cc",
      "name_parser_test.cc",
      "proxy_generator_mock_test.cc",
      "proxy_generator_test.cc",
      "test_utils.cc",
      "xml_interface_parser_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":target_defaults",
    ]
    deps = [
      ":libchromeos-dbus-bindings",
      "//common-mk/testrunner:testrunner",
    ]
  }
}
