]> granicus.if.org Git - apache/blobdiff - Makefile.win
mod_ssl: follow up to r1868645.
[apache] / Makefile.win
index 973765eefbebb5f0e53445b22bf410c875a2f606..ace210287c31a3d47d605b5285a77030e4fb3e83 100644 (file)
@@ -1,14 +1,18 @@
 # Makefile for Windows NT and Windows 95/98/2000
 
 # Targets are:
-#   _apacher   - build Apache in Release mode
-#   _apached   - build Apache in Debug mode
-#   installr   - build and install a Release build
-#   installd   - build and install a Debug build
-#   clean      - remove (most) generated files
-#   _cleanr    - remove (most) files generated by a Release build
-#   _cleand    - remove (most) files generated by a Debug build
-#   _browse    - build the browse info file
+#   _buildr     - build Apache in Release mode
+#   _buildd     - build Apache in Debug mode
+#   installr    - build and install a Release build
+#   installd    - build and install a Debug build
+#   clean       - remove (most) generated files
+#   _cleanr     - remove (most) files generated by a Release build
+#   _cleand     - remove (most) files generated by a Debug build
+#   _browse     - build the browse info file
+#   _fixshebang - add proper shebang lines to activate installed 
+#                 printenv files
+#                 Note: _fixshebang must be run separately and is not
+#                 run by any of the above install* targets.
 #
 # The following install defaults may be customized;
 #
 #
 #     DBD_LIST="sqlite3 pgsql oracle mysql freetds"
 #
+# Provide a DBM_LIST argument after configuring LIB and INCLUDE with
+# the SDK paths of the corresponding client support libraries.
+# The sdbm driver is always built in.
+#
+#     DBM_LIST="db gdbm"
+#
 # For example;
 #
 #   nmake -f Makefile.win PORT=80 INSTDIR="d:\Program Files\Apache" installr
@@ -36,7 +46,7 @@
 # so the server root should be given in forward slashes (quoted),
 # preferably with the drive designation!
 
-!IF EXIST("httpd.vcproj") && ([devenv /help > NUL 2>&1] == 0) \
+!IF EXIST("Apache.sln") && ([devenv /help > NUL 2>&1] == 0) \
     && !defined(USEMAK) && !defined(USEDSW)
 USESLN=1
 USEMAK=0
@@ -51,18 +61,32 @@ USEMAK=0
 USEDSW=1
 !ENDIF
 
-default: _apacher
+default: _buildr
 
 !IF ("$(CTARGET)" == "") && ($(USESLN) == 1)
 CTARGET=/build
 !ENDIF
 
-!IF !EXIST("srclib\apr") || !EXIST("srclib\apr-util") || !EXIST("srclib\apr-iconv")
+!IF EXIST("srclib\apr\include\apu.h")
+TLP=Apache-apr2
+UTILDIR=apr
+!ELSEIF !EXIST("srclib\apr") || !EXIST("srclib\apr-util") || !EXIST("srclib\apr-iconv")
 !MESSAGE Please check out or download and unpack the Apache Portability Runtime
 !MESSAGE sources (apr, apr-iconv and apr-util) into your srclib dir.
 !MESSAGE Apache cannot build without these libraries!
 !MESSAGE 
 !ERROR Need srclib\  apr, apr-iconv and apr-util
+!ELSE
+TLP=Apache
+UTILDIR=apr-util
+!ENDIF
+
+!IF !EXIST("srclib\expat") && !EXIST("srclib\apr-util\xml\expat")
+!MESSAGE Please check out or download and unpack the current expat library source
+!MESSAGE under your srclib dir for apr 2.x, or srclib\apr-util\xml\expat for apr 1.x
+!MESSAGE Apache cannot build without this library!
+!MESSAGE 
+!ERROR Need srclib\expat or srclib\apr-util\xml\expat
 !ENDIF
 
 !IF !EXIST("srclib\pcre")
@@ -95,10 +119,10 @@ _tryssl:
        $(MAKE) $(MAKEOPT) -f abs.mak CFG="abs - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..
 !ELSEIF $(USESLN) == 1
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_ssl
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project abs
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_ssl
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project abs
 !ELSE
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "mod_ssl - Win32 $(LONG)" \
                "abs - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
@@ -114,7 +138,33 @@ _tryssl:
        @echo recent version confirmed to build with mod_ssl and ab is 0.9.8d.
        @echo Available from http://www.openssl.org/
 !ENDIF
+#     NOT EXIST("srclib\openssl")
 
+!IF EXIST("srclib\serf")
+
+_tryserf:
+!IF $(USEMAK) == 1
+       cd modules\proxy
+       $(MAKE) $(MAKEOPT) -f mod_serf.mak CFG="mod_serf - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
+!ELSEIF $(USESLN) == 1
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_serf
+!ELSE
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_serf - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
+
+!ELSE
+#     NOT EXIST("srclib\serf")
+
+_tryserf:
+       @echo -----
+       @echo mod_serf will not build unless libserf.dll is built in srclib\serf
+       @echo For purposes of alpha, libserf release 0.3.0 works, but only with
+       @echo http://people.apache.org/~wrowe/fixserf-win32-0.3.0.patch
+
+!ENDIF
+#     NOT EXIST("srclib\serf")
 
 !IF EXIST("srclib\zlib")
 
@@ -124,9 +174,9 @@ _tryzlib:
        $(MAKE) $(MAKEOPT) -f mod_deflate.mak CFG="mod_deflate - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
 !ELSEIF $(USESLN) == 1
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_deflate
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_deflate
 !ELSE
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "mod_deflate - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
 
@@ -135,12 +185,41 @@ _tryzlib:
 
 _tryzlib:
        @echo -----
-       @echo mod_deflate will not build unless zlib is installed in srclib\zlib.  
+       @echo mod_deflate will not build unless zlib is built in srclib\zlib.  
        @echo Version 1.2.1 and later available from http://www.gzip.org/zlib/
        @echo built w/ nmake -f win32/Makefile.msc will satisfy this requirement.
 
 !ENDIF
 
+!IF EXIST("srclib\libxml2")
+
+_tryxml:
+!IF $(USEMAK) == 1
+       cd modules\filters
+       $(MAKE) $(MAKEOPT) -f mod_proxy_html.mak CFG="mod_proxy_html - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       $(MAKE) $(MAKEOPT) -f mod_xml2enc.mak CFG="mod_xml2enc - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
+!ELSEIF $(USESLN) == 1
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_proxy_html
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_xml2enc
+!ELSE
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_proxy_html - Win32 $(LONG)" /NORECURSE $(CTARGET)
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_xml2enc - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
+
+!ELSE
+#     NOT EXIST("srclib\libxml2")
+
+_tryxml:
+       @echo -----
+       @echo mod_proxy_html and mod_xml2enc will not build unless libxml2 is 
+       @echo built in srclib\libxml2. Version 2.7.7 and later available from
+       @echo http://xmlsoft.org/ will satisfy this requirement.
+
+!ENDIF
+
 
 !IF EXIST("srclib\lua")
 
