summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/build/makelist.py
diff options
context:
space:
mode:
author ImJezze <jezze@gmx.net>2016-03-02 21:49:49 +0100
committer ImJezze <jezze@gmx.net>2016-03-02 21:49:49 +0100
commit9fe9f6d93e672bcd926f9e7461774bc9cc22e094 (patch)
tree3911b611dd010a4108b90fb8b8c82116eec21117 /scripts/build/makelist.py
parentdbdf21ee465acadf3e643d62d6bedfcc297ada85 (diff)
parent1914702e6fae052668df5b068a502bca57c9a3b0 (diff)
Merge remote-tracking branch 'refs/remotes/mamedev/master'
# Resolved Conflicts: # src/osd/modules/render/d3d/d3dhlsl.cpp # src/osd/windows/winmain.cpp
Diffstat (limited to 'scripts/build/makelist.py')
-rw-r--r--scripts/build/makelist.py66
1 files changed, 62 insertions, 4 deletions
diff --git a/scripts/build/makelist.py b/scripts/build/makelist.py
index 144dc636c8d..329ff374520 100644
--- a/scripts/build/makelist.py
+++ b/scripts/build/makelist.py
@@ -8,6 +8,7 @@ from __future__ import with_statement
import sys
drivlist = []
+sourcelist = []
def parse_file(srcfile):
try:
@@ -17,6 +18,7 @@ def parse_file(srcfile):
return 1
in_comment = 0
linenum = 0
+ curr_source = ''
for line in fp.readlines():
drivname = ''
linenum+=1
@@ -49,19 +51,75 @@ def parse_file(srcfile):
sys.stderr.write("Importing drivers from '%s'\n" % drivname[1:])
parse_file(drivname[1:])
continue
+ if drivname[0]=='@':
+ curr_source= drivname[8:]
+ 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)
+ if (curr_source == '') or (len(sourcelist)==0) or (curr_source in sourcelist):
+ drivlist.append(drivname)
return 0
+def parse_filter_file(srcfile):
+ try:
+ fp = open(srcfile, 'rt')
+ except IOError:
+ sys.stderr.write("Unable to open filter file '%s'\n" % srcfile)
+ return 1
+ in_comment = 0
+ linenum = 0
+ for line in fp.readlines():
+ sourcename = ''
+ 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
+ sourcename += c
+ sourcename = sourcename.strip()
+ if len(sourcename)>0:
+ if sourcename[0]=='#':
+ sys.stderr.write("Importing drivers from '%s'\n" % sourcename[1:])
+ parse_filter_file(sourcename[1:])
+ continue
+ if not all(((c >='a' and c<='z') or (c>='0' and c<='9') or c=='_' or c=='.' or c=='-') for c in sourcename):
+ sys.stderr.write("%s:%d - Invalid character in driver \"%s\"\n" % (srcfile, linenum, sourcename))
+ return 1
+ else:
+ sourcelist.append(sourcename)
+ return 0
-if len(sys.argv) < 2:
+
+if len(sys.argv) < 2 or len(sys.argv) > 3:
print('Usage:')
- print(' makelist <source.lst>')
+ print(' makelist <source.lst> [<filter.flt>]')
sys.exit(0)
+if len(sys.argv) == 3:
+ if parse_filter_file(sys.argv[2]) :
+ sys.exit(1)
+ sys.stderr.write("%d source file(s) found\n" % len(sourcelist))
+
if parse_file(sys.argv[1]) :
sys.exit(1)
@@ -70,7 +128,7 @@ if len(drivlist)==0 :
sys.stderr.write("No drivers found\n")
sys.exit(1)
-sys.stderr.write("%d drivers found\n" % len(drivlist))
+sys.stderr.write("%d driver(s) found\n" % len(drivlist))
# add a reference to the ___empty driver
drivlist.append("___empty")