# Makefile for Windows NT and Windows 95/98/2000

# Targets are:
#   _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
#
# The following install defaults may be customized;
#
#   Option      Default
#   INSTDIR     /Apache24
#   PORT        80
#   SSLPORT     443
#   DOMAINNAME  example.com
#   SERVERNAME  www.example.com
#   SERVERNAME  admin@example.com
#
#   ALL         (unset)     Includes additional modules for build testing
#
# Provide a DBD_LIST argument after configuring LIB and INCLUDE with
# the SDK paths of the corresponding client support libraries.
# The ODBC driver is always built on Windows
#
#     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
#
# Be aware that certain awk's will not accept backslashed names,
# so the server root should be given in forward slashes (quoted),
# preferably with the drive designation!

!IF EXIST("Apache.sln") && ([devenv /help > NUL 2>&1] == 0) \
    && !defined(USEMAK) && !defined(USEDSW)
USESLN=1
USEMAK=0
USEDSW=0
!ELSEIF EXIST("httpd.mak") && !defined(USEDSW)
USESLN=0
USEMAK=1
USEDSW=0
!ELSE
USESLN=0
USEMAK=0
USEDSW=1
!ENDIF

# APU 1.6 (and up?)
!IF EXIST("srclib\apr-util\xml\xml.mak")
EXPAT=xml
EXPBCK = ..
!ELSE
EXPAT=xml\expat\lib
EXPBCK = ..\..\..
!ENDIF

default: _buildr

!IF ("$(CTARGET)" == "") && ($(USESLN) == 1)
CTARGET=/build
!ENDIF

!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")
!MESSAGE Please check out or download and unpack the current PCRE library source
!MESSAGE under your srclib dir, and compile the pcre.dll with CMake options
!MESSAGE BUILD_SHARED_LIBS and CMAKE_BUILD_TYPE RelWithDebInfo.
!MESSAGE Apache cannot build without this library!
!MESSAGE 
!ERROR Need srclib\pcre
!ENDIF


# Note; _tryfoo: blocks are used only by the msvc developer studio environment 
#	to 'fix up' the build, since conditional dependencies aren't supported.
#

!IF EXIST("srclib\openssl")
!IF "$(LONG)" == "Debug" && EXIST("srclib\openssl\out32dll.dbg\openssl.exe")
SSLBIN=out32dll.dbg
SSLAPP=out32dll.dbg
SSLCRP=libeay32
SSLLIB=ssleay32
!ELSEIF EXIST("srclib\openssl\libcrypto.lib")
!MESSAGE Building with OpenSSL 1.1.0
!MESSAGE 
SSLBIN=.
SSLAPP=apps
SSLCRP=libcrypto
SSLLIB=libssl
SSLOPT=_HAVE_OSSL110=1
!ELSE
SSLBIN=out32dll
SSLAPP=out32dll
SSLCRP=libeay32
SSLLIB=ssleay32
!ENDIF


_tryssl:
!IF $(USEMAK) == 1
	cd modules\ssl
	$(MAKE) $(MAKEOPT) $(SSLOPT) -f mod_ssl.mak CFG="mod_ssl - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd support
	$(MAKE) $(MAKEOPT) $(SSLOPT) -f abs.mak CFG="abs - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..
!ELSEIF $(USESLN) == 1
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_ssl
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project abs
!ELSE
	@msdev $(TLP).dsw /USEENV /MAKE \
		"mod_ssl - Win32 $(LONG)" \
		"abs - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF

!ELSE
#     NOT EXIST("srclib\openssl")

_tryssl:
	@echo -----
	@echo mod_ssl and ab/ssl will not build unless openssl is installed
	@echo in srclib\openssl.  They must be precompiled using the 
	@echo ms/ntdll.mak file, see srclib\openssl\INSTALL.W32.  The most
	@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\zlib")

_tryzlib:
!IF $(USEMAK) == 1
	cd modules\filters
	$(MAKE) $(MAKEOPT) -f mod_deflate.mak CFG="mod_deflate - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
!ELSEIF $(USESLN) == 1
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_deflate
!ELSE
	@msdev $(TLP).dsw /USEENV /MAKE \
		"mod_deflate - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF

!ELSE
#     NOT EXIST("srclib\zlib")

_tryzlib:
	@echo -----
	@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")

_trylua:
!IF $(USEMAK) == 1
	cd modules\lua
	$(MAKE) $(MAKEOPT) -f mod_lua.mak CFG="mod_lua - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