@@ -150,9 +229,9 @@ _trylua:
        $(MAKE) $(MAKEOPT) -f mod_lua.mak CFG="mod_lua - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
 !ELSEIF $(USESLN) == 1
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_lua
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_lua
 !ELSE
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "mod_lua - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
 
@@ -166,20 +245,107 @@ _trylua:
 
 !ENDIF
 
+!IF EXIST("srclib\nghttp2")
 
-_trydbd:
+_trynghttp2:
 !IF $(USEMAK) == 1
-       cd srclib\apr-util\dbd
+       cd modules\http2
+       $(MAKE) $(MAKEOPT) -f mod_http2.mak CFG="mod_http2 - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       $(MAKE) $(MAKEOPT) -f mod_proxy_http2.mak CFG="mod_proxy_http2 - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
+!ELSEIF $(USESLN) == 1
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_http2
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_proxy_http2
+!ELSE
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_http2 - Win32 $(LONG)" /NORECURSE $(CTARGET)
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_proxy_http2 - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
+
+!ELSE
+#     NOT EXIST("srclib\nghttp2")
+
+_trynghttp2:
+       @echo -----
+       @echo mod_http2 will not build unless nghttp2 is installed in srclib\nghttp2.
+       @echo Version 1.0 includes an lib\makefile.msvc that will satisfy this
+       @echo requirement.
+
+!ENDIF
+
+!IF EXIST("srclib\brotli")
+
+_trybrotli:
+!IF $(USEMAK) == 1
+       cd modules\filters
+       $(MAKE) $(MAKEOPT) -f mod_brotli.mak CFG="mod_brotli - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
+!ELSEIF $(USESLN) == 1
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_brotli
+!ELSE
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_brotli - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
+
+!ELSE
+#     NOT EXIST("srclib\brotli")
+
+_trybrotli:
+       @echo -----
+       @echo mod_brotli will not build unless brotli is built in srclib\brotli.  
+       @echo Version 1.0.0 and later available from https://github.com/google/brotli/releases
+       @echo build with:
+       @echo cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
+       @echo nmake
+
+!ENDIF
+
+!IF EXIST("srclib\openssl") && EXIST("srclib\jansson") && EXIST("srclib\curl")
+
+_trymd:
+!IF $(USEMAK) == 1
+       cd modules\md
+       $(MAKE) $(MAKEOPT) $(SSLOPT) -f mod_md.mak CFG="mod_md - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
+!ELSEIF $(USESLN) == 1
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_md
+!ELSE
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_md - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
+
+!ELSE
+#     NOT EXIST("srclib\openssl") && EXIST("srclib\jansson") && EXIST("srclib\curl")
+
+_trymd:
+       @echo -----
+       @echo mod_md not build unless OpenSSL, Jansson and Curl are built in placed
+       @echo in srclib. Example: srclib/openssl, srclib/jansson and srclib/curl
+
+!ENDIF
+
+_trydb:
+!IF $(USEMAK) == 1
+       cd srclib\$(UTILDIR)\dbd
        for %d in (odbc $(DBD_LIST)) do \
          $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\dbm
+       for %d in ($(DBM_LIST) x) do if not %d == x \
+         $(MAKE) $(MAKEOPT) -f apr_dbm_%d.mak CFG="apr_dbm_%d - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..\..
 !ELSEIF $(USESLN) == 1
        for %d in (odbc $(DBD_LIST)) do \
-         devenv Apache.sln /useenv $(CTARGET) $(LONG) /project apr_dbd_%d
+         devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project apr_dbd_%d
+       for %d in ($(DBM_LIST) x) do if not %d == x \
+         devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project apr_dbm_%d
 !ELSE
        @for %d in (odbc $(DBD_LIST)) do \
-         msdev Apache.dsw /USEENV /MAKE \
+         msdev $(TLP).dsw /USEENV /MAKE \
                "apr_dbd_%d - Win32 $(LONG)" /NORECURSE $(CTARGET)
+       @for %d in ($(DBM_LIST) x) do if not %d == x \
+         msdev $(TLP).dsw /USEENV /MAKE \
+               "apr_dbm_%d - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
 
 
@@ -237,10 +403,10 @@ _browse:
          bscmake.exe -nologo -Iu -o Apache.bsc *.sbr
        cd ..
 
-_apacher: 
+_buildr: 
        @$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=R LONG=Release _build
 
-_apached: 
+_buildd: 
        @$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=D LONG=Debug   _build
 
 installr: 
@@ -264,10 +430,16 @@ _cleand:
 
 _build:
        echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
+!IF !EXIST("srclib\apr-util")
+       cd srclib\expat\lib
+        $(MAKE) $(MAKEOPT) -f expat.mak             CFG="expat - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..\..
+!ENDIF
        cd srclib\apr
         $(MAKE) $(MAKEOPT) -f apr.mak             CFG="apr - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f libapr.mak          CFG="libapr - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
+!IF EXIST("srclib\apr-util")
        cd srclib\apr-iconv
         $(MAKE) $(MAKEOPT) -f apriconv.mak  CFG="apriconv - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f libapriconv.mak  CFG="libapriconv - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -292,15 +464,24 @@ _build:
        cd ldap
         $(MAKE) $(MAKEOPT) -f apr_ldap.mak        CFG="apr_ldap - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..
+!ELSE
+       # DBD, DBM components live now in apr
+       cd srclib\apr
+!ENDIF
        cd dbd
          for %d in (odbc $(DBD_LIST)) do \
            $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak   CFG="apr_dbd_%d - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..
+       cd dbm
+         for %d in ($(DBM_LIST) x) do if not %d == x \
+           $(MAKE) $(MAKEOPT) -f apr_dbm_%d.mak   CFG="apr_dbm_%d - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..
        cd ..\..
        cd server
         $(MAKE) $(MAKEOPT) -f gen_test_char.mak   CFG="gen_test_char - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..
         $(MAKE) $(MAKEOPT) -f libhttpd.mak        CFG="libhttpd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f libapreq.mak        CFG="libapreq - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f httpd.mak           CFG="httpd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
 # build ldap prior to authnz_ldap
        cd modules\ldap
