diff --git a/auto/cc b/auto/cc
index 0fb9632..4365ce6 100644
--- a/auto/cc
+++ b/auto/cc
@@ -31,8 +31,10 @@
 
          have=HAVE_GCC_VARIADIC_MACROS . auto/have
 
+         LINK="\$(CC)"
+
          OBJEXT=o
-         COMPILEONLY="-c "
+         COMPILEONLY="-c"
          OBJOUT="-o "
          BINOUT="-o "
 
@@ -58,8 +60,10 @@
 
          have=HAVE_C99_VARIADIC_MACROS . auto/have
 
+         LINK="\$(CC)"
+
          OBJEXT=o
-         COMPILEONLY="-c "
+         COMPILEONLY="-c"
          OBJOUT="-o "
          BINOUT="-o "
 
@@ -100,11 +104,14 @@
          # disable logo
          CFLAGS="$CFLAGS -nologo"
 
+         LINK="\$(CC)"
+
          # link flags
          CORE_LINK="$CORE_LINK -link"
 
          # msvcrt.dll
          CORE_LINK="$CORE_LINK -nodefaultlib:libcmt"
+         CORE_LIBS="$CORE_LIBS msvcrt.lib"
 
          # static libc
          #CORE_LINK="$CORE_LINK -nodefaultlib:msvcrt"
@@ -115,16 +122,23 @@
          CFLAGS="$CFLAGS -Yd"
          CORE_LINK="$CORE_LINK -debug -debugtype:coff"
 
+         # precompiled headers
+         CORE_DEPS="$CORE_DEPS ngx_config.pch"
+         PCH="ngx_config.pch"
+         BUILDPCH="-Ycngx_config.h"
+         USEPCH="-Yungx_config.h"
+
          OBJEXT=obj
-         COMPILEONLY="-c "
+         COMPILEONLY="-c"
          OBJOUT="-Fo"
          BINOUT="-Fe"
+         BINEXT=.exe
 
          CC_STRONG="$CC -W3 -WX"
     ;;
 
 
-    wcc386)
+    wcl386)
          # Open Watcom 1.0
 
          # optimization
@@ -139,16 +153,18 @@
          CFLAGS="$CFLAGS -oe"
          # disable stack checking calls
          CFLAGS="$CFLAGS -s"
-         # optimize for Pentium Pro
-         #CFLAGS="$CFLAGS -6r"
-         CFLAGS="$CFLAGS -6s"
+         # optimize for Pentium Pro, register-based arguments
+         OWC_OPT="-6r"
+         # optimize for Pentium Pro, stack-based arguments
+         #OWC_OPT="-6s"
+         CFLAGS="$CFLAGS $OWC_OPT"
 
          # warnings
          #CFLAGS="$CFLAGS -w3"
          CFLAGS="$CFLAGS -wx"
 
          # stop on warning
-         #CFLAGS="$CFLAGS -we"
+         CFLAGS="$CFLAGS -we"
 
          # built target is NT
          CFLAGS="$CFLAGS -bt=nt"
@@ -162,13 +178,23 @@
          # quiet
          CFLAGS="$CFLAGS -zq"
 
-         # link traget is NT
+         # precompiled headers
+         CORE_DEPS="$CORE_DEPS $OBJS\\ngx_config.pch"
+         PCH="$OBJS\\ngx_config.pch"
+         BUILDPCH="-fhq=$OBJS\\ngx_config.pch"
+         USEPCH="-fh=$OBJS\\ngx_config.pch"
+
+         LINK="\$(CC)"
+
+         # link flags
          CORE_LINK="$CORE_LINK -l=nt"
 
          OBJEXT=obj
-         COMPILEONLY=
+         COMPILEONLY="-c"
          OBJOUT="-fo"
-         BINOUT="-fo"
+         BINOUT="-fe="
+         BINEXT=.exe
+
          INC_EQ=YES
          MAKE_BS=YES
          MAKE_SL=YES
diff --git a/auto/init b/auto/init
index 03e8a2b..2cc024a 100644
--- a/auto/init
+++ b/auto/init
@@ -9,7 +9,10 @@
 
 CC_WARN=$CC
 
+PCH=NO
+USEPCH=
 
+BINEXT=
 INC_EQ=NO
 MAKE_BS=NO
 MAKE_SL=NO
diff --git a/auto/lib/make b/auto/lib/make
index 8bb32ca3..66568e6 100644
--- a/auto/lib/make
+++ b/auto/lib/make
@@ -1,18 +1,12 @@
 
-if [ "$PLATFORM" != "win32" ]; then
+if [ $MD5 != NO ]; then
+    . auto/lib/md5/make
+fi
 
-    if [ $PCRE != NO ]; then
-        . auto/lib/pcre/make
-    fi
+if [ $ZLIB != NO ]; then
+    . auto/lib/zlib/make
+fi
 
-
-    if [ $MD5 != NO ]; then
-        . auto/lib/md5/make
-    fi
-
-
-    if [ $ZLIB != NO ]; then
-        . auto/lib/zlib/make
-    fi
-
+if [ $PCRE != NO ]; then
+    . auto/lib/pcre/make
 fi
diff --git a/auto/lib/md5/conf b/auto/lib/md5/conf
index 06006e4..3c78783 100644
--- a/auto/lib/md5/conf
+++ b/auto/lib/md5/conf
@@ -12,13 +12,25 @@
 
     CORE_INCS="$CORE_INCS -I $MD5"
 
