[Mesa-dev] [PATCH] configure.ac: Do not use Pthreads with MinGW.

Jose Fonseca jfonseca at vmware.com
Wed Jun 4 13:13:00 PDT 2014



----- Original Message -----
> On 04/06/14 12:50, Jon TURNEY wrote:
> > On 04/06/2014 01:06, Vinson Lee wrote:
> >> Match the behavior of the SCons MinGW build.
> >>
> >> This patch also fixes these build errors.
> >>
> >>    CC       glapi_entrypoint.lo
> >> glapi_entrypoint.c: In function 'init_glapi_relocs_once':
> >> glapi_entrypoint.c:341:4: error: unknown type name 'pthread_once_t'
> >>      static pthread_once_t once_control = PTHREAD_ONCE_INIT;
> >>      ^
> >> glapi_entrypoint.c:341:41: error: 'PTHREAD_ONCE_INIT' undeclared (first
> >> use
> >> in this function)
> >>      static pthread_once_t once_control = PTHREAD_ONCE_INIT;
> >>                                           ^
> >> glapi_entrypoint.c:341:41: note: each undeclared identifier is reported
> >> only
> >> once for each function it appears in
> >> glapi_entrypoint.c:342:4: error: implicit declaration of function
> >> 'pthread_once' [-Werror=implicit-function-declaration]
> >>      pthread_once( & once_control, init_glapi_relocs );
> >>      ^
> >>
> >> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
> >> ---
> >>   configure.ac | 7 ++++++-
> >>   1 file changed, 6 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/configure.ac b/configure.ac
> >> index 9c64400..ab3b91d 100644
> >> --- a/configure.ac
> >> +++ b/configure.ac
> >> @@ -552,7 +552,12 @@ dnl See if posix_memalign is available
> >>   AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES
> >>   -DHAVE_POSIX_MEMALIGN"])
> >>
> >>   dnl Check for pthreads
> >> -AX_PTHREAD
> >> +case "$host_os" in
> >> +mingw*)
> >> +    ;;
> >> +*)
> >> +    AX_PTHREAD
> >> +esac
> >>   dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets
> >>   PTHREAD_CFLAGS
> >>   dnl to -pthread, which causes problems if we need -lpthread to appear in
> >>   dnl pkgconfig files.
> > 
> > I'm not sure this is right.
> > 
> > Current versions of both the pthreads libraries for MinGW/MinGW64
> > (pthreads-win32, winpthreads) seem to have pthread_once()
> > 
> Indeed same here. My assumption is that mingw*gcc is built with
> --enable-threads=win32, which essentially drops any support for pthreads.

Even if MinGW's libstdc++11 uses pthreads, I don't think we want to use pthreads from Mesa ourselves.  In the end, we'll sill be using win32 native threads, but just with a pointless indirection layer.

Actually, I'm pretty sure that using pthreads on Windows will not work well, as we assume win32 threads in many places.

Jose


More information about the mesa-dev mailing list