From 52a43b19ff0924d7320ffea06f6902b3eda7e504 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 7 Jun 2013 15:31:03 +0200 Subject: [PATCH] MakeLocate rule: Avoid directory dependency, if already located Only create the directory dependency for a target, if that's where the target will actually end up. If it has already been located before, do nothing. --- build/jam/OverriddenJamRules | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/build/jam/OverriddenJamRules b/build/jam/OverriddenJamRules index 5f710c6661..117a88ec34 100644 --- a/build/jam/OverriddenJamRules +++ b/build/jam/OverriddenJamRules @@ -535,7 +535,8 @@ rule MainFromObjects } # Override Jam 2.5rc3 MakeLocate and MkDir to deal more intelligently -# with grist set on the supplied directory name. +# with grist set on the supplied directory name. Also do nothing for already +# located files. rule MakeLocate { local dir = $(2[1]) ; @@ -545,9 +546,16 @@ rule MakeLocate if ! $(dir:G) { dir = $(dir:G=dir) ; } - LOCATE on $(1) += $(dir:G=) ; # don't relocate once located - Depends $(1) : $(dir) ; - MkDir $(dir) ; + + local target ; + for target in $(1) { + # don't relocate once located + LOCATE on $(target) += $(dir:G=) ; + if [ on $(target) return $(LOCATE) ] = $(dir:G=) { + Depends $(target) : $(dir) ; + MkDir $(dir) ; + } + } } }