unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Guile with win32 cross compiling
@ 2011-03-26 22:04 Volker Grabsch
  0 siblings, 0 replies; 21+ messages in thread
From: Volker Grabsch @ 2011-03-26 22:04 UTC (permalink / raw)
  To: Mike Gran; +Cc: bug-guile, guile-devel

Hello Mike,

I just tried again to cross compile a win32 version of guile, using
the latest 2.0.0 release. My last attempt in April 2010 failed.

Much has been improved since then, but there are still fatal
errors, so I still can't support guile-2 in mingw-cross-env. [1]


1)

The first issue is the "#include <uniconv.h>" in gen-scmconfig,
which has already been discussed in the past and for which I
already provided a clean, working solution. I forward-ported
my patch to guile-2.0.0 and it seems to work. This patch is
attached to this email, please consider applying it.

Also attached is a build log created by mingw-cross-env showing
how far the cross build gets with this patch.


2)

The other open issue is also a known one: the missing mmap()
function under Windows. After some research, I found a promising
mmap()/munmap() implementation for Windows in a free software
project:

http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.h?r=74
http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.c?r=74

Maybe this is worth integrating into guile?



Greets,
Volker


[1] http://mingw-cross-env.nongnu.org/

-- 
Volker Grabsch
---<<(())>>---



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Guile with win32 cross compiling
@ 2011-03-26 22:06 Volker Grabsch
  2011-04-01 10:38 ` Andy Wingo
  0 siblings, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-03-26 22:06 UTC (permalink / raw)
  To: Mike Gran; +Cc: bug-guile, guile-devel

[-- Attachment #1: Type: text/plain, Size: 1169 bytes --]

Hello Mike,

I just tried again to cross compile a win32 version of guile, using
the latest 2.0.0 release. My last attempt in April 2010 failed.

Much has been improved since then, but there are still fatal
errors, so I still can't support guile-2 in mingw-cross-env. [1]


1)

The first issue is the "#include <uniconv.h>" in gen-scmconfig,
which has already been discussed in the past and for which I
already provided a clean, working solution. I forward-ported
my patch to guile-2.0.0 and it seems to work. This patch is
attached to this email, please consider applying it.

Also attached is a build log created by mingw-cross-env showing
how far the cross build gets with this patch.


2)

The other open issue is also a known one: the missing mmap()
function under Windows. After some research, I found a promising
mmap()/munmap() implementation for Windows in a free software
project:

http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.h?r=74
http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.c?r=74

Maybe this is worth integrating into guile?



Greets,
Volker


[1] http://mingw-cross-env.nongnu.org/

-- 
Volker Grabsch
---<<(())>>---

[-- Attachment #2: guile-1-fix-gen-scmconfig-for-cross-compiling.patch --]
[-- Type: text/x-diff, Size: 1646 bytes --]

This file is part of mingw-cross-env.
See doc/index.html for further information.

--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -57,8 +57,8 @@ gen_scmconfig_SOURCES = gen-scmconfig.c
 gen-scmconfig.$(OBJEXT): gen-scmconfig.c
 	$(AM_V_GEN)							\
 	if [ "$(cross_compiling)" = "yes" ]; then			\
-		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)	\
-		  $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)	\
+		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES)		\
+	          -DBUILDING_LIBGUILE=1 -I$(top_srcdir) -I$(top_builddir)	\
 	          -c -o $@ $<;						\
 	else								\
 		$(COMPILE) -c -o $@ $<;					\
--- a/libguile/gen-scmconfig.c
+++ b/libguile/gen-scmconfig.c
@@ -123,7 +123,6 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <uniconv.h>
 
 #define pf printf
 
@@ -143,6 +142,7 @@ main (int argc, char *argv[])
     pf ("#include <stdint.h>\n");
   if (SCM_I_GSC_NEEDS_INTTYPES_H)
     pf ("#include <inttypes.h>\n");
+  pf ("#include <uniconv.h>\n");
 
 #ifdef HAVE_LIMITS_H
   pf ("#include <limits.h>\n");
@@ -379,11 +379,9 @@ main (int argc, char *argv[])
 
   pf ("\n");
   pf ("/* Constants from uniconv.h.  */\n");
-  pf ("#define SCM_ICONVEH_ERROR %d\n", (int) iconveh_error);
-  pf ("#define SCM_ICONVEH_QUESTION_MARK %d\n", 
-      (int) iconveh_question_mark);
-  pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE %d\n",
-      (int) iconveh_escape_sequence);  
+  pf ("#define SCM_ICONVEH_ERROR ((int) iconveh_error)\n");
+  pf ("#define SCM_ICONVEH_QUESTION_MARK ((int) iconveh_question_mark)\n");
+  pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE ((int) iconveh_escape_sequence)\n");
 
   printf ("#endif\n");
 

[-- Attachment #3: guile.log --]
[-- Type: text/plain, Size: 53309 bytes --]

make[1]: Entering directory `/home/vog/mingw-cross-env'
rm -rf   '/home/vog/mingw-cross-env/tmp-guile'
mkdir -p '/home/vog/mingw-cross-env/tmp-guile'
cd '/home/vog/mingw-cross-env/tmp-guile' &&  tar xzf '/home/vog/mingw-cross-env/pkg/guile-2.0.0.tar.gz'
cd '/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0'
(cd '/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0' && patch -p1 -u) < ./src/guile-1-fix-gen-scmconfig-for-cross-compiling.patch
patching file libguile/Makefile.am
patching file libguile/gen-scmconfig.c
cd '/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0' && autoreconf
autoreconf: configure.ac: AM_GNU_GETTEXT is used, but not AM_GNU_GETTEXT_VERSION
cd '/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0' && libtoolize --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'.
libtoolize: linking file `build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: linking file `m4/libtool.m4'
libtoolize: linking file `m4/ltoptions.m4'
libtoolize: linking file `m4/ltsugar.m4'
libtoolize: linking file `m4/ltversion.m4'
libtoolize: linking file `m4/lt~obsolete.m4'
cd '/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0' && ./configure --host='i686-pc-mingw32' --prefix='/home/vog/mingw-cross-env/usr/i686-pc-mingw32' --disable-shared --without-threads
configure: WARNING: if you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for i686-pc-mingw32-strip... i686-pc-mingw32-strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... i686-pc-mingw32
checking for i686-pc-mingw32-as... i686-pc-mingw32-as
checking for i686-pc-mingw32-dlltool... i686-pc-mingw32-dlltool
checking for i686-pc-mingw32-objdump... i686-pc-mingw32-objdump
checking for i686-pc-mingw32-gcc... i686-pc-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i686-pc-mingw32-gcc accepts -g... yes
checking for i686-pc-mingw32-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of i686-pc-mingw32-gcc... gcc3
checking for i686-pc-mingw32-ranlib... i686-pc-mingw32-ranlib
checking whether i686-pc-mingw32-gcc and cc understand -c and -o together... yes
checking how to run the C preprocessor... i686-pc-mingw32-gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for i686-pc-mingw32-gcc option to accept ISO C99... -std=gnu99
checking for i686-pc-mingw32-gcc -std=gnu99 option to accept ISO Standard C... (cached) -std=gnu99
configure: autobuild project... GNU Guile
configure: autobuild revision... 2.0.0
configure: autobuild hostname... dev1
configure: autobuild timestamp... 20110326T211345Z
checking how to run the C preprocessor... i686-pc-mingw32-gcc -E
checking for a sed that does not truncate output... /bin/sed
checking for gawk... (cached) gawk
checking for inline... inline
checking whether the preprocessor supports include_next... yes
checking whether system header files limit the line length... no
checking for sys/socket.h... no
checking for arpa/inet.h... no
checking for features.h... no
checking for sys/param.h... yes
checking for xlocale.h... no
checking for unistd.h... (cached) yes
checking for netdb.h... no
checking for netinet/in.h... no
checking for iconv.h... yes
checking for math.h... yes
checking for sys/mman.h... no
checking for sys/time.h... yes
checking for stdint.h... (cached) yes
checking for wchar.h... yes
checking for strings.h... (cached) yes
checking for sys/file.h... yes
checking for sys/stat.h... (cached) yes
checking whether <sys/socket.h> is self-contained... no
checking ws2tcpip.h usability... yes
checking ws2tcpip.h presence... yes
checking for ws2tcpip.h... yes
checking for struct sockaddr_storage... yes
checking for sa_family_t... no
checking for struct sockaddr_storage.ss_family... yes
checking winsock2.h usability... yes
checking winsock2.h presence... yes
checking for winsock2.h... yes
checking whether socket is declared without a macro... no
checking whether connect is declared without a macro... no
checking whether accept is declared without a macro... no
checking whether bind is declared without a macro... no
checking whether getpeername is declared without a macro... no
checking whether getsockname is declared without a macro... no
checking whether getsockopt is declared without a macro... no
checking whether listen is declared without a macro... no
checking whether recv is declared without a macro... no
checking whether send is declared without a macro... no
checking whether recvfrom is declared without a macro... no
checking whether sendto is declared without a macro... no
checking whether setsockopt is declared without a macro... no
checking whether shutdown is declared without a macro... no
checking whether accept4 is declared without a macro... no
checking for working alloca.h... no
checking for alloca... yes
checking for canonicalize_file_name... no
checking for getcwd... yes
checking for readlink... no
checking for realpath... no
checking for duplocale... no
checking for flock... no
checking for fcntl... no
checking for lstat... no
checking for mprotect... yes
checking for memchr... yes
checking for pathconf... no
checking for tzset... yes
checking for localtime_r... no
checking for vasnprintf... no
checking whether // is distinct from /... unknown, assuming no
checking whether realpath works... guessing no
checking for wchar_t... yes
checking whether NULL can be used in arbitrary expressions... yes
checking whether locale.h conforms to POSIX:2001... no
checking whether setlocale is declared without a macro... yes
checking whether duplocale is declared without a macro... no
checking if environ is properly declared... no
checking for complete errno.h... no
checking for EMULTIHOP value... no
checking for ENOLINK value... no
checking for EOVERFLOW value... no
checking whether getaddrinfo is declared without a macro... no
checking whether freeaddrinfo is declared without a macro... no
checking whether gai_strerror is declared without a macro... no
checking whether getnameinfo is declared without a macro... no
checking for library containing gethostbyname... no
checking for gethostbyname... no
checking for gethostbyname in winsock2.h and -lws2_32... yes
checking for library containing getservbyname... no
checking for getservbyname... no
checking for getservbyname in winsock2.h and -lws2_32... yes
checking for IPv4 sockets... yes
checking for IPv6 sockets... yes
checking for C/C++ restrict keyword... __restrict
checking for library containing inet_ntop... no
checking for inet_ntop... no
checking whether inet_ntop is declared... no
checking for ld used by GCC... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/ld
checking if the linker (/home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for working iconv... guessing yes
checking how to link with libiconv... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libiconv.a
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking whether byte ordering is bigendian... no
checking where to find the exponent in a 'float'... word 0 bit 23
checking whether isnan(float) can be used without linking with libm... yes
checking whether isnan(float) works... guessing yes
checking whether isnan(double) can be used without linking with libm... yes
checking whether isnan(long double) can be used without linking with libm... yes
checking whether isnanl works... guessing no
checking where to find the exponent in a 'long double'... unknown
checking for libunistring... yes
checking how to link with libunistring... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libunistring.a -L/home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libiconv.a
checking for libunistring version... 0.9.3
checking whether pow can be used without linking with libm... yes
checking whether lstat correctly handles trailing slash... no
checking whether malloc, realloc, calloc are POSIX compliant... no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... no
checking for long long int... yes
checking for mmap... no
checking whether memchr works... guessing no
checking bp-sym.h usability... no
checking bp-sym.h presence... no
checking for bp-sym.h... no
checking for ssize_t... yes
checking whether snprintf returns a byte count as in C99... guessing no
checking whether snprintf is declared... yes
checking whether system is Windows or MSDOS... yes
checking whether drive letter can start relative path... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for unsigned long long int... yes
checking whether C symbols are prefixed with underscore at the linker level... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... no
checking whether tzname is declared... yes
checking for tzname... yes
checking for struct tm.tm_gmtoff... no
checking whether memmem is declared without a macro... no
checking whether mempcpy is declared without a macro... no
checking whether memrchr is declared without a macro... no
checking whether rawmemchr is declared without a macro... no
checking whether stpcpy is declared without a macro... no
checking whether stpncpy is declared without a macro... no
checking whether strchrnul is declared without a macro... no
checking whether strdup is declared without a macro... yes
checking whether strncat is declared without a macro... yes
checking whether strndup is declared without a macro... no
checking whether strnlen is declared without a macro... no
checking whether strpbrk is declared without a macro... yes
checking whether strsep is declared without a macro... no
checking whether strcasestr is declared without a macro... no
checking whether strtok_r is declared without a macro... no
checking whether strerror_r is declared without a macro... no
checking whether strsignal is declared without a macro... no
checking whether strverscmp is declared without a macro... no
checking whether strcasecmp is declared without a macro... yes
checking whether strncasecmp is declared without a macro... yes
checking whether stat file-mode macros are broken... no
checking for struct timeval... yes
checking whether gettimeofday is declared without a macro... yes
checking for struct timespec in <time.h>... no
checking for struct timespec in <sys/time.h>... no
checking for struct timespec in <pthread.h>... yes
checking whether localtime_r is declared... no
checking for wint_t... yes
checking for size_t... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for intmax_t... yes
checking for snprintf... yes
checking for strnlen... no
checking for wcslen... yes
checking for wcsnlen... no
checking for mbrtowc... yes
checking for wcrtomb... yes
checking whether _snprintf is declared... yes
checking whether vsnprintf is declared... yes
checking whether <wchar.h> uses 'inline' correctly... yes
checking whether inet_ntop is declared without a macro... no
checking whether inet_pton is declared without a macro... no
checking byteswap.h usability... no
checking byteswap.h presence... no
checking for byteswap.h... no
checking for winsock2.h... (cached) yes
checking for struct flock.l_type... no
checking whether __func__ is available... yes
configure: checking how to do getaddrinfo, freeaddrinfo and getnameinfo
checking for library containing getaddrinfo... no
checking for getaddrinfo... no
checking for getaddrinfo in ws2tcpip.h and -lws2_32... no
checking for gai_strerror (possibly via ws2tcpip.h)... yes
checking for struct sockaddr.sa_len... no
checking whether getaddrinfo is declared... no
checking whether freeaddrinfo is declared... no
checking whether gai_strerror is declared... yes
checking whether getnameinfo is declared... no
checking for struct addrinfo... yes
checking for library containing gethostbyname... (cached) no
checking for gethostbyname... (cached) no
checking for gethostbyname in winsock2.h and -lws2_32... (cached) yes
checking whether iconv supports conversion between UTF-8 and UTF-{16,32}{BE,LE}... yes
checking for library containing inet_ntop... (cached) no
checking for inet_ntop... (cached) no
checking whether inet_ntop is declared... (cached) no
checking for library containing inet_pton... no
checking for inet_pton... no
checking whether inet_pton is declared... no
checking whether the compiler generally respects inline... yes
checking whether isinf is declared... yes
checking whether isinf(long double) works... guessing no
checking whether isnan macro works... no
checking where to find the exponent in a 'float'... (cached) word 0 bit 23
checking where to find the exponent in a 'double'... (cached) word 1 bit 20
checking where to find the exponent in a 'long double'... (cached) unknown
checking whether isnan(double) can be used without linking with libm... (cached) yes
checking whether isnan(float) can be used without linking with libm... (cached) yes
checking whether isnan(float) works... (cached) guessing yes
checking whether isnan(long double) can be used without linking with libm... (cached) yes
checking whether isnanl works... (cached) guessing no
checking where to find the exponent in a 'long double'... (cached) unknown
checking if LD -Wl,--version-script works... yes
checking whether the -Werror option is usable... yes
checking for simple visibility declarations... yes
checking whether locale.h conforms to POSIX:2001... (cached) no
checking whether setlocale is declared without a macro... (cached) yes
checking whether duplocale is declared without a macro... (cached) no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... (cached) no
checking whether NAN macro works... yes
checking whether HUGE_VAL works... yes
checking whether acosl is declared without a macro... yes
checking whether asinl is declared without a macro... yes
checking whether atanl is declared without a macro... yes
checking whether ceilf is declared without a macro... yes
checking whether ceill is declared without a macro... yes
checking whether cosl is declared without a macro... yes
checking whether expl is declared without a macro... yes
checking whether floorf is declared without a macro... yes
checking whether floorl is declared without a macro... yes
checking whether frexpl is declared without a macro... yes
checking whether ldexpl is declared without a macro... yes
checking whether logb is declared without a macro... yes
checking whether logl is declared without a macro... yes
checking whether round is declared without a macro... yes
checking whether roundf is declared without a macro... yes
checking whether roundl is declared without a macro... yes
checking whether sinl is declared without a macro... yes
checking whether sqrtl is declared without a macro... yes
checking whether tanl is declared without a macro... yes
checking whether trunc is declared without a macro... yes
checking whether truncf is declared without a macro... yes
checking whether truncl is declared without a macro... yes
checking whether getaddrinfo is declared without a macro... (cached) no
checking whether freeaddrinfo is declared without a macro... (cached) no
checking whether gai_strerror is declared without a macro... (cached) no
checking whether getnameinfo is declared without a macro... (cached) no
checking whether <netinet/in.h> is self-contained... no
checking for netinet/in.h... (cached) no
checking for sys/pstat.h... no
checking for sys/sysmp.h... no
checking for sys/param.h... (cached) yes
checking for sys/sysctl.h... no
checking for sched_getaffinity... no
checking for sched_getaffinity_np... no
checking for pstat_getdynamic... no
checking for sysmp... no
checking for sysctl... no
checking for putenv compatible with GNU and SVID... no
checking whether round is declared... (cached) yes
checking whether round works... guessing yes
checking for library containing getservbyname... (cached) no
checking for getservbyname... (cached) no
checking for getservbyname in winsock2.h and -lws2_32... (cached) yes
checking for stdint.h... (cached) yes
checking for SIZE_MAX... yes
checking for snprintf... (cached) yes
checking whether snprintf respects a size of 1... guessing yes
checking for winsock2.h... (cached) yes
checking if we need to call WSAStartup in winsock2.h and -lws2_32... yes
checking for socklen_t... yes
checking for ssize_t... (cached) yes
checking whether stat handles trailing slashes on directories... guessing no
checking whether stat handles trailing slashes on files... guessing no
checking for struct stat.st_atim.tv_nsec... no
checking for struct stat.st_atimespec.tv_nsec... no
checking for struct stat.st_atimensec... no
checking for struct stat.st_atim.st__tim.tv_nsec... no
checking for struct stat.st_birthtimespec.tv_nsec... no
checking for struct stat.st_birthtimensec... no
checking for struct stat.st_birthtim.tv_nsec... no
checking for va_copy... yes
checking whether NULL can be used in arbitrary expressions... (cached) yes
checking whether stdint.h conforms to C99... yes
checking whether dprintf is declared without a macro... no
checking whether fpurge is declared without a macro... no
checking whether fseeko is declared without a macro... no
checking whether ftello is declared without a macro... no
checking whether getdelim is declared without a macro... no
checking whether getline is declared without a macro... no
checking whether popen is declared without a macro... yes
checking whether renameat is declared without a macro... no
checking whether snprintf is declared without a macro... yes
checking whether tmpfile is declared without a macro... yes
checking whether vdprintf is declared without a macro... no
checking whether vsnprintf is declared without a macro... yes
checking whether _Exit is declared without a macro... yes
checking whether atoll is declared without a macro... yes
checking whether canonicalize_file_name is declared without a macro... no
checking whether getloadavg is declared without a macro... no
checking whether getsubopt is declared without a macro... no
checking whether grantpt is declared without a macro... no
checking whether mkdtemp is declared without a macro... no
checking whether mkostemp is declared without a macro... no
checking whether mkostemps is declared without a macro... no
checking whether mkstemp is declared without a macro... no
checking whether mkstemps is declared without a macro... no
checking whether ptsname is declared without a macro... no
checking whether random_r is declared without a macro... no
checking whether initstat_r is declared without a macro... no
checking whether srandom_r is declared without a macro... no
checking whether setstate_r is declared without a macro... no
checking whether realpath is declared without a macro... no
checking whether rpmatch is declared without a macro... no
checking whether setenv is declared without a macro... no
checking whether strtod is declared without a macro... yes
checking whether strtoll is declared without a macro... yes
checking whether strtoull is declared without a macro... yes
checking whether unlockpt is declared without a macro... no
checking whether unsetenv is declared without a macro... no
checking for strcasecmp... yes
checking for strncasecmp... yes
checking whether strncasecmp is declared... (cached) yes
checking whether flock is declared without a macro... no
checking whether <sys/socket.h> is self-contained... (cached) no
checking for ws2tcpip.h... (cached) yes
checking for struct sockaddr_storage... (cached) yes
checking for sa_family_t... (cached) no
checking for struct sockaddr_storage.ss_family... (cached) yes
checking for winsock2.h... (cached) yes
checking whether socket is declared without a macro... (cached) no
checking whether connect is declared without a macro... (cached) no
checking whether accept is declared without a macro... (cached) no
checking whether bind is declared without a macro... (cached) no
checking whether getpeername is declared without a macro... (cached) no
checking whether getsockname is declared without a macro... (cached) no
checking whether getsockopt is declared without a macro... (cached) no
checking whether listen is declared without a macro... (cached) no
checking whether recv is declared without a macro... (cached) no
checking whether send is declared without a macro... (cached) no
checking whether recvfrom is declared without a macro... (cached) no
checking whether sendto is declared without a macro... (cached) no
checking whether setsockopt is declared without a macro... (cached) no
checking whether shutdown is declared without a macro... (cached) no
checking whether accept4 is declared without a macro... (cached) no
checking for nlink_t... no
checking whether fchmodat is declared without a macro... no
checking whether fstatat is declared without a macro... no
checking whether futimens is declared without a macro... no
checking whether lchmod is declared without a macro... no
checking whether lstat is declared without a macro... no
checking whether mkdirat is declared without a macro... no
checking whether mkfifo is declared without a macro... no
checking whether mkfifoat is declared without a macro... no
checking whether mknod is declared without a macro... no
checking whether mknodat is declared without a macro... no
checking whether stat is declared without a macro... yes
checking whether utimensat is declared without a macro... no
checking whether trunc is declared... (cached) yes
checking whether chown is declared without a macro... no
checking whether dup2 is declared without a macro... yes
checking whether dup3 is declared without a macro... no
checking whether environ is declared without a macro... no
checking whether euidaccess is declared without a macro... no
checking whether faccessat is declared without a macro... no
checking whether fchdir is declared without a macro... no
checking whether fchownat is declared without a macro... no
checking whether fsync is declared without a macro... no
checking whether ftruncate is declared without a macro... yes
checking whether getcwd is declared without a macro... yes
checking whether getdomainname is declared without a macro... no
checking whether getdtablesize is declared without a macro... no
checking whether getgroups is declared without a macro... no
checking whether gethostname is declared without a macro... no
checking whether getlogin is declared without a macro... no
checking whether getlogin_r is declared without a macro... no
checking whether getpagesize is declared without a macro... no
checking whether getusershell is declared without a macro... no
checking whether setusershell is declared without a macro... no
checking whether endusershell is declared without a macro... no
checking whether lchown is declared without a macro... no
checking whether link is declared without a macro... no
checking whether linkat is declared without a macro... no
checking whether lseek is declared without a macro... yes
checking whether pipe is declared without a macro... no
checking whether pipe2 is declared without a macro... no
checking whether pread is declared without a macro... no
checking whether pwrite is declared without a macro... no
checking whether readlink is declared without a macro... no
checking whether readlinkat is declared without a macro... no
checking whether rmdir is declared without a macro... yes
checking whether sleep is declared without a macro... no
checking whether symlink is declared without a macro... no
checking whether symlinkat is declared without a macro... no
checking whether ttyname_r is declared without a macro... no
checking whether unlink is declared without a macro... yes
checking whether unlinkat is declared without a macro... no
checking whether usleep is declared without a macro... yes
checking for ptrdiff_t... yes
checking for vsnprintf... yes
checking whether snprintf respects a size of 1... (cached) guessing yes
checking whether btowc is declared without a macro... yes
checking whether wctob is declared without a macro... yes
checking whether mbsinit is declared without a macro... yes
checking whether mbrtowc is declared without a macro... yes
checking whether mbrlen is declared without a macro... yes
checking whether mbsrtowcs is declared without a macro... yes
checking whether mbsnrtowcs is declared without a macro... no
checking whether wcrtomb is declared without a macro... yes
checking whether wcsrtombs is declared without a macro... yes
checking whether wcsnrtombs is declared without a macro... no
checking whether wcwidth is declared without a macro... no
checking whether wmemchr is declared without a macro... yes
checking whether wmemcmp is declared without a macro... yes
checking whether wmemcpy is declared without a macro... yes
checking whether wmemmove is declared without a macro... yes
checking whether wmemset is declared without a macro... yes
checking whether wcslen is declared without a macro... yes
checking whether wcsnlen is declared without a macro... no
checking whether wcscpy is declared without a macro... yes
checking whether wcpcpy is declared without a macro... no
checking whether wcsncpy is declared without a macro... yes
checking whether wcpncpy is declared without a macro... no
checking whether wcscat is declared without a macro... yes
checking whether wcsncat is declared without a macro... yes
checking whether wcscmp is declared without a macro... yes
checking whether wcsncmp is declared without a macro... yes
checking whether wcscasecmp is declared without a macro... no
checking whether wcsncasecmp is declared without a macro... no
checking whether wcscoll is declared without a macro... yes
checking whether wcsxfrm is declared without a macro... yes
checking whether wcsdup is declared without a macro... yes
checking whether wcschr is declared without a macro... yes
checking whether wcsrchr is declared without a macro... yes
checking whether wcscspn is declared without a macro... yes
checking whether wcsspn is declared without a macro... yes
checking whether wcspbrk is declared without a macro... yes
checking whether wcsstr is declared without a macro... yes
checking whether wcstok is declared without a macro... yes
checking whether wcswidth is declared without a macro... no
checking for stdint.h... (cached) yes
checking for i686-pc-mingw32-gcc -std=gnu99 option to accept ISO C89... (cached) none needed
checking for a sed that does not truncate output... (cached) /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by i686-pc-mingw32-gcc -std=gnu99... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/ld
checking if the linker (/home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /home/vog/mingw-cross-env/usr/bin/i686-pc-mingw32-nm -B
checking the name lister (/home/vog/mingw-cross-env/usr/bin/i686-pc-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 3458764513820540925
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/ld option to reload object files... -r
checking for i686-pc-mingw32-objdump... (cached) i686-pc-mingw32-objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for i686-pc-mingw32-ar... i686-pc-mingw32-ar
checking for i686-pc-mingw32-strip... (cached) i686-pc-mingw32-strip
checking for i686-pc-mingw32-ranlib... (cached) i686-pc-mingw32-ranlib
checking command to parse /home/vog/mingw-cross-env/usr/bin/i686-pc-mingw32-nm -B output from i686-pc-mingw32-gcc -std=gnu99 object... ok
checking for dlfcn.h... no
checking for objdir... .libs
checking if i686-pc-mingw32-gcc -std=gnu99 supports -fno-rtti -fno-exceptions... no
checking for i686-pc-mingw32-gcc -std=gnu99 option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-pc-mingw32-gcc -std=gnu99 PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-pc-mingw32-gcc -std=gnu99 static flag -static works... yes
checking if i686-pc-mingw32-gcc -std=gnu99 supports -c -o file.o... yes
checking if i686-pc-mingw32-gcc -std=gnu99 supports -c -o file.o... (cached) yes
checking whether the i686-pc-mingw32-gcc -std=gnu99 linker (/home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking for libltdl... yes
checking how to link with libltdl... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libltdl.a
checking for makeinfo... no
checking for emacs... no
checking for xemacs... no
checking where .elc files should go... ${datadir}/emacs/site-lisp
checking whether to use system and library "64" calls... yes
checking for __uc_get_ar_bsp in -luca... no
checking for an ANSI C-conforming const... yes
checking for working volatile... yes
checking for inline... (cached) inline
checking for __uc_get_ar_bsp in -luca... (cached) no
checking whether byte ordering is bigendian... (cached) no
checking labels as values... yes
checking size of char... 1
checking size of unsigned char... 1
checking size of short... 2
checking size of unsigned short... 2
checking size of int... 4
checking size of unsigned int... 4
checking size of long... 4
checking size of unsigned long... 4
checking size of size_t... 4
checking size of long long... 8
checking size of unsigned long long... 8
checking size of __int64... 8
checking size of unsigned __int64... 8
checking size of void *... 4
checking size of intptr_t... 4
checking size of uintptr_t... 4
checking size of ptrdiff_t... 4
checking size of size_t... (cached) 4
checking size of off_t... 4
checking for stdint.h... (cached) yes
checking for inttypes.h... (cached) yes
checking size of intmax_t... 8
checking for int8_t... yes
checking for uint8_t... yes
checking for int16_t... yes
checking for uint16_t... yes
checking for int32_t... yes
checking for uint32_t... yes
checking for int64_t... yes
checking for uint64_t... yes
checking for intmax_t... yes
checking for uintmax_t... yes
checking for intptr_t... yes
checking for uintptr_t... yes
checking for int8_t... yes
checking for uint8_t... yes
checking for int16_t... yes
checking for uint16_t... yes
checking for int32_t... yes
checking for uint32_t... yes
checking for int64_t... yes
checking for uint64_t... yes
checking for intmax_t... yes
checking for uintmax_t... yes
checking for intptr_t... (cached) yes
checking for uintptr_t... (cached) yes
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for struct dirent64.d_name... no
checking complex.h usability... yes
checking complex.h presence... yes
checking for complex.h... yes
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking io.h usability... yes
checking io.h presence... yes
checking for io.h... yes
checking libc.h usability... no
checking libc.h presence... no
checking for libc.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for memory.h... (cached) yes
checking process.h usability... yes
checking process.h presence... yes
checking for process.h... yes
checking for string.h... (cached) yes
checking regex.h usability... no
checking regex.h presence... no
checking for regex.h... no
checking rxposix.h usability... no
checking rxposix.h presence... no
checking for rxposix.h... no
checking rx/rxposix.h usability... no
checking rx/rxposix.h presence... no
checking for rx/rxposix.h... no
checking sys/dir.h usability... no
checking sys/dir.h presence... no
checking for sys/dir.h... no
checking sys/ioctl.h usability... no
checking sys/ioctl.h presence... no
checking for sys/ioctl.h... no
checking sys/select.h usability... no
checking sys/select.h presence... no
checking for sys/select.h... no
checking for sys/time.h... (cached) yes
checking sys/timeb.h usability... yes
checking sys/timeb.h presence... yes
checking for sys/timeb.h... yes
checking sys/times.h usability... no
checking sys/times.h presence... no
checking for sys/times.h... no
checking sys/stdtypes.h usability... no
checking sys/stdtypes.h presence... no
checking for sys/stdtypes.h... no
checking for sys/types.h... (cached) yes
checking sys/utime.h usability... yes
checking sys/utime.h presence... yes
checking for sys/utime.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking pwd.h usability... no
checking pwd.h presence... no
checking for pwd.h... no
checking grp.h usability... no
checking grp.h presence... no
checking for grp.h... no
checking sys/utsname.h usability... no
checking sys/utsname.h presence... no
checking for sys/utsname.h... no
checking direct.h usability... yes
checking direct.h presence... yes
checking for direct.h... yes
checking langinfo.h usability... no
checking langinfo.h presence... no
checking for langinfo.h... no
checking nl_types.h usability... no
checking nl_types.h presence... no
checking for nl_types.h... no
checking machine/fpu.h usability... no
checking machine/fpu.h presence... no
checking for machine/fpu.h... no
checking poll.h usability... no
checking poll.h presence... no
checking for poll.h... no
checking for nl_item... no
checking for complex double... yes
checking for socklen_t... (cached) yes
checking for struct ip_mreq... no
checking for libc.h... (cached) no
checking for unistd.h... (cached) yes
checking whether libc.h and unistd.h can be included together... no
checking for uid_t in sys/types.h... no
checking type of array argument to getgroups... int
checking return type of signal handlers... void
checking for mode_t... yes
checking for cos in -lm... yes
checking for gethostbyname... (cached) no
checking for gethostbyname in -lnsl... no
checking for connect... no
checking for connect in -lsocket... no
checking for winsock2.h... (cached) yes
checking for main in -lws2_32... yes
checking assert.h usability... yes
checking assert.h presence... yes
checking for assert.h... yes
checking crt_externs.h usability... no
checking crt_externs.h presence... no
checking for crt_externs.h... no
checking for DINFINITY... no
checking for DQNAN... no
checking for cexp... yes
checking for chsize... yes
checking for clog... yes
checking for clog10... no
checking for ctermid... no
checking for fesetround... yes
checking for ftime... yes
checking for ftruncate... yes
checking for fchown... no
checking for getcwd... (cached) yes
checking for geteuid... no
checking for getsid... no
checking for gettimeofday... yes
checking for gmtime_r... no
checking for ioctl... no
checking for lstat... (cached) no
checking for mkdir... yes
checking for mknod... no
checking for nice... no
checking for pipe... no
checking for _pipe... yes
checking for poll... no
checking for readdir_r... no
checking for readdir64_r... no
checking for readlink... (cached) no
checking for rename... yes
checking for rmdir... yes
checking for select... no
checking for setegid... no
checking for seteuid... no
checking for setlocale... yes
checking for setpgid... no
checking for setsid... no
checking for sigaction... no
checking for siginterrupt... no
checking for stat64... no
checking for strftime... yes
checking for strptime... no
checking for symlink... no
checking for sync... no
checking for sysconf... no
checking for tcgetpgrp... no
checking for tcsetpgrp... no
checking for times... no
checking for uname... no
checking for waitpid... no
checking for strdup... yes
checking for system... yes
checking for usleep... yes
checking for atexit... yes
checking for on_exit... no
checking for chown... no
checking for link... no
checking for fcntl... (cached) no
checking for ttyname... no
checking for getpwent... no
checking for getgrent... no
checking for kill... no
checking for getppid... no
checking for getpgrp... no
checking for fork... no
checking for setitimer... no
checking for getitimer... no
checking for strchr... yes
checking for strcmp... yes
checking for index... no
checking for bcopy... no
checking for memcpy... yes
checking for rindex... no
checking for truncate... no
checking for unsetenv... no
checking for isblank... yes
checking for _NSGetEnviron... no
checking for strcoll... yes
checking for strcoll_l... no
checking for newlocale... no
checking for nl_langinfo... no
checking for utimensat... no
checking for sched_getaffinity... (cached) no
checking for sched_setaffinity... no
checking crypt.h usability... no
checking crypt.h presence... no
checking for crypt.h... no
checking for netdb.h... (cached) no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking for sys/param.h... (cached) yes
checking sys/resource.h usability... no
checking sys/resource.h presence... no
checking for sys/resource.h... no
checking for sys/file.h... (cached) yes
checking for chroot... no
checking for flock... (cached) no
checking for getlogin... no
checking for cuserid... no
checking for getpriority... no
checking for setpriority... no
checking for getpass... no
checking for sethostname... no
checking for gethostname... no
checking whether sethostname is declared... no
checking whether hstrerror is declared... no
checking whether cuserid is declared... no
checking for library containing crypt... no
checking for i... _Complex_I
checking whether csqrt is usable... yes, hopefully (cross-compiling)
checking for libgmp... yes
checking how to link with libgmp... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libgmp.a
checking for i686-pc-mingw32-pkg-config... /home/vog/mingw-cross-env/usr/bin/i686-pc-mingw32-pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBFFI... yes
checking size of size_t... (cached) 4
checking size of ssize_t... 4
checking whether NLS is requested... yes
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... no
checking for iconv... (cached) yes
checking for working iconv... (cached) guessing yes
checking how to link with libiconv... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libiconv.a
checking for GNU gettext in libintl... yes
checking whether to use NLS... yes
checking where the gettext function comes from... external libintl
checking how to link with libintl... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libintl.a -L/home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libiconv.a
checking for sleep declaration... yes
checking for usleep declaration... yes
checking whether strptime is declared... no
checking return type of usleep... int
checking sys/un.h usability... no
checking sys/un.h presence... no
checking for sys/un.h... no
checking for getrlimit... no
checking for setrlimit... no
checking for socketpair... no
checking for getgroups... no
checking for setgroups... no
checking for setpwent... no
checking for pause... no
checking for tzset... (cached) yes
checking for sethostent... no
checking for gethostent... no
checking for endhostent... no
checking for setnetent... no
checking for getnetent... no
checking for endnetent... no
checking for setprotoent... no
checking for getprotoent... no
checking for endprotoent... no
checking for setservent... no
checking for getservent... no
checking for endservent... no
checking for getnetbyaddr... no
checking for getnetbyname... no
checking for inet_lnaof... no
checking for inet_makeaddr... no
checking for inet_netof... no
checking for hstrerror... no
checking for struct sockaddr_in.sin_len... no
checking for __libc_stack_end... no
checking whether netdb.h declares h_errno... no
checking whether uint32_t is defined... no
checking for working IPv6 support... no
checking whether sockaddr_in6 has sin6_scope_id... no
checking for struct sockaddr_in6.sin6_len... no
checking whether localtime caches TZ... yes
checking for strerror... yes
checking for memmove... yes
checking for mkstemp... no
checking for asinh... yes
checking for acosh... yes
checking for atanh... yes
checking for copysign... yes
checking for finite... yes
checking for sincos... no
checking for trunc... yes
checking for isinf... yes
checking for isnan... yes
checking for struct stat.st_rdev... yes
checking for struct stat.st_blksize... no
checking for struct stat.st_blocks... no
checking for struct stat.st_atim... no
checking for struct stat.st_mtim... no
checking for struct stat.st_ctim... no
checking for struct tm.tm_zone... (cached) no
checking whether tzname is declared... (cached) yes
checking for tzname... (cached) yes
checking for struct tm.tm_gmtoff... (cached) no
checking whether we need POSIX to get struct utimbuf... no
configure: WARNING: Guessing that stack grows down -- see scmconfig.h
checking for BDW_GC... yes
checking for GC_do_blocking... no
checking for GC_call_with_gc_active... no
checking whether GC_do_blocking is declared... no
checking for GC_fn_type... yes
checking size of float... 4
checking for struct linger... no
checking for struct timespec... yes
checking what kind of threads to support... null-threads
checking cc for build... PATH=/usr/bin:/home/vog/mingw-cross-env/usr/bin:/home/vog/mingw-cross-env/usr/bin:/home/vog/rentapacs/Linux/RapPorts/usr/bin:/home/vog/rentapacs/MinGW/RapPorts/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/vog/mingw-cross-env/usr/bin cc
checking guile for build... guile
checking whether compiler handles -Wall... yes
checking whether compiler handles -Wmissing-prototypes... yes
checking whether compiler handles -Wdeclaration-after-statement... yes
checking whether compiler handles -Wundef... yes
checking whether compiler handles -Wswitch-enum... yes
checking whether the linker understands `-z relro'... no
checking for tgoto in -lncurses... no
checking for tgoto in -lcurses... no
checking for tgoto in -ltermcap... no
checking for tgoto in -lterminfo... no
checking for tgoto in -ltermlib... no
checking for tgoto in -lpdcurses... yes
checking how to link with libreadline... /home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/libreadline.a
checking for siginterrupt... (cached) no
checking for rl_clear_signals... yes
checking for rl_cleanup_after_signal... yes
checking for rl_filename_completion_function... yes
checking whether rl_catch_signals is declared... yes
checking whether rl_catch_sigwinch is declared... yes
checking for rl_get_keymap... yes
checking for rl_getc_function pointer in readline... yes
checking for strdup... (cached) yes
configure: creating ./config.status
config.status: creating libguile/gen-scmconfig.h
config.status: creating Makefile
config.status: creating am/Makefile
config.status: creating lib/Makefile
config.status: creating benchmark-suite/Makefile
config.status: creating doc/Makefile
config.status: creating doc/r5rs/Makefile
config.status: creating doc/ref/Makefile
config.status: creating emacs/Makefile
config.status: creating examples/Makefile
config.status: creating libguile/Makefile
config.status: creating libguile/version.h
config.status: creating guile-readline/Makefile
config.status: creating test-suite/Makefile
config.status: creating test-suite/standalone/Makefile
config.status: creating test-suite/vm/Makefile
config.status: creating meta/Makefile
config.status: creating module/Makefile
config.status: creating meta/guile-2.0.pc
config.status: creating meta/guile-2.0-uninstalled.pc
config.status: creating doc/ref/effective-version.texi
config.status: creating check-guile
config.status: creating benchmark-guile
config.status: creating meta/guile
config.status: creating meta/uninstalled-env
config.status: creating meta/gdb-uninstalled-guile
config.status: creating meta/guile-tools
config.status: creating libguile/guile-snarf
config.status: creating libguile/guile-snarf-docs
config.status: creating test-suite/standalone/test-use-srfi
config.status: creating test-suite/standalone/test-fast-slot-ref
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
make -C '/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0' -j '1'
make[2]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0'
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/build-aux/missing --run autoheader)
rm -f stamp-h1
touch config.h.in
cd . && /bin/bash ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
make  all-recursive
make[3]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0'
Making all in lib
make[4]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/lib'
  GEN    alloca.h
  GEN    arg-nonnull.h
  GEN    c++defs.h
  GEN    warn-on-use.h
  GEN    arpa/inet.h
  GEN    byteswap.h
  GEN    errno.h
  GEN    iconv.h
  GEN    locale.h
  GEN    math.h
  GEN    netdb.h
  GEN    netinet/in.h
  GEN    stdio.h
  GEN    stdlib.h
  GEN    string.h
  GEN    strings.h
  GEN    sys/file.h
  GEN    sys/socket.h
  GEN    sys/stat.h
  GEN    sys/time.h
  GEN    time.h
  GEN    unistd.h
  GEN    unused-parameter.h
  GEN    wchar.h
make  all-recursive
make[5]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/lib'
make[6]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/lib'
  CC     c-ctype.lo
  CC     c-strcasecmp.lo
  CC     c-strncasecmp.lo
  CC     close-hook.lo
  CC     full-read.lo
  CC     full-write.lo
  CC     malloca.lo
  CC     nproc.lo
  CC     sockets.lo
  CC     striconveh.lo
  CC     unistr/u8-mbtouc.lo
  CC     unistr/u8-mbtouc-aux.lo
  CC     unistr/u8-mbtouc-unsafe.lo
  CC     unistr/u8-mbtouc-unsafe-aux.lo
  CC     version-etc.lo
  CC     version-etc-fsf.lo
  CC     accept.lo
  CC     asnprintf.lo
  CC     bind.lo
  CC     canonicalize-lgpl.lo
  CC     close.lo
  CC     connect.lo
  CC     fclose.lo
  CC     flock.lo
  CC     getaddrinfo.lo
  CC     getpeername.lo
  CC     getsockname.lo
  CC     getsockopt.lo
getsockopt.c: In function 'rpl_getsockopt':
getsockopt.c:49:7: warning: passing argument 4 of 'getsockopt' from incompatible pointer type [enabled by default]
/home/vog/mingw-cross-env/usr/lib/gcc/i686-pc-mingw32/4.6.0/../../../../i686-pc-mingw32/include/winsock2.h:543:32: note: expected 'char *' but argument is of type 'int *'
  CC     inet_ntop.lo
  CC     inet_pton.lo
  CC     isinf.lo
  CC     isnand.lo
  CC     isnanf.lo
  CC     isnanl.lo
  CC     listen.lo
  CC     lstat.lo
  CC     malloc.lo
  CC     memchr.lo
  CC     printf-args.lo
  CC     printf-parse.lo
  CC     putenv.lo
  CC     readlink.lo
  CC     recv.lo
  CC     recvfrom.lo
  CC     safe-read.lo
  CC     safe-write.lo
  CC     send.lo
  CC     sendto.lo
  CC     setsockopt.lo
  CC     shutdown.lo
  CC     snprintf.lo
  CC     socket.lo
  CC     stat.lo
  CC     strftime.lo
  CC     time_r.lo
  CC     vasnprintf.lo
  CC     vsnprintf.lo
  CCLD   libgnu.la
make[6]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/lib'
make[5]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/lib'
make[4]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/lib'
Making all in meta
make[4]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/meta'
guile="/home/vog/mingw-cross-env/usr/i686-pc-mingw32/bin/`echo guile | /bin/sed -e 's,x,x,'`" ;	\
	cat ./guile-config.in							\
	| /bin/sed -e "s,@pkgconfigdir@,/home/vog/mingw-cross-env/usr/i686-pc-mingw32/lib/pkgconfig,g ;			\
		     s,@""PKG_CONFIG@,/home/vog/mingw-cross-env/usr/bin/i686-pc-mingw32-pkg-config,g ;				\
		     s,@installed_guile@,$guile,g"				\
	> guile-config.out
mv guile-config.out guile-config
chmod +x guile-config
make[4]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/meta'
Making all in libguile
make[4]: Entering directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/libguile'
  GEN    libpath.h
  GEN    gen-scmconfig.o
  GEN    gen-scmconfig.exe
  GEN    scmconfig.h
  GEN    vm-i-system.i
  GEN    vm-i-scheme.i
  GEN    vm-i-loader.i
  SNARF  alist.x
  SNARF  arbiters.x
  SNARF  array-handle.x
  SNARF  array-map.x
  SNARF  arrays.x
  SNARF  async.x
  SNARF  backtrace.x
  SNARF  boolean.x
  SNARF  bitvectors.x
  SNARF  bytevectors.x
  SNARF  chars.x
  SNARF  control.x
  SNARF  continuations.x
  SNARF  debug.x
  SNARF  deprecated.x
  SNARF  deprecation.x
deprecation.c:40:0: warning: "vsnprintf" redefined [enabled by default]
../lib/stdio.h:1357:0: note: this is the location of the previous definition
  SNARF  dynl.x
  SNARF  dynwind.x
  SNARF  eq.x
  SNARF  error.x
  SNARF  eval.x
  SNARF  evalext.x
  SNARF  expand.x
expand.c:52:0: warning: "VOID" redefined [enabled by default]
/home/vog/mingw-cross-env/usr/lib/gcc/i686-pc-mingw32/4.6.0/../../../../i686-pc-mingw32/include/winnt.h:75:0: note: this is the location of the previous definition
expand.c:54:0: warning: "CONST" redefined [enabled by default]
/home/vog/mingw-cross-env/usr/lib/gcc/i686-pc-mingw32/4.6.0/../../../../i686-pc-mingw32/include/windef.h:39:0: note: this is the location of the previous definition
  SNARF  extensions.x
  SNARF  feature.x
  SNARF  fluids.x
  SNARF  foreign.x
  SNARF  fports.x
  SNARF  gc-malloc.x
  SNARF  gc.x
  SNARF  gettext.x
  SNARF  generalized-arrays.x
  SNARF  generalized-vectors.x
  SNARF  goops.x
  SNARF  gsubr.x
  SNARF  guardians.x
  SNARF  hash.x
  SNARF  hashtab.x
  SNARF  hooks.x
  SNARF  i18n.x
  SNARF  init.x
  SNARF  ioext.x
  SNARF  keywords.x
  SNARF  list.x
  SNARF  load.x
  SNARF  macros.x
  SNARF  mallocs.x
  SNARF  memoize.x
  SNARF  modules.x
  SNARF  numbers.x
  SNARF  objprop.x
  SNARF  options.x
  SNARF  pairs.x
  SNARF  ports.x
  SNARF  print.x
  SNARF  procprop.x
  SNARF  procs.x
  SNARF  promises.x
  SNARF  r6rs-ports.x
  SNARF  random.x
  SNARF  rdelim.x
  SNARF  read.x
  SNARF  root.x
  SNARF  rw.x
  SNARF  scmsigs.x
  SNARF  script.x
  SNARF  simpos.x
  SNARF  smob.x
  SNARF  sort.x
  SNARF  srcprop.x
  SNARF  srfi-1.x
  SNARF  srfi-4.x
  SNARF  srfi-13.x
  SNARF  srfi-14.x
  SNARF  srfi-60.x
  SNARF  stackchk.x
  SNARF  stacks.x
  SNARF  stime.x
  SNARF  strings.x
  SNARF  strorder.x
  SNARF  strports.x
  SNARF  struct.x
  SNARF  symbols.x
  SNARF  threads.x
  SNARF  throw.x
  SNARF  trees.x
  SNARF  uniform.x
  SNARF  values.x
  SNARF  variable.x
  SNARF  vectors.x
  SNARF  version.x
  SNARF  vports.x
  SNARF  weaks.x
  SNARF  frames.x
  SNARF  instructions.x
  SNARF  objcodes.x
objcodes.c:26:22: fatal error: sys/mman.h: No such file or directory
compilation terminated.
make[4]: *** [objcodes.x] Error 1
make[4]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0/libguile'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/vog/mingw-cross-env/tmp-guile/guile-2.0.0'
make[1]: *** [build-only-guile] Error 2
make[1]: Leaving directory `/home/vog/mingw-cross-env'

real	1m48.655s
user	1m10.740s
sys	0m35.730s

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-03-26 22:06 Volker Grabsch
@ 2011-04-01 10:38 ` Andy Wingo
  2011-04-01 18:50   ` Volker Grabsch
  0 siblings, 1 reply; 21+ messages in thread
From: Andy Wingo @ 2011-04-01 10:38 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: bug-guile, guile-devel, Mike Gran

On Sat 26 Mar 2011 23:06, Volker Grabsch <vog@notjusthosting.com> writes:

> The first issue is the "#include <uniconv.h>" in gen-scmconfig,
> which has already been discussed in the past and for which I
> already provided a clean, working solution. I forward-ported
> my patch to guile-2.0.0 and it seems to work. This patch is
> attached to this email, please consider applying it.

I don't know what discussion you are referring to here; best to link.

In any case, I don't understand the mechanism here, but I believe the
point was to make it so that #include <libguile.h> would not pull in
iconv headers.  gen-scmconfig looks up the value of the constants for
iconv conversion handlers, and writes them into scmconfig.h.  Your patch
undoes that.

What problem are you working around here?

> The other open issue is also a known one: the missing mmap()
> function under Windows. After some research, I found a promising
> mmap()/munmap() implementation for Windows in a free software
> project:
>
> http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.h?r=74
> http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.c?r=74
>
> Maybe this is worth integrating into guile?

You know, not only do we not rely on MAP_SHARED -- I switched it to use
PRIVATE, just now -- we didn't actually need mmap at all.  I just
changed it to use read(2) if mmap is not available, and it seems to work
fine, just a little (5-10%) slower to start up.  That should help our
unfortunate friends working on Windows :)

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-01 10:38 ` Andy Wingo
@ 2011-04-01 18:50   ` Volker Grabsch
  2011-04-12 11:14     ` Andy Wingo
  0 siblings, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-04-01 18:50 UTC (permalink / raw)
  To: Andy Wingo; +Cc: bug-guile, guile-devel

Andy Wingo schrieb:
> On Sat 26 Mar 2011 23:06, Volker Grabsch <vog@notjusthosting.com> writes:
> 
> > The first issue is the "#include <uniconv.h>" in gen-scmconfig,
> > which has already been discussed in the past and for which I
> > already provided a clean, working solution. I forward-ported
> > my patch to guile-2.0.0 and it seems to work. This patch is
> > attached to this email, please consider applying it.
> 
> I don't know what discussion you are referring to here; best to link.

I'm referring to:

    "Portability fixes for win32 cross compiling"
    http://www.mail-archive.com/guile-devel@gnu.org/msg05308.html

> In any case, I don't understand the mechanism here, but I believe the
> point was to make it so that #include <libguile.h> would not pull in
> iconv headers.  gen-scmconfig looks up the value of the constants for
> iconv conversion handlers, and writes them into scmconfig.h.  Your patch
> undoes that.
> 
> What problem are you working around here?

The problem is that this mechanism works completely against the
nature of cross compiling.

The issue exists in all attempts to cross compile guile, but they
become extreme when cross compiling on a Unix system for MinGW,
as those systems are very different.

Gen-scmconfig is a code generator, so it has to be built using
the native toolchain. However, it is supposed to write take its
values from the <uniconv.h> of the cross tool chain. Thus, the
"/usr/include" equivalent of the cross tool chain is added to
the include path when compiling gen-scmconfig. And here the
trouble starts, because mixing headers of various toolchains
is never a good idea. Among others, basic headers like <stdio.h>
are now taken from the cross toolchain, referring to objects that
don't even exist in the native toolchain, causing the build to
fail with all kinds of strange error messages.

> > The other open issue is also a known one: the missing mmap()
> > function under Windows. After some research, I found a promising
> > mmap()/munmap() implementation for Windows in a free software
> > project:
> >
> > http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.h?r=74
> > http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.c?r=74
> >
> > Maybe this is worth integrating into guile?
> 
> You know, not only do we not rely on MAP_SHARED -- I switched it to use
> PRIVATE, just now -- we didn't actually need mmap at all.  I just
> changed it to use read(2) if mmap is not available, and it seems to work
> fine, just a little (5-10%) slower to start up.  That should help our
> unfortunate friends working on Windows :)

That's good news. Maybe this will enable me to include the next guile
release in mingw-cross-env - a project dedicated to all those unfortunate
friends. :-)  Using mingw-cross-env and Wine, they at least don't have
to actually run Windows just to build and test their project's Windows
port. ;-)


Greets,
Volker

-- 
Volker Grabsch
---<<(())>>---



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
@ 2011-04-05 19:43 Mike Gran
  2011-04-06  1:38 ` Volker Grabsch
  0 siblings, 1 reply; 21+ messages in thread
From: Mike Gran @ 2011-04-05 19:43 UTC (permalink / raw)
  To: Volker Grabsch, Andy Wingo; +Cc: bug-guile@gnu.org, guile-devel@gnu.org

>     "Portability fixes for win32 cross compiling"
>     http://www.mail-archive.com/guile-devel@gnu.org/msg05308.html
> 
> > In any case, I don't understand the mechanism here, but I believe the
> > point was to make it so that #include <libguile.h> would not pull in
> > iconv headers.  gen-scmconfig looks up the value of the constants for
> > iconv conversion handlers, and writes them into scmconfig.h.  Your patch
> > undoes that.
> > 
> > What problem are you working around here?
> 
> The problem is that this mechanism works completely against the
> nature of cross compiling.
> 
> The issue exists in all attempts to cross compile guile, but they
> become extreme when cross compiling on a Unix system for MinGW,
> as those systems are very different.
> 
> Gen-scmconfig is a code generator, so it has to be built using
> the native toolchain. However, it is supposed to write take its
> values from the <uniconv.h> of the cross tool chain. Thus, the
> "/usr/include" equivalent of the cross tool chain is added to
> the include path when compiling gen-scmconfig. And here the
> trouble starts, because mixing headers of various toolchains
> is never a good idea. Among others, basic headers like <stdio.h>
> are now taken from the cross toolchain, referring to objects that
> don't even exist in the native toolchain, causing the build to
> fail with all kinds of strange error messages.

There was a recent discussion about these sorts of builds at
http://lists.gnu.org/archive/html/automake/2011-04/msg00014.html
 
> 
> > > The other open issue is also a known one: the missing mmap()
> > > function under Windows. After some research, I found a promising
> > > mmap()/munmap() implementation for Windows in a free software
> > > project:
> > >
> > > http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.h?r=74
> > > http://code.google.com/p/flvmeta/source/browse/trunk/src/mmap.c?r=74
> > >
> > > Maybe this is worth integrating into guile?
> > 
> > You know, not only do we not rely on MAP_SHARED -- I switched it to use
> > PRIVATE, just now -- we didn't actually need mmap at all.  I just
> > changed it to use read(2) if mmap is not available, and it seems to work
> > fine, just a little (5-10%) slower to start up.  That should help our
> > unfortunate friends working on Windows :)
> 
> That's good news. Maybe this will enable me to include the next guile
> release in mingw-cross-env - a project dedicated to all those unfortunate
> friends. :-)  Using mingw-cross-env and Wine, they at least don't have
> to actually run Windows just to build and test their project's Windows
> port. ;-)
> 
> 
> Greets,
> Volker
> 
> -- 
> Volker Grabsch
> ---<<(())>>---




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-05 19:43 Guile with win32 cross compiling Mike Gran
@ 2011-04-06  1:38 ` Volker Grabsch
  2011-04-06 12:46   ` Ludovic Courtès
  0 siblings, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-04-06  1:38 UTC (permalink / raw)
  To: Mike Gran; +Cc: Andy Wingo, bug-guile@gnu.org, guile-devel@gnu.org

