From f89a72489a39a7283c9050ea1a82f02008df457b Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 13 Feb 2015 13:47:32 +0100 Subject: doh (nw) --- src/build/makelist.py | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/build/makelist.py diff --git a/src/build/makelist.py b/src/build/makelist.py new file mode 100644 index 00000000000..d58abce0c1d --- /dev/null +++ b/src/build/makelist.py @@ -0,0 +1,94 @@ +#!/usr/bin/python + +from __future__ import with_statement + +import sys +import os + +drivlist = [] + +def parse_file(srcfile): + try: + fp = open(srcfile, 'rb') + except IOError: + print("Unable to open source file '%s'" % 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==' ': + 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 ') + 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)) -- cgit v1.2.3