1 #===- perf-helper.py - Clang Python Bindings -----------------*- python -*--===# 2 # 3 # The LLVM Compiler Infrastructure 4 # 5 # This file is distributed under the University of Illinois Open Source 6 # License. See LICENSE.TXT for details. 7 # 8 #===------------------------------------------------------------------------===# 9 10 import sys 11 import os 12 import subprocess 13 14 def findProfrawFiles(path): 15 profraw_files = [] 16 for root, dirs, files in os.walk(path): 17 for filename in files: 18 if filename.endswith(".profraw"): 19 profraw_files.append(os.path.join(root, filename)) 20 return profraw_files 21 22 def clean(args): 23 if len(args) != 1: 24 print 'Usage: %s clean <path>\n\tRemoves all *.profraw files from <path>.' % __file__ 25 return 1 26 for profraw in findProfrawFiles(args[0]): 27 os.remove(profraw) 28 return 0 29 30 def merge(args): 31 if len(args) != 3: 32 print 'Usage: %s clean <llvm-profdata> <output> <path>\n\tMerges all profraw files from path into output.' % __file__ 33 return 1 34 cmd = [args[0], 'merge', '-o', args[1]] 35 cmd.extend(findProfrawFiles(args[2])) 36 subprocess.check_call(cmd) 37 return 0 38 39 commands = {'clean' : clean, 'merge' : merge} 40 41 def main(): 42 f = commands[sys.argv[1]] 43 sys.exit(f(sys.argv[2:])) 44 45 if __name__ == '__main__': 46 main() 47