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

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

  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.
    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
  }
}
