# Generated automatically from Makefile.in by configure.
.SUFFIXES: .lo .to .tlo

prefix=/usr/local
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
sbindir=${exec_prefix}/sbin
libdir=${exec_prefix}/lib
mandir=${prefix}/man
mansubdir=man
sysconfdir=${prefix}/etc
piddir=/var/run
srcdir=.

#CHANGING
gacdir=./gac-0.5.0

top_srcdir=.
buildtoolsdir=$(srcdir)/buildtools

DESTDIR=
SPREAD_PROGRAM=${exec_prefix}/sbin/spread
SP_MAJOR_VERSION=3
SP_MINOR_VERSION=17
SP_PATCH_VERSION=0
VERSION=3.17.0

#Shared Library version -- Must be changed upon each release 
#Rules: major  -- inc for incompatible change
#     : minor  -- inc for bugfix or forward compatible change

LIBVERSION=1.0

PATHS= 

CC=gcc
LD=gcc
CFLAGS=-g -O2 -Wall
CPPFLAGS=-I. -I$(srcdir) -I$(gacdir)/include/  $(PATHS) -DHAVE_CONFIG_H
LDFLAGS=
LIBS=-lnsl  -lm 
THLDFLAGS=-pthread 
THLIBS=-lpthread 
AR=/usr/bin/ar
LEX=/usr/bin/flex
SHCC=gcc
SHLD=gcc -shared
SHCFLAGS=-g -O2 -Wall -fPIC
SHCPPFLAGS= -I. -I$(srcdir) -I$(gacdir)/include/ 
SHLDFLAGS= 
SHLIBS=-lnsl 
RANLIB=ranlib
INSTALL=/usr/bin/install -c
SOFTLINK=ln -s
PERL=/usr/bin/perl
ENT=@ENT@
EXEEXT=

#CHANGING
GACLIBS=$(gacdir)/handle/libhandle.a $(gacdir)/libps/libps.a  $(gacdir)/libtss/libtss.a  $(gacdir)/libasm/libasm.a  $(gacdir)/libgs/libgs.a $(gacdir)/libgac/libgac.a $(gacdir)/certlib/libcert.a $(gacdir)/v3_ext/libgacext.a $(gacdir)/crypto/libcryptutil.a $(gacdir)/utility/libutil.a $(gacdir)/libssl/libcrypto.a



TARGETS=spread$(EXEEXT) spuser$(EXEEXT) spflooder$(EXEEXT) spmonitor$(EXEEXT) sptuser${EXEEXT} libspread.so libtspread.so

LIBSP_OBJS= alarm.o events.o memory.o sp.o

LIBSP_SHOBJS= alarm.lo events.lo memory.lo sp.lo

LIBTSP_OBJS= alarm.to events.to memory.to sp.to

LIBTSP_SHOBJS= alarm.tlo events.tlo memory.tlo sp.tlo

SPREADOBJS= spread.o protocol.o session.o groups.o alarm.o events.o memory.o membership.o data_link.o network.o status.o log.o flow_control.o message.o lex.yy.o y.tab.o configuration.o skiplist.o acm.o acp-permit.o auth-null.o auth-ip.o

MONITOROBJS= monitor.o  alarm.o events.o memory.o data_link.o lex.yy.o y.tab.o configuration.o skiplist.o acm.o

MANPAGES	= docs/SP_connect.3.out docs/SP_disconnect.3.out docs/SP_equal_group_ids.3.out docs/SP_error.3.out docs/SP_join.3.out docs/SP_leave.3.out docs/SP_multicast.3.out docs/SP_multigroup_multicast.3.out docs/SP_multigroup_scat_multicast.3.out docs/SP_poll.3.out docs/SP_receive.3.out docs/SP_scat_multicast.3.out docs/SP_scat_receive.3.out docs/libsp.3.out docs/spread.1.out docs/spuser.1.out docs/sptuser.1.out docs/spmonitor.1.out docs/spflooder.1.out
MANPAGES_IN	= docs/SP_connect.3 docs/SP_disconnect.3 docs/SP_equal_group_ids.3 docs/SP_error.3 docs/SP_join.3 docs/SP_leave.3 docs/SP_multicast.3 docs/SP_multigroup_multicast.3 docs/SP_multigroup_scat_multicast.3 docs/SP_poll.3 docs/SP_receive.3 docs/SP_scat_multicast.3 docs/SP_scat_receive.3 docs/libsp.3 docs/spread.1 docs/spuser.1 docs/sptuser.1 docs/spmonitor.1 docs/spflooder.1
MANTYPE		= doc

PATHSUBS	= \
	-D/etc/spread.conf=$(sysconfdir)/spread.conf \
        -D/var/run/spread.pid=$(piddir)/spread.pid

