On Sat, 30 Apr 2022 at 12:44, Bruno Haible <br...@clisp.org> wrote:

> Reuben Thomas wrote:
> > on MSYS it goes wrong
> > ...
> > setlocale_null_with_lock (category=category@entry=0, buf=buf@entry
> =0xffffbd80
> > "", bufsize=bufsize@entry=3221) at setlocale_null.c:228
> > 228       if (pthread_in_use())
> > (gdb)
> > 230           pthread_mutex_t *lock = gl_get_setlocale_null_lock ();
>
> It looks like you are building the code meant for POSIX platforms on a
> native Windows system, and that system's POSIX threads emulation is
> deficient.
>

It's not really that I'm doing anything: gnulib seems to detect MSYS as
being a POSIX platform.


> Try configuring with --enable-threads=windows, as documented in
>
> https://www.gnu.org/software/gnulib/manual/html_node/Gnulib-multithreading.html
>
> If that works fine and you want to make it the default, add an invocation
> of
> gl_AVOID_WINPTHREAD to your configure.ac file.
>

Thanks very much for the hints.

In the end I tried something a bit different, which was to reduce the
number of gnulib modules I was using, as for the code I'm writing it seemed
reasonable to assume C99 and POSIX.1-2008.

I ran into another minor problem while doing this. My module list was:

bootstrap
filenamecat-lgpl
getline
getopt-gnu
manywarnings
pathmax
relocatable-lib-lgpl
relocatable-script
strcase

On Windows, I got a link error when linking against libgnu, as the
dependencies of the modules above cause gnulib's stdlib.h to be installed,
and on Windows, rpl_free is defined, but free.c was not compiled into
libgnu.

Adding the free-posix module fixed my problem, which looks therefore like a
missing dependency.

-- 
https://rrt.sc3d.org

Reply via email to