Mike Gran schrieb:
> > Gen-scmconfig is a code generator, so it has to be built using
> > the native toolchain. However, it is supposed to write take its
> > values from the <uniconv.h> of the cross tool chain. Thus, the
> > "/usr/include" equivalent of the cross tool chain is added to
> > the include path when compiling gen-scmconfig. And here the
> > trouble starts, because mixing headers of various toolchains
> > is never a good idea. Among others, basic headers like <stdio.h>
> > are now taken from the cross toolchain, referring to objects that
> > don't even exist in the native toolchain, causing the build to
> > fail with all kinds of strange error messages.
> 
> There was a recent discussion about these sorts of builds at
> http://lists.gnu.org/archive/html/automake/2011-04/msg00014.html

If I understand this correctly, the proposed way for cross
compilation is to build the code generators (like gen-scmconfig)
entirely using the build toolchain. This means that <uniconv.h>
and others have to be available on the build system, and constants
are taken from there, rather than from the host toolchain.

In other words, cross-compiling will only work well if the
library versions of the build toolchain and the host toolchain
don't differ too much.

Is this really the way this is meant to be done?

Please don't take this is as a harsh criticism. I just want to
make sure that I fully understand this advice.


Greets,
Volker

-- 
Volker Grabsch
---<<(())>>---



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-06  1:38 ` Volker Grabsch
@ 2011-04-06 12:46   ` Ludovic Courtès
  0 siblings, 0 replies; 21+ messages in thread
