#
# Makefile for the slapd backend
#
# $Id: Makefile,v 1.30 2005/03/15 21:11:54 graziano Exp $
#

# include common variables
include ../../Makedefs

# objects we create
OBJS	=		$(buildobjdir)/nws_back_search.o \
			$(buildobjdir)/nws_back_modify.o \
			$(buildobjdir)/nws_back_config.o \
			$(buildobjdir)/nws_back_init.o \
			$(buildobjdir)/nws_back_unbind.o \
			$(buildobjdir)/nws_back_open.o \
			$(buildobjdir)/nws_back_rb.o \
			$(buildobjdir)/nws_cache_reg.o \
			$(buildobjdir)/nws_ldap.o \
			$(buildobjdir)/nws_obj.o \
			$(buildobjdir)/nws_cache_meas.o \
			$(buildobjdir)/nws_cache_parse.o \
			$(buildobjdir)/nws_cache_obj.o \
			$(buildobjdir)/nws_ldap_meas.o 


LOOBJS	=		$(buildobjdir)/nws_back_search.lo \
			$(buildobjdir)/nws_back_modify.lo \
			$(buildobjdir)/nws_back_config.lo \
			$(buildobjdir)/nws_back_init.lo \
			$(buildobjdir)/nws_back_unbind.lo \
			$(buildobjdir)/nws_back_open.lo \
			$(buildobjdir)/nws_back_rb.lo \
			$(buildobjdir)/nws_cache_reg.lo \
			$(buildobjdir)/nws_ldap.lo \
			$(buildobjdir)/nws_obj.lo \
			$(buildobjdir)/nws_cache_meas.lo \
			$(buildobjdir)/nws_cache_parse.lo \
			$(buildobjdir)/nws_cache_obj.lo \
			$(buildobjdir)/nws_ldap_meas.lo 


.PHONY: all clean dist install
# we need to check if we can compile nwslapd. In general, the NWSLAPD_INCLUDES
# variable indicates some sort of openLDAP installation, LDAP_SRC_LOCATION
# indicates a Globus-less openldap integration, and the GLOBUS_FLAVOR 
# variable will indicate a Globus-openldap inetgration
all:
	@if test -n "${NWSLAPD_INCLUDES}" -a -n "${LDAP_SRC_LOCATION}"; then \
		(cd ${LDAP_SRC_LOCATION}; make depend; make all;); \
	fi
	
	@if test -n "${NWSLAPD_INCLUDES}" -o -n "${GLOBUS_FLAVOR}"; then \
		($(MAKE) libback_nws.la) || exit $$?; \
	fi

# we have in install here because the installation is different enough
# for GLOBUS to be a pain (libexec and flavor) to have it done at the TOP
# level
install: all
	@if test -n "${NWSLAPD_INCLUDES}" -o -n "${GLOBUS_FLAVOR}"; then \
		$(INSTALL) -d $(etcdir); \
		$(INSTALL) -d $(NWSLAPD_VAR); \
		$(INSTALL) -d $(NWSLAPD_RPATH); \
		$(LIBTOOL) --mode=install $(INSTALL) libback_nws.la $(NWSLAPD_RPATH); \
		$(CP) grid-info-nws.conf nws.schema $(etcdir); \
	fi

	@if test -n "${LDAP_SRC_LOCATION}" -a -n "${NWSLAPD_INCLUDES}"; then \
		$(INSTALL) -d $(etcdir)/openldap/schema; \
		$(INSTALL) -m 644 ${LDAP_SRC_LOCATION}/servers/slapd/schema/core.schema $(etcdir)/openldap/schema; \
		$(INSTALL) -m 755 ${LDAP_SRC_LOCATION}/servers/slapd/slapd $(prefix)/libexec/nwslapd; \
		$(CP) nwslapd.conf $(etcdir); \
	fi		

install-man:
	@echo "Installing nwslapd man pages..."

libback_nws.la: $(LOOBJS)
	@if test "${LIBTOOL}" = "Appropriate_libtool"; then \
		echo "libtool not found!!" ; exit 1 ; fi
	$(LIBTOOL) --mode=link $(CC) -o libback_nws.la $(LOOBJS) $(NWSLAPD_LIBS) -rpath $(NWSLAPD_RPATH)

clean:
	$(RM) -rf $(OBJS) $(LOOBJS) .libs libback_nws.la 
	$(RM) -rf ${TOP}/ldapbuild
	
dist:
	@$(INSTALL) -d $(DIST_ROOT)/Server/Nwslapd
	@$(CP) Makefile *.c *.h nws.schema grid-info-nws.conf.in nwslapd.conf.in $(DIST_ROOT)/Server/Nwslapd

# Compilation rules for C.
$(buildobjdir)/%.lo : %.c
	$(LIBTOOL) --mode=compile $(CC) -I${TOP}/$(PORTABILITY)/Forecast $(INCLUDES) $(NWSLAPD_INCLUDES) $(CFLAGS) -c $< -o $@

