diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2001-10-15 08:06:29 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2001-10-15 08:06:29 (GMT) |
commit | a5f73f9bab445608fcf3586ff9c20675c3106d2c (patch) | |
tree | 4b3b29880c326189bc7dd09c0383e298140f58e4 /configure.in | |
parent | cdc632cfdbb6b5cebc6a39ec2d65905e304280fa (diff) | |
download | cpython-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.in | 62 |
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 |