tMakefile - granular - granular dynamics simulation
(HTM) git clone git://src.adamsgaard.dk/granular
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
tMakefile (2536B)
---
1 .POSIX:
2
3 NAME = granular
4 VERSION = 0.1.0
5
6 # paths
7 PREFIX = /usr/local
8 MANPREFIX = ${PREFIX}/share/man
9 DOCPREFIX = ${PREFIX}/share/doc/${NAME}
10
11 BIN = \
12 granular\
13 granular2vtu\
14 granularenergy\
15 granulargrain\
16 granularpacking\
17
18 SCRIPTS = \
19 granular2img\
20
21 SRC = \
22 arrays.c\
23 contact.c\
24 grain.c\
25 grains.c\
26 packing.c\
27 simulation.c\
28 util.c\
29
30 HDR = \
31 arg.h\
32 arrays.h\
33 contact.h\
34 grain.h\
35 grains.h\
36 granular.h\
37 packing.h\
38 simulation.h\
39 util.h\
40
41 LIBS = -lm
42
43 GRANULAR_CFLAGS = ${CFLAGS} ${INCS} -DVERSION=\"${VERSION}\"
44 GRANULAR_LDFLAGS = ${LDFLAGS}
45 GRANULAR_LIBS = ${LIBS}
46
47 MAN1 = ${BIN:=.1}\
48 ${SCRIPTS:=.1}
49 MAN5 = ${NAME:=.5}
50 DOC = \
51 README.md\
52 LICENSE\
53 two-grain-collision.sh\
54 many-grain-collision.sh
55
56 all: ${BIN}
57
58 OBJ = ${SRC:.c=.o}
59
60 ${OBJ}: ${HDR}
61
62 granular: granular.o
63 granular2vtu: granular2vtu.o
64 granularenergy: granularenergy.o
65 granulargrain: granulargrain.o
66 granularpacking: granularpacking.o
67
68 ${BIN}: ${OBJ}
69 ${CC} ${GRANULAR_LDFLAGS} -o $@ ${@:=.o} ${OBJ} ${GRANULAR_LIBS}
70
71 .c.o:
72 ${CC} ${GRANULAR_CFLAGS} -o $@ -c $<
73
74 dist:
75 rm -rf "${NAME}-${VERSION}"
76 mkdir -p "${NAME}-${VERSION}"
77 cp -rf ${MAN1} ${MAN5} ${DOC} ${HDR} ${SRC} ${BIN:=.c} ${SCRIPTS} \
78 Makefile "${NAME}-${VERSION}"
79 # make tarball
80 tar cf - "${NAME}-${VERSION}" | \
81 gzip -c > "${NAME}-${VERSION}.tar.gz"
82 rm -rf "${NAME}-${VERSION}"
83
84 install: ${BIN}
85 # installing executables
86 mkdir -p ${DESTDIR}${PREFIX}/bin
87 cp -f ${BIN} ${SCRIPTS} ${DESTDIR}${PREFIX}/bin
88 for f in ${BIN} ${SCRIPTS}; do chmod 755 ${DESTDIR}${PREFIX}/bin/$$f; done
89 # installing documentation and license information
90 mkdir -p ${DESTDIR}${DOCPREFIX}
91 cp -f ${DOC} ${DESTDIR}${DOCPREFIX}
92 for f in ${DOC}; do chmod 644 ${DESTDIR}${DOCPREFIX}/$$f; done
93 # installing man pages
94 mkdir -p ${DESTDIR}${MANPREFIX}/man1
95 cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1
96 for f in ${MAN1}; do chmod 644 ${DESTDIR}${MANPREFIX}/man1/$$f; done
97 mkdir -p ${DESTDIR}${MANPREFIX}/man5
98 cp -f ${MAN5} ${DESTDIR}${MANPREFIX}/man5
99 for f in ${MAN5}; do chmod 644 ${DESTDIR}${MANPREFIX}/man5/$$f; done
100
101 uninstall:
102 # removing executable files
103 for f in ${BIN} ${SCRIPTS}; do rm -f ${DESTDIR}${PREFIX}/bin/$$f; done
104 # removing documentation and license information
105 for f in ${DOC}; do rm -f ${DESTDIR}${DOCPREFIX}/$$f; done
106 -rmdir ${DESTDIR}${DOCPREFIX}
107 # removing man pages
108 for f in ${MAN1}; do rm -f ${DESTDIR}${MANPREFIX}/man1/$$f; done
109 for f in ${MAN5}; do rm -f ${DESTDIR}${MANPREFIX}/man5/$$f; done
110
111 clean:
112 rm -f ${BIN} ${OBJ} ${BIN:=.o}
113
114 .PHONY: all install uninstall clean dist