@@ -311,6 +492,8 @@ _build:
        cd ..\..
        cd modules\aaa
         $(MAKE) $(MAKEOPT) -f mod_access_compat.mak CFG="mod_access_compat - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_allowhandlers.mak CFG="mod_allowhandlers - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_allowmethods.mak CFG="mod_allowmethods - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_auth_basic.mak  CFG="mod_auth_basic - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_auth_digest.mak CFG="mod_auth_digest - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_auth_form.mak   CFG="mod_auth_form - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -319,6 +502,8 @@ _build:
         $(MAKE) $(MAKEOPT) -f mod_authn_dbd.mak   CFG="mod_authn_dbd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_authn_dbm.mak   CFG="mod_authn_dbm - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_authn_file.mak  CFG="mod_authn_file - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_authn_socache.mak  CFG="mod_authn_socache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_authnz_fcgi.mak CFG="mod_authnz_fcgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_authnz_ldap.mak CFG="mod_authnz_ldap - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_authz_core.mak  CFG="mod_authz_core - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_authz_dbd.mak   CFG="mod_authz_dbd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -328,19 +513,25 @@ _build:
         $(MAKE) $(MAKEOPT) -f mod_authz_owner.mak CFG="mod_authz_owner - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_authz_user.mak  CFG="mod_authz_user - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
+       cd modules\apreq
+        $(MAKE) $(MAKEOPT) -f mod_apreq.mak       CFG="mod_apreq - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
        cd modules\arch\win32
         $(MAKE) $(MAKEOPT) -f mod_isapi.mak       CFG="mod_isapi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..\..
        cd modules\cache
         $(MAKE) $(MAKEOPT) -f mod_cache.mak       CFG="mod_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_cache_disk.mak  CFG="mod_cache_disk - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_cache_socache.mak  CFG="mod_cache_socache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_file_cache.mak  CFG="mod_file_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
-        $(MAKE) $(MAKEOPT) -f mod_disk_cache.mak  CFG="mod_disk_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_socache_dbm.mak CFG="mod_socache_dbm - Win32 $(LONG)" RECURSE=0 $(CTARGET)
 #       $(MAKE) $(MAKEOPT) -f mod_socache_dc.mak  CFG="mod_socache_dc - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_socache_memcache.mak CFG="mod_socache_memcache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_socache_shmcb.mak CFG="mod_socache_shmcb - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_socache_redis.mak CFG="mod_socache_redis - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
        cd modules\core
+        $(MAKE) $(MAKEOPT) -f mod_macro.mak    CFG="mod_macro - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_watchdog.mak    CFG="mod_watchdog - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
        cd modules\cluster
@@ -376,15 +567,25 @@ _build:
        cd ..\..
 !ENDIF
        cd modules\filters
+!IF EXIST("srclib\brotli")
+        $(MAKE) $(MAKEOPT) -f mod_brotli.mak      CFG="mod_brotli - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+!ENDIF
         $(MAKE) $(MAKEOPT) -f mod_buffer.mak      CFG="mod_buffer - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_charset_lite.mak CFG="mod_charset_lite - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_data.mak        CFG="mod_data - Win32 $(LONG)" RECURSE=0 $(CTARGET)
 !IF EXIST("srclib\zlib")
         $(MAKE) $(MAKEOPT) -f mod_deflate.mak     CFG="mod_deflate - Win32 $(LONG)" RECURSE=0 $(CTARGET)
 !ENDIF
         $(MAKE) $(MAKEOPT) -f mod_ext_filter.mak  CFG="mod_ext_filter - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_filter.mak      CFG="mod_filter - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_include.mak     CFG="mod_include - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+!IF EXIST("srclib\libxml2")
+        $(MAKE) $(MAKEOPT) -f mod_proxy_html.mak     CFG="mod_proxy_html - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_xml2enc.mak     CFG="mod_xml2enc - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+!ENDIF
         $(MAKE) $(MAKEOPT) -f mod_ratelimit.mak   CFG="mod_ratelimit - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_reflector.mak   CFG="mod_reflector - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_reqtimeout.mak  CFG="mod_reqtimeout - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_request.mak     CFG="mod_request - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_sed.mak         CFG="mod_sed - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_substitute.mak  CFG="mod_substitute - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -401,6 +602,7 @@ _build:
        cd ..\..
        cd modules\loggers
         $(MAKE) $(MAKEOPT) -f mod_log_config.mak  CFG="mod_log_config - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_log_debug.mak  CFG="mod_log_debug - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_log_forensic.mak CFG="mod_log_forensic - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_logio.mak       CFG="mod_logio - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
@@ -438,10 +640,25 @@ _build:
         $(MAKE) $(MAKEOPT) -f mod_proxy_ajp.mak   CFG="mod_proxy_ajp - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_proxy_balancer.mak  CFG="mod_proxy_balancer - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_proxy_connect.mak CFG="mod_proxy_connect - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_proxy_express.mak CFG="mod_proxy_express - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_proxy_fcgi.mak  CFG="mod_proxy_fcgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_proxy_ftp.mak   CFG="mod_proxy_ftp - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_proxy_hcheck.mak  CFG="mod_proxy_hcheck - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_proxy_http.mak  CFG="mod_proxy_http - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_proxy_scgi.mak  CFG="mod_proxy_scgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_proxy_uwsgi.mak  CFG="mod_proxy_uwsgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_proxy_wstunnel.mak  CFG="mod_proxy_wstunnel - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+!IF EXIST("srclib\serf")
+        $(MAKE) $(MAKEOPT) -f mod_serf.mak        CFG="mod_serf - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+!ENDIF
+       cd ..\..
+# mod_proxy before mod_proxy_http2
+!IF EXIST("srclib\nghttp2")
+       cd modules\http2
+        $(MAKE) $(MAKEOPT) -f mod_http2.mak       CFG="mod_http2 - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_proxy_http2.mak CFG="mod_proxy_http2 - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
+!ENDIF
        cd modules\proxy\balancers
         $(MAKE) $(MAKEOPT) -f mod_lbmethod_bybusyness.mak CFG="mod_lbmethod_bybusyness - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_lbmethod_byrequests.mak CFG="mod_lbmethod_byrequests - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -458,16 +675,25 @@ _build:
         $(MAKE) $(MAKEOPT) -f mod_session_cookie.mak CFG="mod_session_cookie - Win32 $(LONG)" RECURSE=0 $(CTARGET)
         $(MAKE) $(MAKEOPT) -f mod_session_dbd.mak    CFG="mod_session_dbd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
