This command: rm -rf m;gnulib-tool --create-testdir --dir m --with-tests lseek unistd sys_socket; cd m;./configure --host=i586-mingw32msvc --build=i686-pc-linux-gnu;make check;cd ..
Fails like this: test-lseek.o: In function `main': /home/jas/src/gnulib/m/gltests/test-lseek.c:89: undefined reference to `_close_used_without_requesting_gnulib_module_close' /home/jas/src/gnulib/m/gltests/test-lseek.c:90: undefined reference to `_close_used_without_requesting_gnulib_module_close' The reason is that the unistd.h replacement looks like: #if 0 # if 1 /* Need a gnulib internal function. */ # define HAVE__GL_CLOSE_FD_MAYBE_SOCKET 1 # endif # if 0 /* Automatically included by modules that need a replacement for close. */ # undef close # define close rpl_close extern int close (int); # endif #elif 1 # undef close # define close close_used_without_requesting_gnulib_module_close #elif defined GNULIB_POSIXCHECK # undef close # define close(f) \ (GL_LINK_WARNING ("close does not portably work on sockets - " \ "use gnulib module close for portability"), \ close (f)) #endif Is it appropriate to use a hard error in this situation? If it was a warning, it would be something that could be ignored. Should the lseek-tests module depend on close? That feels wrong to me, it doesn't use close in a non-portable way, and certainly not in the way that the close module is intended to work around. /Simon