]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/gdbsupport/common.m4
Add RAII class for blocking gdb signals
[thirdparty/binutils-gdb.git] / gdb / gdbsupport / common.m4
1 dnl Autoconf configure snippets for common.
2 dnl Copyright (C) 1995-2019 Free Software Foundation, Inc.
3 dnl
4 dnl This file is part of GDB.
5 dnl
6 dnl This program is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 3 of the License, or
9 dnl (at your option) any later version.
10 dnl
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 dnl GNU General Public License for more details.
15 dnl
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
18
19 dnl Invoke configury needed by the files in 'common'.
20 AC_DEFUN([GDB_AC_COMMON], [
21 AC_HEADER_STDC
22 AC_FUNC_ALLOCA
23
24 dnl Note that this requires codeset.m4, which is included
25 dnl by the users of common.m4.
26 AM_LANGINFO_CODESET
27
28 AC_CHECK_HEADERS(linux/perf_event.h locale.h memory.h signal.h dnl
29 sys/resource.h sys/socket.h dnl
30 sys/un.h sys/wait.h dnl
31 thread_db.h wait.h dnl
32 termios.h dnl
33 dlfcn.h)
34
35 AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction \
36 sigprocmask])
37
38 AC_CHECK_DECLS([strerror, strstr])
39
40 # Check for std::thread. This does not work on some platforms, like
41 # mingw and DJGPP.
42 AC_LANG_PUSH([C++])
43 AX_PTHREAD([threads=yes], [threads=no])
44 if test "$threads" = "yes"; then
45 save_LIBS="$LIBS"
46 LIBS="$PTHREAD_LIBS $LIBS"
47 save_CXXFLAGS="$CXXFLAGS"
48 CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
49 AC_CACHE_CHECK([for std::thread],
50 gdb_cv_cxx_std_thread,
51 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
52 [[#include <thread>
53 void callback() { }]],
54 [[std::thread t(callback);]])],
55 gdb_cv_cxx_std_thread=yes,
56 gdb_cv_cxx_std_thread=no)])
57
58 # This check must be here, while LIBS includes any necessary
59 # threading library.
60 AC_CHECK_FUNCS([pthread_sigmask])
61
62 LIBS="$save_LIBS"
63 CXXFLAGS="$save_CXXFLAGS"
64 fi
65 if test $gdb_cv_cxx_std_thread = yes; then
66 AC_DEFINE(CXX_STD_THREAD, 1,
67 [Define to 1 if std::thread works.])
68 fi
69 AC_LANG_POP
70
71 dnl Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't
72 dnl do since sigsetjmp might only be defined as a macro.
73 AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
74 [AC_TRY_COMPILE([
75 #include <setjmp.h>
76 ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
77 gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
78 if test $gdb_cv_func_sigsetjmp = yes; then
79 AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
80 fi
81 ])