From: Ludovic Courtès @ 2011-04-06 12:46 UTC (permalink / raw)
  To: guile-devel; +Cc: bug-guile

Hello,

Volker Grabsch <vog@notjusthosting.com> writes:

> If I understand this correctly, the proposed way for cross
> compilation is to build the code generators (like gen-scmconfig)
> entirely using the build toolchain. This means that <uniconv.h>
> and others have to be available on the build system, and constants
> are taken from there, rather than from the host toolchain.
>
> In other words, cross-compiling will only work well if the
> library versions of the build toolchain and the host toolchain
> don't differ too much.

Yes, I think this is a bug in gen-scmconfig, as you (?) reported long
ago.

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-01 18:50   ` Volker Grabsch
@ 2011-04-12 11:14     ` Andy Wingo
  2011-04-23 16:10       ` Volker Grabsch
  2011-04-24 20:22       ` Ludovic Courtès
  0 siblings, 2 replies; 21+ messages in thread
From: Andy Wingo @ 2011-04-12 11:14 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: bug-guile, guile-devel, Mike Gran

[-- Attachment #1: Type: text/plain, Size: 1120 bytes --]

Hi Volker,

On Fri 01 Apr 2011 20:50, Volker Grabsch <vog@notjusthosting.com> writes:

>     "Portability fixes for win32 cross compiling"
>     http://www.mail-archive.com/guile-devel@gnu.org/msg05308.html

Ah yes.  Thanks for that link.  And thank you for your ongoing patience
:-)

