|  | # Copyright (c) 2012 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. | 
|  |  | 
|  | { | 
|  | 'variables': { | 
|  | 'conditions': [ | 
|  | # Define an "os_include" variable that points at the OS-specific generated | 
|  | # headers.  These were generated by running the configure script offline. | 
|  | ['os_posix == 1 and OS != "mac" and OS != "ios"', { | 
|  | 'os_include': 'linux' | 
|  | }], | 
|  | ['OS=="mac"', {'os_include': 'mac'}], | 
|  | ['OS=="win"', {'os_include': 'win32'}], | 
|  | ], | 
|  | 'use_system_libxml%': 0, | 
|  | }, | 
|  | 'targets': [ | 
|  | { | 
|  | 'target_name': 'libxml', | 
|  | 'conditions': [ | 
|  | ['use_system_libxml', { | 
|  | 'conditions': [ | 
|  | ['os_posix == 1 and OS != "mac" and OS != "ios"', { | 
|  | 'type': 'static_library', | 
|  | 'sources': [ | 
|  | 'chromium/libxml_utils.h', | 
|  | 'chromium/libxml_utils.cc', | 
|  | ], | 
|  | 'cflags': [ | 
|  | '<!@(pkg-config --cflags libxml-2.0)', | 
|  | ], | 
|  | 'defines': [ | 
|  | 'USE_SYSTEM_LIBXML', | 
|  | ], | 
|  | 'direct_dependent_settings': { | 
|  | 'cflags': [ | 
|  | '<!@(pkg-config --cflags libxml-2.0)', | 
|  | ], | 
|  | 'defines': [ | 
|  | 'USE_SYSTEM_LIBXML', | 
|  | ], | 
|  | }, | 
|  | 'link_settings': { | 
|  | 'ldflags': [ | 
|  | '<!@(pkg-config --libs-only-L --libs-only-other libxml-2.0)', | 
|  | ], | 
|  | 'libraries': [ | 
|  | '<!@(pkg-config --libs-only-l libxml-2.0)', | 
|  | ], | 
|  | }, | 
|  | }], | 
|  | ['OS == "ios"', { | 
|  | 'type': 'static_library', | 
|  | 'sources': [ | 
|  | 'chromium/libxml_utils.h', | 
|  | 'chromium/libxml_utils.cc', | 
|  | ], | 
|  | 'include_dirs': [ | 
|  | '$(SDKROOT)/usr/include/libxml2', | 
|  | ], | 
|  | 'all_dependent_settings': { | 
|  | 'defines': [ | 
|  | 'USE_SYSTEM_LIBXML', | 
|  | ], | 
|  | 'include_dirs': [ | 
|  | '$(SDKROOT)/usr/include/libxml2', | 
|  | ], | 
|  | }, | 
|  | 'link_settings': { | 
|  | 'libraries': [ | 
|  | '$(SDKROOT)/usr/lib/libxml2.dylib', | 
|  | ], | 
|  | }, | 
|  | }], | 
|  | ], | 
|  | }, {  # else: !use_system_libxml | 
|  | 'type': 'static_library', | 
|  | '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', | 
|  | ], | 
|  | 'defines': [ | 
|  | # 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.  (-DFOO | 
|  | # defines the macro FOO as 1.) | 
|  | 'LIBXML_STATIC=', | 
|  | ], | 
|  | 'variables': { | 
|  | 'clang_warning_flags': [ | 
|  | # 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', | 
|  | # See http://crbug.com/138571#c8 | 
|  | '-Wno-ignored-attributes', | 
|  | ], | 
|  | }, | 
|  | 'include_dirs': [ | 
|  | '<(os_include)', | 
|  | '<(os_include)/include', | 
|  | 'src/include', | 
|  | ], | 
|  | 'dependencies': [ | 
|  | '../icu/icu.gyp:icuuc', | 
|  | '../zlib/zlib.gyp:zlib', | 
|  | ], | 
|  | 'export_dependent_settings': [ | 
|  | '../icu/icu.gyp:icuuc', | 
|  | ], | 
|  | 'direct_dependent_settings': { | 
|  | 'defines': [ | 
|  | 'LIBXML_STATIC', | 
|  | ], | 
|  | 'include_dirs': [ | 
|  | '<(os_include)/include', | 
|  | 'src/include', | 
|  | ], | 
|  | }, | 
|  | 'conditions': [ | 
|  | ['OS=="linux"', { | 
|  | 'link_settings': { | 
|  | 'libraries': [ | 
|  | # We need dl for dlopen() and friends. | 
|  | '-ldl', | 
|  | '-lm', | 
|  | ], | 
|  | }, | 
|  | }], | 
|  | # 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. | 
|  | ['OS=="mac" or OS=="android"', {'defines': ['_REENTRANT']}], | 
|  | ['OS=="win"', { | 
|  | 'product_name': 'libxml2', | 
|  | # Disable unimportant 'unused variable' warning, and | 
|  | # signed/unsigned comparison warning. The signed/unsigned (4101) | 
|  | # is fixed upstream and can be removed eventually. | 
|  | # TODO(jschuh): http://crbug.com/167187 size_t -> int | 
|  | 'msvs_disabled_warnings': [ 4018, 4101, 4267 ], | 
|  | }, {  # else: OS!="win" | 
|  | 'product_name': 'xml2', | 
|  | }], | 
|  | ], | 
|  | }], | 
|  | ['OS == "ios"', { | 
|  | 'toolsets': ['host', 'target'], | 
|  | }], | 
|  | ], | 
|  | }, | 
|  | ], | 
|  | } |