Hi there, I've run into a problem building guile using the MinGW toolchain under MSYS.
gar...@xdcnb048 /c/gareth/geda/deps/guile-1.8.7/libguile $ gcc -DHAVE_CONFIG_H -I.. -I/usr/local/include -g -O2 -Wall -Wmissing-prototyp es -Werror -MT libguile_la-threads.lo -MD -MP -MF .deps/libguile_la-threads.Tpo -c threads.c -DDLL_EXPORT -DPIC -o .libs/libguile_la-threads.o threads.c: In function 'scm_timed_wait_condition_variable': threads.c:1312: error: storage size of 'waittime' isn't known cc1.exe: warnings being treated as errors threads.c:1312: error: unused variable 'waittime' I believe it's the same issue as mentioned here: http://lists.gnu.org/archive/html/guile-devel/2008-07/msg00052.html but it doesn't look like it was resolved at that point. Hopefully I can explain what I think is going on. I think the fundamental issue is that pthread.h and guile are using the same #define name. pthread.h defines timespec like this: #ifndef HAVE_STRUCT_TIMESPEC #define HAVE_STRUCT_TIMESPEC 1 struct timespec { long tv_sec; long tv_nsec; }; #endif /* HAVE_STRUCT_TIMESPEC */ So, presumably, configure tests for timespec, it doesn't have HAVE_STRUCT_TIMESPEC set. Test passes, and then config.h then gets /* Define this if your system defines struct timespec via either <time.h> or <pthread.h>. */ #define HAVE_STRUCT_TIMESPEC 1 But now, when config.h is included before pthread.h, this has the effect of hiding this declaration in the pthread.h file, so the guile build breaks. Cheers Gareth