# Copyright (c) 2016 The WebRTC 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 in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../build/webrtc.gni")

group("xmllite") {
  deps = [
    ":rtc_xmllite",
  ]
}

source_set("rtc_xmllite") {
  sources = [
    "qname.cc",
    "qname.h",
    "xmlbuilder.cc",
    "xmlbuilder.h",
    "xmlconstants.cc",
    "xmlconstants.h",
    "xmlelement.cc",
    "xmlelement.h",
    "xmlnsstack.cc",
    "xmlnsstack.h",
    "xmlparser.cc",
    "xmlparser.h",
    "xmlprinter.cc",
    "xmlprinter.h",
  ]

  deps = [
    "../../base:rtc_base",
  ]

  if (rtc_build_expat) {
    deps += [ "//third_party/expat" ]
    public_deps = [
      "//third_party/expat",
    ]
  }

  configs += [ "../..:common_config" ]
  public_configs = [ "../..:common_inherited_config" ]

  if (!build_with_chromium && is_clang) {
    # Suppress warnings from Chrome's Clang plugins.
    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
    configs -= [ "//build/config/clang:find_bad_constructs" ]
  }
}
