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

SUBDIRS = \
	build \
	xml \
	$(EOLIST)

ifdef WITH_APR_DBD
SUBDIRS += \
	dbd \
	$(EOLIST) 
endif

ifdef WITH_APR_DBM
SUBDIRS += \
	dbm \
	$(EOLIST) 
endif

#
# Get the 'head' of the build environment.  This includes default targets and
# paths to tools
#
ifndef APR_WORK
export APR_WORK = $(CURDIR)
endif
include $(APR_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 \
			$(APR)/include/private \
			$(APR)/include/arch/netware \
			$(APR)/include/arch/unix \
			$(APR)/dbm/sdbm \
			$(APR)/random/unix \
			$(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	= aprlib

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

#
# 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 = \
	$(OBJDIR)/$(NLM_NAME).nlm \
	$(EOLIST)

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

#
# These are the OBJ files needed to create the NLM target above.
# Paths must all use the '/' character
#
FILES_nlm_objs = \
	$(OBJDIR)/libprews.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 = \
	$(PRELUDE) \
	$(APRLIB) \
	$(APRXMLLIB) \
	$(EOLIST)

ifdef EXPATSDK
ifdef EXPAT_LINK_STATIC
FILES_nlm_libs += \
	$(EXPAT_LIB) \
	$(EOLIST)
endif
endif

#
# 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 = \
	libc \
	$(EOLIST)

# Include the Winsock libraries if Winsock is being used
ifndef USE_STDSOCKETS
FILES_nlm_modules += ws2_32 \
	$(EOLIST)
endif

ifdef EXPATSDK
ifndef EXPAT_LINK_STATIC
FILES_nlm_modules += \
	$(EXPAT_NLM) \
	$(EOLIST)
endif
endif

#
# 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 = \
	@$(NOVI)/libc.imp \
	@$(NOVI)/netware.imp \
	$(EOLIST)

# Include the Winsock imports if Winsock is being used
ifndef USE_STDSOCKETS
FILES_nlm_Ximports +=  \
	@$(NOVI)/ws2nlm.imp \
	$(EOLIST)
FILES_nlm_imports +=  \
	WSAStartupRTags \
	WSACleanupRTag \
	$(EOLIST)
endif

ifdef EXPATSDK
ifndef EXPAT_LINK_STATIC
FILES_nlm_Ximports += \
	@$(EXPAT_IMP) \
	$(EOLIST)
endif
endif

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

#
# These are the OBJ files needed to create the LIB target above.
# Paths must all use the '/' character
#
FILES_lib_objs = \
	$(OBJDIR)/apr_atomic.o \
	$(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_mmap.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_cpystrn.o \
	$(OBJDIR)/apr_date.o \
	$(OBJDIR)/apr_dbd.o \
	$(OBJDIR)/apr_dbm.o \
	$(OBJDIR)/apr_dbm_berkeleydb.o \
	$(OBJDIR)/apr_dbm_sdbm.o \
	$(OBJDIR)/apr_escape.o \
	$(OBJDIR)/apr_fnmatch.o \
	$(OBJDIR)/apr_getpass.o \
	$(OBJDIR)/apr_hash.o \
	$(OBJDIR)/apr_hooks.o \
	$(OBJDIR)/apr_md4.o \
	$(OBJDIR)/apr_md5.o \
	$(OBJDIR)/apr_memcache.o \
	$(OBJDIR)/apr_passwd.o \
	$(OBJDIR)/apr_pools.o \
	$(OBJDIR)/apr_queue.o \
	$(OBJDIR)/apr_random.o \
	$(OBJDIR)/apr_reslist.o \
	$(OBJDIR)/apr_rmm.o \
	$(OBJDIR)/apr_sha1.o \
 	$(OBJDIR)/apr_skiplist.o \
	$(OBJDIR)/apr_snprintf.o \
	$(OBJDIR)/apr_strings.o \
	$(OBJDIR)/apr_strmatch.o \
	$(OBJDIR)/apr_strnatcmp.o \
	$(OBJDIR)/apr_strtok.o \
	$(OBJDIR)/apr_tables.o \
	$(OBJDIR)/apr_thread_pool.o \
	$(OBJDIR)/apr_uri.o \
	$(OBJDIR)/apu_dso.o \
	$(OBJDIR)/buffer.o \
	$(OBJDIR)/charset.o \
	$(OBJDIR)/crypt_blowfish.o \
	$(OBJDIR)/common.o \
	$(OBJDIR)/copy.o \
	$(OBJDIR)/dir.o \
	$(OBJDIR)/dso.o \
	$(OBJDIR)/env.o \
	$(OBJDIR)/errorcodes.o \
	$(OBJDIR)/fileacc.o \
	$(OBJDIR)/filedup.o \
	$(OBJDIR)/filepath.o \
	$(OBJDIR)/filepath_util.o \
	$(OBJDIR)/filestat.o \
	$(OBJDIR)/filesys.o \
	$(OBJDIR)/flock.o \
	$(OBJDIR)/fullrw.o \
	$(OBJDIR)/getopt.o \
	$(OBJDIR)/getuuid.o \
	$(OBJDIR)/groupinfo.o \
	$(OBJDIR)/inet_ntop.o \
	$(OBJDIR)/inet_pton.o \
	$(OBJDIR)/mktemp.o \
	$(OBJDIR)/mmap.o \
	$(OBJDIR)/multicast.o \
	$(OBJDIR)/open.o \
	$(OBJDIR)/otherchild.o \
	$(OBJDIR)/pipe.o \
	$(OBJDIR)/pollcb.o \
	$(OBJDIR)/pollset.o \
	$(OBJDIR)/printf.o \
	$(OBJDIR)/proc.o \
	$(OBJDIR)/proc_mutex.o \
	$(OBJDIR)/procsup.o \
	$(OBJDIR)/rand.o \
	$(OBJDIR)/readwrite.o \
	$(OBJDIR)/sdbm.o \
	$(OBJDIR)/sdbm_hash.o \
	$(OBJDIR)/sdbm_lock.o \
	$(OBJDIR)/sdbm_pair.o \
	$(OBJDIR)/seek.o \
	$(OBJDIR)/select.o \
	$(OBJDIR)/sendrecv.o \
	$(OBJDIR)/sha2.o \
	$(OBJDIR)/sha2_glue.o \
	$(OBJDIR)/shm.o \
	$(OBJDIR)/signals.o \
	$(OBJDIR)/sockaddr.o \
	$(OBJDIR)/socket_util.o \
	$(OBJDIR)/sockets.o \
	$(OBJDIR)/sockopt.o \
	$(OBJDIR)/start.o \
	$(OBJDIR)/tempdir.o \
	$(OBJDIR)/thread.o \
	$(OBJDIR)/thread_cond.o \
	$(OBJDIR)/thread_mutex.o \
	$(OBJDIR)/thread_rwlock.o \
	$(OBJDIR)/threadpriv.o \
	$(OBJDIR)/time.o \
	$(OBJDIR)/timestr.o \
	$(OBJDIR)/userinfo.o \
	$(OBJDIR)/uuid.o \
	$(OBJDIR)/version.o \
	$(OBJDIR)/waitio.o \
	$(OBJDIR)/wakeup.o \
	$(OBJDIR)/xlate.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 $(INSTDIRS) FORCE
	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/)
ifndef DEST
	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
	-$(call COPY,$(APR)/LICENSE,$(INSTALLBASE)/)
	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
	@-$(call COPYR,$(APR)/docs,$(INSTALLBASE)/docs/)
endif

ifndef DEST
installdev :: $(INSTDEVDIRS) FORCE
	$(call COPY,$(APR)/include/*.h,$(INSTALLBASE)/include/)
	$(call COPY,$(APR)/*.imp,$(INSTALLBASE)/lib/)
	$(call COPY,$(APR)/misc/netware/*.xdc,$(INSTALLBASE)/lib/)
	$(call COPY,$(APR)/$(TARGET_lib),$(INSTALLBASE)/lib/)
	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/bin/)

$(INSTDEVDIRS) ::
	$(call MKDIR,$@)
endif

#
# Any specialized rules here
#

vpath filepath.c file_io/win32
vpath %.c atomic/netware:strings:tables:passwd:time/unix
vpath %.c file_io/netware:file_io/unix:locks/netware:misc/netware:misc/unix
vpath %.c threadproc/netware:poll/unix:shmem/unix:support/unix:random/unix
vpath %.c dso/netware:memory/unix:mmap/unix:user/netware:util-misc
vpath %.c buckets:crypto:dbd:dbm:dbm/sdbm:encoding:hooks:memcache:misc:strmatch:uri:xlate

# Use the win32 network_io if Winsock is being used
ifndef USE_STDSOCKETS
vpath %.c network_io/win32
endif
vpath %.c network_io/unix

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

include $(APRBUILD)/NWGNUtail.inc


