|  | # 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", | 
|  | ] | 
|  | } | 
|  |  | 
|  | include_dirs = [ "$os_include" ] | 
|  | } |