Fixed cross compilation with mingw.

Tested in Mozilla source tree. I tried to use skia build system, but it's up to the task for cross compilation.

SkHRESULT.cpp - Use proper file name (that matters on case sensitive OSes)

SkAtomics_win.h - Don't use pragma intrinsic on GCC (this causes massive warnings)

SkOSFile_win.cpp - This one is tricky. GCC doesn't allow (void*) casts in template argument constants and INVALID_HANDLE_VALUE looks like this:
((HANDLE)(LONG_PTR)-1)
where HANDLE is typedefed to void*. Changed the code to use LONG_PTR as template argument and cast it when needed.

BUG=skia:
R=bungeman@google.com, reed@google.com

Author: cjacek@gmail.com

Review URL: https://codereview.chromium.org/198643004

git-svn-id: http://skia.googlecode.com/svn/trunk@13862 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/AUTHORS b/AUTHORS
index 4bef933..0e8abcc 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -16,6 +16,7 @@
 George Wright <george@mozilla.com>
 Google Inc. <*@google.com>
 Intel <*@intel.com>
+Jacek Caban <cjacek@gmail.com>
 NVIDIA <*@nvidia.com>
 Samsung <*@samsung.com>
 The Chromium Authors <*@chromium.org>
diff --git a/include/core/SkPostConfig.h b/include/core/SkPostConfig.h
index dc76522..8f62a70 100644
--- a/include/core/SkPostConfig.h
+++ b/include/core/SkPostConfig.h
@@ -374,7 +374,7 @@
 //////////////////////////////////////////////////////////////////////
 
 #ifndef SK_ATOMICS_PLATFORM_H
-#  if defined(SK_BUILD_FOR_WIN)
+#  if defined(_MSC_VER)
 #    define SK_ATOMICS_PLATFORM_H "../../src/ports/SkAtomics_win.h"
 #  elif defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
 #    define SK_ATOMICS_PLATFORM_H "../../src/ports/SkAtomics_android.h"
diff --git a/src/ports/SkOSFile_win.cpp b/src/ports/SkOSFile_win.cpp
index 7fec557..a084891 100644
--- a/src/ports/SkOSFile_win.cpp
+++ b/src/ports/SkOSFile_win.cpp
@@ -50,18 +50,16 @@
            && aID.fVolume == bID.fVolume;
 }
 
-template <typename HandleType, HandleType InvalidValue, BOOL (WINAPI * Close)(HandleType)>
-class SkAutoTHandle : SkNoncopyable {
+class SkAutoNullKernelHandle : SkNoncopyable {
 public:
-    SkAutoTHandle(HandleType handle) : fHandle(handle) { }
-    ~SkAutoTHandle() { Close(fHandle); }
-    operator HandleType() { return fHandle; }
-    bool isValid() { return InvalidValue != fHandle; }
+    SkAutoNullKernelHandle(const HANDLE handle) : fHandle(handle) { }
+    ~SkAutoNullKernelHandle() { CloseHandle(fHandle); }
+    operator HANDLE() const { return fHandle; }
+    bool isValid() const { return NULL != fHandle; }
 private:
-    HandleType fHandle;
+    HANDLE fHandle;
 };
-typedef SkAutoTHandle<HANDLE, INVALID_HANDLE_VALUE, CloseHandle> SkAutoWinFile;
-typedef SkAutoTHandle<HANDLE, NULL, CloseHandle> SkAutoWinMMap;
+typedef SkAutoNullKernelHandle SkAutoWinMMap;
 
 void sk_fmunmap(const void* addr, size_t) {
     UnmapViewOfFile(addr);
diff --git a/src/utils/win/SkHRESULT.cpp b/src/utils/win/SkHRESULT.cpp
index 32d9d4c..111cb76 100644
--- a/src/utils/win/SkHRESULT.cpp
+++ b/src/utils/win/SkHRESULT.cpp
@@ -7,7 +7,7 @@
 
 #include "SkTypes.h"
 
-#include "SKHRESULT.h"
+#include "SkHRESULT.h"
 
 void SkTraceHR(const char* file, unsigned long line,
                HRESULT hr, const char* msg) {