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

# Targets are:
#   _apacher   - build Apache in Release mode
#   _apached   - build Apache in Debug mode
#   installr   - build and install a Release build
#   installd   - build and install a Debug build
#   clean      - remove (most) generated files
#   _cleanr    - remove (most) files generated by a Release build
#   _cleand    - remove (most) files generated by a Debug build
#   _browse    - build the browse info file
#
# The following install defaults may be customized;
#
#   Option      Default
#   INSTDIR     /Apache22
#   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"
#
# 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("httpd.vcproj") && ([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: _apacher

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

!IF !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
!ENDIF

# Note; _tryssl: is only used 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 Apache.sln /useenv $(CTARGET) $(LONG) /project mod_ssl
	devenv Apache.sln /useenv $(CTARGET) $(LONG) /project abs
!ELSE
	@msdev Apache.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

!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 Apache.sln /useenv $(CTARGET) $(LONG) /project mod_deflate
!ELSE
	@msdev Apache.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 installed 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


_trydbd:
!IF $(USEMAK) == 1
	cd srclib\apr-util\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 ..\..\..
!ELSEIF $(USESLN) == 1
	for %d in (odbc $(DBD_LIST)) do \
	  devenv Apache.sln /useenv $(CTARGET) $(LONG) /project apr_dbd_%d
!ELSE
	@for %d in (odbc $(DBD_LIST)) do \
	  msdev Apache.dsw /USEENV /MAKE \
		"apr_dbd_%d - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF


!IF "$(INSTDIR)" == ""
INSTDIR=\Apache22
!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 ..

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

_apached: 
	@$(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)
	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 ..\..
	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 ..

	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 ..\..
	cd srclib\pcre
	 $(MAKE) $(MAKEOPT) -f dftables.mak        CFG="dftables - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f pcre.mak            CFG="pcre - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	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_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_authn_alias.mak CFG="mod_authn_alias - 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_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_default.mak CFG="mod_authn_default - 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_authnz_ldap.mak CFG="mod_authnz_ldap - 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_default.mak CFG="mod_authz_default - 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_file_cache.mak  CFG="mod_file_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_mem_cache.mak   CFG="mod_mem_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET)
	 $(MAKE) $(MAKEOPT) -f mod_disk_cache.mak  CFG="mod_disk_cache - 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\debug
!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 ..\..
	cd modules\experimental
