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