+       cd modules\slotmem
+        $(MAKE) $(MAKEOPT) -f mod_slotmem_plain.mak  CFG="mod_slotmem_plain - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+        $(MAKE) $(MAKEOPT) -f mod_slotmem_shm.mak    CFG="mod_slotmem_shm - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
 !IF EXIST("srclib\openssl")
-       #cd modules\session
-       # $(MAKE) $(MAKEOPT) -f mod_session_crypto.mak CFG="mod_session_crypto - Win32 $(LONG)" RECURSE=0 $(CTARGET)
-       #cd ..\..
+#      cd modules\session
+#       $(MAKE) $(MAKEOPT) -f mod_session_crypto.mak CFG="mod_session_crypto - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+#      cd ..\..
        cd modules\ssl
         $(MAKE) $(MAKEOPT) -f mod_ssl.mak         CFG="mod_ssl - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..\..
        cd support
         $(MAKE) $(MAKEOPT) -f abs.mak             CFG="abs - Win32 $(LONG)" RECURSE=0 $(CTARGET)
        cd ..
+!IF EXIST("srclib\jansson") && EXIST("srclib\curl")
+       cd modules\md
+        $(MAKE) $(MAKEOPT) $(SSLOPT) -f mod_md.mak          CFG="mod_md - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+       cd ..\..
+!ENDIF
 !ENDIF
        cd support
         $(MAKE) $(MAKEOPT) -f ab.mak              CFG="ab - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -496,19 +722,26 @@ _cleand:
 _build:
        echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
 !IFDEF ALL
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project BuildAll
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project BuildAll
 !ELSE
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project BuildBin
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project BuildBin
 !ENDIF
 !IF EXIST("srclib\openssl")
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_ssl
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project abs
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_ssl
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project abs
 !ENDIF
 !IF EXIST("srclib\zlib")
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_deflate
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_deflate
 !ENDIF
 !IF EXIST("srclib\lua")
-       devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_lua
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_lua
+!ENDIF
+!IF EXIST("srclib\libxml2")
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_proxy_html
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_xml2enc
+!ENDIF
+!IF EXIST("srclib\serf")
+       devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_serf
 !ENDIF
 
 !ELSE
@@ -522,47 +755,74 @@ _cleand:
 _build:
        @echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
 !IFDEF ALL
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "BuildAll - Win32 $(LONG)" $(CTARGET)
 !ELSE
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "BuildBin - Win32 $(LONG)" $(CTARGET)
 !ENDIF
 !IF "$(CTARGET)" == "/CLEAN"
+!IF EXIST("srclib\apr-iconv")
        @cd srclib\apr-iconv
        @$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
                BUILD_MODE=$(LONG) BIND_MODE=shared API_SOURCE=.
        @cd ..\..
 !ENDIF
+!ENDIF
 !IF EXIST("srclib\openssl")
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "mod_ssl - Win32 $(LONG)" \
                "abs - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
 !IF EXIST("srclib\zlib")
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "mod_deflate - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
 !IF EXIST("srclib\lua")
-       @msdev Apache.dsw /USEENV /MAKE \
+       @msdev $(TLP).dsw /USEENV /MAKE \
                "mod_lua - Win32 $(LONG)" /NORECURSE $(CTARGET)
 !ENDIF
+!IF EXIST("srclib\libxml2")
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_proxy_html - Win32 $(LONG)" /NORECURSE $(CTARGET)
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_xml2enc - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
+!IF EXIST("srclib\serf")
+       @msdev $(TLP).dsw /USEENV /MAKE \
+               "mod_serf - Win32 $(LONG)" /NORECURSE $(CTARGET)
+!ENDIF
 
 !ENDIF
 
 
 _copybin:
        copy $(LONG)\httpd.$(src_exe)                           "$(inst_exe)" <.y
+       copy $(LONG)\libapreq.$(src_dll)                        "$(inst_dll)" <.y
        copy $(LONG)\libhttpd.$(src_dll)                        "$(inst_dll)" <.y
        copy srclib\apr\$(LONG)\libapr-1.$(src_dll)             "$(inst_dll)" <.y
+!IF EXIST("srclib\apr-util")
        copy srclib\apr-iconv\$(LONG)\libapriconv-1.$(src_dll)  "$(inst_dll)" <.y
        copy srclib\apr-util\$(LONG)\libaprutil-1.$(src_dll)    "$(inst_dll)" <.y
        copy srclib\apr-util\ldap\$(LONG)\apr_ldap-1.$(src_dll) "$(inst_dll)" <.y
+!ENDIF
        for %d in (odbc $(DBD_LIST)) do ( \
-         copy srclib\apr-util\dbd\$(LONG)\apr_dbd_%d-1.$(src_dll) "$(inst_dll)" <.y \
+         copy srclib\$(UTILDIR)\dbd\$(LONG)\apr_dbd_%d-1.$(src_dll) "$(inst_dll)" <.y \
+       )
+       for %d in ($(DBM_LIST) x) do if not %d == x ( \
+         copy srclib\$(UTILDIR)\dbm\$(LONG)\apr_dbm_%d-1.$(src_dll) "$(inst_dll)" <.y \
        )
+!IF EXIST("srclib\serf")
+       copy srclib\serf\$(LONG)\libserf.$(src_dll)             "$(inst_dll)" <.y
+!ENDIF
+!IF "$(SHORT)" == "D"
+       copy srclib\pcre\pcred.$(src_dll)                       "$(inst_dll)" <.y
+!ELSE
        copy srclib\pcre\pcre.$(src_dll)                        "$(inst_dll)" <.y
+!ENDIF 
        copy modules\aaa\$(LONG)\mod_access_compat.$(src_so)    "$(inst_so)" <.y
+       copy modules\aaa\$(LONG)\mod_allowhandlers.$(src_so)    "$(inst_so)" <.y
+       copy modules\aaa\$(LONG)\mod_allowmethods.$(src_so)     "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_auth_basic.$(src_so)       "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_auth_digest.$(src_so)      "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_auth_form.$(src_so)        "$(inst_so)" <.y
@@ -571,6 +831,8 @@ _copybin:
        copy modules\aaa\$(LONG)\mod_authn_dbd.$(src_so)        "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authn_dbm.$(src_so)        "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authn_file.$(src_so)       "$(inst_so)" <.y
+       copy modules\aaa\$(LONG)\mod_authn_socache.$(src_so)    "$(inst_so)" <.y
+       copy modules\aaa\$(LONG)\mod_authnz_fcgi.$(src_so)      "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authnz_ldap.$(src_so)      "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authz_core.$(src_so)       "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authz_dbd.$(src_so)        "$(inst_so)" <.y
@@ -580,14 +842,19 @@ _copybin:
        copy modules\aaa\$(LONG)\mod_authz_host.$(src_so)       "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authz_owner.$(src_so)      "$(inst_so)" <.y
        copy modules\aaa\$(LONG)\mod_authz_user.$(src_so)       "$(inst_so)" <.y
