summaryrefslogtreecommitdiff
path: root/src/git2/thread-utils.h
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2010-12-06 23:03:16 +0200
committerVicent Marti <tanoku@gmail.com>2010-12-06 23:03:16 +0200
commit44908fe763b1a2097b65c86130ac679c458df7d2 (patch)
treed4b2e597ec985cabff2236895c4515100a5063e4 /src/git2/thread-utils.h
parentd12299fe22e549a20e632668fdbe13cab9def9df (diff)
downloadlibgit2-44908fe763b1a2097b65c86130ac679c458df7d2.tar.gz
Change the library include file
Libgit2 is now officially include as #include "<git2.h>" or indidividual files may be included as #include <git2/index.h> Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'src/git2/thread-utils.h')
-rw-r--r--src/git2/thread-utils.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/git2/thread-utils.h b/src/git2/thread-utils.h
new file mode 100644
index 000000000..241514f3a
--- /dev/null
+++ b/src/git2/thread-utils.h
@@ -0,0 +1,56 @@
+#ifndef INCLUDE_git_thread_utils_h__
+#define INCLUDE_git_thread_utils_h__
+
+/*
+ * How TLS works is compiler+platform dependant
+ * Sources: http://en.wikipedia.org/wiki/Thread-Specific_Storage
+ * http://predef.sourceforge.net/precomp.html
+ */
+
+#define GIT_HAS_TLS 1
+#define GIT_HAS_PTHREAD 1
+
+#if defined(__APPLE__) && defined(__MACH__)
+# undef GIT_TLS
+
+#elif defined(__GNUC__) || \
+ defined(__SUNPRO_C) || \
+ defined(__SUNPRO_CC) || \
+ defined(__xlc__) || \
+ defined(__xlC__)
+# define GIT_TLS __thread
+
+#elif defined(__INTEL_COMPILER)
+# if defined(_WIN32) || defined(_WIN32_CE)
+# define GIT_TLS __declspec(thread)
+# undef GIT_HAS_PTHREAD
+# else
+# define GIT_TLS __thread
+# endif
+
+#elif defined(_WIN32) || \
+ defined(_WIN32_CE) || \
+ defined(__BORLANDC__)
+# define GIT_TLS __declspec(thread)
+# undef GIT_HAS_PTHREAD
+
+#else
+# undef GIT_HAS_TLS
+# undef GIT_HAS_PTHREAD
+# define GIT_TLS /* nothing: tls vars are thread-global */
+#endif
+
+/* sparse and cygwin don't grok thread-local variables */
+#if defined(__CHECKER__) || defined(__CYGWIN__)
+# undef GIT_HAS_TLS
+# undef GIT_TLS
+# define GIT_TLS
+#endif
+
+#ifdef GIT_HAS_PTHREAD
+# define GIT_THREADS 1
+#else
+# undef GIT_THREADS
+#endif
+
+#endif /* INCLUDE_git_thread_utils_h__ */