#
# test/Makefile.ssl
#

DIR=		test
TOP=		..
CC=		cc
INCLUDES=	-I../include
CFLAG=		-g
INSTALLTOP=	/usr/local/ssl
MAKEFILE=	Makefile.ssl
MAKE=		make -f $(MAKEFILE)
MAKEDEPEND=	makedepend -f$(MAKEFILE)

PEX_LIBS=
EX_LIBS= -lnsl -lsocket

CFLAGS= $(INCLUDES) $(CFLAG)

GENERAL=Makefile.ssl

DLIBCRYPTO= ../libcrypto.a
DLIBSSL= ../libssl.a
LIBCRYPTO= -L.. -lcrypto
LIBSSL= -L.. -lssl

BNTEST=		bntest
IDEATEST=	ideatest
SHATEST=	shatest
SHA1TEST=	sha1test
MD2TEST=	md2test
MD5TEST=	md5test
RC4TEST=	rc4test
RC2TEST=	rc2test
DESTEST=	destest
RANDTEST=	randtest
DHTEST=		dhtest
METHTEST=	methtest
SSLTEST=	ssltest

EXE=	$(BNTEST) $(IDEATEST) $(MD2TEST)  $(MD5TEST)  $(RC4TEST) \
	$(DESTEST) $(SHATEST) $(SHA1TEST) $(RANDTEST) $(DHTEST) \
	$(METHTEST) $(RC2TEST) $(SSLTEST)

