summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/build/makelist.py
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-10-07 12:01:21 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2015-10-07 12:01:21 +0200
commit86d3aa80651cfe0d0599259878bc67156bf6730f (patch)
tree1d523e71e2e77e906b3a59cf3f2c9fd1c2d9f7c0 /scripts/build/makelist.py
parenta0f6b5e59a6d691572906367809d969d133d2abc (diff)
Moved tools in proper place, and moved build python scripts together with other scripts (nw)
Diffstat (limited to 'scripts/build/makelist.py')
-rw-r--r--scripts/build/makelist.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/scripts/build/makelist.py b/scripts/build/makelist.py
new file mode 100644
index 00000000000..144dc636c8d
--- /dev/null
+++ b/scripts/build/makelist.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Aaron Giles, Andrew Gardner
+
+from __future__ import with_statement
+
+import sys
+
+drivlist = []
+
+def parse_file(srcfile):
+ try:
+ fp = open(srcfile, 'rt')
+ except IOError:
+ sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
+ return 1
+ in_comment = 0
+ linenum = 0
+ for line in fp.readlines():
+ drivname = ''
+ linenum+=1
+ srcptr = 0
+ while srcptr < len(line):
+ c = line[srcptr]
+ srcptr+=1
+ if c==13 or c==10:
+ if c==13 and line[srcptr]==10:
+ srcptr+=1
+ continue
+ if c==' ' or c==9:
+ continue
+ if in_comment==1 and c=='*' and line[srcptr]=='/' :
+ srcptr+=1
+ in_comment = 0
+ continue
+ if in_comment:
+ continue
+ if c=='/' and line[srcptr]=='*' :
+ srcptr+=1
+ in_comment = 1
+ continue
+ if c=='/' and line[srcptr]=='/' :
+ break
+ drivname += c
+ drivname = drivname.strip()
+ if len(drivname)>0:
+ if drivname[0]=='#':
+ sys.stderr.write("Importing drivers from '%s'\n" % drivname[1:])
+ parse_file(drivname[1:])
+ continue
+ if not all(((c >='a' and c<='z') or (c>='0' and c<='9') or c=='_') for c in drivname):
+ sys.stderr.write("%s:%d - Invalid character in driver \"%s\"\n" % (srcfile, linenum, drivname))
+ return 1
+ else:
+ drivlist.append(drivname)
+ return 0
+
+
+if len(sys.argv) < 2:
+ print('Usage:')
+ print(' makelist <source.lst>')
+ sys.exit(0)
+
+if parse_file(sys.argv[1]) :
+ sys.exit(1)
+
+# output a count
+if len(drivlist)==0 :
+ sys.stderr.write("No drivers found\n")
+ sys.exit(1)
+
+sys.stderr.write("%d drivers found\n" % len(drivlist))
+
+# add a reference to the ___empty driver
+drivlist.append("___empty")
+
+# start with a header
+print('#include "emu.h"\n')
+print('#include "drivenum.h"\n')
+
+#output the list of externs first
+for drv in sorted(drivlist):
+ print("GAME_EXTERN(%s);" % drv)
+print("")
+
+# then output the array
+print("const game_driver * const driver_list::s_drivers_sorted[%d] =" % len(drivlist))
+print("{")
+for drv in sorted(drivlist):
+ print("\t&GAME_NAME(%s)," % drv)
+print("};")
+print("")
+
+# also output a global count
+print("int driver_list::s_driver_count = %d;\n" % len(drivlist))