summaryrefslogtreecommitdiff
path: root/scripts/build/write-compdb.py
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-07-10 23:20:03 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-07-10 23:20:03 +0800
commit48ef95c24e9ac3d11200b61af617a01b10b507d1 (patch)
tree57f0e26ab98e795b19839b6eece98ca58a4b702d /scripts/build/write-compdb.py
parentb9ff206e6bd3f4d67851263a6f2acb5f575cf3b0 (diff)
downloadlume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.gz
lume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.xz
build: introduce declarative non-recursive build graph
Diffstat (limited to 'scripts/build/write-compdb.py')
-rwxr-xr-xscripts/build/write-compdb.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/scripts/build/write-compdb.py b/scripts/build/write-compdb.py
new file mode 100755
index 0000000..9ec5a49
--- /dev/null
+++ b/scripts/build/write-compdb.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import json
+import pathlib
+import sys
+
+source = pathlib.Path(sys.argv[1])
+output = pathlib.Path(sys.argv[2])
+directory = pathlib.Path.cwd()
+entries = []
+for line in source.read_text().splitlines():
+ file_name, object_name, command = line.split("\t", 2)
+ entries.append(
+ {
+ "directory": str(directory),
+ "file": file_name,
+ "output": object_name,
+ "command": command,
+ }
+ )
+output.parent.mkdir(parents=True, exist_ok=True)
+temporary = output.with_suffix(output.suffix + ".tmp")
+temporary.write_text(json.dumps(entries, indent=2) + "\n")
+temporary.replace(output)
+