diff options
author | Mihai Moldovan <ionic@ionic.de> | 2019-04-04 11:06:05 +0200 |
---|---|---|
committer | Mihai Moldovan <ionic@ionic.de> | 2019-04-04 11:19:01 +0200 |
commit | 95f8cf7ea0a169b47c84be29d0db3a40d1a86d86 (patch) | |
tree | aa8c2014f0d74b2422e6c8c869122c1567c6326b | |
parent | 2efaa423bdfb8067897028854a5c56086d3843fc (diff) | |
download | nx-libs-95f8cf7ea0a169b47c84be29d0db3a40d1a86d86.tar.gz nx-libs-95f8cf7ea0a169b47c84be29d0db3a40d1a86d86.tar.bz2 nx-libs-95f8cf7ea0a169b47c84be29d0db3a40d1a86d86.zip |
m4/ax_pthread.m4: implement workaround for libtool bug #13550.
Find the first available pthread library and use it together with the
-pthread flag if the C compiler is set to GCC.
Fixes: ArcticaProject/nx-libs#756
-rw-r--r-- | m4/ax_pthread.m4 | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 index 4920e073b..07a9cd265 100644 --- a/m4/ax_pthread.m4 +++ b/m4/ax_pthread.m4 @@ -83,6 +83,7 @@ # exception to the GPL to apply to your modified version as well. #serial 25 +#arctica-serial 1 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -334,6 +335,42 @@ for ax_pthread_try_flag in $ax_pthread_flags; do PTHREAD_LIBS="-lpthread" ;; + -pthread) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + + if test "x$GCC" = "xyes"; then + # Thanks to libtool bug #13550, we have to consider the possibility + # that -nostdlib will be used during compilation at some point. + # Try to determine the first pthread library available, + # ignoring any other variants. + for ax_pthread_try_lib_flag in $ax_pthread_flags; do + case $ax_pthread_try_lib_flag in + none|-*|pthread-config) + continue + ;; + + *) + PTHREAD_LIBS="-l$ax_pthread_try_lib_flag" + + ax_pthread_save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + + # We only need to link a trivial program with + # the current library value. + # Linking should fail if the library doesn't + # exist, otherwise we should be good to go. + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [LIBS="$ax_pthread_save_LIBS" + break], + [LIBS="$ax_pthread_save_LIBS" + PTHREAD_LIBS=""]) + ;; + esac + done + fi + ;; + -*) AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) PTHREAD_CFLAGS="$ax_pthread_try_flag" |