17f3dea24SPeter Wemm# $FreeBSD$ 253996fadSWolfram Schneider# 353996fadSWolfram Schneider# The include file <bsd.dep.mk> handles Makefile dependencies. 453996fadSWolfram Schneider# 553996fadSWolfram Schneider# 653996fadSWolfram Schneider# +++ variables +++ 753996fadSWolfram Schneider# 8ae038fc3SBryan Drewery# CLEANDEPENDDIRS Additional directories to remove for the cleandepend 9ae038fc3SBryan Drewery# target. 10ae038fc3SBryan Drewery# 11ae038fc3SBryan Drewery# CLEANDEPENDFILES Additional files to remove for the cleandepend target. 12ae038fc3SBryan Drewery# 13ccc4bab1SRuslan Ermilov# CTAGS A tags file generation program [gtags] 14ccc4bab1SRuslan Ermilov# 15ccc4bab1SRuslan Ermilov# CTAGSFLAGS Options for ctags(1) [not set] 16ccc4bab1SRuslan Ermilov# 1753996fadSWolfram Schneider# DEPENDFILE dependencies file [.depend] 1853996fadSWolfram Schneider# 19ccc4bab1SRuslan Ermilov# GTAGSFLAGS Options for gtags(1) [-o] 20ccc4bab1SRuslan Ermilov# 21ccc4bab1SRuslan Ermilov# HTAGSFLAGS Options for htags(1) [not set] 22ccc4bab1SRuslan Ermilov# 2353996fadSWolfram Schneider# MKDEP Options for ${MKDEPCMD} [not set] 2453996fadSWolfram Schneider# 2553996fadSWolfram Schneider# MKDEPCMD Makefile dependency list program [mkdep] 2653996fadSWolfram Schneider# 2753996fadSWolfram Schneider# SRCS List of source files (c, c++, assembler) 2853996fadSWolfram Schneider# 2911dc9298SRuslan Ermilov# DPSRCS List of source files which are needed for generating 3011dc9298SRuslan Ermilov# dependencies, ${SRCS} are always part of it. 3153996fadSWolfram Schneider# 3253996fadSWolfram Schneider# +++ targets +++ 3353996fadSWolfram Schneider# 3453996fadSWolfram Schneider# cleandepend: 35ae038fc3SBryan Drewery# remove ${CLEANDEPENDFILES}; remove ${CLEANDEPENDDIRS} and all 36ae038fc3SBryan Drewery# contents. 3753996fadSWolfram Schneider# 3853996fadSWolfram Schneider# depend: 3953996fadSWolfram Schneider# Make the dependencies for the source files, and store 4053996fadSWolfram Schneider# them in the file ${DEPENDFILE}. 4153996fadSWolfram Schneider# 4253996fadSWolfram Schneider# tags: 43ccc4bab1SRuslan Ermilov# In "ctags" mode, create a tags file for the source files. 44ccc4bab1SRuslan Ermilov# In "gtags" mode, create a (GLOBAL) gtags file for the 45ccc4bab1SRuslan Ermilov# source files. If HTML is defined, htags(1) is also run 46ccc4bab1SRuslan Ermilov# after gtags(1). 4753996fadSWolfram Schneider 485ffdf361SRuslan Ermilov.if !target(__<bsd.init.mk>__) 495ffdf361SRuslan Ermilov.error bsd.dep.mk cannot be included directly. 505ffdf361SRuslan Ermilov.endif 51b16495e7SWolfram Schneider 52ccc4bab1SRuslan ErmilovCTAGS?= gtags 53ccc4bab1SRuslan ErmilovCTAGSFLAGS?= 54ccc4bab1SRuslan ErmilovGTAGSFLAGS?= -o 55ccc4bab1SRuslan ErmilovHTAGSFLAGS?= 56ccc4bab1SRuslan Ermilov 579160419cSBryan Drewery_MKDEPCC:= ${CC:N${CCACHE_BIN}} 589160419cSBryan Drewery# XXX: DEPFLAGS can come out once Makefile.inc1 properly passes down 599160419cSBryan Drewery# CXXFLAGS. 609160419cSBryan Drewery.if !empty(DEPFLAGS) 619160419cSBryan Drewery_MKDEPCC+= ${DEPFLAGS} 62e16529d3SRuslan Ermilov.endif 639160419cSBryan DreweryMKDEPCMD?= CC='${_MKDEPCC}' mkdep 64b16495e7SWolfram SchneiderDEPENDFILE?= .depend 65369737d7SBryan Drewery.if ${MK_DIRDEPS_BUILD} == "no" 66fc2c2cd9SBryan Drewery.MAKE.DEPENDFILE= ${DEPENDFILE} 67369737d7SBryan Drewery.endif 68ae038fc3SBryan DreweryCLEANDEPENDFILES= ${DEPENDFILE} ${DEPENDFILE}.* 69d14f862cSGarrett Wollman 70ccc4bab1SRuslan Ermilov# Keep `tags' here, before SRCS are mangled below for `depend'. 716260f1d8SRuslan Ermilov.if !target(tags) && defined(SRCS) && !defined(NO_TAGS) 72ccc4bab1SRuslan Ermilovtags: ${SRCS} 73213a4447SRuslan Ermilov.if ${CTAGS:T} == "gtags" 74ccc4bab1SRuslan Ermilov @cd ${.CURDIR} && ${CTAGS} ${GTAGSFLAGS} ${.OBJDIR} 75ccc4bab1SRuslan Ermilov.if defined(HTML) 76ccc4bab1SRuslan Ermilov @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR} 77ccc4bab1SRuslan Ermilov.endif 78213a4447SRuslan Ermilov.else 79213a4447SRuslan Ermilov @${CTAGS} ${CTAGSFLAGS} -f /dev/stdout \ 80213a4447SRuslan Ermilov ${.ALLSRC:N*.h} | sed "s;${.CURDIR}/;;" > ${.TARGET} 81ccc4bab1SRuslan Ermilov.endif 82ccc4bab1SRuslan Ermilov.endif 83ccc4bab1SRuslan Ermilov 849fb02a70SBryan Drewery# Skip reading .depend when not needed to speed up tree-walks 859fb02a70SBryan Drewery# and simple lookups. 869fb02a70SBryan Drewery.if !empty(.MAKEFLAGS:M-V${_V_READ_DEPEND}) || make(obj) || make(clean*) || \ 879fb02a70SBryan Drewery make(install*) 889fb02a70SBryan Drewery_SKIP_READ_DEPEND= 1 899fb02a70SBryan Drewery.if ${MK_DIRDEPS_BUILD} == "no" 909fb02a70SBryan Drewery.MAKE.DEPENDFILE= /dev/null 919fb02a70SBryan Drewery.endif 929fb02a70SBryan Drewery.endif 939fb02a70SBryan Drewery 942ec8b6deSBruce Evans.if defined(SRCS) 952ec8b6deSBruce EvansCLEANFILES?= 962ec8b6deSBruce Evans 978a152f97SRui Paulo.for _S in ${SRCS:N*.[dhly]} 98d7beff08SBryan DreweryOBJS_DEPEND_GUESS.${_S:R}.o= ${_S} 99d7beff08SBryan Drewery.if ${MK_FAST_DEPEND} == "no" && !exists(${.OBJDIR}/${DEPENDFILE}) 100d7beff08SBryan Drewery${_S:R}.o: ${OBJS_DEPEND_GUESS.${_S:R}.o} 1016b14fdfaSRuslan Ermilov.endif 102d7beff08SBryan Drewery.endfor 1036b14fdfaSRuslan Ermilov 1049f65e34fSRui Paulo# Lexical analyzers 1052ec8b6deSBruce Evans.for _LSRC in ${SRCS:M*.l:N*/*} 106484933a9SRuslan Ermilov.for _LC in ${_LSRC:R}.c 1072ec8b6deSBruce Evans${_LC}: ${_LSRC} 1088f812fecSDag-Erling Smørgrav ${LEX} ${LFLAGS} -o${.TARGET} ${.ALLSRC} 109d7beff08SBryan DreweryOBJS_DEPEND_GUESS.${_LC:R}.o= ${_LC} 110d7beff08SBryan Drewery.if ${MK_FAST_DEPEND} == "no" && !exists(${.OBJDIR}/${DEPENDFILE}) 111d7beff08SBryan Drewery${_LC:R}.o: ${OBJS_DEPEND_GUESS.${_LC:R}.o} 1126b14fdfaSRuslan Ermilov.endif 1132ec8b6deSBruce EvansSRCS:= ${SRCS:S/${_LSRC}/${_LC}/} 114484933a9SRuslan ErmilovCLEANFILES+= ${_LC} 1152ec8b6deSBruce Evans.endfor 1162ec8b6deSBruce Evans.endfor 1172ec8b6deSBruce Evans 1189f65e34fSRui Paulo# Yacc grammars 1192ec8b6deSBruce Evans.for _YSRC in ${SRCS:M*.y:N*/*} 120484933a9SRuslan Ermilov.for _YC in ${_YSRC:R}.c 1212ec8b6deSBruce EvansSRCS:= ${SRCS:S/${_YSRC}/${_YC}/} 122484933a9SRuslan ErmilovCLEANFILES+= ${_YC} 12365d2bdc6SRuslan Ermilov.if !empty(YFLAGS:M-d) && !empty(SRCS:My.tab.h) 1242ec8b6deSBruce Evans.ORDER: ${_YC} y.tab.h 1252ec8b6deSBruce Evans${_YC} y.tab.h: ${_YSRC} 1262ec8b6deSBruce Evans ${YACC} ${YFLAGS} ${.ALLSRC} 1272ec8b6deSBruce Evans cp y.tab.c ${_YC} 128484933a9SRuslan ErmilovCLEANFILES+= y.tab.c y.tab.h 12965d2bdc6SRuslan Ermilov.elif !empty(YFLAGS:M-d) 130484933a9SRuslan Ermilov.for _YH in ${_YC:R}.h 1315444d429SBryan Drewery.ORDER: ${_YC} ${_YH} 1325444d429SBryan Drewery${_YC} ${_YH}: ${_YSRC} 1332ec8b6deSBruce Evans ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC} 134484933a9SRuslan ErmilovSRCS+= ${_YH} 135484933a9SRuslan ErmilovCLEANFILES+= ${_YH} 1362ec8b6deSBruce Evans.endfor 1372ec8b6deSBruce Evans.else 1382ec8b6deSBruce Evans${_YC}: ${_YSRC} 1392ec8b6deSBruce Evans ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC} 1402ec8b6deSBruce Evans.endif 141d7beff08SBryan DreweryOBJS_DEPEND_GUESS.${_YC:R}.o= ${_YC} 142d7beff08SBryan Drewery.if ${MK_FAST_DEPEND} == "no" && !exists(${.OBJDIR}/${DEPENDFILE}) 143d7beff08SBryan Drewery${_YC:R}.o: ${OBJS_DEPEND_GUESS.${_YC:R}.o} 1446b14fdfaSRuslan Ermilov.endif 1452ec8b6deSBruce Evans.endfor 1462ec8b6deSBruce Evans.endfor 1479f65e34fSRui Paulo 1489f65e34fSRui Paulo# DTrace probe definitions 149ff0f36e7SRui Paulo.if ${SRCS:M*.d} 1505439a715SMark JohnstonCFLAGS+= -I${.OBJDIR} 151ff0f36e7SRui Paulo.endif 1529f65e34fSRui Paulo.for _DSRC in ${SRCS:M*.d:N*/*} 153ff0f36e7SRui Paulo.for _D in ${_DSRC:R} 154cfa5f2beSBryan DrewerySRCS+= ${_D}.h 155ff0f36e7SRui Paulo${_D}.h: ${_DSRC} 1560c76c8aaSMark Johnston ${DTRACE} ${DTRACEFLAGS} -h -s ${.ALLSRC} 157e9083b2dSMark JohnstonSRCS:= ${SRCS:S/^${_DSRC}$//} 158d8b63155SRui PauloOBJS+= ${_D}.o 1599b646f25SRui PauloCLEANFILES+= ${_D}.h ${_D}.o 160e9083b2dSMark Johnston${_D}.o: ${_DSRC} ${OBJS:S/^${_D}.o$//} 161a298c279SBryan Drewery @rm -f ${.TARGET} 162cfa5f2beSBryan Drewery ${DTRACE} ${DTRACEFLAGS} -G -o ${.TARGET} -s ${.ALLSRC:N*.h} 1639b646f25SRui Paulo.if defined(LIB) 1649b646f25SRui PauloCLEANFILES+= ${_D}.So ${_D}.po 165e9083b2dSMark Johnston${_D}.So: ${_DSRC} ${SOBJS:S/^${_D}.So$//} 166a298c279SBryan Drewery @rm -f ${.TARGET} 167cfa5f2beSBryan Drewery ${DTRACE} ${DTRACEFLAGS} -G -o ${.TARGET} -s ${.ALLSRC:N*.h} 168e9083b2dSMark Johnston${_D}.po: ${_DSRC} ${POBJS:S/^${_D}.po$//} 169a298c279SBryan Drewery @rm -f ${.TARGET} 170cfa5f2beSBryan Drewery ${DTRACE} ${DTRACEFLAGS} -G -o ${.TARGET} -s ${.ALLSRC:N*.h} 171ff0f36e7SRui Paulo.endif 1729f65e34fSRui Paulo.endfor 1739f65e34fSRui Paulo.endfor 174b9964333SBryan Drewery 175b9964333SBryan Drewery 176*70ca9ec4SBryan Drewery.if !empty(.MAKE.MODE:Mmeta) && empty(.MAKE.MODE:Mnofilemon) 177*70ca9ec4SBryan Drewery_meta_filemon= 1 178*70ca9ec4SBryan Drewery.endif 179*70ca9ec4SBryan Drewery.if ${MK_FAST_DEPEND} == "yes" 180b9964333SBryan DreweryDEPEND_MP?= -MP 181b9964333SBryan Drewery# Handle OBJS=../somefile.o hacks. Just replace '/' rather than use :T to 182b9964333SBryan Drewery# avoid collisions. 183b9964333SBryan DreweryDEPEND_FILTER= C,/,_,g 184*70ca9ec4SBryan DreweryDEPENDSRCS= ${SRCS:M*.[cSC]} ${SRCS:M*.cxx} ${SRCS:M*.cpp} ${SRCS:M*.cc} 185*70ca9ec4SBryan Drewery.if !empty(DEPENDSRCS) 186*70ca9ec4SBryan DreweryDEPENDOBJS+= ${DEPENDSRCS:R:S,$,.o,} 187*70ca9ec4SBryan Drewery.endif 188*70ca9ec4SBryan DreweryDEPENDFILES_OBJS= ${DEPENDOBJS:O:u:${DEPEND_FILTER}:C/^/${DEPENDFILE}./} 189b9964333SBryan DreweryDEPEND_CFLAGS+= -MD ${DEPEND_MP} -MF${DEPENDFILE}.${.TARGET:${DEPEND_FILTER}} 190b9964333SBryan DreweryDEPEND_CFLAGS+= -MT${.TARGET} 191*70ca9ec4SBryan Drewery# Skip generating or including .depend.* files if in meta+filemon mode since 192*70ca9ec4SBryan Drewery# it will track dependencies itself. OBJS_DEPEND_GUESS is still used though. 193*70ca9ec4SBryan Drewery.if !defined(_meta_filemon) 19410f696a5SBryan Drewery.if defined(.PARSEDIR) 19510f696a5SBryan Drewery# Only add in DEPEND_CFLAGS for CFLAGS on files we expect from DEPENDOBJS 19610f696a5SBryan Drewery# as those are the only ones we will include. 19710f696a5SBryan DreweryDEPEND_CFLAGS_CONDITION= !empty(DEPENDOBJS:M${.TARGET:${DEPEND_FILTER}}) 19810f696a5SBryan DreweryCFLAGS+= ${${DEPEND_CFLAGS_CONDITION}:?${DEPEND_CFLAGS}:} 19910f696a5SBryan Drewery.else 200b9964333SBryan DreweryCFLAGS+= ${DEPEND_CFLAGS} 20110f696a5SBryan Drewery.endif 2029fb02a70SBryan Drewery.if !defined(_SKIP_READ_DEPEND) 2039f286e82SBryan Drewery.for __depend_obj in ${DEPENDFILES_OBJS} 2049f286e82SBryan Drewery.sinclude "${__depend_obj}" 205b9964333SBryan Drewery.endfor 206d7beff08SBryan Drewery.endif # !defined(_SKIP_READ_DEPEND) 207*70ca9ec4SBryan Drewery.endif # !defined(_meta_filemon) 208b9964333SBryan Drewery.endif # ${MK_FAST_DEPEND} == "yes" 209b9964333SBryan Drewery.endif # defined(SRCS) 2102ec8b6deSBruce Evans 211948f327eSSimon J. Gerraty.if ${MK_DIRDEPS_BUILD} == "yes" 2127750ad47SMarcel Moolenaar.include <meta.autodep.mk> 213*70ca9ec4SBryan Drewery# If using filemon then _EXTRADEPEND is skipped since it is not needed. 214*70ca9ec4SBryan Drewery.if empty(.MAKE.MODE:Mnofilemon) 2157750ad47SMarcel Moolenaar# this depend: bypasses that below 2167750ad47SMarcel Moolenaar# the dependency helps when bootstrapping 2177750ad47SMarcel Moolenaardepend: beforedepend ${DPSRCS} ${SRCS} afterdepend 2187750ad47SMarcel Moolenaarbeforedepend: 2197750ad47SMarcel Moolenaarafterdepend: beforedepend 2207750ad47SMarcel Moolenaar.endif 221*70ca9ec4SBryan Drewery.endif 2227750ad47SMarcel Moolenaar 223d7beff08SBryan Drewery# Guess some dependencies for when no ${DEPENDFILE}.OBJ is generated yet. 224*70ca9ec4SBryan Drewery# For meta+filemon the .meta file is checked for since it is the dependency 225*70ca9ec4SBryan Drewery# file used. 226d7beff08SBryan Drewery.if ${MK_FAST_DEPEND} == "yes" 227d7beff08SBryan Drewery.for __obj in ${DEPENDOBJS:O:u} 228*70ca9ec4SBryan Drewery.if (defined(_meta_filemon) && !exists(${.OBJDIR}/${__obj}.meta)) || \ 229*70ca9ec4SBryan Drewery (!defined(_meta_filemon) && !exists(${.OBJDIR}/${DEPENDFILE}.${__obj})) 230d7beff08SBryan Drewery${__obj}: ${OBJS_DEPEND_GUESS} 231d7beff08SBryan Drewery${__obj}: ${OBJS_DEPEND_GUESS.${__obj}} 232d7beff08SBryan Drewery.endif 233d7beff08SBryan Drewery.endfor 234d7beff08SBryan Drewery.endif 235d7beff08SBryan Drewery 236d14f862cSGarrett Wollman.if !target(depend) 237d14f862cSGarrett Wollman.if defined(SRCS) 238b25a566dSRuslan Ermilovdepend: beforedepend ${DEPENDFILE} afterdepend 239b16495e7SWolfram Schneider 2407750ad47SMarcel Moolenaar# Tell bmake not to look for generated files via .PATH 241cf1eeb33SBryan Drewery.NOPATH: ${DEPENDFILE} ${DEPENDFILES_OBJS} 2427750ad47SMarcel Moolenaar 243473bcb01SBryan Drewery.if ${MK_FAST_DEPEND} == "no" 244473bcb01SBryan Drewery# Capture -include from CFLAGS. 245473bcb01SBryan Drewery# This could be simpler with bmake :tW but needs to support fmake for MFC. 246473bcb01SBryan Drewery_CFLAGS_INCLUDES= ${CFLAGS:Q:S/\\ /,/g:C/-include,/-include%/g:C/,/ /g:M-include*:C/%/ /g} 247473bcb01SBryan Drewery_CXXFLAGS_INCLUDES= ${CXXFLAGS:Q:S/\\ /,/g:C/-include,/-include%/g:C/,/ /g:M-include*:C/%/ /g} 248473bcb01SBryan Drewery 249a813856eSBruce Evans# Different types of sources are compiled with slightly different flags. 250a813856eSBruce Evans# Split up the sources, and filter out headers and non-applicable flags. 2512d122146SDimitry AndricMKDEP_CFLAGS= ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BIDU]*} ${CFLAGS:M-std=*} \ 252473bcb01SBryan Drewery ${CFLAGS:M-ansi} ${_CFLAGS_INCLUDES} 2532d122146SDimitry AndricMKDEP_CXXFLAGS= ${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BIDU]*} \ 254473bcb01SBryan Drewery ${CXXFLAGS:M-std=*} ${CXXFLAGS:M-ansi} ${CXXFLAGS:M-stdlib=*} \ 255473bcb01SBryan Drewery ${_CXXFLAGS_INCLUDES} 256473bcb01SBryan Drewery.endif # ${MK_FAST_DEPEND} == "no" 25706d6e4fcSTom Rhodes 25811dc9298SRuslan ErmilovDPSRCS+= ${SRCS} 25968add213SBryan Drewery# FAST_DEPEND will only generate a .depend if _EXTRADEPEND is used but 26068add213SBryan Drewery# the target is created to allow 'make depend' to generate files. 26111dc9298SRuslan Ermilov${DEPENDFILE}: ${DPSRCS} 262cf1eeb33SBryan Drewery.if ${MK_FAST_DEPEND} == "no" 263b16495e7SWolfram Schneider rm -f ${DEPENDFILE} 26465d2bdc6SRuslan Ermilov.if !empty(DPSRCS:M*.[cS]) 265a813856eSBruce Evans ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} \ 26606d6e4fcSTom Rhodes ${MKDEP_CFLAGS} ${.ALLSRC:M*.[cS]} 267b16495e7SWolfram Schneider.endif 26865d2bdc6SRuslan Ermilov.if !empty(DPSRCS:M*.cc) || !empty(DPSRCS:M*.C) || !empty(DPSRCS:M*.cpp) || \ 26965d2bdc6SRuslan Ermilov !empty(DPSRCS:M*.cxx) 270b16495e7SWolfram Schneider ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} \ 27106d6e4fcSTom Rhodes ${MKDEP_CXXFLAGS} \ 272c7cbe79eSDmitrij Tejblum ${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cpp} ${.ALLSRC:M*.cxx} 273cf1eeb33SBryan Drewery.else 274b16495e7SWolfram Schneider.endif 275cf1eeb33SBryan Drewery.endif # ${MK_FAST_DEPEND} == "no" 276663e9677SBruce Evans.if target(_EXTRADEPEND) 27770e82473SRuslan Ermilov_EXTRADEPEND: .USE 2780cfacc86SRuslan Ermilov${DEPENDFILE}: _EXTRADEPEND 279663e9677SBruce Evans.endif 280b16495e7SWolfram Schneider 28197fe7f47SJordan K. Hubbard.ORDER: ${DEPENDFILE} afterdepend 282d14f862cSGarrett Wollman.else 283b25a566dSRuslan Ermilovdepend: beforedepend afterdepend 284d14f862cSGarrett Wollman.endif 285d14f862cSGarrett Wollman.if !target(beforedepend) 286d14f862cSGarrett Wollmanbeforedepend: 28797fe7f47SJordan K. Hubbard.else 28897fe7f47SJordan K. Hubbard.ORDER: beforedepend ${DEPENDFILE} 28997fe7f47SJordan K. Hubbard.ORDER: beforedepend afterdepend 290d14f862cSGarrett Wollman.endif 291d14f862cSGarrett Wollman.if !target(afterdepend) 292d14f862cSGarrett Wollmanafterdepend: 293d14f862cSGarrett Wollman.endif 294d14f862cSGarrett Wollman.endif 295d14f862cSGarrett Wollman 2963d437ee2SBryan Drewery.if defined(SRCS) 297ae038fc3SBryan Drewery.if ${CTAGS:T} == "gtags" 298ae038fc3SBryan DreweryCLEANDEPENDFILES+= GPATH GRTAGS GSYMS GTAGS 299ae038fc3SBryan Drewery.if defined(HTML) 300ae038fc3SBryan DreweryCLEANDEPENDDIRS+= HTML 301ae038fc3SBryan Drewery.endif 302ae038fc3SBryan Drewery.else 303ae038fc3SBryan DreweryCLEANDEPENDFILES+= tags 304ae038fc3SBryan Drewery.endif 3053d437ee2SBryan Drewery.endif 306cd9a2f5cSJordan K. Hubbard.if !target(cleandepend) 307b25a566dSRuslan Ermilovcleandepend: 3083d437ee2SBryan Drewery.if !empty(CLEANDEPENDFILES) 309ae038fc3SBryan Drewery rm -f ${CLEANDEPENDFILES} 3103d437ee2SBryan Drewery.endif 311ae038fc3SBryan Drewery.if !empty(CLEANDEPENDDIRS) 312ae038fc3SBryan Drewery rm -rf ${CLEANDEPENDDIRS} 3136eb5e456SJordan K. Hubbard.endif 314cd9a2f5cSJordan K. Hubbard.endif 3156e02167bSRuslan Ermilov 3166e02167bSRuslan Ermilov.if !target(checkdpadd) && (defined(DPADD) || defined(LDADD)) 31741ae64f3SEnji Cooper_LDADD_FROM_DPADD= ${DPADD:R:T:C;^lib(.*)$;-l\1;g} 31841ae64f3SEnji Cooper# Ignore -Wl,--start-group/-Wl,--end-group as it might be required in the 31941ae64f3SEnji Cooper# LDADD list due to unresolved symbols 32041ae64f3SEnji Cooper_LDADD_CANONICALIZED= ${LDADD:N:R:T:C;^lib(.*)$;-l\1;g:N-Wl,--[es]*-group} 3216e02167bSRuslan Ermilovcheckdpadd: 3222e3c6179SBruce Evans.if ${_LDADD_FROM_DPADD} != ${_LDADD_CANONICALIZED} 3232e3c6179SBruce Evans @echo ${.CURDIR} 3242e3c6179SBruce Evans @echo "DPADD -> ${_LDADD_FROM_DPADD}" 3252e3c6179SBruce Evans @echo "LDADD -> ${_LDADD_CANONICALIZED}" 3262e3c6179SBruce Evans.endif 3276e02167bSRuslan Ermilov.endif 328