Makefile (2131B)
1 .POSIX: 2 3 NAME = stopwatch 4 VERSION = 0.2.1 5 6 # paths 7 PREFIX = /usr/local 8 MANPREFIX = ${PREFIX}/share/man 9 DOCPREFIX = ${PREFIX}/share/doc/${NAME} 10 11 RANLIB = ranlib 12 13 BIN = \ 14 stopwatch\ 15 timer 16 SRC = ${BIN:=.c} 17 HDR = timeutil.h 18 19 LIBTIMEUTIL = libtimeutil.a 20 LIBTIMEUTILSRC = timeutil.c 21 LIBTIMEUTILOBJ = ${LIBTIMEUTILSRC:.c=.o} 22 23 COMPATSRC =\ 24 strlcpy.c\ 25 strtonum.c 26 COMPATOBJ = ${COMPATSRC:.c=.o} 27 28 LIB = ${LIBTIMEUTIL} ${COMPATOBJ} 29 30 X11INC = /usr/X11R6/include 31 X11LIB = /usr/X11R6/lib 32 INCS = -I${X11INC} 33 LIBS = -L${X11LIB} -lX11 34 35 STOPWATCHCFLAGS = ${CFLAGS} ${INCS} 36 STOPWATCHLDFLAGS = ${LDFLAGS} ${LIBS} 37 STOPWATCHCPPFLAGS = ${CPPFLAGS} 38 39 MAN1 = ${BIN:=.1} 40 DOC = \ 41 LICENSE\ 42 README 43 44 all: ${BIN} 45 46 ${BIN}: ${LIB} ${@:=.o} 47 48 OBJ = ${SRC:.c=.o} ${LIBTIMEUTILOBJ} ${COMPATOBJ} 49 50 ${OBJ}: ${HDR} 51 52 .o: 53 ${CC} ${STOPWATCHLDFLAGS} -o $@ $< ${LIB} 54 55 .c.o: 56 ${CC} ${STOPWATCHCFLAGS} ${STOPWATCHCPPFLAGS} -o $@ -c $< 57 58 ${LIBTIMEUTIL}: ${LIBTIMEUTILOBJ} 59 ${AR} -rc $@ $? 60 ${RANLIB} $@ 61 62 dist: 63 rm -rf "${NAME}-${VERSION}" 64 mkdir -p "${NAME}-${VERSION}" 65 cp -f ${MAN1} ${DOC} ${SRC} ${LIBTIMEUTILSRC} ${COMPATSRC} Makefile "${NAME}-${VERSION}" 66 tar cf - "${NAME}-${VERSION}" | gzip -c > "${NAME}-${VERSION}.tar.gz" 67 rm -rf "${NAME}-${VERSION}" 68 69 clean: 70 rm -f ${BIN} ${OBJ} ${LIB} 71 72 install: 73 # installing executable files. 74 mkdir -p "${DESTDIR}${PREFIX}/bin" 75 cp -f ${BIN} "${DESTDIR}${PREFIX}/bin" 76 for f in ${BIN}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done 77 # installing documentation files. 78 mkdir -p "${DESTDIR}${DOCPREFIX}" 79 cp -f ${DOC} "${DESTDIR}${DOCPREFIX}" 80 # installing manual pages for general commands: section 1. 81 mkdir -p "${DESTDIR}${MANPREFIX}/man1" 82 cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1" 83 for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done 84 85 uninstall: 86 # removing executable files. 87 for f in ${BIN}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done 88 # removing documentation files. 89 for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done 90 -rmdir "${DESTDIR}${DOCPREFIX}" 91 # removing manual pages. 92 for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done 93 94 .PHONY: all clean dist install uninstall