#
# Declare the sub-directories to be built here
#

SUBDIRS = \
	$(APR_WORK) \
	build \
	support \
	modules \
	$(EOLIST)

#
# Get the 'head' of the build environment.  This includes default targets and
# paths to tools
#

include $(AP_WORK)\build\NWGNUhead.inc

#
# build this level's files

#
# Make sure all needed macro's are defined
#

#
# These directories will be at the beginning of the include list, followed by
# INCDIRS
#
XINCDIRS	+= \
			$(APR)/include \
			$(APRUTIL)/include \
			$(AP_WORK)/include \
			$(AP_WORK)/modules/filters/ \
			$(AP_WORK)/modules/generators/ \
			$(AP_WORK)/modules/http/ \
			$(AP_WORK)/modules/loggers/ \
			$(AP_WORK)/modules/mappers/ \
			$(AP_WORK)/modules/proxy/ \
			$(AP_WORK)/os/NetWare \
			$(AP_WORK)/server/mpm/NetWare \
			$(AP_WORK)/srclib/pcre \
			$(NWOS) \
			$(AP_WORK)/modules/ssl \
			$(EOLIST)

#
# These flags will come after CFLAGS
#
XCFLAGS		+= \
			$(EOLIST)

#
# These defines will come after DEFINES
#
XDEFINES	+= \
			$(EOLIST)

#
# These flags will be added to the link.opt file
#
XLFLAGS		+= \
			$(EOLIST)

#
# These values will be appended to the correct variables based on the value of
# RELEASE
#
ifeq "$(RELEASE)" "debug"
XINCDIRS	+= \
			$(EOLIST)

XCFLAGS		+= \
			$(EOLIST)

XDEFINES	+= \
			$(EOLIST)

XLFLAGS		+= \
			$(EOLIST)
endif

ifeq "$(RELEASE)" "noopt"
XINCDIRS	+= \
			$(EOLIST)

XCFLAGS		+= \
			$(EOLIST)

XDEFINES	+= \
			$(EOLIST)

XLFLAGS		+= \
			$(EOLIST)
endif

ifeq "$(RELEASE)" "release"
XINCDIRS	+= \
			$(EOLIST)

XCFLAGS		+= \
			$(EOLIST)

XDEFINES	+= \
			$(EOLIST)

XLFLAGS		+= \
			$(EOLIST)
endif

#
# These are used by the link target if an NLM is being generated
# This is used by the link 'name' directive to name the nlm.  If left blank
# TARGET_nlm (see below) will be used.
#
NLM_NAME	= Apache2

#
# This is used by the link '-desc ' directive.
# If left blank, NLM_NAME will be used.
#
NLM_DESCRIPTION	= Apache Web Server $(VERSION_STR) $(VERSION_SKT)

#
# This is used by the '-threadname' directive.  If left blank,
# NLM_NAME Thread will be used.
#
NLM_THREAD_NAME	= Apache

#
# This is used by the '-screenname' directive.  If left blank,
# 'Apache for NetWare' Thread will be used.
#
NLM_SCREEN_NAME = Apache $(VERSION_STR) for NetWare


#
# If this is specified, it will override VERSION value in
# $(AP_WORK)\build\NWGNUenvironment.inc
#
NLM_VERSION	=

#
# If this is specified, it will override the default of 64K
#
NLM_STACK_SIZE	= 65536


#
# If this is specified it will be used by the link '-entry' directive
#
NLM_ENTRY_SYM	= _LibCPrelude

#
# If this is specified it will be used by the link '-exit' directive
#
NLM_EXIT_SYM	= _LibCPostlude

#
# If this is specified it will be used by the link '-check' directive
#
NLM_CHECK_SYM	= _LibCCheckUnload

#
# If these are specified it will be used by the link '-flags' directive
#
NLM_FLAGS	= PSEUDOPREEMPTION

#
# If this is specified it will be linked in with the XDCData option in the def
# file instead of the default of $(NWOS)/apache.xdc.  XDCData can be disabled
# by setting APACHE_UNIPROC in the environment
#
XDCDATA		=

#
# If there is an NLM target, put it here
#
TARGET_nlm = \
	$(OBJDIR)/Apache2.nlm \
	$(EOLIST)

#
# If there is an LIB target, put it here
#
TARGET_lib = \
	$(EOLIST)

