Fix the build for mingw and CMake + VStudio

Changes to the build to add the new Win32 Crypto API's inadvertently broke
the build for mingw and Visual Studio builds when generated by CMake.

Signed-off-by: Simon Butcher <simon.butcher@arm.com>
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 83204f3..6215077 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -213,7 +213,7 @@
 endif()
 
 if(WIN32)
-    set(libs ${libs} ws2_32)
+    set(libs ${libs} ws2_32 bcrypt)
 endif(WIN32)
 
 if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
diff --git a/library/Makefile b/library/Makefile
index 69ccbfd..5d645f7 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -302,7 +302,7 @@
 
 libmbedcrypto.dll: $(OBJS_CRYPTO)
 	echo "  LD    $@"
-	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_CRYPTO) -lws2_32 -lwinmm -lgdi32 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
+	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_CRYPTO) -lws2_32 -lbcrypt -lwinmm -lgdi32 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
 
 .c.o:
 	echo "  CC    $<"
diff --git a/library/entropy_poll.c b/library/entropy_poll.c
index 0ccc34f..1e465af 100644
--- a/library/entropy_poll.c
+++ b/library/entropy_poll.c
@@ -51,7 +51,7 @@
 #include <windows.h>
 #if _WIN32_WINNT >= 0x0501 /* _WIN32_WINNT_WINXP */
 #include <bcrypt.h>
-#if _MSC_VER <= 1600
+#if defined(_MSC_VER) && _MSC_VER <= 1600
 /* Visual Studio 2010 and earlier issue a warning when both <stdint.h> and <intsafe.h> are included, as they
  * redefine a number of <TYPE>_MAX constants. These constants are guaranteed to be the same, though, so
  * we suppress the warning when including intsafe.h.
@@ -60,7 +60,7 @@
 #pragma warning( disable : 4005 )
 #endif
 #include <intsafe.h>
-#if _MSC_VER <= 1600
+#if defined(_MSC_VER) && _MSC_VER <= 1600
 #pragma warning( pop )
 #endif
 
diff --git a/library/x509_crt.c b/library/x509_crt.c
index 136f60b..8fc8a52 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -61,7 +61,7 @@
 #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
-#if _MSC_VER <= 1600
+#if defined(_MSC_VER) && _MSC_VER <= 1600
 /* Visual Studio 2010 and earlier issue a warning when both <stdint.h> and <intsafe.h> are included, as they
  * redefine a number of <TYPE>_MAX constants. These constants are guaranteed to be the same, though, so
  * we suppress the warning when including intsafe.h.
@@ -70,7 +70,7 @@
 #pragma warning( disable : 4005 )
 #endif
 #include <intsafe.h>
-#if _MSC_VER <= 1600
+#if defined(_MSC_VER) && _MSC_VER <= 1600
 #pragma warning( pop )
 #endif
 #else