kopia lustrzana https://github.com/jamescoxon/dl-fldigi
91 wiersze
4.2 KiB
Plaintext
91 wiersze
4.2 KiB
Plaintext
dnl Check whether TLS is supported. C test code from gcc's config/tls.m4.
|
|
AC_DEFUN([CHECK_TLS], [
|
|
AC_MSG_CHECKING([for TLS support])
|
|
AC_LANG_PUSH(C++)
|
|
|
|
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
|
|
[chktls_save_CXXFLAGS="$CXXFLAGS"
|
|
thread_CXXFLAGS=failed
|
|
for flag in "" "-pthread" "-lpthread"; do
|
|
CXXFLAGS="$flag $chktls_save_CXXFLAGS"
|
|
AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include <pthread.h>
|
|
void *g(void *d) { return NULL; }]],
|
|
[[pthread_t t; pthread_create(&t, NULL, g, NULL);]] )
|
|
],
|
|
[thread_CXXFLAGS="$flag"] )
|
|
if test "x$thread_CXXFLAGS" != "xfailed"; then
|
|
break
|
|
fi
|
|
done
|
|
CXXFLAGS="$chktls_save_CXXFLAGS"
|
|
|
|
if test "x$thread_CXXFLAGS" != "xfailed"; then
|
|
CXXFLAGS="$thread_CXXFLAGS $chktls_save_CXXFLAGS"
|
|
AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include <pthread.h>
|
|
__thread int a;
|
|
static int *a_in_other_thread;
|
|
static void *thread_func(void *arg)
|
|
{
|
|
a_in_other_thread = &a;
|
|
return (void *)0;
|
|
}]],
|
|
[[pthread_t thread;
|
|
void *thread_retval;
|
|
int *a_in_main_thread;
|
|
if (pthread_create(&thread, (pthread_attr_t *)0,
|
|
thread_func, (void *)0))
|
|
return 0;
|
|
a_in_main_thread = &a;
|
|
if (pthread_join (thread, &thread_retval))
|
|
return 0;
|
|
return (a_in_other_thread == a_in_main_thread);]] )
|
|
],
|
|
[ac_cv_tls=yes], [ac_cv_tls=no] )
|
|
CXXFLAGS="$chktls_save_CXXFLAGS"
|
|
fi],
|
|
[ac_cv_tls=no],
|
|
[AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }],
|
|
[ac_cv_tls=yes], [ac_cv_tls=no])]
|
|
)
|
|
|
|
AC_LANG_POP(C++)
|
|
AC_MSG_RESULT([$ac_cv_tls])
|
|
])
|
|
|
|
|
|
AC_DEFUN([AC_FLDIGI_TLS], [
|
|
AC_ARG_ENABLE([tls],
|
|
AC_HELP_STRING([--enable-tls], [enable use of TLS @<:@autodetect@:>@]),
|
|
[case "${enableval}" in
|
|
yes|no) ac_cv_want_tls="${enableval}" ;;
|
|
*) AC_MSG_ERROR([bad value "${enableval}" for --enable-tls]) ;;
|
|
esac],
|
|
[ac_cv_want_tls=check])
|
|
|
|
if test "x$target_mingw32" = "xyes"; then
|
|
ac_cv_want_tls=no
|
|
fi
|
|
|
|
if test "x$ac_cv_want_tls" = "xno"; then
|
|
AC_DEFINE(USE_TLS, 0, [Defined if we are using TLS])
|
|
ac_cv_tls=no
|
|
AC_MSG_CHECKING([for TLS support])
|
|
AC_MSG_RESULT([disabled])
|
|
else
|
|
CHECK_TLS()
|
|
if test "x$ac_cv_want_tls" = "xcheck"; then
|
|
if test "x$ac_cv_tls" = "xyes"; then
|
|
AC_DEFINE(USE_TLS, 1, [Defined if we are using TLS])
|
|
else
|
|
AC_DEFINE(USE_TLS, 0, [Defined if we are using TLS])
|
|
fi
|
|
else # $ac_cv_want_tls is yes
|
|
if test "x$ac_cv_tls" = "xno"; then
|
|
AC_MSG_FAILURE([--enable-tls was given, but TLS is not supported])
|
|
else
|
|
AC_DEFINE(USE_TLS, 1, [Defined if we are using TLS])
|
|
fi
|
|
fi
|
|
fi
|
|
])
|