#
# These are the OBJ files needed to create the NLM target above.
# Paths must all use the '/' character
#
FILES_nlm_objs = \
	$(OBJDIR)/buildmark.o \
	$(OBJDIR)/config.o \
	$(OBJDIR)/connection.o \
	$(OBJDIR)/core.o \
	$(OBJDIR)/core_filters.o \
	$(OBJDIR)/eoc_bucket.o \
	$(OBJDIR)/error_bucket.o \
	$(OBJDIR)/http_core.o \
	$(OBJDIR)/http_protocol.o \
	$(OBJDIR)/http_request.o \
	$(OBJDIR)/byterange_filter.o \
	$(OBJDIR)/chunk_filter.o \
	$(OBJDIR)/http_etag.o \
	$(OBJDIR)/http_filters.o \
	$(OBJDIR)/listen.o \
	$(OBJDIR)/log.o \
	$(OBJDIR)/main.o \
	$(OBJDIR)/mod_authz_host.o \
	$(OBJDIR)/mod_alias.o \
	$(OBJDIR)/mod_dir.o \
	$(OBJDIR)/mod_env.o \
	$(OBJDIR)/mod_include.o \
	$(OBJDIR)/mod_log_config.o \
	$(OBJDIR)/mod_mime.o \
	$(OBJDIR)/mod_negotiation.o \
	$(OBJDIR)/mod_netware.o \
	$(OBJDIR)/mod_setenvif.o \
	$(OBJDIR)/mod_so.o \
	$(OBJDIR)/modules.o \
	$(OBJDIR)/mpm_common.o \
	$(OBJDIR)/mpm_netware.o \
	$(OBJDIR)/pcre.o \
	$(OBJDIR)/protocol.o \
	$(OBJDIR)/provider.o \
	$(OBJDIR)/request.o \
	$(OBJDIR)/scoreboard.o \
	$(OBJDIR)/util.o \
	$(OBJDIR)/util_cfgtree.o \
	$(OBJDIR)/util_charset.o \
	$(OBJDIR)/util_debug.o \
	$(OBJDIR)/util_filter.o \
	$(OBJDIR)/util_md5.o \
	$(OBJDIR)/util_nw.o \
	$(OBJDIR)/util_pcre.o \
	$(OBJDIR)/util_script.o \
	$(OBJDIR)/util_time.o \
	$(OBJDIR)/util_xml.o \
	$(OBJDIR)/vhost.o \
	$(EOLIST)

# Build in mod_nw_ssl if Winsock is being used
ifndef USE_STDSOCKETS
FILES_nlm_objs += $(OBJDIR)/mod_nw_ssl.o \
	$(EOLIST)
endif

#
# These are the LIB files needed to create the NLM target above.
# These will be added as a library command in the link.opt file.
#
FILES_nlm_libs = \
	libcpre.o \
	$(EOLIST)

#
# These are the modules that the above NLM target depends on to load.
# These will be added as a module command in the link.opt file.
#
FILES_nlm_modules = \
	aprlib \
	Libc \
	$(EOLIST)

#
# If the nlm has a msg file, put it's path here
#
FILE_nlm_msg =

#
# If the nlm has a hlp file put it's path here
#
FILE_nlm_hlp =

#
# If this is specified, it will override $(NWOS)\copyright.txt.
#
FILE_nlm_copyright =

#
# Any additional imports go here
#
FILES_nlm_Ximports = \
	@netware.imp \
	@$(APR)/aprlib.imp \
	@libc.imp \
	GetCurrentAddressSpace \
	$(EOLIST)

# Don't link with Winsock if standard sockets are being used
ifndef USE_STDSOCKETS
FILES_nlm_Ximports += @ws2nlm.imp \
	$(EOLIST)
endif

#
# Any symbols exported to here
#
FILES_nlm_exports = \
	@$(NWOS)/httpd.imp \
	$(EOLIST)

#
# These are the OBJ files needed to create the LIB target above.
# Paths must all use the '/' character
#
FILES_lib_objs = \
	$(EOLIST)

#
# implement targets and dependancies (leave this section alone)
#

libs :: $(OBJDIR) $(TARGET_lib)

nlms :: libs $(TARGET_nlm)

