comparison buildsys.mk.in @ 3535:9ddf21ab5c84 trunk

Transit to Mk2.
author William Pitcock <nenolod@atheme.org>
date Mon, 17 Sep 2007 13:10:19 -0500
parents
children 1f75259a1cac
comparison
equal deleted inserted replaced
3534:10990786a090 3535:9ddf21ab5c84
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