Consider winsdk_samples a system library (attempt 3).

Using -imsvc will not trigger warnings when winsdk_samples headers are
included in WebRTC (it is similar to -isystem on GCC and clang).

Bug: webrtc:9251
Change-Id: Iae9b81ae90a3141c72b829cf27f01b9a60047dab
TBR=phoglund@webrtc.org
Reviewed-on: https://webrtc-review.googlesource.com/76720
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
diff --git a/BUILD.gn b/BUILD.gn
index 291a208..52da987 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -10,9 +10,20 @@
   baseclasses_dir = "Samples/multimedia/directshow/baseclasses"
 
   config("winsdk_samples_config") {
-    include_dirs = [ baseclasses_dir ]
+    if (is_win && is_clang) {
+      # When compiling with clang-cl, use -imsvc (similar to -isystem in clang)
+      # instead of include_dirs (-I), so we don't need to suppress warnings
+      # coming from this package in other projects.
+      "-imsvc",
+      rebase_path(baseclasses_dir, root_build_dir),
+    } else {
+      include_dirs = [ baseclasses_dir ]
+    }
   }
 
+  # These warnings suppression flags are still needed even if -imsvc is used
+  # because some of them will trigger when .cpp files in this package are
+  # compiled.
   config("winsdk_samples_warnings_config") {
     if (is_win && is_clang) {
       cflags = [