Re: [PATCH v3 3/8] Add configure check for std::thread

Pedro Alves
2019-05-30T11:34:02Z

On 5/29/19 10:29 PM, Tom Tromey wrote:
> This adds a configure check for std::thread. This is needed because
> std::thread is not available in mingw.

AFAICT, the patch actually does two things:

- Add autoconf bits (ax_pthread.m4) to make sure we build with the
right -pthread, -pthreads, -lpthread, -lpthreads, or whatever the
right spelling is on the host to pull in the pthreads library.

- Adds a configure check for std::thread, since it is not available
on some platforms, at least out of the box. I think mingw-w64
(but not mingw.org) supports std::thread OOTB nowadays. I'd guess
that DJGPP doesn't support it either, at least OOTB. Googling around
seems to confirm that.

Right?

It'll be good to extend the commit log in that direction, IMO.

On 5/29/19 10:29 PM, Tom Tromey wrote:

> $(srcdir)/aclocal.m4: @MAINTAINER_MODE_TRUE@ $(aclocal_m4_deps)
> cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
> diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
> index 0719d422a71..ff463ea3595 100644
> --- a/gdb/acinclude.m4
> +++ b/gdb/acinclude.m4
> @@ -76,6 +76,8 @@ m4_include(ptrace.m4)
>
> m4_include(ax_cxx_compile_stdcxx.m4)
>
> +sinclude([../config/ax_pthread.m4])

Is there reason to prefer sinclude over m4_include? I never
got why we use sinclude so frequently, given it doesn't error
out if the file doesn't exist.

> --- a/gdb/common/common.m4
> +++ b/gdb/common/common.m4
> @@ -35,6 +35,31 @@ AC_DEFUN([GDB_AC_COMMON], [
>
> AC_CHECK_DECLS([strerror, strstr])
>
> + # Check for std::thread. This does not work on mingw.

Maybe mention DJGPP too.

> + 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_CFLAGS"

I think you meant save_CXXFLAGS here.

Otherwise looks fine to me.

Thanks,
Pedro Alves