!ELSEIF $(USESLN) == 1
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_lua
!ELSE
	@msdev $(TLP).dsw /USEENV /MAKE \
		"mod_lua - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF

!ELSE
#     NOT EXIST("srclib\lua")

_trylua:
	@echo -----
	@echo mod_lua will not build unless lua is installed in srclib\lua.
	@echo Version 5.1 includes an etc\luavs.bat that will satisfy this requirement.

!ENDIF

!IF EXIST("srclib\nghttp2")

_trynghttp2:
!IF $(USEMAK) == 1
	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 will not build unless OpenSSL, Jansson and Curl are built and 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 $(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 $(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


!IF "$(INSTDIR)" == ""
INSTDIR=\Apache24
!ENDIF
!IF "$(DOMAINNAME)" == ""
DOMAINNAME=example.com
!ENDIF 
!IF "$(SERVERNAME)" == ""
SERVERNAME=www.$(DOMAINNAME)
!ENDIF
!IF "$(SERVERADMIN)" == ""
SERVERADMIN=admin@$(DOMAINNAME)
!ENDIF
!IF "$(PORT)" == ""
PORT=80
!ENDIF 
!IF "$(SSLPORT)" == ""
SSLPORT=443
!ENDIF 

!IF "$(LONG)" == ""
!MESSAGE
!MESSAGE INSTDIR     = $(INSTDIR)
!MESSAGE DOMAINNAME  = $(DOMAINNAME)
!MESSAGE SERVERNAME  = $(SERVERNAME)
!MESSAGE SERVERADMIN = $(SERVERADMIN)
!MESSAGE PORT        = $(PORT)
!IF EXIST("srclib\openssl")
!MESSAGE SSLPORT     = $(SSLPORT)
!ENDIF
!MESSAGE
!MESSAGE To change these options use 'nmake -f Makefile.win [option=value]'
!MESSAGE Example: nmake -f Makefile.win PORT=8080
!MESSAGE
!MESSAGE
!ENDIF

!IFNDEF MAKEOPT
# Only default the behavior if MAKEOPT= is omitted
!IFDEF _NMAKE_VER
# Microsoft NMake options
MAKEOPT=-nologo
!ELSEIF "$(MAKE)" == "make"
# Borland make options?  Not really supported (yet)
MAKEOPT=-s -N
!ENDIF
!ENDIF

_dummy:

_browse:
	cd Browse
	  bscmake.exe -nologo -Iu -o Apache.bsc *.sbr
	cd ..

_buildr: 
	@$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=R LONG=Release _build

_buildd: 
	@$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=D LONG=Debug   _build

installr: 
	@$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=R LONG=Release _build _install

installd: 
	@$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=D LONG=Debug   _build _install

clean:	_cleanr _cleand
	-if exist Browse\. rd /s Browse < << > nul
y
<<

!IF $(USEMAK) == 1

_cleanr:
	$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=R LONG=Release CTARGET=CLEAN _build

_cleand:  
	$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=D LONG=Debug   CTARGET=CLEAN _build

_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)
!IF "$(CTARGET)" == "CLEAN"
	$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
		BUILD_MODE=$(LONG) BIND_MODE=shared API_SOURCE=.
!ELSE
	cd ccs
	$(MAKE) $(MAKEOPT) -f Makefile.win all \
		BUILD_MODE=$(LONG) BIND_MODE=shared
	cd ..\ces
	$(MAKE) $(MAKEOPT) -f Makefile.win all \
		BUILD_MODE=$(LONG) BIND_MODE=shared
	cd ..
!ENDIF
	cd ..\..
	cd srclib\apr-util\$(EXPAT)
	 $(MAKE) $(MAKEOPT) -f xml.mak             CFG="xml - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd $(EXPBCK)
	 $(MAKE) $(MAKEOPT) $(SSLOPT) -f aprutil.mak         CFG="aprutil - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) $(SSLOPT) -f libaprutil.mak      CFG="libaprutil - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	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 httpd.mak           CFG="httpd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
# build ldap prior to authnz_ldap
	cd modules\ldap
	 $(MAKE) $(MAKEOPT) -f mod_ldap.mak        CFG="mod_ldap - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd modules\database
	 $(MAKE) $(MAKEOPT) -f mod_dbd.mak         CFG="mod_dbd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd modules\aaa
	 $(MAKE) $(MAKEOPT) -f mod_access_compat.mak CFG="mod_access_compat - 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)
	 $(MAKE) $(MAKEOPT) -f mod_authn_anon.mak  CFG="mod_authn_anon - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_authn_core.mak  CFG="mod_authn_core - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(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)
	 $(MAKE) $(MAKEOPT) -f mod_authz_dbm.mak   CFG="mod_authz_dbm - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_authz_groupfile.mak CFG="mod_authz_groupfile - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_authz_host.mak  CFG="mod_authz_host - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(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\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_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
	 $(MAKE) $(MAKEOPT) -f mod_heartbeat.mak   CFG="mod_heartbeat - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_heartmonitor.mak CFG="mod_heartmonitor - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd modules\dav\main
	 $(MAKE) $(MAKEOPT) -f mod_dav.mak         CFG="mod_dav - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..\..
	cd modules\dav\fs
	 $(MAKE) $(MAKEOPT) -f mod_dav_fs.mak      CFG="mod_dav_fs - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..\..
	cd modules\dav\lock
	 $(MAKE) $(MAKEOPT) -f mod_dav_lock.mak    CFG="mod_dav_lock - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..\..
	cd modules\debugging
!IFDEF ALL
	 $(MAKE) $(MAKEOPT) -f mod_bucketeer.mak   CFG="mod_bucketeer - Win32 $(LONG)" RECURSE=0 $(CTARGET)
!ENDIF
	 $(MAKE) $(MAKEOPT) -f mod_dumpio.mak      CFG="mod_dumpio - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd modules\echo
!IFDEF ALL
	 $(MAKE) $(MAKEOPT) -f mod_echo.mak        CFG="mod_echo - Win32 $(LONG)" RECURSE=0 $(CTARGET)
!ENDIF
	cd ..\..
!IFDEF ALL
	cd modules\examples
	 $(MAKE) $(MAKEOPT) -f mod_case_filter.mak    CFG="mod_case_filter - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_case_filter_in.mak CFG="mod_case_filter_in - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_example_hooks.mak  CFG="mod_example_hooks - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_example_ipc.mak    CFG="mod_example_ipc - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	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)
	cd ..\..
	cd modules\generators
	 $(MAKE) $(MAKEOPT) -f mod_asis.mak        CFG="mod_asis - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_autoindex.mak   CFG="mod_autoindex - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_cgi.mak         CFG="mod_cgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_info.mak        CFG="mod_info - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_status.mak      CFG="mod_status - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd modules\http
	 $(MAKE) $(MAKEOPT) -f mod_mime.mak        CFG="mod_mime - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	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 ..\..