-    if [ "$PLATFORM" = "win32" ]; then
-        CORE_LIBS="$CORE_LIBS md5.lib"
-        CORE_LINK="$CORE_LINK -libpath:$MD5"
-    else 
-        LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
-        CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
-    fi
+    case $CC in
+
+        cl)
+            LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
+            CORE_LIBS="$CORE_LIBS md5.lib"
+            CORE_LINK="$CORE_LINK -libpath:$MD5"
+        ;;
+
+        wcl386)
+            LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
+            CORE_LIBS="$CORE_LIBS $MD5/md5.lib"
+        ;;
+
+        *)
+            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
+            CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
+        ;;
+
+    esac
 
 else
 
diff --git a/auto/lib/md5/make b/auto/lib/md5/make
index 0b4d927..43d35bf 100644
--- a/auto/lib/md5/make
+++ b/auto/lib/md5/make
@@ -1,24 +1,56 @@
 
-echo "$MD5/libmd5.a:"                                    >> $MAKEFILE
+case $CC in
+
+    cl)
+        makefile=makefile.msvc
+    ;;
+
+    wcl386)
+        makefile=makefile.owc
+    ;;
+
+esac
+
 
 case $PLATFORM in
 
+    win32)
+        echo "$MD5/md5.lib:"                                      >> $MAKEFILE
+    ;;
+
+    *)
+        echo "$MD5/libmd5.a:"                                     >> $MAKEFILE
+    ;;
+
+esac
+
+
+case $PLATFORM in
+
+    win32)
+
+        cp auto/lib/md5/$makefile $MD5
+        echo "	cd $MD5"                                          >> $MAKEFILE
+        echo "	\$(MAKE) -f $makefile OWC_OPT=$OWC_OPT"           >> $MAKEFILE
+        echo "	cd ..\\..\\.."                                    >> $MAKEFILE
+    ;;
+
     SunOS:*:i386)
-        echo "	cd $MD5 && \$(MAKE) x86-solaris"         >> $MAKEFILE
+        echo "	cd $MD5 && \$(MAKE) x86-solaris"                  >> $MAKEFILE
     ;;
 
     *:i386)
-        echo "	cd $MD5 && \$(MAKE) x86-elf"             >> $MAKEFILE
+        echo "	cd $MD5 && \$(MAKE) x86-elf"                      >> $MAKEFILE
     ;;
 
     *)
         if [ $CC = gcc ]; then
-            echo "	cd $MD5 && \$(MAKE) gcc"         >> $MAKEFILE
+            echo "	cd $MD5 && \$(MAKE) gcc"                  >> $MAKEFILE
         else
-            echo "	cd $MD5 && \$(MAKE) cc"          >> $MAKEFILE
+            echo "	cd $MD5 && \$(MAKE) cc"                   >> $MAKEFILE
         fi
     ;;
 
 esac
 
-echo                                                     >> $MAKEFILE
+echo                                                              >> $MAKEFILE
diff --git a/auto/lib/md5/makefile.msvc b/auto/lib/md5/makefile.msvc
index a45fc52..3dbda09 100644
--- a/auto/lib/md5/makefile.msvc
+++ b/auto/lib/md5/makefile.msvc
@@ -1,6 +1,6 @@
 
-all:
-	cl -nologo -c -MT -O2 -Ob1 -Oi -Gs -D MD5_ASM -D L_ENDIAN	\
-		md5_dgst.c md5_one.c
+CFLAGS = -nologo -c -MT -O2 -Ob1 -Oi -Gs -D MD5_ASM -D L_ENDIAN
 
-	link -lib -out:md5.lib md5_dgst.obj md5_one.obj asm/m-win32.obj
+md5.lib:
+	cl $(CFLAGS) md5_dgst.c
+	link -lib -out:md5.lib md5_dgst.obj asm/m-win32.obj
diff --git a/auto/lib/md5/makefile.owc b/auto/lib/md5/makefile.owc
new file mode 100644
index 0000000..f320940
--- /dev/null
+++ b/auto/lib/md5/makefile.owc
@@ -0,0 +1,12 @@
+
+CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s $(OWC_OPT)
+
+md5.lib:
+	wcl386 $(CFLAGS) -bm -dL_ENDIAN md5_dgst.c
+	wlib -n md5.lib md5_dgst.obj
+
+#md5.lib:
+asm:
+	wcl386 $(CFLAGS) -bm -dMD5_ASM -dL_ENDIAN md5_dgst.c
+	wcl386 $(CFLAGS) asm\m-win32.asm
+	wlib -n md5.lib md5_dgst.obj m-win32.obj
diff --git a/auto/lib/pcre/conf b/auto/lib/pcre/conf
index 436bee2..6d4b538 100644
--- a/auto/lib/pcre/conf
+++ b/auto/lib/pcre/conf
@@ -4,37 +4,54 @@
     CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
     CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
 
-    if [ "$PLATFORM" = "win32" ]; then
-        have=HAVE_PCRE . auto/have
-        have=PCRE_STATIC . auto/have
-        CORE_LIBS="$CORE_LIBS pcre.lib"
-        CORE_LINK="$CORE_LINK -libpath:$PCRE"
-    else
-        have=HAVE_PCRE . auto/have
-        CORE_DEPS="$CORE_DEPS $PCRE/.libs/libpcre.a"
-        CORE_LIBS="$CORE_LIBS -L $PCRE/.libs -lpcre"
-    fi
+    case $CC in
+
+        cl)
+            have=HAVE_PCRE . auto/have
+            have=PCRE_STATIC . auto/have
+            CORE_DEPS="$CORE_DEPS $PCRE/pcre.lib"
+            #CORE_DEPS="$PCRE/pcre.lib $CORE_DEPS"
+            CORE_LIBS="$CORE_LIBS pcre.lib"
+            CORE_LINK="$CORE_LINK -libpath:$PCRE"
+        ;;
+
+        wcl386)
+            have=HAVE_PCRE . auto/have
+            have=PCRE_STATIC . auto/have
+            CORE_DEPS="$CORE_DEPS $PCRE/pcre.lib"
+            CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
+        ;;
+
+        *)
+            have=HAVE_PCRE . auto/have
+            CORE_DEPS="$CORE_DEPS $PCRE/.libs/libpcre.a"
+            CORE_LIBS="$CORE_LIBS -L $PCRE/.libs -lpcre"
+        ;;
+
+    esac
 
 else
 
-    ngx_lib_inc="#include <pcre.h>"
+    if [ $PLATFORM != win32 ]; then
+        ngx_lib_inc="#include <pcre.h>"
 
-    ngx_lib="PCRE"
-    ngx_lib_test="pcre *re; pcre_compile(re, 0, NULL, 0, NULL)"
-    ngx_libs=-lpcre
-    . auto/lib/test
+        ngx_lib="PCRE"
+        ngx_lib_test="pcre *re; pcre_compile(re, 0, NULL, 0, NULL)"
+        ngx_libs=-lpcre
+        . auto/lib/test
 
 
-    if [ $ngx_found = yes ]; then
-        have=HAVE_PCRE . auto/have
+        if [ $ngx_found = yes ]; then
+            have=HAVE_PCRE . auto/have
 
-        CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
-        CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
-        CORE_LIBS="$CORE_LIBS $ngx_libs"
+            CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
+            CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
+            CORE_LIBS="$CORE_LIBS $ngx_libs"
 
-        PCRE=YES
-    else
-        PCRE=NO
+            PCRE=YES
+        else
+            PCRE=NO
+        fi
     fi
 
 fi
diff --git a/auto/lib/pcre/make b/auto/lib/pcre/make
index 8366686..6ea086d 100644
--- a/auto/lib/pcre/make
+++ b/auto/lib/pcre/make
@@ -1,7 +1,47 @@
 
-echo "$PCRE/.libs/libpcre.a:"                            >> $MAKEFILE
-echo "	cd $PCRE \\"                                     >> $MAKEFILE
-echo "	&& ./configure --disable-shared \\"              >> $MAKEFILE
-echo "	&& \$(MAKE)"                                     >> $MAKEFILE
-echo                                                     >> $MAKEFILE
+case $CC in
 
+    cl)
+        makefile=makefile.msvc
+    ;;
+
+    wcl386)
+        makefile=makefile.owc
+    ;;
+
+esac
+
+
+case $PLATFORM in
+
+    win32)
+        echo "$PCRE/pcre.lib:"                                    >> $MAKEFILE
+    ;;
+
+    *)
+        echo "$PCRE/.libs/libpcre.a:"                             >> $MAKEFILE
+    ;;
+
+esac
+
+
+case $PLATFORM in
+
+    win32)
+        cp auto/lib/pcre/patch.pcre $PCRE
+        cp auto/lib/pcre/patch.config $PCRE
+        cp auto/lib/pcre/$makefile $PCRE
+        echo "	cd $PCRE"                                         >> $MAKEFILE
+        echo "	\$(MAKE) -f $makefile OWC_OPT=$OWC_OPT"           >> $MAKEFILE
+        echo "	cd ..\\..\\.."                                    >> $MAKEFILE
+    ;;
+
+    *)
+        echo "	cd $PCRE \\"                                      >> $MAKEFILE
+        echo "	&& ./configure --disable-shared \\"               >> $MAKEFILE
+        echo "	&& \$(MAKE)"                                      >> $MAKEFILE
+    ;;
+
+esac
+
+echo                                                              >> $MAKEFILE
diff --git a/auto/lib/pcre/makefile.msvc b/auto/lib/pcre/makefile.msvc
index e5c2aec..0eeb310 100644
--- a/auto/lib/pcre/makefile.msvc
+++ b/auto/lib/pcre/makefile.msvc
@@ -1,18 +1,18 @@
 
-CC =		cl
 CFLAGS =	-O2 -Ob1 -Oi -Gs -MT
-LINK =		link
-
 PCREFLAGS =	-DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
 
 
-all:
-	$(CC) -Fedftables dftables.c
+pcre.lib:
+	patch -o pcre.h pcre.in patch.pcre
+	patch -o config.h config.in patch.config
+
+	cl -Fedftables dftables.c
 
 	dftables > chartables.c
 
-	$(CC) -nologo -c $(CFLAGS) $(PCREFLAGS)				\
+	cl -nologo -c $(CFLAGS) $(PCREFLAGS)				\
 		maketables.c get.c study.c pcre.c
 
-	$(LINK) -lib -out:pcre.lib -verbose:lib				\
+	link -lib -out:pcre.lib -verbose:lib				\
 		maketables.obj get.obj study.obj pcre.obj
