• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6  'variables': {
7    'conditions': [
8      # Define an "os_include" variable that points at the OS-specific generated
9      # headers.  These were generated by running the configure script offline.
10      ['os_posix == 1 and OS != "mac" and OS != "ios"', {
11        'os_include': 'linux'
12      }],
13      ['OS=="mac"', {'os_include': 'mac'}],
14      ['OS=="win"', {'os_include': 'win32'}],
15    ],
16    'use_system_libxml%': 0,
17  },
18  'targets': [
19    {
20      'target_name': 'libxml',
21      'conditions': [
22        ['use_system_libxml', {
23          'conditions': [
24            ['os_posix == 1 and OS != "mac" and OS != "ios"', {
25              'type': 'static_library',
26              'sources': [
27                'chromium/libxml_utils.h',
28                'chromium/libxml_utils.cc',
29              ],
30              'cflags': [
31                '<!@(pkg-config --cflags libxml-2.0)',
32              ],
33              'defines': [
34                'USE_SYSTEM_LIBXML',
35              ],
36              'direct_dependent_settings': {
37                'cflags': [
38                  '<!@(pkg-config --cflags libxml-2.0)',
39                ],
40                'defines': [
41                  'USE_SYSTEM_LIBXML',
42                ],
43              },
44              'link_settings': {
45                'ldflags': [
46                  '<!@(pkg-config --libs-only-L --libs-only-other libxml-2.0)',
47                ],
48                'libraries': [
49                  '<!@(pkg-config --libs-only-l libxml-2.0)',
50                ],
51              },
52            }],
53            ['OS == "ios"', {
54              'type': 'none',
55              'all_dependent_settings': {
56                'defines': [
57                  'USE_SYSTEM_LIBXML',
58                ],
59                'include_dirs': [
60                  '$(SDKROOT)/usr/include/libxml2',
61                ],
62              },
63              'link_settings': {
64                'libraries': [
65                  '$(SDKROOT)/usr/lib/libxml2.dylib',
66                ],
67              },
68            }],
69          ],
70        }, {  # else: !use_system_libxml
71          'type': 'static_library',
72          'sources': [
73            'chromium/libxml_utils.h',
74            'chromium/libxml_utils.cc',
75            'linux/config.h',
76            'linux/include/libxml/xmlversion.h',
77            'mac/config.h',
78            'mac/include/libxml/xmlversion.h',
79            'src/include/libxml/c14n.h',
80            'src/include/libxml/catalog.h',
81            'src/include/libxml/chvalid.h',
82            'src/include/libxml/debugXML.h',
83            'src/include/libxml/dict.h',
84            'src/include/libxml/DOCBparser.h',
85            'src/include/libxml/encoding.h',
86            'src/include/libxml/entities.h',
87            'src/include/libxml/globals.h',
88            'src/include/libxml/hash.h',
89            'src/include/libxml/HTMLparser.h',
90            'src/include/libxml/HTMLtree.h',
91            'src/include/libxml/list.h',
92            'src/include/libxml/nanoftp.h',
93            'src/include/libxml/nanohttp.h',
94            'src/include/libxml/parser.h',
95            'src/include/libxml/parserInternals.h',
96            'src/include/libxml/pattern.h',
97            'src/include/libxml/relaxng.h',
98            'src/include/libxml/SAX.h',
99            'src/include/libxml/SAX2.h',
100            'src/include/libxml/schemasInternals.h',
101            'src/include/libxml/schematron.h',
102            'src/include/libxml/threads.h',
103            'src/include/libxml/tree.h',
104            'src/include/libxml/uri.h',
105            'src/include/libxml/valid.h',
106            'src/include/libxml/xinclude.h',
107            'src/include/libxml/xlink.h',
108            'src/include/libxml/xmlautomata.h',
109            'src/include/libxml/xmlerror.h',
110            'src/include/libxml/xmlexports.h',
111            'src/include/libxml/xmlIO.h',
112            'src/include/libxml/xmlmemory.h',
113            'src/include/libxml/xmlmodule.h',
114            'src/include/libxml/xmlreader.h',
115            'src/include/libxml/xmlregexp.h',
116            'src/include/libxml/xmlsave.h',
117            'src/include/libxml/xmlschemas.h',
118            'src/include/libxml/xmlschemastypes.h',
119            'src/include/libxml/xmlstring.h',
120            'src/include/libxml/xmlunicode.h',
121            'src/include/libxml/xmlwriter.h',
122            'src/include/libxml/xpath.h',
123            'src/include/libxml/xpathInternals.h',
124            'src/include/libxml/xpointer.h',
125            'src/include/win32config.h',
126            'src/include/wsockcompat.h',
127            'src/acconfig.h',
128            'src/c14n.c',
129            'src/catalog.c',
130            'src/chvalid.c',
131            'src/debugXML.c',
132            'src/dict.c',
133            'src/DOCBparser.c',
134            'src/elfgcchack.h',
135            'src/encoding.c',
136            'src/entities.c',
137            'src/error.c',
138            'src/globals.c',
139            'src/hash.c',
140            'src/HTMLparser.c',
141            'src/HTMLtree.c',
142            'src/legacy.c',
143            'src/libxml.h',
144            'src/list.c',
145            'src/nanoftp.c',
146            'src/nanohttp.c',
147            'src/parser.c',
148            'src/parserInternals.c',
149            'src/pattern.c',
150            'src/relaxng.c',
151            'src/SAX.c',
152            'src/SAX2.c',
153            'src/schematron.c',
154            'src/threads.c',
155            'src/tree.c',
156            #'src/trio.c',
157            #'src/trio.h',
158            #'src/triodef.h',
159            #'src/trionan.c',
160            #'src/trionan.h',
161            #'src/triop.h',
162            #'src/triostr.c',
163            #'src/triostr.h',
164            'src/uri.c',
165            'src/valid.c',
166            'src/xinclude.c',
167            'src/xlink.c',
168            'src/xmlIO.c',
169            'src/xmlmemory.c',
170            'src/xmlmodule.c',
171            'src/xmlreader.c',
172            'src/xmlregexp.c',
173            'src/xmlsave.c',
174            'src/xmlschemas.c',
175            'src/xmlschemastypes.c',
176            'src/xmlstring.c',
177            'src/xmlunicode.c',
178            'src/xmlwriter.c',
179            'src/xpath.c',
180            'src/xpointer.c',
181            'win32/config.h',
182            'win32/include/libxml/xmlversion.h',
183          ],
184          'defines': [
185            # Define LIBXML_STATIC as nothing to match how libxml.h
186            # (an internal header) defines LIBXML_STATIC, otherwise
187            # we get the macro redefined warning from GCC.  (-DFOO
188            # defines the macro FOO as 1.)
189            'LIBXML_STATIC=',
190          ],
191          'include_dirs': [
192            '<(os_include)',
193            '<(os_include)/include',
194            'src/include',
195          ],
196          'dependencies': [
197            '../icu/icu.gyp:icuuc',
198            '../zlib/zlib.gyp:zlib',
199          ],
200          'export_dependent_settings': [
201            '../icu/icu.gyp:icuuc',
202          ],
203          'direct_dependent_settings': {
204            'defines': [
205              'LIBXML_STATIC',
206            ],
207            'include_dirs': [
208              '<(os_include)/include',
209              'src/include',
210            ],
211          },
212          'conditions': [
213            ['OS=="linux"', {
214              'link_settings': {
215                'libraries': [
216                  # We need dl for dlopen() and friends.
217                  '-ldl',
218                ],
219              },
220            }],
221            # http://www.xmlsoft.org/threads.html says that this is required
222            # when using libxml from several threads, which can possibly happen
223            # in chrome. On linux, this is picked up by transitivity from
224            # pkg-config output from build/linux/system.gyp.
225            ['OS=="mac" or OS=="android"', {'defines': ['_REENTRANT']}],
226            ['OS=="win"', {
227              'product_name': 'libxml2',
228              # Disable unimportant 'unused variable' warning, and
229              # signed/unsigned comparison warning. The signed/unsigned (4101)
230              # is fixed upstream and can be removed eventually.
231              # TODO(jschuh): http://crbug.com/167187 size_t -> int
232              'msvs_disabled_warnings': [ 4018, 4101, 4267 ],
233            }, {  # else: OS!="win"
234              'product_name': 'xml2',
235            }],
236            ['clang==1', {
237              'xcode_settings': {
238                'WARNING_CFLAGS': [
239                  # libxml passes `const unsigned char*` through `const char*`.
240                  '-Wno-pointer-sign',
241                  # pattern.c and uri.c both have an intentional
242                  # `for (...);` / `while(...);` loop. I submitted a patch to
243                  # move the `'` to its own line, but until that's landed
244                  # suppress the warning:
245                  '-Wno-empty-body',
246                  # debugXML.c compares array 'arg' to NULL.
247                  '-Wno-tautological-pointer-compare',
248                ],
249              },
250              'cflags': [
251                '-Wno-pointer-sign',
252                '-Wno-empty-body',
253                '-Wno-tautological-pointer-compare',
254
255                # See http://crbug.com/138571#c8
256                '-Wno-ignored-attributes',
257              ],
258              'msvs_settings': {
259                'VCCLCompilerTool': {
260                  'AdditionalOptions': [
261                    # VS2012's standard lib doesn't provide nan().
262                    '/U__STDC_VERSION__',
263                  ],
264                },
265              },
266            }],
267          ],
268        }],
269      ],
270    },
271  ],
272}
273