'Handle precompilation.'

def Precompile(self):

    StatusUpdate('Compilation    starting.', self.error_fh)
    files = []
    if (self.config.GetEffectiveRuntime() == 'go'):
        for f in self.all_files:
            if (f.endswith('.go') and (not self.config.nobuild_files.match(f))):
                files.append(f)
    while True:
        if files:
            StatusUpdate(('Compilation:    %d    files    left.' % len(files)), self.error_fh)
        files = self.PrecompileBatch(files)
        if (not files):
            break
    StatusUpdate('Compilation    completed.', self.error_fh)
