# Targets
# make          - twidle the options yourself :-)
# make cc       - standard cc options
# make gcc      - standard gcc options
# make x86-elf  - linux-elf etc
# make x86-out  - linux-a.out, FreeBSD etc
# make x86-solaris
# make x86-bdsi

DIR=    rc4
TOP=    .
CC=     gcc
CFLAG=	-O3 -fomit-frame-pointer

CPP=    $(CC) -E
INCLUDES=
INSTALLTOP=/usr/local/lib
MAKE=           make
MAKEDEPEND=     makedepend
MAKEFILE=       Makefile.uni
AR=             ar r
RANLIB=         ranlib

RC4_ENC=rc4_enc.o
# or use
#RC4_ENC=asm/rx86-elf.o
#RC4_ENC=asm/rx86-out.o
#RC4_ENC=asm/rx86-sol.o
#RC4_ENC=asm/rx86bdsi.o

CFLAGS= $(INCLUDES) $(CFLAG)

GENERAL=Makefile
TEST=rc4test
APPS=rc4speed

LIB=librc4.a
LIBSRC=rc4_skey.c rc4_enc.c
LIBOBJ=rc4_skey.o $(RC4_ENC)

SRC= $(LIBSRC)

EXHEADER= rc4.h
HEADER= $(EXHEADER) rc4_locl.h

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

all:    $(LIB) $(TEST) $(APPS)

$(LIB):    $(LIBOBJ)
	$(AR) $(LIB) $(LIBOBJ)
	$(RANLIB) $(LIB)

# elf
asm/rx86-elf.o: asm/rx86unix.cpp
	$(CPP) -DELF asm/rx86unix.cpp | as -o asm/rx86-elf.o

# solaris
asm/rx86-sol.o: asm/rx86unix.cpp
	$(CC) -E -DSOL asm/rx86unix.cpp | sed 's/^#.*//' > asm/rx86-sol.s
	as -o asm/rx86-sol.o asm/rx86-sol.s
	rm -f asm/rx86-sol.s

# a.out
asm/rx86-out.o: asm/rx86unix.cpp
	$(CPP) -DOUT asm/rx86unix.cpp | as -o asm/rx86-out.o

# bsdi
asm/rx86bsdi.o: asm/rx86unix.cpp
	$(CPP) -DBSDI asm/rx86unix.cpp | as -o asm/rx86bsdi.o

asm/rx86unix.cpp:
	(cd asm; perl rc4-586.pl cpp >rx86unix.cpp)

test:	$(TEST)
	./$(TEST)

$(TEST): $(TEST).c $(LIB)
	$(CC) -o $(TEST) $(CFLAGS) $(TEST).c $(LIB)

$(APPS): $(APPS).c $(LIB)
	$(CC) -o $(APPS) $(CFLAGS) $(APPS).c $(LIB)

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

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

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

clean:
	/bin/rm -f $(LIB) $(TEST) $(APPS) *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff

cc:
	$(MAKE) CC="cc" CFLAG="-O" all

gcc:
	$(MAKE) CC="gcc" CFLAGS="-O3 -fomit-frame-pointer" all

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