# This Imakefile has not been tested for a while but it should still
# work when placed in the correct directory in the kerberos v 4 distribution

SRCS=   cbc_cksm.c cbc_enc.c ecb_enc.c pcbc_enc.c \
        qud_cksm.c rand_key.c read_pwd.c set_key.c str2key.c \
        enc_read.c enc_writ.c fcrypt.c cfb_enc.c \
	ecb3_enc.c ofb_enc.c ofb64enc.c

OBJS=   cbc_cksm.o cbc_enc.o ecb_enc.o pcbc_enc.o \
	qud_cksm.o rand_key.o read_pwd.o set_key.o str2key.o \
	enc_read.o enc_writ.o fcrypt.o cfb_enc.o \
	ecb3_enc.o ofb_enc.o ofb64enc.o

GENERAL=COPYRIGHT FILES INSTALL Imakefile README VERSION makefile times \
	vms.com KERBEROS
DES=    des.c des.man
TESTING=destest.c speed.c rpw.c
LIBDES= des_crypt.man des.h des_locl.h podd.h sk.h spr.h

PERL=   des.pl testdes.pl doIP doPC1 doPC2 PC1 PC2 shifts.pl

CODE=    $(GENERAL) $(DES) $(TESTING) $(SRCS) $(LIBDES) $(PERL)

SRCDIR=$(SRCTOP)/lib/des

DBG= -O
INCLUDE= -I$(SRCDIR)
CC= cc

library_obj_rule()

install_library_target(des,$(OBJS),$(SRCS),)

test(destest,libdes.a,)
test(rpw,libdes.a,)
