diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1bcae874..cc991ee4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,6 +19,8 @@ ENDIF()
IF(NOT WIN32)
OPTION(WITH_MYSQLCOMPAT "creates libmysql* symbolic links" ON)
OPTION(WITH_OPENSSL "enables SSL support" ON)
+ELSE()
+ OPTION(WITH_OPENSSL "enables SSL support" OFF)
ENDIF()
OPTION(WITH_SQLITE "Enables Sqlite support" OFF)
@@ -30,13 +32,22 @@ IF(WIN32)
# Speedup system tests
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake)
IF (MSVC)
- FOREACH(flag_var
- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
- CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
- IF(${flag_var} MATCHES "/MD")
- STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
- ENDIF()
- ENDFOREACH(flag_var)
+ SET(CONFIG_TYPES "DEBUG" "RELEASE" "RELWITHDEBINFO")
+ FOREACH(BUILD_TYPE ${CONFIG_TYPES})
+ FOREACH(COMPILER CXX C)
+ SET(COMPILER_FLAGS "${CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}}")
+ IF (NOT COMPILER_FLAGS STREQUAL "")
+ STRING(REPLACE "/MD" "/MT" COMPILER_FLAGS ${COMPILER_FLAGS})
+ IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ SET(COMPILER_FLAGS "${COMPILER_FLAGS} /RTC1 /RTCc")
+ STRING(REPLACE "/Zi" "/ZI" COMPILER_FLAGS ${COMPILER_FLAGS})
+ ENDIF()
+ MESSAGE (STATUS "CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}= ${COMPILER_FLAGS}")
+ SET(CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE} ${COMPILER_FLAGS} CACHE
+ STRING "overwritten by libmariadb" FORCE)
+ ENDIF()
+ ENDFOREACH()
+ ENDFOREACH()
ENDIF()
ENDIF()
diff --git a/include/config-win.h b/include/config-win.h
index 64dad707..97015d6c 100644
--- a/include/config-win.h
+++ b/include/config-win.h
@@ -264,4 +264,9 @@ inline double ulonglong2double(ulonglong value)
#define statistic_increment(V,L) thread_safe_increment((V),(L))
#define strcasecmp(A,B) _stricmp((A),(B))
+#define close(A) _close((A))
+#define fdopen(A,B) _fdopen((A),(B))
+#define sopen(A,B,C,D) _sopen((A),(B),(C),(D))
+
+
#endif
diff --git a/include/m_ctype.h b/include/m_ctype.h
index 597eb985..7cff790c 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -38,16 +38,16 @@ extern "C" {
/* we use the mysqlnd implementation */
typedef struct charset_info_st
{
- uint nr; /* so far only 1 byte for charset */
- uint state;
+ unsigned int nr; /* so far only 1 byte for charset */
+ unsigned int state;
char *csname;
char *name;
char *dir;
char *encoding;
- uint char_minlen;
- uint char_maxlen;
- uint (*mb_charlen)(uint c);
- uint (*mb_valid)(const char *start, const char *end);
+ unsigned int char_minlen;
+ unsigned int char_maxlen;
+ unsigned int (*mb_charlen)(unsigned int c);
+ unsigned int (*mb_valid)(const char *start, const char *end);
} CHARSET_INFO;
extern const CHARSET_INFO compiled_charsets[];
@@ -56,7 +56,7 @@ extern CHARSET_INFO *my_charset_bin;
extern CHARSET_INFO *my_charset_latin1;
extern CHARSET_INFO *my_charset_utf8_general_ci;
-CHARSET_INFO *find_compiled_charset(uint cs_number);
+CHARSET_INFO *find_compiled_charset(unsigned int cs_number);
CHARSET_INFO *find_compiled_charset_by_name(const char *name);
size_t mysql_cset_escape_quotes(const CHARSET_INFO *cset, char *newstr, const char *escapestr, size_t escapestr_len);
diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt
index 0019bf66..d0a261b3 100644
--- a/libmariadb/CMakeLists.txt
+++ b/libmariadb/CMakeLists.txt
@@ -155,8 +155,8 @@ IF(OPENSSL_FOUND)
ENDIF()
IF(WIN32)
- TARGET_LINK_LIBRARIES(libmariadb ws2_32)
- TARGET_LINK_LIBRARIES(mariadbclient ws2_32)
+ TARGET_LINK_LIBRARIES(libmariadb ws2_32 advapi32 kernel32)
+ TARGET_LINK_LIBRARIES(mariadbclient ws2_32 advapi32 kernel32)
ELSE()
TARGET_LINK_LIBRARIES(libmariadb m)
TARGET_LINK_LIBRARIES(mariadbclient m)
diff --git a/libmariadb/dbug.c b/libmariadb/dbug.c
index 0fbac387..fb7c52ba 100644
--- a/libmariadb/dbug.c
+++ b/libmariadb/dbug.c
@@ -2050,7 +2050,11 @@ static void DBUGOpenFile(CODE_STATE *cs,
}
else
{
+#ifdef _WIN32
+ if (fopen_s(&fp, name, append ? "a+" : "w"))
+#else
if (!(fp= fopen(name, append ? "a+" : "w")))
+#endif
{
(void) fprintf(stderr, ERR_OPEN, cs->process, name);
perror("");
diff --git a/libmariadb/my_fopen.c b/libmariadb/my_fopen.c
index e1575b0a..5f6d45a6 100644
--- a/libmariadb/my_fopen.c
+++ b/libmariadb/my_fopen.c
@@ -36,7 +36,11 @@ FILE *my_fopen(const char *FileName, int Flags, myf MyFlags)
FileName, Flags, MyFlags));
make_ftype(type,Flags);
+#ifdef _WIN32
+ if (fopen_s(&fd, FileName, type) == 0)
+#else
if ((fd = fopen(FileName, type)) != 0)
+#endif
{
/*
The test works if MY_NFILE < 128. The problem is that fileno() is char
diff --git a/libmariadb/my_getwd.c b/libmariadb/my_getwd.c
index 8f4db13e..6e32b9c1 100644
--- a/libmariadb/my_getwd.c
+++ b/libmariadb/my_getwd.c
@@ -55,7 +55,11 @@ int my_getwd(my_string buf, uint size, myf MyFlags)
#endif
{
#if defined(HAVE_GETCWD)
- if (!getcwd(buf,size-2) && MyFlags & MY_WME)
+#ifdef _WIN32
+ if (!(_getcwd(buf,size-2)) && MyFlags & MY_WME)
+#else
+ if (!(getcwd(buf,size-2)) && MyFlags & MY_WME)
+#endif
{
my_errno=errno;
my_error(EE_GETWD,MYF(ME_BELL+ME_WAITTANG),errno);
@@ -151,7 +155,11 @@ int my_setwd(const char *dir, myf MyFlags)
dir=buff;
}
#endif /* VMS */
+#ifdef _WIN32
+ if ((res=_chdir((char*) dir)) != 0)
+#else
if ((res=chdir((char*) dir)) != 0)
+#endif
{
my_errno=errno;
if (MyFlags & MY_WME)
diff --git a/libmariadb/my_stmt.c b/libmariadb/my_stmt.c
index 5b0fdf80..92447782 100644
--- a/libmariadb/my_stmt.c
+++ b/libmariadb/my_stmt.c
@@ -1336,7 +1336,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
static int madb_alloc_stmt_fields(MYSQL_STMT *stmt)
{
- int i;
+ uint i;
MEM_ROOT *fields_alloc_root= &((MADB_STMT_EXTENSION *)stmt->extension)->fields_alloc_root;
DBUG_ENTER("madb_alloc_stmt_fields");
diff --git a/unittest/libmariadb/dyncol.c b/unittest/libmariadb/dyncol.c
index adea40bf..3da1cf22 100644
--- a/unittest/libmariadb/dyncol.c
+++ b/unittest/libmariadb/dyncol.c
@@ -161,7 +161,8 @@ static int create_dyncol_num(MYSQL *mysql)
static int mdev_x1(MYSQL *mysql)
{
- int i, rc;
+ int rc;
+ uint i;
uint num_keys[5]= {1,2,3,4,5};
char *strval[]= {"Val1", "Val2", "Val3", "Val4", "Val5"};
DYNAMIC_COLUMN_VALUE vals[5];
diff --git a/unittest/libmariadb/ps_bugs.c b/unittest/libmariadb/ps_bugs.c
index cde08094..3c0637cc 100644
--- a/unittest/libmariadb/ps_bugs.c
+++ b/unittest/libmariadb/ps_bugs.c
@@ -3798,6 +3798,7 @@ static int test_conc_5(MYSQL *mysql)
mysql_free_result(res);
mysql_stmt_close(stmt);
+ return OK;
}
struct my_tests_st my_tests[] = {
diff --git a/unittest/libmariadb/thread.c b/unittest/libmariadb/thread.c
index 89c52075..8430d695 100644
--- a/unittest/libmariadb/thread.c
+++ b/unittest/libmariadb/thread.c
@@ -80,7 +80,7 @@ static int test_conc_27(MYSQL *mysql)
#ifndef _WIN32
pthread_create(&threads[i], NULL, (void *)thread_conc27, NULL);
#else
- hthreads[i]= CreateThread(NULL, 0, thread_conc27, NULL, 0, &threads[i]);
+ hthreads[i]= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread_conc27, NULL, 0, &threads[i]);
if (hthreads[i]==NULL)
diag("error while starting thread");
#endif
diff --git a/win/packaging/CMakeLists.txt b/win/packaging/CMakeLists.txt
index 73cc79b9..e0528be1 100644
--- a/win/packaging/CMakeLists.txt
+++ b/win/packaging/CMakeLists.txt
@@ -1,4 +1,5 @@
SET(CLIENT_LIB_DIR ${CMAKE_BINARY_DIR}/libmariadb/${CMAKE_BUILD_TYPE})
+SET(CLIENT_DBG_DIR ${CMAKE_BINARY_DIR}/libmariadb/Debug)
SET(CLIENT_INC_DIR ${CMAKE_SOURCE_DIR}/include)
SET(PRODUCT_NAME "MariaDB C Client Library")
diff --git a/win/packaging/mariadb-native-client.xml.in b/win/packaging/mariadb-native-client.xml.in
index c8255d21..f6be961d 100644
--- a/win/packaging/mariadb-native-client.xml.in
+++ b/win/packaging/mariadb-native-client.xml.in
@@ -6,7 +6,7 @@
-
+
@@ -16,6 +16,7 @@
+
@@ -30,7 +31,9 @@
-
+
+
+
@@ -50,6 +53,11 @@
+
+
+
+
+