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