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

VER_MAJOR=4
VER_MINOR=143

PORTNAME?=munger
PORTVERSION?=${VER_MAJOR}.${VER_MINOR}

INC=-I${LOCALBASE}/include
LIB= -L./ -lmunger -lcalendar -lcrypt -lm -lcurses -L${LOCALBASE}/lib/ 
DLIB= -lcalendar -lcrypt -lm -lcurses -L${LOCALBASE}/lib/ 

MM=options.mm stacks.mm grep.mm cgi.mm fmt.mm

DESTDIR?=/
DATADIR?=${DESTDIR}${PREFIX}/share/${PORTNAME}-${PORTVERSION}
DEST=${DESTDIR}${PREFIX}/bin
LIBDIR=${DESTDIR}${PREFIX}/lib
MANDIR=${DESTDIR}${PREFIX}/man/man1/

SCRIPTS= err.munger cat.munger transform.munger grep.munger view.munger \
	client.cgi fmt.munger filter.munger httpd.munger compiler.munger \
	mbox2munger.munger mime2munger.munger xml2alist.munger tk.munger \
	cal.munger xml2sqlite.munger rss.munger blog.cgi login.cgi incorporation.munger \
	msh.munger echo.munger xml2buffer.munger ipdatabase.munger ip2country.munger
DATA=library.munger xmlquery.munger cgi.munger options.munger \
	xmlsqlite.munger blog.css login.css

SRC=intrinsics.c lisp.c lisp.h

VERSION=-DVERSION_MAJOR=${VER_MAJOR} -DVERSION_MINOR=${VER_MINOR}
LIB_VERSION=33
MM_VERSION=${VER_MAJOR}.${VER_MINOR}
DFLAGS= -DDATADIR=\"${DATADIR}\" ${VERSION}

.if defined(PROFILE)
CFLAGS+= -pg
LIB= -lmunger -lc_p -lm_p -lcrypt_p -lcalendar_p -lcurses_p
.endif

.if defined(WITH_SQL)
DFLAGS+= -DSQL
LIB+= -pthread -lsqlite3
DLIB+= -pthread -lsqlite3
.endif

.if !defined(WITH_DKNS)
SCRIPTS+= dkns.munger
.endif

CFLAGS+= -Wall -ansi ${DFLAGS}
LFLAGS= -fpic -shared -Wl,-soname,libmunger.so.${LIB_VERSION}

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

MKDIR?=mkdir -p -m 555
CP?=/bincp
SED?=/usr/bin/sed
RM?=/bin/rm
GZIP_CMD?=/usr/bin/gzip

SHELL=/bin/sh

all: munger libminimunger.a

debug: ${SRC}
	${CC} ${CFLAGS} -O0 -ggdb -DDEBUG ${INC} lisp.c ${DLIB} -o munger

libmunger.so: intrinsics.c lisp.h
	${CC} ${CFLAGS} -finline-functions ${INC} ${LFLAGS} -o $@ intrinsics.c

munger: libmunger.so ${SRC}
	${CC} ${CFLAGS} -finline-functions ${INC} -o $@ lisp.c ${LIB}

runtime.o: runtime.c runtime.h
	${CC} ${CFLAGS} ${INC} -c -o $@ runtime.c

libminimunger.a: runtime.o
	ar rc $@ runtime.o

mmdebug: runtime.c runtime.h
	${CC} ${CFLAGS} -O0 -ggdb -DDEBUG ${INC} -c -o runtime.o runtime.c
	ar rc libminimunger.a runtime.o

tags: ${SRC}
	ctags ${SRC}

clean:
	${RM} -rf munger libminimunger.a libmunger.so* munger.gmon munger.gprof *.o tmp *.core tags *~ *.gz *.1 *.csv

install: all
	${MKDIR} ${DATADIR}
.for I in ${SCRIPTS}
	${SED} -e "s|MUNGERPATH|${DEST}/munger|1" $I >tmp
	${INSTALL_SCRIPT} tmp ${DATADIR}/$I
.endfor
	${INSTALL_DATA} ${DATA} ${DATADIR}
	${RM} tmp
	${INSTALL_PROGRAM} libmunger.so ${LIBDIR}/libmunger.so.${LIB_VERSION} 
	${INSTALL_PROGRAM} munger ${DEST}
	cp munger.man munger.1
	${GZIP_CMD} -f munger.1
	${INSTALL_MAN} munger.1.gz ${MANDIR}

	${INSTALL_DATA} libminimunger.a ${PREFIX}/lib/libminimunger.a
	${INSTALL_DATA} runtime.h ${PREFIX}/include/minimunger.h
	${INSTALL_DATA} ${MM} ${DATADIR}
	${SED} -e "1s|^#!/MUNGERPATH|#!${PREFIX}/bin/munger|1" \
		-e "s|%%PREFIX%%|${PREFIX}|" -e "s|%%VERSION%%|${MM_VERSION}|" mm.munger > tmp
	${INSTALL_SCRIPT} tmp ${DATADIR}/mm.munger
	${SED} -e "s|%%PREFIX%%|${PREFIX}|g" -e "s|%%VERSION%%|${MM_VERSION}|g" minimunger.man > minimunger.1
	${GZIP_CMD} -f minimunger.1
	${INSTALL_MAN} minimunger.1.gz ${PREFIX}/man/man1

.if defined(WITH_DKNS)
	${SED} -e "s|MUNGERPATH|${DEST}/munger|1" dkns.munger >tmp
	${INSTALL_SCRIPT} tmp ${DEST}/dkns
	cp dkns.man dkns.1
	${GZIP_CMD} -f dkns.1
	${INSTALL_MAN} dkns.1.gz ${MANDIR}
.endif

uninstall:
	${RM} -rf ${DATADIR}
	${RM} -f ${DEST}/munger
	${RM} -f ${MANDIR}/munger.1.gz


syntax highlighted by Code2HTML, v. 0.9.1