Pythoncompile.py -rwxr-xr-x 787 B
1#!/usr/bin/env python
2
3import subprocess
4import json
5from glob import glob
6from os import path
7
8import ninja_syntax
9
10if __name__ == "__main__":
11 with open("grammars.json", "r") as fp:
12 grammars = json.loads(fp.read())
13
14 with open("compile.ninja", "w") as fp:
15 w = ninja_syntax.Writer(fp)
16 w.comment("automatically generated, do not edit")
17 w.rule("compile", "cc -shared -fno-exceptions -g -fPIC $in -o $out")
18 for grammar in grammars:
19 target_dir = path.join("target", grammar["name"])
20 target_lib = path.join("target", grammar["name"], grammar["name"] + ".so")
21 sources = glob(target_dir + "/*.c")
22 w.build(target_lib, "compile", inputs=sources)
23
24 subprocess.call(["ninja", "-f", "compile.ninja"])