diff -purN /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/README ./CYGWIN-PATCHES/README
--- /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/README	Thu Jan  1 01:00:00 1970
+++ ./CYGWIN-PATCHES/README	Thu Jul  4 12:07:01 2002
@@ -0,0 +1,59 @@
+Guile
+------------------------------------------
+The GNU extension language and Scheme interpreter.
+
+Runtime requirements:
+  cygwin-1.3.10 or newer
+  libguile14
+
+Build requirements:
+  cygwin-1.3.10 or newer
+  binutils-20011102 or newer
+  gcc-2.95.3-5 or newer
+  autoconf CVS (20020703) or newer,
+    autoconf-devel-2.53a-1 should be ok.
+  automake CVS (20020703) or newer,
+    automake-devel-1.6.1-3 should be ok.
+  libtool CVS (20020703) or newer,
+    libtool-devel-20020502-2 should be ok.
+
+Canonical homepage:
+  http://www.gnu.org/software/guile/
+
+Canonical download:
+  ftp://ftp.gnu.org/pub/gnu/guile/
+  
+------------------------------------
+
+Build instructions:
+
+  unpack guile-1.5.6-1-src.tar.bz2
+    if you use setup to install this src package, it will be
+	 unpacked under /usr/src automatically
+  cd /usr/src
+  DISTDIR=/usr/src ./guile-1.5.6-1.sh
+
+This will create:
+  $DISTDIR/guile/guile-1.5.6-1-orig.tar.bz2
+  $DISTDIR/guile/guile-1.5.6-1-src.tar.bz2
+  $DISTDIR/guile/guile-1.5.6-1.tar.bz2
+  $DISTDIR/guile/guile-doc/guile-doc-1.5.6-1.tar.bz2
+  $DISTDIR/guile/libguile14-dev/libguile14-dev-1.5.6-1.tar.bz2
+  $DISTDIR/guile/libguile14/libguile14-1.5.6-1.tar.bz2
+
+------------------
+
+Port notes:
+
+  Patches with Cygwin compile fixes and cross building fixes have
+  been sent upstream.
+
+  These packages were built on GNU/Linux using cross building and
+  packaging scripts:
+
+      http://lilypond.org/cygwin/cygwin-cross-1.3.10.2.tar.gz
+
+  Jan Nieuwenhuizen
+  janneke@gnu.org
+
+Cygwin port maintained by: Jan Nieuwenhuizen  <janneke@gnu.org> 
diff -purN /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/changelog ./CYGWIN-PATCHES/changelog
--- /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/changelog	Thu Jan  1 01:00:00 1970
+++ ./CYGWIN-PATCHES/changelog	Thu Jul  4 11:29:43 2002
@@ -0,0 +1,9 @@
+guile (1.5.6-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Jan Nieuwenhuizen <janneke@gnu.org>  Thu,  3 Jul 2002 04:28:07 +0200
+
+Local variables:
+mode: debian-changelog
+End:
diff -purN /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/guile-doc.hint ./CYGWIN-PATCHES/guile-doc.hint
--- /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/guile-doc.hint	Thu Jan  1 01:00:00 1970
+++ ./CYGWIN-PATCHES/guile-doc.hint	Thu Jul  4 12:19:13 2002
@@ -0,0 +1,8 @@
+sdesc: "The GNU extension language and Scheme interpreter (documentation)"
+category: doc
+requires: cygwin
+ldesc: "The GNU extension language and Scheme interpreter (documentation)
+This package contains the documentation for guile, including both
+a reference manual (via `info guile'), and a tutorial (via `info
+guile-tut')."
+
diff -purN /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/guile.hint ./CYGWIN-PATCHES/guile.hint
--- /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/guile.hint	Thu Jan  1 01:00:00 1970
+++ ./CYGWIN-PATCHES/guile.hint	Thu Jul  4 12:11:15 2002
@@ -0,0 +1,12 @@
+sdesc: "The GNU extension language and Scheme interpreter (executable)"
+category: interpreters
+requires: cygwin libguile14 
+ldesc: "The GNU extension language and Scheme interpreter (executable)
+Guile, the GNU Ubiquitous Intelligent Language for Extension, is a scheme
+implementation designed for real world programming, supporting a
+rich Unix interface, a module system, and undergoing rapid development.
+
+`guile' is a scheme interpreter that can execute scheme scripts (with a
+#! line at the top of the file), or run as an inferior scheme
+process inside Emacs."
+
diff -purN /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/libguile14-dev.hint ./CYGWIN-PATCHES/libguile14-dev.hint
--- /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/libguile14-dev.hint	Thu Jan  1 01:00:00 1970
+++ ./CYGWIN-PATCHES/libguile14-dev.hint	Thu Jul  4 12:20:28 2002
@@ -0,0 +1,8 @@
+sdesc: "Development headers and static libraries for Guile."
+category: development libs
+requires: cygwin
+ldesc: "Development headers and static libraries for Guile.
+`libguile.h' etc. C headers, aclocal macros, the `guile-snarf' and
+`guile-config' utilities, and static `libguile.a' libraries for Guile,
+the GNU Ubiquitous Intelligent Language for Extension."
+
diff -purN /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/libguile14.hint ./CYGWIN-PATCHES/libguile14.hint
--- /home/fred/usr/src/guile-1.5.6/CYGWIN-PATCHES/libguile14.hint	Thu Jan  1 01:00:00 1970
+++ ./CYGWIN-PATCHES/libguile14.hint	Thu Jul  4 12:17:19 2002
@@ -0,0 +1,7 @@
+sdesc: "The GNU extension language and Scheme interpreter (runtime libraries)"
+category: libs
+requires: cygwin
+ldesc: "The GNU extension language and Scheme interpreter (runtime libraries)
+Guile shared object libraries and the ice-9 scheme module.  Guile is
+the GNU Ubiquitous Intelligent Language for Extension."
+
diff -purN /home/fred/usr/src/guile-1.5.6/am/ChangeLog ./am/ChangeLog
--- /home/fred/usr/src/guile-1.5.6/am/ChangeLog	Sun Mar  3 21:34:07 2002
+++ ./am/ChangeLog	Thu Jul  4 03:28:08 2002
@@ -1,3 +1,8 @@
+2002-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+	* pre-inst-guile (preinstguile): Initialize with
+	$(GUILE_FOR_BUILD) configure parameter.
+
 2002-03-03  Rob Browning  <rlb@defaultvalue.org>
 
 	* .cvsignore: add Makefile and Makefile.in.
diff -purN /home/fred/usr/src/guile-1.5.6/am/pre-inst-guile ./am/pre-inst-guile
--- /home/fred/usr/src/guile-1.5.6/am/pre-inst-guile	Tue Feb 26 12:12:18 2002
+++ ./am/pre-inst-guile	Thu Jul  4 03:25:45 2002
@@ -28,7 +28,7 @@
 
 ## Code:
 
-preinstguile     = $(top_builddir_absolute)/pre-inst-guile
+preinstguile     = $(GUILE_FOR_BUILD)
 preinstguiletool = GUILE="$(preinstguile)" $(top_srcdir)/scripts
 
 ## am/pre-inst-guile ends here
diff -purN /home/fred/usr/src/guile-1.5.6/configure.in ./configure.in
--- /home/fred/usr/src/guile-1.5.6/configure.in	Tue Mar  5 00:24:38 2002
+++ ./configure.in	Thu Jul  4 04:05:56 2002
@@ -20,7 +20,7 @@ dnl  along with GUILE; see the file COPY
 dnl  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 dnl  Boston, MA 02111-1307, USA.
 
-AC_PREREQ(2.50)
+AC_PREREQ(2.53)
 
 AC_INIT
 AC_CONFIG_SRCDIR([Makefile.in])
@@ -51,22 +51,26 @@ AC_ARG_ENABLE(error-on-warning,
      *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
    esac])
 
+
 AC_ARG_ENABLE(debug-freelist,
   [  --enable-debug-freelist include garbage collector freelist debugging code],
   if test "$enable_debug_freelist" = y || test "$enable_debug_freelist" = yes; then
-    AC_DEFINE(GUILE_DEBUG_FREELIST)
+    AC_DEFINE(GUILE_DEBUG_FREELIST, 1,
+      [Define this if you want to debug the free list (helps w/ GC bugs).])
   fi)
 
 AC_ARG_ENABLE(debug-malloc,
   [  --enable-debug-malloc   include malloc debugging code],
   if test "$enable_debug_malloc" = y || test "$enable_debug_malloc" = yes; then
-    AC_DEFINE(GUILE_DEBUG_MALLOC)
+    AC_DEFINE(GUILE_DEBUG_MALLOC, 1,
+      [Define this if you want to debug scm_must_malloc/realloc/free calls.])
   fi)
 
 AC_ARG_ENABLE(guile-debug,
   [  --enable-guile-debug    include internal debugging functions],
   if test "$enable_guile_debug" = y || test "$enable_guile_debug" = yes; then
-    AC_DEFINE(GUILE_DEBUG)
+    AC_DEFINE(GUILE_DEBUG, 1,
+      [Define this to include various undocumented functions used to debug.])
   fi)
 
 AC_ARG_ENABLE(arrays,
@@ -110,6 +114,10 @@ AM_CONDITIONAL(HTMLDOC, test x$htmldoc_e
 AC_ARG_ENABLE(deprecated,
   [  --disable-deprecated    omit deprecated features [no]])
 
+
+AH_TEMPLATE([SCM_DEBUG_DEPRECATED],
+            [Define this if you want to exclude deprecated features.])
+
 if test "$enable_deprecated" = no; then
   AC_DEFINE(SCM_DEBUG_DEPRECATED, 1)
 else
@@ -121,34 +129,17 @@ else
     warn_default=$enable_deprecated
   fi
   AC_DEFINE(SCM_DEBUG_DEPRECATED, 0)
-  AC_DEFINE_UNQUOTED(SCM_WARN_DEPRECATED_DEFAULT, "$warn_default")
+  AC_DEFINE_UNQUOTED(SCM_WARN_DEPRECATED_DEFAULT, "$warn_default",
+  [Define this to control the default warning level for deprecated features.])
 fi
 
 dnl The --disable-debug used to control these two.  But now they are
 dnl a required part of the distribution.
-AC_DEFINE(DEBUG_EXTENSIONS)
-AC_DEFINE(READER_EXTENSIONS)
+AC_DEFINE(DEBUG_EXTENSIONS, 1,
+  [Define if you want support for debugging Scheme programs.])
+AC_DEFINE(READER_EXTENSIONS, 1,
+  [Define if you want support for debugging Scheme programs.])
 
-dnl files which are destined for separate modules.
-
-if test "$enable_arrays" = yes; then
-   LIBOBJS="$LIBOBJS ramap.o unif.o"
-   AC_DEFINE(HAVE_ARRAYS)
-fi
-
-if test "$enable_posix" = yes; then
-   LIBOBJS="$LIBOBJS filesys.o posix.o"
-   AC_DEFINE(HAVE_POSIX)
-fi
-
-if test "$enable_networking" = yes; then
-   LIBOBJS="$LIBOBJS net_db.o socket.o"
-   AC_DEFINE(HAVE_NETWORKING)
-fi
-
-if test "$enable_debug_malloc" = yes; then
-   LIBOBJS="$LIBOBJS debug-malloc.o"
-fi
 
 #--------------------------------------------------------------------
 
@@ -164,11 +155,42 @@ AC_ISC_POSIX
 AC_MINIX
 
 AM_PROG_CC_STDC
+
+## Needed for building DLLs on Cygwin, before AM_PROG_LIBTOOL
+AC_LIBTOOL_WIN32_DLL
 AM_PROG_LIBTOOL
 
 AC_CHECK_PROG(have_makeinfo, makeinfo, yes, no)
 AM_CONDITIONAL(HAVE_MAKEINFO, test "$have_makeinfo" = yes)
 
+dnl files which are destined for separate modules.
+
+if test "$enable_arrays" = yes; then
+   AC_LIBOBJ([ramap])
+   AC_LIBOBJ([unif])
+   AC_DEFINE(HAVE_ARRAYS, 1,
+     [Define this if you want support for arrays and uniform arrays.])
+fi
+
+if test "$enable_posix" = yes; then
+   AC_LIBOBJ([filesys])
+   AC_LIBOBJ([posix])
+   AC_DEFINE(HAVE_POSIX, 1,
+     [Define this if you want support for POSIX system calls in Guile.])
+fi
+
+if test "$enable_networking" = yes; then
+   AC_LIBOBJ([net_db])
+   AC_LIBOBJ([socket])
+   AC_DEFINE(HAVE_NETWORKING, 1,
+     [Define this if you want support for networking in Guile.])
+fi
+
+if test "$enable_debug_malloc" = yes; then
+   AC_LIBOBJ([debug-malloc])
+fi
+
+
 AC_C_CONST
 AC_C_INLINE
 AC_C_BIGENDIAN
@@ -190,7 +212,7 @@ AC_CACHE_CHECK([for long longs], scm_cv_
 			      scm_cv_long_longs=yes,
 			      scm_cv_long_longs=no))
 if test "$scm_cv_long_longs" = yes; then
-  AC_DEFINE(HAVE_LONG_LONGS)
+  AC_DEFINE(HAVE_LONG_LONGS, 1, [Define if the compiler supports long longs.])
   AC_CHECK_SIZEOF(long long)
 fi
 
@@ -230,7 +252,8 @@ use_modules="$withval")
 test -z "$use_modules" && use_modules=yes
 DLPREOPEN=
 if test "$use_modules" != no; then
-  AC_DEFINE(DYNAMIC_LINKING)
+  AC_DEFINE(DYNAMIC_LINKING, 1,
+    [Define if you want support for dynamic linking.])
   if test "$use_modules" = yes; then
     DLPREOPEN="-dlpreopen force"
   else
@@ -263,7 +286,8 @@ AC_DEFUN(GUILE_FUNC_DECLARED, [
 		    guile_cv_func_$1_declared=yes,
 		    guile_cv_func_$1_declared=no))
   if test [x$guile_cv_func_]$1[_declared] = xno; then
-    AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL])
+    AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL], 1,
+      [Define if the operating system supplies $1 without declaring it.])
   fi
 ])
 
