diff options
author | bdrewery <bdrewery@FreeBSD.org> | 2017-01-03 17:16:13 +0000 |
---|---|---|
committer | bdrewery <bdrewery@FreeBSD.org> | 2017-01-03 17:16:13 +0000 |
commit | 051f5d03f61ba722850ad37e597186933aa21dae (patch) | |
tree | 8243b22dc7eafdd9a1579c7d072c6003890eb3a3 /share | |
parent | 5df83a3fc7480f81535cc69515ec073d7a30fbbd (diff) | |
download | FreeBSD-src-051f5d03f61ba722850ad37e597186933aa21dae.zip FreeBSD-src-051f5d03f61ba722850ad37e597186933aa21dae.tar.gz |
MFC r305095:
AUTO_OBJ: Support SRCS/DPSRCS that contain '/' and require a nested OBJDIR.
Diffstat (limited to 'share')
-rw-r--r-- | share/mk/bsd.obj.mk | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk index 14b22e9..db63b2e 100644 --- a/share/mk/bsd.obj.mk +++ b/share/mk/bsd.obj.mk @@ -51,6 +51,30 @@ CANONICALOBJDIR= ${.OBJDIR} # but this makefile does not want it! .OBJDIR: ${.CURDIR} .endif +# Handle special case where SRCS is full-pathed and requires +# nested objdirs. This duplicates some auto.obj.mk logic. +.if (!empty(SRCS:M*/*) || !empty(DPSRCS:M*/*)) && \ + (${.TARGETS} == "" || ${.TARGETS:Nclean*:N*clean:Ndestroy*} != "") +_wantdirs= ${SRCS:M*/*:H} ${DPSRCS:M*/*:H} +.if !empty(_wantdirs) +_wantdirs:= ${_wantdirs:O:u} +_needdirs= +.for _dir in ${_wantdirs} +.if !exists(${.OBJDIR}/${_dir}/) +_needdirs+= ${_dir} +.endif +.endfor +.endif +.if !empty(_needdirs) +#_mkneededdirs!= umask ${OBJDIR_UMASK:U002}; ${Mkdirs} ${_needdirs} +__objdir_made != umask ${OBJDIR_UMASK:U002}; ${Mkdirs}; \ + for dir in ${_needdirs}; do \ + dir=${.OBJDIR}/$${dir}; \ + ${ECHO_TRACE} "[Creating nested objdir $${dir}...]" >&2; \ + Mkdirs $${dir}; \ + done +.endif +.endif # !empty(SRCS:M*/*) || !empty(DPSRCS:M*/*) .elif defined(MAKEOBJDIRPREFIX) CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR} .elif defined(MAKEOBJDIR) && ${MAKEOBJDIR:M/*} != "" |