#
# 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/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_fnmatch.o \
	$(OBJDIR)/apr_getpass.o \
	$(OBJDIR)/apr_hash.o \
	$(OBJDIR)/apr_pools.o \
	$(OBJDIR)/apr_random.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 \
	$(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

# 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