FIXPATHSCMD	= $(PERL) $(buildtoolsdir)/fixpaths $(PATHSUBS)

all: $(CONFIGFILES) $(MANPAGES) $(TARGETS)

$(SPREADOBJS): config.h
$(MONITOROBJS): config.h

.c.o:
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<

.c.to:
	$(CC) $(CFLAGS) $(CPPFLAGS) -D_REENTRANT -c $< -o $*.to

.c.lo:
	$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -c $< -o $*.lo

.c.tlo:
	$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -D_REENTRANT -c $< -o $*.tlo

parser:
	$(YACC) -d config_parse.y
	$(LEX) config_gram.l

#Disabled now because of timestamp errors causing extra regeneration
#To build parser run "make parser" after ./configure is run.
#lex.yy.c:       config_gram.l y.tab.c
#	$(LEX) config_gram.l

#y.tab.c:        config_parse.y
#	$(YACC) -d config_parse.y

none:	
	@echo "Skipping shared library creation."

install-none:
	@echo "Skipping shared library installation."

libspread.a: $(LIBSP_OBJS)
	$(AR) rv $@ $(LIBSP_OBJS)
	$(RANLIB) $@

libspread.dylib:	$(LIBSP_SHOBJS)
	$(SHLD) -o libspread.$(LIBVERSION).dylib $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS)
	$(SOFTLINK) libspread.$(LIBVERSION).dylib $@

install-libspread.dylib:	libspread.dylib
	$(INSTALL) -m 0755 libspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libspread.$(LIBVERSION).dylib
	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libspread.$(LIBVERSION).dylib libspread.dylib)

libspread.so:	$(LIBSP_SHOBJS)
	$(SHLD) -o $@ $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS)

install-libspread.so:	libspread.so
	$(INSTALL) -m 0755 libspread.so $(DESTDIR)$(libdir)/libspread.so.$(LIBVERSION)
	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libspread.so.$(LIBVERSION) libspread.so)

libtspread.a: $(LIBTSP_OBJS)
	$(AR) rv $@ $(LIBTSP_OBJS)
	$(RANLIB) $@

libtspread.dylib:	$(LIBTSP_SHOBJS)
	$(SHLD) -o libtspread.$(LIBVERSION).dylib $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS) $(THLIBS)
	$(SOFTLINK) libtspread.$(LIBVERSION).dylib $@

install-libtspread.dylib:	libtspread.dylib
	$(INSTALL) -m 0755 libtspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libtspread.$(LIBVERSION).dylib
	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libtspread.$(LIBVERSION).dylib libtspread.dylib)

libtspread.so:	$(LIBTSP_SHOBJS)
	$(SHLD) -o $@ $(LIBTSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS) $(THLIBS)

install-libtspread.so:	libtspread.so
	$(INSTALL) -m 0755 libtspread.so $(DESTDIR)$(libdir)/libtspread.so.$(LIBVERSION)
	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libtspread.so.$(LIBVERSION) libtspread.so)

spread$(EXEEXT): $(SPREADOBJS)
	$(LD) -o $@ $(SPREADOBJS) $(LDFLAGS) $(LIBS)

spuser$(EXEEXT): libspread.a	user.o
	$(LD) -o $@ user.o $(LDFLAGS) libspread.a $(LIBS) $(GACLIBS)

spflooder$(EXEEXT): libspread.a flooder.o
	$(LD) -o $@ flooder.o $(LDFLAGS) libspread.a $(LIBS) $(GACLIBS)

spmonitor$(EXEEXT): $(MONITOROBJS)
	$(LD) -o $@ $(MONITOROBJS) $(LDFLAGS) $(LIBS) $(GACLIBS)

sptuser$(EXEEXT): user.to libtspread.a
	$(LD) $(THLDFLAGS) -o $@ user.to libtspread.a $(LDFLAGS) $(LIBS) $(GACLIBS) $(THLIBS)

spsimple_user$(EXEEXT): simple_user.o libspread.a
	$(LD) -o $@ simple_user.o $(LDFLAGS) libspread.a $(LIBS) 

$(MANPAGES): $(MANPAGES_IN)
	@if [ ! -d docs ]; then \
		$(buildtoolsdir)/mkinstalldirs docs; \
	fi
	@if test "$(MANTYPE)" = "cat"; then \
		manpage=$(srcdir)/`echo $@ | sed 's/\.[1-9]\.out$$/\.0/'`; \
	else \
		manpage=$(srcdir)/`echo $@ | sed 's/\.out$$//'`; \
	fi; \
	if test "$(MANTYPE)" = "man"; then \
		$(FIXPATHSCMD) $${manpage} | $(PERL) $(buildtoolsdir)/mdoc2man.pl > $@; \
	else \
		$(FIXPATHSCMD) $${manpage} > $@; \
	fi