!IF EXIST("srclib\lua")
	cd modules\lua
	 $(MAKE) $(MAKEOPT) -f mod_lua.mak         CFG="mod_lua - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
!ENDIF
	cd modules\mappers
	 $(MAKE) $(MAKEOPT) -f mod_actions.mak     CFG="mod_actions - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_alias.mak       CFG="mod_alias - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_dir.mak         CFG="mod_dir - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_imagemap.mak    CFG="mod_imagemap - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_negotiation.mak CFG="mod_negotiation - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_rewrite.mak     CFG="mod_rewrite - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_speling.mak     CFG="mod_speling - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_userdir.mak     CFG="mod_userdir - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_vhost_alias.mak CFG="mod_vhost_alias - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
!IF EXIST("srclib\openssl") && 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
	cd modules\metadata
	 $(MAKE) $(MAKEOPT) -f mod_cern_meta.mak   CFG="mod_cern_meta - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_env.mak         CFG="mod_env - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_expires.mak     CFG="mod_expires - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_headers.mak     CFG="mod_headers - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_ident.mak       CFG="mod_ident - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_mime_magic.mak  CFG="mod_mime_magic - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_remoteip.mak    CFG="mod_remoteip - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_setenvif.mak    CFG="mod_setenvif - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_unique_id.mak   CFG="mod_unique_id - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_usertrack.mak   CFG="mod_usertrack - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_version.mak     CFG="mod_version - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd modules\proxy
	 $(MAKE) $(MAKEOPT) -f mod_proxy.mak       CFG="mod_proxy - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(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)
	cd ..\..
	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)
	 $(MAKE) $(MAKEOPT) -f mod_lbmethod_bytraffic.mak  CFG="mod_lbmethod_bytraffic - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_lbmethod_heartbeat.mak  CFG="mod_lbmethod_heartbeat - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..\..
