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

SUBDIRS = \
	$(EOLIST)

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

ifndef EnvironmentDefined
include $(APR_WORK)\build\NWGNUhead.inc
endif

#include $(APR)\build\NWGNUcustom.inc

#
# build this level's files

#
# Make sure all needed macro's are defined
#

# LINK_STATIC = 1

# for now defined here - should finally go into build/NWGNUenvironment.inc
SQLITE3_INC = $(SQLITE3SDK)/src
SQLITE3_IMP = $(SQLITE3SDK)/lsqlite3.imp
SQLITE3_LIB = $(SQLITE3SDK)/lsqlite3.lib
SQLITE3_NLM = lsqlite3

#
# These directories will be at the beginning of the include list, followed by
# INCDIRS
#
XINCDIRS	+= \
			$(APR)/include/arch/netware \
			$(APR)/include \
			$(APRUTIL)/include \
			$(APRUTIL)/include/private \
			$(APR) \
			$(SQLITE3_INC) \
			$(EOLIST)

#
# These flags will come after CFLAGS
#
XCFLAGS		+= \
			$(EOLIST)

#
# These defines will come after DEFINES
#
XDEFINES	+= \
			-DAPU_HAVE_SQLITE3=1 \
			$(EOLIST)

#
# These flags will be added to the link.opt file
#
XLFLAGS		+= \
			$(EOLIST)

ifdef LINK_STATIC
XLFLAGS		+= \
			-l $(SQLITE3SDK) \
			$(EOLIST)
endif

#
# 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	= dbdsqli3

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

#
# This is used by the '-threadname' directive.  If left blank,
# NLM_NAME Thread will be used.
#
NLM_THREAD_NAME	= dbdsqli3

#
# If this is specified, it will override VERSION value in
# $(AP_WORK)\build\NWGNUenvironment.inc
#
NLM_VERSION	=

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


#
# If this is specified it will be used by the link '-entry' directive
#
NLM_ENTRY_SYM	= _LibCPrelude

#
# If this is specified it will be used by the link '-exit' directive
#
NLM_EXIT_SYM	= _LibCPostlude

#
# If this is specified it will be used by the link '-check' directive
#
NLM_CHECK_SYM	=

#
# If these are specified it will be used by the link '-flags' directive
#
NLM_FLAGS	= AUTOUNLOAD, PSEUDOPREEMPTION

#
# If this is specified it will be linked in with the XDCData option in the def
# file instead of the default of $(NWOS)/apache.xdc.  XDCData can be disabled
# by setting APACHE_UNIPROC in the environment
#
XDCDATA		=

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

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

ifeq ($(LINK_STATIC),1)
FILES_nlm_libs += \
	$(SQLITE3_LIB) \
	$(EOLIST)
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 = \
	aprlib \
	libc \
	$(EOLIST)

ifneq ($(LINK_STATIC),1)
FILES_nlm_modules += \
	$(SQLITE3_NLM) \
	$(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 = \
	@$(APR)/aprlib.imp \
	@libc.imp \
	apr_dbd_mutex_lock \
	apr_dbd_mutex_unlock \
	$(EOLIST)

ifneq ($(LINK_STATIC),1)
FILES_nlm_Ximports += \
	@$(SQLITE3_IMP) \
	$(EOLIST)
endif

#
# Any symbols exported to here
#
FILES_nlm_exports = \
	apr_dbd_sqlite3_driver \
	$(EOLIST)

#
# These are the OBJ files needed to create the LIB target above.
# Paths must all use the '/' character
#
FILES_lib_objs = \
	$(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 $(AP_WORK)\build\NWGNUhead.inc for examples)
#
install :: nlms FORCE

#
# Any specialized rules here
#

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

include $(APR_WORK)\build\NWGNUtail.inc