+       copy modules\apreq\$(LONG)\mod_apreq.$(src_so)  "$(inst_so)" <.y
        copy modules\arch\win32\$(LONG)\mod_isapi.$(src_so)     "$(inst_so)" <.y
        copy modules\cache\$(LONG)\mod_cache.$(src_so)          "$(inst_so)" <.y
+       copy modules\cache\$(LONG)\mod_cache_disk.$(src_so)     "$(inst_so)" <.y
+       copy modules\cache\$(LONG)\mod_cache_socache.$(src_so)  "$(inst_so)" <.y
        copy modules\cache\$(LONG)\mod_file_cache.$(src_so)     "$(inst_so)" <.y
-       copy modules\cache\$(LONG)\mod_disk_cache.$(src_so)     "$(inst_so)" <.y
        copy modules\cache\$(LONG)\mod_socache_dbm.$(src_so)    "$(inst_so)" <.y
 #      copy modules\cache\$(LONG)\mod_socache_dc.$(src_so)     "$(inst_so)" <.y
        copy modules\cache\$(LONG)\mod_socache_memcache.$(src_so) "$(inst_so)" <.y
        copy modules\cache\$(LONG)\mod_socache_shmcb.$(src_so)  "$(inst_so)" <.y
+       copy modules\cache\$(LONG)\mod_socache_redis.$(src_so)  "$(inst_so)" <.y
+       copy modules\core\$(LONG)\mod_macro.$(src_so)   "$(inst_so)" <.y
+       copy modules\core\$(LONG)\mod_watchdog.$(src_so)        "$(inst_so)" <.y
        copy modules\cluster\$(LONG)\mod_heartbeat.$(src_so)    "$(inst_so)" <.y
        copy modules\cluster\$(LONG)\mod_heartmonitor.$(src_so) "$(inst_so)" <.y
        copy modules\database\$(LONG)\mod_dbd.$(src_so)         "$(inst_so)" <.y
@@ -604,9 +871,13 @@ _copybin:
        copy modules\examples\$(LONG)\mod_case_filter_in.$(src_so) "$(inst_so)" <.y
        copy modules\examples\$(LONG)\mod_example_hooks.$(src_so)  "$(inst_so)" <.y
        copy modules\examples\$(LONG)\mod_example_ipc.$(src_so)    "$(inst_so)" <.y
+!ENDIF
+!IF EXIST("srclib\brotli")
+       copy modules\filters\$(LONG)\mod_brotli.$(src_so)       "$(inst_so)" <.y
 !ENDIF
        copy modules\filters\$(LONG)\mod_buffer.$(src_so)       "$(inst_so)" <.y
        copy modules\filters\$(LONG)\mod_charset_lite.$(src_so) "$(inst_so)" <.y
+       copy modules\filters\$(LONG)\mod_data.$(src_so) "$(inst_so)" <.y
 !IF EXIST("srclib\zlib")
        copy modules\filters\$(LONG)\mod_deflate.$(src_so)      "$(inst_so)" <.y
 !IF EXIST("srclib\zlib\zlib1.$(src_dll)")
@@ -616,7 +887,16 @@ _copybin:
        copy modules\filters\$(LONG)\mod_ext_filter.$(src_so)   "$(inst_so)" <.y
        copy modules\filters\$(LONG)\mod_filter.$(src_so)       "$(inst_so)" <.y
        copy modules\filters\$(LONG)\mod_include.$(src_so)      "$(inst_so)" <.y
+!IF EXIST("srclib\libxml2")
+       copy modules\filters\$(LONG)\mod_proxy_html.$(src_so)   "$(inst_so)" <.y
+       copy modules\filters\$(LONG)\mod_xml2enc.$(src_so)      "$(inst_so)" <.y
+!IF EXIST("srclib\libxml2\win32\bin.msvc\libxml2.$(src_dll)")
+       copy srclib\libxml2\win32\bin.msvc\libxml2.$(src_dll)                   "$(inst_dll)" <.y
+!ENDIF
+!ENDIF
        copy modules\filters\$(LONG)\mod_ratelimit.$(src_so)    "$(inst_so)" <.y
+       copy modules\filters\$(LONG)\mod_reflector.$(src_so)    "$(inst_so)" <.y
+       copy modules\filters\$(LONG)\mod_reqtimeout.$(src_so)   "$(inst_so)" <.y
        copy modules\filters\$(LONG)\mod_request.$(src_so)      "$(inst_so)" <.y
        copy modules\filters\$(LONG)\mod_sed.$(src_so)          "$(inst_so)" <.y
        copy modules\filters\$(LONG)\mod_substitute.$(src_so)   "$(inst_so)" <.y
@@ -626,8 +906,18 @@ _copybin:
        copy modules\generators\$(LONG)\mod_info.$(src_so)      "$(inst_so)" <.y
        copy modules\generators\$(LONG)\mod_status.$(src_so)    "$(inst_so)" <.y
        copy modules\http\$(LONG)\mod_mime.$(src_so)            "$(inst_so)" <.y
+!IF EXIST("srclib\nghttp2")
+       copy modules\http2\$(LONG)\mod_http2.$(src_so)          "$(inst_so)" <.y
+       copy modules\http2\$(LONG)\mod_proxy_http2.$(src_so)    "$(inst_so)" <.y
+!IF "$(SHORT)" == "D"
+       copy srclib\nghttp2\lib\MSVC_obj\nghttp2d.$(src_dll)                    "$(inst_dll)" <.y
+!ELSE
+       copy srclib\nghttp2\lib\MSVC_obj\nghttp2.$(src_dll)                     "$(inst_dll)" <.y
+!ENDIF
+!ENDIF
        copy modules\ldap\$(LONG)\mod_ldap.$(src_so)            "$(inst_so)" <.y
        copy modules\loggers\$(LONG)\mod_log_config.$(src_so)   "$(inst_so)" <.y
+       copy modules\loggers\$(LONG)\mod_log_debug.$(src_so)    "$(inst_so)" <.y
        copy modules\loggers\$(LONG)\mod_log_forensic.$(src_so) "$(inst_so)" <.y
        copy modules\loggers\$(LONG)\mod_logio.$(src_so)        "$(inst_so)" <.y
 !IF EXIST("srclib\lua")
