#======================================================================
#                    M A K E F I L E 
#                    doc: Fri Feb 14 14:24:17 1992
#                    dlm: Fri Jul  3 13:43:21 1992
#                    (c) 1992 ant@julia
#                    uE-Info: 120 40 T 0 0 72 2 2 8 ofnI
#======================================================================

# Tweakables
CCFLAGS = -O
LIBSHADE = ../sun4/lib/libshade.a
INCSHADE = -I../libshade
LIBRAY = ../sun4/lib/libray.a
INCRAY = -I../libray -I..
LIBURT = ../../urt/sun4/lib/librle.a
INCURT = -I../../urt/include
LIBRPC = 
INCRPC =
LIBDRAND = 
SPAIR = 
INSTDIR = /usr/local/bin
INSTUSER = ant
INSTGROUP = ips
INSTMODE = 0111
QUIRKS = 

#--------------- Stuff ------------------------------------------------

IR 	= inetray
IRS	= $(IR).start
IRD  	= rpc.$(IR)d
IRPING 	= $(IR).ping
IRKILL	= $(IR).kill
DEREG   = rpc.dereg
NETINFO = netinfo

RAYLIBS = $(LIBSHADE) $(LIBRAY) $(LIBURT) $(LIBRPC) $(LIBDRAND) -lm
CFLAGS = $(CCFLAGS) $(INCRPC) $(INCURT) $(INCSHADE) $(INCRAY) $(QUIRKS)

SOURCE = *.c *.h *.x Makefile .inetrayrc mole.ray \
	INSTALL README POO SUPPORT FAQ TODO HISTORY

IROBJ = $(IR)_clnt.o $(IR)_xdr.o $(IR).o \
	$(IRS)_clnt.o $(IRS)_xdr.o \
	comm.o rcfile.o utils.o sendrpc.o clnt_dirbcast.o

IRDOBJ= $(IR)_svc.o $(IR)_xdr.o $(IRD).o \
	irtrace.o utils.o $(SPAIR)

IRSOBJ = $(IRS)_svc.o $(IRS)_xdr.o $(IRS).o

IRKILLOBJ = $(IRKILL).o $(IR)_xdr.o $(IR)_clnt.o \
		$(IRS)_clnt.o $(IRS)_xdr.o \
		comm.o rcfile.o utils.o sendrpc.o clnt_dirbcast.o

IRPINGOBJ = $(IRPING).o $(IR)_xdr.o $(IR)_clnt.o \
		$(IRS)_clnt.o $(IRS)_xdr.o \
		comm.o rcfile.o utils.o sendrpc.o clnt_dirbcast.o

#--------------- Programs ---------------------------------------------

SVCPRG = $(IRD) $(IRS)
CLNPRG = $(IR) $(IRKILL) $(IRPING) $(DEREG) $(NETINFO)
PROGS = $(SVCPRG) $(CLNPRG)

all: server client

server: $(SVCPRG)
client: $(CLNPRG)

#----------------------------------------------------------------------

$(IR): $(IROBJ)
	$(CC) $(CFLAGS) $(IROBJ) $(RAYLIBS) $(LIBRPC) -o $@

$(IRD): $(IRDOBJ)
	$(CC) $(CFLAGS) $(IRDOBJ) $(RAYLIBS) $(LIBRPC) -o $@

$(IRKILL): $(IRKILLOBJ)
	$(CC) $(CFLAGS) $(IRKILLOBJ) $(LIBRPC) -o $@

$(IRPING): $(IRPINGOBJ)
	$(CC) $(CFLAGS) $(IRPINGOBJ) $(LIBRPC) -o $@

$(IRS): $(IRSOBJ)
	$(CC) $(CFLAGS) $(IRSOBJ) $(LIBRPC) -o $@

$(DEREG): $(DEREG).o
	$(CC) $(CCFLAGS) $(DEREG).o $(LIBRPC) -o $@

