GN/Win: everything but skiaserve links.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3240

Change-Id: I85c306f89f3a7faa7f50dadf465122844d015604
Reviewed-on: https://skia-review.googlesource.com/3240
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index 770d3f2..e3be1c8 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -551,10 +551,16 @@
       "src/ports/SkTLS_win.cpp",
       "src/ports/SkTypeface_win_dw.cpp",
       "src/xps/SkDocument_XPS.cpp",
+      "src/xps/SkXPSDevice.cpp",
     ]
     sources -=
         [ get_path_info("src/utils/SkThreadUtils_pthread.cpp", "abspath") ]
-    libs += [ "User32.lib" ]  # For SkFontMgr_win_dw.cpp.
+    libs += [
+      "FontSub.lib",
+      "Ole32.lib",
+      "OleAut32.lib",
+      "User32.lib",
+    ]
   } else {
     sources += [
       "src/ports/SkOSFile_posix.cpp",
@@ -703,6 +709,12 @@
         sources += [ "tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp" ]
       } else if (is_mac) {
         sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
+      } else if (is_win) {
+        sources += [ "tools/gpu/gl/win/CreatePlatformGLTestContext_win.cpp" ]
+        libs += [
+          "Gdi32.lib",
+          "OpenGL32.lib",
+        ]
       }
 
       if (skia_use_angle) {
@@ -941,7 +953,9 @@
     }
   }
 
-  if (current_cpu != "mipsel") {  # Clang 3.8 crashes while compiling hb-icu.cc for mipsel.
+  # Clang 3.8 crashes while compiling hb-icu.cc for mipsel.
+  # We can't yet build ICU on Windows.
+  if (current_cpu != "mipsel" && !is_win) {
     executable("sktexttopdf-hb") {
       sources = [
         "tools/SkShaper_harfbuzz.cpp",
diff --git a/third_party/expat/BUILD.gn b/third_party/expat/BUILD.gn
index 1219008..b493a21 100644
--- a/third_party/expat/BUILD.gn
+++ b/third_party/expat/BUILD.gn
@@ -9,6 +9,7 @@
 import("../third_party.gni")
 
 third_party("expat") {
+  public_defines = [ "XML_STATIC" ]
   public_include_dirs = [ "../externals/expat/lib" ]
 
   defines = [ "HAVE_MEMMOVE" ]
diff --git a/third_party/third_party.gni b/third_party/third_party.gni
index 37b1e03..dd9f057 100644
--- a/third_party/third_party.gni
+++ b/third_party/third_party.gni
@@ -5,6 +5,9 @@
 
 template("third_party") {
   config(target_name + "_public") {
+    if (defined(invoker.public_defines)) {
+      defines = invoker.public_defines
+    }
     include_dirs = invoker.public_include_dirs
   }
   source_set(target_name) {