CC=    cc
INCLUDES= -I../md -I../lhash -I../des -I../idea -I../error -I../rc4
CFLAG= -g -DPROTO 
CFLAGS= $(INCLUDES) $(CFLAG)

LIBS=   -L.. ../des/libdes.a $(EX_LIBS)

INSTALLTOP=/usr/local/ssl

LIB=	../libcrypto.a
RSALIB=	libRSAglue.a

LIBDIR=/usr/local/lib
BINDIR=/usr/local/bin
INCDIR=/usr/local/include
MANDIR=/usr/local/man
MAN1=1
MAN3=3
SHELL=/bin/sh

BNTEST= bntest
GENRSA= genrsa
X509=   x509
RSA=    rsa
VERIFY= verify
PARSE=	derparse
CRL=	crl
PEM2DER=pem2der
SPEED=	speed

EXE=	$(SPEED) $(GENRSA) $(X509) $(RSA) $(VERIFY) $(PARSE) $(CRL) $(PEM2DER)

OBJS=	bn.o bn_regs.o der_lib.o rsa_lib.o rsa_enc.o rsa_gen.o buffer.o \
	x509_lib.o x509_i2d.o x509_i2f.o x509_d2i.o x509_f2i.o pem_lib.o \
	x509_obj.o x509_vrf.o x509_def.o x509_req.o \
	x509_err.o pem_err.o der_err.o rsa_err.o x509_sign.o \
	p_digest.o p_sign.o p_verify.o p_cipher.o p_encode.o

GENERAL=Makefile bn_prime.pl

LIBSRC=	bn.c bn_regs.c der_lib.c rsa_lib.c rsa_enc.c rsa_gen.c buffer.c \
	x509_lib.c x509_i2d.c x509_i2f.c x509_d2i.c x509_f2i.c pem_lib.c \
	x509_obj.c x509_vrf.c x509_def.c x509_req.c \
	x509_err.c pem_err.c der_err.c rsa_err.c x509_sign.c \
	p_digest.c p_sign.c p_verify.c p_cipher.c p_encode.c

RSASRC= rsaref.c x509_vrf.c
RSAOBJS=rsaref.o x509_vrf.o

SRC=	$(BNTEST).c $(GENRSA).c $(X509).c $(RSA).c $(PARSE).c \
	$(VERIFY).c $(CRL).c $(PEM2DER).c $(SPEED).c\
	${LIBSRC} ${RSASRC}

EXHEADER=buffer.h pem.h x509.h x509_obj.h x509_err.h bn.h der.h
HEADER= crypto.h rsaref.h bn_prime.h location.h $(EXHEADER)


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

all: bn_prime.h $(LIB) $(BNTEST) $(EXE) $(RSALIB)

tags:
	-ctags $(SRC) $(HEADER)

bn_prime.h:
	./bn_prime.pl 1024 >bn_prime.h

test:	all
	@./testx509 2>/dev/null
	@./testrsa 2>/dev/null
	@./testcrl 2>/dev/null
	@echo starting big number library test, could take a while...
	@./$(BNTEST)|bc| awk '{ \
if ($$0 != "0") {print "error"; exit; } \
if (((NR+1)%64) == 0) print NR+1," tests done"; }'
	@echo "The following command should have some OK's and some failures"
	SSL_CERT_DIR="./hash"; export SSL_CERT_DIR; ./$(VERIFY) hash/*
	@echo "Generate and certify a test certificate"
	./gentest

$(RSALIB): $(RSAOBJS)
	ar r $(RSALIB) $(RSAOBJS)
	-if test -s /bin/ranlib; then /bin/ranlib $(RSALIB); \
	else if test -s /usr/bin/ranlib; then /usr/bin/ranlib $(RSALIB); \
	else exit 0; fi; fi

$(LIB): $(OBJS)
	ar r $(LIB) $(OBJS)
	-if test -s /bin/ranlib; then /bin/ranlib $(LIB); \
	else if test -s /usr/bin/ranlib; then /usr/bin/ranlib $(LIB); \
	else exit 0; fi; fi

$(BNTEST): $(BNTEST).o $(LIB)
	$(CC) $(CFLAGS) -o $(BNTEST) $(BNTEST).o $(PEX_LIBS) $(LIB) $(LIBS)

$(GENRSA): $(GENRSA).o $(LIB)
	$(CC) $(CFLAGS) -o $(GENRSA) $(GENRSA).o $(PEX_LIBS) $(LIB) $(LIBS)

$(X509): $(X509).o $(LIB)
	$(CC) $(CFLAGS) -o $(X509) $(X509).o $(PEX_LIBS) $(LIB) $(LIBS)

$(CRL): $(CRL).o $(LIB)
	$(CC) $(CFLAGS) -o $(CRL) $(CRL).o $(PEX_LIBS) $(LIB) $(LIBS)

$(PEM2DER): $(PEM2DER).o $(LIB)
	$(CC) $(CFLAGS) -o $(PEM2DER) $(PEM2DER).o $(PEX_LIBS) $(LIB) $(LIBS)

$(SPEED): $(SPEED).o $(LIB)
	$(CC) $(CFLAGS) -o $(SPEED) $(SPEED).o $(PEX_LIBS) $(LIB) $(LIBS)

$(RSA): $(RSA).o $(LIB)
	$(CC) $(CFLAGS) -o $(RSA) $(RSA).o $(PEX_LIBS) $(LIB) $(LIBS)

$(VERIFY): $(VERIFY).o $(LIB)
	$(CC) $(CFLAGS) -o $(VERIFY) $(VERIFY).o $(PEX_LIBS) $(LIB) $(LIBS)

$(PARSE): $(PARSE).o $(LIB)
	$(CC) $(CFLAGS) -o $(PARSE) $(PARSE).o $(PEX_LIBS) $(LIB) $(LIBS)

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

tar:
	tar cf librsa.tar $(ALL)

depend:
	makedepend $(INCLUDES) $(SRC)

shar:
	shar $(ALL) >librsa.shar

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

dclean:
	sed -e '/^# DO NOT DELETE THIS LINE/ q' Makefile >Makefile.new
	mv -f Makefile.new Makefile

install: all
	for i in $(EXE) make_cert ;\
	do \
	cp $$i ${INSTALLTOP}/bin; \
	chmod 755 ${INSTALLTOP}/bin/$$i; \
	done;
	for i in $(EXHEADER) ;\
	do \
	cp $$i ${INSTALLTOP}/include; \
	chmod a+r ${INSTALLTOP}/include/$$i; \
	done;

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