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

BINDIR=${PREFIX}/bin
SHAREDIR=${PREFIX}/share/
MAN1DIR=${PREFIX}/man/man1
MAN5DIR=${PREFIX}/man/man5

INSTALL_PROGRAM=/usr/bin/install -o root -g wheel -m555 -c -s
INSTALL_MAN=/usr/bin/install -o root -g wheel -m444 -c
INSTALL_DATA?=/usr/bin/install -o root -g wheel -m444 -c

RM=/bin/rm -f
MKDIR=/bin/mkdir -p
SED=/usr/bin/sed
CHOWN=/usr/sbin/chown
CHMOD=/bin/chmod
MV=/bin/mv
GZIP_CMD?=/usr/bin/gzip -f

VERSION=3.69

CC=clang
CP=/bin/cp
MKDIR=/bin/mkdir -p
CFLAGS+= -Wall
IFLAGS=-I./
LFLAGS=-lm -lz

.PHONY: all
all: nellie

nellie: nellie.c formatter.o stringstack.o markup.o epub.o
	${CC} ${CFLAGS} -o nellie nellie.c formatter.o stringstack.o markup.c epub.o ${IFLAGS} ${LFLAGS}

deflater: deflater.c
	${CC} ${CFLAGS} -o deflater deflater.c ${LFLAGS}

.PHONY: fonts
fonts: deflater courier-prime-cid.z courier-prime-bold-cid.z courier-prime-italic-cid.z

courier-prime-cid.z: courier-prime-cid.ttf
	./deflater courier-prime-cid.ttf courier-prime-cid.z 2> courier-prime-lengths.txt

courier-prime-bold-cid.z: courier-prime-bold-cid.ttf
	./deflater courier-prime-bold-cid.ttf courier-prime-bold-cid.z 2> courier-prime-bold-lengths.txt

courier-prime-italic-cid.z: courier-prime-italic-cid.ttf
	./deflater courier-prime-italic-cid.ttf courier-prime-italic-cid.z 2> courier-prime-italic-lengths.txt

.PHONY: debug
debug: fonts formatter.c
	${CC} ${CFLAGS} -g -O0 -o nellie nellie.c formatter.c stringstack.c markup.c epub.c ${IFLAGS} ${LFLAGS}

.PHONY: ddeflater
ddflater:
	${CC} ${CFLAGS} -O0 -g -o deflater deflater.c -lz

formatter.c: formatter.pre
	${SED} -e "s|%%PATH%%|${SHAREDIR}/nellie|1" formatter.pre > formatter.c

formatter.o: formatter.c fonts
	${CC} ${CFLAGS} -c -o formatter.o formatter.c ${IFLAGS}

stringstack.o: stringstack.c
	${CC} ${CFLAGS} -c -o stringstack.o stringstack.c ${IFLAGS}

markup.o: markup.c
	${CC} ${CFLAGS} -c -o markup.o markup.c ${IFLAGS}

epub.o: epub.c
	${CC} ${CFLAGS} -c -o epub.o epub.c ${IFLAGS}

.PHONY: install
install: all
	${MKDIR} ${BINDIR} ${SHAREDIR}/nellie
	${INSTALL_PROGRAM} nellie ${BINDIR}
	${INSTALL_DATA} *.z Nellie.txt ${SHAREDIR}/nellie
	${SED} -e "s|%%PATH%%|${SHAREDIR}nellie|1" nellie.man > nellie.1
	${GZIP_CMD} -f nellie.1
	${MKDIR} ${MAN1DIR} ${MAN5DIR}
	${INSTALL_MAN} nellie.1.gz ${MAN1DIR}
	${CP} tsml.man tsml.5
	${GZIP_CMD} -f tsml.5
	${INSTALL_MAN} tsml.5.gz ${MAN5DIR}

.PHONY: deinstall
deinstall:
	${RM} ${BINDIR}/nellie
	${RM} -r ${SHAREDIR}/nellie
	${RM} ${MAN1DIR}/nellie.*
	${RM} ${MAN5DIR}/tsml.*

.PHONY: clean
clean:
	rm -f test formatter.c nellie deflater *.pdf courier*.txt *.z *.z *.o *tmp *backup *gz *.core
	rm -fr ebook