@@ -645,7 +935,6 @@ _copybin:
        copy modules\mappers\$(LONG)\mod_speling.$(src_so)      "$(inst_so)" <.y
        copy modules\mappers\$(LONG)\mod_userdir.$(src_so)      "$(inst_so)" <.y
        copy modules\mappers\$(LONG)\mod_vhost_alias.$(src_so)  "$(inst_so)" <.y
-       copy modules\mappers\$(LONG)\mod_watchdog.$(src_so)     "$(inst_so)" <.y
        copy modules\metadata\$(LONG)\mod_cern_meta.$(src_so)   "$(inst_so)" <.y
        copy modules\metadata\$(LONG)\mod_env.$(src_so)         "$(inst_so)" <.y
        copy modules\metadata\$(LONG)\mod_expires.$(src_so)     "$(inst_so)" <.y
@@ -661,9 +950,17 @@ _copybin:
        copy modules\proxy\$(LONG)\mod_proxy_ajp.$(src_so)      "$(inst_so)" <.y
        copy modules\proxy\$(LONG)\mod_proxy_balancer.$(src_so) "$(inst_so)" <.y
        copy modules\proxy\$(LONG)\mod_proxy_connect.$(src_so)  "$(inst_so)" <.y
+       copy modules\proxy\$(LONG)\mod_proxy_express.$(src_so)  "$(inst_so)" <.y
        copy modules\proxy\$(LONG)\mod_proxy_fcgi.$(src_so)     "$(inst_so)" <.y
        copy modules\proxy\$(LONG)\mod_proxy_ftp.$(src_so)      "$(inst_so)" <.y
+       copy modules\proxy\$(LONG)\mod_proxy_hcheck.$(src_so)   "$(inst_so)" <.y
        copy modules\proxy\$(LONG)\mod_proxy_http.$(src_so)     "$(inst_so)" <.y
+       copy modules\proxy\$(LONG)\mod_proxy_scgi.$(src_so)     "$(inst_so)" <.y
+       copy modules\proxy\$(LONG)\mod_proxy_uwsgi.$(src_so)    "$(inst_so)" <.y
+       copy modules\proxy\$(LONG)\mod_proxy_wstunnel.$(src_so)         "$(inst_so)" <.y
+!IF EXIST("srclib\serf")
+       copy modules\proxy\$(LONG)\mod_serf.$(src_so)           "$(inst_so)" <.y
+!ENDIF
        copy modules\proxy\balancers\$(LONG)\mod_lbmethod_bybusyness.$(src_so) "$(inst_so)" <.y
        copy modules\proxy\balancers\$(LONG)\mod_lbmethod_byrequests.$(src_so) "$(inst_so)" <.y
        copy modules\proxy\balancers\$(LONG)\mod_lbmethod_bytraffic.$(src_so)  "$(inst_so)" <.y
@@ -674,7 +971,14 @@ _copybin:
        copy modules\session\$(LONG)\mod_session.$(src_so)        "$(inst_so)" <.y
        copy modules\session\$(LONG)\mod_session_cookie.$(src_so) "$(inst_so)" <.y
        copy modules\session\$(LONG)\mod_session_dbd.$(src_so)    "$(inst_so)" <.y
+       copy modules\slotmem\$(LONG)\mod_slotmem_plain.$(src_so)    "$(inst_so)" <.y
+       copy modules\slotmem\$(LONG)\mod_slotmem_shm.$(src_so)    "$(inst_so)" <.y
 !IF EXIST("srclib\openssl")
+!IF EXIST("srclib\jansson") &&  EXIST("srclib\curl")
+       copy modules\md\$(LONG)\mod_md.$(src_so)                "$(inst_so)" <.y
+       -copy srclib\jansson\bin\jansson.$(src_dll)             "$(inst_dll)" <.y
+       -copy srclib\curl\bin\libcurl.$(src_dll)                "$(inst_dll)" <.y
+!ENDIF
 #      copy modules\session\$(LONG)\mod_session_crypto.$(src_so) "$(inst_so)" <.y
        copy modules\ssl\$(LONG)\mod_ssl.$(src_so)              "$(inst_so)" <.y
        -copy srclib\openssl\$(SSLBIN)\libeay32.$(src_dll)      "$(inst_dll)" <.y
@@ -707,7 +1011,9 @@ _install:
        echo A >.A
        -mkdir "$(INSTDIR)"
        -mkdir "$(INSTDIR)\bin"
+!IF EXIST("srclib\apr-util")
        -mkdir "$(INSTDIR)\bin\iconv"
+!ENDIF
        -mkdir "$(INSTDIR)\cgi-bin"
        -mkdir "$(INSTDIR)\conf"
        -mkdir "$(INSTDIR)\conf\extra"
@@ -721,154 +1027,6 @@ _install:
        -mkdir "$(INSTDIR)\lib"
        -mkdir "$(INSTDIR)\logs"
        -mkdir "$(INSTDIR)\modules"
