Index: third_party/libxml/BUILD.gn |
diff --git a/third_party/libxml/BUILD.gn b/third_party/libxml/BUILD.gn |
index c9676088ac2ff77225ef5a0e4841295b0aa79310..5e633c04b384ed809b6e8201f4f32968a36e17ad 100644 |
--- a/third_party/libxml/BUILD.gn |
+++ b/third_party/libxml/BUILD.gn |
@@ -24,6 +24,44 @@ config("libxml_config") { |
] |
} |
+config("libxml_warnings") { |
+ if (is_win) { |
+ cflags_c = [ |
+ "/wd4018", # Signed/unsigned mismatch in comparison. |
+ "/wd4101", # Unreferenced local variable. |
+ ] |
+ } |
+ 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", |
+ |
+ # libxml passes a volatile LPCRITICAL_SECTION* to a function expecting |
+ # a void* volatile*. |
+ "-Wno-incompatible-pointer-types", |
+ |
+ # trio_is_special_quantity and trio_is_negative are only |
+ # used with certain preprocessor defines set. |
+ "-Wno-unused-function", |
+ ] |
+ } |
+} |
+ |
static_library("libxml") { |
output_name = "libxml2" |
sources = [ |
@@ -144,7 +182,12 @@ static_library("libxml") { |
] |
configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
+ configs += [ |
+ "//build/config/compiler:no_chromium_code", |
+ |
+ # Must be after no_chromium_code for warning flags to be ordered correctly. |
+ ":libxml_warnings", |
+ ] |
public_configs = [ ":libxml_config" ] |
public_deps = [ |
@@ -154,12 +197,7 @@ static_library("libxml") { |
"//third_party/zlib", |
] |
- if (is_win) { |
- cflags_c = [ |
- "/wd4018", # Signed/unsigned mismatch in comparison. |
- "/wd4101", # Unreferenced local variable. |
- ] |
- } else if (is_mac || is_ios || is_android) { |
+ if (is_mac || is_ios || is_android) { |
# http://www.xmlsoft.org/threads.html says that this is required when using |
# libxml from several threads, which can possibly happen in chrome. On |
# linux, this is picked up by transitivity from pkg-config output from |
@@ -167,38 +205,5 @@ static_library("libxml") { |
defines = [ "_REENTRANT" ] |
} |
- config("libxml_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", |
- |
- # libxml passes a volatile LPCRITICAL_SECTION* to a function expecting |
- # a void* volatile*. |
- "-Wno-incompatible-pointer-types", |
- |
- # trio_is_special_quantity and trio_is_negative are only |
- # used with certain preprocessor defines set. |
- "-Wno-unused-function", |
- ] |
- } |
- } |
- configs += [ ":libxml_warnings" ] |
- |
include_dirs = [ "$os_include" ] |
} |