summaryrefslogtreecommitdiffstats
path: root/src/libmysqlclient-2-posix-fixes.patch
blob: 51f9041eea78942ca96a80220600250e9817006c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
This file is part of MXE.
See index.html for further information.

Contains ad hoc patches for cross building.

From 6721189cf5ceeb34f47cc228d9a5d8a9cf9dfdb8 Mon Sep 17 00:00:00 2001
From: MXE
Date: Fri, 13 Nov 2015 10:22:12 -0500
Subject: [PATCH] For Windows, check if POSIX thread model or win32 thread
 model is being used.


diff --git a/configure.cmake b/configure.cmake
index a4f5e8f..8e623b8 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -389,6 +389,7 @@ CHECK_INCLUDE_FILES (fnmatch.h HAVE_FNMATCH_H)
 CHECK_INCLUDE_FILES (sys/un.h HAVE_SYS_UN_H)
 CHECK_INCLUDE_FILES (vis.h HAVE_VIS_H) # Used by libedit
 CHECK_INCLUDE_FILES (sasl/sasl.h HAVE_SASL_SASL_H) # Used by memcached
+CHECK_INCLUDE_FILES (pthread.h HAVE_PTHREAD_H)
 
 # For libevent
 CHECK_INCLUDE_FILES(sys/devpoll.h HAVE_DEVPOLL)
diff --git a/include/my_pthread.h b/include/my_pthread.h
index 0a58cc0..abcffe8 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -20,7 +20,7 @@
 
 #include "my_global.h"                          /* myf */
 
-#if !defined(_WIN32)
+#if !(defined(_WIN32) && !defined(USING_PTHREADS))
 #include <pthread.h>
 #endif
 
@@ -35,7 +35,7 @@ extern "C" {
 #define EXTERNC
 #endif /* __cplusplus */ 
 
-#if defined(_WIN32)
+#if defined(_WIN32) && !defined(__WINPTHREADS_VERSION)
 typedef DWORD		 pthread_t;
 #define pthread_self() GetCurrentThreadId()
 #define pthread_handler_t EXTERNC void * __cdecl
@@ -51,7 +51,7 @@ typedef DWORD		 pthread_t;
 #include "thr_cond.h"
 #include "thr_rwlock.h"
 
-#if defined(_WIN32)
+#if defined(_WIN32) && !defined(__WINPTHREADS_VERSION)
 /*
   Existing mysql_thread_create() or pthread_create() does not work well
   in windows platform when threads are joined because
diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt
index e8e4972..322267c 100644
--- a/mysys/CMakeLists.txt
+++ b/mysys/CMakeLists.txt
@@ -78,6 +78,10 @@ IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
   TARGET_LINK_LIBRARIES(mysys pthread)
 ENDIF()
 
+IF(HAVE_PTHREAD_H)
+  ADD_DEFINITIONS(-DUSING_PTHREADS)
+ENDIF()
+
 IF(WITH_UNIT_TESTS)
 
 ADD_EXECUTABLE(thr_lock thr_lock.c)
diff --git a/mysys/my_winthread.c b/mysys/my_winthread.c
index 7924fe4..b364030 100644
--- a/mysys/my_winthread.c
+++ b/mysys/my_winthread.c
@@ -16,7 +16,7 @@
 /*****************************************************************************
 ** Simulation of posix threads calls for Windows
 *****************************************************************************/
-#if defined (_WIN32)
+#if defined (_WIN32) && !defined (USING_PTHREADS)
 #include "mysys_priv.h"
 #include <process.h>
 #include <signal.h>
-- 
2.5.0