# mod_proxy_http2 must be built after mod_proxy and mod_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\session
	 $(MAKE) $(MAKEOPT) -f mod_session.mak        CFG="mod_session - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(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\ssl
	 $(MAKE) $(MAKEOPT) $(SSLOPT) -f mod_ssl.mak         CFG="mod_ssl - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..
	cd support
	 $(MAKE) $(MAKEOPT) $(SSLOPT) -f abs.mak             CFG="abs - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..
!ENDIF
	cd support
	 $(MAKE) $(MAKEOPT) -f ab.mak              CFG="ab - Win32 $(LONG)" RECURSE=0 $(CTARGET)
#	 $(MAKE) $(MAKEOPT) -f fcgistarter.mak     CFG="fcgistarter - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f htcacheclean.mak    CFG="htcacheclean - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f htdbm.mak           CFG="htdbm - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f htdigest.mak        CFG="htdigest - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f htpasswd.mak        CFG="htpasswd - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f httxt2dbm.mak       CFG="httxt2dbm - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f logresolve.mak      CFG="logresolve - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f rotatelogs.mak      CFG="rotatelogs - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..
	cd support\win32
	 $(MAKE) $(MAKEOPT) -f ApacheMonitor.mak   CFG="ApacheMonitor - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f wintty.mak          CFG="wintty - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..

!ELSEIF $(USESLN) == 1

_cleanr:  
	$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=R LONG=Release CTARGET="/clean" _build

_cleand:  
	$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=D LONG=Debug   CTARGET="/clean" _build

_build:
	echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
!IFDEF ALL
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project BuildAll
!ELSE
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project BuildBin
!ENDIF
!IF EXIST("srclib\openssl")
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_ssl
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project abs
!ENDIF
!IF EXIST("srclib\zlib")
	devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_deflate
