summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2017-02-22 10:34:19 +0000
committerEdward Thomson <ethomson@github.com>2017-02-22 11:21:56 +0000
commitaa5ea47f7382c85d22282a093674f37fe942f116 (patch)
tree6db50e7182a04a0563109bf4950755d26b29dc97
parentb13f0da153aa47fbf113c44e734be2be603870b6 (diff)
downloadlibgit2-ethomson/ancient_gcc_not_threadsafe.tar.gz
Provide error on gcc < 4.1 when THREADSAFEethomson/ancient_gcc_not_threadsafe
Provide a descriptive error message when compiling THREADSAFE on gcc versions < 4.1. We require the atomic primitives (eg `__sync_synchronize`) that were introduced in that version. (Note, clang setes `__GNUC__` but appears to set its version > 4.1.)
-rw-r--r--src/thread-utils.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/thread-utils.h b/src/thread-utils.h
index f0161989f..2df2aeb99 100644
--- a/src/thread-utils.h
+++ b/src/thread-utils.h
@@ -7,6 +7,12 @@
#ifndef INCLUDE_thread_utils_h__
#define INCLUDE_thread_utils_h__
+#if defined(__GNUC__) && defined(GIT_THREADS)
+# if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1))
+# error Atomic primitives do not exist on this version of gcc; configure libgit2 with -DTHREADSAFE=OFF
+# endif
+#endif
+
/* Common operations even if threading has been disabled */
typedef struct {
#if defined(GIT_WIN32)