mingw-cross-env-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mingw-cross-env-list] guile, v2.0.11


From: Kai-Martin Knaak
Subject: [Mingw-cross-env-list] guile, v2.0.11
Date: Sat, 9 Aug 2014 17:54:47 +0200

Hi.

I'd like to cross compile the electronics design suite geda for windows
        http://geda-project.org
The core of the schematic component depends on the scheme dialect
guile. So I was pleased to see guile among the packages included in the
list of supported packages. However, the mxe recipe guile.mk loads and
compiles guile 1.8.8 but geda needs at least guile 2.0.0

So I tried to bump the version in the mxe recipe. Essentially, I just set
$(PKG)_VERSION to 2.0.11 and $(PKG)_CHECKSUM to the string given in the 
release message of this version. 
The sources got downloaded fine and cross compile started as it should. 
As expected, it stumbled at some point and exited with errors. According
to the log in  
        /usr/local/src/mxe/log/guile_i686-pc-mingw32.static
the build system failed to find sys/selected.h :

/--------------------
(...)
'i686-pc-mingw32.static-gcc' -W -Wall -Werror -ansi -pedantic
'./src/guile-test.c' -o 
'/usr/local/src/mxe/usr/i686-pc-mingw32.static/bin/test-guile.exe' 
`'i686-pc-mingw32.static-pkg-config' guile-2.0 --cflags --libs` 
-DGUILE_MAJOR_MINOR=\"2.0\"
In file included
from 
/usr/local/src/mxe/usr/i686-pc-mingw32.static/include/guile/2.0/libguile/threads.h:31:0,
                 from 
/usr/local/src/mxe/usr/i686-pc-mingw32.static/include/guile/2.0/libguile/async.h:28,
                 from 
/usr/local/src/mxe/usr/i686-pc-mingw32.static/include/guile/2.0/libguile.h:37,
                 from ./src/guile-test.c:8:
/usr/local/src/mxe/usr/i686-pc-mingw32.static/include/guile/2.0/libguile/iselect.h:31:24:
fatal error: sys/select.h: No such file or directory
 #include <sys/select.h>
                        ^
compilation terminated.
Makefile:374: recipe for target
'build-only-guile_i686-pc-mingw32.static' failed
make[1]: *** [build-only-guile_i686-pc-mingw32.static] Error 1
make[1]: Leaving directory '/usr/local/src/mxe'

real    1m54.223s
user    3m22.628s
sys     0m20.144s
(...)
\--------------------


The file sys/select.h is installed on my host system and in the mxe environment,
too. Probably, because it is part of libc6

/-----------
$ locate sys/select.h
/usr/include/sys/select.h
/usr/include/x86_64-linux-gnu/sys/select.h
/usr/local/src/mxe/tmp-guile-i686-pc-mingw32.static/guile-2.0.11/lib/sys/select.h
\-----------


libguile/iselect.h is quite short. Without comments it boils down to
three includes and a type cast:

/------iselect.h--------
#ifndef SCM_ISELECT_H
#define SCM_ISELECT_H
#include "libguile/__scm.h"
#include <sys/types.h>
#include <sys/select.h>
SCM_API int scm_std_select (int fds,
                            fd_set *rfds,
                            fd_set *wfds,
                            fd_set *efds,
                            struct timeval *timeout);
#define SELECT_TYPE fd_set
#endif  /* SCM_ISELECT_H */
\--------------

If I assume, the linker analyses the file from top to bottom, this 
implies that it was able to locate <sys/types.h>. I tried to check
by commenting out the <sys/select.h> line. However, iselect.h got 
rewritten during "mxe make guile" and my changes did not influence
the outcome.

I guess, my mxe set-up needs some tweaking. But where should I look? 
Any hints appreciated,

---<)kaimartin(>---

PS: My host system is on debian/testing, updated weekly.

-- 
Kai-Martin Knaak

Attachment: signature.asc
Description: PGP signature


reply via email to

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