!ENDIF
!IF EXIST("srclib\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

!ELSE

_cleanr:  
	@$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=R LONG=Release CTARGET="/CLEAN" _build

_cleand:  
	@$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=D LONG=Debug   CTARGET="/CLEAN" _build

_build:
	@echo Building Win32 $(LONG) targets ($(SHORT) suffixes)
!IFDEF ALL
	@msdev $(TLP).dsw /USEENV /MAKE \
		"BuildAll - Win32 $(LONG)" $(CTARGET)
!ELSE
	@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 $(TLP).dsw /USEENV /MAKE \
		"mod_ssl - Win32 $(LONG)" \
		"abs - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF
!IF EXIST("srclib\zlib")
	@msdev $(TLP).dsw /USEENV /MAKE \
		"mod_deflate - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF
!IF EXIST("srclib\lua")
	@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

!ENDIF


_copybin:
	copy $(LONG)\httpd.$(src_exe) 				"$(inst_exe)" <.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\$(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 "$(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_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
	copy modules\aaa\$(LONG)\mod_authn_anon.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authn_core.$(src_so) 	"$(inst_so)" <.y
	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
	copy modules\aaa\$(LONG)\mod_authz_dbm.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authz_core.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authz_groupfile.$(src_so) 	"$(inst_so)" <.y
	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\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_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
	copy modules\dav\fs\$(LONG)\mod_dav_fs.$(src_so) 	"$(inst_so)" <.y
	copy modules\dav\lock\$(LONG)\mod_dav_lock.$(src_so) 	"$(inst_so)" <.y
	copy modules\dav\main\$(LONG)\mod_dav.$(src_so)		"$(inst_so)" <.y
!IFDEF ALL
	copy modules\debugging\$(LONG)\mod_bucketeer.$(src_so)	"$(inst_so)" <.y
!ENDIF
	copy modules\debugging\$(LONG)\mod_dumpio.$(src_so)	"$(inst_so)" <.y
!IFDEF ALL
	copy modules\echo\$(LONG)\mod_echo.$(src_so)		"$(inst_so)" <.y
	copy modules\examples\$(LONG)\mod_case_filter.$(src_so)    "$(inst_so)" <.y
	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)")
	copy srclib\zlib\zlib1.$(src_dll)		 	"$(inst_dll)" <.y
!ENDIF
!ENDIF
	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
	copy modules\generators\$(LONG)\mod_asis.$(src_so) 	"$(inst_so)" <.y
	copy modules\generators\$(LONG)\mod_autoindex.$(src_so) "$(inst_so)" <.y
	copy modules\generators\$(LONG)\mod_cgi.$(src_so) 	"$(inst_so)" <.y
	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")
	copy modules\lua\$(LONG)\mod_lua.$(src_so) 		"$(inst_so)" <.y
!IF EXIST("srclib\lua\src\lua51.$(src_dll)")
	copy srclib\lua\src\lua51.$(src_dll)		 	"$(inst_dll)" <.y
!ENDIF
!ENDIF
	copy modules\mappers\$(LONG)\mod_actions.$(src_so) 	"$(inst_so)" <.y
	copy modules\mappers\$(LONG)\mod_alias.$(src_so) 	"$(inst_so)" <.y
	copy modules\mappers\$(LONG)\mod_dir.$(src_so) 		"$(inst_so)" <.y
	copy modules\mappers\$(LONG)\mod_imagemap.$(src_so) 	"$(inst_so)" <.y
	copy modules\mappers\$(LONG)\mod_negotiation.$(src_so) 	"$(inst_so)" <.y
	copy modules\mappers\$(LONG)\mod_rewrite.$(src_so) 	"$(inst_so)" <.y
	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
!IF EXIST("srclib\openssl") &&  EXIST("srclib\jansson") &&  EXIST("srclib\curl")
	copy modules\md\$(LONG)\mod_md.$(src_so) 		"$(inst_so)" <.y
!IF "$(SHORT)" == "D"
	-copy srclib\curl\bin\libcurl_debug.$(src_dll)		"$(inst_dll)" <.y
	-copy srclib\jansson\bin\jansson_d.$(src_dll)		"$(inst_dll)" <.y
!ELSE
	-copy srclib\curl\bin\libcurl.$(src_dll)		"$(inst_dll)" <.y
	-copy srclib\jansson\bin\jansson.$(src_dll)		"$(inst_dll)" <.y
!ENDIF
!ENDIF
	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
	copy modules\metadata\$(LONG)\mod_headers.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_ident.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_mime_magic.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_remoteip.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_setenvif.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_unique_id.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_usertrack.$(src_so) 	"$(inst_so)" <.y
	copy modules\metadata\$(LONG)\mod_version.$(src_so) 	"$(inst_so)" <.y
	copy modules\proxy\$(LONG)\mod_proxy.$(src_so) 		"$(inst_so)" <.y
	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
	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
	copy modules\proxy\balancers\$(LONG)\mod_lbmethod_heartbeat.$(src_so)  "$(inst_so)" <.y
	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")
#	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)\$(SSLCRP)*.$(src_dll) 	"$(inst_dll)" <.y
	-copy srclib\openssl\$(SSLBIN)\$(SSLLIB)*.$(src_dll) 	"$(inst_dll)" <.y
	-copy srclib\openssl\$(SSLAPP)\openssl.$(src_exe) 	"$(inst_exe)" <.y
	copy support\$(LONG)\abs.$(src_exe) 			"$(inst_exe)" <.y
!ENDIF
	copy support\$(LONG)\ab.$(src_exe) 			"$(inst_exe)" <.y
#	copy support\$(LONG)\fcgistarter.$(src_exe)		"$(inst_exe)" <.y
	copy support\$(LONG)\htcacheclean.$(src_exe)		"$(inst_exe)" <.y
	copy support\$(LONG)\htdbm.$(src_exe) 			"$(inst_exe)" <.y
	copy support\$(LONG)\htdigest.$(src_exe) 		"$(inst_exe)" <.y
	copy support\$(LONG)\htpasswd.$(src_exe) 		"$(inst_exe)" <.y
	copy support\$(LONG)\httxt2dbm.$(src_exe)		"$(inst_exe)" <.y
	copy support\$(LONG)\logresolve.$(src_exe) 		"$(inst_exe)" <.y
	copy support\$(LONG)\rotatelogs.$(src_exe) 		"$(inst_exe)" <.y
	copy support\win32\$(LONG)\ApacheMonitor.$(src_exe) 	"$(inst_exe)" <.y
	copy support\win32\$(LONG)\wintty.$(src_exe) 		"$(inst_exe)" <.y


# First we create the tree and populate the README so that 
# whatever happens, all licensing has already propagated.  
# Then repeatedly invoke the _copybin build to copy the
# real binaries, then pdb symbols, anf finally dbg syms.
# Then hit docs of various sorts, then includes and libs,
# and finally do the .conf magic.
#
_install:
	echo Y >.y
	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"
	-mkdir "$(INSTDIR)\conf\original"
	-mkdir "$(INSTDIR)\conf\original\extra"
	-mkdir "$(INSTDIR)\error"
	-mkdir "$(INSTDIR)\htdocs"
	-mkdir "$(INSTDIR)\manual"
	-mkdir "$(INSTDIR)\icons"
	-mkdir "$(INSTDIR)\include"
	-mkdir "$(INSTDIR)\lib"
	-mkdir "$(INSTDIR)\logs"
	-mkdir "$(INSTDIR)\modules"
	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.4 Limited OpenSSL Distribution

 This binary distribution includes the minimal components of OpenSSL required
 to support mod_ssl for Apache HTTP Server version 2.4 (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.4 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.4.  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
!IF EXIST("srclib\libxml2")
	type << >> "$(INSTDIR)\NOTICE.txt"

This binary distributions of mod_proxy_html.so and mod_xml2enc.so include the
libxml2 C library written by Daniel Veillard (daniel veillard.com), Bjorn 
Reese (breese users.sourceforge.net) and Gary Pennington (Gary.Pennington 
uk.sun.com). For complete information, visit LibXML2's web site at 
https://http://www.xmlsoft.org/
<<
	-awk -f <<script.awk < "srclib\libxml2\Copyright" >> "$(INSTDIR)\LICENSE.txt"
BEGIN {
    print "";
    print "For the mod_proxy_html and mod_xml2enc components:";
    print "";
	    while ( getline > 0 ) {
	print $$0;
    }
    exit 0;
}
<<
!ENDIF
!IF EXIST("srclib\nghttp2")
	type << >> "$(INSTDIR)\NOTICE.txt"

This binary distribution of mod_http2.so includes nghttp2 C library written 
by Tatsuhiro Tsujikawa. For complete information, visit nghttp2's web site 
at https://nghttp2.org/
<<
	-awk -f <<script.awk < "srclib\nghttp2\COPYING" >> "$(INSTDIR)\LICENSE.txt"
BEGIN {
    print "";
    print "For the mod_http2 component:";
    print "";
	    while ( getline > 0 ) {
	print $$0;
    }
    exit 0;
}
<<
!ENDIF
!IF EXIST("srclib\brotli")
	type << >> "$(INSTDIR)\NOTICE.txt"

This binary distribution of mod_brotli.so includes Brotli C library written 
by the Brotli Authors. For complete information, visit Brotli's web site 
at https://github.com/google/brotli
<<
	-awk -f <<script.awk < "srclib\brotli\LICENSE" >> "$(INSTDIR)\LICENSE.txt"
BEGIN {
    print "";
    print "For the mod_brotli component:";
    print "";
	    while ( getline > 0 ) {
	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"                              \
		inst_dll="$(INSTDIR)\bin"                              \
		inst_so="$(INSTDIR)\modules"
	$(MAKE) $(MAKEOPT) -f Makefile.win SHORT=$(SHORT) LONG=$(LONG) \
		_copybin src_exe=pdb src_dll=pdb src_so=pdb            \
		inst_exe="$(INSTDIR)\bin"                              \
		inst_dll="$(INSTDIR)\bin"                              \
		inst_so="$(INSTDIR)\modules"
!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;
	}
    }
<<
	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 \
		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 \
		modules\dav\main\mod_dav.h \
		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\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\$(EXPAT)\Lib$(SHORT)\xml.lib "$(INSTDIR)\lib" <.y
	copy srclib\apr-util\$(EXPAT)\Lib$(SHORT)\xml.pdb "$(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
	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
	copy modules\dav\main\$(LONG)\mod_dav.lib 	"$(INSTDIR)\lib" <.y
	for %f in ( charset.conv magic mime.types ) do ( \
	  copy docs\conf\%f "$(INSTDIR)\conf\original\%f" <.y )
	awk -f build\installwinconf.awk $(DOMAINNAME) $(SERVERNAME) \
	    $(SERVERADMIN) $(PORT) $(SSLPORT) "$(INSTDIR) " docs/conf/ 
	copy "support\dbmmanage.in" "$(INSTDIR)\bin\dbmmanage.pl"
	-awk -f <<script.awk "support/dbmmanage.in" >"$(INSTDIR)\bin\dbmmanage.pl"
    { if ( $$0 ~ /^BEGIN \{ @AnyDBM_File::/ ) {
	  sub( /ISA = qw\(.*\)/, "ISA = qw(SDBM_File)" ); 
      }
      if ( $$0 !~ /^#!@perlbin@/ )
	  print $$0;
    }
<<
	del .y
	del .a
