3 # The include file <bsd.dep.mk> handles Makefile dependencies.
8 # CTAGS A tags file generation program [gtags]
10 # CTAGSFLAGS Options for ctags(1) [not set]
12 # DEPENDFILE dependencies file [.depend]
14 # GTAGSFLAGS Options for gtags(1) [-o]
16 # HTAGSFLAGS Options for htags(1) [not set]
18 # MKDEP Options for ${MKDEPCMD} [not set]
20 # MKDEPCMD Makefile dependency list program [mkdep]
22 # SRCS List of source files (c, c++, assembler)
24 # DPSRCS List of source files which are needed for generating
25 # dependencies, ${SRCS} are always part of it.
30 # Remove depend and tags file
33 # Make the dependencies for the source files, and store
34 # them in the file ${DEPENDFILE}.
37 # In "ctags" mode, create a tags file for the source files.
38 # In "gtags" mode, create a (GLOBAL) gtags file for the
39 # source files. If HTML is defined, htags(1) is also run
42 .if
!target
(__
<bsd.init.mk
>__
)
43 .error bsd.dep.mk cannot be included directly.
52 MKDEPCMD?
= CC
='${CC}' mkdep
58 # Keep `tags' here, before SRCS are mangled below for `depend'.
59 .if
!target
(tags) && defined
(SRCS
) && !defined
(NO_TAGS
)
61 .if
${CTAGS
:T
} == "ctags"
62 @
${CTAGS} ${CTAGSFLAGS} -f
/dev
/stdout \
63 ${.ALLSRC
:N
*.h
} | sed
"s;${.CURDIR}/;;" > ${.TARGET
}
64 .elif
${CTAGS
:T
} == "gtags"
65 @cd
${.CURDIR
} && ${CTAGS} ${GTAGSFLAGS} ${.OBJDIR
}
67 @cd
${.CURDIR
} && htags
${HTAGSFLAGS} -d
${.OBJDIR
} ${.OBJDIR
}
75 .if
!exists
(${.OBJDIR
}/${DEPENDFILE})
76 .for _S in
${SRCS
:N
*.
[hly
]}
81 .for _LSRC in
${SRCS
:M
*.l
:N
*/*}
82 .for _LC in
${_LSRC
:R
}.c
84 ${LEX} -t
${LFLAGS} ${.ALLSRC
} > ${.TARGET
}
85 .if
!exists
(${.OBJDIR
}/${DEPENDFILE})
88 SRCS
:= ${SRCS
:S
/${_LSRC}/${_LC}/}
93 .for _YSRC in
${SRCS
:M
*.y
:N
*/*}
94 .for _YC in
${_YSRC
:R
}.c
95 SRCS
:= ${SRCS
:S
/${_YSRC}/${_YC}/}
97 .if
!empty
(YFLAGS
:M-d
) && !empty
(SRCS
:My.tab.h
)
98 .ORDER
: ${_YC} y.tab.h
99 ${_YC} y.tab.h
: ${_YSRC}
100 ${YACC} ${YFLAGS} ${.ALLSRC
}
102 CLEANFILES
+= y.tab.c y.tab.h
103 .elif
!empty
(YFLAGS
:M-d
)
104 .for _YH in
${_YC
:R
}.h
105 .ORDER
: ${_YC} ${_YH}
106 ${_YC} ${_YH}: ${_YSRC}
107 ${YACC} ${YFLAGS} -o
${_YC} ${.ALLSRC
}
113 ${YACC} ${YFLAGS} -o
${_YC} ${.ALLSRC
}
115 .if
!exists
(${.OBJDIR
}/${DEPENDFILE})
124 depend
: beforedepend
${DEPENDFILE} afterdepend
126 # Different types of sources are compiled with slightly different flags.
127 # Split up the sources, and filter out headers and non-applicable flags.
129 MKDEP_CFLAGS
= ${CFLAGS
:M-X
*} ${CFLAGS
:M-
[BID
]*}
130 MKDEP_CXXFLAGS
= ${CXXFLAGS
:M-X
*} ${CXXFLAGS
:M-
[BID
]*}
131 MKDEP_OBJCFLAGS
=${OBJCFLAGS
:M-X
*} ${OBJCFLAGS
:M-
[BID
]*}
133 MKDEP_CFLAGS
= ${CFLAGS
:M-nostdinc
*} ${CFLAGS
:M-
[BID
]*}
134 MKDEP_CXXFLAGS
= ${CXXFLAGS
:M-nostdinc
*} ${CXXFLAGS
:M-
[BID
]*}
135 MKDEP_OBJCFLAGS
=${OBJCFLAGS
:M-nostdinc
*} ${OBJCFLAGS
:M-
[BID
]*} ${OBJCFLAGS
:M-Wno-import
*}
139 ${DEPENDFILE}: ${DPSRCS}
141 .if
!empty
(DPSRCS
:M
*.
[cS
])
142 ${MKDEPCMD} -f
${DEPENDFILE} -a
${MKDEP} \
143 ${MKDEP_CFLAGS} ${.ALLSRC
:M
*.
[cS
]}
145 .if
!empty
(DPSRCS
:M
*.
cc) ||
!empty
(DPSRCS
:M
*.C
) ||
!empty
(DPSRCS
:M
*.
cpp) || \
146 !empty
(DPSRCS
:M
*.
cxx)
147 ${MKDEPCMD} -f
${DEPENDFILE} -a
${MKDEP} \
149 ${.ALLSRC
:M
*.
cc} ${.ALLSRC
:M
*.C
} ${.ALLSRC
:M
*.
cpp} ${.ALLSRC
:M
*.
cxx}
151 .if
!empty
(DPSRCS
:M
*.m
)
152 ${MKDEPCMD} -f
${DEPENDFILE} -a
${MKDEP} \
153 ${MKDEP_OBJCFLAGS} ${.ALLSRC
:M
*.m
}
155 .if target
(_EXTRADEPEND
)
157 ${DEPENDFILE}: _EXTRADEPEND
160 .ORDER
: ${DEPENDFILE} afterdepend
162 depend
: beforedepend afterdepend
164 .if
!target
(beforedepend
)
167 .ORDER
: beforedepend
${DEPENDFILE}
168 .ORDER
: beforedepend afterdepend
170 .if
!target
(afterdepend
)
175 .if
!target
(cleandepend
)
178 .if
${CTAGS
:T
} == "ctags"
179 rm -f
${DEPENDFILE} tags
180 .elif
${CTAGS
:T
} == "gtags"
181 rm -f
${DEPENDFILE} GPATH GRTAGS GSYMS GTAGS
189 .if
!target
(checkdpadd
) && (defined
(DPADD
) || defined
(LDADD
))
190 _LDADD_FROM_DPADD
= ${DPADD
:C
;^
/usr
/lib
/lib
(.
*)\.a
$;-l\
1;}
191 _LDADD_CANONICALIZED
= ${LDADD
:S
/$//}
193 .if
${_LDADD_FROM_DPADD} != ${_LDADD_CANONICALIZED}
195 @echo
"DPADD -> ${_LDADD_FROM_DPADD}"
196 @echo
"LDADD -> ${_LDADD_CANONICALIZED}"