[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