!IFDEF ALL
	 $(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.mak     CFG="mod_example - Win32 $(LONG)" RECURSE=0 $(CTARGET)
!ENDIF
	cd ..\..
	cd modules\filters
	 $(MAKE) $(MAKEOPT) -f mod_charset_lite.mak CFG="mod_charset_lite - 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)
	 $(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_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 ..\..
	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_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_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)
	cd ..\..
!IF EXIST("srclib\openssl")
	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 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 Apache.sln /useenv $(CTARGET) $(LONG) /project BuildAll
!ELSE
	devenv Apache.sln /useenv $(CTARGET) $(LONG) /project BuildBin
!ENDIF
!IF EXIST("srclib\openssl")
	devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_ssl
	devenv Apache.sln /useenv $(CTARGET) $(LONG) /project abs
!ENDIF
!IF EXIST("srclib\zlib")
	devenv Apache.sln /useenv $(CTARGET) $(LONG) /project mod_deflate
!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 Apache.dsw /USEENV /MAKE \
		"BuildAll - Win32 $(LONG)" $(CTARGET)
!ELSE
	@msdev Apache.dsw /USEENV /MAKE \
		"BuildBin - Win32 $(LONG)" $(CTARGET)
!ENDIF
!IF "$(CTARGET)" == "/CLEAN"
	@cd srclib\apr-iconv
	@$(MAKE) $(MAKEOPT) -f build\modules.mk.win clean \
		BUILD_MODE=$(LONG) BIND_MODE=shared API_SOURCE=.
	@cd ..\..
!ENDIF
!IF EXIST("srclib\openssl")
	@msdev Apache.dsw /USEENV /MAKE \
		"mod_ssl - Win32 $(LONG)" \
		"abs - Win32 $(LONG)" /NORECURSE $(CTARGET)
!ENDIF
!IF EXIST("srclib\zlib")
	@msdev Apache.dsw /USEENV /MAKE \
		"mod_deflate - 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
	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

	for %d in (odbc $(DBD_LIST)) do ( \
	  copy srclib\apr-util\dbd\$(LONG)\apr_dbd_%d-1.$(src_dll) "$(inst_dll)" <.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_authn_alias.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authn_anon.$(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_default.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authn_file.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authnz_ldap.$(src_so)	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authz_dbm.$(src_so) 	"$(inst_so)" <.y
	copy modules\aaa\$(LONG)\mod_authz_default.$(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_file_cache.$(src_so) 	"$(inst_so)" <.y
	copy modules\cache\$(LONG)\mod_mem_cache.$(src_so)	"$(inst_so)" <.y
	copy modules\cache\$(LONG)\mod_disk_cache.$(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\debug\$(LONG)\mod_bucketeer.$(src_so)	"$(inst_so)" <.y
!ENDIF
	copy modules\debug\$(LONG)\mod_dumpio.$(src_so)		"$(inst_so)" <.y
!IFDEF ALL
	copy modules\echo\$(LONG)\mod_echo.$(src_so)		"$(inst_so)" <.y
	copy modules\experimental\$(LONG)\mod_case_filter.$(src_so)	"$(inst_so)" <.y
	copy modules\experimental\$(LONG)\mod_case_filter_in.$(src_so)	"$(inst_so)" <.y
	copy modules\experimental\$(LONG)\mod_example.$(src_so)	"$(inst_so)" <.y
!ENDIF
	copy modules\filters\$(LONG)\mod_charset_lite.$(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
	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
	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_forensic.$(src_so) "$(inst_so)" <.y
	copy modules\loggers\$(LONG)\mod_logio.$(src_so) 	"$(inst_so)" <.y
	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_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_ftp.$(src_so) 	"$(inst_so)" <.y
	copy modules\proxy\$(LONG)\mod_proxy_http.$(src_so) 	"$(inst_so)" <.y
!IF EXIST("srclib\openssl")
	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)\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"
	-mkdir "$(INSTDIR)\bin\iconv"
	-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"
	-mkdir "$(INSTDIR)\symbols"
	-mkdir "$(INSTDIR)\symbols\exe"
	-mkdir "$(INSTDIR)\symbols\dll"
	-mkdir "$(INSTDIR)\symbols\so"
	copy ABOUT_APACHE "$(INSTDIR)\ABOUT_APACHE.txt" <.y
	copy CHANGES      "$(INSTDIR)\CHANGES.txt" <.y
	copy INSTALL      "$(INSTDIR)\INSTALL.txt" <.y
	copy LICENSE      "$(INSTDIR)\LICENSE.txt" <.y
	copy NOTICE       "$(INSTDIR)\NOTICE.txt" <.y
	copy README       "$(INSTDIR)\README.txt" <.y
!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.2 Limited OpenSSL Distribution

 This binary distribution includes the minimal components of OpenSSL required
 to support mod_ssl for Apache HTTP Server version 2.2 (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.2 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.2.  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
	$(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"
	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 ..\..
	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\apr-util\xml\expat\lib\expat.h \
		srclib\apr\include\*.h \
		srclib\apr-util\include\*.h \
		include\*.h \
		os\win32\os.h \
		server\mpm\winnt\mpm*.h \
		modules\aaa\mod_auth.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\http\mod_core.h \
		modules\proxy\mod_proxy.h \
		modules\ssl\mod_ssl.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-util\Lib$(SHORT)\aprutil-1.lib	"$(INSTDIR)\lib" <.y
	copy srclib\apr-util\Lib$(SHORT)\aprutil-1.pdb	"$(INSTDIR)\lib" <.y
	copy srclib\apr-util\xml\expat\lib\Lib$(SHORT)\xml.lib "$(INSTDIR)\lib" <.y
	copy srclib\apr-util\xml\expat\lib\Lib$(SHORT)\xml.pdb "$(INSTDIR)\lib" <.y
	copy srclib\apr\$(LONG)\libapr-1.lib 		"$(INSTDIR)\lib" <.y
	copy srclib\apr\$(LONG)\libapr-1.exp 		"$(INSTDIR)\lib" <.y
	copy srclib\apr-iconv\$(LONG)\libapriconv-1.lib	"$(INSTDIR)\lib" <.y
	copy srclib\apr-iconv\$(LONG)\libapriconv-1.exp "$(INSTDIR)\lib" <.y
	copy srclib\apr-util\$(LONG)\libaprutil-1.lib 	"$(INSTDIR)\lib" <.y
	copy srclib\apr-util\$(LONG)\libaprutil-1.exp 	"$(INSTDIR)\lib" <.y
	copy $(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
