aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_interface
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2012-11-21 17:12:19 +0100
committerBjörn-Egil Dahlberg <[email protected]>2012-11-21 17:12:19 +0100
commit998ed368ed0630f2a1b202c046afad0022b3ccc6 (patch)
tree529bfe443007e4613197535cbb04a19cad6ec1e5 /lib/erl_interface
parentb0acd41f90490d38156cf9c8615859def630596b (diff)
parent3660d23158441075dec8e3c08fb513225ec10210 (diff)
downloadotp-998ed368ed0630f2a1b202c046afad0022b3ccc6.tar.gz
otp-998ed368ed0630f2a1b202c046afad0022b3ccc6.tar.bz2
otp-998ed368ed0630f2a1b202c046afad0022b3ccc6.zip
Merge branch 'ph/erl_interface/check-thread-support/OTP-10581' into maint
* ph/erl_interface/check-thread-support/OTP-10581: Teach erl_interface configure more pthread support
Diffstat (limited to 'lib/erl_interface')
-rw-r--r--lib/erl_interface/aclocal.m410
-rw-r--r--lib/erl_interface/configure.in8
2 files changed, 15 insertions, 3 deletions
diff --git a/lib/erl_interface/aclocal.m4 b/lib/erl_interface/aclocal.m4
index b1cf1fe404..9578cd35c4 100644
--- a/lib/erl_interface/aclocal.m4
+++ b/lib/erl_interface/aclocal.m4
@@ -740,11 +740,16 @@ dnl Try to find POSIX threads
dnl The usual pthread lib...
AC_CHECK_LIB(pthread, pthread_create, THR_LIBS="-lpthread")
-dnl FreeBSD has pthreads in special c library, c_r...
+dnl Very old versions of FreeBSD have pthreads in special c library, c_r...
if test "x$THR_LIBS" = "x"; then
AC_CHECK_LIB(c_r, pthread_create, THR_LIBS="-lc_r")
fi
+dnl QNX has pthreads in standard C library
+ if test "x$THR_LIBS" = "x"; then
+ AC_CHECK_FUNC(pthread_create, THR_LIBS="none_needed")
+ fi
+
dnl On ofs1 the '-pthread' switch should be used
if test "x$THR_LIBS" = "x"; then
AC_MSG_CHECKING([if the '-pthread' switch can be used])
@@ -765,6 +770,9 @@ dnl On ofs1 the '-pthread' switch should be used
if test "x$THR_LIBS" != "x"; then
THR_DEFS="$THR_DEFS -D_THREAD_SAFE -D_REENTRANT -DPOSIX_THREADS"
THR_LIB_NAME=pthread
+ if test "x$THR_LIBS" = "xnone_needed"; then
+ THR_LIBS=
+ fi
case $host_os in
solaris*)
THR_DEFS="$THR_DEFS -D_POSIX_PTHREAD_SEMANTICS" ;;
diff --git a/lib/erl_interface/configure.in b/lib/erl_interface/configure.in
index c958f80065..f1c9ebbb6f 100644
--- a/lib/erl_interface/configure.in
+++ b/lib/erl_interface/configure.in
@@ -79,7 +79,7 @@ AC_ARG_ENABLE(threads,
no) threads_disabled=yes ;;
*) threads_disabled=no ;;
esac ],
-[ threads_disabled=no ])
+[ threads_disabled=maybe ])
dnl ----------------------------------------------------------------------
dnl Checks for programs
@@ -237,12 +237,16 @@ AC_SUBST(THR_DEFS)
AC_SUBST(EI_THREADS)
case "$threads_disabled" in
- no)
+ no|maybe)
LM_CHECK_THR_LIB
case "$THR_LIB_NAME" in
"")
EI_THREADS="false"
+ # Fail if --enable-threads given and no threads found
+ if test "x$threads_disabled" = "xno"; then
+ AC_MSG_ERROR(No threads support found)
+ fi
;;
win32_threads)
EI_THREADS="true"