diff -ur apache_1.3.20/src/Configure apache_1.3.20-cygwin/src/Configure
--- apache_1.3.20/src/Configure	Thu May 10 14:04:16 2001
+++ apache_1.3.20-cygwin/src/Configure	Thu Jun  7 22:24:01 2001
@@ -840,7 +840,8 @@
 	OSDIR="os/cygwin"
 	CFLAGS="$CFLAGS -DCYGWIN"
 	DEF_WANTHSREGEX=yes
-	LIBS="$LIBS -lcrypt"
+	DBM_LIB="-lgdbm"
+	LIBS="$LIBS -lcrypt $DBM_LIB"
 	;;
     *) # default: Catch systems we don't know about
 	OS='Unknown and unsupported OS'
diff -ur apache_1.3.20/src/helpers/binbuild.sh apache_1.3.20-cygwin/src/helpers/binbuild.sh
--- apache_1.3.20/src/helpers/binbuild.sh	Mon Oct 23 15:48:00 2000
+++ apache_1.3.20-cygwin/src/helpers/binbuild.sh	Thu Jun  7 21:51:55 2001
@@ -9,6 +9,8 @@
 OS=`src/helpers/GuessOS`
 case "x$OS" in
   x*390*) CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most";;
+  *cygwin*) CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most \
+                         --enable-rule=SHARED_CORE --libexecdir=bin";;
       *) CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most --enable-shared=max";;
 esac
 APDIR=`pwd`
diff -ur apache_1.3.20/src/helpers/install.sh apache_1.3.20-cygwin/src/helpers/install.sh
--- apache_1.3.20/src/helpers/install.sh	Fri Dec 10 11:03:20 1999
+++ apache_1.3.20-cygwin/src/helpers/install.sh	Thu Jun  7 22:06:43 2001
@@ -87,7 +87,11 @@
     dst="$dst/`basename $src`"
 fi
 
-#  Add a possible extension (such as ".exe") to src and dst
+#  Check if we need to add an executable extension (such as ".exe") 
+#  on specific OS to src and dst
+if [ -f "$src.exe" ]; then
+  ext=".exe"
+fi
 src="$src$ext"
 dst="$dst$ext"
 
diff -ur apache_1.3.20/src/include/ap_config.h apache_1.3.20-cygwin/src/include/ap_config.h
--- apache_1.3.20/src/include/ap_config.h	Fri Apr  6 03:13:11 2001
+++ apache_1.3.20-cygwin/src/include/ap_config.h	Thu Jun  7 11:03:01 2001
@@ -955,6 +955,12 @@
 #define JMP_BUF jmp_buf
 #define NO_KILLPG
 #define USE_LONGJMP
+#define GDBM_STATIC
+#define HAVE_MMAP 1
+#define USE_MMAP_SCOREBOARD
+#define USE_MMAP_FILES
+#define HAVE_SYSLOG 1
+
 
 #else
 /* Unknown system - Edit these to match */
diff -ur apache_1.3.20/src/main/http_main.c apache_1.3.20-cygwin/src/main/http_main.c
--- apache_1.3.20/src/main/http_main.c	Thu Apr 12 17:49:26 2001
+++ apache_1.3.20-cygwin/src/main/http_main.c	Thu Jun  7 22:26:58 2001
@@ -4412,6 +4412,20 @@
 #endif
 static int hold_off_on_exponential_spawning;
 
+/*
+ * Define the signal that is used to kill off children if idle_count
+ * is greater then ap_daemons_max_free. Usually we will use SIGUSR1
+ * to gracefully shutdown, but unfortunatly some OS will need other 
+ * signals to ensure that the child process is terminated and the 
+ * scoreboard pool is not growing to infinity. This effect has been
+ * seen at least on Cygwin 1.x. -- Stipe Tolj <tolj@wapme-systems.de>
+ */
+#if defined(CYGWIN)
+#define SIG_IDLE_KILL SIGKILL
+#else
+#define SIG_IDLE_KILL SIGUSR1
+#endif
+
 static void perform_idle_server_maintenance(void)
 {
     int i;
@@ -4491,9 +4505,10 @@
     if (idle_count > ap_daemons_max_free) {
 	/* kill off one child... we use SIGUSR1 because that'll cause it to
 	 * shut down gracefully, in case it happened to pick up a request
-	 * while we were counting
+	 * while we were counting. Use the define SIG_IDLE_KILL to reflect
+	 * which signal should be used on the specific OS.
 	 */
-	kill(ap_scoreboard_image->parent[to_kill].pid, SIGUSR1);
+	kill(ap_scoreboard_image->parent[to_kill].pid, SIG_IDLE_KILL);
 	idle_spawn_rate = 1;
     }
     else if (idle_count < ap_daemons_min_free) {

