Commit e94bfb67 authored by Ben Gamari's avatar Ben Gamari Committed by Ben Gamari

configure: detect whether -lpthreads is necessary for pthreads

Some platforms have pthreads support available without linking against
libpthread (and indeed don't even offer a libpthread to link against).
One example of this is Android's bionic library. Teach the RTS about
this case.

Test Plan: Validate while cross-compiling targetting Android on aarch64

Reviewers: simonmar, austin, hvr, erikd, rwbarton

Subscribers: danharaj, thomie, erikd, snowleopard

Differential Revision: https://phabricator.haskell.org/D3149
parent 36b6e131
......@@ -946,6 +946,31 @@ AC_TRY_LINK_FUNC(printf\$LDBLStub,
[Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
])
dnl Some platforms (e.g. Android's Bionic) have pthreads support available
dnl without linking against libpthread. Check whether -lpthread is necessary
dnl to use pthreads.
dnl
dnl Note that it is important that this happens before we AC_CHECK_LIB(thread)
AC_MSG_CHECKING(whether -lpthread is needed for pthreads)
AC_CHECK_FUNC(pthread_create,
[
AC_MSG_RESULT(no)
need_lpthread=0
],
[
AC_CHECK_LIB(pthread, pthread_create,
[
AC_MSG_RESULT(yes)
need_lpthread=1
],
[
AC_MSG_RESULT([no pthreads support found.])
need_lpthread=0
])
])
AC_DEFINE_UNQUOTED([NEED_PTHREAD_LIB], [$need_lpthread],
[Define 1 if we need to link code using pthreads with -lpthread])
dnl ** pthread_setname_np is a recent addition to glibc, and OS X has
dnl a different single-argument version.
AC_CHECK_LIB(pthread, pthread_setname_np)
......
......@@ -46,7 +46,9 @@ extra-libraries:
,"gdi32" /* for the linker */
,"winmm" /* for the linker */
#endif
#if NEED_PTHREAD_LIB
, "pthread" /* for pthread_getthreadid_np, pthread_create, etc. */
#endif
#if defined(DEBUG) && defined(HAVE_LIBBFD)
,"bfd", "iberty" /* for debugging */
#endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment