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