# 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) {
  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.h",
    "chromium/libxml_utils.cc",
    "linux/config.h",
    "linux/include/libxml/xmlversion.h",
    "mac/config.h",
    "mac/include/libxml/xmlversion.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/DOCBparser.h",
    "src/include/libxml/encoding.h",
    "src/include/libxml/entities.h",
    "src/include/libxml/globals.h",
    "src/include/libxml/hash.h",
    "src/include/libxml/HTMLparser.h",
    "src/include/libxml/HTMLtree.h",
    "src/include/libxml/list.h",
    "src/include/libxml/nanoftp.h",
    "src/include/libxml/nanohttp.h",
    "src/include/libxml/parser.h",
    "src/include/libxml/parserInternals.h",
    "src/include/libxml/pattern.h",
    "src/include/libxml/relaxng.h",
    "src/include/libxml/SAX.h",
    "src/include/libxml/SAX2.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/xmlautomata.h",
    "src/include/libxml/xmlerror.h",
    "src/include/libxml/xmlexports.h",
    "src/include/libxml/xmlIO.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/acconfig.h",
    "src/c14n.c",
    "src/catalog.c",
    "src/chvalid.c",
    "src/debugXML.c",
    "src/dict.c",
    "src/DOCBparser.c",
    "src/elfgcchack.h",
    "src/encoding.c",
    "src/entities.c",
    "src/error.c",
    "src/globals.c",
    "src/hash.c",
    "src/HTMLparser.c",
    "src/HTMLtree.c",
    "src/legacy.c",
    "src/libxml.h",
    "src/list.c",
    "src/nanoftp.c",
    "src/nanohttp.c",
    "src/parser.c",
    "src/parserInternals.c",
    "src/pattern.c",
    "src/relaxng.c",
    "src/SAX.c",
    "src/SAX2.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" ]

  direct_dependent_configs = [ ":libxml_config" ]
  forward_dependent_configs_from = [ "//third_party/icu:icuuc" ]

  deps = [
    "//third_party/icu:icuuc",
    "//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",

      # See http://crbug.com/138571#c8
      "-Wno-ignored-attributes",
    ]
    if (is_mac) {
      # Mac Clang warnings.
      cflags += [
        # debugXML.c compares array 'arg' to NULL.
        "-Wno-tautological-pointer-compare",
      ]
    }
  }

  include_dirs = [
    "$os_include",
  ]
}
