1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-07 02:42:49 +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
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake)
IF (MSVC)
@@ -127,7 +127,9 @@ IF(WIN32)
SET(HAVE_THREADS 1)
ADD_DEFINITIONS(-DHAVE_DLOPEN)
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()
SET(HAVE_THREADS ${CMAKE_USE_PTHREADS})
ENDIF()
@@ -179,7 +181,7 @@ IF(BUILD_DOCS)
ENDIF()
IF(WIN32)
IF(MSVC)
SET(CMAKE_INSTALL_PREFIX "")
ENDIF()

View File

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

View File

@@ -61,10 +61,12 @@ typedef struct {
CRITICAL_SECTION waiters_count_lock;
} pthread_cond_t;
#ifndef _TIMESPEC_DEFINED
struct timespec { /* For pthread_cond_timedwait() */
time_t tv_sec;
long tv_nsec;
};
#endif
typedef int pthread_mutexattr_t;
#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
#endif /* _AIX */
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H)
#ifndef alloca
#define alloca __builtin_alloca
#endif
#endif /* GNUC */
#define my_alloca(SZ) alloca((size_t) (SZ))
#define my_afree(PTR) {}

View File

@@ -98,9 +98,12 @@ my_stmt_codec.c
client_plugin.c
my_auth.c
ma_secure.c
libmariadb_exports.def
)
IF(MSVC)
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} libmariadb_exports.def)
ENDIF()
IF(WIN32)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv)
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES}
@@ -208,9 +211,9 @@ ENDIF()
INSTALL(TARGETS
libmariadb mariadbclient
RUNTIME DESTINATION "lib/mariadb"
LIBRARY DESTINATION "lib/mariadb"
ARCHIVE DESTINATION "lib/mariadb")
RUNTIME DESTINATION "lib"
LIBRARY DESTINATION "lib"
ARCHIVE DESTINATION "lib")
IF(NOT WIN32 AND WITH_MYSQLCOMPAT)
INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${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 */
ulong arg=0, r;
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg));
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg/*, sizeof(arg)*/);
}
#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)
{
#ifdef _WIN32
if (ioctlsocket(vio->sd, FIONREAD, (unsigned long)bytes))
if (ioctlsocket(vio->sd, FIONREAD, (unsigned long*)bytes))
return TRUE;
#else
char buffer[1024];
@@ -329,7 +329,7 @@ int vio_blocking(Vio * vio, my_bool set_blocking_mode)
vio->fcntl_mode |= O_NONBLOCK; /* set bit */
}
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__) */
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));
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");
check_mysql_rc(rc, 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;
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_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "foo0", "bar0");