DIRDEPS_BUILD: Support bootstrapping from PROGS.(DPADD|LIBADD).
Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
e66dbae40b
commit
0c7aaa9581
@ -129,14 +129,28 @@ DIRDEPS+= lib/msun
|
||||
.if !empty(SRCS:M*.y)
|
||||
DIRDEPS+= usr.bin/yacc.host
|
||||
.endif
|
||||
# Gather PROGS dependencies
|
||||
.if !empty(PROGS)
|
||||
_PROGS_LIBADD=
|
||||
_PROGS_DPADD=
|
||||
.for _prog in ${PROGS}
|
||||
.if !empty(LIBADD.${_prog})
|
||||
_PROGS_LIBADD+= ${LIBADD.${_prog}}
|
||||
.endif
|
||||
.if !empty(DPADD.${_prog})
|
||||
_PROGS_DPADD+= ${DPADD.${_prog}}
|
||||
.endif
|
||||
.endfor
|
||||
.endif # !empty(PROGS)
|
||||
.if !empty(DPADD)
|
||||
# Taken from meta.autodep.mk (where it only does something with
|
||||
# BUILD_AT_LEVEL0, which we don't use).
|
||||
# This only works for DPADD with full OBJ/SRC paths, which is mostly just
|
||||
# _INTERNALLIBS.
|
||||
_DPADD= ${DPADD} ${_PROGS_DPADD}
|
||||
_DP_DIRDEPS= \
|
||||
${DPADD:M${OBJTOP}*:H:N.:tA:C,${OBJTOP}[^/]*/,,:N.:O:u} \
|
||||
${DPADD:M${OBJROOT}*:N${OBJTOP}*:N${STAGE_ROOT}/*:H:S,${OBJROOT},,:C,^([^/]+)/(.*),\2.\1,:S,${HOST_TARGET}$,host,:N.*:O:u}
|
||||
${_DPADD:O:u:M${OBJTOP}*:H:N.:tA:C,${OBJTOP}[^/]*/,,:N.:O:u} \
|
||||
${_DPADD:O:u:M${OBJROOT}*:N${OBJTOP}*:N${STAGE_ROOT}/*:H:S,${OBJROOT},,:C,^([^/]+)/(.*),\2.\1,:S,${HOST_TARGET}$,host,:N.*:O:u}
|
||||
# Resolve the paths to RELDIRs
|
||||
.if !empty(_DP_DIRDEPS)
|
||||
DIRDEPS+= ${_DP_DIRDEPS:C,^,${SRCTOP}/,:tA:C,^${SRCTOP}/,,}
|
||||
@ -144,7 +158,8 @@ DIRDEPS+= ${_DP_DIRDEPS:C,^,${SRCTOP}/,:tA:C,^${SRCTOP}/,,}
|
||||
.endif # !empty(DPADD)
|
||||
.if !empty(LIBADD)
|
||||
# Also handle LIBADD for non-internal libraries.
|
||||
.for _lib in ${LIBADD}
|
||||
_ALL_LIBADD= ${LIBADD} ${_PROGS_LIBADD}
|
||||
.for _lib in ${_ALL_LIBADD:O:u}
|
||||
_lib${_lib}reldir= ${LIB${_lib:tu}DIR:C,${OBJTOP}/,,}
|
||||
.if defined(LIB${_lib:tu}DIR) && ${DIRDEPS:M${_lib${_lib}reldir}} == "" && \
|
||||
exists(${SRCTOP}/${_lib${_lib}reldir})
|
||||
|
Loading…
x
Reference in New Issue
Block a user