1.POSIX:
2
3NAME = stagit
4VERSION = 1.1
5
6# paths
7PREFIX = /usr/local
8MANPREFIX = ${PREFIX}/man
9DOCPREFIX = ${PREFIX}/share/doc/${NAME}
10
11CHROMA = $(shell which chroma > /dev/null; echo $$?)
12LIBGIT_INC = -I/usr/local/include
13LIBGIT_LIB = -L/usr/local/lib -lgit2
14
15ifeq (${CHROMA}, 0)
16 STAGIT_CPPFLAGS := ${STAGIT_CPPFLAGS} -DHAS_CHROMA
17endif
18
19
20# use system flags.
21STAGIT_CFLAGS = ${LIBGIT_INC} ${CFLAGS}
22STAGIT_LDFLAGS = ${LIBGIT_LIB} ${LDFLAGS}
23STAGIT_CPPFLAGS = -D_XOPEN_SOURCE=700 -D_DEFAULT_SOURCE -D_BSD_SOURCE
24
25SRC = \
26 stagit.c\
27 stagit-index.c
28COMPATSRC = \
29 reallocarray.c\
30 strlcat.c\
31 strlcpy.c\
32 entity.c\
33 md4c.c\
34 md4c-html.c
35
36BIN = \
37 stagit\
38 stagit-index
39MAN1 = \
40 stagit.1\
41 stagit-index.1
42DOC = \
43 LICENSE\
44 README
45HDR = compat.h
46
47COMPATOBJ = \
48 reallocarray.o\
49 strlcat.o\
50 strlcpy.o\
51 entity.o\
52 md4c.o\
53 md4c-html.o
54
55OBJ = ${SRC:.c=.o} ${COMPATOBJ}
56
57all: ${BIN}
58
59.o:
60 ${CC} -o $@ ${LDFLAGS}
61
62.c.o:
63 ${CC} -o $@ -c $< ${STAGIT_CFLAGS} ${STAGIT_CPPFLAGS}
64
65dist:
66 rm -rf ${NAME}-${VERSION}
67 mkdir -p ${NAME}-${VERSION}
68 cp -f ${MAN1} ${HDR} ${SRC} ${COMPATSRC} ${DOC} \
69 Makefile favicon.png me.webp style.css \
70 example_create.sh example_post-receive.sh \
71 ${NAME}-${VERSION}
72 # make tarball
73 tar -cf - ${NAME}-${VERSION} | \
74 gzip -c > ${NAME}-${VERSION}.tar.gz
75 rm -rf ${NAME}-${VERSION}
76
77${OBJ}: ${HDR}
78
79stagit: stagit.o ${COMPATOBJ}
80 ${CC} -o $@ stagit.o ${COMPATOBJ} ${STAGIT_LDFLAGS}
81
82stagit-index: stagit-index.o ${COMPATOBJ}
83 ${CC} -o $@ stagit-index.o ${COMPATOBJ} ${STAGIT_LDFLAGS}
84
85clean:
86 rm -f ${BIN} ${OBJ} ${NAME}-${VERSION}.tar.gz
87
88install: all
89 # installing executable files.
90 mkdir -p ${DESTDIR}${PREFIX}/bin
91 cp -f ${BIN} ${DESTDIR}${PREFIX}/bin
92 for f in ${BIN}; do chmod 755 ${DESTDIR}${PREFIX}/bin/$$f; done
93 # installing example files.
94 mkdir -p ${DESTDIR}${DOCPREFIX}
95 cp -f style.css\
96 index-style.css\
97 favicon.png\
98 me.webp\
99 example_create.sh\
100 example_post-receive.sh\
101 README.md\
102 ${DESTDIR}${DOCPREFIX}
103 # installing manual pages.
104 mkdir -p ${DESTDIR}${MANPREFIX}/man1
105 cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1
106 for m in ${MAN1}; do chmod 644 ${DESTDIR}${MANPREFIX}/man1/$$m; done
107
108uninstall:
109 # removing executable files.
110 for f in ${BIN}; do rm -f ${DESTDIR}${PREFIX}/bin/$$f; done
111 # removing example files.
112 rm -f \
113 ${DESTDIR}${DOCPREFIX}/style.css\
114 ${DESTDIR}${DOCPREFIX}/index-style.css\
115 ${DESTDIR}${DOCPREFIX}/favicon.png\
116 ${DESTDIR}${DOCPREFIX}/me.webp\
117 ${DESTDIR}${DOCPREFIX}/example_create.sh\
118 ${DESTDIR}${DOCPREFIX}/example_post-receive.sh\
119 ${DESTDIR}${DOCPREFIX}/README
120 -rmdir ${DESTDIR}${DOCPREFIX}
121 # removing manual pages.
122 for m in ${MAN1}; do rm -f ${DESTDIR}${MANPREFIX}/man1/$$m; done
123
124.PHONY: all clean dist install uninstall