Check the CC and CFLAGS lines in the makefile

If your C library does not support the times(3) function, change the
#define TIMES to
#undef TIMES in speed.c
If it does, check the HZ value for the times(3) function.
If your system does not define CLK_TCK it will be assumed to
be 100.0.

If possible use gcc v 2.7.?
Turn on the maximum optimising (normally '-O3 -fomit-frame-pointer' for gcc)
In recent times, some system compilers give better performace.

type 'make'

run './destest' to check things are ok.
run './rpw' to check the tty code for reading passwords works.
run './speed' to see how fast those optimisations make the library run :-)
run './des_opts' to determin the best compile time options.

The output from des_opts should be put in the makefile options and des_enc.c
should be rebuilt.  For 64 bit computers, do not use the DES_PTR option.
For the DEC Alpha, edit des.h and change DES_LONG to 'unsigned int'
and then you can use the 'DES_PTR' option.

The file options.txt has the options listed for best speed on quite a
few systems.  Look and the options (UNROLL, PTR, RISC2 etc) and then
turn on the relevant option in the Makefile.

There are some special Makefile targets that make life easier.
make cc		- standard cc build
make gcc	- standard gcc build
make x86-elf	- x86 assembler (elf), linux-elf.
make x86-out	- x86 assembler (a.out), FreeBSD
make x86-solaris- x86 assembler
make x86-bsdi	- x86 assembler (a.out with primative assembler).

If at all possible use the assembler (for Windows NT/95, use
asm/win32.obj to link with).  The x86 assembler is very very fast.

A make install will by default install
libdes.a      in /usr/local/lib/libdes.a
des           in /usr/local/bin/des
des_crypt.man in /usr/local/man/man3/des_crypt.3
des.man       in /usr/local/man/man1/des.1
des.h         in /usr/include/des.h

des(1) should be compatible with sunOS's but I have been unable to
test it.

These routines should compile on MSDOS, most 32bit and 64bit version
of Unix (BSD and SYSV) and VMS, without modification.
The only problems should be #include files that are in the wrong places.

These routines can be compiled under MSDOS.
I have successfully encrypted files using des(1) under MSDOS and then
decrypted the files on a SparcStation.
I have been able to compile and test the routines with
Microsoft C v 5.1 and Turbo C v 2.0.
The code in this library is in no way optimised for the 16bit
operation of MSDOS.

When building for glibc, ignore all of the above and just unpack into
glibc-1.??/des and then gmake as per normal.

As a final note on performace.  Certain CPUs like sparcs and Alpha often give
a %10 speed difference depending on the link order.  It is rather anoying
when one program reports 'x' DES encrypts a second and another reports
'x*0.9' the speed.
