guile-devel
[Top][All Lists]
Advanced

[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 */


reply via email to

[Prev in Thread] Current Thread [Next in Thread]