Drop support for THREADSAFE on Windows XP

This makes libgit2 require Windows Vista or newer if it is going
to be compiled with the THREADSAFE option
This commit is contained in:
Russell Belfer 2013-08-22 14:34:21 -07:00
parent 972bb689c4
commit eb868b1e98
2 changed files with 19 additions and 2 deletions

View File

@ -287,8 +287,13 @@ FILE(GLOB SRC_H include/git2.h include/git2/*.h include/git2/sys/*.h)
# On Windows use specific platform sources # On Windows use specific platform sources
IF (WIN32 AND NOT CYGWIN) IF (WIN32 AND NOT CYGWIN)
ADD_DEFINITIONS(-DWIN32 -D_WIN32_WINNT=0x0501) ADD_DEFINITIONS(-DWIN32)
FILE(GLOB SRC_OS src/win32/*.c src/win32/*.h) FILE(GLOB SRC_OS src/win32/*.c src/win32/*.h)
IF (THREADSAFE)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0600)
ELSE()
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501)
ENDIF()
ELSEIF (AMIGA) ELSEIF (AMIGA)
ADD_DEFINITIONS(-DNO_ADDRINFO -DNO_READDIR_R) ADD_DEFINITIONS(-DNO_ADDRINFO -DNO_READDIR_R)
FILE(GLOB SRC_OS src/amiga/*.c src/amiga/*.h) FILE(GLOB SRC_OS src/amiga/*.c src/amiga/*.h)

View File

@ -40,6 +40,10 @@ typedef git_atomic git_atomic_ssize;
#ifdef GIT_THREADS #ifdef GIT_THREADS
#if defined(GIT_WIN32) && _WIN32_WINNT < 0x0600
# error "Unsupported Windows version for thread support"
#endif
#define git_thread pthread_t #define git_thread pthread_t
#define git_thread_create(thread, attr, start_routine, arg) \ #define git_thread_create(thread, attr, start_routine, arg) \
pthread_create(thread, attr, start_routine, arg) pthread_create(thread, attr, start_routine, arg)
@ -62,7 +66,15 @@ typedef git_atomic git_atomic_ssize;
#define git_cond_signal(c) pthread_cond_signal(c) #define git_cond_signal(c) pthread_cond_signal(c)
#define git_cond_broadcast(c) pthread_cond_broadcast(c) #define git_cond_broadcast(c) pthread_cond_broadcast(c)
/* Pthreads rwlock */ /* Pthread (-ish) rwlock
*
* This differs from normal pthreads rwlocks in two ways:
* 1. Separate APIs for releasing read locks and write locks (as
* opposed to the pure POSIX API which only has one unlock fn)
* 2. You should not use recursive read locks (i.e. grabbing a read
* lock in a thread that already holds a read lock) because the
* Windows implementation doesn't support it
*/
#define git_rwlock pthread_rwlock_t #define git_rwlock pthread_rwlock_t
#define git_rwlock_init(a) pthread_rwlock_init(a, NULL) #define git_rwlock_init(a) pthread_rwlock_init(a, NULL)
#define git_rwlock_rdlock(a) pthread_rwlock_rdlock(a) #define git_rwlock_rdlock(a) pthread_rwlock_rdlock(a)