# 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

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
!ELSE
SSLBIN=out32dll
!ENDIF

_tryssl:
!IF $(USEMAK) == 1
	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 ..
!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

_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\xml\expat\lib
	 $(MAKE) $(MAKEOPT) -f xml.mak             CFG="xml - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	cd ..\..\..
	 $(MAKE) $(MAKEOPT) -f aprutil.mak         CFG="aprutil - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -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)
	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
	 $(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 ..\..
	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_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_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) -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 ..
!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\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
	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
	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_http.$(src_so) 	"$(inst_so)" <.y
	copy modules\proxy\$(LONG)\mod_proxy_scgi.$(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)\libeay32.$(src_dll) 	"$(inst_dll)" <.y
	-copy srclib\openssl\$(SSLBIN)\ssleay32.$(src_dll) 	"$(inst_dll)" <.y
	-copy srclib\openssl\$(SSLBIN)\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
	$(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\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\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-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
