Home | History | Annotate | Line # | Download | only in mk
bsd.dep.mk revision 1.83.14.1
      1 #	$NetBSD: bsd.dep.mk,v 1.83.14.1 2019/06/10 22:05:42 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 MKDEPCXX?=		mkdep
     12 MKDEP_SUFFIXES?=	.o .d
     13 
     14 ##### Build rules
     15 # some of the rules involve .h sources, so remove them from mkdep line
     16 
     17 .if defined(SRCS) && !empty(SRCS)
     18 __acpp_flags=	${_ASM_TRADITIONAL_CPP}
     19 
     20 .if defined(NODPSRCS)
     21 .for f in ${SRCS} ${DPSRCS}
     22 .if "${NODPSRCS:M${f}}" == ""
     23 __DPSRCS.all+=	${f:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
     24 .endif
     25 .endfor
     26 beforedepend: ${DPSRCS}
     27 .else
     28 __DPSRCS.all+=	${SRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/} \
     29 		${DPSRCS:C/\.(c|m|s|S|C|cc|cpp|cxx)$/.d/}
     30 .endif
     31 __DPSRCS.d=	${__DPSRCS.all:O:u:M*.d}
     32 __DPSRCS.notd=	${__DPSRCS.all:O:u:N*.d}
     33 
     34 .NOPATH: .depend ${__DPSRCS.d}
     35 
     36 .if !empty(__DPSRCS.d)							# {
     37 ${__DPSRCS.d}: ${__DPSRCS.notd} ${DPSRCS}
     38 .endif									# }
     39 
     40 MKDEPSUFFLAGS=-s ${MKDEP_SUFFIXES:Q}
     41 
     42 .if defined(MKDEPINCLUDES) && ${MKDEPINCLUDES} != "no"
     43 .STALE:
     44 	@echo Rebuilding dependency file: ${.ALLSRC}
     45 	@rm -f ${.ALLSRC}
     46 	@(cd ${.CURDIR} && ${MAKE} depend)
     47 _MKDEP_MERGEFLAGS=-i
     48 _MKDEP_FILEFLAGS=${MKDEPSUFFLAGS}
     49 .else
     50 _MKDEP_MERGEFLAGS=${MKDEPSUFFLAGS}
     51 _MKDEP_FILEFLAGS=
     52 .endif
     53 
     54 .depend: ${__DPSRCS.d}
     55 	${_MKTARGET_CREATE}
     56 	rm -f .depend
     57 	${MKDEP} ${_MKDEP_MERGEFLAGS} -d -f ${.TARGET} ${__DPSRCS.d}
     58 
     59 .SUFFIXES: .d .s .S .c .C .cc .cpp .cxx .m
     60 
     61 .c.d:
     62 	${_MKTARGET_CREATE}
     63 	${MKDEP} -f ${.TARGET}.tmp ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
     64 	    ${CFLAGS:M-std=*} ${CFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
     65 	    ${CPPFLAGS:N-Wp,-iremap,*} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \
     66 	    ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} && \
     67 	    ${MV} ${.TARGET}.tmp ${.TARGET}
     68 
     69 .m.d:
     70 	${_MKTARGET_CREATE}
     71 	${MKDEP} -f ${.TARGET}.tmp ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
     72 	    ${OBJCFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
     73 	    ${CPPFLAGS:N-Wp,-iremap,*} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \
     74 	    ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} && \
     75 	    ${MV} ${.TARGET}.tmp ${.TARGET}
     76 
     77 .s.d .S.d:
     78 	${_MKTARGET_CREATE}
     79 	${MKDEP} -f ${.TARGET}.tmp ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
     80 	    ${AFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
     81 	    ${CPPFLAGS:N-Wp,-iremap,*} ${AFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} \
     82 	    ${__acpp_flags} ${.IMPSRC} && \
     83 	    ${MV} ${.TARGET}.tmp ${.TARGET}
     84 
     85 .C.d .cc.d .cpp.d .cxx.d:
     86 	${_MKTARGET_CREATE}
     87 	${MKDEPCXX} -f ${.TARGET}.tmp ${_MKDEP_FILEFLAGS} -- ${MKDEPFLAGS} \
     88 	    ${CXXFLAGS:M-std=*} ${CXXFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
     89 	    ${CPPFLAGS:N-Wp,-iremap,*} ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} \
     90 	    ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} && \
     91 	    ${MV} ${.TARGET}.tmp ${.TARGET}
     92 
     93 .endif # defined(SRCS) && !empty(SRCS)					# }
     94 
     95 ##### Clean rules
     96 .if defined(SRCS) && !empty(SRCS)
     97 CLEANDIRFILES+= .depend ${__DPSRCS.d} ${__DPSRCS.d:.d=.d.tmp} ${.CURDIR}/tags ${CLEANDEPEND}
     98 .endif
     99 
    100 ##### Custom rules
    101 .if !target(tags)
    102 tags: ${SRCS}
    103 .if defined(SRCS) && !empty(SRCS)
    104 	${_MKTARGET_CREATE}
    105 	-cd "${.CURDIR}"; ctags -f /dev/stdout ${.ALLSRC:N*.h} | \
    106 	    ${TOOL_SED} "s;\${.CURDIR}/;;" > tags
    107 .endif
    108 .endif
    109 
    110 ##### Pull in related .mk logic
    111 .include <bsd.clean.mk>
    112