diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2022-01-08 11:53:52 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2022-01-08 11:53:52 +0100 |
commit | fa838e76139763f902c7d27cb9e1d393ed6a15e4 (patch) | |
tree | 7d0ae09775ea950056193eaa2ca93844299d46f1 /gnulib-m4/pthread_sigmask.m4 | |
parent | c78359d9542c86b972aac373efcf7bc7a8a560e5 (diff) | |
parent | 2959e59fab3bab834368adefd90bd4b1b094366b (diff) |
Merge branch 'feature/upstream' into develop
Diffstat (limited to 'gnulib-m4/pthread_sigmask.m4')
-rw-r--r-- | gnulib-m4/pthread_sigmask.m4 | 215 |
1 files changed, 105 insertions, 110 deletions
diff --git a/gnulib-m4/pthread_sigmask.m4 b/gnulib-m4/pthread_sigmask.m4 index a33b433..0aa8c53 100644 --- a/gnulib-m4/pthread_sigmask.m4 +++ b/gnulib-m4/pthread_sigmask.m4 @@ -1,5 +1,5 @@ -# pthread_sigmask.m4 serial 16 -dnl Copyright (C) 2011-2018 Free Software Foundation, Inc. +# pthread_sigmask.m4 serial 21 +dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,103 +9,97 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([pthread_sigmask]) + + dnl On MinGW pthread_sigmask is just a macro which always returns 0. + dnl It does not exist as a real function, which is required by POSIX. + AC_CACHE_CHECK([whether pthread_sigmask is a macro], + [gl_cv_func_pthread_sigmask_macro], + [AC_EGREP_CPP([headers_define_pthread_sigmask], [ +#include <pthread.h> +#include <signal.h> +#ifdef pthread_sigmask + headers_define_pthread_sigmask +#endif], + [gl_cv_func_pthread_sigmask_macro=yes], + [gl_cv_func_pthread_sigmask_macro=no]) + ]) + LIB_PTHREAD_SIGMASK= - dnl Test whether the gnulib module 'threadlib' is in use. - dnl Some packages like Emacs use --avoid=threadlib. - dnl Write the symbol in such a way that it does not cause 'aclocal' to pick - dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/. - m4_ifdef([gl_][THREADLIB], [ - AC_REQUIRE([gl_][THREADLIB]) + if test $gl_cv_func_pthread_sigmask_macro = yes; then + dnl pthread_sigmask is a dummy macro. + HAVE_PTHREAD_SIGMASK=0 + dnl Make sure to '#undef pthread_sigmask' before defining it. + REPLACE_PTHREAD_SIGMASK=1 + else + dnl Test whether the gnulib module 'threadlib' is in use. + dnl Some packages like Emacs use --avoid=threadlib. + dnl Write the symbol in such a way that it does not cause 'aclocal' to pick + dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/. + m4_ifdef([gl_][THREADLIB], [ + AC_REQUIRE([gl_][THREADLIB]) - if test "$gl_threads_api" = posix; then - if test $ac_cv_func_pthread_sigmask = yes; then - dnl pthread_sigmask is available without -lpthread. - : - else - if test -n "$LIBMULTITHREAD"; then - AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD], - [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD], - [gl_save_LIBS="$LIBS" - LIBS="$LIBS $LIBMULTITHREAD" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <pthread.h> - #include <signal.h> - ]], - [[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]]) - ], - [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes], - [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no]) - LIBS="$gl_save_LIBS" - ]) - if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then - AC_CACHE_CHECK([whether pthread_sigmask is only a macro], - [gl_cv_func_pthread_sigmask_is_macro], + if test "$gl_threads_api" = posix; then + if test $ac_cv_func_pthread_sigmask = yes; then + dnl pthread_sigmask is available without -lpthread. + : + else + if test -n "$LIBMULTITHREAD"; then + AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD], + [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD], [gl_save_LIBS="$LIBS" LIBS="$LIBS $LIBMULTITHREAD" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include <pthread.h> #include <signal.h> - #undef pthread_sigmask ]], [[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]]) ], - [gl_cv_func_pthread_sigmask_is_macro=no], - [gl_cv_func_pthread_sigmask_is_macro=yes]) + [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes], + [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no]) LIBS="$gl_save_LIBS" ]) - if test $gl_cv_func_pthread_sigmask_is_macro = yes; then - dnl On MinGW pthread_sigmask is just a macro which always returns 0. - dnl It does not exist as a real function, which is required by POSIX. - REPLACE_PTHREAD_SIGMASK=1 - gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no + if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then + dnl pthread_sigmask is available with -pthread or -lpthread. + LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD" + else + dnl pthread_sigmask is not available at all. + HAVE_PTHREAD_SIGMASK=0 fi - fi - if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then - dnl pthread_sigmask is available with -pthread or -lpthread. - LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD" else dnl pthread_sigmask is not available at all. HAVE_PTHREAD_SIGMASK=0 fi + fi + else + dnl pthread_sigmask may exist but does not interoperate with the chosen + dnl multithreading facility. + if test $ac_cv_func_pthread_sigmask = yes; then + REPLACE_PTHREAD_SIGMASK=1 else - dnl pthread_sigmask is not available at all. HAVE_PTHREAD_SIGMASK=0 fi fi - else - dnl pthread_sigmask may exist but does not interoperate with the chosen - dnl multithreading facility. - dnl If "$gl_threads_api" = pth, we could use the function pth_sigmask, - dnl but it is equivalent to sigprocmask, so we choose to emulate - dnl pthread_sigmask with sigprocmask also in this case. This yields fewer - dnl link dependencies. + ], [ + dnl The module 'threadlib' is not in use, due to --avoid=threadlib being + dnl specified. + dnl The package either has prepared CPPFLAGS and LIBS for use of + dnl POSIX:2008 threads, or wants to build single-threaded programs. if test $ac_cv_func_pthread_sigmask = yes; then - REPLACE_PTHREAD_SIGMASK=1 + dnl pthread_sigmask exists and does not require extra libraries. + dnl Assume that it is declared. + : else + dnl pthread_sigmask either does not exist or needs extra libraries. HAVE_PTHREAD_SIGMASK=0 + dnl Define the symbol rpl_pthread_sigmask, not pthread_sigmask, + dnl so as to not accidentally override the system's pthread_sigmask + dnl symbol from libpthread. This is necessary on IRIX 6.5. + REPLACE_PTHREAD_SIGMASK=1 fi - fi - ], [ - dnl The module 'threadlib' is not in use, due to --avoid=threadlib being - dnl specified. - dnl The package either has prepared CPPFLAGS and LIBS for use of POSIX:2008 - dnl threads, or wants to build single-threaded programs. - if test $ac_cv_func_pthread_sigmask = yes; then - dnl pthread_sigmask exists and does not require extra libraries. - dnl Assume that it is declared. - : - else - dnl pthread_sigmask either does not exist or needs extra libraries. - HAVE_PTHREAD_SIGMASK=0 - dnl Define the symbol rpl_pthread_sigmask, not pthread_sigmask, - dnl so as to not accidentally override the system's pthread_sigmask - dnl symbol from libpthread. This is necessary on IRIX 6.5. - REPLACE_PTHREAD_SIGMASK=1 - fi - ]) + ]) + fi AC_SUBST([LIB_PTHREAD_SIGMASK]) dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when @@ -117,48 +111,48 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - dnl On FreeBSD 6.4, HP-UX 11.31, Solaris 9, in programs that are not linked - dnl with -lpthread, the pthread_sigmask() function always returns 0 and has - dnl no effect. + dnl On FreeBSD 13.0, MidnightBSD 1.1, HP-UX 11.31, Solaris 9, in programs + dnl that are not linked with -lpthread, the pthread_sigmask() function + dnl always returns 0 and has no effect. if test -z "$LIB_PTHREAD_SIGMASK"; then case " $LIBS " in *' -pthread '*) ;; *' -lpthread '*) ;; - *) - AC_CACHE_CHECK([whether pthread_sigmask works without -lpthread], - [gl_cv_func_pthread_sigmask_in_libc_works], - [ - AC_RUN_IFELSE( - [AC_LANG_SOURCE([[ - #include <pthread.h> - #include <signal.h> - #include <stddef.h> - int main () - { - sigset_t set; - sigemptyset (&set); - return pthread_sigmask (1729, &set, NULL) != 0; - }]])], - [gl_cv_func_pthread_sigmask_in_libc_works=no], - [gl_cv_func_pthread_sigmask_in_libc_works=yes], - [ - changequote(,)dnl - case "$host_os" in - freebsd* | hpux* | solaris | solaris2.[2-9]*) - gl_cv_func_pthread_sigmask_in_libc_works="guessing no";; - *) - gl_cv_func_pthread_sigmask_in_libc_works="guessing yes";; - esac - changequote([,])dnl - ]) - ]) - case "$gl_cv_func_pthread_sigmask_in_libc_works" in - *no) - REPLACE_PTHREAD_SIGMASK=1 - AC_DEFINE([PTHREAD_SIGMASK_INEFFECTIVE], [1], - [Define to 1 if pthread_sigmask may return 0 and have no effect.]) - ;; - esac;; + *) + AC_CACHE_CHECK([whether pthread_sigmask works without -lpthread], + [gl_cv_func_pthread_sigmask_in_libc_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ + #include <pthread.h> + #include <signal.h> + #include <stddef.h> + int main () + { + sigset_t set; + sigemptyset (&set); + return pthread_sigmask (1729, &set, NULL) != 0; + }]])], + [gl_cv_func_pthread_sigmask_in_libc_works=no], + [gl_cv_func_pthread_sigmask_in_libc_works=yes], + [ + changequote(,)dnl + case "$host_os" in + freebsd* | midnightbsd* | hpux* | solaris | solaris2.[2-9]*) + gl_cv_func_pthread_sigmask_in_libc_works="guessing no";; + *) + gl_cv_func_pthread_sigmask_in_libc_works="guessing yes";; + esac + changequote([,])dnl + ]) + ]) + case "$gl_cv_func_pthread_sigmask_in_libc_works" in + *no) + REPLACE_PTHREAD_SIGMASK=1 + AC_DEFINE([PTHREAD_SIGMASK_INEFFECTIVE], [1], + [Define to 1 if pthread_sigmask may return 0 and have no effect.]) + ;; + esac;; esac fi @@ -226,6 +220,7 @@ int main () #include <stdio.h> #include <stdlib.h> #include <unistd.h> +]GL_MDA_DEFINES[ static volatile int sigint_occurred; static void sigint_handler (int sig) |