#
# To build with exerimental modules set the environment
#  variable WITH_EXPERIMENTAL=1
# To build with the mod_ssl module set the environment
#  variable WITH_SSL=1
# To build with the mod_lua module set the environment
#  variable WITH_LUA=1
# To build with the mod_http2 module set the environment
#  variable WITH_HTTP2=1
#
# Check if LDAP is enabled in APR-UTIL
#
include $(AP_WORK)/build/NWGNUenvironment.inc
ifeq "$(wildcard $(APRUTIL)/include/apr_ldap.h)" "$(APRUTIL)/include/apr_ldap.h"
WITH_LDAP = $(shell $(AWK) '/^\#define APR_HAS_LDAP /{print $$3}' $(APRUTIL)/include/apr_ldap.h)
else
WITH_LDAP = 1
ifneq "$(MAKECMDGOALS)" "clean"
ifneq "$(findstring clobber_,$(MAKECMDGOALS))" "clobber_"
WITH_LDAP = 0
endif
endif
endif

# If USE_STDSOCKETS is defined we allways build mod_ssl
ifdef USE_STDSOCKETS
WITH_SSL = 1
endif

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

SUBDIRS = \
	aaa \
	apreq \
	cache \
	cluster \
	core \
	dav/main \
	dav/fs \
	dav/lock \
	echo \
	examples \
	generators \
	loggers \
	mappers \
	metadata \
	proxy \
	filters \
	database \
	session \
	slotmem \
	$(EOLIST)

# If WITH_LDAP and LDAPSDK have been defined then build the util_ldap module
ifeq "$(WITH_LDAP)" "1"
ifneq "$(LDAPSDK)" ""
SUBDIRS += ldap
endif
endif

# If WITH_SSL and OSSLSDK have been defined then build the mod_ssl module
ifeq "$(WITH_SSL)" "1"
ifneq "$(OSSLSDK)" ""
SUBDIRS += ssl
endif
endif

# If WITH_LUA and LUASRC have been defined then build the mod_lua module
ifeq "$(WITH_LUA)" "1"
ifneq "$(LUASRC)" ""
SUBDIRS += lua
endif
endif

# Allow the mod_http2 module to be built if WITH_HTTP2 is defined
ifeq "$(WITH_HTTP2)" "1"
ifneq "$(NGH2SRC)" ""
SUBDIRS += http2
endif
endif

# Allow the experimental modules to be built if WITH_EXPERIMENTAL is defined
ifeq "$(WITH_EXPERIMENTAL)" "1"
SUBDIRS += experimental
endif

# Allow the debugging modules to be built if WITH_DEBUGGING is defined
ifeq "$(WITH_DEBUGGING)" "1"
SUBDIRS += debugging
endif

# Allow the test modules to be built if WITH_TEST is defined
ifeq "$(WITH_TEST)" "1"
SUBDIRS += test
endif

#If the mod_edir directory exists then build the mod_edir module
ifeq "$(wildcard $(STDMOD)/mod_edir)" "$(STDMOD)/mod_edir"
SUBDIRS += mod_edir
endif

#
# Get the 'head' of the build environment.  This includes default targets and
# paths to tools
#
include $(AP_WORK)/build/NWGNUhead.inc

#
# build this level's files

ifeq "$(wildcard NWGNUmakefile.mak)" "NWGNUmakefile.mak"
include NWGNUmakefile.mak
endif

#
# You can use this target if all that is needed is to copy files to the
# installation area
#
install :: nlms FORCE