@@ -280,13 +304,15 @@ AC_CACHE_CHECK([return type of usleep], 
 		   [guile_cv_func_usleep_return_type=int])])
 case "$guile_cv_func_usleep_return_type" in
   "void" )
-    AC_DEFINE(USLEEP_RETURNS_VOID)
+    AC_DEFINE(USLEEP_RETURNS_VOID, 1,
+      [Define if the system headers declare usleep to return void.])
   ;;
 esac
 
 AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1)
 if test -n "$have_sys_un_h" ; then
-AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS)
+  AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS, 1,
+    [Define if the system supports Unix-domain (file-domain) sockets.])
 fi
 
 AC_CHECK_FUNCS(socketpair getgroups setpwent pause tzset)
@@ -309,7 +335,7 @@ AC_CACHE_VAL(guile_cv_have_h_errno,
 guile_cv_have_h_errno=yes, guile_cv_have_h_errno=no)])
 AC_MSG_RESULT($guile_cv_have_h_errno)
 if test $guile_cv_have_h_errno = yes; then
-  AC_DEFINE(HAVE_H_ERRNO)
+  AC_DEFINE(HAVE_H_ERRNO, 1, [Define if h_errno is declared in netdb.h.])
 fi
 
 AC_MSG_CHECKING(whether uint32_t is defined)
