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

STAGEDIR?=/
DEST=${STAGEDIR}${PREFIX}/bin
MANDIR=${STAGEDIR}${PREFIX}/man/man3/
LIBDIR=${STAGEDIR}${PREFIX}/lib
INCDIR=${STAGEDIR}${PREFIX}/include
BINDIR=${STAGEDIR}${PREFIX}/bin

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

RM?=/bin/rm -f
CP?=/bin/cp
LN?=/bin/ln -f
GZIP_CMD?=/usr/bin/gzip

VERSION=5.73
CC?=cc

CFLAGS+= -Wall -ansi
LDFLAGS= -fpic -shared -Wl,-soname,libdombey.so.${VERSION}
TLDFLAGS= -fpic -shared -Wl,-soname,libdombeythreads.so.${VERSION}
LFLAGS=-lcrypto

.PHONY: all
all: libdombey.so libdombeythreads.so

libdombey.so: dombey.c
	${CC} ${CFLAGS} ${LDFLAGS} -o $@ dombey.c ${LFLAGS}

libdombeythreads.so: threaded.c
	${CC} -pthread ${CFLAGS} ${TLDFLAGS} -o $@ threaded.c ${LFLAGS}

test: test.c dombey.c
	${CC} -ggdb ${CFLAGS} -O0 -o dombey.o -c dombey.c
	${CC} -ggdb ${CFLAGS} -O0 -o test test.c dombey.o ${LFLAGS}

test_threads: test.c threaded.c
	${CC} -ggdb -pthread ${CFLAGS} -O0 -o threaded.o -c threaded.c
	${CC} -ggdb -pthread ${CFLAGS} -O0 -o test_threads test.c threaded.o ${LFLAGS}

.PHONY: debug
debug: dombey.c
	${CC} -ggdb ${CFLAGS} -O0 -c -o dombey.o -c dombey.c
	${CC} -ggdb -pthread ${CFLAGS} -O0 -c -o threaded.o threaded.c

.PHONY: install
install: all
	${INSTALL_PROGRAM} libdombey.so ${LIBDIR}/libdombey.so.${VERSION}
	${INSTALL_PROGRAM} libdombeythreads.so ${LIBDIR}/libdombeythreads.so.${VERSION}
	${LN} -s libdombey.so.${VERSION} ${LIBDIR}/libdombey.so
	${LN} -s libdombeythreads.so.${VERSION} ${LIBDIR}/libdombeythreads.so
	${INSTALL_DATA} dombey.h ${INCDIR}
	${CP} dombey.man libdombey.3
	${GZIP_CMD} -f libdombey.3
	${INSTALL_MAN} libdombey.3.gz ${MANDIR}

.PHONY: deinstall
deinstall:
	${RM} ${LIBDIR}/libdombey*
	${RM} ${MANDIR}/libdombey*
	${RM} ${INCDIR}/dombey*.h

.PHONY: clean
clean:
	rm -f test test_threads *.o *.so *.so.${VERSION} *tmp *backup *gz *core
