Mike Gran <spk...@yahoo.com> writes: > Hey Chris, > > This is one of two errors. One problem is that Guile makes assumptions > about the size of long vs the size of a pointer, as do some the > libraries on which Guile depends. In practice, your Guile needs to be > compiled under MinGW 32-bit where sizeof(void *) == sizeof(long)
Ok that makes sense. > There is another error that causes similar problems to the one you are > seeing. That error is because there is an error in Guile that under > MinGW where it saves temporary files generated by 'mkstemp!' using the > text encoding, so you end up with random carriage returns in your > compiled scheme files. I already wondered why my file-pathes were messed up. > I do have a working mostly working MinGW Guile on my system. You can > check out the patches I did on a branch of the repo called > wip-mingw-guile-2.2 > > git.savannah.gnu.org/cgit/guile.git/log/?h=wip-mingw-guile-2.2 > > At the beginning of the year, I think I submitted the first of these > patches upstream, but, I got around to submitting the rest of them. > Ok i checked out your branch and it indeed seems to compile under mingw32. However, I needed to comment out the pollfd struct definition in lib/poll.in.h to prevent a collusion in the winsock2.h header (see attached patch file). I guess this can be fixed more adequate somewhere in the configure scripts? > Also note that the MinGW threading library (winpthreads) almost works > with garbage collection, but, it isn't 100%, so you may need to only > compile the single-threaded version of Guile. Ok good to know. Is there currently no way to get guile running under mingw-64bit? My plan was to integrate guile in a project of mine which currently only builds under 64bit. > Good luck, > > Mike > Thanks Christoph
--- lib/poll.in.h.orig 2018-11-20 17:58:03.317863600 +0100 +++ lib/poll.in.h 2018-11-20 17:58:35.920887000 +0100 @@ -55,12 +55,12 @@ # if !GNULIB_defined_poll_types -struct pollfd -{ - int fd; /* which file descriptor to poll */ - short events; /* events we are interested in */ - short revents; /* events found on return */ -}; +/* struct pollfd */ +/* { */ +/* int fd; /\* which file descriptor to poll *\/ */ +/* short events; /\* events we are interested in *\/ */ +/* short revents; /\* events found on return *\/ */ +/* }; */ typedef unsigned long nfds_t; @@ -75,28 +75,28 @@ #endif -#if @GNULIB_POLL@ -# if @REPLACE_POLL@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef poll -# define poll rpl_poll -# endif -_GL_FUNCDECL_RPL (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); -_GL_CXXALIAS_RPL (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); -# else -# if !@HAVE_POLL@ -_GL_FUNCDECL_SYS (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); -# endif -_GL_CXXALIAS_SYS (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); -# endif -_GL_CXXALIASWARN (poll); -#elif defined GNULIB_POSIXCHECK -# undef poll -# if HAVE_RAW_DECL_POLL -_GL_WARN_ON_USE (poll, "poll is unportable - " - "use gnulib module poll for portability"); -# endif -#endif +/* #if @GNULIB_POLL@ */ +/* # if @REPLACE_POLL@ */ +/* # if !(defined __cplusplus && defined GNULIB_NAMESPACE) */ +/* # undef poll */ +/* # define poll rpl_poll */ +/* # endif */ +/* _GL_FUNCDECL_RPL (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); */ +/* _GL_CXXALIAS_RPL (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); */ +/* # else */ +/* # if !@HAVE_POLL@ */ +/* _GL_FUNCDECL_SYS (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); */ +/* # endif */ +/* _GL_CXXALIAS_SYS (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout)); */ +/* # endif */ +/* _GL_CXXALIASWARN (poll); */ +/* #elif defined GNULIB_POSIXCHECK */ +/* # undef poll */ +/* # if HAVE_RAW_DECL_POLL */ +/* _GL_WARN_ON_USE (poll, "poll is unportable - " */ +/* "use gnulib module poll for portability"); */ +/* # endif */ +/* #endif */ #endif /* _@GUARD_PREFIX@_POLL_H */