From owner-svn-src-projects@FreeBSD.ORG Mon Mar 4 21:35:49 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id B777D740; Mon, 4 Mar 2013 21:35:49 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 8D91016C2; Mon, 4 Mar 2013 21:35:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r24LZnec014592; Mon, 4 Mar 2013 21:35:49 GMT (envelope-from sjg@svn.freebsd.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r24LZniO014591; Mon, 4 Mar 2013 21:35:49 GMT (envelope-from sjg@svn.freebsd.org) Message-Id: <201303042135.r24LZniO014591@svn.freebsd.org> From: "Simon J. Gerraty" Date: Mon, 4 Mar 2013 21:35:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r247816 - projects/bmake/share/mk X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Mar 2013 21:35:49 -0000 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 . 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}'