diff --git a/auto/lib/pcre/makefile.owc b/auto/lib/pcre/makefile.owc
new file mode 100644
index 0000000..f4244a6
--- /dev/null
+++ b/auto/lib/pcre/makefile.owc
@@ -0,0 +1,14 @@
+
+CFLAGS =	-c -zq -bt=nt -ot -op -oi -oe -s -bm $(OWC_OPT)
+PCREFLAGS =	-DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
+
+
+pcre.lib:
+	patch -o pcre.h pcre.in patch.pcre
+	patch -o config.h config.in patch.config
+
+	wcl386 -zq -bt=nt -l=nt -fe=dftables dftables.c
+	dftables > chartables.c
+
+	wcl386 $(CFLAGS) $(PCREFLAGS) maketables.c get.c study.c pcre.c
+	wlib -n pcre.lib maketables.obj get.obj study.obj pcre.obj
diff --git a/auto/lib/pcre/patch.config b/auto/lib/pcre/patch.config
new file mode 100644
index 0000000..f2c48c2
--- /dev/null
+++ b/auto/lib/pcre/patch.config
@@ -0,0 +1,11 @@
+--- config.in.orig	Thu Aug 21 14:43:07 2003
++++ config.in		Sun Mar  7 02:37:24 2004
+@@ -28,7 +28,7 @@
+ found. */
+ 
+ #define HAVE_STRERROR 0
+-#define HAVE_MEMMOVE  0
++#define HAVE_MEMMOVE 1
+ 
+ /* There are some non-Unix systems that don't even have bcopy(). If this macro
+ is false, an emulation is used. If HAVE_MEMMOVE is set to 1, the value of
diff --git a/auto/lib/pcre/patch.pcre b/auto/lib/pcre/patch.pcre
new file mode 100644
index 0000000..3406548
--- /dev/null
+++ b/auto/lib/pcre/patch.pcre
@@ -0,0 +1,15 @@
+--- pcre.in.orig	Thu Aug 21 14:43:07 2003
++++ pcre.in		Sun Mar  7 02:10:11 2004
+@@ -10,9 +10,9 @@
+ /* The file pcre.h is build by "configure". Do not edit it; instead
+ make changes to pcre.in. */
+ 
+-#define PCRE_MAJOR          @PCRE_MAJOR@
+-#define PCRE_MINOR          @PCRE_MINOR@
+-#define PCRE_DATE           @PCRE_DATE@
++#define PCRE_MAJOR          4
++#define PCRE_MINOR          4
++#define PCRE_DATE           21-August-2003
+ 
+ /* Win32 uses DLL by default */
+ 
diff --git a/auto/lib/zlib/conf b/auto/lib/zlib/conf
index 60fd8d8..a779b21 100644
--- a/auto/lib/zlib/conf
+++ b/auto/lib/zlib/conf
@@ -2,13 +2,25 @@
 if [ $ZLIB != NONE ]; then
     CORE_INCS="$CORE_INCS -I $ZLIB"
 
-    if [ "$PLATFORM" = "win32" ]; then
-        CORE_LIBS="$CORE_LIBS zlib.lib"
-        CORE_LINK="$CORE_LINK -libpath:$ZLIB"
-    else
-        LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
-        CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
-    fi
+    case $CC in
+
+        cl)
+            LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
+            CORE_LIBS="$CORE_LIBS zlib.lib"
+            CORE_LINK="$CORE_LINK -libpath:$ZLIB"
+        ;;
+
+        wcl386)
+            LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
+            CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib"
+        ;;
+
+        *)
+            LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
+            CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
+        ;;
+
+    esac
 
 else
 
diff --git a/auto/lib/zlib/make b/auto/lib/zlib/make
index 78022c3..05b2e86 100644
--- a/auto/lib/zlib/make
+++ b/auto/lib/zlib/make
@@ -1,19 +1,52 @@
 
-echo "$ZLIB/libz.a:"                                     >> $MAKEFILE
+case $CC in
 
-case $PLATFORM in
-
-    *:i386)
-        echo "	cd $ZLIB \\"                             >> $MAKEFILE
-        echo "	&& cp contrib/asm686/match.S . \\"       >> $MAKEFILE
-        echo "	&& CFLAGS=\"-O3 -DASMV\" ./configure \\" >> $MAKEFILE
-        echo "	&& \$(MAKE) OBJA=match.o"                >> $MAKEFILE
+    cl)
+        makefile=makefile.msvc
     ;;
 
-    *)
-        echo "	cd $ZLIB && ./configure && \$(MAKE)"     >> $MAKEFILE
+    wcl386)
+        makefile=makefile.owc
     ;;
 
 esac
 
-echo                                                     >> $MAKEFILE
+
+case $PLATFORM in
+
+    win32)
+        echo "$ZLIB/zlib.lib:"                                    >> $MAKEFILE
+    ;;
+
+    *)
+        echo "$ZLIB/libz.a:"                                      >> $MAKEFILE
+    ;;
+
+esac
+
+
+case $PLATFORM in
+
+    win32)
+
+        cp auto/lib/zlib/$makefile $ZLIB
+        echo "	cd $ZLIB"                                         >> $MAKEFILE
+        echo "	\$(MAKE) -f $makefile OWC_OPT=$OWC_OPT"           >> $MAKEFILE
+        echo "	cd ..\\..\\.."                                    >> $MAKEFILE
+    ;;
+
+
+    *:i386)
+        echo "	cd $ZLIB \\"                                      >> $MAKEFILE
+        echo "	&& cp contrib/asm686/match.S . \\"                >> $MAKEFILE
+        echo "	&& CFLAGS=\"-O3 -DASMV\" ./configure \\"          >> $MAKEFILE
+        echo "	&& \$(MAKE) OBJA=match.o"                         >> $MAKEFILE
+    ;;
+
+    *)
+        echo "	cd $ZLIB && ./configure && \$(MAKE)"              >> $MAKEFILE
+    ;;
+
+esac
+
+echo                                                              >> $MAKEFILE
diff --git a/auto/lib/zlib/makefile.msvc b/auto/lib/zlib/makefile.msvc
new file mode 100644
index 0000000..69f0c18
--- /dev/null
+++ b/auto/lib/zlib/makefile.msvc
@@ -0,0 +1,8 @@
+
+CFLAGS = -nologo -c -MT -O2 -Ob1 -Oi -Gs
+
+zlib.lib:
+	cl $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c
+
+	link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \
+		trees.obj zutil.obj
diff --git a/auto/lib/zlib/makefile.owc b/auto/lib/zlib/makefile.owc
new file mode 100644
index 0000000..3fa0260
--- /dev/null
+++ b/auto/lib/zlib/makefile.owc
@@ -0,0 +1,6 @@
+
+CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(OWC_OPT)
+
+zlib.lib:
+	wcl386 $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c
+	wlib -n zlib.lib adler32.obj crc32.obj deflate.obj trees.obj zutil.obj
diff --git a/auto/make b/auto/make
index 5a019db..c9e672f 100644
--- a/auto/make
+++ b/auto/make
@@ -5,10 +5,31 @@
 
 
 echo "CC = $CC"                                                   > $MAKEFILE
