 968b4db38a
			
		
	
	
		968b4db38a
		
	
	
	
	
		
			
			Do not use cgcc; instead, extract compilation commands from compile_commands.json and invoke sparse directly. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
		
			
				
	
	
		
			26 lines
		
	
	
		
			695 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			695 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| #! /usr/bin/env python3
 | |
| 
 | |
| # Invoke sparse based on the contents of compile_commands.json
 | |
| 
 | |
| import json
 | |
| import subprocess
 | |
| import sys
 | |
| import shlex
 | |
| 
 | |
| def extract_cflags(shcmd):
 | |
|     cflags = shlex.split(shcmd)
 | |
|     return [x for x in cflags
 | |
|             if x.startswith('-D') or x.startswith('-I') or x.startswith('-W')
 | |
|                or x.startswith('-std=')]
 | |
| 
 | |
| cflags = sys.argv[1:-1]
 | |
| with open(sys.argv[-1], 'r') as fd:
 | |
|     compile_commands = json.load(fd)
 | |
| 
 | |
| for cmd in compile_commands:
 | |
|     cmd = ['sparse'] + cflags + extract_cflags(cmd['command']) + [cmd['file']]
 | |
|     print(' '.join((shlex.quote(x) for x in cmd)))
 | |
|     r = subprocess.run(cmd)
 | |
|     if r.returncode != 0:
 | |
|         sys.exit(r.returncode)
 |