summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Max Horn <max@quendi.de>2012-11-28 00:28:51 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-11-27 22:33:50 -0800
commite0a52279304a67d6e13c5a5b4165dd09f6ba61aa (patch)
tree7e75493099786de10f80f77924ae3fd3559aa7b1
parentMerge branch 'nd/maint-compat-fnmatch-fix' into maint (diff)
downloadtgif-e0a52279304a67d6e13c5a5b4165dd09f6ba61aa.tar.xz
configure.ac: fix pthreads detection on Mac OS X
The configure script checks whether certain flags are required to use pthreads. But it did not consider that *none* might be needed (as is the case on Mac OS X). This lead to configure adding "-mt" to the list of flags (which does nothing on OS X except producing a warning). This in turn triggered a compiler warning on every single file. To solve this, we now first check if pthreads work without extra flags. This means the check is now order dependant, hence a comment is added explaining this, and the reasons for it. Note that it might be possible to write an order independent test, but it does not seem worth the extra effort required for implementing and testing such a solution, when this simple solution exists and works. Signed-off-by: Max Horn <max@quendi.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--configure.ac12
1 files changed, 11 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index c85888c851..55aae5f389 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1021,7 +1021,17 @@ if test -n "$USER_NOPTHREAD"; then
# -D_REENTRANT' or some such.
elif test -z "$PTHREAD_CFLAGS"; then
threads_found=no
- for opt in -mt -pthread -lpthread; do
+ # Attempt to compile and link some code using pthreads to determine
+ # required linker flags. The order is somewhat important here: We
+ # first try it without any extra flags, to catch systems where
+ # pthreads are part of the C library, then go on testing various other
+ # flags. We do so to avoid false positives. For example, on Mac OS X
+ # pthreads are part of the C library; moreover, the compiler allows us
+ # to add "-mt" to the CFLAGS (although it will do nothing except
+ # trigger a warning about an unused flag). Hence if we checked for
+ # "-mt" before "" we would end up picking it. But unfortunately this
+ # would then trigger compiler warnings on every single file we compile.
+ for opt in "" -mt -pthread -lpthread; do
old_CFLAGS="$CFLAGS"
CFLAGS="$opt $CFLAGS"
AC_MSG_CHECKING([Checking for POSIX Threads with '$opt'])