Makefile (2371B)
1 .POSIX: 2 3 NAME = numtools 4 VERSION = 0.5.0 5 6 # paths 7 PREFIX = /usr/local 8 MANPREFIX = ${PREFIX}/man 9 DOCPREFIX = ${PREFIX}/share/doc/${NAME} 10 11 BIN = \ 12 max \ 13 mean \ 14 min \ 15 randcounts \ 16 randnum \ 17 range \ 18 rangetest \ 19 stddev \ 20 stdvar \ 21 sum \ 22 transpose \ 23 24 SCRIPTS = \ 25 histpdf \ 26 27 SRC = \ 28 util.c \ 29 30 COMPATSRC = \ 31 strlcpy.c \ 32 strnlen.c \ 33 strtonum.c \ 34 xreallocarray.c \ 35 36 COMPATOBJ = ${COMPATSRC:.c=.o} 37 38 HDR = \ 39 util.h \ 40 41 LIB = ${COMPATOBJ} 42 LIBS = -lm 43 44 _CFLAGS = ${CFLAGS} ${INCS} -DVERSION=\"${VERSION}\" 45 _LDFLAGS = ${LDFLAGS} 46 _CPPFLAGS = ${CPPFLAGS} -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE 47 48 MAN1 = ${BIN:=.1} ${SCRIPTS:=.1} 49 DOC = \ 50 LICENSE \ 51 README \ 52 53 all: ${BIN} 54 55 OBJ = ${SRC:.c=.o} ${COMPATOBJ} 56 57 ${OBJ}: ${HDR} 58 59 max: max.o 60 mean: mean.o 61 min: min.o 62 randcounts: randcounts.o 63 randnum: randnum.o 64 range: range.o 65 rangetest: rangetest.o 66 stddev: stddev.o 67 stdvar: stdvar.o 68 sum: sum.o 69 transpose: transpose.o 70 71 ${BIN}: ${LIB} ${OBJ} 72 ${CC} ${_LDFLAGS} -o $@ ${@:=.o} ${OBJ} ${LIBS} 73 74 .c.o: 75 ${CC} ${_CFLAGS} ${_CPPFLAGS} -o $@ -c $< 76 77 install: 78 # installing executable files and scripts. 79 mkdir -p "${DESTDIR}${PREFIX}/bin" 80 cp -f ${BIN} ${SCRIPTS} "${DESTDIR}${PREFIX}/bin" 81 for f in ${BIN} ${SCRIPTS}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done 82 # installing documentation files. 83 mkdir -p "${DESTDIR}${DOCPREFIX}" 84 cp -f ${DOC} "${DESTDIR}${DOCPREFIX}" 85 for d in ${DOC}; do chmod 755 "${DESTDIR}${DOCPREFIX}/$$d"; done 86 # installing manual pages for general commands: section 1. 87 mkdir -p "${DESTDIR}${MANPREFIX}/man1" 88 cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1" 89 for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done 90 91 uninstall: 92 # removing executable files and scripts. 93 for f in ${BIN} ${SCRIPTS}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done 94 # removing example files. 95 for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done 96 -rmdir "${DESTDIR}${DOCPREFIX}" 97 # removing manual pages. 98 for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done 99 100 dist: 101 rm -rf "${NAME}-${VERSION}" 102 mkdir -p "${NAME}-${VERSION}" 103 cp -rf ${MAN1} ${DOC} ${BIN:=.c} ${SRC} ${HDR} ${COMPATSRC} ${SCRIPTS} \ 104 Makefile "${NAME}-${VERSION}" 105 # make tarball 106 tar cf - "${NAME}-${VERSION}" | \ 107 gzip -c > "${NAME}-${VERSION}.tar.gz" 108 rm -rf "${NAME}-${VERSION}" 109 110 clean: 111 rm -f ${BIN} ${BIN:=.o} ${OBJ} ${LIB} 112 113 .PHONY: install uninstall dist clean