1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-08 14:02:17 +03:00

Added mingw support (Win32). Special thanks to Eric Trinh for his patch!

This commit is contained in:
holzboote@googlemail.com
2014-01-11 20:09:32 +01:00
parent e2afef3163
commit a6ee40ab8e
8 changed files with 33 additions and 14 deletions

View File

@@ -28,7 +28,7 @@ OPTION(WITH_EXTERNAL_ZLIB "Enables use of external zlib" OFF)
############### ###############
IF(WIN32) IF(MSVC)
# Speedup system tests # Speedup system tests
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake) INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake)
IF (MSVC) IF (MSVC)
@@ -127,7 +127,9 @@ IF(WIN32)
SET(HAVE_THREADS 1) SET(HAVE_THREADS 1)
ADD_DEFINITIONS(-DHAVE_DLOPEN) ADD_DEFINITIONS(-DHAVE_DLOPEN)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996" ) IF(MSVC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996" )
ENDIF()
ELSEIF() ELSEIF()
SET(HAVE_THREADS ${CMAKE_USE_PTHREADS}) SET(HAVE_THREADS ${CMAKE_USE_PTHREADS})
ENDIF() ENDIF()
@@ -179,7 +181,7 @@ IF(BUILD_DOCS)
ENDIF() ENDIF()
IF(WIN32) IF(MSVC)
SET(CMAKE_INSTALL_PREFIX "") SET(CMAKE_INSTALL_PREFIX "")
ENDIF() ENDIF()

View File

@@ -297,7 +297,9 @@ typedef unsigned short ushort;
#if defined(__GNUC__) #if defined(__GNUC__)
#define function_volatile volatile #define function_volatile volatile
#ifndef my_reinterpret_cast
#define my_reinterpret_cast(A) reinterpret_cast<A> #define my_reinterpret_cast(A) reinterpret_cast<A>
#endif
#define my_const_cast(A) const_cast<A> #define my_const_cast(A) const_cast<A>
#elif !defined(my_reinterpret_cast) #elif !defined(my_reinterpret_cast)
#define my_reinterpret_cast(A) (A) #define my_reinterpret_cast(A) (A)
@@ -741,7 +743,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
#define NOT_FIXED_DEC 31 #define NOT_FIXED_DEC 31
#ifdef _WIN32 #if defined(_WIN32) && defined(_MSVC)
#define MYSQLND_LLU_SPEC "%I64u" #define MYSQLND_LLU_SPEC "%I64u"
#define MYSQLND_LL_SPEC "%I64d" #define MYSQLND_LL_SPEC "%I64d"
#ifndef L64 #ifndef L64

View File

@@ -61,10 +61,12 @@ typedef struct {
CRITICAL_SECTION waiters_count_lock; CRITICAL_SECTION waiters_count_lock;
} pthread_cond_t; } pthread_cond_t;
#ifndef _TIMESPEC_DEFINED
struct timespec { /* For pthread_cond_timedwait() */ struct timespec { /* For pthread_cond_timedwait() */
time_t tv_sec; time_t tv_sec;
long tv_nsec; long tv_nsec;
}; };
#endif
typedef int pthread_mutexattr_t; typedef int pthread_mutexattr_t;
#define pthread_self() GetCurrentThreadId() #define pthread_self() GetCurrentThreadId()

View File

@@ -136,7 +136,9 @@ extern my_string my_strndup(const char *from, size_t length, myf MyFlags);
#pragma alloca #pragma alloca
#endif /* _AIX */ #endif /* _AIX */
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) #if defined(__GNUC__) && !defined(HAVE_ALLOCA_H)
#ifndef alloca
#define alloca __builtin_alloca #define alloca __builtin_alloca
#endif
#endif /* GNUC */ #endif /* GNUC */
#define my_alloca(SZ) alloca((size_t) (SZ)) #define my_alloca(SZ) alloca((size_t) (SZ))
#define my_afree(PTR) {} #define my_afree(PTR) {}

View File

@@ -98,9 +98,12 @@ my_stmt_codec.c
client_plugin.c client_plugin.c
my_auth.c my_auth.c
ma_secure.c ma_secure.c
libmariadb_exports.def
) )
IF(MSVC)
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} libmariadb_exports.def)
ENDIF()
IF(WIN32) IF(WIN32)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv)
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES}
@@ -208,9 +211,9 @@ ENDIF()
INSTALL(TARGETS INSTALL(TARGETS
libmariadb mariadbclient libmariadb mariadbclient
RUNTIME DESTINATION "lib/mariadb" RUNTIME DESTINATION "lib"
LIBRARY DESTINATION "lib/mariadb" LIBRARY DESTINATION "lib"
ARCHIVE DESTINATION "lib/mariadb") ARCHIVE DESTINATION "lib")
IF(NOT WIN32 AND WITH_MYSQLCOMPAT) IF(NOT WIN32 AND WITH_MYSQLCOMPAT)
INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}" INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}" "${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}"

View File

@@ -144,7 +144,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
{ {
/* set to blocking mode by default */ /* set to blocking mode by default */
ulong arg=0, r; ulong arg=0, r;
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg)); r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg/*, sizeof(arg)*/);
} }
#endif #endif
} }
@@ -235,7 +235,7 @@ size_t vio_read(Vio * vio, gptr buf, size_t size)
my_bool vio_read_peek(Vio *vio, size_t *bytes) my_bool vio_read_peek(Vio *vio, size_t *bytes)
{ {
#ifdef _WIN32 #ifdef _WIN32
if (ioctlsocket(vio->sd, FIONREAD, (unsigned long)bytes)) if (ioctlsocket(vio->sd, FIONREAD, (unsigned long*)bytes))
return TRUE; return TRUE;
#else #else
char buffer[1024]; char buffer[1024];
@@ -329,7 +329,7 @@ int vio_blocking(Vio * vio, my_bool set_blocking_mode)
vio->fcntl_mode |= O_NONBLOCK; /* set bit */ vio->fcntl_mode |= O_NONBLOCK; /* set bit */
} }
if (old_fcntl != vio->fcntl_mode) if (old_fcntl != vio->fcntl_mode)
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg)); r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg);
} }
#endif /* !defined(_WIN32) && !defined(__EMX__) */ #endif /* !defined(_WIN32) && !defined(__EMX__) */
DBUG_RETURN(r); DBUG_RETURN(r);

View File

@@ -522,10 +522,8 @@ static int test_reconnect(MYSQL *mysql)
diag("Thread_id before kill: %lu", mysql_thread_id(mysql1)); diag("Thread_id before kill: %lu", mysql_thread_id(mysql1));
mysql_kill(mysql, mysql_thread_id(mysql1)); mysql_kill(mysql, mysql_thread_id(mysql1));
sleep(2); sleep(4);
rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0");
FAIL_IF(rc == 0, "error expected");
rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0"); rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0");
check_mysql_rc(rc, mysql1); check_mysql_rc(rc, mysql1);
diag("Thread_id after kill: %lu", mysql_thread_id(mysql1)); diag("Thread_id after kill: %lu", mysql_thread_id(mysql1));

View File

@@ -931,6 +931,16 @@ static int test_connect_attrs(MYSQL *my)
MYSQL_RES *result; MYSQL_RES *result;
int rc, len; int rc, len;
rc= mysql_query(my, "SELECT * FROM performance_schema.session_connect_attrs LIMIT 1");
if (rc != 0)
{
diag("Server doesn't connection attributes");
return SKIP;
}
result= mysql_store_result(my);
mysql_free_result(result);
mysql= mysql_init(NULL); mysql= mysql_init(NULL);
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "foo0", "bar0"); mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "foo0", "bar0");