Fix MinGW native compilation of gdb/gdbsupport/gdb_wait.c
[deliverable/binutils-gdb.git] / gdb / gdbsupport / common.m4
index 471d7056f74fb003c70366df612cb4be279bba6f..c36d84a42beef52b2b100dc512ba91b30d9cafcd 100644 (file)
@@ -1,5 +1,5 @@
 dnl Autoconf configure snippets for common.
-dnl Copyright (C) 1995-2019 Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
 dnl 
@@ -35,7 +35,38 @@ AC_DEFUN([GDB_AC_COMMON], [
   AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction \
                  sigprocmask])
 
-  AC_CHECK_DECLS([strerror, strstr])
+  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.
@@ -44,7 +75,7 @@ AC_CACHE_CHECK([for sigsetjmp], gdb_cv_func_sigsetjmp,
 #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
+if test "$gdb_cv_func_sigsetjmp" = "yes"; then
   AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
 fi
 ])
This page took 0.034916 seconds and 4 git commands to generate.