summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/build/check_include_guards.py
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2024-11-28 06:55:14 +1100
committer Vas Crabb <vas@vastheman.com>2024-11-28 06:55:14 +1100
commit958d52f28b33f52399f4ee734000cb686bf75ef1 (patch)
treee36c4eac44768370d4ef10f4942f2df51b91e7fd /scripts/build/check_include_guards.py
parent33a3404ac2479c8b5a4abf98a20d72d5465bcaf0 (diff)
-dynax/dynax.cpp: More I/O improvements:
* Replaced hjingi hopper hack with a hopper device. * Improved DIP switch labels for mjembase and hooked up hopper. * Improved a few DIP switch labels for mjelctrn. -Fixed some more #include guards and added a CI task to check them in src/devices and src/mame.
Diffstat (limited to 'scripts/build/check_include_guards.py')
-rwxr-xr-xscripts/build/check_include_guards.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/build/check_include_guards.py b/scripts/build/check_include_guards.py
new file mode 100755
index 00000000000..f294cc6412f
--- /dev/null
+++ b/scripts/build/check_include_guards.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+##
+## icense:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import io
+import os
+import os.path
+import re
+import sys
+
+
+def pathsplit(p):
+ result = [ ]
+ while p:
+ d, n = os.path.split(p)
+ if not n:
+ result.insert(0, d)
+ break
+ else:
+ result.insert(0, n)
+ p = d
+ return result
+
+
+if __name__ == '__main__':
+ extpat = re.compile('.+\\.(h|hpp)$')
+ substpat = re.compile('[-.]')
+ guardpat = re.compile('^ *# *ifndef +([^\s]+)(\s+.*)?')
+ bad = False
+ for root in sys.argv[1:]:
+ for path, subdirs, files in os.walk(root):
+ prefix = 'MAME_' + '_'.join([n.upper() for n in pathsplit(os.path.relpath(path, root))]) + '_'
+ for f in files:
+ if extpat.match(f):
+ expected = prefix + substpat.sub('_', f.upper())
+ fp = os.path.join(path, f)
+ with io.open(fp, 'r', encoding='utf-8') as fd:
+ for l in fd:
+ m = guardpat.match(l)
+ if m:
+ if m.group(1) != expected:
+ sys.stderr.write('%s: #include guard does not appear to match expected %s\n' % (fp, expected))
+ bad = True
+ break
+ if bad:
+ sys.exit(1)