> Gen-scmconfig is a code generator, so it has to be built using
> the native toolchain. However, it is supposed to write take its
> values from the <uniconv.h> of the cross tool chain. Thus, the
> "/usr/include" equivalent of the cross tool chain is added to
> the include path when compiling gen-scmconfig. And here the
> trouble starts, because mixing headers of various toolchains
> is never a good idea. Among others, basic headers like <stdio.h>
> are now taken from the cross toolchain, referring to objects that
> don't even exist in the native toolchain, causing the build to
> fail with all kinds of strange error messages.

Hmmm.  Well.  We have other code generators in Guile's build system;
notably the configure script (via config.h and other output files).
What do folks think about the attached patch?

Regards,

Andy


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-check-for-iconveh-values-at-configure-time.patch --]
[-- Type: text/x-patch, Size: 6023 bytes --]

From b03f8337ea62091208680fab901606c9af360a5d Mon Sep 17 00:00:00 2001
From: Andy Wingo <wingo@pobox.com>
Date: Tue, 12 Apr 2011 13:12:56 +0200
Subject: [PATCH] check for iconveh values at configure-time

* configure.ac: Check for the iconveh values here, instead of relying on
  gen-scmconfig to know them.  That doesn't work in general because
  gen-scmconfig runs on the build machine, not the target machine.

