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

OSSLINC = $(OSSLSDK)/outinc_nw_libc
OSSLLIB = $(OSSLSDK)/out_nw_libc
OSSLAPP = $(OSSLSDK)/apps

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

V_PATH = \
			$(SERFSRC) \
			$(SERFSRC)/buckets \
			$(ZLIBSDK) \
			$(EOLIST)

ifeq "$(wildcard $(SERFSRC)/incoming.c)" "$(SERFSRC)/incoming.c"
V_PATH += \
			$(SERFSRC)/auth \
			$(EOLIST)
endif

#
# These directories will be at the beginning of the include list, followed by
# INCDIRS
#
XINCDIRS	+= \
			$(V_PATH) \
			$(OSSLINC) \
			$(OSSLINC)/openssl \
			$(APR)/include \
			$(APRUTIL)/include \
			$(SRC)/include \
			$(NWOS) \
			$(EOLIST)

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

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

#
# These flags will be added to the link.opt file
#
XLFLAGS		+= \
			-l $(OSSLLIB) \
			$(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	= serf

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

#
# This is used by the '-threadname' directive.  If left blank,
# NLM_NAME Thread will be used.
#
NLM_THREAD_NAME	= Serf 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	=

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

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

#
# 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)/$(NLM_NAME).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)/mod_serf.o \
	$(EOLIST)

# Build serf from source
FILES_nlm_objs += \
	$(OBJDIR)/context.o \
	$(OBJDIR)/aggregate_buckets.o \
	$(OBJDIR)/allocator.o \
	$(OBJDIR)/barrier_buckets.o \
	$(OBJDIR)/buckets.o \
	$(OBJDIR)/chunk_buckets.o \
	$(OBJDIR)/dechunk_buckets.o \
	$(OBJDIR)/deflate_buckets.o \
	$(OBJDIR)/file_buckets.o \
	$(OBJDIR)/headers_buckets.o \
	$(OBJDIR)/limit_buckets.o \
	$(OBJDIR)/request_buckets.o \
	$(OBJDIR)/response_buckets.o \
	$(OBJDIR)/simple_buckets.o \
	$(OBJDIR)/socket_buckets.o \
	$(OBJDIR)/ssl_buckets.o \
	$(EOLIST)

ifeq "$(wildcard $(SERFSRC)/incoming.c)" "$(SERFSRC)/incoming.c"
ifeq "$(wildcard $(SERFSRC)/buckets/iovec_buckets.c)" "$(SERFSRC)/buckets/iovec_buckets.c"
FILES_nlm_objs += \
	$(OBJDIR)/auth.o \
	$(OBJDIR)/auth_basic.o \
	$(OBJDIR)/auth_digest.o \
	$(OBJDIR)/bwtp_buckets.o \
	$(OBJDIR)/incoming.o \
	$(OBJDIR)/iovec_buckets.o \
	$(OBJDIR)/outgoing.o \
	$(OBJDIR)/ssltunnel.o \
	$(EOLIST)
ifeq "$(wildcard $(SERFSRC)/buckets/response_body_buckets.c)" "$(SERFSRC)/buckets/response_body_buckets.c"
FILES_nlm_objs += \
	$(OBJDIR)/response_body_buckets.o \
	$(EOLIST)
endif
else
$(error This libserf version is broken for NetWare platform!)
endif
endif

# Build zlib from source
FILES_nlm_objs += \
	$(OBJDIR)/adler32.o \
	$(OBJDIR)/crc32.o \
	$(OBJDIR)/deflate.o \
	$(OBJDIR)/inflate.o \
	$(OBJDIR)/inffast.o \
	$(OBJDIR)/inftrees.o \
	$(OBJDIR)/trees.o \
	$(OBJDIR)/zutil.o \
	$(EOLIST)

ifeq "$(wildcard $(ZLIBSDK)/infblock.c)" "$(ZLIBSDK)/infblock.c"
FILES_nlm_objs += \
	$(OBJDIR)/infblock.o \
	$(OBJDIR)/infcodes.o \
	$(OBJDIR)/infutil.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 = \
	$(OSSLLIB)/crypto.lib \
	$(OSSLLIB)/ssl.lib \
	$(PRELUDE) \
	$(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 = \
	@aprlib.imp \
	@httpd.imp \
	@libc.imp \
	GetProcessSwitchCount \
	RunningProcess \
	GetSuperHighResolutionTimer \
	$(EOLIST)

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

#
# Any symbols exported to here
#
FILES_nlm_exports = \
	serf_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
#

vpath %.c $(V_PATH)

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

include $(APBUILD)/NWGNUtail.inc
