Use third party libxml 84/308384/3 accepted/tizen/unified/20240325.141256 accepted/tizen/unified/x/20240325.120558 submit/tizen/20240322.160024
authorChandan Padhi <c.padhi@samsung.com>
Fri, 22 Mar 2024 11:51:30 +0000 (17:21 +0530)
committerChandan Padhi <c.padhi@samsung.com>
Fri, 22 Mar 2024 13:11:14 +0000 (13:11 +0000)
System libxml update results in build errors in QB.

Change-Id: I039ec4bd18a6842f8608b9e48d3bef73d2311f20
Signed-off-by: Chandan Padhi <c.padhi@samsung.com>
third_party/libxml/BUILD.gn
tizen_src/build/common.sh

index 3772c67..d40e166 100644 (file)
@@ -1,8 +1,55 @@
-# 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",
@@ -51,11 +98,22 @@ static_library("xml_reader") {
   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.
@@ -70,40 +128,156 @@ static_library("libxml_utils") {
     "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 += [
index 1dd2645..45054d5 100755 (executable)
@@ -25,7 +25,6 @@ function getSystemDeps() {
   local platform=$1
   local system_deps="--system-libraries
                      libpng
-                     libxml
                      libxslt
                      zlib
                     "