Get skiaserve working on Windows.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1903203003

Review URL: https://codereview.chromium.org/1903203003
diff --git a/gyp/microhttpd.gyp b/gyp/microhttpd.gyp
index 4e990cd..378d9a0 100644
--- a/gyp/microhttpd.gyp
+++ b/gyp/microhttpd.gyp
@@ -180,6 +180,67 @@
             '_MHD_EXTERN=__attribute__((visibility("default"))) extern',
         ],
       }],
+      ['skia_os == "win"', {
+        'sources': [
+            '../third_party/externals/microhttpd/src/platform/w32functions.c',
+        ],
+        'msvs_disabled_warnings': [4244, 4996],
+        'all_dependent_settings': {
+          'msvs_settings': {
+            'VCLinkerTool': {
+              'AdditionalDependencies': [ 'ws2_32.lib' ],
+            },
+          },
+        },
+        'defines=': [             # equals sign throws away most Skia defines (just noise)
+            "_GNU_SOURCE=1",
+            "BAUTH_SUPPORT=1",
+            "DAUTH_SUPPORT=1",
+            "EPOLL_SUPPORT=0",
+            "HAVE_DECL_SOCK_NONBLOCK=0",
+            "HAVE_DECL_TCP_CORK=0",
+            "HAVE_DECL_TCP_NOPUSH=0",
+            "HAVE_ERRNO_H=1",
+            "HAVE_FCNTL_H=1",
+            "HAVE_INET6=1",
+            "HAVE_INTTYPES_H=1",
+            "HAVE_LIMITS_H=1",
+            "HAVE_LOCALE_H=1",
+            "HAVE_MATH_H=1",
+            "HAVE_MEMORY_H=1",
+            "HAVE_MESSAGES=1",
+#            "HAVE_POLL=0",
+            "HAVE_POSTPROCESSOR=1",
+            "HAVE_PTHREAD_H=0",
+            "HAVE_STDINT_H=1",
+            "HAVE_STDIO_H=1",
+            "HAVE_STDLIB_H=1",
+            "HAVE_STRINGS_H=1",
+            "HAVE_STRING_H=1",
+            "HAVE_SYS_STAT_H=1",
+            "HAVE_SYS_TYPES_H=1",
+            "HAVE_TIME_H=1",
+            "HAVE_WINSOCK2_H=1",
+            "HAVE_WS2TCPIP_H=1",
+            "HTTPS_SUPPORT=0",
+            "MSVC=1",
+            "WINDOWS=1",
+            'LT_OBJDIR=".libs/"',
+            "MHD_DONT_USE_PIPES=1",
+            "MHD_USE_W32_THREADS=1",
+            'PACKAGE="libmicrohttpd"',
+            'PACKAGE_BUGREPORT="libmicrohttpd@gnu.org"',
+            'PACKAGE_NAME="libmicrohttp"',
+            'PACKAGE_STRING="libmicrohttpd 0.9.42"',
+            'PACKAGE_TARNAME="libmicrohttpd"',
+            'PACKAGE_URL=""',
+            'PACKAGE_VERSION="0.9.42"',
+            "SPDY_SUPPORT=0",
+            "STDC_HEADERS=1",
+            'VERSION="0.9.42"',
+            '_MHD_EXTERN=extern',
+        ],
+      }],
     ]
   }]
 }
diff --git a/gyp/most.gyp b/gyp/most.gyp
index 6c7fc02..d4babe1 100644
--- a/gyp/most.gyp
+++ b/gyp/most.gyp
@@ -72,6 +72,10 @@
         ['skia_os == "mac" or skia_os == "linux"', {
           'dependencies': [ 
             'nanomsg.gyp:*' ,
+          ],
+        }],
+        ['skia_os in ["linux", "mac", "win"]', {
+          'dependencies': [
             'skiaserve.gyp:skiaserve',
           ],
         }],
diff --git a/tools/skiaserve/Request.cpp b/tools/skiaserve/Request.cpp
index 7cbc9ef..b16c5cf 100644
--- a/tools/skiaserve/Request.cpp
+++ b/tools/skiaserve/Request.cpp
@@ -98,7 +98,8 @@
     // Playback into picture recorder
     SkIRect bounds = this->getBounds();
     SkPictureRecorder recorder;
-    SkCanvas* canvas = recorder.beginRecording(bounds.width(), bounds.height());
+    SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(bounds.width()),
+                                               SkIntToScalar(bounds.height()));
 
     fDebugCanvas->draw(canvas);
 
diff --git a/tools/skiaserve/skiaserve.cpp b/tools/skiaserve/skiaserve.cpp
index 77b2cc0..c2c5150 100644
--- a/tools/skiaserve/skiaserve.cpp
+++ b/tools/skiaserve/skiaserve.cpp
@@ -16,8 +16,11 @@
 #include "urlhandlers/UrlHandler.h"
 
 #include <errno.h>
+
+#if !defined _WIN32
 #include <sys/socket.h>
 #include <arpa/inet.h>
+#endif
 
 using namespace Response;
 
diff --git a/tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp b/tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp
index b14db19..3eb51d2 100644
--- a/tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp
+++ b/tools/skiaserve/urlhandlers/BatchBoundsHandler.cpp
@@ -32,6 +32,6 @@
     int enabled;
     sscanf(commands[1].c_str(), "%d", &enabled);
 
-    request->fDebugCanvas->setDrawGpuBatchBounds(enabled);
+    request->fDebugCanvas->setDrawGpuBatchBounds(SkToBool(enabled));
     return SendOK(connection);
 }
diff --git a/tools/skiaserve/urlhandlers/CmdHandler.cpp b/tools/skiaserve/urlhandlers/CmdHandler.cpp
index 09fdc17..22877e7 100644
--- a/tools/skiaserve/urlhandlers/CmdHandler.cpp
+++ b/tools/skiaserve/urlhandlers/CmdHandler.cpp
@@ -54,7 +54,7 @@
         int n, toggle;
         sscanf(commands[1].c_str(), "%d", &n);
         sscanf(commands[2].c_str(), "%d", &toggle);
-        request->fDebugCanvas->toggleCommand(n, toggle);
+        request->fDebugCanvas->toggleCommand(n, SkToBool(toggle));
         return SendOK(connection);
     }
 
diff --git a/tools/skiaserve/urlhandlers/EnableGPUHandler.cpp b/tools/skiaserve/urlhandlers/EnableGPUHandler.cpp
index 68eb86f..7364ef0 100644
--- a/tools/skiaserve/urlhandlers/EnableGPUHandler.cpp
+++ b/tools/skiaserve/urlhandlers/EnableGPUHandler.cpp
@@ -32,7 +32,7 @@
     int enable;
     sscanf(commands[1].c_str(), "%d", &enable);
 
-    bool success = request->enableGPU(enable);
+    bool success = request->enableGPU(SkToBool(enable));
     if (!success) {
         return SendError(connection, "Unable to create GPU surface");
     }
diff --git a/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp b/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp
index df06050..1dd9789 100644
--- a/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp
+++ b/tools/skiaserve/urlhandlers/SRGBModeHandler.cpp
@@ -34,7 +34,7 @@
         return MHD_NO;
     }
 
-    bool success = request->setSRGBMode(enable);
+    bool success = request->setSRGBMode(SkToBool(enable));
     if (!success) {
         return SendError(connection, "Unable to set requested mode");
     }