1 | #!/usr/bin/env python
|
2 |
|
3 | import subprocess
|
4 | import json
|
5 | from glob import glob
|
6 | from os import path
|
7 |
|
8 | import ninja_syntax
|
9 |
|
10 | if __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"])
|