# 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") {
  public_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" ]
  }
}