* libguile/Makefile.am (gen-scmconfig.$(OBJEXT)): Revert rule to the
  revision before 533d8212.

* libguile/gen-scmconfig.h.in (SCM_I_GSC_ICONVEH_ERROR):
  (SCM_I_GSC_ICONVEH_QUESTION_MARK):
  (SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE):
* libguile/gen-scmconfig.c: Use configure-time substitutions to set
  SCM_ICONVEH_ERROR_HANDLER et al.
---
 configure.ac                |   64 +++++++++++++++++++++++++++++++++++++++++++
 libguile/Makefile.am        |   12 +++-----
 libguile/gen-scmconfig.c    |    9 +++---
 libguile/gen-scmconfig.h.in |    3 ++
 4 files changed, 76 insertions(+), 12 deletions(-)

diff --git a/configure.ac b/configure.ac
index 45438c8..1f68e0f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1188,6 +1188,70 @@ GUILE_STRUCT_UTIMBUF
 
 #--------------------------------------------------------------------
 #
+# What values do the iconv error handlers have?
+#
+# The only place that we need iconv in our public interfaces is for
+# the error handlers, which are just ints.  So we weaken our
+# dependency by looking up those values at configure-time.
+#--------------------------------------------------------------------
+SCM_I_GSC_ICONVEH_ERROR=0
+SCM_I_GSC_ICONVEH_QUESTION_MARK=1
+SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE=2
+AC_MSG_CHECKING([for iconveh_error])
+AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+#include <uniconv.h>
+int
+main (int argc, char *argv[])
+{
+  if (argc > 1)
+    printf ("%d\n", (int)iconveh_error);
+  return 0;
+}])],
+	       [SCM_I_GSC_ICONVEH_ERROR=`./conftest$EXEEXT pretty-please`
+                AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_ERROR])],
+	       [AC_MSG_FAILURE([failed to get iconveh_error])],
+	       [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_ERROR for cross-compilation])])
+
+AC_MSG_CHECKING([for iconveh_question_mark])
+AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+#include <uniconv.h>
+int
+main (int argc, char *argv[])
+{
+  if (argc > 1)
+    printf ("%d\n", (int)iconveh_question_mark);
+  return 0;
+}])],
+	       [SCM_I_GSC_ICONVEH_QUESTION_MARK=`./conftest$EXEEXT pretty-please`
+                AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_QUESTION_MARK])],
+	       [AC_MSG_FAILURE([failed to get iconveh_question_mark])],
+	       [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_QUESTION_MARK for cross-compilation])])
+
+AC_MSG_CHECKING([for iconveh_escape_sequence])
+AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+#include <uniconv.h>
+int
+main (int argc, char *argv[])
+{
+  if (argc > 1)
+    printf ("%d\n", (int)iconveh_escape_sequence);
+  return 0;
+}])],
+	       [SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE=`./conftest$EXEEXT pretty-please`
+                AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE])],
+	       [AC_MSG_FAILURE([failed to get iconveh_escape_sequence])],
+	       [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE for cross-compilation])])
+
+AC_SUBST([SCM_I_GSC_ICONVEH_ERROR])
+AC_SUBST([SCM_I_GSC_ICONVEH_QUESTION_MARK])
+AC_SUBST([SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE])
+
+
+#--------------------------------------------------------------------
+#
 # Which way does the stack grow?
 #
 # Following code comes from Autoconf 2.61's internal _AC_LIBOBJ_ALLOCA
diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index ac27eb8..ffb4059 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -55,13 +55,11 @@ gen_scmconfig_SOURCES = gen-scmconfig.c
 ## Override default rule; this should be compiled for BUILD host.
 ## For some reason, OBJEXT does not include the dot
 gen-scmconfig.$(OBJEXT): gen-scmconfig.c
-	$(AM_V_GEN)							\
-	if [ "$(cross_compiling)" = "yes" ]; then			\
-		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)	\
-		  $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)	\
-	          -c -o $@ $<;						\
-	else								\
-		$(COMPILE) -c -o $@ $<;					\
+	$(AM_V_GEN) \
+	if [ "$(cross_compiling)" = "yes" ]; then \
+		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) -c -o $@ $<; \
+	else \
+		$(COMPILE) -c -o $@ $<; \
 	fi
 
 ## Override default rule; this should run on BUILD host.
diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c
index 5834346..176f25c 100644
--- a/libguile/gen-scmconfig.c
+++ b/libguile/gen-scmconfig.c
@@ -123,7 +123,6 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <uniconv.h>
 
 #define pf printf
 
@@ -397,11 +396,11 @@ main (int argc, char *argv[])
 
   pf ("\n");
   pf ("/* Constants from uniconv.h.  */\n");
-  pf ("#define SCM_ICONVEH_ERROR %d\n", (int) iconveh_error);
-  pf ("#define SCM_ICONVEH_QUESTION_MARK %d\n", 
-      (int) iconveh_question_mark);
+  pf ("#define SCM_ICONVEH_ERROR %d\n", SCM_I_GSC_ICONVEH_ERROR);
+  pf ("#define SCM_ICONVEH_QUESTION_MARK %d\n",
+      SCM_I_GSC_ICONVEH_QUESTION_MARK);
   pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE %d\n",
-      (int) iconveh_escape_sequence);  
+      SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE);  
 
   printf ("#endif\n");
 
diff --git a/libguile/gen-scmconfig.h.in b/libguile/gen-scmconfig.h.in
index 125720a..30f43d7 100644
--- a/libguile/gen-scmconfig.h.in
+++ b/libguile/gen-scmconfig.h.in
@@ -31,6 +31,9 @@
 #define SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER @SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER@
 #define SCM_I_GSC_HAVE_THREAD_STORAGE_CLASS @SCM_I_GSC_HAVE_THREAD_STORAGE_CLASS@
 #define SCM_I_GSC_HAVE_STRUCT_DIRENT64 @SCM_I_GSC_HAVE_STRUCT_DIRENT64@
