'Only rebuild as much as needed for changes in the *filenames*.'

def build_specific(self, filenames):

    dirlen = (len(self.srcdir) + 1)
    to_write = []
    suffixes = None
    suffixes = tuple(self.config.source_suffix)
    for filename in filenames:
        filename = path.normpath(path.abspath(filename))
        if (not filename.startswith(self.srcdir)):
            logger.warning('file    %r    given    on    command    line    is    not    under    the    source    directory,    ignoring', filename)
            continue
        if (not (path.isfile(filename) or any((path.isfile((filename + suffix)) for suffix in suffixes)))):
            logger.warning('file    %r    given    on    command    line    does    not    exist,    ignoring', filename)
            continue
        filename = filename[dirlen:]
        for suffix in suffixes:
            if filename.endswith(suffix):
                filename = filename[:(- len(suffix))]
                break
        filename = filename.replace(path.sep, SEP)
        to_write.append(filename)
    self.build(to_write, method='specific', summary=('%d    source    files    given    on    command    line' % len(to_write)))