#
# Updated this target to create necessary directories and copy files to the
# correct place.  (See $(AP_WORK)\build\NWGNUhead.inc for examples)
#
install :: nlms FORCE
	-copy $(OBJDIR)\Apache2.nlm     $(INSTALL)\$(BASEDIR)\*.*
	-copy ABOUT_APACHE              $(INSTALL)\$(BASEDIR)\*.*
	-copy README                    $(INSTALL)\$(BASEDIR)\*.*
	-copy STATUS                    $(INSTALL)\$(BASEDIR)\*.*
	-copy LICENSE                   $(INSTALL)\$(BASEDIR)\*.*
	-copy CHANGES                   $(INSTALL)\$(BASEDIR)\*.*
	-copy VERSIONING                $(INSTALL)\$(BASEDIR)\*.*
	-copy support\dbmmanage.in      $(INSTALL)\$(BASEDIR)\bin\dbmmanage.pl
	-copy support\logresolve.pl.in  $(INSTALL)\$(BASEDIR)\bin\logresolve.pl
	-copy support\split-logfile.in  $(INSTALL)\$(BASEDIR)\bin\split-logfile.pl
	-$(AWK) -v BDIR=$(BASEDIR) -v PORT=$(PORT) -v SSLPORT=$(SSLPORT) -v MODSSL=$(WITH_MOD_SSL) -v BSDSKT=$(USE_STDSOCKETS) -f build\mkconfnw.awk docs\conf\httpd.conf.in >$(INSTALL)\$(BASEDIR)\conf\httpd.conf
	$(CHKNOT) $(INSTALL)\$(BASEDIR)\conf\extra\nul mkdir $(INSTALL)\$(BASEDIR)\conf\extra
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-autoindex.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-autoindex.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-dav.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-dav.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-default.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-default.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-info.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-info.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-languages.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-languages.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-manual.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-manual.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-mpm.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-mpm.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-multilang-errordoc.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-multilang-errordoc.conf
	-$(AWK) -v BDIR=$(BASEDIR) -f build\mkconfnw.awk docs\conf\extra\httpd-userdir.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-userdir.conf
	-$(AWK) -v BDIR=$(BASEDIR) -v PORT=$(PORT) -f build\mkconfnw.awk docs\conf\extra\httpd-vhosts.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-vhosts.conf
	-$(AWK) -v BDIR=$(BASEDIR) -v SSLPORT=$(SSLPORT) -f build\mkconfnw.awk docs\conf\extra\httpd-ssl.conf.in >$(INSTALL)\$(BASEDIR)\conf\extra\httpd-ssl.conf
	-copy docs\conf\magic           $(INSTALL)\$(BASEDIR)\conf\magic
	-copy docs\conf\mime.types      $(INSTALL)\$(BASEDIR)\conf\mime.types
	-copy docs\conf\charset.conv    $(INSTALL)\$(BASEDIR)\conf\charset.conv
	-copy docs\cgi-examples\printenv $(INSTALL)\$(BASEDIR)\cgi-bin\printenv.pl
	@xcopy $(XCOPYSW) docs\error $(INSTALL)\$(BASEDIR)\error
	@xcopy $(XCOPYSW) docs\docroot $(INSTALL)\$(BASEDIR)\htdocs
	@xcopy $(XCOPYSW) docs\icons $(INSTALL)\$(BASEDIR)\icons
	@xcopy $(XCOPYSW) docs\man $(INSTALL)\$(BASEDIR)\man
	@xcopy $(XCOPYSW) docs\manual $(INSTALL)\$(BASEDIR)\manual

installdev :: FORCE
	-copy $(subst /,\,$(AP_WORK))\include\*.h           $(INSTALL)\$(BASEDIR)\include\*.*
	-copy $(subst /,\,$(AP_WORK))\os\netware\*.h        $(INSTALL)\$(BASEDIR)\include\*.*
	-copy $(subst /,\,$(NWOS))\*.imp                    $(INSTALL)\$(BASEDIR)\lib\*.*
	-copy $(subst /,\,$(APR))\include\*.h               $(INSTALL)\$(BASEDIR)\include\*.*
	-copy $(subst /,\,$(APRUTIL))\include\*.h           $(INSTALL)\$(BASEDIR)\include\*.*
	-copy $(subst /,\,$(APR))\*.imp                     $(INSTALL)\$(BASEDIR)\lib\*.*
	-copy $(subst /,\,$(NWOS))\*.xdc                    $(INSTALL)\$(BASEDIR)\lib\*.*

prebuild :: FORCE
	$(MAKE) -C server -f NWGNUMakefile
	$(MAKE) -C srclib/pcre -f NWGNUMakefile
	$(CHKNOT) $(PREBUILD_INST)\nul          mkdir $(PREBUILD_INST)
	-copy $(AP_WORK)\server\$(OBJDIR)\*.nlm $(PREBUILD_INST)\*.*
	-copy $(AP_WORK)\srclib\pcre\$(basename $(OBJDIR))\*.nlm $(PREBUILD_INST)\*.*

#
# Any specialized rules here
#

vpath %.c server:modules/arch/netware:modules/http:modules/aaa:modules/mappers
vpath %.c modules/generators:modules/metadata:modules/filters:modules/loggers
vpath %.c os/netware:server/mpm/netware:srclib/pcre

#
# Include the 'tail' makefile that has targets that depend on variables defined
# in this makefile
#

include $(AP_WORK)\build\NWGNUtail.inc


