From d561d317fc1fe773da6a981b0382507f5962176f Mon Sep 17 00:00:00 2001 From: Sam McCall Date: Fri, 5 Mar 2021 23:09:59 +0100 Subject: [PATCH] Script to generate compile_commands.json from compile_flags.txt This enables background index for a compile_flags.txt driven project. (We should really have a better solution for this) --- scripts/compile_flags_json.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 scripts/compile_flags_json.py diff --git a/scripts/compile_flags_json.py b/scripts/compile_flags_json.py new file mode 100755 index 0000000..eaac21d --- /dev/null +++ b/scripts/compile_flags_json.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +import os, sys, json + +EXTS = ('.c','.C','.cpp','.cc','.cxx','.m','.mm' + '.h','.H','.hpp','.hh','.hxx') + +input = sys.argv[1] if len(sys.argv) > 1 else 'compile_flags.txt' +driver = sys.argv[2] if len(sys.argv) > 2 else 'clang' +with open(input) as f: + flags = [line.strip() for line in f] + +dir = os.path.dirname(os.path.abspath(input)) + +entries = [] + +for root, dirs, files in os.walk(dir): + for file in files: + ext = os.path.splitext(file)[1] + if ext in EXTS: + entries.append({ + 'directory': dir, + 'file': os.path.join(dir, file), + 'arguments': [driver] + flags + [os.path.join(dir, file)]}) + +with open(os.path.join(dir, 'compile_commands.json'), 'w') as file: + json.dump(entries, file, indent=2) +