+#define SCM_I_GSC_ICONVEH_ERROR @SCM_I_GSC_ICONVEH_ERROR@
+#define SCM_I_GSC_ICONVEH_QUESTION_MARK @SCM_I_GSC_ICONVEH_QUESTION_MARK@
+#define SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE @SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE@
 
 /*
   Local Variables:
-- 
1.7.3.4


[-- Attachment #3: Type: text/plain, Size: 26 bytes --]


-- 
http://wingolog.org/

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-12 11:14     ` Andy Wingo
@ 2011-04-23 16:10       ` Volker Grabsch
  2011-04-24 10:42         ` Andy Wingo
  2011-04-24 20:22       ` Ludovic Courtès
  1 sibling, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-04-23 16:10 UTC (permalink / raw)
  To: Andy Wingo; +Cc: bug-guile, guile-devel

Hello Andy,

Andy Wingo schrieb:
> On Fri 01 Apr 2011 20:50, Volker Grabsch <vog@notjusthosting.com> writes:
> 
> >     "Portability fixes for win32 cross compiling"
> >     http://www.mail-archive.com/guile-devel@gnu.org/msg05308.html
> 
> Ah yes.  Thanks for that link.  And thank you for your ongoing patience
> :-)

You're welcome. :-)

> > And here the trouble starts, because mixing headers of various
> > toolchains is never a good idea. [...], causing the build to
> > fail with all kinds of strange error messages.
> 
> Hmmm.  Well.  We have other code generators in Guile's build system;
> notably the configure script (via config.h and other output files).
> What do folks think about the attached patch?

Please drop me a note when you want me to check your patch,
confirming that your work really solves the win32 cross issues.

I already tried to check this patch, but I wasn't able to find
out which version it is meant to be applied to.


Greets,
Volker

-- 
Volker Grabsch
---<<(())>>---



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-23 16:10       ` Volker Grabsch
@ 2011-04-24 10:42         ` Andy Wingo
  2011-05-16 23:01           ` Volker Grabsch
  0 siblings, 1 reply; 21+ messages in thread
From: Andy Wingo @ 2011-04-24 10:42 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: bug-guile, guile-devel, Mike Gran

Hi Volker,

On Sat 23 Apr 2011 18:10, Volker Grabsch <vog@notjusthosting.com> writes:

> Andy Wingo schrieb:
>> Hmmm.  Well.  We have other code generators in Guile's build system;
>> notably the configure script (via config.h and other output files).
>> What do folks think about the attached patch?
>
> Please drop me a note when you want me to check your patch,
> confirming that your work really solves the win32 cross issues.

Hmm, it should have applied to stable-2.0.  I can commit it if there are
no objections, as there do not appear to be.  It should fix the
gen-scmconfig issue.

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-12 11:14     ` Andy Wingo
  2011-04-23 16:10       ` Volker Grabsch
@ 2011-04-24 20:22       ` Ludovic Courtès
  2011-04-28 21:03         ` Andy Wingo
  1 sibling, 1 reply; 21+ messages in thread
From: Ludovic Courtès @ 2011-04-24 20:22 UTC (permalink / raw)
  To: bug-guile; +Cc: guile-devel

Hi,

Andy Wingo <wingo@pobox.com> writes:

> From b03f8337ea62091208680fab901606c9af360a5d Mon Sep 17 00:00:00 2001
> From: Andy Wingo <wingo@pobox.com>
> Date: Tue, 12 Apr 2011 13:12:56 +0200
> Subject: [PATCH] check for iconveh values at configure-time
>
> * configure.ac: Check for the iconveh values here, instead of relying on
>   gen-scmconfig to know them.  That doesn't work in general because
>   gen-scmconfig runs on the build machine, not the target machine.
>
> * libguile/Makefile.am (gen-scmconfig.$(OBJEXT)): Revert rule to the
>   revision before 533d8212.
>
> * libguile/gen-scmconfig.h.in (SCM_I_GSC_ICONVEH_ERROR):
>   (SCM_I_GSC_ICONVEH_QUESTION_MARK):
>   (SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE):
> * libguile/gen-scmconfig.c: Use configure-time substitutions to set
>   SCM_ICONVEH_ERROR_HANDLER et al.

Nice!

>  #--------------------------------------------------------------------
>  #
> +# What values do the iconv error handlers have?
> +#
> +# The only place that we need iconv in our public interfaces is for
> +# the error handlers, which are just ints.  So we weaken our
> +# dependency by looking up those values at configure-time.
> +#--------------------------------------------------------------------
> +SCM_I_GSC_ICONVEH_ERROR=0
> +SCM_I_GSC_ICONVEH_QUESTION_MARK=1
> +SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE=2
> +AC_MSG_CHECKING([for iconveh_error])
> +AC_RUN_IFELSE([AC_LANG_SOURCE(
> +[AC_INCLUDES_DEFAULT
> +#include <uniconv.h>
> +int
> +main (int argc, char *argv[])
> +{
> +  if (argc > 1)
> +    printf ("%d\n", (int)iconveh_error);
> +  return 0;
> +}])],
> +	       [SCM_I_GSC_ICONVEH_ERROR=`./conftest$EXEEXT pretty-please`
> +                AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_ERROR])],
> +	       [AC_MSG_FAILURE([failed to get iconveh_error])],
> +	       [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_ERROR for cross-compilation])])
> +
> +AC_MSG_CHECKING([for iconveh_question_mark])
> +AC_RUN_IFELSE([AC_LANG_SOURCE(
> +[AC_INCLUDES_DEFAULT
> +#include <uniconv.h>
> +int
> +main (int argc, char *argv[])
> +{
> +  if (argc > 1)
> +    printf ("%d\n", (int)iconveh_question_mark);
> +  return 0;
> +}])],
> +	       [SCM_I_GSC_ICONVEH_QUESTION_MARK=`./conftest$EXEEXT pretty-please`
> +                AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_QUESTION_MARK])],
> +	       [AC_MSG_FAILURE([failed to get iconveh_question_mark])],
> +	       [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_QUESTION_MARK for cross-compilation])])

Looks good to me.  Could you factor it into an M4 macro, use
AC_CACHE_CHECK, and move that to acinclude.m4?

Thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-24 20:22       ` Ludovic Courtès
@ 2011-04-28 21:03         ` Andy Wingo
  2011-06-19 14:42           ` Ludovic Courtès
  0 siblings, 1 reply; 21+ messages in thread
From: Andy Wingo @ 2011-04-28 21:03 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: bug-guile, guile-devel

On Sun 24 Apr 2011 22:22, ludo@gnu.org (Ludovic Courtès) writes:

> Looks good to me.  Could you factor it into an M4 macro, use
> AC_CACHE_CHECK, and move that to acinclude.m4?

I tried and failed, so I pushed it anyway.  Would you like to do the
refactoring as a separate commit? :-))  Sorry for being pathetic here
but it is beyond my autofoo.

Cheers,

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-24 10:42         ` Andy Wingo
@ 2011-05-16 23:01           ` Volker Grabsch
  2011-05-20 10:32             ` Andy Wingo
  0 siblings, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-05-16 23:01 UTC (permalink / raw)
  To: Andy Wingo; +Cc: bug-guile, guile-devel

[-- Attachment #1: Type: text/plain, Size: 7005 bytes --]

Andy Wingo schrieb:
> On Sat 23 Apr 2011 18:10, Volker Grabsch <vog@notjusthosting.com> writes:
> 
> > Andy Wingo schrieb:
> >> Hmmm.  Well.  We have other code generators in Guile's build system;
> >> notably the configure script (via config.h and other output files).
> >> What do folks think about the attached patch?
> >
> > Please drop me a note when you want me to check your patch,
> > confirming that your work really solves the win32 cross issues.
> 
> Hmm, it should have applied to stable-2.0.  I can commit it if there are
> no objections, as there do not appear to be.  It should fix the
> gen-scmconfig issue.

Okay, so I give it another try.

    git clone http://git.savannah.gnu.org/r/guile.git -b stable-2.0
    cd guile

It seems that your patch is already in there, so no "patch" command
is needed after "git clone". Next steps are autogen/configure/make.
The whole configure command is a bit longer, because unfortunately
we have to tweak some stuff to make it really cross-compile:

   ./autogen.sh
   ./configure --host=i686-pc-mingw32 --disable-shared --without-threads scm_cv_struct_timespec=no LIBS='-lunistring -lintl -liconv'
   make

Explanation:

   "--without-threads" is needed because threading is a difficult
   issue that I'd like to deal later with.

   "scm_cv_struct_timespec=no" is needed to ensure that libguile/threads.c
   won't try to use the "struct timespec" from <pthreads.h>, which
   would fail because we don't use pthreads (yet). I think this should
   better be fixed in the source, but this workaround does the trick for now.

   "LIBS='-lunistring -lintl -liconv'" is needed because otherwise,
   the detection of libunistring fails. I think this should better
   be fixed in configure.ac, but this workaround does the trick for now.

In addition, I had to fix two other things in the source. The patches
are attached to this email:

    "fix-include-error-in-gen-scmconfig.patch"
    The patch re-introduces a change which I already proposed
    in my last patch: You can't use $(AM_CPPFLAGS) for the native
    build, because it adds "-I../lib" which means that <stdio.h>
    is taken from the local GNU-lib installation. The problem is
    that the GNU-lib in "lib/" has been configured for MinGW, not
    for the native system. So it performs some fixes which don't
    work on non-MinGW systems, leading to strange, unhelpful error
    messages. It took me quite some time to figure this out, mostly
    because I thought that this should have already been fixed.

    "remove-mingw-ifsock.patch"
    This patch fixes an issue that also appears on native MinGW
    build, because _S_IFSOCK simply isn't defined there. Note that
    this issue was already reported, but hasn't been fixed up to
    now, at least not in the stable-2.0 branch:
    http://lists.gnu.org/archive/html/guile-devel/2011-01/msg00183.html

After those changes, the build continues quite far, but ultimately
fails at the following position:

--------------------------------------------------------------------------
  CC     net_db.lo
net_db.c:460:1: error: 'AI_ALL' undeclared here (not in a function)
net_db.c:460:1: error: expression in static assertion is not an integer
net_db.c:482:33: warning: 'struct addrinfo' declared inside parameter list [enabled by default]
net_db.c:482:33: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
net_db.c: In function 'scm_from_addrinfo':
net_db.c:490:3: error: dereferencing pointer to incomplete type
net_db.c:491:3: error: dereferencing pointer to incomplete type
net_db.c:492:3: error: dereferencing pointer to incomplete type
net_db.c:493:3: error: dereferencing pointer to incomplete type
net_db.c:494:3: error: dereferencing pointer to incomplete type
net_db.c:494:3: error: dereferencing pointer to incomplete type
net_db.c:496:3: error: dereferencing pointer to incomplete type
net_db.c:496:3: error: dereferencing pointer to incomplete type
net_db.c: In function 'scm_getaddrinfo':
net_db.c:614:19: error: storage size of 'c_hints' isn't known
net_db.c:657:3: warning: implicit declaration of function 'getaddrinfo' [-Wimplicit-function-declaration]
net_db.c:665:10: error: dereferencing pointer to incomplete type
net_db.c:665:19: warning: left-hand operand of comma expression has no effect [-Wunused-value]
net_db.c:666:2: warning: passing argument 1 of 'scm_from_addrinfo' from incompatible pointer type [enabled by default]
net_db.c:482:1: note: expected 'const struct addrinfo *' but argument is of type 'struct addrinfo *'
net_db.c:668:7: warning: implicit declaration of function 'freeaddrinfo' [-Wimplicit-function-declaration]
net_db.c:614:19: warning: unused variable 'c_hints' [-Wunused-variable]
net_db.c: At top level:
net_db.c:680:1: error: 'EAI_BADFLAGS' undeclared here (not in a function)
net_db.c:680:1: error: expression in static assertion is not an integer
net_db.c: In function 'scm_gai_strerror':
net_db.c:744:3: warning: implicit declaration of function 'gai_strerror' [-Wimplicit-function-declaration]
net_db.c:744:3: warning: passing argument 1 of 'scm_from_locale_string' makes pointer from integer without a cast [enabled by default]
../libguile/strings.h:134:13: note: expected 'const char *' but argument is of type 'int'
In file included from net_db.c:755:0:
../libguile/net_db.x: In function 'scm_init_net_db':
../libguile/net_db.x:17:78: error: 'AI_PASSIVE' undeclared (first use in this function)
../libguile/net_db.x:17:78: note: each undeclared identifier is reported only once for each function it appears in
../libguile/net_db.x:18:82: error: 'AI_CANONNAME' undeclared (first use in this function)
../libguile/net_db.x:19:86: error: 'AI_NUMERICHOST' undeclared (first use in this function)
../libguile/net_db.x:20:86: error: 'AI_NUMERICSERV' undeclared (first use in this function)
../libguile/net_db.x:21:80: error: 'AI_V4MAPPED' undeclared (first use in this function)
../libguile/net_db.x:23:84: error: 'AI_ADDRCONFIG' undeclared (first use in this function)
../libguile/net_db.x:27:78: error: 'EAI_NONAME' undeclared (first use in this function)
../libguile/net_db.x:28:76: error: 'EAI_AGAIN' undeclared (first use in this function)
../libguile/net_db.x:29:74: error: 'EAI_FAIL' undeclared (first use in this function)
../libguile/net_db.x:30:78: error: 'EAI_FAMILY' undeclared (first use in this function)
../libguile/net_db.x:31:82: error: 'EAI_SOCKTYPE' undeclared (first use in this function)
../libguile/net_db.x:32:80: error: 'EAI_SERVICE' undeclared (first use in this function)
../libguile/net_db.x:33:78: error: 'EAI_MEMORY' undeclared (first use in this function)
../libguile/net_db.x:34:78: error: 'EAI_SYSTEM' undeclared (first use in this function)
../libguile/net_db.x:35:82: error: 'EAI_OVERFLOW' undeclared (first use in this function)
make[3]: *** [net_db.lo] Error 1
--------------------------------------------------------------------------


Greets,
Volker

-- 
Volker Grabsch
---<<(())>>---

[-- Attachment #2: fix-include-error-in-gen-scmconfig.patch --]
[-- Type: text/x-diff, Size: 432 bytes --]

--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -57,7 +57,7 @@ gen_scmconfig_SOURCES = gen-scmconfig.c
 gen-scmconfig.$(OBJEXT): gen-scmconfig.c
 	$(AM_V_GEN) \
 	if [ "$(cross_compiling)" = "yes" ]; then \
-		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) -c -o $@ $<; \
+		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) -I$(top_srcdir) -I$(top_builddir) -c -o $@ $<; \
 	else \
 		$(COMPILE) -c -o $@ $<; \
 	fi

[-- Attachment #3: remove-mingw-ifsock.patch --]
[-- Type: text/x-diff, Size: 469 bytes --]

--- a/libguile/filesys.c
+++ b/libguile/filesys.c
@@ -473,7 +473,7 @@ static int fstat_Win32 (int fdes, struct stat *buf)
   /* Is this a socket ? */
   if (getsockopt (fdes, SOL_SOCKET, SO_ERROR, (void *) &error, &optlen) >= 0)
     {
-      buf->st_mode = _S_IFSOCK | _S_IREAD | _S_IWRITE | _S_IEXEC;
+      buf->st_mode = _S_IREAD | _S_IWRITE | _S_IEXEC;
       buf->st_nlink = 1;
       buf->st_atime = buf->st_ctime = buf->st_mtime = time (NULL);
       return 0;

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-05-16 23:01           ` Volker Grabsch
@ 2011-05-20 10:32             ` Andy Wingo
  2011-05-20 12:25               ` Volker Grabsch
  0 siblings, 1 reply; 21+ messages in thread
From: Andy Wingo @ 2011-05-20 10:32 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: bug-guile, guile-devel, Mike Gran

Hi Volker,

Thanks for the report.

On Tue 17 May 2011 01:01, Volker Grabsch <vog@notjusthosting.com> writes:

>     "fix-include-error-in-gen-scmconfig.patch"
>     The patch re-introduces a change which I already proposed
>     in my last patch: You can't use $(AM_CPPFLAGS) for the native
>     build, because it adds "-I../lib" which means that <stdio.h>
>     is taken from the local GNU-lib installation. The problem is
>     that the GNU-lib in "lib/" has been configured for MinGW, not
>     for the native system. So it performs some fixes which don't
>     work on non-MinGW systems, leading to strange, unhelpful error
>     messages. It took me quite some time to figure this out, mostly
>     because I thought that this should have already been fixed.

Hmmmm!  Yes, sorry for overlooking this part of your patch.  After
thinking for a while about it I agree with you.  I modified your patch
to add a comment.

>     "remove-mingw-ifsock.patch"
>     This patch fixes an issue that also appears on native MinGW
>     build, because _S_IFSOCK simply isn't defined there. Note that
>     this issue was already reported, but hasn't been fixed up to
>     now, at least not in the stable-2.0 branch:
>     http://lists.gnu.org/archive/html/guile-devel/2011-01/msg00183.html

I'll look at this when I'm back on the internet.

>   CC     net_db.lo
> net_db.c:460:1: error: 'AI_ALL' undeclared here (not in a function)
> net_db.c:460:1: error: expression in static assertion is not an integer
> net_db.c:482:33: warning: 'struct addrinfo' declared inside parameter list [enabled by default]

If your target does not have e.g. struct addrinfo, because it does not
have IPv6, then you need to configure with
ac_cv_type_struct_addrinfo=no.  Check your config.log.  Or should this
be working somehow?

There are other ac_cv_* for getaddrinfo and other routines.

Happy hacking,

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-05-20 10:32             ` Andy Wingo
@ 2011-05-20 12:25               ` Volker Grabsch
  2011-05-20 12:48                 ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-05-20 12:25 UTC (permalink / raw)
  To: Andy Wingo; +Cc: bug-guile, guile-devel

Hello Andy,

thanks for the quick reply and for accepting and cleaning up
my patches so far.

Andy Wingo schrieb:
> >   CC     net_db.lo
> > net_db.c:460:1: error: 'AI_ALL' undeclared here (not in a function)
> > net_db.c:460:1: error: expression in static assertion is not an integer
> > net_db.c:482:33: warning: 'struct addrinfo' declared inside parameter list [enabled by default]
[...]
> If your target does not have e.g. struct addrinfo, because it does not
> have IPv6, then you need to configure with
> ac_cv_type_struct_addrinfo=no.  Check your config.log.  Or should this
> be working somehow?
> 
> There are other ac_cv_* for getaddrinfo and other routines.

Okay, so I'm trying to get along without this ugly "ac_cv_type_struct_addrinfo"
hack, hoping that the following error report will be more useful to you.


1) My first attempt is to enable threads via:

   ./configure --host=i686-pc-mingw32 --disable-shared --with-threads LIBS='-lunistring -lintl -liconv'

This leads to the attached (compressed) config.log:

    config.log.with-threads.bz2

Make stops at this point:

---------------------------------------------------------------
  CC     libguile_2.0_la-threads.lo
threads.c: In function 'to_timespec':
threads.c:245:15: error: dereferencing pointer to incomplete type
threads.c:246:15: error: dereferencing pointer to incomplete type
threads.c:253:15: error: dereferencing pointer to incomplete type
threads.c:254:15: error: dereferencing pointer to incomplete type
threads.c: In function 'launch_thread':
threads.c:974:3: warning: implicit declaration of function 'GC_pthread_detach' [-Wimplicit-function-declaration]
threads.c: In function 'scm_call_with_new_thread':
threads.c:1009:3: warning: implicit declaration of function 'GC_pthread_create' [-Wimplicit-function-declaration]
threads.c: In function 'scm_join_thread_timed':
threads.c:1188:18: error: storage size of 'ctimeout' isn't known
threads.c:1188:18: warning: unused variable 'ctimeout' [-Wunused-variable]
threads.c: In function 'fat_mutex_lock':
threads.c:1408:41: error: dereferencing pointer to incomplete type
threads.c:1409:36: error: dereferencing pointer to incomplete type
threads.c:1410:43: error: dereferencing pointer to incomplete type
threads.c: In function 'scm_lock_mutex_timed':
threads.c:1442:18: error: storage size of 'cwaittime' isn't known
threads.c:1442:18: warning: unused variable 'cwaittime' [-Wunused-variable]
threads.c: In function 'scm_try_mutex':
threads.c:1476:18: error: storage size of 'cwaittime' isn't known
threads.c:1476:18: warning: unused variable 'cwaittime' [-Wunused-variable]
threads.c: In function 'scm_unlock_mutex_timed':
threads.c:1619:18: error: storage size of 'cwaittime' isn't known
threads.c:1619:18: warning: unused variable 'cwaittime' [-Wunused-variable]
threads.c: In function 'scm_timed_wait_condition_variable':
threads.c:1723:18: error: storage size of 'waittime' isn't known
threads.c:1723:18: warning: unused variable 'waittime' [-Wunused-variable]
threads.c: In function 'scm_pthread_cond_timedwait':
threads.c:1924:3: warning: passing argument 3 of 'pthread_cond_timedwait' from incompatible pointer type [enabled by default]
/home/vog/mingw-cross-env/usr/lib/gcc/i686-pc-mingw32/4.6.0/../../../../i686-pc-mingw32/include/pthread.h:1069:31: note: expected 'const struct timespec *' but argument is of type 'const struct scm_t_timespec *'
---------------------------------------------------------------



2) My second attempt is to build without threading:

This leads to a slightly different config.log which I also attached:

    config.log.without-threads.bz2

Make then stops at the same point with just a few less error messages:

---------------------------------------------------------------
  CC     libguile_2.0_la-threads.lo
threads.c: In function 'to_timespec':
threads.c:245:15: error: dereferencing pointer to incomplete type
threads.c:246:15: error: dereferencing pointer to incomplete type
threads.c:253:15: error: dereferencing pointer to incomplete type
threads.c:254:15: error: dereferencing pointer to incomplete type
threads.c: In function 'scm_cancel_thread':
threads.c:1124:7: warning: statement with no effect [-Wunused-value]
threads.c: In function 'scm_join_thread_timed':
threads.c:1188:18: error: storage size of 'ctimeout' isn't known
threads.c:1188:18: warning: unused variable 'ctimeout' [-Wunused-variable]
threads.c: In function 'fat_mutex_lock':
threads.c:1408:41: error: dereferencing pointer to incomplete type
threads.c:1409:36: error: dereferencing pointer to incomplete type
threads.c:1410:43: error: dereferencing pointer to incomplete type
threads.c: In function 'scm_lock_mutex_timed':
threads.c:1442:18: error: storage size of 'cwaittime' isn't known
threads.c:1442:18: warning: unused variable 'cwaittime' [-Wunused-variable]
threads.c: In function 'scm_try_mutex':
threads.c:1476:18: error: storage size of 'cwaittime' isn't known
threads.c:1476:18: warning: unused variable 'cwaittime' [-Wunused-variable]
threads.c: In function 'scm_unlock_mutex_timed':
threads.c:1619:18: error: storage size of 'cwaittime' isn't known
threads.c:1619:18: warning: unused variable 'cwaittime' [-Wunused-variable]
threads.c: In function 'scm_timed_wait_condition_variable':
threads.c:1723:18: error: storage size of 'waittime' isn't known
threads.c:1723:18: warning: unused variable 'waittime' [-Wunused-variable]
---------------------------------------------------------------


I ran builds builds from a clean Git checkout of commit
"19761af161942ef18aa2b7891cbf718fc5be5945" of the stable-2.0 branch.


Note that I would of course prefer a thread-supporting build of Guile,
but the problem is that "libgc" refuses to build under MinGW with
Pthreads, so I had to build libgc with "--enable-threads=win32".

On the other hand, it seems that Guile assumes "libgc" to be built
with "--enable-threads=pthreads".

I'm not sure whether this should be fixed in libgc or in Guile.
Nevertheless, this only accounts for half of the issues, as Guile
also fails to build without threading suppport (--without-threads).

As a final note, I'm using the "Pthreads-w32" library to provide
pthread support under MinGW.  (http://sourceware.org/pthreads-win32/)


Greets,
Volker

-- 
Volker Grabsch
---<<(())>>---



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-05-20 12:25               ` Volker Grabsch
@ 2011-05-20 12:48                 ` Jan Nieuwenhuizen
  2011-05-20 13:25                   ` Andy Wingo
  2011-05-20 22:19                   ` Volker Grabsch
  0 siblings, 2 replies; 21+ messages in thread
From: Jan Nieuwenhuizen @ 2011-05-20 12:48 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: Andy Wingo, bug-guile, guile-devel

Volker Grabsch writes:

> 1) My first attempt is to enable threads via:

Just to remind you that we have an automated working mingw cross build
setup here

    https://github.com/janneke/gub

with guile-specific recipe and patches up at

    https://github.com/janneke/gub/blob/guile-2.0/gub/specs/guile.py
    https://github.com/janneke/gub/tree/guile-2.0/patches

Jan

Greetings, Jan

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-05-20 12:48                 ` Jan Nieuwenhuizen
@ 2011-05-20 13:25                   ` Andy Wingo
  2011-05-20 22:19                   ` Volker Grabsch
  1 sibling, 0 replies; 21+ messages in thread
From: Andy Wingo @ 2011-05-20 13:25 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: bug-guile, Volker Grabsch, guile-devel

On Fri 20 May 2011 14:48, Jan Nieuwenhuizen <janneke@gnu.org> writes:

> Volker Grabsch writes:
>
>> 1) My first attempt is to enable threads via:
>
> Just to remind you that we have an automated working mingw cross build
> setup here
>
>     https://github.com/janneke/gub

