[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compiling guile-2.2.4 for mingw
From: |
Christoph Buck |
Subject: |
Re: Compiling guile-2.2.4 for mingw |
Date: |
Tue, 20 Nov 2018 18:16:32 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (windows-nt) |
Mike Gran <address@hidden> 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 address@hidden@
-_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 address@hidden@ */
+/* _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 /* address@hidden@_POLL_H */