PREFIX?=/usr/local
LOCALBASE?=/usr/local/

DESTDIR?=/
BINDIR=${DESTDIR}${PREFIX}/bin
MANDIR=${DESTDIR}${PREFIX}/man/man3/
INCDIR=${DESTDIR}${PREFIX}/include
LIBDIR=${DESTDIR}${PREFIX}/lib
ETCDIR=${DESTDIR}${PREFIX}/etc/

INSTALL_PROGRAM?=/usr/bin/install -c -s
INSTALL_SCRIPT?=/usr/bin/install -c
INSTALL_MAN?=/usr/bin/install -c
INSTALL_DATA?=/usr/bin/install -c

RM?=/bin/rm -f
CP?=/bin/cp
MKDIR?=/bin/mkdir -p
RMDIR?=/bin/rmdir
CHMOD?=/bin/chmod
GZIP_CMD?=/usr/bin/gzip
SED?=/usr/bin/sed
LN?=/bin/ln -f

VERSION=4.9

CFLAGS+= -Wall -DVERSION=\"${VERSION}\"

IFLAGS=
LFLAGS= -lcrypto -lssl

PASSWORD=*
MAX_CLIENTS=7

ACFLAGS = ${CFLAGS} -DMAX_CLIENTS=${MAX_CLIENTS} -DPASSWORD='"${PASSWORD}"'

.PHONY: all
all: libmessage.so libmessageclient.so

libmessage.so: message.c
	${CC} ${CFLAGS} -fpic -shared -Wl,-soname,libmessage.so.${VERSION} -o $@ message.c

libmessageclient.so: client.c
	${CC} ${CFLAGS} -fpic -shared -Wl,-soname,libmessageclient.so.${VERSION} -o $@ client.c

echo: echo.c message.c
	${CC} ${CFLAGS} -o echo echo.c message.c ${IFLAGS} ${LFLAGS}

echoclient: echoclient.c client.c
	${CC} ${CFLAGS} -o echoclient echoclient.c client.c ${IFLAGS} ${LFLAGS}

avalon: avalon.c
	${CC} ${ACFLAGS} -o avalon avalon.c ${IFLAGS} -lmessage -L/usr/local/lib ${LFLAGS}

aclient: aclient.c
	${CC} ${ACFLAGS} -o aclient aclient.c ${IFLAGS} -L/usr/local/lib/ -lmessageclient -lcurses ${LFLAGS}

.PHONY: install-avalon
install-avalon: avalon aclient
	${INSTALL_PROGRAM} avalon aclient ${BINDIR}
	${SED} -e 's|%%PREFIX%%|${BINDIR}|1' avalon.rcfile > avalon.rc
	${INSTALL_SCRIPT} avalon.rc ${ETCDIR}/rc.d/avalon

.PHONY: deinstall-avalon
deinstall-avalon:
	${RM} ${BINDIR}/avalon ${BINDIR}/aclient ${ETCDIR}/rc.d/avalon

.PHONY: install
install: all

.PHONY: install
install: all
	${INSTALL_PROGRAM} libmessage.so ${LIBDIR}/libmessage.so.${VERSION}
	${INSTALL_PROGRAM} libmessageclient.so ${LIBDIR}/libmessageclient.so.${VERSION}
	${LN} -s libmessage.so.${VERSION} ${LIBDIR}/libmessage.so
	${LN} -s libmessageclient.so.${VERSION} ${LIBDIR}/libmessageclient.so
	${INSTALL_DATA} message.h messageclient.h ${INCDIR}
	${CP} message.man libmessage.3
	${GZIP_CMD} -f libmessage.3
	${INSTALL_MAN} libmessage.3.gz ${MANDIR}
	${CP} messageclient.man libmessageclient.3
	${GZIP_CMD} -f libmessageclient.3
	${INSTALL_MAN} libmessageclient.3.gz ${MANDIR}

.PHONY: deinstall
deinstall:
	${RM} ${LIBDIR}/libmessage.so*
	${RM} ${LIBDIR}/libmessageclient.so*
	${RM} ${MANDIR}/libmessage*
	${RM} ${INCDIR}/message.h

.PHONY: clean
clean:
	rm -f avalon aclient echo echoclient message_ocsp_hours *.rc *.o *tmp *gz *.so
