bsd.dep.mk revision 1.72
1#	$NetBSD: bsd.dep.mk,v 1.72 2011/04/10 16:52:36 joerg Exp $
2
3##### Basic targets
4cleandir:	cleandepend
5realdepend:	beforedepend .depend afterdepend
6.ORDER:		beforedepend .depend afterdepend
7
8beforedepend .depend afterdepend: # ensure existence
9
10##### Default values
11MKDEP?=			mkdep
12MKDEP_SUFFIXES?=	.o
13
14##### Build rules
15# some of the rules involve .h sources, so remove them from mkdep line
16
17.if defined(SRCS)							# {
18__acpp_flags=	${_ASM_TRADITIONAL_CPP}
19
20__DPSRCS.all=	${SRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/} \
21		${DPSRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
22__DPSRCS.d=	${__DPSRCS.all:O:u:M*.d}
23__DPSRCS.notd=	${__DPSRCS.all:O:u:N*.d}
24
25.NOPATH: .depend ${__DPSRCS.d}
26
27.if !empty(__DPSRCS.d)							# {
28${__DPSRCS.d}: ${__DPSRCS.notd} ${DPSRCS}
29.endif									# }
30
31.depend: ${__DPSRCS.d}
32	${_MKTARGET_CREATE}
33	rm -f .depend
34	${MKDEP} -d -f ${.TARGET} -s ${MKDEP_SUFFIXES:Q} ${__DPSRCS.d}
35
36.SUFFIXES: .d .s .S .c .C .cc .cpp .cxx .m
37
38.c.d:
39	${_MKTARGET_CREATE}
40	${MKDEP} -f ${.TARGET} -- ${MKDEPFLAGS} \
41	    ${CFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
42	    ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
43
44.m.d:
45	${_MKTARGET_CREATE}
46	${MKDEP} -f ${.TARGET} -- ${MKDEPFLAGS} \
47	    ${OBJCFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
48	    ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
49
50.s.d .S.d:
51	${_MKTARGET_CREATE}
52	${MKDEP} -f ${.TARGET} -- ${MKDEPFLAGS} \
53	    ${AFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
54	    ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${__acpp_flags} ${.IMPSRC}
55
56.C.d .cc.d .cpp.d .cxx.d:
57	${_MKTARGET_CREATE}
58	${MKDEP} -f ${.TARGET} -- ${MKDEPFLAGS} \
59	    ${CXXFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
60	    ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
61
62.endif # defined(SRCS)							# }
63
64##### Clean rules
65cleandepend: .PHONY
66.if defined(SRCS)
67	rm -f .depend ${__DPSRCS.d} ${.CURDIR}/tags ${CLEANDEPEND}
68.endif
69
70##### Custom rules
71.if !target(tags)
72tags: ${SRCS}
73.if defined(SRCS)
74	-cd "${.CURDIR}"; ctags -f /dev/stdout ${.ALLSRC:N*.h} | \
75	    ${TOOL_SED} "s;\${.CURDIR}/;;" > tags
76.endif
77.endif
78