--- a/cmake/install.cmake
+++ b/cmake/install.cmake
@@ -62,11 +62,11 @@
 #
 
 SET(INSTALL_BINDIR_DEFAULT "bin")
-SET(INSTALL_LIBDIR_DEFAULT "lib/mariadb")
+SET(INSTALL_LIBDIR_DEFAULT "lib")
 SET(INSTALL_PCDIR_DEFAULT "lib/pkgconfig")
 SET(INSTALL_INCLUDEDIR_DEFAULT "include/mariadb")
-SET(INSTALL_DOCDIR_DEFAULT "docs")
-SET(INSTALL_MANDIR_DEFAULT "man")
+SET(INSTALL_DOCDIR_DEFAULT "share/docs/mariadb")
+SET(INSTALL_MANDIR_DEFAULT "share/man")
 IF(NOT IS_SUBPROJECT)
   SET(INSTALL_PLUGINDIR_DEFAULT "lib/mariadb/plugin")
 ELSE()
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -428,7 +428,7 @@
 INCLUDE(${CC_SOURCE_DIR}/plugins/CMakeLists.txt)
 ADD_SUBDIRECTORY(include)
 ADD_SUBDIRECTORY(libmariadb)
-IF((NOT WIN32) OR CYGWIN)
+IF((NOT MSVC) OR CYGWIN)
   ADD_SUBDIRECTORY(mariadb_config)
 ENDIF()
 
--- a/libmariadb/CMakeLists.txt
+++ b/libmariadb/CMakeLists.txt
@@ -496,6 +496,13 @@
  ${CPACK_PACKAGE_VERSION_MAJOR}
  SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR})
 
+IF(MINGW)
+  SET_TARGET_PROPERTIES(libmariadb PROPERTIES
+                        OUTPUT_NAME mariadb
+                        RUNTIME_OUTPUT_NAME libmariadb
+                        ARCHIVE_OUTPUT_NAME mariadb)
+ENDIF()
+
 IF(NOT WIN32)
   SET_TARGET_PROPERTIES(mariadbclient PROPERTIES OUTPUT_NAME "${LIBMARIADB_STATIC_NAME}")
 ENDIF()
@@ -513,7 +513,9 @@
 IF(WIN32)
 INSTALL(TARGETS libmariadb
         COMPONENT SharedLibraries
-        DESTINATION ${INSTALL_LIBDIR})
+        RUNTIME DESTINATION ${INSTALL_BINDIR}
+        LIBRARY DESTINATION ${INSTALL_LIBDIR}
+        ARCHIVE DESTINATION ${INSTALL_LIBDIR})
 ELSE()
 # in cmake 3.12+ we can use
 #INSTALL(TARGETS libmariadb LIBRARY DESTINATION ${INSTALL_LIBDIR}
--- mariadb-connector-c-3.1.7-src/libmariadb/secure/schannel_certs.c.orig	2020-04-22 12:08:43.105188700 +0300
+++ mariadb-connector-c-3.1.7-src/libmariadb/secure/schannel_certs.c	2020-04-22 12:34:03.471915300 +0300
@@ -66,7 +66,7 @@
 #define FAIL(...) \
    do{\
      status = get_last_error();\
-     ma_format_win32_error(errmsg, errmsg_len, status, __VA_ARGS__);\
+     ma_format_win32_error(errmsg, errmsg_len, status, ##__VA_ARGS__);\
      goto cleanup;\
   } while (0)
 
