Last change
on this file since 8438fb1 was 83ea432, checked in by Thomas Lopatic <thomas@…>, 7 years ago |
Script for consistency check.
|
-
Property mode
set to
100755
|
File size:
1.2 KB
|
Rev | Line | |
---|
[83ea432] | 1 | #!/usr/bin/env python3
|
---|
| 2 |
|
---|
| 3 | from sys import stdout
|
---|
| 4 | from pycparser import c_ast, parse_file, c_generator
|
---|
| 5 |
|
---|
| 6 | cross_gcc = "/opt/cross-m68k/bin/m68k-none-elf-gcc"
|
---|
| 7 |
|
---|
| 8 | gen = c_generator.CGenerator()
|
---|
| 9 | decls = {}
|
---|
| 10 |
|
---|
| 11 | with open("misc/c-files.txt", "r") as f:
|
---|
| 12 | for path in f:
|
---|
| 13 | path = path.rstrip()
|
---|
| 14 |
|
---|
| 15 | stdout.write("parsing {} \r".format(path))
|
---|
| 16 | stdout.flush()
|
---|
| 17 |
|
---|
| 18 | ast = parse_file(path, use_cpp = True, cpp_path = cross_gcc,
|
---|
| 19 | cpp_args = ["-E", "-D", "PYCP", "-I", "include"])
|
---|
| 20 | # ast.show()
|
---|
| 21 |
|
---|
| 22 | for node in ast.ext:
|
---|
| 23 | decl = None
|
---|
| 24 |
|
---|
| 25 | if type(node) is c_ast.Decl and \
|
---|
| 26 | node.name is not None:
|
---|
| 27 | decl = node
|
---|
| 28 |
|
---|
| 29 | elif type(node) is c_ast.FuncDef:
|
---|
| 30 | decl = node.decl
|
---|
| 31 |
|
---|
| 32 | else:
|
---|
| 33 | continue
|
---|
| 34 |
|
---|
| 35 | decl.storage = [x for x in decl.storage if x != "extern"]
|
---|
| 36 | decl.init = None
|
---|
| 37 |
|
---|
| 38 | text = gen.visit(decl)
|
---|
| 39 |
|
---|
| 40 | if decl.name in decls:
|
---|
| 41 | if decls[decl.name] != text:
|
---|
| 42 | print("Inconsistency: {} vs. {}".format(text, decls[decl.name]))
|
---|
| 43 |
|
---|
| 44 | else:
|
---|
| 45 | decls[decl.name] = text
|
---|
| 46 |
|
---|
| 47 | print("")
|
---|
Note:
See
TracBrowser
for help on using the repository browser.