diff options
Diffstat (limited to 'src/git')
| -rw-r--r-- | src/git/errors.h | 7 | ||||
| -rw-r--r-- | src/git/thread-utils.h | 15 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/git/errors.h b/src/git/errors.h index 18eb2b8ad..37870a4c5 100644 --- a/src/git/errors.h +++ b/src/git/errors.h @@ -13,8 +13,15 @@ GIT_BEGIN_DECL /** The git errno. */ +#if defined(GIT_TLS) GIT_EXTERN(int) GIT_TLS git_errno; +#elif defined(GIT_HAS_PTHREAD) +# define git_errno (*git__errno_storage()) +GIT_EXTERN(int *) git__errno_storage(void); + +#endif + /** * strerror() for the Git library * @param num The error code to explain diff --git a/src/git/thread-utils.h b/src/git/thread-utils.h index c14aa17cb..8baf75bed 100644 --- a/src/git/thread-utils.h +++ b/src/git/thread-utils.h @@ -9,8 +9,15 @@ #define GIT_HAS_TLS 1 -#if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) || \ - defined(__xlc__) || defined(__xlC__) +#if defined(__APPLE__) && defined(__MACH__) +# undef GIT_TLS +# define GIT_HAS_PTHREAD + +#elif defined(__GNUC__) || \ + defined(__SUNPRO_C) || \ + defined(__SUNPRO_CC) || \ + defined(__xlc__) || \ + defined(__xlC__) # define GIT_TLS __thread #elif defined(__INTEL_COMPILER) @@ -20,7 +27,9 @@ # define GIT_TLS __thread # endif -#elif defined(_WIN32) || defined(_WIN32_CE) || defined(__BORLANDC__) +#elif defined(_WIN32) || \ + defined(_WIN32_CE) || \ + defined(__BORLANDC__) # define GIT_TLS __declspec(thread) #else |
