Home | History | Annotate | Line # | Download | only in mk
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