summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorZev Weiss <zev@bewilderbeest.net>2019-12-21 01:09:25 -0800
committerZev Weiss <zev@bewilderbeest.net>2020-09-03 11:58:58 -0500
commita1a027b9bd833db5384d7dc65046194018eb8bfa (patch)
treec8e906c53b485435ceb79b30a3b5faa28554f0ca /scripts
parent7734dfe55d7c005063f2682e5611fc11e9143fd9 (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.in104
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()

© 2014-2024 Faster IT GmbH | imprint | privacy policy