@@ -320,29 +346,39 @@ AC_CACHE_VAL(guile_cv_have_uint32_t,
 		  guile_cv_have_uint32_t=yes, guile_cv_have_uint32_t=no)])
 AC_MSG_RESULT($guile_cv_have_uint32_t)
 if test $guile_cv_have_uint32_t = yes; then
-  AC_DEFINE(HAVE_UINT32_T)
+  AC_DEFINE(HAVE_UINT32_T, 1,
+    [Define if uint32_t typedef is defined when netdb.h is include.])
 fi
 
 AC_MSG_CHECKING(for working IPv6 support)
 AC_CACHE_VAL(guile_cv_have_ipv6,
-[AC_TRY_COMPILE([#include <netinet/in.h>
+[AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <netinet/in.h>
 #include <sys/socket.h>],
 [struct sockaddr_in6 a;  a.sin6_family = AF_INET6;],
 guile_cv_have_ipv6=yes, guile_cv_have_ipv6=no)])
 AC_MSG_RESULT($guile_cv_have_ipv6)
 if test $guile_cv_have_ipv6 = yes; then
-  AC_DEFINE(HAVE_IPV6)
+  AC_DEFINE(HAVE_IPV6, 1, [Define if you want support for IPv6.])
 fi
 
 # included in rfc2553 but not in older implementations, e.g., glibc 2.1.3.
 AC_MSG_CHECKING(whether sockaddr_in6 has sin6_scope_id)
 AC_CACHE_VAL(guile_cv_have_sin6_scope_id,
-[AC_TRY_COMPILE([#include <netinet/in.h>],
+[AC_TRY_COMPILE([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <netinet/in.h>],
 [struct sockaddr_in6 sok;  sok.sin6_scope_id = 0;],
 guile_cv_have_sin6_scope_id=yes, guile_cv_have_sin6_scope_id=no)])
 AC_MSG_RESULT($guile_cv_have_sin6_scope_id)
 if test $guile_cv_have_sin6_scope_id = yes; then
-  AC_DEFINE(HAVE_SIN6_SCOPE_ID)
+  AC_DEFINE(HAVE_SIN6_SCOPE_ID, 1,
+    [Define this if your IPv6 has sin6_scope_id in sockaddr_in6 struct.])
 fi
 
 AC_MSG_CHECKING(whether localtime caches TZ)
@@ -389,7 +425,7 @@ else
 fi])dnl
 AC_MSG_RESULT($guile_cv_localtime_cache)
 if test $guile_cv_localtime_cache = yes; then
-  AC_DEFINE(LOCALTIME_CACHE)
+  AC_DEFINE(LOCALTIME_CACHE, 1, [Define if localtime caches the TZ setting.])
 fi
 
 dnl Test whether system calls are restartable by default on the
@@ -408,15 +444,15 @@ if test "$enable_regex" = yes; then
    if test "$ac_cv_header_regex_h" = yes ||
       test "$ac_cv_header_rxposix_h" = yes ||
       test "$ac_cv_header_rx_rxposix_h" = yes; then
-     GUILE_NAMED_CHECK_FUNC(regcomp, norx, [LIBOBJS="regex-posix.o $LIBOBJS"],
-     [AC_CHECK_LIB(rx, main)
-      GUILE_NAMED_CHECK_FUNC(regcomp, rx, [LIBOBJS="regex-posix.o $LIBOBJS"])]
-     )
+     GUILE_NAMED_CHECK_FUNC(regcomp, norx, [AC_LIBOBJ([regex-posix])],
+       [AC_CHECK_LIB(rx, main)
+        GUILE_NAMED_CHECK_FUNC(regcomp, rx, [AC_LIBOBJ([regex-posix])])])
      dnl The following should not be necessary, but for some reason
      dnl autoheader misses it if we don't include it!
      if test "$ac_cv_func_regcomp_norx" = yes ||
         test "$ac_cv_func_regcomp_rx" = yes; then
-       AC_DEFINE(HAVE_REGCOMP)
+       AC_DEFINE(HAVE_REGCOMP, 1,
+         [This is included as part of a workaround for a autoheader bug.])
      fi
    fi
 fi
@@ -427,7 +463,7 @@ AC_REPLACE_FUNCS(inet_aton putenv strerr
 # explicitly to LIBOBJS to make sure that it is translated to
 # `alloca.lo' for libtool later on.  This can and should be done more cleanly.
 AC_FUNC_ALLOCA
-if test "$ALLOCA" = "alloca.o"; then LIBOBJS="alloca.o $LIBOBJS"; fi
+if test "$ALLOCA" = "alloca.o"; then AC_LIBOBJ([alloca]); fi
 
 AC_CHECK_MEMBERS([struct stat.st_rdev])
 AC_CHECK_MEMBERS([struct stat.st_blksize])
@@ -442,7 +478,8 @@ AC_CACHE_CHECK([for S_ISLNK in sys/stat.
                ac_cv_macro_S_ISLNK=yes,
                ac_cv_macro_S_ISLNK=no)])
 if test $ac_cv_macro_S_ISLNK = yes; then
-  AC_DEFINE(HAVE_S_ISLNK)
+  AC_DEFINE(HAVE_S_ISLNK, 1,
+    [Define this if your system defines S_ISLNK in sys/stat.h.])
 fi
 
 AC_STRUCT_TIMEZONE
@@ -457,7 +494,16 @@ GUILE_STRUCT_UTIMBUF
 AC_TRY_RUN(aux (l) unsigned long l;
 	     { int x; exit (l >= ((unsigned long)&x)); }
 	   main () { int q; aux((unsigned long)&q); },
-	   AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
+	   [AC_DEFINE([SCM_STACK_GROWS_UP], 1,
+              [Define this if a callee's stack frame has a higher address
+               than the caller's stack frame.  On most machines, this is
+               not the case.])],
+           [],
+           [AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in)])
+
+
+AH_TEMPLATE([SCM_SINGLES],
+  [Define this if floats are the same size as longs.])
 
 AC_CACHE_CHECK([whether floats fit in longs], guile_cv_type_float_fits_long,
     [AC_TRY_RUN([main () { exit (sizeof(float) > sizeof(long)); }],
@@ -486,7 +532,9 @@ AC_CACHE_VAL(scm_cv_struct_linger,
 			scm_cv_struct_linger="no"))
 AC_MSG_RESULT($scm_cv_struct_linger)
 if test $scm_cv_struct_linger = yes; then
-	AC_DEFINE(HAVE_STRUCT_LINGER)
+	AC_DEFINE([HAVE_STRUCT_LINGER], 1,
+          [Define this if your system defines struct linger, for use with the
+           getsockopt and setsockopt system calls.])
 fi
 
 
@@ -499,7 +547,8 @@ AC_CACHE_VAL(scm_cv_struct_timespec,
 			scm_cv_struct_timespec="no"))
 AC_MSG_RESULT($scm_cv_struct_timespec)
 if test $scm_cv_struct_timespec = yes; then
-	AC_DEFINE(HAVE_STRUCT_TIMESPEC)
+	AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
+          [Define this if your system defines struct timespec via <time.h>.])
 fi
 
 #--------------------------------------------------------------------
@@ -541,15 +590,16 @@ esac
 ## If we're using threads, bring in some other parts of Guile which
 ## work with them.
 if test "${THREAD_PACKAGE}" != "" ; then
-  AC_DEFINE(USE_THREADS, 1)
+  AC_DEFINE(USE_THREADS, 1, [Define if using any sort of threads.])
 
   ## Include the Guile thread interface in the library...
-  LIBOBJS="$LIBOBJS threads.o"
+  AC_LIBOBJ([threads])
 
   ## ... and tell it which package to talk to.
   case "${THREAD_PACKAGE}" in
     "QT" )
-      AC_DEFINE(USE_COOP_THREADS, 1)
+      AC_DEFINE(USE_COOP_THREADS, 1,
+        [Define if using cooperative multithreading.])
     ;;
     * )
       AC_MSG_ERROR(invalid value for THREAD_PACKAGE: ${THREAD_PACKAGE})
