#
# 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_redis.o \
	$(OBJDIR)/apr_reslist.o \
	$(OBJDIR)/apr_rmm.o \
	$(OBJDIR)/apr_sha1.o \
	$(OBJDIR)/apr_siphash.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:redis: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


