# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
# 
# The contents of this file are subject to the Mozilla Public License Version 
# 1.1 (the "License"); you may not use this file except in compliance with 
# the License. You may obtain a copy of the License at 
# http://www.mozilla.org/MPL/
# 
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
# 
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
# 
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998-1999
# the Initial Developer. All Rights Reserved.
# 
# Contributor(s):
# 
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
# 
# ***** END LICENSE BLOCK ***** 

# UNIX Makefile for Directory SDK examples
#
# SSL examples are not built by default.  Use 'make ssl' to build them.
# NSPR examples are not built by default.  Use 'make nspr' to build them.
#

###############################################################################
# If you are not building on Solaris, you will need to comment out the
# Solaris section and uncomment the appropriate section for your platform.
#
# Chances are you will need to do a little bit of work in order to get the
# examples to compile.  If you are not compiling on Solaris, use the
# Solaris builds as a model for the libraries you need etc.  Chances are 
# they are the most up-to-date
#

# For Solaris (32 bit)
EXTRACFLAGS=
EXTRALDFLAGS=-lsocket -lnsl 
EXTRANSPRLDFLAGS=-mt
SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
LDAPLIB=ldap50
LDAPPRLIB=prldap50
NSPRLIB=nspr4
CC=cc

# For Solaris (64 bit)
#EXTRACFLAGS=
#EXTRALDFLAGS=-lsocket -lnsl 
#EXTRANSPRLDFLAGS=-mt
#SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=cc -xarch=v9

# For HP/UX (32 bit)
#EXTRACFLAGS=-Dhpux -D_HPUX_SOURCE -D_REENTRANT -Aa
#EXTRALDFLAGS=-Wl,+s+b
#SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=cc

# For HP/UX (64 bit)
#EXTRACFLAGS=-DHPUX11 -DIS_64 +e +DA2.0W +DChpux +DS2.0 
#EXTRACFLAGS+=-D_LARGEFILE64_SOURCE -D_PR_HAVE_OFF64_T
#EXTRALDFLAGS=-lpthread +DA2.0W +DS2.0
#SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=/opt/ansic/bin/cc


# For IRIX
#EXTRACFLAGS=
#EXTRALDFLAGS=
#SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=cc

# For AIX
#EXTRACFLAGS=
#EXTRALDFLAGS=-brtl
#SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=cc

# For Digital UNIX 4.0
#EXTRACFLAGS=
#EXTRALDFLAGS=-taso -rpath ../lib
#SLDAPLIB=ldap50 -lssldap50 -lssl3 -lnss3 
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=cc

# For Linux 2.2
#EXTRACFLAGS=
#EXTRALDFLAGS=-lpthread
#LDAPLIB=ldapssl50
#LDAPLIB=ldap50
#LDAPPRLIB=prldap50
#NSPRLIB=nspr4
#CC=gcc

###############################################################################
# You should not need to change anything below here....

