Hi. At Sun, 20 Oct 2013 13:05:54 -0300, David Bremner wrote: > > Tomi Ollila <tomi.ollila@iki.fi> writes: > > > I'd suggest you do a system that attaches to the current system with as > > small changes as possible (so you get reviewers) and put all windows > > specific things to separate script(s) (which is executed *only* when windows > > build is detected). The gnulib dependency could be handled so that in > > case (ext/*)gnulib directory does not exist, first > > 'git clone git://git.savannah.gnu.org/gnulib.git' is done -- and then > > a specific commit is checked out from the clone (git reset --hard <hash>) > > After looking at gnulib a bit yesterday, it seems unlikely that we need > or want all of it. Yes, it's seldom that one needs all of it. > It might be simpler to just grab the bits of gnulib > we need and throw them in ./compat. gnulib-tool seems to want autoconf, > but you don't have to use gnulib-tool. Currently, I'm using these modules for w32 compat: canonicalize errno execute fsync getdelim gethostname getline mkdir netdb progname readlink regex scandir sigaction signal-h strcasestr strsep sys_wait time_r timegm waitpid xvasprintf (some of which you already have implemented) but those modules in turn depend on other gnulib modules, so you'd end up with: alloca-opt areadlink-with-size at-internal bitrotate btowc canonicalize chdir chdir-long cloexec close closedir configmake d-ino dirent dirfd dirname dirname-lgpl dosname double-slash-root dup dup2 environ errno error execute exitfail extensions extern-inline fatal-signal fchdir fcntl fcntl-h fd-hook fdopendir file-set filename filenamecat-lgpl float fstat fstatat fsync getcwd getcwd-lgpl getdelim getdtablesize gethostname getline gettext-h hash hash-pjw hash-triple havelib include_next intprops langinfo largefile localcharset locale localeconv lock lstat malloc-gnu malloc-posix mbrtowc mbsinit mbtowc memchr mempcpy memrchr mkdir mktime mktime-internal msvc-inval msvc-nothrow multiarch netdb nl_langinfo nocrash open openat openat-die openat-h opendir pathmax posix_spawn-internal posix_spawn_file_actions_addopen posix_spawn_file_actions_destroy posix_spawn_file_actions_init posix_spawnattr_destroy posix_spawnattr_init posix_spawnattr_setflags posix_spawnattr_setsigmask posix_spawnp progname raise rawmemchr readdir readlink realloc-posix regex rewinddir same same-inode save-cwd scandir sched sigaction signal-h sigprocmask size_max snippet/_Noreturn snippet/arg-nonnull snippet/c++defs snippet/warn-on-use socketlib sockets socklen spawn ssize_t stat stdalign stdarg stdbool stddef stdint stdio stdlib strcase strcasestr strcasestr-simple strchrnul strdup-posix streq strerror strerror-override string strings strndup strnlen strsep sys_socket sys_stat sys_types sys_uio sys_wait threadlib time time_r timegm unistd unistd-safer vasnprintf vasprintf verify wait-process waitpid wchar wcrtomb wctype-h xalloc xalloc-die xalloc-oversized xgetcwd xsize xstrndup xvasprintf Of course, you'd also need the configure checks to enable/disable compiling those modules. Doing this without gnulib-tool / autotools seems to be a lot of (gratuitous) work. I don't think that I'll have to time to do this, so I'll just keep my patches in a private branch then, which saves me the effort of polishing the patches. Thanks for your attention. Claudio