code: def variant_dir_target_climb(self, orig, dir, tail):
          
          targets = []
          message = None
          fmt = "building associated VariantDir targets: %s"
          start_dir = dir
          while dir:
              for bd in dir.variant_dirs:
                  if start_dir.is_under(bd):
                      # If already in the build-dir location, don't reflect
                      return [orig], fmt % str(orig)
                  p = os.path.join(bd._path, *tail)
                  targets.append(self.Entry(p))
              tail = [dir.name] + tail
              dir = dir.up()
          if targets:
              message = fmt % ' '.join(map(str, targets))
          return targets, message
docs: Create targets in corresponding variant directories
  
          Climb the directory tree, and look up path names
          relative to any linked variant directories we find.
  
          Even though this loops and walks up the tree, we don't memoize
          the return value because this is really only used to process
          the command-line targets.