[gn build] make WindowsManifestMerger.cpp build fine with sysroot

This already works in the cmake build.

Differential Revision: https://reviews.llvm.org/D96889

GitOrigin-RevId: 0dd2ffb3921cc23970f113131435fb650d2f2d41
diff --git a/utils/gn/build/BUILD.gn b/utils/gn/build/BUILD.gn
index ecfd6f9..1829631 100644
--- a/utils/gn/build/BUILD.gn
+++ b/utils/gn/build/BUILD.gn
@@ -1,5 +1,6 @@
 import("//llvm/utils/gn/build/buildflags.gni")
 import("//llvm/utils/gn/build/mac_sdk.gni")
+import("//llvm/utils/gn/build/sysroot.gni")
 import("//llvm/utils/gn/build/toolchain/compiler.gni")
 import("//llvm/utils/gn/build/toolchain/target_flags.gni")
 
@@ -22,9 +23,6 @@
 
   # The version of host gcc. Ignored if is_clang is true.
   gcc_version = 9
-
-  # Path of sysroot to use.
-  sysroot = ""
 }
 
 assert(!llvm_build_instrumented_coverage || is_clang,
@@ -292,6 +290,9 @@
       cflags += [ "/winsysroot" + rebase_path(sysroot, root_build_dir) ]
     } else {
       cflags += [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ]
+      if (is_clang) {
+        cflags += [ "-Wpoison-system-directories"]
+      }
     }
   }
 
diff --git a/utils/gn/build/libs/xml/BUILD.gn b/utils/gn/build/libs/xml/BUILD.gn
index 3af3c85..5d52264 100644
--- a/utils/gn/build/libs/xml/BUILD.gn
+++ b/utils/gn/build/libs/xml/BUILD.gn
@@ -1,5 +1,6 @@
 import("//llvm/utils/gn/build/libs/xml/enable.gni")
 import("//llvm/utils/gn/build/mac_sdk.gni")
+import("//llvm/utils/gn/build/sysroot.gni")
 
 config("xml_config") {
   visibility = [ ":xml" ]
@@ -7,7 +8,7 @@
   if (host_os == "mac") {
     include_dirs = [ "$mac_sdk_path/usr/include/libxml2" ]
   } else {
-    include_dirs = [ "/usr/include/libxml2" ]
+    include_dirs = [ "$sysroot/usr/include/libxml2" ]
   }
 }
 
diff --git a/utils/gn/build/sysroot.gni b/utils/gn/build/sysroot.gni
new file mode 100644
index 0000000..b1b4e74
--- /dev/null
+++ b/utils/gn/build/sysroot.gni
@@ -0,0 +1,4 @@
+declare_args() {
+  # Path of sysroot to use.
+  sysroot = ""
+}