@@ -559,7 +609,7 @@ if test "${THREAD_PACKAGE}" != "" ; then
   ## Bring in scm_internal_select, if appropriate.
   if test $ac_cv_func_gettimeofday = yes &&
      test $ac_cv_func_select = yes; then
-    AC_DEFINE(GUILE_ISELECT, 1)
+    AC_DEFINE(GUILE_ISELECT, 1, [Define to implement scm_internal_select.])
   fi
 
   AC_ARG_ENABLE(linuxthreads,
@@ -568,11 +618,60 @@ if test "${THREAD_PACKAGE}" != "" ; then
 
   ## Workaround for linuxthreads (optionally disabled)
   if test $host_os = linux-gnu -a "$enable_linuxthreads" = yes; then
-    AC_DEFINE(GUILE_PTHREAD_COMPAT, 1)
+    AC_DEFINE(GUILE_PTHREAD_COMPAT, 1,
+      [Define to enable workaround for COOP-linuxthreads compatibility.])
     AC_CHECK_LIB(pthread, main)
   fi
 fi
 
+## Cross building	
+if test "$cross_compiling" = "yes"; then
+  AC_MSG_CHECKING(cc for build)
+  ## /usr/bin/cc still uses wrong assembler
+  ## CC_FOR_BUILD="${CC_FOR_BUILD-/usr/bincc}"
+  CC_FOR_BUILD="${CC_FOR_BUILD-PATH=/usr/bin:$PATH cc}"
+else
+  CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
+fi   
+AC_ARG_WITH(cc-for-build,
+  [  --with-cc-for-build=CC  native C compiler, to be used during build])
+test -n "$with_cc_for_build" && CC_FOR_BUILD="$with_cc_for_build"
+     
+## AC_MSG_CHECKING("if we are cross compiling")
+## AC_MSG_RESULT($cross_compiling)
+if test "$cross_compiling" = "yes"; then
+   AC_MSG_RESULT($CC_FOR_BUILD)
+fi
+
+## No need as yet to be more elaborate
+CCLD_FOR_BUILD="$CC_FOR_BUILD"
+
+AC_SUBST(cross_compiling)
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(CCLD_FOR_BUILD)
+	
+## libtool erroneously calls CC_FOR_BUILD HOST_CC;
+## --HOST is the platform that PACKAGE is compiled for.
+HOST_CC="$CC_FOR_BUILD"
+AC_SUBST(HOST_CC)
+
+if test "$cross_compiling" = "yes"; then
+  AC_MSG_CHECKING(guile for build)
+  GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
+else
+  GUILE_FOR_BUILD='$(top_builddir_absolute)/pre-inst-guile'
+fi   
+AC_ARG_WITH(guile-for-build,
+  [  --with-guile-for-build=CC  native guile executable, to be used during build])
+test -n "$with_guile_for_build" && GUILE_FOR_BUILD="$with_cc_for_build"
+
+## AC_MSG_CHECKING("if we are cross compiling")
+## AC_MSG_RESULT($cross_compiling)
+if test "$cross_compiling" = "yes"; then
+   AC_MSG_RESULT($GUILE_FOR_BUILD)
+fi
+AC_SUBST(GUILE_FOR_BUILD)
+  			
 ## If we're using GCC, ask for aggressive warnings.
 case "$GCC" in
   yes )