+echo "LINK = $LINK"                                               >> $MAKEFILE
+if [ $CC = wcl386 ]; then
+    echo MAKE = wmake                                             >> $MAKEFILE
+fi
 echo "CFLAGS = $CFLAGS"                                           >> $MAKEFILE
 echo                                                              >> $MAKEFILE
 
 
+if [ $MAKE_SL = YES ]; then
+    echo                                                          >> $MAKEFILE
+fi
+
+all_inc="$CORE_INCS -I $OBJS $HTTP_INCS"
+if [ $INC_EQ = YES ]; then
+    all_inc=`echo $all_inc | sed -e "s/-I /-i=/g"`
+fi
+
+if [ $MAKE_BS = YES ]; then
+    all_inc=`echo $all_inc | sed -e "s/\//\\\\\\/g"`
+fi
+
+echo "ALL_INCS = $all_inc"                                        >> $MAKEFILE
+echo                                                              >> $MAKEFILE
+
+
 # CORE_DEPS
 
 if [ $MAKE_SL = YES ]; then
@@ -96,9 +117,9 @@
 # nginx
 
 if [ $MAKE_SL = YES ]; then
-    echo $ngx_n "nginx:	" $ngx_c                                  >> $MAKEFILE
+    echo $ngx_n "nginx$BINEXT:	" $ngx_c                          >> $MAKEFILE
 else
-    echo "nginx: \\"                                              >> $MAKEFILE
+    echo "nginx$BINEXT: \\"                                       >> $MAKEFILE
 fi
 
 
@@ -140,9 +161,9 @@
 # nginx build
 
 if [ $MAKE_SL = YES ]; then
-    echo $ngx_n "	\$(CC) ${BINOUT}nginx" $ngx_c             >> $MAKEFILE
+    echo $ngx_n "	\$(LINK) ${BINOUT}nginx" $ngx_c           >> $MAKEFILE
 else
-    echo "	\$(CC) ${BINOUT}nginx \\"                         >> $MAKEFILE
+    echo "	\$(LINK) ${BINOUT}nginx \\"                       >> $MAKEFILE
 fi
 
 
@@ -190,7 +211,12 @@
 # ngx_modules.c
 
 deps="\$(CORE_DEPS)"
-args="\$(CFLAGS) \$(CORE_INCS)"
+
+if [ $PCH != NO ]; then
+    args="\$(CFLAGS) $USEPCH \$(ALL_INCS)"
+else
+    args="\$(CFLAGS) $USEPCH \$(CORE_INCS)"
+fi
 
 if [ $MAKE_SL = YES ]; then
     echo "$obj: $NGX_MODULES_C $deps"                             >> $MAKEFILE
@@ -237,7 +263,12 @@
 # http sources
 
 deps="\$(CORE_DEPS) \$(HTTP_DEPS)"
-args="\$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
+
+if [ $PCH != NO ]; then
+    args="\$(CFLAGS) $USEPCH \$(ALL_INCS)"
+else
+    args="\$(CFLAGS) $USEPCH \$(CORE_INCS) \$(HTTP_INCS)"
+fi
 
 for src in $HTTP_SRCS
 do
@@ -262,3 +293,23 @@
         echo                                                      >> $MAKEFILE
     fi
 done
+
+
+# precompiled headers
+
+if [ $PCH != NO ]; then
+    echo "#include <ngx_config.h>" > $OBJS/pch.c
+
+    pch="$PCH:	src/core/ngx_config.h $OS_CONFIG $OBJS/ngx_auto_config.h"
+    src="\$(CC) \$(CFLAGS) $BUILDPCH $COMPILEONLY \$(ALL_INCS)"
+    src="$src $OBJOUT$OBJS/pch.obj $OBJS/pch.c"
+
+    if [ $MAKE_BS = YES ]; then
+        pch=`echo $pch | sed -e "s/\//\\\\\\/g"`
+        src=`echo $src | sed -e "s/\//\\\\\\/g"`
+    fi
+
+    echo "$pch"                                                   >> $MAKEFILE
+    echo "	$src"                                             >> $MAKEFILE
+    echo                                                          >> $MAKEFILE
+fi
diff --git a/auto/os/conf b/auto/os/conf
index 4ae08e8..2a6f99e 100644
--- a/auto/os/conf
+++ b/auto/os/conf
@@ -31,15 +31,13 @@
         CORE_INCS="$WIN32_INCS"
         CORE_DEPS="$WIN32_DEPS"
         CORE_SRCS="$WIN32_SRCS $SELECT_SRCS $IOCP_SRCS"
+        OS_CONFIG="$WIN32_CONFIG"
         EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $IOCP_MODULE"
         EVENT_FOUND=YES
 
         have=HAVE_AIO . auto/have
         have=HAVE_IOCP . auto/have
         CORE_LIBS="$CORE_LIBS ws2_32.lib"
-
-        # msvcrt.dll
-        CORE_LIBS="$CORE_LIBS msvcrt.lib"
     ;;
 
 esac
