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 @@ + + + + +