bsd.dep.mk revision 1.76 1 # $NetBSD: bsd.dep.mk,v 1.76 2013/03/05 02:02:07 christos Exp $
2
3 ##### Basic targets
4 realdepend: beforedepend .depend afterdepend
5 .ORDER: beforedepend .depend afterdepend
6
7 beforedepend .depend afterdepend: # ensure existence
8
9 ##### Default values
10 MKDEP?= mkdep
11 MKDEP_SUFFIXES?= .o
12
13 ##### Build rules
14 # some of the rules involve .h sources, so remove them from mkdep line
15
16 .if defined(SRCS) && !empty(SRCS)
17 __acpp_flags= ${_ASM_TRADITIONAL_CPP}
18
19 .if defined(NODPSRCS)
20 .for f in ${SRCS} ${DPSRCS}
21 .if "${NODPSRCS:M${f}}" == ""
22 __DPSRCS.all+= ${f:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
23 .endif
24 .endfor
25 beforedepend: ${DPSRCS}
26 .else
27 __DPSRCS.all+= ${SRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/} \
28 ${DPSRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
29 .endif
30 __DPSRCS.d= ${__DPSRCS.all:O:u:M*.d}
31 __DPSRCS.notd= ${__DPSRCS.all:O:u:N*.d}
32
33 .NOPATH: .depend ${__DPSRCS.d}
34
35 .if !empty(__DPSRCS.d) # {
36 ${__DPSRCS.d}: ${__DPSRCS.notd} ${DPSRCS}
37 .endif # }
38
39 MKDEPSUFFLAGS=-s ${MKDEP_SUFFIXES:Q}
40
41 .if defined(MKDEPINCLUDES) && ${MKDEPINCLUDES} != "no"
42 _MKDEP_MERGEFLAGS=-i
43 _MKDEP_FILEFLAGS=${MKDEPSUFFLAGS}
44 .else
45 _MKDEP_MERGEFLAGS=${MKDEPSUFFLAGS}
46 _MKDEP_FILEFLAGS=
47 .endif
48
49 .depend: ${__DPSRCS.d}
50 ${_MKTARGET_CREATE}
51 rm -f .depend
52 ${MKDEP} ${_MKDEP_MERGEFLAGS} -d -f ${.TARGET} ${__DPSRCS.d}
53
54 .SUFFIXES: .d .s .S .c .C .cc .cpp .cxx .m
55
56 .c.d:
57 ${_MKTARGET_CREATE}
58 ${MKDEP} -f ${.TARGET} ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
59 ${CFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
60 ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
61
62 .m.d:
63 ${_MKTARGET_CREATE}
64 ${MKDEP} -f ${.TARGET} ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
65 ${OBJCFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
66 ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
67
68 .s.d .S.d:
69 ${_MKTARGET_CREATE}
70 ${MKDEP} -f ${.TARGET} ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
71 ${AFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
72 ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${__acpp_flags} ${.IMPSRC}
73
74 .C.d .cc.d .cpp.d .cxx.d:
75 ${_MKTARGET_CREATE}
76 ${MKDEP} -f ${.TARGET} ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
77 ${CXXFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
78 ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
79
80 .endif # defined(SRCS) && !empty(SRCS) # }
81
82 ##### Clean rules
83 .if defined(SRCS) && !empty(SRCS)
84 CLEANDIRFILES+= .depend ${__DPSRCS.d} ${.CURDIR}/tags ${CLEANDEPEND}
85 .endif
86
87 ##### Custom rules
88 .if !target(tags)
89 tags: ${SRCS}
90 .if defined(SRCS) && !empty(SRCS)
91 -cd "${.CURDIR}"; ctags -f /dev/stdout ${.ALLSRC:N*.h} | \
92 ${TOOL_SED} "s;\${.CURDIR}/;;" > tags
93 .endif
94 .endif
95
96 ##### Pull in related .mk logic
97 .include <bsd.clean.mk>
98