diff --git a/auto/sources b/auto/sources
index 026a5e0..f744ac5 100644
--- a/auto/sources
+++ b/auto/sources
@@ -148,6 +148,8 @@
             src/os/win32/ngx_os.h \
             src/os/win32/ngx_process_cycle.h"
 
+WIN32_CONFIG=src/os/win32/ngx_win32_config.h
+
 WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \
             src/os/win32/ngx_errno.c \
             src/os/win32/ngx_files.c \
diff --git a/auto/summary b/auto/summary
index 5dacfc1..e0d8b26 100644
--- a/auto/summary
+++ b/auto/summary
@@ -8,6 +8,7 @@
 else
     case $PCRE in
         YES)   echo " + using system PCRE library" ;;
+        NONE)  echo " + PCRE library is not used" ;;
         NO)    echo " + PCRE library is not found" ;;
         *)     echo " + using PCRE library: $PCRE" ;;
     esac
diff --git a/src/core/nginx.c b/src/core/nginx.c
index ef4ceca..5515b90 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -35,7 +35,7 @@
 
 #endif
 
-static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle, char **envp);
+static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle);
 static ngx_int_t ngx_getopt(ngx_master_ctx_t *ctx, ngx_cycle_t *cycle);
 static ngx_int_t ngx_core_module_init(ngx_cycle_t *cycle);
 static char *ngx_set_user(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
@@ -112,7 +112,7 @@
 ngx_int_t     ngx_change_binary;
 
 
-int main(int argc, char *const *argv, char **envp)
+int main(int argc, char *const *argv)
 {
     ngx_int_t          i;
     ngx_log_t         *log;
@@ -145,6 +145,10 @@
     init_cycle.log = log;
     ngx_cycle = &init_cycle;
 
+#if 0
+    /* STUB */ log->log_level = NGX_LOG_DEBUG_ALL;
+#endif
+
     ngx_memzero(&ctx, sizeof(ngx_master_ctx_t));
     ctx.argc = argc;
     ctx.argv = argv;
@@ -172,7 +176,7 @@
         return 1;
     }
 
-    if (ngx_add_inherited_sockets(&init_cycle, envp) == NGX_ERROR) {
+    if (ngx_add_inherited_sockets(&init_cycle) == NGX_ERROR) {
         return 1;
     }
 
@@ -256,49 +260,48 @@
 }
 
 
-static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle, char **envp)
+static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle)
 {
-    char                *p, *v;
+    char                *p, *v, *inherited;
     ngx_socket_t         s;
     ngx_listening_t     *ls;
 
-    for ( /* void */ ; *envp; envp++) {
-        if (ngx_strncmp(*envp, NGINX_VAR, NGINX_VAR_LEN) != 0) {
-            continue;
-        }
+    inherited = getenv(NGINX_VAR);
 
-        ngx_log_error(NGX_LOG_INFO, cycle->log, 0,
-                      "using inherited sockets from \"%s\"", *envp);
-
-        ngx_init_array(cycle->listening, cycle->pool,
-                       10, sizeof(ngx_listening_t), NGX_ERROR);
-
-        for (p = *envp + NGINX_VAR_LEN, v = p; *p; p++) {
-            if (*p == ':' || *p == ';') {
-                s = ngx_atoi(v, p - v);
-                if (s == NGX_ERROR) {
-                    ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
-                                  "invalid socket number \"%s\" "
-                                  "in NGINX enviroment variable, "
-                                  "ignoring the rest of the variable", v);
-                    break;
-                }
-                v = p + 1;
-
-                if (!(ls = ngx_push_array(&cycle->listening))) {
-                    return NGX_ERROR;
-                }
-
-                ls->fd = s;
-            }
-        }
-
-        ngx_inherited = 1;
-
-        return ngx_set_inherited_sockets(cycle);
+    if (inherited == NULL) {
+        return NGX_OK;
     }
 
-    return NGX_OK;
+    ngx_log_error(NGX_LOG_INFO, cycle->log, 0,
+                  "using inherited sockets from \"%s\"", inherited);
+
+    ngx_init_array(cycle->listening, cycle->pool,
+                   10, sizeof(ngx_listening_t), NGX_ERROR);
+
+    for (p = inherited, v = p; *p; p++) {
+        if (*p == ':' || *p == ';') {
+            s = ngx_atoi(v, p - v);
+            if (s == NGX_ERROR) {
+                ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
+                              "invalid socket number \"%s\" in "
+                              NGINX_VAR " enviroment variable, "
+                              "ignoring the rest of the variable", v);
+                break;
+            }
+
+        v = p + 1;
+
+        if (!(ls = ngx_push_array(&cycle->listening))) {
+                return NGX_ERROR;
+        }
+
+            ls->fd = s;
+        }
+    }
+
+    ngx_inherited = 1;
+
+    return ngx_set_inherited_sockets(cycle);
 }
 
 
@@ -314,17 +317,19 @@
     ctx.name = "new binary process";
     ctx.argv = argv;
 
-    var = ngx_alloc(NGINX_VAR_LEN
-                            + cycle->listening.nelts * (NGX_INT32_LEN + 1) + 1,
+    var = ngx_alloc(sizeof(NGINX_VAR)
+                            + cycle->listening.nelts * (NGX_INT32_LEN + 1) + 2,
                     cycle->log);
 
-    p = ngx_cpymem(var, NGINX_VAR, NGINX_VAR_LEN);
+    p = ngx_cpymem(var, NGINX_VAR "=", sizeof(NGINX_VAR));
 
     ls = cycle->listening.elts;
     for (i = 0; i < cycle->listening.nelts; i++) {
         p += ngx_snprintf(p, NGX_INT32_LEN + 2, "%u;", ls[i].fd);
     }
 
+    ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0, "inherited: %s", var);
+
     env[0] = var;
     env[1] = NULL;
     ctx.envp = (char *const *) &env;
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 6680de1..8703688 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,8 +8,7 @@
 #define NGINX_NEW_PID_EXT  ".newbin"
 #define NGINX_NEW_PID      NGINX_PID NGINX_NEW_PID_EXT
 
