summaryrefslogtreecommitdiffstats
path: root/configure.in
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2001-10-15 08:06:29 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2001-10-15 08:06:29 (GMT)
commita5f73f9bab445608fcf3586ff9c20675c3106d2c (patch)
tree4b3b29880c326189bc7dd09c0383e298140f58e4 /configure.in
parentcdc632cfdbb6b5cebc6a39ec2d65905e304280fa (diff)
downloadcpython-a5f73f9bab445608fcf3586ff9c20675c3106d2c.zip
cpython-a5f73f9bab445608fcf3586ff9c20675c3106d2c.tar.gz
cpython-a5f73f9bab445608fcf3586ff9c20675c3106d2c.tar.bz2
Check whether pthreads are available without any options before checking
that -Kpthread is supported. Fixes #470781. Port to autoconf 2.52.
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in62
1 files changed, 55 insertions, 7 deletions
diff --git a/configure.in b/configure.in
index 8d77e7b..9846dd2 100644
--- a/configure.in
+++ b/configure.in
@@ -152,9 +152,18 @@ AC_MSG_RESULT($with_cxx)
dnl The following fragment works similar to AC_PROG_CXX.
dnl It does not fail if CXX is not found, and it is not executed if
-dnl --with-cxx was given.
+dnl --without-cxx was given.
dnl Finally, it does not test whether CXX is g++.
+dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
+ifdef([AC_PROG_CXX_WORKS],[],
+ [AC_DEFUN([AC_PROG_CXX_WORKS],
+ [AC_LANG_PUSH(C++)dnl
+ _AC_COMPILER_EXEEXT
+ AC_LANG_POP()
+ ]
+)])
+
if test "$check_cxx" = "yes"
then
AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
@@ -405,6 +414,36 @@ else
fi
fi
+# On some compilers, pthreads are available without further options
+# (e.g. MacOS X). On some of these systems, the compiler will not
+# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
+# So we have to see first whether pthreads are available without
+# options before we can check whether -Kpthread improves anything.
+AC_MSG_CHECKING(whether pthreads are available without options)
+AC_CACHE_VAL(ac_cv_pthread_is_default,
+[AC_TRY_RUN([
+#include <pthread.h>
+
+void* routine(void* p){return NULL;}
+
+int main(){
+ pthread_t p;
+ if(pthread_create(&p,NULL,routine,NULL)!=0)
+ return 1;
+ return 0;
+}
+],
+ ac_cv_pthread_is_default=yes,
+ ac_cv_pthread_is_default=no,
+ ac_cv_pthread_is_default=no)
+])
+AC_MSG_RESULT($ac_cv_pthread_is_default)
+
+
+if test $ac_cv_pthread_is_default = yes
+then
+ ac_cv_kpthread=no
+else
# -Kpthread, if available, provides the right #defines
# and linker options to make pthread_create available
# Some compilers won't report that they do not support -Kpthread,
@@ -431,6 +470,7 @@ int main(){
ac_cv_kpthread=no)
CC="$ac_save_cc"])
AC_MSG_RESULT($ac_cv_kpthread)
+fi
dnl # check for ANSI or K&R ("traditional") preprocessor
dnl AC_MSG_CHECKING(for C preprocessor type)
@@ -925,6 +965,14 @@ AC_MSG_RESULT($with_threads)
if test "$with_threads" = "no"
then
USE_THREAD_MODULE="#"
+elif test "$ac_cv_pthread_is_default" = yes
+then
+ AC_DEFINE(WITH_THREAD)
+ AC_DEFINE(_POSIX_THREADS)
+ # Defining _REENTRANT on system with POSIX threads should not hurt.
+ AC_DEFINE(_REENTRANT)
+ posix_threads=yes
+ LIBOBJS="$LIBOBJS thread.o"
elif test "$ac_cv_kpthread" = "yes"
then
CC="$CC -Kpthread"
@@ -1120,7 +1168,7 @@ if test "$ipv6" = "yes"; then
case $i in
inria)
dnl http://www.kame.net/
- AC_EGREP_CPP(yes, [dnl
+ AC_EGREP_CPP(yes, [
#include <netinet/in.h>
#ifdef IPV6_INRIA_VERSION
yes
@@ -1130,7 +1178,7 @@ yes
;;
kame)
dnl http://www.kame.net/
- AC_EGREP_CPP(yes, [dnl
+ AC_EGREP_CPP(yes, [
#include <netinet/in.h>
#ifdef __KAME__
yes
@@ -1143,7 +1191,7 @@ yes
;;
linux-glibc)
dnl http://www.v6.linux.or.jp/
- AC_EGREP_CPP(yes, [dnl
+ AC_EGREP_CPP(yes, [
#include <features.h>
#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
yes
@@ -1171,7 +1219,7 @@ yes
fi
;;
toshiba)
- AC_EGREP_CPP(yes, [dnl
+ AC_EGREP_CPP(yes, [
#include <sys/param.h>
#ifdef _TOSHIBA_INET6
yes
@@ -1182,7 +1230,7 @@ yes
OPT="-DINET6 $OPT"])
;;
v6d)
- AC_EGREP_CPP(yes, [dnl
+ AC_EGREP_CPP(yes, [
#include </usr/local/v6/include/sys/v6config.h>
#ifdef __V6D__
yes
@@ -1193,7 +1241,7 @@ yes
OPT="-I/usr/local/v6/include $OPT"])
;;
zeta)
- AC_EGREP_CPP(yes, [dnl
+ AC_EGREP_CPP(yes, [
#include <sys/param.h>
#ifdef _ZETA_MINAMI_INET6
yes