Makefile (1844B)
1 .POSIX: 2 3 NAME = extractjson 4 VERSION = 0.1 5 6 # paths 7 PREFIX = /usr/local 8 MANPREFIX = ${PREFIX}/man 9 DOCPREFIX = ${PREFIX}/share/doc/${NAME} 10 11 # use system flags. 12 EXTRACTJSON_CFLAGS = ${CFLAGS} 13 EXTRACTJSON_LDFLAGS = ${LDFLAGS} 14 EXTRACTJSON_CPPFLAGS = -D_DEFAULT_SOURCE 15 16 # uncomment for conservative locked I/O. 17 #EXTRACTJSON_CPPFLAGS = -D_DEFAULT_SOURCE -DGETNEXT=getchar 18 19 BIN = ${NAME} 20 SRC = ${BIN:=.c} 21 MAN1 = ${BIN:=.1} 22 DOC = \ 23 LICENSE\ 24 README 25 26 all: ${BIN} 27 28 ${BIN}: ${@:=.o} 29 30 OBJ = ${SRC:.c=.o} 31 32 ${OBJ}: ${HDR} 33 34 .o: 35 ${CC} ${EXTRACTJSON_LDFLAGS} -o $@ $< 36 37 .c.o: 38 ${CC} ${EXTRACTJSON_CFLAGS} ${EXTRACTJSON_CPPFLAGS} -o $@ -c $< 39 40 dist: 41 rm -rf "${NAME}-${VERSION}" 42 mkdir -p "${NAME}-${VERSION}" 43 cp -f ${MAN1} ${DOC} ${HDR} \ 44 ${SRC} Makefile "${NAME}-${VERSION}" 45 # make tarball 46 tar cf - "${NAME}-${VERSION}" | gzip -c > "${NAME}-${VERSION}.tar.gz" 47 rm -rf "${NAME}-${VERSION}" 48 49 clean: 50 rm -f ${BIN} ${OBJ} 51 52 install: all 53 # installing executable files. 54 mkdir -p "${DESTDIR}${PREFIX}/bin" 55 cp -f ${BIN} "${DESTDIR}${PREFIX}/bin" 56 for f in ${BIN}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done 57 # installing example files. 58 mkdir -p "${DESTDIR}${DOCPREFIX}" 59 cp -f ${DOC} "${DESTDIR}${DOCPREFIX}" 60 for d in ${DOC}; do chmod 644 "${DESTDIR}${DOCPREFIX}/$$d"; done 61 # installing manual pages for general commands: section 1. 62 mkdir -p "${DESTDIR}${MANPREFIX}/man1" 63 cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1" 64 for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done 65 66 uninstall: 67 # removing executable files. 68 for f in ${BIN}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done 69 # removing example files. 70 for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done 71 -rmdir "${DESTDIR}${DOCPREFIX}" 72 # removing manual pages. 73 for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done 74 75 .PHONY: all clean dist install uninstall