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