# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Define an "os_include" variable that points at the OS-specific generated
# headers.  These were generated by running the configure script offline.
if (is_linux || is_android || is_nacl) {
  os_include = "linux"
} else if (is_mac || is_ios) {
  os_include = "mac"
} else if (is_win) {
  os_include = "win32"
}

config("libxml_config") {
  # Define LIBXML_STATIC as nothing to match how libxml.h (an internal header)
  # defines LIBXML_STATIC, otherwise we get the macro redefined warning from
  # GCC. ("defines" does "-DFOO" which defines the macro FOO as 1.)
  cflags = [ "-DLIBXML_STATIC=" ]

  include_dirs = [
    "src/include",
    "$os_include/include",
  ]
}

static_library("libxml") {
  output_name = "libxml2"
  sources = [
    "chromium/libxml_utils.cc",
    "chromium/libxml_utils.h",
    "linux/config.h",
    "linux/include/libxml/xmlversion.h",
    "mac/config.h",
    "mac/include/libxml/xmlversion.h",
    "src/DOCBparser.c",
    "src/HTMLparser.c",
    "src/HTMLtree.c",
    "src/SAX.c",
    "src/SAX2.c",
    "src/acconfig.h",
    "src/c14n.c",
    "src/catalog.c",
    "src/chvalid.c",
    "src/debugXML.c",
    "src/dict.c",
    "src/elfgcchack.h",
    "src/encoding.c",
    "src/entities.c",
    "src/error.c",
    "src/globals.c",
    "src/hash.c",
    "src/include/libxml/DOCBparser.h",
    "src/include/libxml/HTMLparser.h",
    "src/include/libxml/HTMLtree.h",
    "src/include/libxml/SAX.h",
    "src/include/libxml/SAX2.h",
    "src/include/libxml/c14n.h",
    "src/include/libxml/catalog.h",
    "src/include/libxml/chvalid.h",
    "src/include/libxml/debugXML.h",
    "src/include/libxml/dict.h",
    "src/include/libxml/encoding.h",
    "src/include/libxml/entities.h",
    "src/include/libxml/globals.h",
    "src/include/libxml/hash.h",
    "src/include/libxml/list.h",
    "src/include/libxml/parser.h",
    "src/include/libxml/parserInternals.h",
    "src/include/libxml/pattern.h",
    "src/include/libxml/relaxng.h",
    "src/include/libxml/schemasInternals.h",
    "src/include/libxml/schematron.h",
    "src/include/libxml/threads.h",
    "src/include/libxml/tree.h",
    "src/include/libxml/uri.h",
    "src/include/libxml/valid.h",
    "src/include/libxml/xinclude.h",
    "src/include/libxml/xlink.h",
    "src/include/libxml/xmlIO.h",
    "src/include/libxml/xmlautomata.h",
    "src/include/libxml/xmlerror.h",
    "src/include/libxml/xmlexports.h",
    "src/include/libxml/xmlmemory.h",
    "src/include/libxml/xmlmodule.h",
    "src/include/libxml/xmlreader.h",
    "src/include/libxml/xmlregexp.h",
    "src/include/libxml/xmlsave.h",
    "src/include/libxml/xmlschemas.h",
    "src/include/libxml/xmlschemastypes.h",
    "src/include/libxml/xmlstring.h",
    "src/include/libxml/xmlunicode.h",
    "src/include/libxml/xmlwriter.h",
    "src/include/libxml/xpath.h",
    "src/include/libxml/xpathInternals.h",
    "src/include/libxml/xpointer.h",
    "src/include/win32config.h",
    "src/include/wsockcompat.h",
    "src/legacy.c",
    "src/libxml.h",
    "src/list.c",
    "src/parser.c",
    "src/parserInternals.c",
    "src/pattern.c",
    "src/relaxng.c",
    "src/schematron.c",
    "src/threads.c",
    "src/tree.c",

    #"src/trio.c",
    #"src/trio.h",
    #"src/triodef.h",
    #"src/trionan.c",
    #"src/trionan.h",
    #"src/triop.h",
    #"src/triostr.c",
    #"src/triostr.h",
    "src/uri.c",
    "src/valid.c",
    "src/xinclude.c",
    "src/xlink.c",
    "src/xmlIO.c",
    "src/xmlmemory.c",
    "src/xmlmodule.c",
    "src/xmlreader.c",
    "src/xmlregexp.c",
    "src/xmlsave.c",
    "src/xmlschemas.c",
    "src/xmlschemastypes.c",
    "src/xmlstring.c",
    "src/xmlunicode.c",
    "src/xmlwriter.c",
    "src/xpath.c",
    "src/xpointer.c",
    "win32/config.h",
    "win32/include/libxml/xmlversion.h",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  public_configs = [ ":libxml_config" ]
  public_deps = [
    "//third_party/icu:icuuc",
  ]
  deps = [
    "//third_party/zlib",
  ]

  if (is_win) {
    cflags_c = [ "/wd4101" ]  # Unreferenced local variable.
  } else if (is_mac || is_android) {
    # http://www.xmlsoft.org/threads.html says that this is required when using
    # libxml from several threads, which can possibly happen in chrome. On
    # linux, this is picked up by transitivity from pkg-config output from
    # build/linux/system.gyp.
    defines = [ "_REENTRANT" ]
  }

  if (is_clang) {
    cflags = [
      # libxml passes `const unsigned char*` through `const char*`.
      "-Wno-pointer-sign",

      # pattern.c and uri.c both have an intentional `for (...);` /
      # `while(...);` loop. I submitted a patch to move the `'` to its own
      # line, but until that's landed suppress the warning:
      "-Wno-empty-body",

      # debugXML.c compares array 'arg' to NULL.
      "-Wno-tautological-pointer-compare",

      # threads.c attempts to forward declare a pthread_equal which doesn't
      # match the prototype in pthreads.h
      "-Wno-ignored-attributes",

      # Comparison between xmlElementType and xmlXPathTypeVal.
      # TODO(hans): See if we can fix upstream (http://crbug.com/763944).
      "-Wno-enum-compare",
    ]
  }

  include_dirs = [ "$os_include" ]
}
