diff options
Diffstat (limited to 'gdbsupport/common.m4')
-rw-r--r-- | gdbsupport/common.m4 | 93 |
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 +]) |