Home | History | Annotate | Download | only in libxml
      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