1 # Copyright (c) 2013 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 # Define an "os_include" variable that points at the OS-specific generated 6 # headers. These were generated by running the configure script offline. 7 if (is_linux || is_android) { 8 os_include = "linux" 9 } else if (is_mac || is_ios) { 10 os_include = "mac" 11 } else if (is_win) { 12 os_include = "win32" 13 } 14 15 config("libxml_config") { 16 # Define LIBXML_STATIC as nothing to match how libxml.h (an internal header) 17 # defines LIBXML_STATIC, otherwise we get the macro redefined warning from 18 # GCC. ("defines" does "-DFOO" which defines the macro FOO as 1.) 19 cflags = [ "-DLIBXML_STATIC=" ] 20 21 include_dirs = [ 22 "src/include", 23 "$os_include/include", 24 ] 25 } 26 27 static_library("libxml") { 28 output_name = "libxml2" 29 sources = [ 30 "chromium/libxml_utils.h", 31 "chromium/libxml_utils.cc", 32 "linux/config.h", 33 "linux/include/libxml/xmlversion.h", 34 "mac/config.h", 35 "mac/include/libxml/xmlversion.h", 36 "src/include/libxml/c14n.h", 37 "src/include/libxml/catalog.h", 38 "src/include/libxml/chvalid.h", 39 "src/include/libxml/debugXML.h", 40 "src/include/libxml/dict.h", 41 "src/include/libxml/DOCBparser.h", 42 "src/include/libxml/encoding.h", 43 "src/include/libxml/entities.h", 44 "src/include/libxml/globals.h", 45 "src/include/libxml/hash.h", 46 "src/include/libxml/HTMLparser.h", 47 "src/include/libxml/HTMLtree.h", 48 "src/include/libxml/list.h", 49 "src/include/libxml/nanoftp.h", 50 "src/include/libxml/nanohttp.h", 51 "src/include/libxml/parser.h", 52 "src/include/libxml/parserInternals.h", 53 "src/include/libxml/pattern.h", 54 "src/include/libxml/relaxng.h", 55 "src/include/libxml/SAX.h", 56 "src/include/libxml/SAX2.h", 57 "src/include/libxml/schemasInternals.h", 58 "src/include/libxml/schematron.h", 59 "src/include/libxml/threads.h", 60 "src/include/libxml/tree.h", 61 "src/include/libxml/uri.h", 62 "src/include/libxml/valid.h", 63 "src/include/libxml/xinclude.h", 64 "src/include/libxml/xlink.h", 65 "src/include/libxml/xmlautomata.h", 66 "src/include/libxml/xmlerror.h", 67 "src/include/libxml/xmlexports.h", 68 "src/include/libxml/xmlIO.h", 69 "src/include/libxml/xmlmemory.h", 70 "src/include/libxml/xmlmodule.h", 71 "src/include/libxml/xmlreader.h", 72 "src/include/libxml/xmlregexp.h", 73 "src/include/libxml/xmlsave.h", 74 "src/include/libxml/xmlschemas.h", 75 "src/include/libxml/xmlschemastypes.h", 76 "src/include/libxml/xmlstring.h", 77 "src/include/libxml/xmlunicode.h", 78 "src/include/libxml/xmlwriter.h", 79 "src/include/libxml/xpath.h", 80 "src/include/libxml/xpathInternals.h", 81 "src/include/libxml/xpointer.h", 82 "src/include/win32config.h", 83 "src/include/wsockcompat.h", 84 "src/acconfig.h", 85 "src/c14n.c", 86 "src/catalog.c", 87 "src/chvalid.c", 88 "src/debugXML.c", 89 "src/dict.c", 90 "src/DOCBparser.c", 91 "src/elfgcchack.h", 92 "src/encoding.c", 93 "src/entities.c", 94 "src/error.c", 95 "src/globals.c", 96 "src/hash.c", 97 "src/HTMLparser.c", 98 "src/HTMLtree.c", 99 "src/legacy.c", 100 "src/libxml.h", 101 "src/list.c", 102 "src/nanoftp.c", 103 "src/nanohttp.c", 104 "src/parser.c", 105 "src/parserInternals.c", 106 "src/pattern.c", 107 "src/relaxng.c", 108 "src/SAX.c", 109 "src/SAX2.c", 110 "src/schematron.c", 111 "src/threads.c", 112 "src/tree.c", 113 #"src/trio.c", 114 #"src/trio.h", 115 #"src/triodef.h", 116 #"src/trionan.c", 117 #"src/trionan.h", 118 #"src/triop.h", 119 #"src/triostr.c", 120 #"src/triostr.h", 121 "src/uri.c", 122 "src/valid.c", 123 "src/xinclude.c", 124 "src/xlink.c", 125 "src/xmlIO.c", 126 "src/xmlmemory.c", 127 "src/xmlmodule.c", 128 "src/xmlreader.c", 129 "src/xmlregexp.c", 130 "src/xmlsave.c", 131 "src/xmlschemas.c", 132 "src/xmlschemastypes.c", 133 "src/xmlstring.c", 134 "src/xmlunicode.c", 135 "src/xmlwriter.c", 136 "src/xpath.c", 137 "src/xpointer.c", 138 "win32/config.h", 139 "win32/include/libxml/xmlversion.h", 140 ] 141 142 configs -= [ "//build/config/compiler:chromium_code" ] 143 configs += [ "//build/config/compiler:no_chromium_code" ] 144 145 direct_dependent_configs = [ ":libxml_config" ] 146 forward_dependent_configs_from = [ "//third_party/icu:icuuc" ] 147 148 deps = [ 149 "//third_party/icu:icuuc", 150 "//third_party/zlib", 151 ] 152 153 if (is_win) { 154 cflags_c = [ 155 "/wd4101", # Unreferenced local variable. 156 ] 157 } else if (is_mac || is_android) { 158 # http://www.xmlsoft.org/threads.html says that this is required when using 159 # libxml from several threads, which can possibly happen in chrome. On 160 # linux, this is picked up by transitivity from pkg-config output from 161 # build/linux/system.gyp. 162 defines = [ "_REENTRANT" ] 163 } 164 165 if (is_clang) { 166 cflags = [ 167 # libxml passes `const unsigned char*` through `const char*`. 168 "-Wno-pointer-sign", 169 170 # pattern.c and uri.c both have an intentional `for (...);` / 171 # `while(...);` loop. I submitted a patch to move the `'` to its own 172 # line, but until that's landed suppress the warning: 173 "-Wno-empty-body", 174 175 # See http://crbug.com/138571#c8 176 "-Wno-ignored-attributes", 177 ] 178 if (is_mac) { 179 # Mac Clang warnings. 180 cflags += [ 181 # debugXML.c compares array 'arg' to NULL. 182 "-Wno-tautological-pointer-compare", 183 ] 184 } 185 } 186 187 include_dirs = [ 188 "$os_include", 189 ] 190 } 191