diff --git a/generator/cli.py b/generator/cli.py index de7415f..0eb8457 100644 --- a/generator/cli.py +++ b/generator/cli.py @@ -57,7 +57,7 @@ def main() -> None: logger.info(f'Generator: {args.generator}') logger.info('Parsing headers') - extracted_symbols = parse_headers(input_files, output_dir, tmp_dir) + extracted_symbols = parse_headers(input_files, tmp_dir) with open(tmp_dir / 'extracted_symbols.json', 'w') as f: f.write(json.dumps({ 'structs': extracted_symbols.structs, diff --git a/generator/generators/base_generator.py b/generator/generators/base_generator.py index c2c620f..caca0cc 100644 --- a/generator/generators/base_generator.py +++ b/generator/generators/base_generator.py @@ -37,6 +37,7 @@ class BaseGenerator: def write_outputs(self, output_dir: Path) -> None: for file_name, content in self.output_content.items(): + (output_dir / file_name).parent.mkdir(parents=True, exist_ok=True) with open(output_dir / file_name, 'w') as f: f.write("\n".join(content)) diff --git a/generator/parser.py b/generator/parser.py index 06eb4d4..f652e49 100644 --- a/generator/parser.py +++ b/generator/parser.py @@ -132,7 +132,7 @@ class Visitor(c_ast.NodeVisitor): self.generic_visit(node) -def parse_headers(input_files: list[Path], output_dir: Path, tmp_dir: Path) -> ExtractedSymbols: +def parse_headers(input_files: list[Path], tmp_dir: Path) -> ExtractedSymbols: cpp_args = ["-nostdinc", "-D__attribute__(x)=", "-E"] # Make a new clay.h that combines the provided input files, so that we can add bindings for customized structs