@@ -589,11 +688,11 @@ AC_PROG_AWK
 ## If we're creating a shared library (using libtool!), then we'll
 ## need to generate a list of .lo files corresponding to the .o files
 ## given in LIBOBJS.  We'll call it LIBLOBJS.
-LIBLOBJS="`echo ${LIBOBJS} | sed 's/\.o/.lo/g'`"
+LIBLOBJS="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`"
 
 ## We also need to create corresponding .doc and .x files
-EXTRA_DOT_DOC_FILES="`echo ${LIBOBJS} | sed 's/\.o/.doc/g'`"
-EXTRA_DOT_X_FILES="`echo ${LIBOBJS} | sed 's/\.o/.x/g'`"
+EXTRA_DOT_DOC_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.doc ,g;s,\.[[^.]]*$,.doc,'`"
+EXTRA_DOT_X_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.x ,g;s,\.[[^.]]*$,.x,'`"
 
 AC_SUBST(GUILE_MAJOR_VERSION)
 AC_SUBST(GUILE_MINOR_VERSION)
@@ -617,11 +716,13 @@ AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_
 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION)
 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE)
 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE)
+AC_SUBST(LIBGUILE_SRFI_SRFI_4_LTHACK)
 
 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT)
 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION)
 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE)
 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE)
+AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_LTHACK)
 
 #######################################################################
 
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/ChangeLog ./libguile/ChangeLog
--- /home/fred/usr/src/guile-1.5.6/libguile/ChangeLog	Sun Mar  3 02:14:37 2002
+++ ./libguile/ChangeLog	Thu Jul  4 03:27:54 2002
@@ -1,3 +1,14 @@
+2002-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+	* Makefile.am: Override default rule for c-tokenize.$(OBJECT);
+	this should be compiled for BUILD host.
+	Override default rule for
+	guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
+	Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
+
+	* guile.c, iselect.h, net_db.c, posix.c, socket.c: Cygwin compile
+	fixes. 
+
 2002-03-01  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
 	* gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, DOUBLECELL_ALIGNED_P,
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/Makefile.am ./libguile/Makefile.am
--- /home/fred/usr/src/guile-1.5.6/libguile/Makefile.am	Fri Mar  1 19:19:36 2002
+++ ./libguile/Makefile.am	Thu Jul  4 03:27:23 2002
@@ -33,14 +33,33 @@ ETAGS_ARGS = --regex='/SCM_\(GLOBAL_\)?\
 
 lib_LTLIBRARIES = libguile.la
 bin_PROGRAMS = guile
+
 noinst_PROGRAMS = guile_filter_doc_snarfage