-#define NGINX_VAR          "NGINX="
-#define NGINX_VAR_LEN      (sizeof(NGINX_VAR) - 1)
+#define NGINX_VAR          "NGINX"
 
 extern ngx_module_t        ngx_core_module;
 
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index 8a85873..54fd0f9 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -78,7 +78,7 @@
 
     /* TODO: tries configurable */
 
-    for (tries = 10; tries; tries--) {
+    for (tries = /* STUB */ 1; tries; tries--) {
         failed = 0;
 
         /* for each listening socket */
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 3827c0d..7fcc679 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -227,9 +227,13 @@
     }
 
 #if (WIN32)
+#if 0
     /* TODO: TEST */
+fprintf(stderr, "BEFORE\n");
     CloseHandle(GetStdHandle(STD_ERROR_HANDLE));
     SetStdHandle(STD_ERROR_HANDLE, cycle->log->file->fd);
+fprintf(stderr, "AFTER\n");
+#endif
 #else
     if (dup2(cycle->log->file->fd, STDERR_FILENO) == NGX_ERROR) {
         ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c
index e0a042c..2056fd6 100644
--- a/src/event/modules/ngx_iocp_module.c
+++ b/src/event/modules/ngx_iocp_module.c
@@ -245,7 +245,7 @@
         ev->available = bytes;
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0,
-                       "iocp event handler: %08x" PTR_FMT, ev->event_handler);
+                       "iocp event handler: " PTR_FMT, ev->event_handler);
 
         ev->event_handler(ev);
     }
