1763
|
1 #
|
|
2 # Copyright (c) 2007, Jonathan Schleifer <js@h3c.de>
|
|
3 #
|
|
4 # Permission to use, copy, modify, and/or distribute this software for any
|
|
5 # purpose with or without fee is hereby granted, provided that the above
|
|
6 # copyright notice and this permission notice is present in all copies.
|
|
7 #
|
|
8 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
9 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
10 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
11 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
12 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
13 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
14 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
15 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
16 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
17 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
18 # POSSIBILITY OF SUCH DAMAGE.
|
|
19 #
|
|
20
|
|
21 PACKAGE = @PACKAGE@
|
|
22 CC = @CC@
|
|
23 CXX = @CXX@
|
|
24 CPP = @CPP@
|
|
25 DC = @DC@
|
|
26 ERLC = @ERLC@
|
|
27 OBJC = @OBJC@
|
|
28 AR = @AR@
|
|
29 LD = ${CC}
|
|
30 CFLAGS = @CFLAGS@
|
|
31 CXXFLAGS = @CXXFLAGS@
|
|
32 CPPFLAGS = @CPPFLAGS@
|
|
33 DFLAGS = @DFLAGS@
|
|
34 ERLCFLAGS = @ERLCFLAGS@
|
|
35 OBJCFLAGS = @OBJCFLAGS@
|
|
36 LDFLAGS = @LDFLAGS@
|
|
37 LIBS = @LIBS@
|
|
38 LIB_CPPFLAGS = @LIB_CPPFLAGS@
|
|
39 LIB_CFLAGS = @LIB_CFLAGS@
|
|
40 LIB_LDFLAGS = @LIB_LDFLAGS@
|
|
41 LIB_PREFIX = @LIB_PREFIX@
|
|
42 LIB_SUFFIX = @LIB_SUFFIX@
|
|
43 PLUGIN_CPPFLAGS = @PLUGIN_CPPFLAGS@
|
|
44 PLUGIN_CFLAGS = @PLUGIN_CFLAGS@
|
|
45 PLUGIN_LDFLAGS = @PLUGIN_LDFLAGS@
|
|
46 PLUGIN_SUFFIX = @PLUGIN_SUFFIX@
|
|
47 INSTALL_LIB = @INSTALL_LIB@
|
|
48 UNINSTALL_LIB = @UNINSTALL_LIB@
|
|
49 CLEAN_LIB = @CLEAN_LIB@
|
|
50 LN_S = @LN_S@
|
|
51 MKDIR_P = mkdir -p
|
|
52 INSTALL = @INSTALL@
|
|
53 SHELL = @SHELL@
|
|
54 prefix = @prefix@
|
|
55 exec_prefix = @exec_prefix@
|
|
56 bindir = @bindir@
|
|
57 libdir = @libdir@
|
|
58 plugindir ?= ${PACKAGE}
|
|
59 datarootdir = @datarootdir@
|
|
60 datadir = @datadir@
|
|
61 includedir = @includedir@
|
|
62 includesubdir ?= ${PACKAGE}
|
|
63 mandir = @mandir@
|
|
64 mansubdir ?= man1
|
|
65
|
|
66 OBJS1 = ${SRCS:.c=.o}
|
|
67 OBJS2 = ${OBJS1:.cc=.o}
|
|
68 OBJS3 = ${OBJS2:.cxx=.o}
|
|
69 OBJS4 = ${OBJS3:.d=.o}
|
|
70 OBJS5 = ${OBJS4:.erl=.beam}
|
|
71 OBJS += ${OBJS5:.m=.o}
|
|
72
|
|
73 .SILENT:
|
|
74 .SUFFIXES: .beam .c .cc .cxx .d .erl .m
|
|
75 .PHONY: all subdirs depend install uninstall clean distclean
|
|
76
|
|
77 all: subdirs depend ${OBJS} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${LIB} ${LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST}
|
|
78
|
|
79 subdirs:
|
|
80 for i in ${SUBDIRS}; do \
|
|
81 ${DIR_ENTER}; \
|
|
82 ${MAKE} ${MFLAGS} || exit 1; \
|
|
83 ${DIR_LEAVE}; \
|
|
84 done
|
|
85
|
|
86 depend: pre-depend ${SRCS}
|
|
87 regen=0; \
|
|
88 for i in ${SRCS}; do [ $$i -nt .deps ] && regen=1; done; \
|
|
89 if [ $$regen = 1 ]; then \
|
1815
|
90 ${DEPEND_STATUS}; \
|
1763
|
91 rm -f .deps; \
|
|
92 for i in ${SRCS}; do \
|
|
93 case $${i##*.} in \
|
|
94 c|cc|cxx|m) \
|
1815
|
95 if ${CPP} ${CPPFLAGS} -M $$i >>.deps; then \
|
|
96 ${DEPEND_OK}; \
|
|
97 else \
|
|
98 ${DEPEND_FAILED}; \
|
|
99 fi; \
|
1763
|
100 esac; \
|
|
101 done; \
|
|
102 fi
|
|
103
|
|
104 pre-depend:
|
|
105
|
1815
|
106 ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS}
|
1763
|
107 ${LINK_STATUS}
|
|
108 if ${LD} -o $@ ${OBJS} ${LDFLAGS} ${LIBS}; then \
|
|
109 ${LINK_OK}; \
|
|
110 else \
|
|
111 ${LINK_FAILED}; \
|
|
112 fi
|
|
113
|
|
114 ${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${OBJS}
|
|
115 ${LINK_STATUS}
|
|
116 if ${LD} -o $@ ${OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
|
|
117 ${LINK_OK}; \
|
|
118 else \
|
|
119 ${LINK_FAILED}; \
|
|
120 fi
|
|
121
|
|
122 ${PLUGIN} ${PLUGIN_NONST}: ${EXT_DEPS} ${OBJS}
|
|
123 ${LINK_STATUS}
|
|
124 if ${LD} -o $@ ${OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
|
|
125 ${LINK_OK}; \
|
|
126 else \
|
|
127 ${LINK_FAILED}; \
|
|
128 fi
|
|
129
|
|
130 ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS}
|
|
131 ${LINK_STATUS}
|
|
132 if ${AR} cr $@ ${OBJS}; then \
|
|
133 ${LINK_OK}; \
|
|
134 else \
|
|
135 ${LINK_FAILED}; \
|
|
136 fi
|
|
137
|
|
138 ${EXT_DEPS}: subdirs
|
|
139
|
|
140 .c.o:
|
|
141 ${COMPILE_STATUS}
|
|
142 if ${CC} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
|
|
143 ${COMPILE_OK}; \
|
|
144 else \
|
|
145 ${COMPILE_FAILED}; \
|
|
146 fi
|
|
147
|
|
148 .cc.o .cxx.o:
|
|
149 ${COMPILE_STATUS}
|
|
150 if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
|
|
151 ${COMPILE_OK}; \
|
|
152 else \
|
|
153 ${COMPILE_FAILED}; \
|
|
154 fi
|
|
155
|
|
156 .d.o:
|
|
157 ${COMPILE_STATUS}
|
|
158 if test x"$(basename ${DC})" = x"dmd"; then \
|
|
159 if ${DC} ${DFLAGS} -c -of$@ $<; then \
|
|
160 ${COMPILE_OK}; \
|
|
161 else \
|
|
162 ${COMPILE_FAILED}; \
|
|
163 fi \
|
|
164 else \
|
|
165 if ${DC} ${DFLAGS} -c -o $@ $<; then \
|
|
166 ${COMPILE_OK}; \
|
|
167 else \
|
|
168 ${COMPILE_FAILED}; \
|
|
169 fi \
|
|
170 fi
|
|
171
|
|
172 .erl.beam:
|
|
173 ${COMPILE_STATUS}
|
|
174 if ${ERLC} ${ERLCFLAGS} -o $@ $<; then \
|
|
175 ${COMPILE_OK}; \
|
|
176 else \
|
|
177 ${COMPILE_FAILED}; \
|
|
178 fi
|
|
179
|
|
180 .m.o:
|
|
181 ${COMPILE_STATUS}
|
|
182 if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
|
|
183 ${COMPILE_OK}; \
|
|
184 else \
|
|
185 ${COMPILE_FAILED}; \
|
|
186 fi
|
|
187
|
|
188 install: ${LIB} ${STATIC_LIB} ${PLUGIN} ${PROG} install-extra
|
|
189 for i in ${SUBDIRS}; do \
|
|
190 ${DIR_ENTER}; \
|
|
191 ${MAKE} ${MFLAGS} install || exit 1; \
|
|
192 ${DIR_LEAVE}; \
|
|
193 done
|
|
194
|
|
195 for i in ${LIB}; do \
|
|
196 ${INSTALL_STATUS}; \
|
|
197 if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL_LIB}; then \
|
|
198 ${INSTALL_OK}; \
|
|
199 else \
|
|
200 ${INSTALL_FAILED}; \
|
|
201 fi \
|
|
202 done
|
|
203
|
|
204 for i in ${STATIC_LIB}; do \
|
|
205 ${INSTALL_STATUS}; \
|
|
206 if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i; then \
|
|
207 ${INSTALL_OK}; \
|
|
208 else \
|
|
209 ${INSTALL_FAILED}; \
|
|
210 fi \
|
|
211 done
|
|
212
|
|
213 for i in ${PLUGIN}; do \
|
|
214 ${INSTALL_STATUS}; \
|
|
215 if ${MKDIR_P} ${DESTDIR}${libdir}/${plugindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/${plugindir}/$$i; then \
|
|
216 ${INSTALL_OK}; \
|
|
217 else \
|
|
218 ${INSTALL_FAILED}; \
|
|
219 fi \
|
|
220 done
|
|
221
|
|
222 for i in ${DATA}; do \
|
|
223 ${INSTALL_STATUS}; \
|
|
224 if ${MKDIR_P} $$(dirname ${DESTDIR}${datadir}/${PACKAGE}/$$i) && ${INSTALL} -m 644 $$i ${DESTDIR}${datadir}/${PACKAGE}/$$i; then \
|
|
225 ${INSTALL_OK}; \
|
|
226 else \
|
|
227 ${INSTALL_FAILED}; \
|
|
228 fi \
|
|
229 done
|
|
230
|
|
231 for i in ${PROG}; do \
|
|
232 ${INSTALL_STATUS}; \
|
|
233 if ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 -s $$i ${DESTDIR}${bindir}/$$i; then \
|
|
234 ${INSTALL_OK}; \
|
|
235 else \
|
|
236 ${INSTALL_FAILED}; \
|
|
237 fi \
|
|
238 done
|
|
239
|
|
240 for i in ${INCLUDES}; do \
|
|
241 ${INSTALL_STATUS}; \
|
|
242 if ${MKDIR_P} ${DESTDIR}${includedir}/${includesubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
|
|
243 ${INSTALL_OK}; \
|
|
244 else \
|
|
245 ${INSTALL_FAILED}; \
|
|
246 fi \
|
|
247 done
|
|
248
|
|
249 for i in ${MAN}; do \
|
|
250 ${INSTALL_STATUS}; \
|
|
251 if ${MKDIR_P} ${DESTDIR}${mandir}/${mansubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
|
|
252 ${INSTALL_OK}; \
|
|
253 else \
|
|
254 ${INSTALL_FAILED}; \
|
|
255 fi \
|
|
256 done
|
|
257
|
|
258 install-extra:
|
|
259
|
|
260 uninstall: uninstall-extra
|
|
261 for i in ${SUBDIRS}; do \
|
|
262 ${DIR_ENTER}; \
|
|
263 ${MAKE} ${MFLAGS} uninstall || exit 1; \
|
|
264 ${DIR_LEAVE}; \
|
|
265 done
|
|
266
|
|
267 for i in ${LIB}; do \
|
|
268 if [ -f ${DESTDIR}${libdir}/$$i ]; then \
|
|
269 if ${UNINSTALL_LIB}; then \
|
|
270 ${DELETE_OK}; \
|
|
271 else \
|
|
272 ${DELETE_FAILED}; \
|
|
273 fi \
|
|
274 fi; \
|
|
275 done
|
|
276
|
|
277 for i in ${STATIC_LIB}; do \
|
|
278 if [ -f ${DESTDIR}${libdir}/$$i ]; then \
|
|
279 if rm -f ${DESTDIR}${libdir}/$$i; then \
|
|
280 ${DELETE_OK}; \
|
|
281 else \
|
|
282 ${DELETE_FAILED}; \
|
|
283 fi \
|
|
284 fi \
|
|
285 done
|
|
286
|
|
287 for i in ${PLUGIN}; do \
|
|
288 if [ -f ${DESTDIR}${libdir}/${plugindir}/$$i ]; then \
|
|
289 if rm -f ${DESTDIR}${libdir}/${plugindir}/$$i; then \
|
|
290 ${DELETE_OK}; \
|
|
291 else \
|
|
292 ${DELETE_FAILED}; \
|
|
293 fi \
|
|
294 fi \
|
|
295 done
|
|
296 -rmdir ${DESTDIR}${libdir}/${plugindir} >/dev/null 2>&1
|
|
297
|
|
298 for i in ${DATA}; do \
|
|
299 if [ -f ${DESTDIR}${datadir}/${PACKAGE}/$$i ]; then \
|
|
300 if rm -f ${DESTDIR}${datadir}/${PACKAGE}/$$i; then \
|
|
301 ${DELETE_OK}; \
|
|
302 else \
|
|
303 ${DELETE_FAILED}; \
|
|
304 fi \
|
|
305 fi \
|
|
306 done
|
|
307
|
|
308 for i in ${PROG}; do \
|
|
309 if [ -f ${DESTDIR}${bindir}/$$i ]; then \
|
|
310 if rm -f ${DESTDIR}${bindir}/$$i; then \
|
|
311 ${DELETE_OK}; \
|
|
312 else \
|
|
313 ${DELETE_FAILED}; \
|
|
314 fi \
|
|
315 fi \
|
|
316 done
|
|
317
|
|
318 for i in ${INCLUDES}; do \
|
|
319 if [ -f ${DESTDIR}${includedir}/${includesubdir}/$$i ]; then \
|
|
320 if rm -f ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
|
|
321 ${DELETE_OK}; \
|
|
322 else \
|
|
323 ${DELETE_FAILED}; \
|
|
324 fi \
|
|
325 fi \
|
|
326 done
|
|
327 -rmdir ${DESTDIR}${includedir}/${includesubdir} >/dev/null 2>&1
|
|
328
|
|
329 for i in ${MAN}; do \
|
|
330 if [ -f ${DESTDIR}${mandir}/${mansubdir}/$$i ]; then \
|
|
331 if rm -f ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
|
|
332 ${DELETE_OK}; \
|
|
333 else \
|
|
334 ${DELETE_FAILED}; \
|
|
335 fi \
|
|
336 fi \
|
|
337 done
|
|
338
|
|
339 uninstall-extra:
|
|
340
|
|
341 clean:
|
|
342 for i in ${SUBDIRS}; do \
|
|
343 ${DIR_ENTER}; \
|
|
344 ${MAKE} ${MFLAGS} clean || exit 1; \
|
|
345 ${DIR_LEAVE}; \
|
|
346 done
|
|
347
|
|
348 for i in ${OBJS} ${CLEAN} ${CLEAN_LIB} .deps *~; do \
|
|
349 if [ -f $$i -o -d $$i ]; then \
|
|
350 if rm -fr $$i; then \
|
|
351 ${DELETE_OK}; \
|
|
352 else \
|
|
353 ${DELETE_FAILED}; \
|
|
354 fi \
|
|
355 fi \
|
|
356 done
|
|
357
|
|
358 distclean: clean
|
|
359 for i in ${SUBDIRS}; do \
|
|
360 ${DIR_ENTER}; \
|
|
361 ${MAKE} ${MFLAGS} distclean || exit 1; \
|
|
362 ${DIR_LEAVE}; \
|
|
363 done
|
|
364
|
|
365 for i in ${PROG} ${PROG_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${DISTCLEAN}; do \
|
|
366 if [ -f $$i -o -d $$i ]; then \
|
|
367 if rm -fr $$i; then \
|
|
368 ${DELETE_OK}; \
|
|
369 else \
|
|
370 ${DELETE_FAILED}; \
|
|
371 fi \
|
|
372 fi \
|
|
373 done
|
|
374
|
|
375 DIR_ENTER = printf "\033[0;36mEntering directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd $$i || exit 1
|
|
376 DIR_LEAVE = printf "\033[0;36mLeaving directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd .. || exit 1
|
1815
|
377 DEPEND_STATUS = printf "\033[0;33mGenerating dependencies...\033[0m\r"
|
|
378 DEPEND_OK = printf "\033[0;32mSuccessfully generated dependencies.\033[0m\n"
|
|
379 DEPEND_FAILED = printf "\033[0;31mFailed to generate dependencies!\033[0m\n"; exit 1
|
|
380 COMPILE_STATUS = printf "\033[0;33mCompiling \033[1;33m$<\033[0;33m...\033[0m\r"
|
|
381 COMPILE_OK = printf "\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m.\033[0m\n"
|
|
382 COMPILE_FAILED = printf "\033[0;31mFailed to compile \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1
|
1763
|
383 LINK_STATUS = printf "\033[0;33mLinking \033[1;33m$@\033[0;33m...\033[0m\r"
|
|
384 LINK_OK = printf "\033[0;32mSuccessfully linked \033[1;32m$@\033[0;32m.\033[0m\n"
|
|
385 LINK_FAILED = printf "\033[0;31mFailed to link \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1
|
|
386 INSTALL_STATUS = printf "\033[0;33mInstalling \033[1;33m$$i\033[0;33m...\033[0m\r"
|
|
387 INSTALL_OK = printf "\033[0;32mSuccessfully installed \033[1;32m$$i\033[0;32m.\033[0m\n"
|
|
388 INSTALL_FAILED = printf "\033[0;31mFailed to install \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1
|
|
389 DELETE_OK = printf "\033[0;34mDeleted \033[1;34m$$i\033[0;34m.\033[0m\n"
|
|
390 DELETE_FAILED = printf "\033[0;31mFailed to delete \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1
|
|
391
|
|
392 -include .deps
|