Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Mar 2013 21:35:49 +0000 (UTC)
From:      "Simon J. Gerraty" <sjg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r247816 - projects/bmake/share/mk
Message-ID:  <201303042135.r24LZniO014591@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sjg
Date: Mon Mar  4 21:35:49 2013
New Revision: 247816
URL: http://svnweb.freebsd.org/changeset/base/247816

Log:
  Handle multiple M2D_OBJROOTS better

Modified:
  projects/bmake/share/mk/gendirdeps.mk

Modified: projects/bmake/share/mk/gendirdeps.mk
==============================================================================
--- projects/bmake/share/mk/gendirdeps.mk	Mon Mar  4 21:20:13 2013	(r247815)
+++ projects/bmake/share/mk/gendirdeps.mk	Mon Mar  4 21:35:49 2013	(r247816)
@@ -114,7 +114,7 @@ META2DEPS_CMD = ${_time} ${PYTHON} ${MET
 META2DEPS_CMD += -D ${DPDEPS}
 .endif
 
-M2D_OBJROOTS += ${OBJTOP}/ ${_OBJROOT}
+M2D_OBJROOTS += ${OBJTOP}/ ${_OBJROOT} ${_objroot}
 .if defined(SB_OBJROOT)
 M2D_OBJROOTS += ${SB_OBJROOT}
 .endif
@@ -157,7 +157,21 @@ dir_list != cd ${_OBJDIR} && \
 .if !empty(DPADD)
 _nonlibs := ${DPADD:T:Nlib*:N*include}
 .if !empty(_nonlibs)
-dir_list += ${_nonlibs:@x@${DPADD:M*/$x}@:H:tA}
+ddep_list =
+.for f in ${_nonlibs:@x@${DPADD:M*/$x}@:tA}
+.if exists($f.dirdep)
+ddep_list += $f.dirdep
+.elif exists(${f:H}.dirdep)
+ddep_list += ${f:H}.dirdep
+.else
+dir_list += ${f:H}
+.endif
+.endfor
+.if !empty(ddep_list)
+ddeps != cat ${ddep_list:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
+        sed 's,//*$$,,;s,\.${HOST_TARGET}$$,.host,'
+dir_list += ${ddeps}
+.endif
 .endif
 .endif
 
@@ -173,22 +187,21 @@ dirdep_list = \
 	${dir_list:M${_objtop}*/*:C,${_objtop}[^/]*/,,} \
 	${GENDIRDEPS_DIR_LIST_XTRAS}
 
+# sort longest first
+M2D_OBJROOTS := ${M2D_OBJROOTS:O:u:[-1..1]}
+
 # anything we use from an object dir other than ours
 # needs to be qualified with its .<machine> suffix
 # (we used the pseudo machine "host" for the HOST_TARGET).
-qualdir_list = \
-	${dir_list:M${_objroot}*/*/*:N${SRCTOP}*:N${_objtop}*:C,${_objroot}([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,}
-
-.if ${_OBJROOT} != ${_objroot}
-dirdep_list += \
-	${dir_list:M${_OBJTOP}*/*:C,${_OBJTOP}[^/]*/,,}
-
+skip_ql= ${SRCTOP}* ${_objtop}*
+.for o in ${M2D_OBJROOTS:${skip_ql:${M_ListToSkip}}}
 qualdir_list += \
-	${dir_list:M${_OBJROOT}*/*/*:N${SRCTOP}*:N${_OBJTOP}*:C,${_OBJROOT}([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,}
-.endif
+	${dir_list:${skip_ql:${M_ListToSkip}}:M$o*/*/*:C,$o([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,}
+skip_ql+= $o*
+.endfor
 
 dirdep_list := ${dirdep_list:O:u}
-qualdir_list := ${qualdir_list:O:u}
+qualdir_list := ${qualdir_list:N*.${MACHINE}:O:u}
 
 DIRDEPS = \
 	${dirdep_list:N${RELDIR}:N${RELDIR}/*} \
@@ -209,6 +222,7 @@ DIRDEPS += \
 DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:O:u}
 
 .if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
 .info ${RELDIR}: dir_list='${dir_list}'
 .info ${RELDIR}: dirdep_list='${dirdep_list}'
 .info ${RELDIR}: qualdir_list='${qualdir_list}'



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303042135.r24LZniO014591>