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 6 realdepend: beforedepend .depend afterdepend 7 .ORDER: beforedepend .depend afterdepend 8 9 beforedepend .depend afterdepend: # ensure existence 10 11 ##### Default values 12 MKDEP?= mkdep 13 MKDEPCXX?= mkdep 14 MKDEP_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 28 beforedepend: ${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 42 MKDEPSUFFLAGS=-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) 99 CLEANDIRFILES+= .depend ${__DPSRCS.d} ${__DPSRCS.d:.d=.d.tmp} tags ${CLEANDEPEND} 100 .endif 101 102 ##### Custom rules 103 .if !commands(tags) 104 tags: ${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