diff options
author | Zev Weiss <zev@bewilderbeest.net> | 2019-12-21 01:09:25 -0800 |
---|---|---|
committer | Zev Weiss <zev@bewilderbeest.net> | 2020-09-03 11:58:58 -0500 |
commit | a1a027b9bd833db5384d7dc65046194018eb8bfa (patch) | |
tree | c8e906c53b485435ceb79b30a3b5faa28554f0ca /scripts | |
parent | 7734dfe55d7c005063f2682e5611fc11e9143fd9 (diff) |
Axe automated header generation.
Reasoning:
- implementation was unsound -- broke down when I added a fairly
basic macro definition expanding to a struct initializer in a *.c
file.
- made it way too easy (e.g. via otherwise totally innocuous git
commands) to end up with timestamps such that it always ran
MakeHeader.py but never used its output, leading to overbuild noise
when running what should be a null 'make'.
- but mostly: it's just an awkward way of dealing with C code.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/MakeHeader.py.in | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/scripts/MakeHeader.py.in b/scripts/MakeHeader.py.in deleted file mode 100644 index 8a688778..00000000 --- a/scripts/MakeHeader.py.in +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env @PYTHON@ -import os, sys, io -try: - from StringIO import StringIO -except ImportError: - StringIO = io.StringIO - -ANY=1 -COPY=2 -SKIP=3 -SKIPONE=4 - -state = ANY -static = 0 - -file = io.open(sys.argv[1], "r", encoding="utf-8") -name = sys.argv[1][:-2] - -out = StringIO() - -selfheader = '#include "' + name + '.h"' - -out.write( "/* Do not edit this file. It was automatically generated. */\n" ) -out.write( "\n" ) - -out.write( "#ifndef HEADER_" + os.path.basename(name) + "\n") -out.write( "#define HEADER_" + os.path.basename(name) + "\n") -is_blank = False -for line in file.readlines(): - line = line[:-1] - if state == ANY: - if line == '/*{': - state = COPY - elif line == selfheader: - pass - elif line.find("#include") == 0: - pass - elif line.find("htop - ") == 0 and line[-2:] == ".c": - out.write(line[:-2] + ".h\n") - elif line.find("static ") != -1: - if line[-1] == "{": - state = SKIP - static = 1 - else: - state = SKIPONE - elif len(line) > 1: - static = 0 - equals = line.find(" = ") - if line[-3:] == "= {": - out.write( "extern " + line[:-4] + ";\n" ) - state = SKIP - elif equals != -1: - out.write("extern " + line[:equals] + ";\n" ) - elif line.startswith("typedef struct"): - state = SKIP - elif line[-1] == "{": - out.write("extern " + line[:-2].replace("inline ", "") + ";\n") - state = SKIP - elif line[-1] == ";": - out.write("extern " + line + "\n") - else: - out.write( line + "\n") - is_blank = False - elif line == "": - if not is_blank: - out.write( line + "\n") - is_blank = True - else: - out.write( line + "\n") - is_blank = False - elif state == COPY: - is_blank = False - if line == "}*/": - state = ANY - else: - out.write( line + "\n") - elif state == SKIP: - is_blank = False - if len(line) >= 1 and line[0] == "}": - if static == 1: - state = SKIPONE - else: - state = ANY - static = 0 - elif state == SKIPONE: - is_blank = False - state = ANY - -out.write( "\n" ) -out.write( "#endif\n" ) - -# only write a new .h file if something changed. -# This prevents a lot of recompilation during development -out.seek(0) -try: - with io.open(name + ".h", "r", encoding="utf-8") as orig: - origcontents = orig.readlines() -except: - origcontents = "" -if origcontents != out.readlines(): - with io.open(name + ".h", "w", encoding="utf-8") as new: - print("Writing "+name+".h") - new.write(out.getvalue()) -out.close() |