nginx-0.4.0-RELEASE import

    *) Change in internal API: the HTTP modules initialization was moved
       from the init module phase to the HTTP postconfiguration phase.

    *) Change: now the request body is not read beforehand for the
       ngx_http_perl_module: it's required to start the reading using the
       $r->has_request_body method.

    *) Feature: the ngx_http_perl_module supports the DECLINED return code.

    *) Feature: the ngx_http_dav_module supports the incoming "Date" header
       line for the PUT method.

    *) Feature: the "ssi" directive is available inside the "if" block.

    *) Bugfix: a segmentation fault occurred if there was an "index"
       directive with variables and the first index name was without
       variables; the bug had appeared in 0.1.29.
diff --git a/auto/cc/gcc b/auto/cc/gcc
index 96ea865..1b6dbef 100644
--- a/auto/cc/gcc
+++ b/auto/cc/gcc
@@ -182,5 +182,3 @@
 if [ ".$CPP" = "." ]; then
     CPP="$CC -E"
 fi
-
-NGX_PERL_CFLAGS="$CFLAGS"
diff --git a/auto/cc/icc b/auto/cc/icc
index afcabe6..f1f9d3d 100644
--- a/auto/cc/icc
+++ b/auto/cc/icc
@@ -91,6 +91,8 @@
 CFLAGS="$CFLAGS -wd810"
 # parameter was never referenced
 CFLAGS="$CFLAGS -wd869"
+# attribute "unused" is only allowed in a function definition, warning on pTHX_
+CFLAGS="$CFLAGS -wd1301"
 
 # STUB
 # enumerated type mixed with another type
diff --git a/auto/lib/perl/conf b/auto/lib/perl/conf
index 9dbc279..e01f9b6c 100644
--- a/auto/lib/perl/conf
+++ b/auto/lib/perl/conf
@@ -19,9 +19,16 @@
         exit 1;
     fi
 
-    CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
-    # gcc 4.1/4.2
-    CFLAGS=`echo $CFLAGS | sed -e 's/-Wunused-value/-Wno-unused-value/'`
+    NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
+    NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts`
+
+    # gcc 4.1/4.2 warn about unused values in pTHX_
+    NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
+                     | sed -e 's/-Wunused-value/-Wno-unused-value/'`
+    # icc8 warns 'declaration hides parameter "my_perl"' in ENTER and LEAVE
+    NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
+                     | sed -e 's/-wd171/-wd171 -wd1599/'`
+
     ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts`
 
     if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
diff --git a/auto/lib/perl/make b/auto/lib/perl/make
index b7c8cb3..73ad120 100644
--- a/auto/lib/perl/make
+++ b/auto/lib/perl/make
@@ -24,9 +24,8 @@
 	cp -p src/http/modules/perl/Makefile.PL $NGX_OBJS/src/http/modules/perl/
 
 	cd $NGX_OBJS/src/http/modules/perl				\
-		&& NGX_PERL_CFLAGS="$NGX_PERL_CFLAGS $NGX_CC_OPT"	\
+		&& NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT"	\
 			NGX_PCRE=$PCRE					\
-			NGX_ZLIB=$ZLIB					\
 			NGX_OBJS=$NGX_OBJS				\
 		$NGX_PERL Makefile.PL					\
 			LIB=$NGX_PERL_MODULES
diff --git a/auto/make b/auto/make
index f79c3b0..029918c 100644
--- a/auto/make
+++ b/auto/make
@@ -22,6 +22,11 @@
 
 END
 
+if test -n "$NGX_PERL_CFLAGS"; then
+    echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS                   >> $NGX_MAKEFILE
+    echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS                       >> $NGX_MAKEFILE
+fi
+
 if [ "$BMAKE" = wmake ]; then
     echo MAKE = wmake                                         >> $NGX_MAKEFILE
 
@@ -238,23 +243,37 @@
         ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
     else
         ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
+        ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS) "
+        ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)"
     fi
 
-    for ngx_src in $HTTP_SRCS
+    for ngx_source in $HTTP_SRCS
     do
-        ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
+        ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"`
         ngx_obj=`echo $ngx_src \
             | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
                   -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
                   -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
                   -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
 
-        cat << END                                            >> $NGX_MAKEFILE
+        if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then
+
+            cat << END                                        >> $NGX_MAKEFILE
+
+$ngx_obj:	\$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
+	$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
+
+END
+        else
+
+            cat << END                                        >> $NGX_MAKEFILE
 
 $ngx_obj:	\$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
 	$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
 
 END
+
+        fi
      done
 
 fi