3535
|
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 LN_S = @LN_S@
|
|
50 MKDIR_P = mkdir -p
|
|
51 INSTALL = @INSTALL@
|
|
52 SHELL = @SHELL@
|
|
53 prefix = @prefix@
|
|
54 exec_prefix = @exec_prefix@
|
|
55 bindir = @bindir@
|
|
56 libdir = @libdir@
|
|
57 plugindir ?= ${PACKAGE}
|
|
58 datarootdir = @datarootdir@
|
|
59 datadir = @datadir@
|
|
60 includedir = @includedir@
|
|
61 includesubdir ?= ${PACKAGE}
|
|
62 mandir = @mandir@
|
|
63 mansubdir ?= man1
|
|
64
|
|
65 OBJS1 = ${SRCS:.c=.o}
|
|
66 OBJS2 = ${OBJS1:.cc=.o}
|
|
67 OBJS3 = ${OBJS2:.cxx=.o}
|
|
68 OBJS4 = ${OBJS3:.d=.o}
|
|
69 OBJS5 = ${OBJS4:.erl=.beam}
|
|
70 OBJS += ${OBJS5:.m=.o}
|
|
71
|
|
72 .SILENT:
|
|
73 .SUFFIXES: .beam .c .cc .cxx .d .erl .m
|
|
74 .PHONY: all subdirs depend install uninstall clean distclean
|
|
75
|
|
76 all: subdirs depend ${OBJS} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${LIB} ${LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST}
|
|
77
|
|
78 subdirs:
|
|
79 for i in ${SUBDIRS}; do \
|
|
80 ${DIR_ENTER}; \
|
|
81 ${MAKE} || exit 1; \
|
|
82 ${DIR_LEAVE}; \
|
|
83 done
|
|
84
|
|
85 depend-hook:
|
|
86
|
|
87 depend: depend-hook
|
|
88 regen=0; \
|
|
89 for i in ${SRCS}; do [ $$i -nt .deps ] && regen=1; done; \
|
|
90 if [ $$regen = 1 ]; then \
|
|
91 rm -f .deps; \
|
|
92 for i in ${SRCS}; do \
|
|
93 case $${i##*.} in \
|
|
94 c|cc|cxx|m) \
|
|
95 ${CPP} ${CPPFLAGS} -M $$i >>.deps; \
|
|
96 esac; \
|
|
97 done; \
|
|
98 fi
|
|
99
|
|
100 ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS}
|
|
101 ${LINK_STATUS}
|
|
102 if ${LD} -o $@ ${OBJS} ${LDFLAGS} ${LIBS}; then \
|
|
103 ${LINK_OK}; \
|
|
104 else \
|
|
105 ${LINK_FAILED}; \
|
|
106 fi
|
|
107
|
|
108 ${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${OBJS}
|
|
109 ${LINK_STATUS}
|
|
110 if ${LD} -o $@ ${OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
|
|
111 ${LINK_OK}; \
|
|
112 else \
|
|
113 ${LINK_FAILED}; \
|
|
114 fi
|
|
115
|
|
116 ${PLUGIN} ${PLUGIN_NONST}: ${EXT_DEPS} ${OBJS}
|
|
117 ${LINK_STATUS}
|
|
118 if ${LD} -o $@ ${OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
|
|
119 ${LINK_OK}; \
|
|
120 else \
|
|
121 ${LINK_FAILED}; \
|
|
122 fi
|
|
123
|
|
124 ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS}
|
|
125 ${LINK_STATUS}
|
|
126 if ${AR} cq $@ ${OBJS}; then \
|
|
127 ${LINK_OK}; \
|
|
128 else \
|
|
129 ${LINK_FAILED}; \
|
|
130 fi
|
|
131
|
|
132 ${EXT_DEPS}: subdirs
|
|
133
|
|
134 .c.o:
|
|
135 ${COMPILE_STATUS}
|
|
136 if ${CC} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
|
|
137 ${COMPILE_OK}; \
|
|
138 else \
|
|
139 ${COMPILE_FAILED}; \
|
|
140 fi
|
|
141
|
|
142 .cc.o .cxx.o:
|
|
143 ${COMPILE_STATUS}
|
|
144 if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
|
|
145 ${COMPILE_OK}; \
|
|
146 else \
|
|
147 ${COMPILE_FAILED}; \
|
|
148 fi
|
|
149
|
|
150 .d.o:
|
|
151 ${COMPILE_STATUS}
|
|
152 if test x"$(basename ${DC})" = x"dmd"; then \
|
|
153 if ${DC} ${DFLAGS} -c -of$@ $<; then \
|
|
154 ${COMPILE_OK}; \
|
|
155 else \
|
|
156 ${COMPILE_FAILED}; \
|
|
157 fi \
|
|
158 else \
|
|
159 if ${DC} ${DFLAGS} -c -o $@ $<; then \
|
|
160 ${COMPILE_OK}; \
|
|
161 else \
|
|
162 ${COMPILE_FAILED}; \
|
|
163 fi \
|
|
164 fi
|
|
165
|
|
166 .erl.beam:
|
|
167 ${COMPILE_STATUS}
|
|
168 if ${ERLC} ${ERLCFLAGS} -o $@ $<; then \
|
|
169 ${COMPILE_OK}; \
|
|
170 else \
|
|
171 ${COMPILE_FAILED}; \
|
|
172 fi
|
|
173
|
|
174 .m.o:
|
|
175 ${COMPILE_STATUS}
|
|
176 if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
|
|
177 ${COMPILE_OK}; \
|
|
178 else \
|
|
179 ${COMPILE_FAILED}; \
|
|
180 fi
|
|
181
|
|
182 install: ${LIB} ${STATIC_LIB} ${PLUGIN} ${PROG} install-extra
|
|
183 for i in ${SUBDIRS}; do \
|
|
184 ${DIR_ENTER}; \
|
|
185 ${MAKE} install || exit 1; \
|
|
186 ${DIR_LEAVE}; \
|
|
187 done
|
|
188
|
|
189 for i in ${LIB}; do \
|
|
190 ${INSTALL_STATUS}; \
|
|
191 if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL_LIB}; then \
|
|
192 ${INSTALL_OK}; \
|
|
193 else \
|
|
194 ${INSTALL_FAILED}; \
|
|
195 fi \
|
|
196 done
|
|
197
|
|
198 for i in ${STATIC_LIB}; do \
|
|
199 ${INSTALL_STATUS}; \
|
|
200 if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i; then \
|
|
201 ${INSTALL_OK}; \
|
|
202 else \
|
|
203 ${INSTALL_FAILED}; \
|
|
204 fi \
|
|
205 done
|
|
206
|
|
207 for i in ${PLUGIN}; do \
|
|
208 ${INSTALL_STATUS}; \
|
|
209 if ${MKDIR_P} ${DESTDIR}${libdir}/${plugindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/${plugindir}/$$i; then \
|
|
210 ${INSTALL_OK}; \
|
|
211 else \
|
|
212 ${INSTALL_FAILED}; \
|
|
213 fi \
|
|
214 done
|
|
215
|
|
216 for i in ${DATA}; do \
|
|
217 ${INSTALL_STATUS}; \
|
|
218 if ${MKDIR_P} ${DESTDIR}${datadir} && ${INSTALL} -m 644 $$i ${DESTDIR}${datadir}/${PACKAGE}/$$i; then \
|
|
219 ${INSTALL_OK}; \
|
|
220 else \
|
|
221 ${INSTALL_FAILED}; \
|
|
222 fi \
|
|
223 done
|
|
224
|
|
225 for i in ${PROG}; do \
|
|
226 ${INSTALL_STATUS}; \
|
|
227 if ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 -s $$i ${DESTDIR}${bindir}/$$i; then \
|
|
228 ${INSTALL_OK}; \
|
|
229 else \
|
|
230 ${INSTALL_FAILED}; \
|
|
231 fi \
|
|
232 done
|
|
233
|
|
234 for i in ${INCLUDES}; do \
|
|
235 ${INSTALL_STATUS}; \
|
|
236 if ${MKDIR_P} ${DESTDIR}${includedir}/${includesubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
|
|
237 ${INSTALL_OK}; \
|
|
238 else \
|
|
239 ${INSTALL_FAILED}; \
|
|
240 fi \
|
|
241 done
|
|
242
|
|
243 for i in ${MAN}; do \
|
|
244 ${INSTALL_STATUS}; \
|
|
245 if ${MKDIR_P} ${DESTDIR}${mandir}/${mansubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
|
|
246 ${INSTALL_OK}; \
|
|
247 else \
|
|
248 ${INSTALL_FAILED}; \
|
|
249 fi \
|
|
250 done
|
|
251
|
|
252 install-extra:
|
|
253
|
|
254 uninstall: uninstall-extra
|
|
255 for i in ${SUBDIRS}; do \
|
|
256 ${DIR_ENTER}; \
|
|
257 ${MAKE} uninstall || exit 1; \
|
|
258 ${DIR_LEAVE}; \
|
|
259 done
|
|
260
|
|
261 for i in ${LIB}; do \
|
|
262 if [ -f ${DESTDIR}${libdir}/$$i ]; then \
|
|
263 if ${UNINSTALL_LIB}; then \
|
|
264 ${DELETE_OK}; \
|
|
265 else \
|
|
266 ${DELETE_FAILED}; \
|
|
267 fi \
|
|
268 fi; \
|
|
269 done
|
|
270
|
|
271 for i in ${STATIC_LIB}; do \
|
|
272 if [ -f ${DESTDIR}${libdir}/$$i ]; then \
|
|
273 if rm -f ${DESTDIR}${libdir}/$$i; then \
|
|
274 ${DELETE_OK}; \
|
|
275 else \
|
|
276 ${DELETE_FAILED}; \
|
|
277 fi \
|
|
278 fi \
|
|
279 done
|
|
280
|
|
281 for i in ${PLUGIN}; do \
|
|
282 if [ -f ${DESTDIR}${libdir}/${plugindir}/$$i ]; then \
|
|
283 if rm -f ${DESTDIR}${libdir}/${plugindir}/$$i; then \
|
|
284 ${DELETE_OK}; \
|
|
285 else \
|
|
286 ${DELETE_FAILED}; \
|
|
287 fi \
|
|
288 fi \
|
|
289 done
|
|
290 -rmdir ${DESTDIR}${libdir}/${plugindir} >/dev/null 2>&1
|
|
291
|
|
292 for i in ${DATA}; do \
|
|
293 if [ -f ${DESTDIR}${datadir}/${PACKAGE}/$$i ]; then \
|
|
294 if rm -f ${DESTDIR}${datadir}/${PACKAGE}/$$i; then \
|
|
295 ${DELETE_OK}; \
|
|
296 else \
|
|
297 ${DELETE_FAILED}; \
|
|
298 fi \
|
|
299 fi \
|
|
300 done
|
|
301
|
|
302 for i in ${PROG}; do \
|
|
303 if [ -f ${DESTDIR}${bindir}/$$i ]; then \
|
|
304 if rm -f ${DESTDIR}${bindir}/$$i; then \
|
|
305 ${DELETE_OK}; \
|
|
306 else \
|
|
307 ${DELETE_FAILED}; \
|
|
308 fi \
|
|
309 fi \
|
|
310 done
|
|
311
|
|
312 for i in ${INCLUDES}; do \
|
|
313 if [ -f ${DESTDIR}${includedir}/${includesubdir}/$$i ]; then \
|
|
314 if rm -f ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
|
|
315 ${DELETE_OK}; \
|
|
316 else \
|
|
317 ${DELETE_FAILED}; \
|
|
318 fi \
|
|
319 fi \
|
|
320 done
|
|
321 -rmdir ${DESTDIR}${includedir}/${includesubdir} >/dev/null 2>&1
|
|
322
|
|
323 for i in ${MAN}; do \
|
|
324 if [ -f ${DESTDIR}${mandir}/${mansubdir}/$$i ]; then \
|
|
325 if rm -f ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
|
|
326 ${DELETE_OK}; \
|
|
327 else \
|
|
328 ${DELETE_FAILED}; \
|
|
329 fi \
|
|
330 fi \
|
|
331 done
|
|
332
|
|
333 uninstall-extra:
|
|
334
|
|
335 clean:
|
|
336 for i in ${SUBDIRS}; do \
|
|
337 ${DIR_ENTER}; \
|
|
338 ${MAKE} clean || exit 1; \
|
|
339 ${DIR_LEAVE}; \
|
|
340 done
|
|
341
|
|
342 for i in ${OBJS} ${CLEAN} .deps *~; do \
|
|
343 if [ -f $$i -o -d $$i ]; then \
|
|
344 if rm -fr $$i; then \
|
|
345 ${DELETE_OK}; \
|
|
346 else \
|
|
347 ${DELETE_FAILED}; \
|
|
348 fi \
|
|
349 fi \
|
|
350 done
|
|
351
|
|
352 distclean: clean
|
|
353 for i in ${SUBDIRS}; do \
|
|
354 ${DIR_ENTER}; \
|
|
355 ${MAKE} distclean || exit 1; \
|
|
356 ${DIR_LEAVE}; \
|
|
357 done
|
|
358
|
|
359 for i in ${PROG} ${PROG_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${DISTCLEAN}; do \
|
|
360 if [ -f $$i -o -d $$i ]; then \
|
|
361 if rm -fr $$i; then \
|
|
362 ${DELETE_OK}; \
|
|
363 else \
|
|
364 ${DELETE_FAILED}; \
|
|
365 fi \
|
|
366 fi \
|
|
367 done
|
|
368
|
|
369 DIR_ENTER = printf "\033[0;36mEntering directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd $$i || exit 1
|
|
370 DIR_LEAVE = printf "\033[0;36mLeaving directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd .. || exit 1
|
|
371 LINK_STATUS = printf "\033[0;33mLinking \033[1;33m$@\033[0;33m...\033[0m\r"
|
|
372 LINK_OK = printf "\033[0;32mSuccessfully linked \033[1;32m$@\033[0;32m.\033[0m\n"
|
|
373 LINK_FAILED = printf "\033[0;31mFailed to link \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1
|
|
374 COMPILE_STATUS = printf "\033[0;33mCompiling \033[1;33m$<\033[0;33m...\033[0m\r"
|
|
375 COMPILE_OK = printf "\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m.\033[0m\n"
|
|
376 COMPILE_FAILED = printf "\033[0;31mFailed to compile \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1
|
|
377 INSTALL_STATUS = printf "\033[0;33mInstalling \033[1;33m$$i\033[0;33m...\033[0m\r"
|
|
378 INSTALL_OK = printf "\033[0;32mSuccessfully installed \033[1;32m$$i\033[0;32m.\033[0m\n"
|
|
379 INSTALL_FAILED = printf "\033[0;31mFailed to install \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1
|
|
380 DELETE_OK = printf "\033[0;34mDeleted \033[1;34m$$i\033[0;34m.\033[0m\n"
|
|
381 DELETE_FAILED = printf "\033[0;31mFailed to delete \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1
|
|
382
|
|
383 -include .deps
|