#
# Define our macros with defaults if we dont got them already.
#
ifndef APR_WORK
export APR_WORK = $(CURDIR)
endif
ifneq "$(wildcard $(APR_WORK)/include/apr_version.h)" "$(APR_WORK)/include/apr_version.h"
$(error APR_WORK does not point to a valid APR source tree) 
endif
ifndef APU_WORK
export APU_WORK = $(CURDIR)/../apr-util
endif
ifneq "$(wildcard $(APU_WORK)/include/apu_version.h)" "$(APU_WORK)/include/apu_version.h"
$(error APU_WORK does not point to a valid APU source tree) 
endif

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

SUBDIRS = \
		build \
		$(APU_WORK) \
		$(EOLIST)

ifeq "$(TEST)" "1"
SUBDIRS += \
		test \
		$(APU_WORK)/test \
		$(EOLIST)
endif

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

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)/memory/unix \
			$(APR)/random/unix \
			$(APU)/include \
			$(APU)/xml \
			$(LDAPSDK)/inc \
			$(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)/aprlib.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) \
	$(APULIB) \
	$(APULDAPLIB) \
	$(APUXMLLIB) \
	$(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 = \
	Libc \
	$(EOLIST)

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

#If the LDAP support is defined then add the auto-load modules
ifneq "$(LDAPSDK)" ""
FILES_nlm_modules += \
	lldapsdk \
	lldapssl \
	$(EOLIST)
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 = \
	@libc.imp \
	@netware.imp \
	$(EOLIST)

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

#If the LDAP support is defined then add the imports
ifneq "$(LDAPSDK)" ""
FILES_nlm_Ximports += \
	@lldapsdk.imp \
	@lldapssl.imp \
	$(EOLIST)
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_cpystrn.o \
	$(OBJDIR)/apr_escape.o \
	$(OBJDIR)/apr_fnmatch.o \
	$(OBJDIR)/apr_getpass.o \
	$(OBJDIR)/apr_hash.o \
	$(OBJDIR)/apr_pools.o \
	$(OBJDIR)/apr_random.o \
	$(OBJDIR)/apr_skiplist.o \
	$(OBJDIR)/apr_snprintf.o \
	$(OBJDIR)/apr_strings.o \
	$(OBJDIR)/apr_strnatcmp.o \
	$(OBJDIR)/apr_strtok.o \
	$(OBJDIR)/apr_tables.o \
	$(OBJDIR)/buffer.o \
	$(OBJDIR)/charset.o \
	$(OBJDIR)/copy.o \
	$(OBJDIR)/common.o \
	$(OBJDIR)/dir.o \
	$(OBJDIR)/dso.o \
	$(OBJDIR)/errorcodes.o \
	$(OBJDIR)/env.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)/groupinfo.o \
	$(OBJDIR)/inet_pton.o \
	$(OBJDIR)/inet_ntop.o \
	$(OBJDIR)/mktemp.o \
	$(OBJDIR)/mmap.o \
	$(OBJDIR)/multicast.o \
	$(OBJDIR)/open.o \
	$(OBJDIR)/pipe.o \
	$(OBJDIR)/otherchild.o \
	$(OBJDIR)/proc.o \
	$(OBJDIR)/procsup.o \
	$(OBJDIR)/proc_mutex.o \
	$(OBJDIR)/rand.o \
	$(OBJDIR)/readwrite.o \
	$(OBJDIR)/seek.o \
	$(OBJDIR)/pollcb.o \
	$(OBJDIR)/pollset.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)/version.o \
	$(OBJDIR)/waitio.o \
	$(OBJDIR)/wakeup.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)/LICENSE,$(INSTALLBASE)/)
	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
	-$(call COPY,$(APU)/STATUS,$(INSTALLBASE)/STATUS.apu)
	-$(call COPY,$(APU)/CHANGES,$(INSTALLBASE)/CHANGES.apu)
	-$(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_nlm),$(INSTALLBASE)/bin/)
	$(call COPY,$(APRLIB),$(INSTALLBASE)/lib/)
	$(call COPY,$(APULIB),$(INSTALLBASE)/lib/)
	$(call COPY,$(APULDAPLIB),$(INSTALLBASE)/lib/)
	$(call COPY,$(APUXMLLIB),$(INSTALLBASE)/lib/)

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

#
# Any specialized rules here
#

vpath %.c atomic/netware:strings:tables:passwd:lib:time/unix
vpath %.c file_io/unix:locks/netware:misc/netware:misc/unix:threadproc/netware
vpath %.c poll/unix:shmem/unix:support/unix:random/unix
vpath %.c dso/netware:memory/unix:mmap/unix:user/netware:encoding

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

$(OBJDIR)/%.o: file_io/netware/%.c $(OBJDIR)/$(NLM_NAME)_cc.opt
#	@echo Compiling $<
	@echo $(DL)CC   $<$(DL)
	$(CC) $< -cwd source -o=$@ @$(OBJDIR)/$(NLM_NAME)_cc.opt

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

include $(APRBUILD)/NWGNUtail.inc