+guile_filter_doc_snarfage_SOURCES = c-tokenize.c
+
+## Override default rule; this should be compiled for BUILD host.
+## For some reason, OBJEXT does not include the dot
+c-tokenize.$(OBJEXT): c-tokenize.c
+	if [ "$(cross_compiling)" = "yes" ]; then \
+		$(CC_FOR_BUILD) -c -o $@ $<; \
+	else \
+		$(COMPILE) -c -o $@ $<; \
+	fi
+
+## Override default rule; this should run on BUILD host.
+guile_filter_doc_snarfage$(EXEEXT): $(guile_filter_doc_snarfage_OBJECTS) $(guile_filter_doc_snarfage_DEPENDENCIES) 
+	@rm -f guile_filter_doc_snarfage$(EXEEXT)
+	if [ "$(cross_compiling)" = "yes" ]; then \
+		$(CCLD_FOR_BUILD) -o $@ $(guile_filter_doc_snarfage_OBJECTS); \
+	else \
+		$(LINK) $(guile_filter_doc_snarfage_OBJECTS) $(LDADD) $(LIBS); \
+	fi
+
 
 guile_SOURCES = guile.c
 guile_LDADD = libguile.la
 guile_LDFLAGS = @DLPREOPEN@
 
-guile_filter_doc_snarfage_SOURCES = c-tokenize.c
-
 libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c	    \
     chars.c continuations.c debug.c deprecation.c dynl.c dynwind.c	    \
     environments.c eq.c error.c eval.c evalext.c extensions.c		    \
@@ -195,7 +214,7 @@ SUFFIXES = .x .doc
 .c.doc:
 	-(test -n "${AWK+set}" || AWK="@AWK@"; ${AWK} -f ./guile-func-name-check $<)
 	(./guile-snarf-docs $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $< | \
-	./guile_filter_doc_snarfage --filter-snarfage) > $@ || { rm $@; false; }
+	./guile_filter_doc_snarfage$(EXEEXT) --filter-snarfage) > $@ || { rm $@; false; }
 
 $(DOT_X_FILES) $(EXTRA_DOT_DOC_FILES): snarf.h guile-snarf.in
 
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/guile.c ./libguile/guile.c
--- /home/fred/usr/src/guile-1.5.6/libguile/guile.c	Wed Jun 27 21:30:20 2001
+++ ./libguile/guile.c	Thu Jul  4 03:25:46 2002
@@ -55,7 +55,8 @@
 #include <libltdl/ltdl.h>
 #endif
 
-#ifdef HAVE_WINSOCK2_H
+#if defined (HAVE_WINSOCK2_H) \
+  && !(defined (__CYGWIN32__) || defined (__CYGWIN__))
 #include <winsock2.h>
 #endif
 
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/iselect.h ./libguile/iselect.h
--- /home/fred/usr/src/guile-1.5.6/libguile/iselect.h	Mon Jul 23 22:48:44 2001
+++ ./libguile/iselect.h	Thu Jul  4 03:25:46 2002
@@ -67,7 +67,8 @@
 #include <sys/select.h>
 #endif
 
-#ifdef HAVE_WINSOCK2_H
+#if defined (HAVE_WINSOCK2_H) \
+  && !(defined (__CYGWIN32__) || defined (__CYGWIN__))
 #include <winsock2.h>
 #endif
 
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/net_db.c ./libguile/net_db.c
--- /home/fred/usr/src/guile-1.5.6/libguile/net_db.c	Mon Jul  9 16:24:40 2001
+++ ./libguile/net_db.c	Thu Jul  4 03:25:46 2002
@@ -65,7 +65,8 @@
 
 #include <sys/types.h>
 
-#ifdef HAVE_WINSOCK2_H
+#if defined (HAVE_WINSOCK2_H) \
+  && !(defined (__CYGWIN32__) || defined (__CYGWIN__))
 #include <winsock2.h>
 #else
 #include <sys/socket.h>
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/posix.c ./libguile/posix.c
--- /home/fred/usr/src/guile-1.5.6/libguile/posix.c	Sat Nov 17 20:03:43 2001
+++ ./libguile/posix.c	Thu Jul  4 03:25:46 2002
@@ -95,7 +95,8 @@ extern char *ttyname();
 #ifdef HAVE_IO_H
 #include <io.h>
 #endif
-#ifdef HAVE_WINSOCK2_H
+#if defined (HAVE_WINSOCK2_H) \
+  && !(defined (__CYGWIN32__) || defined (__CYGWIN__))
 #include <winsock2.h>
 #endif
 
diff -purN /home/fred/usr/src/guile-1.5.6/libguile/socket.c ./libguile/socket.c
--- /home/fred/usr/src/guile-1.5.6/libguile/socket.c	Mon Jul  9 16:24:40 2001
+++ ./libguile/socket.c	Thu Jul  4 03:25:46 2002
@@ -61,7 +61,8 @@
 #include <unistd.h>
 #endif
 #include <sys/types.h>
