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

SUBDIRS = \
	xml \
	$(EOLIST) 

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

include $(APR_WORK)\build\NWGNUhead.inc

#
# 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 \
			$(APR)/include/arch/NetWare \
			$(APRUTIL)/include \
			$(APRUTIL)/uri \
			$(APRUTIL)/dbm/sdbm \
			$(APRUTIL)/include/private \
			$(APRUTIL)/xml/expat/lib \
			$(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		= 

#
# This is used by the link '-desc ' directive. 
# If left blank, NLM_NAME will be used.
#
NLM_DESCRIPTION	= 

#
# This is used by the '-threadname' directive.  If left blank,
# NLM_NAME Thread will be used.
#
NLM_THREAD_NAME	= 
#
# If this is specified, it will override VERSION value in 
# $(APR_WORK)\build\NWGNUenvironment.inc
#
NLM_VERSION		=

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

#
# 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 this is 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 $(APR)/misc/netware/apache.xdc.  XDCData can 
# be disabled by setting APACHE_UNIPROC in the environment
#
XDCDATA         = 

#
# Declare all target files (you must add your files here)
#

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

#
# If there is an LIB target, put it here
#
TARGET_lib = \
	$(OBJDIR)/aprutil.lib \
	$(EOLIST)

#
# These are the OBJ files needed to create the NLM target above.
# Paths must all use the '/' character
#
FILES_nlm_objs = \
	$(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 = \
	$(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 = \
	$(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 = \
	$(EOLIST)
 
#   
# Any symbols exported to here
#
FILES_nlm_exports = \
	$(EOLIST)
	
#   
# These are the OBJ files needed to create the LIB target above.
# Paths must all use the '/' character
#
FILES_lib_objs = \
	$(OBJDIR)/apr_base64.o \
	$(OBJDIR)/apr_brigade.o \
	$(OBJDIR)/apr_buckets.o \
	$(OBJDIR)/apr_buckets_alloc.o \
	$(OBJDIR)/apr_buckets_eos.o \
	$(OBJDIR)/apr_buckets_file.o \
	$(OBJDIR)/apr_buckets_flush.o \
	$(OBJDIR)/apr_buckets_heap.o \
	$(OBJDIR)/apr_buckets_pipe.o \
	$(OBJDIR)/apr_buckets_pool.o \
	$(OBJDIR)/apr_buckets_refcount.o \
	$(OBJDIR)/apr_buckets_simple.o \
	$(OBJDIR)/apr_buckets_socket.o \
	$(OBJDIR)/apr_date.o \
	$(OBJDIR)/apr_dbm.o \
	$(OBJDIR)/apr_dbm_sdbm.o \
	$(OBJDIR)/apr_hooks.o \
	$(OBJDIR)/apr_md4.o \
	$(OBJDIR)/apr_rmm.o \
	$(OBJDIR)/apr_sha1.o \
	$(OBJDIR)/apr_uri.o \
	$(OBJDIR)/sdbm.o \
	$(OBJDIR)/sdbm_hash.o \
	$(OBJDIR)/sdbm_lock.o \
	$(OBJDIR)/sdbm_pair.o \
	$(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 $(APR_WORK)\build\NWGNUhead.inc for examples)
#
install :: nlms FORCE

#
# Any specialized rules here
#

$(OBJDIR)/%.o: buckets/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) buckets\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt
	
$(OBJDIR)/%.o: crypto/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) crypto\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt

$(OBJDIR)/%.o: dbm/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) dbm\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt	

$(OBJDIR)/%.o: dbm/sdbm/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) dbm\sdbm\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt

$(OBJDIR)/%.o: encoding/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) encoding\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt

$(OBJDIR)/%.o: hooks/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) hooks\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt

$(OBJDIR)/%.o: misc/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) misc\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt

$(OBJDIR)/%.o: uri/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) uri\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt

$(OBJDIR)/%.o: xml/%.c $(OBJDIR)\cc.opt
	@echo Compiling $<
	$(CC) xml\$(<F) -o=$(OBJDIR)\$(@F) @$(OBJDIR)\cc.opt


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

include $(APR_WORK)\build\NWGNUtail.inc


