blob: 1f94814bf88bf7fca8899e18a3d58be680cbbd1d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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, 'rb')
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))
|