# Makefile, because it is. (needs gnu make)

CC=gcc
CDEBUGFLAG= -O9
EMACSCOMP = emacs -batch -f batch-byte-compile
RM = rm -f
INSTALL = install

DESTBINDIR = /mit/yoav/work/lcs/bin
DESTSHAREDIR = /mit/yoav/work/lcs/share/elisp

DEFINES = 

INCDIR= -I/usr/athena/include -I/mit/yoav/work/lcs/src/include
LIBDIR= -L/usr/athena/lib -L/mit/yoav/work/lcs/src/lib
LIBS = -lcrypt

CFLAGS=$(CDEBUGFLAG) $(INCDIR) $(DEFINES)

RSAREFLIB = lib/librsaref.a

EMACSSRC = MAC.el PKE.el usage.el
EMACSOBJ = $(EMACSSRC:.el=.elc)

all: MAC-f1 MAC-f2 PKE PKE-keygen PKE-decrypt ${EMACSOBJ}

MAC-f1: MAC-f1.o
	$(CC) $(CFLAGS) -o $@ MAC-f1.o $(LIBDIR) $(LIBS)
MAC-f2: MAC-f2.o
	$(CC) $(CFLAGS) -o $@ MAC-f2.o $(LIBDIR) $(LIBS)

PKE: PKE.o $(RSAREFLIB)
	$(CC) $(CFLAGS) -I./include -o $@ PKE.o $(LIBDIR) $(LIBS) -lrsaref

PKE-keygen: PKE-keygen.o $(RSAREFLIB)
	$(CC) $(CFLAGS) -I./include -o $@ PKE-keygen.o $(LIBDIR) $(LIBS) -lrsaref

PKE-decrypt: PKE-decrypt.o $(RSAREFLIB)
	$(CC) $(CFLAGS) -I./include -o $@ PKE-decrypt.o $(LIBDIR) $(LIBS) -lrsaref

%.elc: %.el
	$(EMACSCOMP) $<

install: MAC-f1 MAC-f2 PKE PKE-keygen PKE-decrypt ${EMACSOBJ}
	$(INSTALL) $< $(DESTBINDIR)
	$(INSTALL) MAC-f2 $(DESTBINDIR)
	$(INSTALL) PKE $(DESTBINDIR)
	$(INSTALL) PKE-keygen $(DESTBINDIR)
	$(INSTALL) PKE-decrypt $(DESTBINDIR)
	$(INSTALL) $(EMACSOBJ) $(DESTSHAREDIR)

$(RSAREFLIB):
	(cd rsaref/build; make && make install)

clean:
	$(RM) *.o *.elc PKE PKE-keygen PKE-decrypt MAC-f1 MAC-f2 *~ core *.core
	(cd rsaref/build; make clean)
