| # 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', | 
 |                 ], | 
 |               }, | 
 |             }], | 
 |             # 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'], | 
 |         }], | 
 |       ], | 
 |     }, | 
 |   ], | 
 | } |