comparison buildsys.mk.in @ 4749:b86e9f9663f4

Parallel dependency resolution by Jonathan Schleifer.
author Tony Vroon <chainsaw@gentoo.org>
date Wed, 30 Jul 2008 23:04:32 +0100
parents ef42ac9179c9
children 4f9bc75a9672
comparison
equal deleted inserted replaced
4748:60d8d8f667ed 4749:b86e9f9663f4
1 # 1 #
2 # Copyright (c) 2007, Jonathan Schleifer <js-buildsys@webkeks.org> 2 # Copyright (c) 2007 - 2008, Jonathan Schleifer <js-buildsys@webkeks.org>
3 # 3 #
4 # https://webkeks.org/hg/buildsys/ 4 # https://webkeks.org/hg/buildsys/
5 # 5 #
6 # Permission to use, copy, modify, and/or distribute this software for any 6 # Permission to use, copy, modify, and/or distribute this software for any
7 # purpose with or without fee is hereby granted, provided that the above 7 # purpose with or without fee is hereby granted, provided that the above
71 OBJS1 = ${SRCS:.c=.o} 71 OBJS1 = ${SRCS:.c=.o}
72 OBJS2 = ${OBJS1:.cc=.o} 72 OBJS2 = ${OBJS1:.cc=.o}
73 OBJS3 = ${OBJS2:.cxx=.o} 73 OBJS3 = ${OBJS2:.cxx=.o}
74 OBJS4 = ${OBJS3:.d=.o} 74 OBJS4 = ${OBJS3:.d=.o}
75 OBJS5 = ${OBJS4:.erl=.beam} 75 OBJS5 = ${OBJS4:.erl=.beam}
76 OBJS += ${OBJS5:.m=.o} 76 OBJS6 = ${OBJS5:.m=.o}
77 DEPS += ${OBJS:.o=.dep} 77 OBJS += ${OBJS6:.xpm=.o}
78 78
79 .SILENT: 79 .SILENT:
80 .SUFFIXES: .beam .c .cc .cxx .d .dep .erl .m 80 .SUFFIXES: .beam .c .cc .cxx .d .dep .erl .m .xpm
81 .PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean 81 .PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean
82 82
83 all: 83 all:
84 for i in subdirs depend ${STATIC_LIB} ${STATIC_LIB_NOINST} ${LIB} ${LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST}; do \ 84 for i in subdirs depend ${STATIC_LIB} ${STATIC_LIB_NOINST} ${LIB} ${LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST}; do \
85 ${MAKE} ${MFLAGS} $$i || exit 1; \ 85 ${MAKE} ${MFLAGS} $$i || exit 1; \
92 ${DIR_LEAVE}; \ 92 ${DIR_LEAVE}; \
93 done 93 done
94 94
95 depend: pre-depend ${SRCS} 95 depend: pre-depend ${SRCS}
96 regen=0; \ 96 regen=0; \
97 deps=""; \
97 test -f .deps || regen=1; \ 98 test -f .deps || regen=1; \
98 for i in ${SRCS}; do test $$i -nt .deps && regen=1; done; \ 99 for i in ${SRCS}; do \
99 if test x"$$regen" = x"1" -a x"${DEPS}" != "x"; then \ 100 case $$i in \
101 *.o) \
102 test $$i -nt .deps && regen=1; \
103 deps="$${deps%.o}.dep $$i"; \
104 ;; \
105 esac; \
106 done; \
107 if test x"$$regen" = x"1" -a x"$$deps" != "x"; then \
100 ${DEPEND_STATUS}; \ 108 ${DEPEND_STATUS}; \
101 rm -f .deps; \ 109 rm -f .deps; \
102 if ${MAKE} ${MFLAGS} ${DEPS}; then \ 110 if ${MAKE} ${MFLAGS} $$deps; then \
103 cat ${DEPS} >.deps; \ 111 cat $$deps >.deps; \
104 rm -f ${DEPS}; \ 112 rm -f $$deps; \
105 ${DEPEND_OK}; \ 113 ${DEPEND_OK}; \
106 else \ 114 else \
107 rm -f .deps ${DEPS}; \ 115 rm -f .deps $$deps; \
108 ${DEPEND_FAILED}; \ 116 ${DEPEND_FAILED}; \
109 fi; \ 117 fi; \
110 fi 118 fi
111 119
112 .c.dep .cc.dep .cxx.dep .m.dep: 120 .c.dep .cc.dep .cxx.dep .m.dep:
113 ${CPP} ${CPPFLAGS} -M $< >$@ 121 ${CPP} ${CPPFLAGS} -M $< >$@
114 122
115 .d.dep: 123 .d.dep:
124 .xpm.dep:
116 125
117 pre-depend: 126 pre-depend:
118 127
119 ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS} 128 ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS}
120 ${LINK_STATUS} 129 ${LINK_STATUS}
189 fi 198 fi
190 199
191 .m.o: 200 .m.o:
192 ${COMPILE_STATUS} 201 ${COMPILE_STATUS}
193 if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ 202 if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
203 ${COMPILE_OK}; \
204 else \
205 ${COMPILE_FAILED}; \
206 fi
207
208 .xpm.o:
209 ${COMPILE_STATUS}
210 if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
194 ${COMPILE_OK}; \ 211 ${COMPILE_OK}; \
195 else \ 212 else \
196 ${COMPILE_FAILED}; \ 213 ${COMPILE_FAILED}; \
197 fi 214 fi
198 215