]> git.armaanb.net Git - stagit.git/blob - Makefile
Restructure repo
[stagit.git] / Makefile
1 .POSIX:
2
3 NAME = stagit
4 VERSION = 0.9.3
5
6 # paths
7 PREFIX = /usr/local
8 MANPREFIX = ${PREFIX}/man
9 DOCPREFIX = ${PREFIX}/share/doc/${NAME}
10 SHAREPREFIX = ${PREFIX}/share/${NAME}
11
12 LIBGIT_INC = -I/usr/local/include
13 LIBGIT_LIB = -L/usr/local/lib -lgit2
14
15 # use system flags.
16 STAGIT_CFLAGS = ${LIBGIT_INC} ${CFLAGS}
17 STAGIT_LDFLAGS = ${LIBGIT_LIB} ${LDFLAGS}
18 STAGIT_CPPFLAGS = -D_XOPEN_SOURCE=700 -D_DEFAULT_SOURCE -D_BSD_SOURCE
19
20 SRC = \
21         src/stagit.c\
22         src/stagit-index.c
23 COMPATSRC = \
24         src/reallocarray.c\
25         src/strlcat.c\
26         src/strlcpy.c
27 BIN = \
28         stagit\
29         stagit-index
30 MAN1 = \
31         man/stagit.1\
32         man/stagit-index.1
33 DOC = \
34         LICENSE\
35         README
36 HDR = src/compat.h
37
38 COMPATOBJ = \
39         src/reallocarray.o\
40         src/strlcat.o\
41         src/strlcpy.o
42
43 OBJ = ${SRC:.c=.o} ${COMPATOBJ}
44
45 all: ${BIN}
46
47 .o:
48         ${CC} -o $@ ${LDFLAGS}
49
50 .c.o:
51         ${CC} -o $@ -c $< ${STAGIT_CFLAGS} ${STAGIT_CPPFLAGS}
52
53 dist:
54         rm -rf ${NAME}-${VERSION}
55         mkdir -p ${NAME}-${VERSION}
56         cp -f ${MAN1} ${HDR} ${SRC} ${COMPATSRC} ${DOC} \
57                 Makefile resources/* src/highlight.py contrib/* \
58                 ${NAME}-${VERSION}
59         # make tarball
60         tar -cf - ${NAME}-${VERSION} | \
61                 gzip -c > ${NAME}-${VERSION}.tar.gz
62         rm -rf ${NAME}-${VERSION}
63
64 ${OBJ}: ${HDR}
65
66 stagit: src/stagit.o ${COMPATOBJ} requirements.txt
67         pip3 install -r requirements.txt
68         ${CC} -o $@ src/stagit.o ${COMPATOBJ} ${STAGIT_LDFLAGS}
69
70 stagit-index: src/stagit-index.o ${COMPATOBJ}
71         ${CC} -o $@ src/stagit-index.o ${COMPATOBJ} ${STAGIT_LDFLAGS}
72
73 clean:
74         rm -f ${BIN} ${OBJ} ${NAME}-${VERSION}.tar.gz
75
76 install: all
77         # installing executable files.
78         mkdir -p ${DESTDIR}${PREFIX}/bin
79         cp -f ${BIN} ${DESTDIR}${PREFIX}/bin
80         for f in ${BIN}; do chmod 755 ${DESTDIR}${PREFIX}/bin/$$f; done
81         # installing example files.
82         mkdir -p ${DESTDIR}${DOCPREFIX}
83         cp -f resources/*.png\
84                 contrib/*\
85                 README\
86                 ${DESTDIR}${DOCPREFIX}
87         mkdir -p ${DESTDIR}${SHAREPREFIX}
88         cp -f resources/*\
89                 src/highlight.py\
90                 ${DESTDIR}${SHAREPREFIX}
91         # installing manual pages.
92         mkdir -p ${DESTDIR}${MANPREFIX}/man1
93         cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1
94         install -Dm644 man/* ${DESTDIR}${MANPREFIX}/man1
95
96 uninstall:
97         # removing executable files.
98         for f in ${BIN}; do rm -f ${DESTDIR}${PREFIX}/bin/$$f; done
99         # removing example files.
100         rm -f ${DESTDIR}${SHAREPREFIX}/*
101         rm -f ${DESTDIR}${DOCPREFIX}/*
102         rmdir ${DESTDIR}${SHAREPREFIX}
103         rmdir ${DESTDIR}${DOCPREFIX}
104         # removing manual pages.
105         for m in ${MAN1}; do rm -f ${DESTDIR}${MANPREFIX}/man1/$$m; done
106
107 .PHONY: all clean dist install uninstall