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