-       -mkdir "$(INSTDIR)\symbols"
-       -mkdir "$(INSTDIR)\symbols\exe"
-       -mkdir "$(INSTDIR)\symbols\dll"
-       -mkdir "$(INSTDIR)\symbols\so"
-       copy ABOUT_APACHE "$(INSTDIR)\ABOUT_APACHE.txt" <.y
-       copy CHANGES      "$(INSTDIR)\CHANGES.txt" <.y
-       copy INSTALL      "$(INSTDIR)\INSTALL.txt" <.y
-       copy LICENSE      "$(INSTDIR)\LICENSE.txt" <.y
-       copy NOTICE       "$(INSTDIR)\NOTICE.txt" <.y
-       copy README       "$(INSTDIR)\README.txt" <.y
-       type << >> "$(INSTDIR)\NOTICE.txt"
-
-Regular expression support is provided by the PCRE library package,
-which is open source software, written by Philip Hazel, and copyright
-by the University of Cambridge, England. The original software is
-available from
-  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
-<<
-       -awk -f <<script1.awk < "srclib\pcre\LICENCE" >> "$(INSTDIR)\LICENSE.txt"
-BEGIN {
-    print "";
-    print "For the pcre.dll component:";
-    print "";
-    while ( getline > 0 ) {
-       if ( $$0 ~ /^End$$/ ) $$0 = "END OF PCRE LICENSE";
-       print $$0;
-   }
-}
-<<
-!IF EXIST("srclib\openssl")
-       -copy srclib\openssl\apps\openssl.cnf "$(INSTDIR)\conf\openssl.cnf" <.y
-       type << >> "$(INSTDIR)\NOTICE.txt"
-
-This binary distribution includes cryptographic software written by
-Eric Young (eay@cryptsoft.com), software written by Tim Hudson 
-(tjh@cryptsoft.com), and software developed by the OpenSSL Project 
-for use in the OpenSSL Toolkit <http://www.openssl.org/>.
-<<
-       -awk -f <<script.awk < "srclib\openssl\LICENSE" >> "$(INSTDIR)\LICENSE.txt"
-BEGIN {
-    print "";
-    print "For the libeay32.dll, ssleay32.dll and openssl.exe components:";
-    print "";
-    while ( getline > 0 ) {
-       print $$0;
-   }
-}
-<<
-       copy << "$(INSTDIR)\OPENSSL-NEWS.txt" <.y
-
- Apache HTTP Server 2.3 Limited OpenSSL Distribution
-
- This binary distribution includes the minimal components of OpenSSL required
- to support mod_ssl for Apache HTTP Server version 2.3 (details are listed 
- in OPENSSL-README.txt.)  For the complete list of CHANGES to this and later 
- versions of OpenSSL, please refer to the definative source,
- <http://www.openssl.org/news/changelog.html>, or see the CHANGES file in the
- full binary or source distribution package from <http://www.openssl.org/>.
-
- These OpenSSL binaries were built for distribution from the U.S. without 
- support for the patented encryption methods IDEA, MDC-2 or RC5.
-
---------------------------------------------------------------------------------
-
-<<
-       -copy "$(INSTDIR)\OPENSSL-NEWS.txt" \
-           + srclib\openssl\NEWS "$(INSTDIR)\OPENSSL-NEWS.txt"
-       copy << "$(INSTDIR)\OPENSSL-README.txt" <.y
-
- Apache HTTP Server 2.3 Limited OpenSSL Distribution
-
- This binary installation of OpenSSL is a limited distribution of the
- files derived from the OpenSSL project:
-
-   LICENSE.txt (includes openssl LICENSE)
-   OPENSSL-NEWS.txt
-   OPENSSL-README.txt
-   conf\openssl.cnf
-   bin\libeay32.dll
-   bin\ssleay32.dll
-   bin\openssl.exe
-
- These are the minimal libraries and tools required to use mod_ssl as 
- distributed with Apache HTTP Server version 2.3.  No library link files, 
- headers or sources are distributed with this binary distribution.  Please 
- refer to the <http://www.openssl.org/> site for complete source or binary 
- distributions.
-
- These OpenSSL binaries were built for distribution from the U.S. without 
- support for the patented encryption methods IDEA, MDC-2 or RC5.
-
- The Apache HTTP Project only supports the binary distribution of these files
- and development of the mod_ssl module.  We cannot provide support assistance
- for using or configuring the OpenSSL package or these modules.  Please refer
- all installation and configuration questions to the appropriate forum,
- such as the user supported lists, <http://httpd.apache.org/userslist.html> 
- the Apache HTTP Server user's list or <http://www.openssl.org/support/> the
- OpenSSL support page.
-
---------------------------------------------------------------------------------
-
-<<
-       -copy "$(INSTDIR)\OPENSSL-README.txt" \
-           + srclib\openssl\README "$(INSTDIR)\OPENSSL-README.txt"
-!ENDIF
-!IF EXIST("srclib\zlib")
-       type << >> "$(INSTDIR)\NOTICE.txt"
-
-This binary distribution of mod_deflate.so includes zlib compression code
-<http://www.gzip.org/zlib/> written by Jean-loup Gailly (jloup@gzip.org)
-and Mark Adler (madler@alumni.caltech.edu) .
-<<
-       -awk -f <<script.awk < "srclib\zlib\README" >> "$(INSTDIR)\LICENSE.txt"
-BEGIN {
-    while ( getline > 0 ) {
-       if ( $$0 ~ /Copyright notice:/ ) {
-           print "";
-           print "For the mod_deflate zlib compression component:";
-           while ( getline > 0 && $$0 !~ /^[^ ]/ ) {
-               print $$0;
-           }
-           exit 0;
-       }
-    }
-    exit 1;
-}
-<<
-!ENDIF
-!IF EXIST("srclib\lua")
-       type << >> "$(INSTDIR)\NOTICE.txt"
-
-This binary distribution of mod_lua.so includes the Lua language, 
-developed at Lua.org, a laboratory of the Department of Computer Science 
-of PUC-Rio (the Pontifical Catholic University of Rio de Janeiro in Brazil).
-For complete information, visit Lua's web site at http://www.lua.org/
-<<
-       -awk -f <<script.awk < "srclib\lua\COPYRIGHT" >> "$(INSTDIR)\LICENSE.txt"
-BEGIN {
-    print "";
-    print "For the mod_lua language component:";
-    print "";
-    while ( getline > 0 && $$0 !~ /end of COPYRIGHT/ ) {
-       print $$0;
-    }
-    exit 0;
-}
-<<
-!ENDIF
        $(MAKE) $(MAKEOPT) -f Makefile.win SHORT=$(SHORT) LONG=$(LONG) \
                _copybin src_exe=exe src_dll=dll src_so=so             \
                inst_exe="$(INSTDIR)\bin"                              \