OBJ=	$(BNTEST).o $(IDEATEST).o $(MD2TEST).o  $(MD5TEST).o  $(RC4TEST).o \
	$(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(RANDTEST).o $(DHTEST).o \
	$(METHTEST).o $(RC2TEST).o $(SSLTEST).o
SRC=	$(BNTEST).c $(IDEATEST).c $(MD2TEST).c  $(MD5TEST).c  $(RC4TEST).c \
	$(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(RANDTEST).c $(DHTEST).c \
	$(METHTEST).c $(RC2TEST).c $(SSLTEST).c

EXHEADER= 
HEADER=	$(EXHEADER)

ALL=    $(GENERAL) $(SRC) $(HEADER)

top:
	(cd ..; $(MAKE) DIRS=$(DIR) all)

all:	exe

exe:	$(EXE)

files:
	perl $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO

links:
	/bin/rm -f Makefile
	$(TOP)/util/point.sh Makefile.ssl Makefile ;

errors:

install:

tags:
	ctags $(SRC)

tests:	exe
	@(cd ../apps; $(MAKE)  CC='${CC}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' all)
	./$(DESTEST)
	./$(IDEATEST)
	./$(SHATEST)
	./$(SHA1TEST)
	./$(MD5TEST)
	./$(MD2TEST)
	./$(RC2TEST)
	./$(RC4TEST)
	./$(RANDTEST)
	@sh ./testenc
	@echo test normal x509v1 certificate
	@sh ./tx509 2>/dev/null
	@echo test first x509v3 certificate
	@sh ./tx509 v3-cert1.pem 2>/dev/null
	@echo test second x509v3 certificate
	@sh ./tx509 v3-cert2.pem 2>/dev/null
	@sh ./trsa 2>/dev/null
	@sh ./tcrl 2>/dev/null
	@sh ./treq 2>/dev/null
	@sh ./tpkcs7 2>/dev/null
	@echo starting big number library test, could take a while...
	@(./$(BNTEST)|bc) | awk '{ \
if ($$0 != "0") {print "error"; exit(1); } \
if (((NR+1)%64) == 0) print NR+1," tests done"; }'
	@echo "The following command should have some OK's and some failures"
	../apps/ssleay verify -CApath ../certs ../certs/*.pem
	@echo "Generate as set or DH parameters"
	./$(DHTEST)
	@sh ./testgen
	@echo "Generate and certify a test certificate"
	./$(SSLTEST)
	./$(SSLTEST) -server_auth -CApath ../certs
	./$(SSLTEST) -client_auth -CApath ../certs
	./$(SSLTEST) -server_auth -client_auth -CApath ../certs
	@sh ./testss

lint:
	lint -DLINT $(INCLUDES) $(SRC)>fluff

depend:
	$(MAKEDEPEND) $(INCLUDES) $(PROGS) $(SRC)

dclean:
	perl -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
	mv -f Makefile.new $(MAKEFILE)

clean:
	/bin/rm -f *.o *.obj lib tags core .nfs* *.old *.bak fluff $(EXE) *.ss

$(DLIBCRYPTO):

$(BNTEST): $(BNTEST).o $(DLIBCRYPTO)
	$(CC) -o $(BNTEST) $(CFLAGS) $(BNTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(IDEATEST): $(IDEATEST).o $(DLIBCRYPTO)
	$(CC) -o $(IDEATEST) $(CFLAGS) $(IDEATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(MD2TEST): $(MD2TEST).o $(DLIBCRYPTO)
	$(CC) -o $(MD2TEST) $(CFLAGS) $(MD2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(SHATEST): $(SHATEST).o $(DLIBCRYPTO)
	$(CC) -o $(SHATEST) $(CFLAGS) $(SHATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(SHA1TEST): $(SHA1TEST).o $(DLIBCRYPTO)
	$(CC) -o $(SHA1TEST) $(CFLAGS) $(SHA1TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(MD5TEST): $(MD5TEST).o $(DLIBCRYPTO)
	$(CC) -o $(MD5TEST) $(CFLAGS) $(MD5TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(RC2TEST): $(RC2TEST).o $(DLIBCRYPTO)
	$(CC) -o $(RC2TEST) $(CFLAGS) $(RC2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(RC4TEST): $(RC4TEST).o $(DLIBCRYPTO)
	$(CC) -o $(RC4TEST) $(CFLAGS) $(RC4TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(DESTEST): $(DESTEST).o $(DLIBCRYPTO)
	$(CC) -o $(DESTEST) $(CFLAGS) $(DESTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(RANDTEST): $(RANDTEST).o $(DLIBCRYPTO)
	$(CC) -o $(RANDTEST) $(CFLAGS) $(RANDTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(DHTEST): $(DHTEST).o $(DLIBCRYPTO)
	$(CC) -o $(DHTEST) $(CFLAGS) $(DHTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(METHTEST): $(METHTEST).o $(DLIBCRYPTO)
	$(CC) -o $(METHTEST) $(CFLAGS) $(METHTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)

$(SSLTEST): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
	$(CC) -o $(SSLTEST) $(CFLAGS) $(SSLTEST).o $(PEX_LIBS) $(LIBSSL) $(LIBCRYPTO) $(EX_LIBS)

# DO NOT DELETE THIS LINE -- make depend depends on it.

bntest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
bntest.o: /usr/include/stdlib.h /usr/include/string.h ../include/buffer.h
bntest.o: ../include/bn.h ../include/rand.h ../include/x509.h
bntest.o: ../include/stack.h ../include/asn1.h /usr/include/time.h
bntest.o: ../include/envelope.h ../include/md2.h ../include/md5.h
bntest.o: ../include/sha.h ../include/des.h ../include/rc4.h ../include/rc2.h
bntest.o: ../include/idea.h ../include/rsa.h ../include/dsa.h ../include/dh.h
bntest.o: ../include/err.h /usr/include/errno.h /usr/include/sys/errno.h
ideatest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
ideatest.o: /usr/include/string.h /usr/include/stdlib.h ../include/idea.h
md2test.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
md2test.o: /usr/include/stdlib.h /usr/include/string.h ../include/md2.h
md5test.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
md5test.o: /usr/include/string.h /usr/include/stdlib.h ../include/md5.h
rc4test.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
rc4test.o: /usr/include/stdlib.h /usr/include/string.h ../include/rc4.h
destest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
destest.o: /usr/include/stdlib.h /usr/include/unistd.h
destest.o: /usr/include/sys/types.h /usr/include/sys/machtypes.h
destest.o: /usr/include/sys/unistd.h /usr/include/string.h ../include/des.h
shatest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
shatest.o: /usr/include/string.h /usr/include/stdlib.h ../include/sha.h
sha1test.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
sha1test.o: /usr/include/string.h /usr/include/stdlib.h ../include/sha.h
randtest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
randtest.o: /usr/include/stdlib.h ../include/rand.h
dhtest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
dhtest.o: /usr/include/stdlib.h /usr/include/string.h ../include/buffer.h
dhtest.o: ../include/bn.h ../include/dh.h
methtest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
methtest.o: /usr/include/stdlib.h ../include/rsa.h ../include/bn.h
methtest.o: ../include/x509.h ../include/stack.h ../include/asn1.h
methtest.o: /usr/include/time.h ../include/envelope.h ../include/md2.h
methtest.o: ../include/md5.h ../include/sha.h ../include/des.h
methtest.o: ../include/rc4.h ../include/rc2.h ../include/idea.h
methtest.o: ../include/dsa.h ../include/dh.h ../include/meth.h
methtest.o: ../include/err.h /usr/include/errno.h /usr/include/sys/errno.h
rc2test.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
rc2test.o: /usr/include/string.h /usr/include/stdlib.h ../include/rc2.h
ssltest.o: /usr/include/stdio.h /usr/include/sys/feature_tests.h
ssltest.o: /usr/include/stdlib.h /usr/include/string.h /usr/include/errno.h
ssltest.o: /usr/include/sys/errno.h ../include/buffer.h ../e_os.h
ssltest.o: /usr/include/unistd.h /usr/include/sys/types.h
ssltest.o: /usr/include/sys/machtypes.h /usr/include/sys/unistd.h
ssltest.o: ../include/x509.h ../include/stack.h ../include/asn1.h
ssltest.o: /usr/include/time.h ../include/bn.h ../include/envelope.h
ssltest.o: ../include/md2.h ../include/md5.h ../include/sha.h
ssltest.o: ../include/des.h ../include/rc4.h ../include/rc2.h
ssltest.o: ../include/idea.h ../include/rsa.h ../include/dsa.h
ssltest.o: ../include/dh.h ../include/ssl.h ../include/err.h
