summaryrefslogtreecommitdiff
path: root/gdbsupport/common.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gdbsupport/common.m4')
-rw-r--r--gdbsupport/common.m493
1 files changed, 93 insertions, 0 deletions
diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4
new file mode 100644
index 00000000000..9e15940eead
--- /dev/null
+++ b/gdbsupport/common.m4
@@ -0,0 +1,93 @@
+dnl Autoconf configure snippets for common.
+dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
+dnl
+dnl This file is part of GDB.
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+dnl Invoke configury needed by the files in 'common'.
+AC_DEFUN([GDB_AC_COMMON], [
+ AC_HEADER_STDC
+ AC_FUNC_ALLOCA
+
+ WIN32APILIBS=
+ case ${host} in
+ *mingw32*)
+ AC_DEFINE(USE_WIN32API, 1,
+ [Define if we should use the Windows API, instead of the
+ POSIX API. On Windows, we use the Windows API when
+ building for MinGW, but the POSIX API when building
+ for Cygwin.])
+ WIN32APILIBS="-lws2_32"
+ ;;
+ esac
+
+ dnl Note that this requires codeset.m4, which is included
+ dnl by the users of common.m4.
+ AM_LANGINFO_CODESET
+
+ AC_CHECK_HEADERS(linux/perf_event.h locale.h memory.h signal.h dnl
+ sys/resource.h sys/socket.h dnl
+ sys/un.h sys/wait.h dnl
+ thread_db.h wait.h dnl
+ termios.h dnl
+ dlfcn.h)
+
+ AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction \
+ sigprocmask])
+
+ AC_CHECK_DECLS([strstr])
+
+ # Check for std::thread. This does not work on some platforms, like
+ # mingw and DJGPP.
+ AC_LANG_PUSH([C++])
+ AX_PTHREAD([threads=yes], [threads=no])
+ if test "$threads" = "yes"; then
+ save_LIBS="$LIBS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+ save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
+ AC_CACHE_CHECK([for std::thread],
+ gdb_cv_cxx_std_thread,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[#include <thread>
+ void callback() { }]],
+ [[std::thread t(callback);]])],
+ gdb_cv_cxx_std_thread=yes,
+ gdb_cv_cxx_std_thread=no)])
+
+ # This check must be here, while LIBS includes any necessary
+ # threading library.
+ AC_CHECK_FUNCS([pthread_sigmask pthread_setname_np])
+
+ LIBS="$save_LIBS"
+ CXXFLAGS="$save_CXXFLAGS"
+ fi
+ if test "$gdb_cv_cxx_std_thread" = "yes"; then
+ AC_DEFINE(CXX_STD_THREAD, 1,
+ [Define to 1 if std::thread works.])
+ fi
+ AC_LANG_POP
+
+ dnl Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't
+ dnl do since sigsetjmp might only be defined as a macro.
+ AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
+ [AC_TRY_COMPILE([
+ #include <setjmp.h>
+ ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
+ gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
+ if test "$gdb_cv_func_sigsetjmp" = "yes"; then
+ AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
+ fi
+])