diff --git a/ChangeLog b/ChangeLog index c4568efafa..47c9921e66 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Dec 26 18:33:54 2003 Nobuyoshi Nakada + + * configure.in: check if getcontext and setcontext are available. + + * eval.c: use presence of getcontext/setcontext. + Fri Dec 26 16:40:53 2003 Tanaka Akira * lib/pathname.rb (PathnameTest#test_plus): add 2 assertions. diff --git a/configure.in b/configure.in index 456f653c9e..9226dc980f 100644 --- a/configure.in +++ b/configure.in @@ -685,46 +685,37 @@ int main() AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $rb_cv_stack_grow_dir) if test "$enable_pthread" = "yes"; then - AC_CHECK_LIB(pthread, pthread_kill, - rb_with_pthread=yes, rb_with_pthread=no) - if test "$rb_with_pthread" = "yes"; then - LIBS="-lpthread $LIBS" - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - AC_DEFINE(HAVE_LIBPTHREAD) - else - AC_CHECK_LIB(pthreads, pthread_kill, - rb_with_pthread=yes, rb_with_pthread=no) - if test "$rb_with_pthread" = "yes"; then - LIBS="-lpthreads $LIBS" - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - AC_DEFINE(HAVE_LIBPTHREAD) - else - AC_CHECK_LIB(c, pthread_kill, - rb_with_pthread=yes, rb_with_pthread=no) - if test "$rb_with_pthread" = "yes"; then - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - AC_DEFINE(HAVE_LIBPTHREAD) - else - AC_CHECK_LIB(c_r, pthread_kill, - rb_with_pthread=yes, rb_with_pthread=no) - if test "$rb_with_pthread" = "yes"; then - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - AC_DEFINE(HAVE_LIBPTHREAD) - MAINLIBS="-pthread $MAINLIBS" - else - AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled") - fi - fi - fi - fi - AC_CHECK_FUNC(nanosleep) - if test "$ac_cv_func_nanosleep" = "no"; then - AC_CHECK_LIB(rt, nanosleep, AC_DEFINE(HAVE_NANOSLEEP)) - fi + for pthread_lib in pthread pthreads c c_r; do + AC_CHECK_LIB($pthread_lib, pthread_kill, + rb_with_pthread=yes, rb_with_pthread=no) + if test "$rb_with_pthread" = "yes"; then break; fi + done + if test $rb_with_pthread = yes; then + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + AC_DEFINE(HAVE_LIBPTHREAD) + case $pthread_lib in + c) + ;; + c_r) + MAINLIBS="-pthread $MAINLIBS" + ;; + *) + LIBS="-l$pthread_lib $LIBS" + ;; + esac + else + AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled") + fi + AC_CHECK_FUNC(nanosleep) + if test "$ac_cv_func_nanosleep" = "no"; then + AC_CHECK_LIB(rt, nanosleep, AC_DEFINE(HAVE_NANOSLEEP)) + fi +fi +if test $ac_cv_header_ucontext_h = yes; then + if test $target_cpu = ia64 -o $rb_with_pthread = yes; then + AC_CHECK_FUNCS(getcontext setcontext) + fi fi dnl default value for $KANJI diff --git a/eval.c b/eval.c index 72d0641fb5..e588461012 100644 --- a/eval.c +++ b/eval.c @@ -29,7 +29,7 @@ #endif #include -#if defined(HAVE_UCONTEXT_H) && (defined(__ia64__) || defined(HAVE_NATIVETHREAD)) && !defined(__stub_getcontext) +#if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT) #include #define USE_CONTEXT #else