diff --git a/src/http/modules/ngx_http_gzip_filter.c b/src/http/modules/ngx_http_gzip_filter.c
index 9cf377e..b68ca31 100644
--- a/src/http/modules/ngx_http_gzip_filter.c
+++ b/src/http/modules/ngx_http_gzip_filter.c
@@ -549,9 +549,9 @@
 
 static void ngx_http_gzip_filter_free(void *opaque, void *address)
 {
+#if 0
     ngx_http_gzip_ctx_t *ctx = opaque;
 
-#if 0
     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ctx->request->connection->log, 0,
                    "gzip free: %X", address);
 #endif
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 20c7a55..e717a6a 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -844,13 +844,16 @@
 {
     char                      *rv;
     ngx_int_t                  m;
-    ngx_str_t                 *value, err;
+    ngx_str_t                 *value;
     ngx_http_module_t         *module;
     ngx_conf_t                 pvcf;
     ngx_http_conf_ctx_t       *ctx, *pvctx;
     ngx_http_core_srv_conf_t  *cscf;
     ngx_http_core_loc_conf_t  *clcf, **clcfp;
+#if (HAVE_PCRE)
+    ngx_str_t                  err;
     char                       errstr[NGX_MAX_CONF_ERRSTR];
+#endif
 
     if (!(ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)))) {
         return NGX_CONF_ERROR;
diff --git a/src/http/ngx_http_log_handler.c b/src/http/ngx_http_log_handler.c
index b34bd1b..f2ac5a3 100644
--- a/src/http/ngx_http_log_handler.c
+++ b/src/http/ngx_http_log_handler.c
@@ -95,9 +95,6 @@
 static ngx_str_t http_access_log = ngx_string("access.log");
 
 
-static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
-                          "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-
 static ngx_str_t ngx_http_combined_fmt =
     ngx_string("%addr - - [%time] \"%request\" %status %apache_length "
                "\"%{Referer}i\" \"%{User-Agent}i\"");
diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c
index 8ffef52..7b26d6b 100644
--- a/src/os/win32/ngx_process_cycle.c
+++ b/src/os/win32/ngx_process_cycle.c
@@ -25,4 +25,22 @@
 
 void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
 {
+    ngx_int_t  i;
+
+    ngx_init_temp_number();
+
+    for (i = 0; ngx_modules[i]; i++) {
+        if (ngx_modules[i]->init_process) {
+            if (ngx_modules[i]->init_process(cycle) == NGX_ERROR) {
+                /* fatal */
+                exit(2);
+            }
+        }
+    }
+
+    for ( ;; ) {
+        ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
+
+        ngx_process_events(cycle->log);
+    }
 }
diff --git a/src/os/win32/ngx_socket.h b/src/os/win32/ngx_socket.h
index 8623103..ec519c3 100644
--- a/src/os/win32/ngx_socket.h
+++ b/src/os/win32/ngx_socket.h
@@ -35,6 +35,62 @@
 #define ngx_close_socket_n  "closesocket()"
 
 
+#ifndef WSAID_ACCEPTEX
+
+typedef BOOL (PASCAL FAR * LPFN_ACCEPTEX)(
+    IN SOCKET sListenSocket,
+    IN SOCKET sAcceptSocket,
+    IN PVOID lpOutputBuffer,
+    IN DWORD dwReceiveDataLength,
+    IN DWORD dwLocalAddressLength,
+    IN DWORD dwRemoteAddressLength,
+    OUT LPDWORD lpdwBytesReceived,
+    IN LPOVERLAPPED lpOverlapped
+    );
+
+#define WSAID_ACCEPTEX \
+        {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+#endif
+
+
+#ifndef WSAID_GETACCEPTEXSOCKADDRS
+
+typedef VOID (PASCAL FAR * LPFN_GETACCEPTEXSOCKADDRS)(
+    IN PVOID lpOutputBuffer,
+    IN DWORD dwReceiveDataLength,
+    IN DWORD dwLocalAddressLength,
+    IN DWORD dwRemoteAddressLength,
+    OUT struct sockaddr **LocalSockaddr,
+    OUT LPINT LocalSockaddrLength,
+    OUT struct sockaddr **RemoteSockaddr,
+    OUT LPINT RemoteSockaddrLength
+    );
+
+#define WSAID_GETACCEPTEXSOCKADDRS \
+        {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+#endif
+
+
+#ifndef LPFN_TRANSMITFILE
+
+typedef BOOL (PASCAL FAR * LPFN_TRANSMITFILE)(
+    IN SOCKET hSocket,
+    IN HANDLE hFile,
+    IN DWORD nNumberOfBytesToWrite,
+    IN DWORD nNumberOfBytesPerSend,
+    IN LPOVERLAPPED lpOverlapped,
+    IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
+    IN DWORD dwReserved
+    );
+
+#define WSAID_TRANSMITFILE \
+        {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+#endif
+
+
 extern LPFN_ACCEPTEX              acceptex;
 extern LPFN_GETACCEPTEXSOCKADDRS  getacceptexsockaddrs;
 extern LPFN_TRANSMITFILE          transmitfile;
diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h
index b1d7d57..38cca91 100644
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -7,13 +7,9 @@
 #define STRICT
 #define WIN32_LEAN_AND_MEAN
 
-#ifdef __WATCOMC__
-#pragma disable_message(107)
-#endif
-
 /*
  * we need to include windows.h explicity before winsock2.h because
- * warning 4201 is enabled in windows.h
+ * the warning 4201 is enabled in windows.h
  */
 #include <windows.h>
 
@@ -35,19 +31,16 @@
 #pragma warning(disable:4100)
 
 /* STUB */
+#if 0
 #pragma warning(disable:4127)
 #endif
+#endif
 
 
 #ifdef __WATCOMC__
-#pragma enable_message(107)
-#if 0
-/* Symbol 'ngx_rbtree_min' has been defined, but not referenced */
+/* disable "Symbol 'ngx_rbtree_min' has been defined, but not referenced" */
 #pragma disable_message(202)
 #endif
-/* No prototype found for 'stricmp' */
-#pragma disable_message(301)
-#endif
 
 #include <ngx_auto_config.h>
 
diff --git a/src/os/win32/ngx_win32_init.c b/src/os/win32/ngx_win32_init.c
index aaeca21..c4ffc11 100644
--- a/src/os/win32/ngx_win32_init.c
+++ b/src/os/win32/ngx_win32_init.c
@@ -17,6 +17,13 @@
 };
 
 
+typedef struct {
+    WORD  wServicePackMinor;
+    WORD  wSuiteMask;
+    BYTE  wProductType;
+} ngx_osviex_stub_t;
+
+
 /* Should these pointers be per protocol ? */
 LPFN_ACCEPTEX              acceptex;
 LPFN_GETACCEPTEXSOCKADDRS  getacceptexsockaddrs;
@@ -29,11 +36,12 @@
 
 int ngx_os_init(ngx_log_t *log)
 {
-    u_int            osviex;
-    DWORD            bytes;
-    SOCKET           s;
-    WSADATA          wsd;
-    OSVERSIONINFOEX  osvi;
+    u_int               osviex;
+    DWORD               bytes;
+    SOCKET              s;
+    WSADATA             wsd;
+    OSVERSIONINFOEX     osvi;
+    ngx_osviex_stub_t  *osviex_stub;
 
     /* get Windows version */
 
@@ -75,17 +83,16 @@
         ngx_win32_version += osvi.wServicePackMajor * 10
                              + osvi.wServicePackMinor;
 
-        ngx_log_error(NGX_LOG_INFO, log, 0,
-                      "OS: %u build:%u, \"%s\", suite:%x, type:%u",
-                      ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
-                      osvi.wReserved[0], osvi.wReserved[1]);
+        /*
+         * the MSVC 6.0 SP2 defines wSuiteMask and wProductType
+         * as WORD wReserved[2]
+         */
+        osviex_stub = (ngx_osviex_stub_t *) &osvi.wServicePackMinor;
 
-#if 0
         ngx_log_error(NGX_LOG_INFO, log, 0,
                       "OS: %u build:%u, \"%s\", suite:%x, type:%u",
                       ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
-                      osvi.wSuiteMask, osvi.wProductType);
-#endif
+                      osviex_stub->wSuiteMask, osviex_stub->wProductType);
 
     } else {
         if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
@@ -123,6 +130,10 @@
         return NGX_ERROR;
     }
 
+    if (ngx_win32_version < NGX_WIN_NT) {
+        return NGX_OK;
+    }
+
     /* get AcceptEx(), GetAcceptExSockAddrs() and TransmitFile() addresses */
 
     s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0);
diff --git a/src/os/win32/ngx_wsarecv.c b/src/os/win32/ngx_wsarecv.c
index 2de1110..040adc4 100644
--- a/src/os/win32/ngx_wsarecv.c
+++ b/src/os/win32/ngx_wsarecv.c
@@ -64,7 +64,7 @@
     rev = c->read;
 
     if (!rev->ready) {
-        ngx_log_error(NGX_LOG_ALERT, rev->log, 0, "second wsa post");
+        ngx_log_error(NGX_LOG_ALERT, c->log, 0, "second wsa post");
         return NGX_AGAIN;
     }
 