clean:
	rm -f *.lo *.tlo *.to *.o *.a *.dylib $(TARGETS) spsimple_user
	rm -f config.cache config.log docs/*.out core
	rm -rf autom4te.cache

distclean: clean
	rm -f Makefile config.h config.status *~

mrproper: distclean

veryclean: distclean
	rm -f configure

catman-do:
	@for f in $(MANPAGES_IN) ; do \
		base=`echo $$f | sed 's/\..*$$//'` ; \
		echo "$$f -> $$base.0" ; \
		nroff -mandoc $$f | cat -v | sed -e 's/.\^H//g' \
			>$$base.0 ; \
	done

distprep: catman-do
	autoreconf

install: $(TARGETS) install-files install-libspread.so install-libtspread.so

install-files:
	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(bindir)
	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(sbindir)
	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(mandir)
	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)3
	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(libdir)
	$(INSTALL) -m 0755 -s spmonitor$(EXEEXT) $(DESTDIR)$(bindir)/spmonitor$(EXEEXT)
	$(INSTALL) -m 0755 -s spuser$(EXEEXT) $(DESTDIR)$(bindir)/spuser$(EXEEXT)
	$(INSTALL) -m 0755 -s sptuser$(EXEEXT) $(DESTDIR)$(bindir)/sptuser$(EXEEXT)
	$(INSTALL) -m 0755 -s spflooder$(EXEEXT) $(DESTDIR)$(bindir)/spflooder$(EXEEXT)
	$(INSTALL) -m 0755 -s spread$(EXEEXT) $(DESTDIR)$(sbindir)/spread$(EXEEXT)
	$(INSTALL) -m 644 libspread.a $(DESTDIR)$(libdir)/libspread.a
	$(INSTALL) -m 644 libtspread.a $(DESTDIR)$(libdir)/libtspread.a
	$(INSTALL) -m 644 docs/spread.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spread.1
	$(INSTALL) -m 644 docs/spuser.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spuser.1
	$(INSTALL) -m 644 docs/sptuser.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/sptuser.1
	$(INSTALL) -m 644 docs/spflooder.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spflooder.1
	$(INSTALL) -m 644 docs/spmonitor.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spmonitor.1
	$(INSTALL) -m 644 docs/libsp.3.out $(DESTDIR)$(mandir)/$(mansubdir)3/libsp.3
	for page in connect disconnect equal_group_ids error join leave multicast multigroup_multicast multigroup_scat_multicast poll receive scat_multicast scat_receive; \
	do \
	  $(INSTALL) -m 644 docs/SP_$$page.3.out $(DESTDIR)$(mandir)/$(mansubdir)3/SP_$$page.3; \
	done
	if [ ! -d $(DESTDIR)$(sysconfdir) ]; then \
		$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(sysconfdir); \
	fi
	if [ ! -f $(DESTDIR)$(sysconfdir)/spread.conf ]; then \
		$(INSTALL) -m 644 $(srcdir)/sample.spread.conf $(DESTDIR)$(sysconfdir)/spread.conf; \
	else \
		echo "$(DESTDIR)$(sysconfdir)/spread.conf already exists, install will not overwrite"; \
	fi

uninstallall:	uninstall
	-rm -f $(DESTDIR)$(sysconfdir)/spread.conf
	-rmdir $(DESTDIR)$(sysconfdir)
	-rmdir $(DESTDIR)$(bindir)
	-rmdir $(DESTDIR)$(sbindir)
	-rmdir $(DESTDIR)$(mandir)/$(mansubdir)1
	-rmdir $(DESTDIR)$(mandir)/$(mansubdir)3
	-rmdir $(DESTDIR)$(mandir)
	-rmdir $(DESTDIR)$(libdir)

uninstall: 
	-rm -f $(DESTDIR)$(bindir)/spuser$(EXEEXT)
	-rm -f $(DESTDIR)$(bindir)/spmonitor$(EXEEXT)
	-rm -f $(DESTDIR)$(bindir)/spflooder$(EXEEXT)
	-rm -f $(DESTDIR)$(bindir)/sptuser$(EXEEXT)
	-rm -f $(DESTDIR)$(sbindir)/spread$(EXEEXT)
	-rm -f $(DESTDIR)$(libdir)/libspread.a
	-rm -f $(DESTDIR)$(libdir)/libtspread.a
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)3/SP_*.3
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)3/libsp.3
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/spread.1
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/spuser.1
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/sptuser.1
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/spflooder.1
	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/spmonitor.1
