#!/usr/bin/env python import subprocess import json from glob import glob from os import path import ninja_syntax if __name__ == "__main__": with open("grammars.json", "r") as fp: grammars = json.loads(fp.read()) with open("compile.ninja", "w") as fp: w = ninja_syntax.Writer(fp) w.comment("automatically generated, do not edit") w.rule("compile", "cc -shared -fno-exceptions -g -fPIC $in -o $out") for grammar in grammars: target_dir = path.join("target", grammar["name"]) target_lib = path.join("target", grammar["name"], grammar["name"] + ".so") sources = glob(target_dir + "/*.c") w.build(target_lib, "compile", inputs=sources) subprocess.call(["ninja", "-f", "compile.ninja"])