Cleanup our header inclusion order to ensure pthread.h is early If we are using threads we need to make sure pthread.h comes in before just about anything else. Some platforms enable macros that alter what other headers define. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
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 87 88 89 90 91 92 93 94 95 96 97 98 99
diff --git a/src/common.h b/src/common.h
index 3ba86b2..89b6f61 100644
--- a/src/common.h
+++ b/src/common.h
@@ -1,8 +1,7 @@
#ifndef INCLUDE_common_h__
#define INCLUDE_common_h__
-#include "cc-compat.h"
-#include "errors.h"
+#include "git/thread-utils.h"
#ifdef GIT_HAS_PTHREAD
# include <pthread.h>
@@ -18,8 +17,9 @@
# define PRIuPTR "lu"
#endif
+#include "cc-compat.h"
#include "util.h"
-#include "git/common.h"
+#include "errors.h"
#define GIT_PATH_MAX 4096
diff --git a/src/errors.h b/src/errors.h
index ab415d5..94093dd 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -2,7 +2,6 @@
#define INCLUDE_errors_h__
#include "git/errors.h"
-#include <stdlib.h>
/* convenience functions */
GIT_INLINE(int) git_int_error(int code)
diff --git a/src/git/thread-utils.h b/src/git/thread-utils.h
index 8baf75b..241514f 100644
--- a/src/git/thread-utils.h
+++ b/src/git/thread-utils.h
@@ -8,10 +8,10 @@
*/
#define GIT_HAS_TLS 1
+#define GIT_HAS_PTHREAD 1
#if defined(__APPLE__) && defined(__MACH__)
# undef GIT_TLS
-# define GIT_HAS_PTHREAD
#elif defined(__GNUC__) || \
defined(__SUNPRO_C) || \
@@ -23,6 +23,7 @@
#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
@@ -31,9 +32,11 @@
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
@@ -44,4 +47,10 @@
# define GIT_TLS
#endif
+#ifdef GIT_HAS_PTHREAD
+# define GIT_THREADS 1
+#else
+# undef GIT_THREADS
+#endif
+
#endif /* INCLUDE_git_thread_utils_h__ */
diff --git a/src/odb.c b/src/odb.c
index e074873..785d3fe 100644
--- a/src/odb.c
+++ b/src/odb.c
@@ -23,9 +23,9 @@
* Boston, MA 02110-1301, USA.
*/
+#include "common.h"
#include "git/odb.h"
#include "git/zlib.h"
-#include "common.h"
#include "fileops.h"
#include "hash.h"
#include <stdio.h>