-#ifdef HAVE_WINSOCK2_H
+#if defined (HAVE_WINSOCK2_H) \
+  && !(defined (__CYGWIN32__) || defined (__CYGWIN__))
 #include <winsock2.h>
 #else
 #include <sys/socket.h>
diff -purN /home/fred/usr/src/guile-1.5.6/qt/Makefile.am ./qt/Makefile.am
--- /home/fred/usr/src/guile-1.5.6/qt/Makefile.am	Fri Feb 15 23:11:29 2002
+++ ./qt/Makefile.am	Thu Jul  4 03:53:53 2002
@@ -24,7 +24,7 @@ AUTOMAKE_OPTIONS = gnu
 ## subdirs are for making distributions only.
 SUBDIRS = md time
 
-lib_LTLIBRARIES = @QTHREAD_LTLIBS@
+lib_LTLIBRARIES =
 EXTRA_LTLIBRARIES = libqthreads.la
 
 ## Prevent automake from adding extra -I options
diff -purN /home/fred/usr/src/guile-1.5.6/qt/Makefile.in ./qt/Makefile.in
--- /home/fred/usr/src/guile-1.5.6/qt/Makefile.in	Tue Mar  5 00:43:37 2002
+++ ./qt/Makefile.in	Thu Jul  4 04:02:33 2002
@@ -124,7 +124,7 @@ AUTOMAKE_OPTIONS = gnu
 
 SUBDIRS = md time
 
-lib_LTLIBRARIES = @QTHREAD_LTLIBS@
+lib_LTLIBRARIES =
 EXTRA_LTLIBRARIES = libqthreads.la
 
 DEFS = @DEFS@
diff -purN /home/fred/usr/src/guile-1.5.6/srfi/Makefile.am ./srfi/Makefile.am
--- /home/fred/usr/src/guile-1.5.6/srfi/Makefile.am	Sat Feb 23 23:10:04 2002
+++ ./srfi/Makefile.am	Tue Apr  9 19:26:37 2002
@@ -29,19 +29,21 @@ DEFS = @DEFS@
 INCLUDES = -I.. -I$(srcdir)/..
 
 
-lib_LTLIBRARIES = libguile-srfi-srfi-13-14.la libguile-srfi-srfi-4.la
+lib_LTLIBRARIES = \
+	libguile-srfi-srfi-4-lt-@LIBGUILE_SRFI_SRFI_4_LTHACK@.la \
+	libguile-srfi-srfi-13-14-lt-@LIBGUILE_SRFI_SRFI_13_14_LTHACK@.la
 
 BUILT_SOURCES = srfi-13.x srfi-14.x srfi-4.x
 
-libguile_srfi_srfi_4_la_SOURCES = srfi-4.x srfi-4.c srfi-4.h
-libguile_srfi_srfi_4_la_LIBADD = ../libguile/libguile.la
-libguile_srfi_srfi_4_la_LDFLAGS = -export-dynamic \
+libguile_srfi_srfi_4_lt_@LIBGUILE_SRFI_SRFI_4_LTHACK@_la_SOURCES = srfi-4.x srfi-4.c srfi-4.h
+libguile_srfi_srfi_4_lt_@LIBGUILE_SRFI_SRFI_4_LTHACK@_la_LIBADD = ../libguile/libguile.la
+libguile_srfi_srfi_4_lt_@LIBGUILE_SRFI_SRFI_4_LTHACK@_la_LDFLAGS = -export-dynamic \
   -version-info @LIBGUILE_SRFI_SRFI_4_INTERFACE@
 
-libguile_srfi_srfi_13_14_la_SOURCES = srfi-13.x srfi-13.c srfi-14.x srfi-14.c\
+libguile_srfi_srfi_13_14_lt_@LIBGUILE_SRFI_SRFI_13_14_LTHACK@_la_SOURCES = srfi-13.x srfi-13.c srfi-14.x srfi-14.c\
  srfi-13.h srfi-14.h
-libguile_srfi_srfi_13_14_la_LIBADD = ../libguile/libguile.la
-libguile_srfi_srfi_13_14_la_LDFLAGS = -export-dynamic \
+libguile_srfi_srfi_13_14_lt_@LIBGUILE_SRFI_SRFI_13_14_LTHACK@_la_LIBADD = ../libguile/libguile.la
+libguile_srfi_srfi_13_14_lt_@LIBGUILE_SRFI_SRFI_13_14_LTHACK@_la_LDFLAGS = -export-dynamic \
   -version-info @LIBGUILE_SRFI_SRFI_13_14_INTERFACE@
 
 srfidir = $(datadir)/guile/$(VERSION)/srfi
@@ -65,9 +67,10 @@ GUILE_SNARF = ../libguile/guile-snarf
 
 MKDEP = gcc -M -MG $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 
+snarfcppopts = $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+
 SUFFIXES = .x
 .c.x:
-	$(GUILE_SNARF) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $< > $@ \
-	|| { rm $@; false; }
+	$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
 
 CLEANFILES = *.x
