-# Copyright 2016 The Chromium Authors
+# Copyright 2013 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import("//build/config/linux/pkg_config.gni")
+# Define an "os_include" variable that points at the OS-specific generated
+# headers. These were generated by running the configure script offline.
+if (is_linux || is_chromeos || is_android || is_nacl || is_fuchsia || is_tizen) {
+ os_include = "linux"
+} else if (is_apple) {
+ os_include = "mac"
+} else if (is_win) {
+ os_include = "win32"
+}
+
+import("//third_party/libxml/libxml_visibility.gni")
+
+config("libxml_config") {
+ # 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. ("defines" does "-DFOO" which defines the macro FOO as 1.)
+ cflags = [ "-DLIBXML_STATIC=" ]
+
+ include_dirs = [
+ "src/include",
+ "$os_include/include",
+ ]
+}
+
+config("libxml_warnings") {
+ if (is_win) {
+ cflags_c = [
+ "/wd4018", # Signed/unsigned mismatch in comparison.
+ "/wd4267", # TODO(brucedawson): http://crbug.com/554200 fix C4267
+ "/wd4311", # and C4311 warnings.
+ ]
+ }
+ if (is_clang) {
+ cflags = [
+ # 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",
+
+ # threads.c attempts to forward declare a pthread_equal which doesn't
+ # match the prototype in pthreads.h
+ "-Wno-ignored-attributes",
# libxml casts from int to long to void*.
"-Wno-int-to-void-pointer-cast",
configs += [ ":libxml_config" ]
}
-source_set("libxml") {
- public_configs = [ ":system_libxml" ]
+# Please keep in sync with //build/linux/unbundle/libxml.gn.
+static_library("xml_writer") {
+ # The XmlWriter is considered safe to use from any target.
+ visibility = [ "*" ]
+ sources = [
+ "chromium/xml_writer.cc",
+ "chromium/xml_writer.h",
+ ]
+ deps = [
+ ":libxml",
+ ":libxml_utils",
+ ]
+ configs += [ ":libxml_config" ]
}
-# Please keep in sync with //third_party/libxml/BUILD.gn.
+# Please keep in sync with //build/linux/unbundle/libxml.gn.
static_library("libxml_utils") {
# Do not expand this visibility list without first consulting with the
# Security Team.
"chromium/libxml_utils.cc",
"chromium/libxml_utils.h",
]
- public_configs = [ ":system_libxml" ]
+ deps = [ ":libxml" ]
+ public_deps = [ "//third_party/icu:icuuc" ]
+ public_configs = [ ":libxml_config" ]
}
-# Please keep in sync with //third_party/libxml/BUILD.gn.
-static_library("xml_reader") {
+static_library("libxml") {
# Do not expand this visibility list without first consulting with the
# Security Team.
visibility = [
- "//base/test:test_support",
- "//components/policy/core/common:unit_tests",
- "//services/data_decoder:*",
- "//tools/traffic_annotation/auditor:auditor_sources",
- ]
- sources = [
- "chromium/xml_reader.cc",
- "chromium/xml_reader.h",
+ ":libxml_utils",
+ ":xml_reader",
+ ":xml_writer",
+ "//chromecast/internal",
+ "//testing/libfuzzer/*",
+ "//third_party/blink/renderer/*",
+ "//third_party/fontconfig",
+ "//third_party/libxslt",
+ "//third_party/maldoca/*",
]
- deps = [ ":libxml_utils" ]
-}
+ if (is_ios) {
+ foreach(tgt, ios_libxml_visibility_additions) {
+ visibility += [ "//ios_internal/$tgt" ]
+ }
+ }
-# Please keep in sync with //third_party/libxml/BUILD.gn.
-static_library("xml_writer") {
- # The XmlWriter is considered safe to use from any target.
- visibility = [ "*" ]
+ output_name = "libxml2"
+
+ # Commented out sources are libxml2 files we do not want to include. They are
+ # here to make it easy to identify files which are new.
sources = [
- "chromium/xml_writer.cc",
- "chromium/xml_writer.h",
+ "src/HTMLparser.c",
+ "src/HTMLtree.c",
+
+ #"src/SAX.c",
+ "src/SAX2.c",
+ "src/buf.c",
+
+ #"src/c14n.c",
+ #"src/catalog.c",
+ "src/chvalid.c",
+
+ #"src/debugXML.c",
+ "src/dict.c",
+ "src/encoding.c",
+ "src/entities.c",
+ "src/error.c",
+ "src/globals.c",
+ "src/hash.c",
+ "src/include/libxml/HTMLparser.h",
+ "src/include/libxml/HTMLtree.h",
+ "src/include/libxml/SAX.h",
+ "src/include/libxml/SAX2.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/encoding.h",
+ "src/include/libxml/entities.h",
+ "src/include/libxml/globals.h",
+ "src/include/libxml/hash.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/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/xmlIO.h",
+ "src/include/libxml/xmlautomata.h",
+ "src/include/libxml/xmlerror.h",
+ "src/include/libxml/xmlexports.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/legacy.c",
+ "src/libxml.h",
+ "src/list.c",
+ "src/parser.c",
+ "src/parserInternals.c",
+ "src/pattern.c",
+
+ #"src/relaxng.c",
+
+ #"src/schematron.c",
+ "src/threads.c",
+ "src/timsort.h",
+ "src/tree.c",
+ "src/triodef.h",
+ "src/trionan.h",
+
+ #"src/trio.c",
+ #"src/trio.h",
+ #"src/triodef.h",
+ # Note: xpath.c #includes trionan.c
+ #"src/trionan.c",
+ #"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",
+ #"src/xzlib.c",
]
- deps = [
- ":libxml",
- ":libxml_utils",
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+
+ # Must be after no_chromium_code for warning flags to be ordered correctly.
+ ":libxml_warnings",
]
- configs += [ ":libxml_config" ]
-}
if (is_linux || is_chromeos) {
sources += [