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

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

ifndef EnvironmentDefined
include $(AP_WORK)\build\NWGNUhead.inc
endif

#
# These directories will be at the beginning of the include list, followed by
# INCDIRS
#
XINCDIRS	+= \
			$(AP_WORK)/include \
			$(NWOS) \
			$(AP_WORK)/modules/http \
			$(AP_WORK)/modules/arch/netware \
			$(AP_WORK)/srclib/apr/include \
			$(AP_WORK)/srclib/apr-util/include \
			$(AP_WORK)/srclib/apr \
			$(EOLIST)

#
# These flags will come after CFLAGS
#
XCFLAGS		+= \
			-prefix pre_nw.h \
			$(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		= proxycon

#
# This is used by the link '-desc ' directive. 
# If left blank, NLM_NAME will be used.
#
NLM_DESCRIPTION	= Apache $(VERSION_STR) Proxy Connection Sub-Module

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

#
# 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	= 8192


#
# 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	=

#
# If these are specified it will be used by the link '-flags' directive
#
NLM_FLAGS		=  AUTOUNLOAD, 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)/proxycon.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)/proxy_connect.o \
	$(OBJDIR)/proxy_util.o \
	$(EOLIST)

#
# 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 \
	proxy \
	$(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 = \
	@$(APR)/aprlib.imp \
	@$(NWOS)/httpd.imp \
	@libc.imp \
	proxy_module \
	proxy_hook_scheme_handler \
	proxy_hook_canon_handler \
	$(EOLIST)
 
#   
# Any symbols exported to here
#
FILES_nlm_exports = \
	proxy_connect_module \
	$(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

#
# Any specialized rules here
#

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

include $(AP_WORK)\build\NWGNUtail.inc

