SG = /usr/local/hrpcstubs
HNSLIB = /usr/local/lib/libHNS.a
HRPCLIB = /usr/local/lib/libHRPC.a
CINCL = ../CIncludes
HNSFILES = ${CINCL}/HNS.h ${CINCL}/BINDBinding.h ${CINCL}/CHBinding.h \
	 ${CINCL}/NameToNetAddr.h ${CINCL}/CH_NameToNetAddr.h \
	 ${CINCL}/BIND_NameToNetAddr.h \
	 ${CINCL}/BindingAux.h ${CINCL}/TCPBIND.h ${CINCL}/UDPBIND.h \
	 ${CINCL}/BIND_MsgStructs.h

HRPCFILES = ${CINCL}/SpeakDefs.h ${CINCL}/Binding.h ${CINCL}/BulkData.h \
	 ${CINCL}/Authentication.h ${CINCL}/Clearinghouse.h

all: hrpcfiles hnsfiles

hrpcfiles: ${HRPCFILES}
	ar rv ${HRPCLIB} *.o
	ranlib ${HRPCLIB}
	rm -f *_server.c *_client.c *_otw.c *.o

hnsfiles: ${HNSFILES}
	ar rv ${HNSLIB} *.o
	ranlib ${HNSLIB}
	rm -f *_server.c *_client.c *_otw.c *.o

#
# Special handling here due to recursive include of basciRpc.h
#
${CINCL}/SpeakDefs.h: SpeakDefs.cr
	${SG} SpeakDefs.cr
	sed -e "/HRPC\\/basicRpc.h/d" SpeakDefs.h >FOOBLAH
	mv FOOBLAH SpeakDefs.h
	mv -f SpeakDefs.h SpeakDefs_defs.h ${CINCL}/

${CINCL}/Binding.h: Binding.cr ${CINCL}/SpeakDefs.h
	${SG} Binding.cr
	mv -f Binding.h Binding_defs.h ${CINCL}/
	cc -c -O -I${CINCL} Binding_otw.c

${CINCL}/HNS.h: HNS.cr ${CINCL}/Binding.h
	${SG} HNS.cr
	mv -f HNS.h HNS_defs.h ${CINCL}/
	cc -c -O -I${CINCL} HNS_client.c HNS_server.c HNS_otw.c

${CINCL}/BINDBinding.h: BINDBinding.cr ${CINCL}/Binding.h
	${SG} BINDBinding.cr
	mv -f BINDBinding.h BINDBinding_defs.h ${CINCL}/
	cc -c -O -I${CINCL} BINDBinding_client.c BINDBinding_server.c \
		BINDBinding_otw.c

${CINCL}/BIND_NameToNetAddr.h: BIND_NameToNetAddr.cr ${CINCL}/NameToNetAddr.h
	${SG} BIND_NameToNetAddr.cr
	mv -f BIND_NameToNetAddr.h BIND_NameToNetAddr_defs.h ${CINCL}/
	cc -c -O -I${CINCL} BIND_NameToNetAddr_client.c \
		BIND_NameToNetAddr_server.c BIND_NameToNetAddr_otw.c

${CINCL}/BIND_MsgStructs.h: BIND_MsgStructs.cr
	${SG} BIND_MsgStructs.cr
	mv -f BIND_MsgStructs.h BIND_MsgStructs_defs.h ${CINCL}/
	cc -c -O -I${CINCL} BIND_MsgStructs_otw.c

${CINCL}/TCPBIND.h: TCPBIND.cr ${CINCL}/BIND_MsgStructs.h
	${SG} TCPBIND.cr
	mv -f TCPBIND.h TCPBIND_defs.h ${CINCL}/
	cc -c -O -I${CINCL} TCPBIND_client.c TCPBIND_otw.c

${CINCL}/UDPBIND.h: UDPBIND.cr ${CINCL}/BIND_MsgStructs.h
	${SG} UDPBIND.cr
	mv -f UDPBIND.h UDPBIND_defs.h ${CINCL}/
	cc -c -O -I${CINCL} UDPBIND_client.c UDPBIND_otw.c

${CINCL}/NameToNetAddr.h: NameToNetAddr.cr ${CINCL}/Binding.h
	${SG} NameToNetAddr.cr
	mv -f NameToNetAddr.h NameToNetAddr_defs.h ${CINCL}/
	cc -c -O -I${CINCL} NameToNetAddr_otw.c

${CINCL}/CHBinding.h: CHBinding.cr ${CINCL}/Binding.h
	${SG} CHBinding.cr
	mv -f CHBinding.h CHBinding_defs.h ${CINCL}/
	cc -c -O -I${CINCL} CHBinding_client.c CHBinding_server.c CHBinding_otw.c

${CINCL}/CH_NameToNetAddr.h: CH_NameToNetAddr.cr ${CINCL}/NameToNetAddr.h
	${SG} CH_NameToNetAddr.cr
	mv -f CH_NameToNetAddr.h CH_NameToNetAddr_defs.h ${CINCL}/
	cc -c -O -I${CINCL} CH_NameToNetAddr_client.c CH_NameToNetAddr_server.c \
		CH_NameToNetAddr_otw.c

${CINCL}/BIND_NameToNetAddr.h: BIND_NameToNetAddr.cr ${CINCL}/NameToNetAddr.h
	${SG} BIND_NameToNetAddr.cr
	mv -f BIND_NameToNetAddr.h BIND_NameToNetAddr_defs.h ${CINCL}/
	cc -c -O -I${CINCL} BIND_NameToNetAddr_client.c BIND_NameToNetAddr_server.c \
		BIND_NameToNetAddr_otw.c

${CINCL}/BindingAux.h: BindingAux.cr ${CINCL}/SpeakDefs.h
	${SG} BindingAux.cr
	mv -f BindingAux.h BindingAux_defs.h ${CINCL}/
	cc -c -O -I${CINCL} BindingAux_otw.c

${CINCL}/Clearinghouse.h: Clearinghouse.cr
	${SG} Clearinghouse.cr
	mv -f Clearinghouse.h Clearinghouse_defs.h ${CINCL}/
	cc -c -O -I${CINCL} Clearinghouse_client.c Clearinghouse_otw.c
	mv Clearinghouse_client.o clringHclnt.o
	mv Clearinghouse_otw.o clringHouse.o

${CINCL}/BulkData.h: BulkData.cr
	${SG} BulkData.cr
	mv -f BulkData.h BulkData_defs.h ${CINCL}/
	cc -c -O -I${CINCL} BulkData_otw.c

${CINCL}/Authentication.h: Authentication.cr
	${SG} Authentication.cr
	mv -f Authentication.h Authentication_defs.h ${CINCL}/
	cc -c -O -I${CINCL} Authentication_otw.c
	mv Authentication_otw.o courAuth1.o

install:
	ar rv ${HNSLIB} *.o
	ranlib ${HNSLIB}
	rm -f *.o *_server.c *_client.c *otw.c