Cool :-)

Just to remind *you* that I have outstanding questions regarding your
patches (3/5, 4/5, and 5/5) ;-)

Cheers,

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-05-20 12:48                 ` Jan Nieuwenhuizen
  2011-05-20 13:25                   ` Andy Wingo
@ 2011-05-20 22:19                   ` Volker Grabsch
  2011-06-17  9:03                     ` Andy Wingo
  1 sibling, 1 reply; 21+ messages in thread
From: Volker Grabsch @ 2011-05-20 22:19 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: Andy Wingo, bug-guile, guile-devel

Jan Nieuwenhuizen schrieb:
>     https://github.com/janneke/gub/blob/guile-2.0/gub/specs/guile.py
>     https://github.com/janneke/gub/tree/guile-2.0/patches

Thanks for pointing me to this project. This looks really
promising and I would be glad for learning from that.

1) The pthread issue

As far as I can see, you have patched libgc to support pthreads
under MinGW. You forward-ported those patches from libgc-6.8 to 7.2,
so I'm wondering why those patches didn't make it into upstream
(i.e. the official libgc project) during that time. Are there any
issues with those patches that I should know about?

Also, have you actually offered these patches to upstream? If so,
what's the URL to their bug tracker, or mailing list archive, where
this issue has been discussed? I haven't been able to find any such
information in neither the *.py file not the patch files.

2) The struct_timespec / ipv6 / etc. issues

It seems that you solve those issues using an even uglier hack
than I did. I'm wondering why it is necessary to manipulate the
config.cache, as providing those variables as ./configure paramters
worked quite well for me.

Moreover, is this a sensible thing to do anyway? Shouldn't we try
to fix the configure.ac to make it more portable and to make it
properly detect those MinGW things in the first place?


Greets,
Volker

-- 
Volker Grabsch
---<<(())>>---



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-05-20 22:19                   ` Volker Grabsch
@ 2011-06-17  9:03                     ` Andy Wingo
  2011-07-01 13:52                       ` Andy Wingo
  0 siblings, 1 reply; 21+ messages in thread
From: Andy Wingo @ 2011-06-17  9:03 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: bug-guile, guile-devel

Hi Volker,

On Sat 21 May 2011 00:19, Volker Grabsch <vog@notjusthosting.com> writes:

> Jan Nieuwenhuizen schrieb:
>>     https://github.com/janneke/gub/blob/guile-2.0/gub/specs/guile.py
>>     https://github.com/janneke/gub/tree/guile-2.0/patches
>
> As far as I can see, you have patched libgc to support pthreads
> under MinGW. You forward-ported those patches from libgc-6.8 to 7.2,
> so I'm wondering why those patches didn't make it into upstream
> (i.e. the official libgc project) during that time. Are there any
> issues with those patches that I should know about?
>
> Also, have you actually offered these patches to upstream? If so,
> what's the URL to their bug tracker, or mailing list archive, where
> this issue has been discussed? I haven't been able to find any such
> information in neither the *.py file not the patch files.

FWIW there should be a new libgc tarball out, if not now, then within
the next few days.

The libgc list is gc@linux.hpl.hp.com.  I have found the libgc
maintainers to be very responsive.  If there is a problem with mingw and
threads that is fixed by Jan's patches, I'm sure they would be happy to
have them.  Who will submit them there, Jan or Volker?

> 2) The struct_timespec / ipv6 / etc. issues
>
> It seems that you solve those issues using an even uglier hack
> than I did. I'm wondering why it is necessary to manipulate the
> config.cache, as providing those variables as ./configure paramters
> worked quite well for me.
>
> Moreover, is this a sensible thing to do anyway? Shouldn't we try
> to fix the configure.ac to make it more portable and to make it
> properly detect those MinGW things in the first place?

I have not looked at the patch, and am away from the internet at the
moment, but patching config.cache isn't really a bad thing, AFAIU.

Here's the deal.  Configure scripts attempt to figure out what features
your system supports by doing configure-time feature checks (not
platform checks).  But if you are cross-compiling, sometimes it doesn't
have all of the information that it needs.  In that case, the configure
script will make an assumption.  When that assumption does not hold for
you, you need to midify the assumption that it's going to make, by
setting a cache variable.

You can set a cache variable on the ./configure command line, or set it
in a config.cache or config.site file.  It doesn't matter which.  In
fact config.site is often the nicest solution, as you don't have to muck
up all of your ./configure invocations.

Hope this helps,

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-04-28 21:03         ` Andy Wingo
@ 2011-06-19 14:42           ` Ludovic Courtès
  0 siblings, 0 replies; 21+ messages in thread
From: Ludovic Courtès @ 2011-06-19 14:42 UTC (permalink / raw)
  To: Andy Wingo; +Cc: bug-guile, guile-devel

Hi!

Andy Wingo <wingo@pobox.com> skribis:

> On Sun 24 Apr 2011 22:22, ludo@gnu.org (Ludovic Courtès) writes:
>
>> Looks good to me.  Could you factor it into an M4 macro, use
>> AC_CACHE_CHECK, and move that to acinclude.m4?
>
> I tried and failed, so I pushed it anyway.  Would you like to do the
> refactoring as a separate commit? :-))  Sorry for being pathetic here
> but it is beyond my autofoo.

Done in commit 10c29ebde574b5bc45df70f313835b0c2e1f3a35.

Ludo’.



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Guile with win32 cross compiling
  2011-06-17  9:03                     ` Andy Wingo
@ 2011-07-01 13:52                       ` Andy Wingo
  0 siblings, 0 replies; 21+ messages in thread
From: Andy Wingo @ 2011-07-01 13:52 UTC (permalink / raw)
  To: Volker Grabsch; +Cc: bug-guile, guile-devel

On Fri 17 Jun 2011 11:03, Andy Wingo <wingo@pobox.com> writes:

> The libgc list is gc@linux.hpl.hp.com.  I have found the libgc
> maintainers to be very responsive.  If there is a problem with mingw and
> threads that is fixed by Jan's patches, I'm sure they would be happy to
> have them.  Who will submit them there, Jan or Volker?

I submitted that patch; we'll see.

Andy
-- 
http://wingolog.org/



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2011-07-01 13:52 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-05 19:43 Guile with win32 cross compiling Mike Gran
2011-04-06  1:38 ` Volker Grabsch
2011-04-06 12:46   ` Ludovic Courtès
  -- strict thread matches above, loose matches on Subject: below --
2011-03-26 22:06 Volker Grabsch
2011-04-01 10:38 ` Andy Wingo
2011-04-01 18:50   ` Volker Grabsch
2011-04-12 11:14     ` Andy Wingo
2011-04-23 16:10       ` Volker Grabsch
2011-04-24 10:42         ` Andy Wingo
2011-05-16 23:01           ` Volker Grabsch
2011-05-20 10:32             ` Andy Wingo
2011-05-20 12:25               ` Volker Grabsch
2011-05-20 12:48                 ` Jan Nieuwenhuizen
2011-05-20 13:25                   ` Andy Wingo
2011-05-20 22:19                   ` Volker Grabsch
2011-06-17  9:03                     ` Andy Wingo
2011-07-01 13:52                       ` Andy Wingo
2011-04-24 20:22       ` Ludovic Courtès
2011-04-28 21:03         ` Andy Wingo
2011-06-19 14:42           ` Ludovic Courtès
2011-03-26 22:04 Volker Grabsch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).