@@ -879,36 +1037,32 @@ BEGIN {
                inst_exe="$(INSTDIR)\bin"                              \
                inst_dll="$(INSTDIR)\bin"                              \
                inst_so="$(INSTDIR)\modules"
-       cd srclib\apr-iconv
+!IF EXIST("srclib\apr-util")
+       cd srclib\apr-iconv
        $(MAKE) $(MAKEOPT) -f build\modules.mk.win install \
                BUILD_MODE=$(LONG) BIND_MODE=shared API_SOURCE=. \
                INSTALL_DIR="$(INSTDIR)\bin\iconv"
        cd ..\..
+!ENDIF
        copy docs\cgi-examples\printenv "$(INSTDIR)\cgi-bin\printenv.pl" <.y
-       -awk -f <<script.awk "docs/cgi-examples/printenv" > "$(INSTDIR)\cgi-bin\printenv.pl"
-    BEGIN { 
-       if ( "perl -e \"print $$^X;\"" | getline perlroot ) {
-           gsub( /\\/, "/", perlroot );
-           print "#!" perlroot;
-       }
-    }
-    {
-       if ( $$0 !~ /^#!/ ) {
-           print $$0;
-       }
-    }
-<<
+       copy docs\cgi-examples\printenv.vbs "$(INSTDIR)\cgi-bin\printenv.vbs" <.y
+       copy docs\cgi-examples\printenv.wsf "$(INSTDIR)\cgi-bin\printenv.wsf" <.y
        xcopy docs\error        "$(INSTDIR)\error" /s /d < .a
        xcopy docs\docroot      "$(INSTDIR)\htdocs" /d < .a
        xcopy docs\icons        "$(INSTDIR)\icons" /s /d < .a
        xcopy docs\manual       "$(INSTDIR)\manual" /s /d < .a
        for %f in ( \
+               srclib\expat\lib\expat.h \
                srclib\apr-util\xml\expat\lib\expat.h \
                srclib\apr\include\*.h \
                srclib\apr-util\include\*.h \
+!IF EXIST("srclib\serf")
+               srclib\serf\*.h \
+!ENDIF
                include\*.h \
                os\win32\os.h \
                modules\cache\mod_cache.h \
+               modules\cache\cache_common.h \
                modules\core\mod_so.h \
                modules\core\mod_watchdog.h \
                modules\database\mod_dbd.h \
@@ -916,25 +1070,39 @@ BEGIN {
                modules\filters\mod_include.h \
                modules\generators\mod_cgi.h \
                modules\generators\mod_status.h \
+               modules\http2\mod_http2.h \
                modules\loggers\mod_log_config.h \
                modules\mappers\mod_rewrite.h \
                modules\proxy\mod_proxy.h \
                modules\proxy\mod_serf.h \
                modules\ssl\mod_ssl.h \
+               modules\ssl\mod_ssl_openssl.h \
           ) do \
            @copy %f "$(INSTDIR)\include" < .y > nul
        copy srclib\apr\Lib$(SHORT)\apr-1.lib           "$(INSTDIR)\lib" <.y
        copy srclib\apr\Lib$(SHORT)\apr-1.pdb           "$(INSTDIR)\lib" <.y
+       copy srclib\apr\$(LONG)\libapr-1.lib            "$(INSTDIR)\lib" <.y
+       copy srclib\apr\$(LONG)\libapr-1.exp            "$(INSTDIR)\lib" <.y
+!IF EXIST("srclib\apr-util")
        copy srclib\apr-util\Lib$(SHORT)\aprutil-1.lib  "$(INSTDIR)\lib" <.y
        copy srclib\apr-util\Lib$(SHORT)\aprutil-1.pdb  "$(INSTDIR)\lib" <.y
        copy srclib\apr-util\xml\expat\lib\Lib$(SHORT)\xml.lib "$(INSTDIR)\lib" <.y
        copy srclib\apr-util\xml\expat\lib\Lib$(SHORT)\xml.pdb "$(INSTDIR)\lib" <.y
-       copy srclib\apr\$(LONG)\libapr-1.lib            "$(INSTDIR)\lib" <.y
-       copy srclib\apr\$(LONG)\libapr-1.exp            "$(INSTDIR)\lib" <.y
-       copy srclib\apr-iconv\$(LONG)\libapriconv-1.lib "$(INSTDIR)\lib" <.y
-       copy srclib\apr-iconv\$(LONG)\libapriconv-1.exp "$(INSTDIR)\lib" <.y
        copy srclib\apr-util\$(LONG)\libaprutil-1.lib   "$(INSTDIR)\lib" <.y
        copy srclib\apr-util\$(LONG)\libaprutil-1.exp   "$(INSTDIR)\lib" <.y
+       copy srclib\apr-iconv\$(LONG)\libapriconv-1.lib "$(INSTDIR)\lib" <.y
+       copy srclib\apr-iconv\$(LONG)\libapriconv-1.exp "$(INSTDIR)\lib" <.y
+!ELSE
+       copy srclib\expat\win32\$(LONG)\libexpatMT.lib  "$(INSTDIR)\lib" <.y
+       copy srclib\expat\win32\$(LONG)\libexpatMT.exp  "$(INSTDIR)\lib" <.y
+       copy srclib\expat\win32\$(LONG)\libexpat.lib    "$(INSTDIR)\lib" <.y
+       copy srclib\expat\win32\$(LONG)\libexpat.exp    "$(INSTDIR)\lib" <.y
+       copy srclib\expat\win32\$(LONG)\libexpat.dll    "$(INSTDIR)\bin" <.y
+!ENDIF
+!IF EXIST("srclib\serf")
+       copy srclib\serf\$(LONG)\libserf.lib            "$(INSTDIR)\lib" <.y
+       copy srclib\serf\$(LONG)\libserf.exp            "$(INSTDIR)\lib" <.y
+!ENDIF
        copy $(LONG)\libhttpd.exp                       "$(INSTDIR)\lib" <.y
        copy $(LONG)\libhttpd.lib                       "$(INSTDIR)\lib" <.y
        copy modules\dav\main\$(LONG)\mod_dav.exp       "$(INSTDIR)\lib" <.y
@@ -954,3 +1122,46 @@ BEGIN {
 <<
        del .y
        del .a
+
+_fixshebang:
+!IF EXIST("$(INSTDIR)\cgi-bin")
+       -awk -f <<script.awk "docs/cgi-examples/printenv" > "$(INSTDIR)\cgi-bin\printenv.pl"
+    BEGIN { 
+       if ( "perl -e \"print $$^X;\"" | getline perlroot ) {
+           gsub( /\\/, "/", perlroot );
+           print "#!" perlroot;
+       }
+    }
+    {
+       if ( $$0 !~ /^#!/ ) {
+           print $$0;
+       }
+    }
+<<
+       -cscript -nologo <<script.vbs "docs/cgi-examples/printenv.vbs" "$(INSTDIR)\cgi-bin\printenv.vbs"
+    Dim fso, f, c
+    Set fso = CreateObject("Scripting.FileSystemObject")
+    Set f = fso.OpenTextFile(WScript.Arguments(0), 1)
+    f.SkipLine
+    c = f.ReadAll
+    f.Close
+    Set f = fso.OpenTextFile(WScript.Arguments(1), 2, TRUE)
+    f.WriteLine "'!" & Replace(WScript.FullName, "\", "/") & " -nologo"
+    f.Write c
+    f.Close
+<<
+       -cscript -nologo <<script.vbs "docs/cgi-examples/printenv.wsf" "$(INSTDIR)\cgi-bin\printenv.wsf"
+    Dim fso, f, c
+    Set fso = CreateObject("Scripting.FileSystemObject")
+    Set f = fso.OpenTextFile(WScript.Arguments(0), 1)
+    f.SkipLine
+    c = f.ReadAll
+    f.Close
+    Set f = fso.OpenTextFile(WScript.Arguments(1), 2, TRUE)
+    f.WriteLine "'!" & Replace(WScript.FullName, "\", "/") & " -nologo"
+    f.Write c
+    f.Close
+<<
+!ENDIF
+
+