2
0
mirror of https://gitlab.com/ita1024/waf.git synced 2024-11-22 18:07:12 +01:00

Make clang_compilation_database add-on always output complete listings.

This commit is contained in:
DragoonX6 2017-02-16 20:30:30 +01:00 committed by ita1024
parent 7779706bc9
commit 70616f2b7d

View File

@ -66,3 +66,24 @@ def write_compilation_database(ctx):
root = list(clang_db.values())
database_file.write(json.dumps(root, indent=2))
# Override the runnable_status function to do a dummy/dry run when the file doesn't need to be compiled.
# This will make sure compile_commands.json is always fully up to date.
# Previously you could end up with a partial compile_commands.json if the build failed.
for x in ('c', 'cxx'):
t = Task.classes[x]
def runnable_status(self):
def exec_command(cmd, **kw):
pass
run_status = self.old_runnable_status()
if run_status == Task.SKIP_ME:
setattr(self, 'old_exec_command', getattr(self, 'exec_command', None))
setattr(self, 'exec_command', exec_command)
self.run()
setattr(self, 'exec_command', getattr(self, 'old_exec_command', None))
return run_status
setattr(t, 'old_runnable_status', getattr(t, 'runnable_status', None))
setattr(t, 'runnable_status', runnable_status)