mydir=lib$(S)rpc$(S)unit-test
BUILDTOP=$(REL)..$(S)..$(S)..

OBJS= client.o rpc_test_clnt.o rpc_test_svc.o server.o
SRCS= client.c rpc_test_clnt.c rpc_test_svc.c server.c

all: client server

client: client.o rpc_test_clnt.o $(GSSRPC_DEPLIBS) $(KRB5_BASE_DEPLIBS)
	$(CC_LINK) -o client client.o rpc_test_clnt.o \
		$(GSSRPC_LIBS) $(KRB5_BASE_LIBS)

server: server.o rpc_test_svc.o $(GSSRPC_DEPLIBS) $(KRB5_BASE_DEPLIBS)
	$(CC_LINK) -o server server.o rpc_test_svc.o \
		$(GSSRPC_LIBS) $(KRB5_BASE_LIBS)

client.o server.o: rpc_test.h

runenv.exp: Makefile
	$(RUN_SETUP); for i in $(RUN_VARS); do \
		eval echo "set env\($$i\) \$$$$i"; done > runenv.exp

# If rpc_test.h and rpc_test_*.c do not work on your system, you can
# try using rpcgen by uncommenting these lines (be sure to uncomment
# then in the generated not Makefile.in).
# rpc_test.h rpc_test_clnt.c rpc_test_svc.c: rpc_test.x
# 	-rm -f rpc_test_clnt.c rpc_test_svc.c rpc_test.h
# 	-ln -s $(srcdir)/rpc_test.x .
# 	rpcgen -l rpc_test.x -o rpc_test_clnt.c
# 	rpcgen -m rpc_test.x -o rpc_test_svc.c
# 	rpcgen -h rpc_test.x -o rpc_test.h
# 
# clean:
# 	rm -f rpc_test.h rpc_test_clnt.c rpc_test_svc.c
# 

check unit-test: unit-test-@DO_TEST@

unit-test-:
	@echo "+++"
	@echo "+++ WARNING: lib/rpc unit tests not run."
	@echo "+++ Either tcl, runtest, or Perl is unavailable."
	@echo "+++"
	@echo 'Skipped rpc tests: runtest or Perl not found' >> $(SKIPTESTS)

unit-test-ok: unit-test-body

PASS=@PASS@
unit-test-body: runenv.sh runenv.exp
	$(RM) krb5cc_rpc_test_*
	$(ENV_SETUP) $(VALGRIND) $(START_SERVERS)
	RPC_TEST_KEYTAB=/tmp/rpc_test_keytab.$$$$ ; export RPC_TEST_KEYTAB ; \
	trap "echo Failed, cleaning up... ; rm -f $$RPC_TEST_KEYTAB ; $(ENV_SETUP) $(STOP_SERVERS) ; trap '' 0 ; exit 1" 0 1 2 3 14 15 ; \
	if $(ENV_SETUP) \
		$(RUNTEST) SERVER=./server CLIENT=./client \
		KINIT=$(BUILDTOP)/clients/kinit/kinit \
		KDESTROY=$(BUILDTOP)/clients/kdestroy/kdestroy \
		PRIOCNTL_HACK=@PRIOCNTL_HACK@ VALGRIND="$(VALGRIND)" \
		PASS="$(PASS)" --tool rpc_test $(RUNTESTFLAGS) ; \
	then \
		echo Cleaning up... ; \
		rm -f $$RPC_TEST_KEYTAB krb5cc_rpc_test_* ; \
		$(ENV_SETUP) $(STOP_SERVERS) ; \
		trap 0 ; exit 0 ; \
	else exit 1 ; fi

clean:
	$(RM) server client
	$(RM) dbg.log rpc_test.log rpc_test.sum runenv.exp

