diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5beb610..7e74ff7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,6 +55,7 @@
 
 include(MaintainerFlags)
 
+if ((NOT ENABLE_STATIC STREQUAL ON) AND (NOT ENABLE_STATIC STREQUAL AUTO))
 # The input variable BSON_ROOT_DIR is respected for backwards compatibility,
 # but you should use the standard CMAKE_PREFIX_PATH instead.
 message (STATUS "Searching for libbson CMake packages")
@@ -67,12 +68,14 @@
 message ("--   libbson found version \"${BSON_VERSION}\"")
 message ("--   libbson include path \"${BSON_INCLUDE_DIRS}\"")
 message ("--   libbson libraries \"${BSON_LIBRARIES}\"")
+endif ()
 
 if (ENABLE_STATIC STREQUAL ON OR ENABLE_STATIC STREQUAL AUTO)
    find_package (libbson-static-1.0
       "${MONGOC_MAJOR_VERSION}.${MONGOC_MINOR_VERSION}.${MONGOC_MICRO_VERSION}"
       HINTS
-      ${BSON_ROOT_DIR})
+      ${BSON_ROOT_DIR}
+      REQUIRED)
 
    if (ENABLE_STATIC STREQUAL ON AND NOT BSON_STATIC_LIBRARY)
       message (FATAL_ERROR "Static libbson not found. Pass -DENABLE_STATIC=OFF")
@@ -627,6 +630,7 @@
    set (LIBS ${LIBS} ws2_32)
 endif()
 
+if (NOT MONGOC_ENABLE_STATIC)
 add_library(mongoc_shared SHARED ${SOURCES} ${HEADERS})
 set_target_properties(mongoc_shared PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden)
 target_link_libraries (mongoc_shared ${LIBS} ${BSON_LIBRARIES})
@@ -638,6 +642,7 @@
 # This hack sets up standard symlink, libmongoc-1.0.so -> libmongoc-1.0.0.so
 set_target_properties(mongoc_shared PROPERTIES VERSION 0 SOVERSION ${MONGOC_MAJOR_VERSION})
 set_target_properties(mongoc_shared PROPERTIES OUTPUT_NAME "mongoc-${MONGOC_API_VERSION}" PREFIX "lib")
+endif ()
 
 if (MONGOC_ENABLE_STATIC)
    add_library(mongoc_static STATIC ${SOURCES} ${HEADERS})
@@ -804,6 +809,7 @@
 file(COPY ${SOURCE_DIR}/tests/x509gen DESTINATION ${PROJECT_BINARY_DIR}/tests)
 file(COPY ${SOURCE_DIR}/tests/release_files DESTINATION ${PROJECT_BINARY_DIR}/tests)
 
+if (NOT MONGOC_ENABLE_STATIC)
 install(
   TARGETS mongoc_shared ${EXAMPLES}
   LIBRARY DESTINATION lib
@@ -810,10 +816,11 @@
   ARCHIVE DESTINATION lib
   RUNTIME DESTINATION bin
 )
+endif ()
 
 if (MONGOC_ENABLE_STATIC)
    install(
-     TARGETS mongoc_shared mongoc_static ${EXAMPLES}
+     TARGETS mongoc_static ${EXAMPLES}
      LIBRARY DESTINATION lib
      ARCHIVE DESTINATION lib
      RUNTIME DESTINATION bin
index 5beb610..7e74ff7 100644
--- a/src/mongoc/mongoc-gridfs-file.c
+++ b/src/mongoc/mongoc-gridfs-file.c
@@ -753,7 +753,7 @@ _mongoc_gridfs_file_refresh_page (mongoc_gridfs_file_t *file)
    bson_t query;
    bson_t child;
    bson_t opts;
-   const bson_t *chunk;
+   const bson_t *chunk = 0;
    const char *key;
    bson_iter_t iter;
    int64_t existing_chunks;
diff --git a/src/mongoc/mongoc-handshake.c b/src/mongoc/mongoc-handshake.c
index 4e181bd..b274fc1 100644
--- a/src/mongoc/mongoc-handshake.c
+++ b/src/mongoc/mongoc-handshake.c
@@ -243,7 +243,8 @@ _get_os_version (void)
    char *ret = bson_malloc (HANDSHAKE_OS_VERSION_MAX);
    bool found = false;
 
-#ifdef _WIN32
+#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
+#elif defined (_WIN32)
    OSVERSIONINFO osvi;
    ZeroMemory (&osvi, sizeof (OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
diff --git a/src/mongoc/mongoc-util.c b/src/mongoc/mongoc-util.c
index a4e50ea..4f631e7 100644
--- a/src/mongoc/mongoc-util.c
+++ b/src/mongoc/mongoc-util.c
@@ -70,6 +70,11 @@ void
 _mongoc_usleep (int64_t usec)
 {
 #ifdef _WIN32
+#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
+   if (usec / 1000 > MAXDWORD || usec < 0)
+      __fastfail(-1);
+   Sleep((DWORD)(usec / 1000));
+#else
    LARGE_INTEGER ft;
    HANDLE timer;

@@ -80,6 +85,7 @@ _mongoc_usleep (int64_t usec)
    SetWaitableTimer (timer, &ft, 0, NULL, NULL, 0);
    WaitForSingleObject (timer, INFINITE);
    CloseHandle (timer);
+#endif
 #else
    BSON_ASSERT (usec >= 0);
    usleep ((useconds_t) usec);