INTERNAL_LIBLDAP_HEADERS=$(wildcard ../libraries/libldap/*.h)
ifeq (,$(findstring h, $(INTERNAL_LIBLDAP_HEADERS)))
IN_SRC_TREE=0
else
IN_SRC_TREE=1
endif

ifneq ($(IN_SRC_TREE),1)
# we are not in the C SDK source tree... so must be in a binary distribution
INCDIR=../include
LIBDIR=../lib
NSPRINCDIR=../include
NSPRLIBDIR=../lib

else
# we are in the C SDK source tree... paths to headers and libs are different
NS_DEPTH	= ../../..
LDAP_SRC	= ..
NSCP_DISTDIR	= ../../../../dist
NSPR_TREE	= ../..
MOD_DEPTH	= ../..

ifeq ($(HAVE_CCONF), 1)
COMPS_FROM_OBJDIR=1
endif

include $(NSPR_TREE)/config/config.mk

ifeq ($(COMPS_FROM_OBJDIR),1)
NSPR_DISTDIR=$(NSCP_DISTDIR)/$(OBJDIR_NAME)
else
NSPR_DISTDIR=$(NSCP_DISTDIR)
endif

INCDIR=$(NSCP_DISTDIR)/public/ldap
LIBDIR=$(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib
NSPRINCDIR=$(NSPR_DISTDIR)/include
NSPRLIBDIR=$(NSPR_DISTDIR)/lib
endif

LIBS=-L$(LIBDIR) -l$(LDAPLIB) $(EXTRALDFLAGS)
NSPRLIBS=$(EXTRANSPRLDFLAGS) -L$(NSPRLIBDIR) -l$(NSPRLIB) -l$(LDAPPRLIB)
SLIBS=-L$(LIBDIR) $(NSPRLIBS) -l$(SLDAPLIB) $(EXTRALDFLAGS)
OPTFLAGS=-g
CFLAGS=$(OPTFLAGS) -I$(INCDIR) -I$(NSPRINCDIR) $(EXTRACFLAGS)
NSPRCFLAGS=-I$(NSPRINCDIR)

PROGS=search asearch csearch psearch rdentry getattrs srvrsort modattrs add del compare modrdn ppolicy getfilt crtfilt

SSLPROGS=ssnoauth ssearch

NSPRPROGS=nsprio

ALLPROGS= $(PROGS) $(SSLPROGS) $(NSPRPROGS)

standard:	$(PROGS)

ssl:		$(SSLPROGS)

nspr:		$(NSPRPROGS)

all:		$(ALLPROGS)

purify:		$(PROGS)
		make clean; make CC="purify $(CC)"

search:		search.o
		$(CC) -o search search.o $(LIBS)

search.o:	examples.h

csearch:	csearch.o
		$(CC) -o csearch csearch.o $(LIBS)

csearch.o:	examples.h

psearch:	psearch.o
		$(CC) -o psearch psearch.o $(LIBS)

psearch.o:	examples.h

ssearch:	ssearch.o
		$(CC) -o ssearch ssearch.o $(SLIBS)

ssearch.o:	examples.h

ssnoauth:	ssnoauth.o
		$(CC) -o ssnoauth ssnoauth.o $(SLIBS)

ssnoauth.o:	examples.h

rdentry:	rdentry.o
		$(CC) -o rdentry rdentry.o $(LIBS)

rdentry.o:	examples.h

getattrs:	getattrs.o
		$(CC) -o getattrs getattrs.o $(LIBS)

getattrs.o:	examples.h

srvrsort:	srvrsort.o
		$(CC) -o srvrsort srvrsort.o $(LIBS)

srvrsort.o:	examples.h

modattrs:	modattrs.o
		$(CC) -o modattrs modattrs.o $(LIBS)

modattrs.o:	examples.h

asearch:	asearch.o
		$(CC) -o asearch asearch.o $(LIBS)

asearch.o:	examples.h

add:		add.o
		$(CC) -o add add.o $(LIBS)

add.o:		examples.h

del:		del.o
		$(CC) -o del del.o $(LIBS)

del.o:		examples.h

compare:	compare.o
		$(CC) -o compare compare.o $(LIBS)

compare.o:	examples.h

modrdn:		modrdn.o
		$(CC) -o modrdn modrdn.o $(LIBS)

modrdn.o:	examples.h

ppolicy:	ppolicy.o
		$(CC) -o ppolicy ppolicy.o $(LIBS)

ppolicy.o:	examples.h

getfilt:	getfilt.o
		$(CC) -o getfilt getfilt.o $(LIBS)

getfilt.o:	examples.h

crtfilt:	crtfilt.o
		$(CC) -o crtfilt crtfilt.o $(LIBS)

crtfilt.o:	examples.h

nsprio:		nsprio.o
		$(CC) -o nsprio nsprio.o $(LIBS) $(NSPRLIBS)

nsprio.o:	examples.h

runall:		$(PROGS)
		@for i in $(PROGS); do \
		    echo "-------------------------------------------------"; \
		    echo "Executing $$i example..."; \
		    ./$$i; \
		    echo "$$i example done."; \
		done

clean:
		/bin/rm -f $(ALLPROGS) *.o a.out core