$(NETINFO): $(NETINFO).o
	$(CC) $(CCFLAGS) $(NETINFO).o -o $@
	

#--------------- Support ----------------------------------------------

rpcgen:
	@ rpcgen -h -o $(IR).h $(IR).x			# header files
	@ rpcgen -h -o $(IRS).h $(IRS).x
	@ rpcgen -c -o $(IR)_xdr.c $(IR).x		# Xdr routines
	@ rpcgen -c -o $(IRS)_xdr.c $(IRS).x
	@ rpcgen -I -K -1 -m -o $(IR)_svc.c $(IR).x	# Server side
	@ rpcgen -m -L -o $(IRS)_svc.c $(IRS).x
	@ rpcgen -l -o $(IR)_clnt.c $(IR).x		# Client side
	@ rpcgen -l -o $(IRS)_clnt.c $(IRS).x

#--------------- Depend -----------------------------------------------

comm.o		: $(IR).h $(IRS).h rcfile.h common.h utils.h config.h
$(IR).o		: $(IR).h common.h comm.h rcfile.h config.h \
			version.h patchlevel.h
$(IRD).o	: $(IR).h common.h config.h
$(IRKILL).o	: $(IR).h common.h comm.h config.h version.h patchlevel.h
$(IRPING).o	: $(IR).h common.h comm.h version.h patchlevel.h
$(IRS).o	: $(IRS).h

#--------------- Install ----------------------------------------------

install:
	@- cd $(INSTDIR); rm -f $(PROGS)
	@- cp $(PROGS) $(INSTDIR)
	@- cd $(INSTDIR); chown $(INSTUSER).$(INSTGROUP) $(PROGS)
	@- cd $(INSTDIR); chmod $(INSTMODE) $(PROGS)

#--------------- Aux Targets ------------------------------------------

.SUFFIXES: .ray .rle
.ray.rle:
	inetray -O $*.rle $*.ray

bak::
	@- mkdir bak
	@ cp $(SOURCE) bak

old::
	@- mkdir old
	@ cp $(SOURCE) old

tar:
	@- tar cvf inetray.tar $(SOURCE)
	@- rm -f inetray.tar.Z
	@- compress inetray.tar
	@- echo
	@- echo "DONE! (change name to inetray.x.y.z.tar.Z)"
	@- echo

ftp::
	@- cp inetray.*.tar.Z /maggia/home/guests/ftp/pub/inetray
	@- cp patches/* /maggia/home/guests/ftp/pub/inetray
	@- chmod 444 /maggia/home/guests/ftp/pub/inetray/*

patch: clean
	@- mkdir new
	@- cp $(SOURCE) new
	@- rm -f new/Makefile
	@- diff -c old new > patchX
	@- echo "patchX generated. checking..."
	@- mkdir apply
	@- cp old/* old/.* apply
	@- cd apply; patch < ../patchX
	@- echo
	@- echo "Diff'ing..."
	@- echo
	@- diff -c apply new
	@- rm -fr apply new
	@- echo
	@- echo	" - check patchlevel.h"
	@- echo " - Makefile not included in patch"
	@- echo
	
Patch: clean
	@- mkdir new
	@- cp $(SOURCE) new
	@- diff -c old new > patchX
	@- echo "patchX generated. checking..."
	@- mkdir apply
	@- cp old/* old/.* apply
	@- cd apply; patch < ../patchX
	@- echo
	@- echo "Diff'ing..."
	@- echo
	@- diff -c apply new
	@- rm -fr apply new
	@- echo
	@- echo	" - check patchlevel.h"
	@- echo
	
clean:
	@- rm -f *.o .inetray.key* inetray inetray.ping inetray.kill
	@- rm -f inetray.start rpc.dereg rpc.inetrayd

spotless:
	@- rm -f *.o *_clnt* *_svc* *_xdr* $(IR).h $(IRS).h
	@- rm -f $(SVCPRG) $(CLNPRG)
