summaryrefslogtreecommitdiffstats
path: root/docs/release/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/scripts')
-rw-r--r--docs/release/scripts/build/complay.py811
-rw-r--r--docs/release/scripts/build/file2lines.py96
-rw-r--r--docs/release/scripts/build/file2str.py63
-rw-r--r--docs/release/scripts/build/makedep.py764
-rw-r--r--docs/release/scripts/build/makelist.py167
-rw-r--r--docs/release/scripts/build/msgfmt.py246
-rw-r--r--docs/release/scripts/build/png.py2782
-rw-r--r--docs/release/scripts/build/png2bdc.py387
-rw-r--r--docs/release/scripts/build/verinfo.py185
-rw-r--r--docs/release/scripts/depfilter.awk25
-rw-r--r--docs/release/scripts/extlib.lua128
-rw-r--r--docs/release/scripts/font/LICENSE92
-rw-r--r--docs/release/scripts/font/NotoSans-Bold.bdcbin0 -> 61317 bytes
-rw-r--r--docs/release/scripts/font/NotoSans-Bold.ttfbin0 -> 310556 bytes
-rw-r--r--docs/release/scripts/font/README.md52
-rw-r--r--docs/release/scripts/genie.lua1607
-rw-r--r--docs/release/scripts/minimaws/lib/__init__.py4
-rw-r--r--docs/release/scripts/minimaws/lib/assets/common.js149
-rw-r--r--docs/release/scripts/minimaws/lib/assets/digest.js234
-rw-r--r--docs/release/scripts/minimaws/lib/assets/disclosedown.svg4
-rw-r--r--docs/release/scripts/minimaws/lib/assets/discloseup.svg4
-rw-r--r--docs/release/scripts/minimaws/lib/assets/machine.js628
-rw-r--r--docs/release/scripts/minimaws/lib/assets/romident.js641
-rw-r--r--docs/release/scripts/minimaws/lib/assets/sortasc.pngbin0 -> 1157 bytes
-rw-r--r--docs/release/scripts/minimaws/lib/assets/sortasc.svg4
-rw-r--r--docs/release/scripts/minimaws/lib/assets/sortdesc.pngbin0 -> 1195 bytes
-rw-r--r--docs/release/scripts/minimaws/lib/assets/sortdesc.svg4
-rw-r--r--docs/release/scripts/minimaws/lib/assets/sortind.pngbin0 -> 1247 bytes
-rw-r--r--docs/release/scripts/minimaws/lib/assets/sortind.svg5
-rw-r--r--docs/release/scripts/minimaws/lib/assets/style.css18
-rw-r--r--docs/release/scripts/minimaws/lib/auxverbs.py283
-rw-r--r--docs/release/scripts/minimaws/lib/dbaccess.py1138
-rw-r--r--docs/release/scripts/minimaws/lib/htmltmpl.py477
-rw-r--r--docs/release/scripts/minimaws/lib/lxparse.py471
-rw-r--r--docs/release/scripts/minimaws/lib/wsgiserve.py998
-rw-r--r--docs/release/scripts/minimaws/minimaws.py142
-rw-r--r--docs/release/scripts/minimaws/minimaws.wsgi16
-rw-r--r--docs/release/scripts/resources/emscripten/emscripten_post.js18
-rw-r--r--docs/release/scripts/resources/uwp/Package.appxmanifest36
-rw-r--r--docs/release/scripts/resources/uwp/assets/LockScreenLogo.scale-200.pngbin0 -> 4544 bytes
-rw-r--r--docs/release/scripts/resources/uwp/assets/SplashScreen.scale-200.pngbin0 -> 249008 bytes
-rw-r--r--docs/release/scripts/resources/uwp/assets/Square150x150Logo.scale-200.pngbin0 -> 27658 bytes
-rw-r--r--docs/release/scripts/resources/uwp/assets/Square44x44Logo.scale-200.pngbin0 -> 6817 bytes
-rw-r--r--docs/release/scripts/resources/uwp/assets/Square44x44Logo.targetsize-24_altform-unplated.pngbin0 -> 3589 bytes
-rw-r--r--docs/release/scripts/resources/uwp/assets/StoreLogo.pngbin0 -> 4705 bytes
-rw-r--r--docs/release/scripts/resources/uwp/assets/Wide310x150Logo.scale-200.pngbin0 -> 97655 bytes
-rw-r--r--docs/release/scripts/resources/uwp/mame_TemporaryKey.pfxbin0 -> 2454 bytes
-rw-r--r--docs/release/scripts/resources/windows/hbmame/hbmame.icobin0 -> 4286 bytes
-rw-r--r--docs/release/scripts/resources/windows/hbmame/hbmame.man15
-rw-r--r--docs/release/scripts/resources/windows/hbmame/hbmame.rc14
-rw-r--r--docs/release/scripts/resources/windows/mame/mame.icobin0 -> 372526 bytes
-rw-r--r--docs/release/scripts/resources/windows/mame/mame.man16
-rw-r--r--docs/release/scripts/resources/windows/mame/mame.rc14
-rw-r--r--docs/release/scripts/resources/windows/mess/mess.icobin0 -> 372526 bytes
-rw-r--r--docs/release/scripts/resources/windows/mess/mess.man16
-rw-r--r--docs/release/scripts/resources/windows/mess/mess.rc14
-rw-r--r--docs/release/scripts/src/3rdparty.lua2430
-rw-r--r--docs/release/scripts/src/benchmarks.lua74
-rw-r--r--docs/release/scripts/src/bus.lua4652
-rw-r--r--docs/release/scripts/src/cpu.lua3526
-rw-r--r--docs/release/scripts/src/devices.lua100
-rw-r--r--docs/release/scripts/src/emu.lua329
-rw-r--r--docs/release/scripts/src/formats.lua2102
-rw-r--r--docs/release/scripts/src/lib.lua137
-rw-r--r--docs/release/scripts/src/machine.lua4822
-rw-r--r--docs/release/scripts/src/main.lua457
-rw-r--r--docs/release/scripts/src/mame/frontend.lua195
-rw-r--r--docs/release/scripts/src/netlist.lua225
-rw-r--r--docs/release/scripts/src/osd/mac.lua177
-rw-r--r--docs/release/scripts/src/osd/mac_cfg.lua40
-rw-r--r--docs/release/scripts/src/osd/modules.lua655
-rw-r--r--docs/release/scripts/src/osd/newui.lua273
-rw-r--r--docs/release/scripts/src/osd/osdmini.lua130
-rw-r--r--docs/release/scripts/src/osd/osdmini_cfg.lua12
-rw-r--r--docs/release/scripts/src/osd/sdl.lua510
-rw-r--r--docs/release/scripts/src/osd/sdl_cfg.lua174
-rw-r--r--docs/release/scripts/src/osd/uwp.lua122
-rw-r--r--docs/release/scripts/src/osd/uwp_cfg.lua20
-rw-r--r--docs/release/scripts/src/osd/windows.lua265
-rw-r--r--docs/release/scripts/src/osd/windows_cfg.lua67
-rw-r--r--docs/release/scripts/src/osd/winui.lua322
-rw-r--r--docs/release/scripts/src/osd/winui_cfg.lua35
-rw-r--r--docs/release/scripts/src/sound.lua1567
-rw-r--r--docs/release/scripts/src/tests.lua75
-rw-r--r--docs/release/scripts/src/tools.lua860
-rw-r--r--docs/release/scripts/src/video.lua1394
-rw-r--r--docs/release/scripts/target/hbmame/hbmame.lua1104
-rw-r--r--docs/release/scripts/target/ldplayer/ldplayer.lua88
-rw-r--r--docs/release/scripts/target/mame/arcade.lua5188
-rw-r--r--docs/release/scripts/target/mame/ci.lua192
-rw-r--r--docs/release/scripts/target/mame/dummy.lua46
-rw-r--r--docs/release/scripts/target/mame/mame.lua26
-rw-r--r--docs/release/scripts/target/mame/mess.lua4761
-rw-r--r--docs/release/scripts/target/mame/nl.lua423
-rw-r--r--docs/release/scripts/target/mame/tiny.lua182
-rw-r--r--docs/release/scripts/target/mame/virtual.lua142
-rw-r--r--docs/release/scripts/target/zexall/zexall.lua15
-rw-r--r--docs/release/scripts/toolchain.lua1155
-rw-r--r--docs/release/scripts/xslt/list-bios.xslt43
-rw-r--r--docs/release/scripts/xslt/list-runnable-tree.xslt48
-rw-r--r--docs/release/scripts/xslt/list-runnable.xslt45
101 files changed, 51973 insertions, 0 deletions
diff --git a/docs/release/scripts/build/complay.py b/docs/release/scripts/build/complay.py
new file mode 100644
index 00000000000..81516bc3ee7
--- /dev/null
+++ b/docs/release/scripts/build/complay.py
@@ -0,0 +1,811 @@
+#!/usr/bin/python3
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import os
+import os.path
+import re
+import sys
+import xml.sax
+import xml.sax.saxutils
+import zlib
+
+
+class ErrorHandler(object):
+ def __init__(self, **kwargs):
+ super(ErrorHandler, self).__init__(**kwargs)
+ self.errors = 0
+ self.warnings = 0
+
+ def error(self, exception):
+ self.errors += 1
+ sys.stderr.write('error: %s' % (exception))
+
+ def fatalError(self, exception):
+ raise exception
+
+ def warning(self, exception):
+ self.warnings += 1
+ sys.stderr.write('warning: %s' % (exception))
+
+
+class Minifyer(object):
+ def __init__(self, output, **kwargs):
+ super(Minifyer, self).__init__(**kwargs)
+
+ self.output = output
+ self.incomplete_tag = False
+ self.element_content = ''
+
+ def setDocumentLocator(self, locator):
+ pass
+
+ def startDocument(self):
+ self.output('<?xml version="1.0"?>')
+
+ def endDocument(self):
+ self.output('\n')
+
+ def startElement(self, name, attrs):
+ self.flushElementContent()
+ if self.incomplete_tag:
+ self.output('>')
+ self.output('<%s' % (name))
+ for name in attrs.getNames():
+ self.output(' %s=%s' % (name, xml.sax.saxutils.quoteattr(attrs[name])))
+ self.incomplete_tag = True
+
+ def endElement(self, name):
+ self.flushElementContent()
+ if self.incomplete_tag:
+ self.output('/>')
+ else:
+ self.output('</%s>' % (name))
+ self.incomplete_tag = False
+
+ def characters(self, content):
+ self.element_content += content
+
+ def ignorableWhitespace(self, whitespace):
+ pass
+
+ def processingInstruction(self, target, data):
+ pass
+
+ def flushElementContent(self):
+ self.element_content = self.element_content.strip()
+ if self.element_content:
+ if self.incomplete_tag:
+ self.output('>')
+ self.incomplete_tag = False
+ self.output(xml.sax.saxutils.escape(self.element_content))
+ self.element_content = ''
+
+
+class XmlError(Exception):
+ pass
+
+
+class LayoutChecker(Minifyer):
+ BADTAGPATTERN = re.compile('[^abcdefghijklmnopqrstuvwxyz0123456789_.:^$]')
+ VARPATTERN = re.compile('^.*~[0-9A-Za-z_]+~.*$')
+ FLOATCHARS = re.compile('^.*[.eE].*$')
+ SHAPES = frozenset(('disk', 'led14seg', 'led14segsc', 'led16seg', 'led16segsc', 'led7seg', 'led8seg_gts1', 'rect'))
+ ORIENTATIONS = frozenset((0, 90, 180, 270))
+ YESNO = frozenset(('yes', 'no'))
+ BLENDMODES = frozenset(('none', 'alpha', 'multiply', 'add'))
+
+ def __init__(self, output, **kwargs):
+ super(LayoutChecker, self).__init__(output=output, **kwargs)
+ self.locator = None
+ self.errors = 0
+ self.elements = { }
+ self.groups = { }
+ self.views = { }
+ self.referenced_elements = { }
+ self.referenced_groups = { }
+ self.group_collections = { }
+ self.current_collections = None
+
+ def formatLocation(self):
+ return '%s:%d:%d' % (self.locator.getSystemId(), self.locator.getLineNumber(), self.locator.getColumnNumber())
+
+ def handleError(self, msg):
+ self.errors += 1
+ sys.stderr.write('error: %s: %s\n' % (self.formatLocation(), msg))
+
+ def checkIntAttribute(self, name, attrs, key, default):
+ if key not in attrs:
+ return default
+ val = attrs[key]
+ if self.VARPATTERN.match(val):
+ return None
+ base = 10
+ offs = 0
+ if (len(val) >= 1) and ('$' == val[0]):
+ base = 16
+ offs = 1
+ elif (len(val) >= 2) and ('0' == val[0]) and (('x' == val[1]) or ('X' == val[1])):
+ base = 16
+ offs = 2
+ elif (len(val) >= 1) and ('#' == val[0]):
+ offs = 1
+ try:
+ return int(val[offs:], base)
+ except:
+ self.handleError('Element %s attribute %s "%s" is not an integer' % (name, key, val))
+ return None
+
+ def checkFloatAttribute(self, name, attrs, key, default):
+ if key not in attrs:
+ return default
+ val = attrs[key]
+ if self.VARPATTERN.match(val):
+ return None
+ try:
+ return float(val)
+ except:
+ self.handleError('Element %s attribute %s "%s" is not a floating point number' % (name, key, val))
+ return None
+
+ def checkNumericAttribute(self, name, attrs, key, default):
+ if key not in attrs:
+ return default
+ val = attrs[key]
+ if self.VARPATTERN.match(val):
+ return None
+ base = 0
+ offs = 0
+ try:
+ if (len(val) >= 1) and ('$' == val[0]):
+ base = 16
+ offs = 1
+ elif (len(val) >= 2) and ('0' == val[0]) and (('x' == val[1]) or ('X' == val[1])):
+ base = 16
+ offs = 2
+ elif (len(val) >= 1) and ('#' == val[0]):
+ base = 10
+ offs = 1
+ elif self.FLOATCHARS.match(val):
+ return float(val)
+ return int(val[offs:], base)
+ except:
+ self.handleError('Element %s attribute %s "%s" is not a number' % (name, key, val))
+ return None
+
+ def checkParameter(self, attrs):
+ if 'name' not in attrs:
+ self.handleError('Element param missing attribute name')
+ else:
+ name = attrs['name']
+ self.checkNumericAttribute('param', attrs, 'increment', None)
+ lshift = self.checkIntAttribute('param', attrs, 'lshift', None)
+ if (lshift is not None) and (0 > lshift):
+ self.handleError('Element param attribute lshift "%s" is negative' % (attrs['lshift'], ))
+ rshift = self.checkIntAttribute('param', attrs, 'rshift', None)
+ if (rshift is not None) and (0 > rshift):
+ self.handleError('Element param attribute rshift "%s" is negative' % (attrs['rshift'], ))
+ if self.repeat_depth and self.repeat_depth[-1]:
+ if 'start' in attrs:
+ if 'value' in attrs:
+ self.handleError('Element param has both start and value attributes')
+ if 'name' in attrs:
+ if name not in self.variable_scopes[-1]:
+ self.variable_scopes[-1][name] = True
+ elif not self.VARPATTERN.match(name):
+ self.handleError('Generator parameter "%s" redefined' % (name, ))
+ else:
+ if 'value' not in attrs:
+ self.handleError('Element param missing attribute value')
+ if ('increment' in attrs) or ('lshift' in attrs) or ('rshift' in attrs):
+ self.handleError('Element param has increment/lshift/rshift attribute(s) without start attribute')
+ if 'name' in attrs:
+ if not self.variable_scopes[-1].get(name, False):
+ self.variable_scopes[-1][name] = False
+ elif not self.VARPATTERN.match(name):
+ self.handleError('Generator parameter "%s" redefined' % (name, ))
+ else:
+ if ('start' in attrs) or ('increment' in attrs) or ('lshift' in attrs) or ('rshift' in attrs):
+ self.handleError('Element param with start/increment/lshift/rshift attribute(s) not in repeat scope')
+ if 'value' not in attrs:
+ self.handleError('Element param missing attribute value')
+ if 'name' in attrs:
+ self.variable_scopes[-1][attrs['name']] = False
+
+ def checkBounds(self, attrs):
+ left = self.checkFloatAttribute('bounds', attrs, 'left', 0.0)
+ top = self.checkFloatAttribute('bounds', attrs, 'top', 0.0)
+ right = self.checkFloatAttribute('bounds', attrs, 'right', 1.0)
+ bottom = self.checkFloatAttribute('bounds', attrs, 'bottom', 1.0)
+ x = self.checkFloatAttribute('bounds', attrs, 'x', 0.0)
+ y = self.checkFloatAttribute('bounds', attrs, 'y', 0.0)
+ xc = self.checkFloatAttribute('bounds', attrs, 'xc', 0.0)
+ yc = self.checkFloatAttribute('bounds', attrs, 'yc', 0.0)
+ width = self.checkFloatAttribute('bounds', attrs, 'width', 1.0)
+ height = self.checkFloatAttribute('bounds', attrs, 'height', 1.0)
+ if (left is not None) and (right is not None) and (left > right):
+ self.handleError('Element bounds attribute left "%s" is greater than attribute right "%s"' % (
+ attrs.get('left', 0.0),
+ attrs.get('right', 1.0)))
+ if (top is not None) and (bottom is not None) and (top > bottom):
+ self.handleError('Element bounds attribute top "%s" is greater than attribute bottom "%s"' % (
+ attrs.get('top', 0.0),
+ attrs.get('bottom', 1.0)))
+ if (width is not None) and (0.0 > width):
+ self.handleError('Element bounds attribute width "%s" is negative' % (attrs['width'], ))
+ if (height is not None) and (0.0 > height):
+ self.handleError('Element bounds attribute height "%s" is negative' % (attrs['height'], ))
+ if (('left' in attrs) and (('x' in attrs) or ('xc' in attrs))) or (('x' in attrs) and ('xc' in attrs)):
+ self.handleError('Element bounds has multiple horizontal origin attributes (left/x/xc)')
+ if (('left' in attrs) and ('width' in attrs)) or ((('x' in attrs) or ('xc' in attrs)) and ('right' in attrs)):
+ self.handleError('Element bounds has both left/right and x/xc/width attributes')
+ if (('top' in attrs) and (('y' in attrs) or ('yc' in attrs))) or (('y' in attrs) and ('yc' in attrs)):
+ self.handleError('Element bounds has multiple vertical origin attributes (top/y/yc)')
+ if (('top' in attrs) and ('height' in attrs)) or ((('y' in attrs) or ('yc' in attrs)) and ('bottom' in attrs)):
+ self.handleError('Element bounds has both top/bottom and y/yc/height attributes')
+
+ def checkOrientation(self, attrs):
+ if self.have_orientation[-1]:
+ self.handleError('Duplicate element orientation')
+ else:
+ self.have_orientation[-1] = True
+ if self.checkIntAttribute('orientation', attrs, 'rotate', 0) not in self.ORIENTATIONS:
+ self.handleError('Element orientation attribute rotate "%s" is unsupported' % (attrs['rotate'], ))
+ for name in ('swapxy', 'flipx', 'flipy'):
+ if (attrs.get(name, 'no') not in self.YESNO) and (not self.VARPATTERN.match(attrs['yesno'])):
+ self.handleError('Element orientation attribute %s "%s" is not "yes" or "no"' % (name, attrs[name]))
+
+ def checkColor(self, attrs):
+ self.checkColorChannel(attrs, 'red')
+ self.checkColorChannel(attrs, 'green')
+ self.checkColorChannel(attrs, 'blue')
+ self.checkColorChannel(attrs, 'alpha')
+
+ def checkColorChannel(self, attrs, name):
+ channel = self.checkFloatAttribute('color', attrs, name, None)
+ if (channel is not None) and ((0.0 > channel) or (1.0 < channel)):
+ self.handleError('Element color attribute %s "%s" outside valid range 0.0-1.0' % (name, attrs[name]))
+
+ def checkTag(self, tag, element, attr):
+ if '' == tag:
+ self.handleError('Element %s attribute %s is empty' % (element, attr))
+ else:
+ if tag.find('^') >= 0:
+ self.handleError('Element %s attribute %s "%s" contains parent device reference' % (element, attr, tag))
+ if ':' == tag[-1]:
+ self.handleError('Element %s attribute %s "%s" ends with separator' % (element, attr, tag))
+ if tag.find('::') >= 0:
+ self.handleError('Element %s attribute %s "%s" contains double separator' % (element, attr, tag))
+
+ def checkComponent(self, name, attrs):
+ statemask = self.checkIntAttribute(name, attrs, 'statemask', None)
+ stateval = self.checkIntAttribute(name, attrs, 'state', None)
+ if stateval is not None:
+ if 0 > stateval:
+ self.handleError('Element %s attribute state "%s" is negative' % (name, attrs['state']))
+ if (statemask is not None) and (stateval & ~statemask):
+ self.handleError('Element %s attribute state "%s" has bits set that are clear in attribute statemask "%s"' % (name, attrs['state'], attrs['statemask']))
+ if 'image' == name:
+ self.handlers.append((self.imageComponentStartHandler, self.imageComponentEndHandler))
+ else:
+ self.handlers.append((self.componentStartHandler, self.componentEndHandler))
+ self.have_bounds.append({ })
+ self.have_color.append({ })
+
+ def checkViewItem(self, name, attrs):
+ if 'id' in attrs:
+ if not attrs['id']:
+ self.handleError('Element %s attribute id is empty' % (name, ))
+ elif not self.VARPATTERN.match(attrs['id']):
+ if attrs['id'] in self.item_ids:
+ self.handleError('Element %s has duplicate id "%s" (previous %s)' % (name, attrs['id'], self.item_ids[attrs['id']]))
+ else:
+ self.item_ids[attrs['id']] = self.formatLocation()
+ if self.repeat_depth[-1]:
+ self.handleError('Element %s attribute id "%s" in repeat contains no parameter references' % (name, attrs['id']))
+ if ('blend' in attrs) and (attrs['blend'] not in self.BLENDMODES) and not self.VARPATTERN.match(attrs['blend']):
+ self.handleError('Element %s attribute blend "%s" is unsupported' % (name, attrs['blend']))
+ if 'inputtag' in attrs:
+ if 'inputmask' not in attrs:
+ self.handleError('Element %s has inputtag attribute without inputmask attribute' % (name, ))
+ self.checkTag(attrs['inputtag'], name, 'inputtag')
+ elif 'inputmask' in attrs:
+ self.handleError('Element %s has inputmask attribute without inputtag attribute' % (name, ))
+ inputraw = None
+ if 'inputraw' in attrs:
+ if (attrs['inputraw'] not in self.YESNO) and (not self.VARPATTERN.match(attrs['inputraw'])):
+ self.handleError('Element %s attribute inputraw "%s" is not "yes" or "no"' % (name, attrs['inputraw']))
+ else:
+ inputraw = 'yes' == attrs['inputraw']
+ if 'inputmask' not in attrs:
+ self.handleError('Element %s has inputraw attribute without inputmask attribute' % (name, ))
+ if 'inputtag' not in attrs:
+ self.handleError('Element %s has inputraw attribute without inputtag attribute' % (name, ))
+ inputmask = self.checkIntAttribute(name, attrs, 'inputmask', None)
+ if (inputmask is not None) and (not inputmask):
+ if (inputraw is None) or (not inputraw):
+ self.handleError('Element %s attribute inputmask "%s" is zero' % (name, attrs['inputmask']))
+
+ def startViewItem(self, name):
+ self.handlers.append((self.viewItemStartHandler, self.viewItemEndHandler))
+ self.have_bounds.append(None if 'group' == name else { })
+ self.have_orientation.append(False)
+ self.have_color.append(None if 'group' == name else { })
+
+ def rootStartHandler(self, name, attrs):
+ if 'mamelayout' != name:
+ self.ignored_depth = 1
+ self.handleError('Expected root element mamelayout but found %s' % (name, ))
+ else:
+ if 'version' not in attrs:
+ self.handleError('Element mamelayout missing attribute version')
+ else:
+ try:
+ int(attrs['version'])
+ except:
+ self.handleError('Element mamelayout attribute version "%s" is not an integer' % (attrs['version'], ))
+ self.have_script = None
+ self.variable_scopes.append({ })
+ self.repeat_depth.append(0)
+ self.handlers.append((self.layoutStartHandler, self.layoutEndHandler))
+
+ def rootEndHandler(self, name, attrs):
+ pass # should be unreachable
+
+ def layoutStartHandler(self, name, attrs):
+ if 'element' == name:
+ if 'name' not in attrs:
+ self.handleError('Element element missing attribute name')
+ else:
+ generated_name = self.VARPATTERN.match(attrs['name'])
+ if generated_name:
+ self.generated_element_names = True
+ if attrs['name'] not in self.elements:
+ self.elements[attrs['name']] = self.formatLocation()
+ elif not generated_name:
+ self.handleError('Element element has duplicate name (previous %s)' % (self.elements[attrs['name']], ))
+ defstate = self.checkIntAttribute(name, attrs, 'defstate', None)
+ if (defstate is not None) and (0 > defstate):
+ self.handleError('Element element attribute defstate "%s" is negative' % (attrs['defstate'], ))
+ self.handlers.append((self.elementStartHandler, self.elementEndHandler))
+ elif 'group' == name:
+ self.current_collections = { }
+ if 'name' not in attrs:
+ self.handleError('Element group missing attribute name')
+ else:
+ generated_name = self.VARPATTERN.match(attrs['name'])
+ if generated_name:
+ self.generated_group_names = True
+ if attrs['name'] not in self.groups:
+ self.groups[attrs['name']] = self.formatLocation()
+ if not generated_name:
+ self.group_collections[attrs['name']] = self.current_collections
+ elif not generated_name:
+ self.handleError('Element group has duplicate name (previous %s)' % (self.groups[attrs['name']], ))
+ self.handlers.append((self.groupViewStartHandler, self.groupViewEndHandler))
+ self.variable_scopes.append({ })
+ self.item_ids = { }
+ self.repeat_depth.append(0)
+ self.have_bounds.append(None)
+ elif ('view' == name) and (not self.repeat_depth[-1]):
+ self.current_collections = { }
+ if 'name' not in attrs:
+ self.handleError('Element view missing attribute name')
+ else:
+ if attrs['name'] not in self.views:
+ self.views[attrs['name']] = self.formatLocation()
+ elif not self.VARPATTERN.match(attrs['name']):
+ self.handleError('Element view has duplicate name "%s" (previous %s)' % (attrs['name'], self.views[attrs['name']]))
+ self.handlers.append((self.groupViewStartHandler, self.groupViewEndHandler))
+ self.variable_scopes.append({ })
+ self.item_ids = { }
+ self.repeat_depth.append(0)
+ self.have_bounds.append(None)
+ elif 'repeat' == name:
+ if 'count' not in attrs:
+ self.handleError('Element repeat missing attribute count')
+ else:
+ count = self.checkIntAttribute(name, attrs, 'count', None)
+ if (count is not None) and (0 >= count):
+ self.handleError('Element repeat attribute count "%s" is not positive' % (attrs['count'], ))
+ self.variable_scopes.append({ })
+ self.repeat_depth[-1] += 1
+ elif 'param' == name:
+ self.checkParameter(attrs)
+ self.ignored_depth = 1
+ elif ('script' == name) and (not self.repeat_depth[-1]):
+ if self.have_script is None:
+ self.have_script = self.formatLocation()
+ else:
+ self.handleError('Duplicate script element (previous %s)' % (self.have_script, ))
+ self.ignored_depth = 1
+ else:
+ self.handleError('Encountered unexpected element %s' % (name, ))
+ self.ignored_depth = 1
+
+ def layoutEndHandler(self, name):
+ self.variable_scopes.pop()
+ if self.repeat_depth[-1]:
+ self.repeat_depth[-1] -= 1
+ else:
+ if not self.generated_element_names:
+ for element in self.referenced_elements:
+ if (element not in self.elements) and (not self.VARPATTERN.match(element)):
+ self.handleError('Element "%s" not found (first referenced at %s)' % (element, self.referenced_elements[element]))
+ if not self.generated_group_names:
+ for group in self.referenced_groups:
+ if (group not in self.groups) and (not self.VARPATTERN.match(group)):
+ self.handleError('Group "%s" not found (first referenced at %s)' % (group, self.referenced_groups[group]))
+ if not self.views:
+ self.handleError('No view elements found')
+ del self.have_script
+ self.handlers.pop()
+
+ def elementStartHandler(self, name, attrs):
+ if name in self.SHAPES:
+ self.checkComponent(name, attrs)
+ elif 'text' == name:
+ if 'string' not in attrs:
+ self.handleError('Element text missing attribute string')
+ align = self.checkIntAttribute(name, attrs, 'align', None)
+ if (align is not None) and ((0 > align) or (2 < align)):
+ self.handleError('Element text attribute align "%s" not in valid range 0-2' % (attrs['align'], ))
+ self.checkComponent(name, attrs)
+ elif 'simplecounter' == name:
+ maxstate = self.checkIntAttribute(name, attrs, 'maxstate', None)
+ if (maxstate is not None) and (0 > maxstate):
+ self.handleError('Element simplecounter attribute maxstate "%s" is negative' % (attrs['maxstate'], ))
+ digits = self.checkIntAttribute(name, attrs, 'digits', None)
+ if (digits is not None) and (0 >= digits):
+ self.handleError('Element simplecounter attribute digits "%s" is not positive' % (attrs['digits'], ))
+ align = self.checkIntAttribute(name, attrs, 'align', None)
+ if (align is not None) and ((0 > align) or (2 < align)):
+ self.handleError('Element simplecounter attribute align "%s" not in valid range 0-2' % (attrs['align'], ))
+ self.checkComponent(name, attrs)
+ elif 'image' == name:
+ self.have_file = 'file' in attrs
+ self.have_data = None
+ self.checkComponent(name, attrs)
+ elif 'reel' == name:
+ # TODO: validate symbollist and improve validation of other attributes
+ self.checkIntAttribute(name, attrs, 'stateoffset', None)
+ numsymbolsvisible = self.checkIntAttribute(name, attrs, 'numsymbolsvisible', None)
+ if (numsymbolsvisible is not None) and (0 >= numsymbolsvisible):
+ self.handleError('Element reel attribute numsymbolsvisible "%s" not positive' % (attrs['numsymbolsvisible'], ))
+ reelreversed = self.checkIntAttribute(name, attrs, 'reelreversed', None)
+ if (reelreversed is not None) and ((0 > reelreversed) or (1 < reelreversed)):
+ self.handleError('Element reel attribute reelreversed "%s" not in valid range 0-1' % (attrs['reelreversed'], ))
+ beltreel = self.checkIntAttribute(name, attrs, 'beltreel', None)
+ if (beltreel is not None) and ((0 > beltreel) or (1 < beltreel)):
+ self.handleError('Element reel attribute beltreel "%s" not in valid range 0-1' % (attrs['beltreel'], ))
+ self.checkComponent(name, attrs)
+ else:
+ self.handleError('Encountered unexpected element %s' % (name, ))
+ self.ignored_depth = 1
+
+ def elementEndHandler(self, name):
+ self.handlers.pop()
+
+ def componentStartHandler(self, name, attrs):
+ if 'bounds' == name:
+ state = self.checkIntAttribute(name, attrs, 'state', 0)
+ if state is not None:
+ if 0 > state:
+ self.handleError('Element bounds attribute state "%s" is negative' % (attrs['state'], ))
+ if state in self.have_bounds[-1]:
+ self.handleError('Duplicate bounds for state %d (previous %s)' % (state, self.have_bounds[-1][state]))
+ else:
+ self.have_bounds[-1][state] = self.formatLocation()
+ self.checkBounds(attrs)
+ elif 'color' == name:
+ state = self.checkIntAttribute(name, attrs, 'state', 0)
+ if state is not None:
+ if 0 > state:
+ self.handleError('Element color attribute state "%s" is negative' % (attrs['state'], ))
+ if state in self.have_color[-1]:
+ self.handleError('Duplicate color for state %d (previous %s)' % (state, self.have_color[-1][state]))
+ else:
+ self.have_color[-1][state] = self.formatLocation()
+ self.checkColor(attrs)
+ self.ignored_depth = 1
+
+ def componentEndHandler(self, name):
+ self.have_bounds.pop()
+ self.have_color.pop()
+ self.handlers.pop()
+
+ def imageComponentStartHandler(self, name, attrs):
+ if 'data' == name:
+ if self.have_data is not None:
+ self.handleError('Element image has multiple data child elements (previous %s)' % (self.have_data))
+ else:
+ self.have_data = self.formatLocation()
+ if self.have_file:
+ self.handleError('Element image has attribute file and child element data')
+ self.ignored_depth = 1
+ else:
+ self.componentStartHandler(name, attrs)
+
+ def imageComponentEndHandler(self, name):
+ if (not self.have_file) and (self.have_data is None):
+ self.handleError('Element image missing attribute file or child element data')
+ del self.have_file
+ del self.have_data
+ self.componentEndHandler(name)
+
+ def groupViewStartHandler(self, name, attrs):
+ if 'element' == name:
+ if 'ref' not in attrs:
+ self.handleError('Element %s missing attribute ref' % (name, ))
+ elif attrs['ref'] not in self.referenced_elements:
+ self.referenced_elements[attrs['ref']] = self.formatLocation()
+ self.checkViewItem(name, attrs)
+ self.startViewItem(name)
+ elif 'screen' == name:
+ if 'index' in attrs:
+ index = self.checkIntAttribute(name, attrs, 'index', None)
+ if (index is not None) and (0 > index):
+ self.handleError('Element screen attribute index "%s" is negative' % (attrs['index'], ))
+ if 'tag' in attrs:
+ self.handleError('Element screen has both index and tag attributes')
+ if 'tag' in attrs:
+ tag = attrs['tag']
+ self.checkTag(tag, name, 'tag')
+ if self.BADTAGPATTERN.search(tag):
+ self.handleError('Element screen attribute tag "%s" contains invalid characters' % (tag, ))
+ self.checkViewItem(name, attrs)
+ self.startViewItem(name)
+ elif 'group' == name:
+ if 'ref' not in attrs:
+ self.handleError('Element group missing attribute ref')
+ else:
+ if attrs['ref'] not in self.referenced_groups:
+ self.referenced_groups[attrs['ref']] = self.formatLocation()
+ if (not self.VARPATTERN.match(attrs['ref'])) and (attrs['ref'] in self.group_collections):
+ for n, l in self.group_collections[attrs['ref']].items():
+ if n not in self.current_collections:
+ self.current_collections[n] = l
+ else:
+ self.handleError('Element group instantiates collection with duplicate name "%s" from %s (previous %s)' % (n, l, self.current_collections[n]))
+ self.startViewItem(name)
+ elif 'repeat' == name:
+ if 'count' not in attrs:
+ self.handleError('Element repeat missing attribute count')
+ else:
+ count = self.checkIntAttribute(name, attrs, 'count', None)
+ if (count is not None) and (0 >= count):
+ self.handleError('Element repeat attribute count "%s" is negative' % (attrs['count'], ))
+ self.variable_scopes.append({ })
+ self.repeat_depth[-1] += 1
+ elif 'collection' == name:
+ if 'name' not in attrs:
+ self.handleError('Element collection missing attribute name')
+ elif not self.VARPATTERN.match(attrs['name']):
+ if attrs['name'] not in self.current_collections:
+ self.current_collections[attrs['name']] = self.formatLocation()
+ else:
+ self.handleError('Element collection has duplicate name (previous %s)' % (self.current_collections[attrs['name']], ))
+ if attrs.get('visible', 'yes') not in self.YESNO:
+ self.handleError('Element collection attribute visible "%s" is not "yes" or "no"' % (attrs['visible'], ))
+ self.variable_scopes.append({ })
+ self.collection_depth += 1
+ elif 'param' == name:
+ self.checkParameter(attrs)
+ self.ignored_depth = 1
+ elif 'bounds' == name:
+ if self.have_bounds[-1] is not None:
+ self.handleError('Duplicate element bounds (previous %s)' % (self.have_bounds[-1], ))
+ else:
+ self.have_bounds[-1] = self.formatLocation()
+ self.checkBounds(attrs)
+ if self.repeat_depth[-1]:
+ self.handleError('Element bounds inside repeat')
+ elif self.collection_depth:
+ self.handleError('Element bounds inside collection')
+ self.ignored_depth = 1
+ else:
+ self.handleError('Encountered unexpected element %s' % (name, ))
+ self.ignored_depth = 1
+
+ def groupViewEndHandler(self, name):
+ self.variable_scopes.pop()
+ if 'collection' == name:
+ self.collection_depth -= 1
+ elif self.repeat_depth[-1]:
+ self.repeat_depth[-1] -= 1
+ else:
+ del self.item_ids
+ self.current_collections = None
+ self.repeat_depth.pop()
+ self.have_bounds.pop()
+ self.handlers.pop()
+
+ def viewItemStartHandler(self, name, attrs):
+ if 'animate' == name:
+ if isinstance(self.have_bounds[-1], dict):
+ if 'inputtag' in attrs:
+ if 'name' in attrs:
+ self.handleError('Element animate has both attribute inputtag and attribute name')
+ self.checkTag(attrs['inputtag'], name, 'inputtag')
+ elif 'name' not in attrs:
+ self.handleError('Element animate has neither attribute inputtag nor attribute name')
+ self.checkIntAttribute(name, attrs, 'mask', None)
+ else:
+ self.handleError('Encountered unexpected element %s' % (name, ))
+ elif 'bounds' == name:
+ if self.have_bounds[-1] is None:
+ self.have_bounds[-1] = self.formatLocation()
+ elif isinstance(self.have_bounds[-1], dict):
+ state = self.checkIntAttribute(name, attrs, 'state', 0)
+ if state is not None:
+ if 0 > state:
+ self.handleError('Element bounds attribute state "%s" is negative' % (attrs['state'], ))
+ if state in self.have_bounds[-1]:
+ self.handleError('Duplicate bounds for state %d (previous %s)' % (state, self.have_bounds[-1][state]))
+ else:
+ self.have_bounds[-1][state] = self.formatLocation()
+ else:
+ self.handleError('Duplicate element bounds (previous %s)' % (self.have_bounds[-1], ))
+ self.checkBounds(attrs)
+ elif 'orientation' == name:
+ self.checkOrientation(attrs)
+ elif 'color' == name:
+ if self.have_color[-1] is None:
+ self.have_color[-1] = self.formatLocation()
+ elif isinstance(self.have_color[-1], dict):
+ state = self.checkIntAttribute(name, attrs, 'state', 0)
+ if state is not None:
+ if 0 > state:
+ self.handleError('Element color attribute state "%s" is negative' % (attrs['state'], ))
+ if state in self.have_color[-1]:
+ self.handleError('Duplicate color for state %d (previous %s)' % (state, self.have_color[-1][state]))
+ else:
+ self.have_color[-1][state] = self.formatLocation()
+ else:
+ self.handleError('Duplicate element color (previous %s)' % (self.have_color[-1], ))
+ self.checkColor(attrs)
+ else:
+ self.handleError('Encountered unexpected element %s' % (name, ))
+ self.ignored_depth = 1
+
+ def viewItemEndHandler(self, name):
+ self.have_bounds.pop()
+ self.have_orientation.pop()
+ self.have_color.pop()
+ self.handlers.pop()
+
+ def setDocumentLocator(self, locator):
+ self.locator = locator
+ super(LayoutChecker, self).setDocumentLocator(locator)
+
+ def startDocument(self):
+ self.handlers = [(self.rootStartHandler, self.rootEndHandler)]
+ self.ignored_depth = 0
+ self.variable_scopes = [ ]
+ self.repeat_depth = [ ]
+ self.collection_depth = 0
+ self.have_bounds = [ ]
+ self.have_orientation = [ ]
+ self.have_color = [ ]
+ self.generated_element_names = False
+ self.generated_group_names = False
+ super(LayoutChecker, self).startDocument()
+
+ def endDocument(self):
+ self.locator = None
+ self.elements.clear()
+ self.groups.clear()
+ self.views.clear()
+ self.referenced_elements.clear()
+ self.referenced_groups.clear()
+ self.group_collections.clear()
+ self.current_collections = None
+ del self.handlers
+ del self.ignored_depth
+ del self.variable_scopes
+ del self.repeat_depth
+ del self.collection_depth
+ del self.have_bounds
+ del self.have_orientation
+ del self.have_color
+ del self.generated_element_names
+ del self.generated_group_names
+ super(LayoutChecker, self).endDocument()
+
+ def startElement(self, name, attrs):
+ if 0 < self.ignored_depth:
+ self.ignored_depth += 1
+ else:
+ self.handlers[-1][0](name, attrs)
+ super(LayoutChecker, self).startElement(name, attrs)
+
+ def endElement(self, name):
+ if 0 < self.ignored_depth:
+ self.ignored_depth -= 1
+ else:
+ self.handlers[-1][1](name)
+ super(LayoutChecker, self).endElement(name)
+
+
+def compressLayout(src, dst, comp):
+ state = [0, 0]
+ def write(block):
+ for ch in bytearray(block):
+ if 0 == state[0]:
+ dst('\t')
+ elif 0 == (state[0] % 32):
+ dst(',\n\t')
+ else:
+ dst(', ')
+ state[0] += 1
+ dst('%3u' % (ch))
+
+ def output(text):
+ block = text.encode('UTF-8')
+ state[1] += len(block)
+ write(comp.compress(block))
+
+ error_handler = ErrorHandler()
+ content_handler = LayoutChecker(output)
+ parser = xml.sax.make_parser()
+ parser.setErrorHandler(error_handler)
+ parser.setContentHandler(content_handler)
+ try:
+ parser.parse(src)
+ write(comp.flush())
+ dst('\n')
+ except xml.sax.SAXException as exception:
+ print('fatal error: %s' % (exception))
+ raise XmlError('Fatal error parsing XML')
+ if (content_handler.errors > 0) or (error_handler.errors > 0) or (error_handler.warnings > 0):
+ raise XmlError('Error(s) and/or warning(s) parsing XML')
+
+ return state[1], state[0]
+
+
+class BlackHole(object):
+ def write(self, *args):
+ pass
+ def close(self):
+ pass
+
+
+if __name__ == '__main__':
+ if (len(sys.argv) > 4) or (len(sys.argv) < 2):
+ print('Usage:')
+ print(' complay <source.lay> [<output.h> [<varname>]]')
+ sys.exit(0 if len(sys.argv) <= 1 else 1)
+
+ srcfile = sys.argv[1]
+ dstfile = sys.argv[2] if len(sys.argv) >= 3 else None
+ if len(sys.argv) >= 4:
+ varname = sys.argv[3]
+ else:
+ varname = os.path.basename(srcfile)
+ base, ext = os.path.splitext(varname)
+ if ext.lower() == '.lay':
+ varname = base
+ varname = 'layout_' + re.sub('[^0-9A-Za-z_]', '_', varname)
+
+ comp_type = 'internal_layout::compression::ZLIB'
+ try:
+ dst = open(dstfile,'w') if dstfile is not None else BlackHole()
+ dst.write('static const unsigned char %s_data[] = {\n' % (varname))
+ byte_count, comp_size = compressLayout(srcfile, lambda x: dst.write(x), zlib.compressobj())
+ dst.write('};\n\n')
+ dst.write('const internal_layout %s = {\n' % (varname))
+ dst.write('\t%d, sizeof(%s_data), %s, %s_data\n' % (byte_count, varname, comp_type, varname))
+ dst.write('};\n')
+ dst.close()
+ except XmlError:
+ dst.close()
+ if dstfile is not None:
+ os.remove(dstfile)
+ sys.exit(2)
+ except IOError:
+ sys.stderr.write("Unable to open output file '%s'\n" % dstfile)
+ dst.close()
+ if dstfile is not None:
+ os.remove(dstfile)
+ sys.exit(3)
diff --git a/docs/release/scripts/build/file2lines.py b/docs/release/scripts/build/file2lines.py
new file mode 100644
index 00000000000..1a8cf897656
--- /dev/null
+++ b/docs/release/scripts/build/file2lines.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import io
+import os
+import os.path
+import re
+import sys
+
+
+def write_output(text):
+ try:
+ dst.write(text)
+ except IOError:
+ if dstfile is not None:
+ sys.stderr.write('Error writing to output file \'%s\'\n' % dstfile)
+ dst.close()
+ os.remove(dstfile)
+ else:
+ sys.stderr.write('Error writing to output\n')
+ sys.exit(3)
+
+
+if __name__ == '__main__':
+ if (len(sys.argv) > 4) or (len(sys.argv) < 2):
+ print('Usage:')
+ print(' file2lines <source.txt> [<output.h> [<varname>]]')
+ sys.exit(0 if len(sys.argv) <= 1 else 1)
+
+ srcfile = sys.argv[1]
+ dstfile = sys.argv[2] if len(sys.argv) >= 3 else None
+ if len(sys.argv) >= 4:
+ varname = sys.argv[3]
+ else:
+ varname = os.path.basename(srcfile)
+ base, ext = os.path.splitext(varname)
+ if ext.lower() == '.txt':
+ varname = base
+ varname = 'lines_' + re.sub('[^0-9A-Za-z_]', '_', varname)
+
+ dst = None
+ try:
+ with io.open(srcfile, 'r', encoding='utf-8') as src:
+ if dstfile is not None:
+ try:
+ dst = io.open(dstfile, 'w', encoding='utf-8')
+ except IOError:
+ sys.stderr.write('Unable to open output file \'%s\'\n' % dstfile)
+ sys.exit(3)
+ else:
+ dst = sys.stdout
+ write_output(u'char const *const %s[] = {\n' % varname)
+ for line in src:
+ if line[-1] == u'\n':
+ line = line[:-1]
+ write_output(u'\t\t"')
+ i = 0
+ while i < len(line):
+ for j in range(i, len(line) + 1):
+ if j < len(line):
+ ch = line[j]
+ if (ch < u' ') or (ch > u'~') or (ch in u'\"\\'):
+ break
+ if j > i:
+ write_output(line[i:j])
+ if j < len(line):
+ ch = line[j]
+ if ch == u'\a':
+ write_output(u'\\a')
+ elif ch == u'\f':
+ write_output(u'\\f')
+ elif ch == u'\t':
+ write_output(u'\\t')
+ elif ch == u'\v':
+ write_output(u'\\v')
+ elif ch in u'\"\\':
+ write_output(u'\\' + ch)
+ else:
+ ch = ord(ch)
+ if ch < 0x20:
+ write_output(u'\\{0:03o}'.format(ch))
+ elif ch < 0x10000:
+ write_output(u'\\u{0:04X}'.format(ch))
+ else:
+ write_output(u'\\U{0:08X}'.format(ch))
+ i = j + 1
+ write_output(u'",\n')
+ write_output(u'\t\tnullptr };\n')
+ except IOError:
+ sys.stderr.write('Error reading input file \'%s\'\n' % srcfile)
+ if (dstfile is not None) and (dst is not None):
+ dst.close()
+ os.remove(dstfile)
+ sys.exit(2)
diff --git a/docs/release/scripts/build/file2str.py b/docs/release/scripts/build/file2str.py
new file mode 100644
index 00000000000..7417f338328
--- /dev/null
+++ b/docs/release/scripts/build/file2str.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Aaron Giles, Andrew Gardner
+
+from __future__ import with_statement
+
+import sys
+import os
+
+if len(sys.argv) < 4:
+ print('Usage:')
+ print(' file2str <source.lay> <output.h> <varname> [<type>]')
+ print('')
+ print('The default <type> is char, with an assumed NULL terminator')
+ sys.exit(0)
+
+terminate = 1
+srcfile = sys.argv[1]
+dstfile = sys.argv[2]
+varname = sys.argv[3]
+
+if len(sys.argv) >= 5:
+ type = sys.argv[4]
+ terminate = 0
+else:
+ type = 'char'
+
+try:
+ myfile = open(srcfile, 'rb')
+except IOError:
+ sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
+ sys.exit(-1)
+
+byteCount = os.path.getsize(srcfile)
+try:
+ dst = open(dstfile,'w')
+ dst.write('extern const %s %s[];\n' % ( type, varname ))
+ dst.write('const %s %s[] =\n{\n\t' % ( type, varname))
+ offs = 0
+ with open(srcfile, "rb") as src:
+ while True:
+ chunk = src.read(16)
+ if chunk:
+ for b in chunk:
+ # For Python 2.x compatibility.
+ if isinstance(b, str):
+ b = ord(b)
+ dst.write('0x%02x' % b)
+ offs += 1
+ if offs != byteCount:
+ dst.write(',')
+ else:
+ break
+ if offs != byteCount:
+ dst.write('\n\t')
+ if terminate == 1:
+ dst.write(',0x00')
+ dst.write('\n};\n')
+ dst.close()
+except IOError:
+ sys.stderr.write("Unable to open output file '%s'\n" % dstfile)
+ sys.exit(-1)
diff --git a/docs/release/scripts/build/makedep.py b/docs/release/scripts/build/makedep.py
new file mode 100644
index 00000000000..6867a6cb34a
--- /dev/null
+++ b/docs/release/scripts/build/makedep.py
@@ -0,0 +1,764 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import argparse
+import io
+import os.path
+import sys
+
+
+class ParserBase(object):
+ def process_lines(self, f):
+ self.input_line = 1
+ for line in f:
+ pos = 0
+ start = 0
+ if line.endswith('\n'):
+ line = line[:-1]
+ used = 0
+ while used is not None:
+ start += used
+ used = self.processors[self.parse_state](line[start:])
+ self.input_line += 1
+
+
+class CppParser(ParserBase):
+ TOKEN_LEAD = frozenset(
+ [chr(x) for x in range(ord('A'), ord('Z') + 1)] +
+ [chr(x) for x in range(ord('a'), ord('z') + 1)] +
+ ['_'])
+ TOKEN_CONTINUATION = frozenset(
+ [chr(x) for x in range(ord('0'), ord('9') + 1)] +
+ [chr(x) for x in range(ord('A'), ord('Z') + 1)] +
+ [chr(x) for x in range(ord('a'), ord('z') + 1)] +
+ ['_'])
+ HEXADECIMAL_DIGIT = frozenset(
+ [chr(x) for x in range(ord('0'), ord('9') + 1)] +
+ [chr(x) for x in range(ord('A'), ord('F') + 1)] +
+ [chr(x) for x in range(ord('a'), ord('f') + 1)])
+
+ class Handler(object):
+ def line(self, text):
+ pass
+
+ def comment(self, text):
+ pass
+
+ def line_comment(self, text):
+ pass
+
+ class ParseState(object):
+ DEFAULT = 0
+ COMMENT = 1
+ LINE_COMMENT = 2
+ TOKEN = 3
+ STRING_CONSTANT = 4
+ CHARACTER_CONSTANT = 5
+ NUMERIC_CONSTANT = 6
+
+ def __init__(self, handler, **kwargs):
+ super(CppParser, self).__init__(**kwargs)
+ self.handler = handler
+ self.processors = {
+ self.ParseState.DEFAULT: self.process_default,
+ self.ParseState.COMMENT: self.process_comment,
+ self.ParseState.LINE_COMMENT: self.process_line_comment,
+ self.ParseState.TOKEN: self.process_token,
+ self.ParseState.STRING_CONSTANT: self.process_text,
+ self.ParseState.CHARACTER_CONSTANT: self.process_text,
+ self.ParseState.NUMERIC_CONSTANT: self.process_numeric }
+
+ def parse(self, f):
+ self.parse_state = self.ParseState.DEFAULT
+ self.comment_line = None
+ self.lead_digit = None
+ self.radix = None
+ self.line_buffer = ''
+ self.comment_buffer = ''
+ self.process_lines(f)
+ if self.parse_state == self.ParseState.COMMENT:
+ raise Exception('unterminated multi-line comment beginning on line %d' % (self.comment_line, ))
+ elif self.parse_state == self.ParseState.CHARACTER_CONSTANT:
+ raise Exception('unterminated character literal on line %d' % (self.input_line, ))
+ elif self.parse_state == self.ParseState.STRING_CONSTANT:
+ raise Exception('unterminated string literal on line %d' % (self.input_line, ))
+
+ def process_default(self, line):
+ escape = False
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if (ch == '"') or (ch == "'"):
+ self.parse_state = self.ParseState.STRING_CONSTANT if ch == '"' else self.ParseState.CHARACTER_CONSTANT
+ self.line_buffer += line[:pos + 1]
+ return pos + 1
+ elif ch == '*':
+ if escape:
+ self.parse_state = self.ParseState.COMMENT
+ self.comment_line = self.input_line
+ self.line_buffer += line[:pos - 1] + ' '
+ return pos + 1
+ elif ch == '/':
+ if escape:
+ self.parse_state = self.ParseState.LINE_COMMENT
+ self.handler.line(self.line_buffer + line[:pos - 1] + ' ')
+ self.line_buffer = ''
+ return pos + 1
+ elif ch in self.TOKEN_LEAD:
+ self.parse_state = self.ParseState.TOKEN
+ self.line_buffer += line[:pos]
+ return pos
+ elif (ch >= '0') and (ch <= '9'):
+ self.parse_state = self.ParseState.NUMERIC_CONSTANT
+ self.line_buffer += line[:pos]
+ return pos
+ escape = ch == '/'
+ pos += 1
+ if line.endswith('\\'):
+ self.line_buffer += line[:-1]
+ else:
+ self.handler.line(self.line_buffer + line)
+ self.line_buffer = ''
+
+ def process_comment(self, line):
+ escape = False
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if escape and (ch == '/'):
+ self.parse_state = self.ParseState.DEFAULT
+ self.comment_line = None
+ self.handler.comment(self.comment_buffer + line[:pos - 1])
+ self.comment_buffer = ''
+ return pos + 1
+ escape = ch == '*'
+ pos += 1
+ if line.endswith('\\'):
+ self.comment_buffer += line[:-1]
+ else:
+ self.comment_buffer += line + '\n'
+
+ def process_line_comment(self, line):
+ self.parse_state = self.ParseState.DEFAULT
+ self.handler.line_comment(self.comment_buffer + line)
+ self.comment_buffer = ''
+
+ def process_token(self, line):
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if ch not in self.TOKEN_CONTINUATION:
+ self.parse_state = self.ParseState.DEFAULT
+ self.line_buffer += line[:pos]
+ return pos
+ pos += 1
+ self.parse_state = self.ParseState.DEFAULT
+ self.handler.line(self.line_buffer + line)
+ self.line_buffer = ''
+
+ def process_text(self, line):
+ quote = '"' if self.parse_state == self.ParseState.STRING_CONSTANT else "'"
+ escape = False
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if (ch == quote) and not escape:
+ self.parse_state = self.ParseState.DEFAULT
+ self.line_buffer += line[:pos + 1]
+ return pos + 1
+ escape = (ch == '\\') and not escape
+ pos += 1
+ if line.endswith('\\'):
+ self.line_buffer += line[:-1]
+ else:
+ t = 'string' if self.ParseState == self.ParseState.STRING_CONSTANT else 'character'
+ raise Exception('unterminated %s literal on line %d' % (t, self.input_line))
+
+ def process_numeric(self, line):
+ escape = False
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if self.lead_digit is None:
+ self.lead_digit = ch
+ if ch != '0':
+ self.radix = 10
+ elif self.radix is None:
+ if ch == "'":
+ if escape:
+ raise Exception('adjacent digit separators on line %d' % (self.input_line, ))
+ else:
+ escape = True
+ elif (ch == 'B') or (ch == 'b'):
+ self.radix = 2
+ elif (ch == 'X') or (ch == 'x'):
+ self.radix = 16
+ elif (ch >= '0') and (ch <= '7'):
+ self.radix = 8
+ else:
+ self.parse_state = self.ParseState.DEFAULT # probably an argument to a token-pasting or stringifying macro
+ else:
+ if ch == "'":
+ if escape:
+ raise Exception('adjacent digit separators on line %d' % (self.input_line, ))
+ else:
+ escape = True
+ else:
+ escape = False
+ if self.radix == 2:
+ if (ch < '0') or (ch > '1'):
+ self.parse_state = self.ParseState.DEFAULT
+ elif self.radix == 8:
+ if (ch < '0') or (ch > '7'):
+ self.parse_state = self.ParseState.DEFAULT
+ elif self.radix == 10:
+ if (ch < '0') or (ch > '9'):
+ self.parse_state = self.ParseState.DEFAULT
+ elif self.radix == 16:
+ if ch not in self.HEXADECIMAL_DIGIT:
+ self.parse_state = self.ParseState.DEFAULT
+ if self.parse_state == self.ParseState.DEFAULT:
+ self.lead_digit = None
+ self.radix = None
+ self.line_buffer += line[:pos]
+ return pos
+ pos += 1
+ self.parse_state = self.ParseState.DEFAULT
+ self.lead_digit = None
+ self.radix = None
+ self.handler.line(self.line_buffer + line)
+ self.line_buffer = ''
+
+
+class LuaParser(ParserBase):
+ class Handler(object):
+ def short_comment(self, text):
+ pass
+
+ def long_comment_start(self, level):
+ pass
+
+ def long_comment_line(self, text):
+ pass
+
+ def long_comment_end(self):
+ pass
+
+ class ParseState(object):
+ DEFAULT = 0
+ SHORT_COMMENT = 1
+ LONG_COMMENT = 2
+ STRING_CONSTANT = 3
+ LONG_STRING_CONSTANT = 4
+
+ def __init__(self, handler, **kwargs):
+ super(LuaParser, self).__init__(**kwargs)
+ self.handler = handler
+ self.processors = {
+ self.ParseState.DEFAULT: self.process_default,
+ self.ParseState.SHORT_COMMENT: self.process_short_comment,
+ self.ParseState.LONG_COMMENT: self.process_long_comment,
+ self.ParseState.STRING_CONSTANT: self.process_string_constant,
+ self.ParseState.LONG_STRING_CONSTANT: self.process_long_string_constant }
+
+ def parse(self, f):
+ self.parse_state = self.ParseState.DEFAULT
+ self.long_bracket_level = None
+ self.escape = False
+ self.block_line = None
+ self.block_level = None
+ self.string_quote = None
+ self.process_lines(f)
+ if self.parse_state == self.ParseState.LONG_COMMENT:
+ raise Exception('unterminated long comment beginning on line %d' % (self.block_line, ));
+ elif self.parse_state == self.ParseState.STRING_CONSTANT:
+ raise Exception('unterminated string literal on line %d' % (self.input_line, ));
+ elif self.parse_state == self.ParseState.LONG_STRING_CONSTANT:
+ raise Exception('unterminated long string literal beginning on line %d' % (self.block_line, ));
+
+ def process_default(self, line):
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if (ch == '"') or (ch == "'"):
+ self.string_quote = ch
+ self.parse_state = self.ParseState.STRING_CONSTANT
+ self.long_bracket_level = None
+ self.escape = False
+ return pos + 1;
+ elif (ch == '-') and self.escape:
+ self.parse_state = self.ParseState.SHORT_COMMENT
+ self.long_bracket_level = None
+ self.escape = False
+ return pos + 1
+ elif self.long_bracket_level is not None:
+ if ch == '=':
+ self.long_bracket_level += 1
+ elif ch == '[':
+ self.block_line = self.input_line
+ self.block_level = self.long_bracket_level
+ self.parse_state = self.ParseState.LONG_STRING_CONSTANT
+ self.long_bracket_level = None
+ self.escape = False
+ return pos + 1
+ else:
+ self.long_bracket_level = None
+ elif ch == '[':
+ self.long_bracket_level = 0
+ self.escape = ch == '-'
+ pos += 1
+ self.escape = False
+
+ def process_short_comment(self, line):
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if self.long_bracket_level is not None:
+ if ch == '=':
+ self.long_bracket_level += 1
+ elif ch == '[':
+ self.block_line = self.input_line
+ self.block_level = self.long_bracket_level
+ self.parse_state = self.ParseState.LONG_COMMENT
+ self.long_bracket_level = None
+ self.handler.long_comment_start(self.block_level)
+ return pos + 1
+ else:
+ self.long_bracket_level = None
+ elif ch == '[':
+ self.long_bracket_level = 0
+ if self.long_bracket_level is None:
+ self.handler.short_comment(line[pos:])
+ self.parse_state = self.ParseState.DEFAULT
+ return None
+ pos += 1
+ self.handler.short_comment(line)
+ self.parse_state = self.ParseState.DEFAULT
+
+ def process_long_comment(self, line):
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if self.long_bracket_level is not None:
+ if ch == '=':
+ self.long_bracket_level += 1
+ elif ch == ']':
+ if self.long_bracket_level == self.block_level:
+ if self.parse_state == self.ParseState.LONG_COMMENT:
+ self.handler.long_comment_line(line[:endpos])
+ self.handler.long_comment_end()
+ self.parse_state = self.ParseState.DEFAULT
+ return pos + 1
+ else:
+ self.long_bracket_level = 0
+ else:
+ self.long_bracket_level = None
+ elif ch == ']':
+ endpos = pos
+ self.long_bracket_level = 0
+ pos += 1
+ self.long_bracket_level = None
+ self.handler.long_comment_line(line)
+
+ def process_string_constant(self, line):
+ pos = 0
+ length = len(line)
+ while pos < length:
+ ch = line[pos]
+ if (ch == self.string_quote) and not self.escape:
+ self.parse_state = self.ParseState.DEFAULT
+ return pos + 1
+ self.escape = (ch == '\\') and not self.escape
+ pos += 1
+ if not self.escape:
+ raise Exception('unterminated string literal on line %d' % (self.input_line, ));
+
+ def process_long_string_constant(self, line):
+ self.process_long_comment(line) # this works because they're both closed by a matching long bracket
+
+
+class DriverFilter(object):
+ DRIVER_CHARS = frozenset(
+ [chr(x) for x in range(ord('0'), ord('9') + 1)] +
+ [chr(x) for x in range(ord('a'), ord('z') + 1)] +
+ ['_'])
+
+ def __init__(self, options, **kwargs):
+ super(DriverFilter, self).__init__(**kwargs)
+ self.parse_filter(options.filter)
+ self.parse_list(options.list)
+
+ def write_source(self, f):
+ f.write(
+ '#include "emu.h"\n' \
+ '\n' \
+ '#include "drivenum.h"\n' \
+ '\n')
+ for driver in self.drivers:
+ f.write('GAME_EXTERN(%s);\n' % driver)
+ f.write(
+ '\n' \
+ 'game_driver const *const driver_list::s_drivers_sorted[%d] =\n' \
+ '{\n' % (len(self.drivers), ))
+ for driver in self.drivers:
+ f.write('\t&GAME_NAME(%s),\n' % driver)
+ f.write(
+ '};\n' \
+ '\n' \
+ 'std::size_t const driver_list::s_driver_count = %d;\n' % (len(self.drivers), ))
+
+ def parse_filter(self, path):
+ def do_parse(p):
+ def line_hook(text):
+ text = text.strip()
+ if text.startswith('#'):
+ do_parse(os.path.join(os.path.dirname(n), text[1:].lstrip()))
+ elif text.startswith('+'):
+ text = text[1:].lstrip()
+ if not text:
+ sys.stderr.write('%s:%s: Empty driver name\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ elif not all(x in self.DRIVER_CHARS for x in text):
+ sys.stderr.write('%s:%s: Invalid character in driver name "%s"\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ includes.add(text)
+ excludes.discard(text)
+ elif text.startswith('-'):
+ text = text[1:].lstrip()
+ if not text:
+ sys.stderr.write('%s:%s: Empty driver name\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ elif not all(x in self.DRIVER_CHARS for x in text):
+ sys.stderr.write('%s:%s: Invalid character in driver name "%s"\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ includes.discard(text)
+ excludes.add(text)
+ elif text:
+ sources.add(text)
+
+ n = os.path.normpath(p)
+ if n not in filters:
+ filters.add(n)
+ try:
+ f = io.open(n, 'r', encoding='utf-8')
+ except IOError:
+ sys.stderr.write('Unable to open filter file "%s"\n' % (p, ))
+ sys.exit(1)
+ with f:
+ handler = CppParser.Handler()
+ handler.line = line_hook
+ parser = CppParser(handler)
+ try:
+ parser.parse(f)
+ except IOError:
+ sys.stderr.write('Error reading filter file "%s"\n' % (p, ))
+ sys.exit(1)
+ except Exception as e:
+ sys.stderr.write('Error parsing filter file "%s": %s\n' % (p, e))
+ sys.exit(1)
+
+ sources = set()
+ includes = set()
+ excludes = set()
+ filters = set()
+ if path is not None:
+ do_parse(path)
+ sys.stderr.write('%d source file(s) found\n' % (len(sources), ))
+ self.sources = frozenset(sources)
+ self.includes = frozenset(includes)
+ self.excludes = frozenset(excludes)
+
+ def parse_list(self, path):
+ def do_parse(p):
+ def line_hook(text):
+ text = text.strip()
+ if text.startswith('#'):
+ do_parse(os.path.join(os.path.dirname(n), text[1:].lstrip()))
+ elif text.startswith('@'):
+ parts = text[1:].lstrip().split(':', 1)
+ parts[0] = parts[0].strip()
+ if (parts[0] == 'source') and (len(parts) == 2):
+ parts[1] = parts[1].strip()
+ if not parts[1]:
+ sys.stderr.write('%s:%s: Empty source file name "%s"\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ elif self.sources:
+ state['includesrc'] = parts[1] in self.sources
+ else:
+ sys.stderr.write('%s:%s: Unsupported directive "%s"\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ elif text:
+ if not all(x in self.DRIVER_CHARS for x in text):
+ sys.stderr.write('%s:%s: Invalid character in driver name "%s"\n' % (p, parser.input_line, text))
+ sys.exit(1)
+ elif state['includesrc'] and (text not in self.excludes):
+ drivers.add(text)
+
+ n = os.path.normpath(p)
+ if n not in lists:
+ lists.add(n)
+ try:
+ f = io.open(n, 'r', encoding='utf-8')
+ except IOError:
+ sys.stderr.write('Unable to open list file "%s"\n' % (p, ))
+ sys.exit(1)
+ with f:
+ handler = CppParser.Handler()
+ handler.line = line_hook
+ parser = CppParser(handler)
+ try:
+ parser.parse(f)
+ except IOError:
+ sys.stderr.write('Error reading list file "%s"\n' % (p, ))
+ sys.exit(1)
+ except Exception as e:
+ sys.stderr.write('Error parsing list file "%s": %s\n' % (p, e))
+ sys.exit(1)
+
+ lists = set()
+ drivers = set()
+ state = object()
+ state = { 'includesrc': True }
+ do_parse(path)
+ for driver in self.includes:
+ drivers.add(driver)
+ sys.stderr.write('%d driver(s) found\n' % (len(drivers), ))
+ drivers.add('___empty')
+ self.drivers = sorted(drivers)
+
+
+def split_path(path):
+ path = os.path.normpath(path)
+ result = [ ]
+ while True:
+ dirname, basename = os.path.split(path)
+ if dirname == path:
+ result.insert(0, dirname)
+ return result
+ elif basename == path:
+ result.insert(0, basename)
+ return result
+ else:
+ result.insert(0, basename)
+ path = dirname
+
+
+def parse_command_line():
+ parser = argparse.ArgumentParser()
+ subparsers = parser.add_subparsers(title='commands', dest='command', metavar='<command>')
+
+ subparser = subparsers.add_parser('sourcesproject', help='generate project directives for source files')
+ subparser.add_argument('-r', '--root', metavar='<srcroot>', default='.', help='path to emulator source root (defaults to working directory)')
+ subparser.add_argument('-t', '--target', metavar='<target>', required=True, help='generated emulator target name')
+ subparser.add_argument('sources', metavar='<srcfile>', nargs='+', help='source files to include')
+
+ subparser = subparsers.add_parser('sourcesfilter', help='generate driver filter for source files')
+ subparser.add_argument('sources', metavar='<srcfile>', nargs='+', help='source files to include')
+
+ subparser = subparsers.add_parser('driverlist', help='generate driver list source')
+ subparser.add_argument('-f', '--filter', metavar='<fltfile>', help='input filter file')
+ subparser.add_argument('list', metavar='<lstfile>', help='input list file')
+
+ return parser.parse_args()
+
+
+def collect_lua_directives(options):
+ def short_comment_hook(text):
+ if text.startswith('@'):
+ name, action = text[1:].rstrip().rsplit(',', 1)
+ if name not in result:
+ result[name] = [ ]
+ result[name].append(action)
+
+ base = os.path.join(options.root, 'scripts', 'src')
+ result = { }
+ handler = LuaParser.Handler()
+ handler.short_comment = short_comment_hook
+ parser = LuaParser(handler)
+ for name in ('bus', 'cpu', 'machine', 'sound', 'video', 'formats'):
+ path = os.path.join(base, name + '.lua')
+ try:
+ f = io.open(path, 'r', encoding='utf-8')
+ except IOError:
+ sys.stderr.write('Unable to open source file "%s"\n' % (path, ))
+ sys.exit(1)
+ try:
+ with f:
+ parser.parse(f)
+ except IOError:
+ sys.stderr.write('Error reading source file "%s"\n' % (path, ))
+ sys.exit(1)
+ except Exception as e:
+ sys.stderr.write('Error parsing source file "%s": %s\n' % (path, e))
+ sys.exit(1)
+ return result
+
+
+def scan_source_dependencies(options):
+ def locate_include(path):
+ split = [ ]
+ forward = 0
+ reverse = 0
+ for part in path.split('/'):
+ if part and (part != '.'):
+ if part != '..':
+ forward += 1
+ split.append(part)
+ elif forward:
+ split.pop()
+ forward -= 1
+ else:
+ split.append(part)
+ reverse += 1
+ split = tuple(split)
+ for incdir, depth in roots:
+ if (not depth) or (not reverse):
+ components = incdir + split
+ depth = depth + forward - 1
+ elif depth >= reverse:
+ components = incdir[:-reverse] + split[reverse:]
+ depth = depth + forward - reverse - 1
+ else:
+ components = incdir[:-depth] + split[depth:]
+ depth = forward - 1
+ if os.path.isfile(os.path.join(options.root, *components)):
+ return components, depth
+ return None, 0
+
+ def test_siblings(relative, basename, depth):
+ pathbase = '/'.join(relative) + '/'
+ dirname = os.path.join(options.root, *relative)
+ for ext in ('.cpp', '.ipp', '.hxx'):
+ path = pathbase + basename + ext
+ if (path not in seen) and os.path.isfile(os.path.join(dirname, basename + ext)):
+ remaining.append((path, depth))
+ seen.add(path)
+
+ def line_hook(text):
+ text = text.lstrip()
+ if text.startswith('#'):
+ text = text[1:].lstrip()
+ if text.startswith('include'):
+ text = text[7:]
+ if text[:1].isspace():
+ text = text.strip()
+ if (len(text) > 2) and (text[0] == '"') and (text[-1] == '"'):
+ components, depth = locate_include(text[1:-1])
+ if components:
+ path = '/'.join(components)
+ if path not in seen:
+ remaining.append((path, depth))
+ seen.add(path)
+ base, ext = os.path.splitext(components[-1])
+ if ext.lower().startswith('.h'):
+ components = components[:-1]
+ test_siblings(components, base, depth)
+ if components == ('src', 'mame', 'includes'):
+ for aspect in ('audio', 'drivers', 'video', 'machine'):
+ test_siblings(('src', 'mame', aspect), base, depth)
+
+ handler = CppParser.Handler()
+ handler.line = line_hook
+ parser = CppParser(handler)
+ seen = set('/'.join(x for x in split_path(source) if x) for source in options.sources)
+ remaining = list([(x, 0) for x in seen])
+ default_roots = ((('src', 'devices'), 0), (('src', 'mame'), 0), (('src', 'lib'), 0))
+ while remaining:
+ source, depth = remaining.pop()
+ components = tuple(source.split('/'))
+ roots = ((components[:-1], depth), ) + default_roots
+ try:
+ f = io.open(os.path.join(options.root, *components), 'r', encoding='utf-8')
+ except IOError:
+ sys.stderr.write('Unable to open source file "%s"\n' % (source, ))
+ sys.exit(1)
+ try:
+ with f:
+ parser.parse(f)
+ except IOError:
+ sys.stderr.write('Error reading source file "%s"\n' % (source, ))
+ sys.exit(1)
+ except Exception as e:
+ sys.stderr.write('Error parsing source file "%s": %s\n' % (source, e))
+ sys.exit(1)
+ return seen
+
+
+def write_project(options, f, mappings, sources):
+ targetsrc = ''
+ for source in sorted(sources):
+ action = mappings.get(source)
+ if action:
+ for line in action:
+ f.write(line + '\n')
+ if source.startswith('src/mame/'):
+ targetsrc += ' MAME_DIR .. "%s",\n' % (source, )
+ f.write(
+ '\n' \
+ 'function createProjects_mame_%s(_target, _subtarget)\n' \
+ ' project ("mame_%s")\n' \
+ ' targetsubdir(_target .."_" .. _subtarget)\n' \
+ ' kind (LIBTYPE)\n' \
+ ' uuid (os.uuid("drv-mame-%s"))\n' \
+ ' addprojectflags()\n' \
+ ' \n' \
+ ' includedirs {\n' \
+ ' MAME_DIR .. "src/osd",\n' \
+ ' MAME_DIR .. "src/emu",\n' \
+ ' MAME_DIR .. "src/devices",\n' \
+ ' MAME_DIR .. "src/mame",\n' \
+ ' MAME_DIR .. "src/lib",\n' \
+ ' MAME_DIR .. "src/lib/util",\n' \
+ ' MAME_DIR .. "src/lib/netlist",\n' \
+ ' MAME_DIR .. "3rdparty",\n' \
+ ' GEN_DIR .. "mame/layout",\n' \
+ ' ext_includedir("flac"),\n' \
+ ' ext_includedir("glm"),\n' \
+ ' ext_includedir("jpeg"),\n' \
+ ' ext_includedir("rapidjson"),\n' \
+ ' ext_includedir("zlib"),\n' \
+ ' }\n' \
+ '\n' \
+ ' files{\n%s' \
+ ' }\n' \
+ 'end\n' \
+ '\n' \
+ 'function linkProjects_mame_%s(_target, _subtarget)\n' \
+ ' links {\n' \
+ ' "mame_%s",\n' \
+ ' }\n' \
+ 'end\n' % (options.target, options.target, options.target, targetsrc, options.target, options.target))
+
+
+def write_filter(options, f):
+ drivers = set()
+ for source in options.sources:
+ components = tuple(x for x in split_path(source) if x)
+ if (len(components) > 3) and (components[:3] == ('src', 'mame', 'drivers')):
+ ext = os.path.splitext(components[-1])[1].lower()
+ if ext.startswith('.c'):
+ drivers.add('/'.join(components[3:]))
+ for driver in sorted(drivers):
+ f.write(driver + '\n')
+
+
+if __name__ == '__main__':
+ options = parse_command_line()
+ if options.command == 'sourcesproject':
+ header_to_optional = collect_lua_directives(options)
+ source_dependencies = scan_source_dependencies(options)
+ write_project(options, sys.stdout, header_to_optional, source_dependencies)
+ elif options.command == 'sourcesfilter':
+ write_filter(options, sys.stdout)
+ elif options.command == 'driverlist':
+ DriverFilter(options).write_source(sys.stdout)
diff --git a/docs/release/scripts/build/makelist.py b/docs/release/scripts/build/makelist.py
new file mode 100644
index 00000000000..1a27a515e04
--- /dev/null
+++ b/docs/release/scripts/build/makelist.py
@@ -0,0 +1,167 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Aaron Giles, Andrew Gardner
+
+from __future__ import with_statement
+
+import sys
+
+drivlist = []
+sourcelist = []
+filter_addlist = []
+filter_removelist = []
+
+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
+ curr_source = ''
+ 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 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:
+ 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 sourcename[0]=='+':
+ filter_addlist.append(sourcename[1:])
+ continue
+ if sourcename[0]=='-':
+ filter_removelist.append(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 or len(sys.argv) > 3:
+ print('Usage:')
+ 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)
+
+# output a count
+if len(drivlist)==0 :
+ sys.stderr.write("No drivers found\n")
+ sys.exit(1)
+
+for x in filter_addlist:
+ drivlist.append(x)
+
+drivlist = [x for x in drivlist if (x not in filter_removelist)]
+
+sys.stderr.write("%d driver(s) 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("std::size_t const driver_list::s_driver_count = %d;\n" % len(drivlist))
diff --git a/docs/release/scripts/build/msgfmt.py b/docs/release/scripts/build/msgfmt.py
new file mode 100644
index 00000000000..3f731e941ea
--- /dev/null
+++ b/docs/release/scripts/build/msgfmt.py
@@ -0,0 +1,246 @@
+#! /usr/bin/env python3
+# Written by Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+"""Generate binary message catalog from textual translation description.
+
+This program converts a textual Uniforum-style message catalog (.po file) into
+a binary GNU catalog (.mo file). This is essentially the same function as the
+GNU msgfmt program, however, it is a simpler implementation. Currently it
+does not handle plural forms but it does handle message contexts.
+
+Usage: msgfmt.py [OPTIONS] filename.po
+
+Options:
+ -o file
+ --output-file=file
+ Specify the output file to write to. If omitted, output will go to a
+ file named filename.mo (based off the input file name).
+
+ -h
+ --help
+ Print this message and exit.
+
+ -V
+ --version
+ Display version information and exit.
+"""
+
+import os
+import sys
+import ast
+import getopt
+import struct
+import array
+from email.parser import HeaderParser
+
+__version__ = "1.2"
+
+MESSAGES = {}
+
+
+def usage(code, msg=''):
+ print(__doc__, file=sys.stderr)
+ if msg:
+ print(msg, file=sys.stderr)
+ sys.exit(code)
+
+
+def add(ctxt, id, str, fuzzy):
+ "Add a non-fuzzy translation to the dictionary."
+ global MESSAGES
+ if not fuzzy and str:
+ if ctxt is None:
+ MESSAGES[id] = str
+ else:
+ MESSAGES[b"%b\x04%b" % (ctxt, id)] = str
+
+
+def generate():
+ "Return the generated output."
+ global MESSAGES
+ # the keys are sorted in the .mo file
+ keys = sorted(MESSAGES.keys())
+ offsets = []
+ ids = strs = b''
+ for id in keys:
+ # For each string, we need size and file offset. Each string is NUL
+ # terminated; the NUL does not count into the size.
+ offsets.append((len(ids), len(id), len(strs), len(MESSAGES[id])))
+ ids += id + b'\0'
+ strs += MESSAGES[id] + b'\0'
+ output = ''
+ # The header is 7 32-bit unsigned integers. We don't use hash tables, so
+ # the keys start right after the index tables.
+ # translated string.
+ keystart = 7*4+16*len(keys)
+ # and the values start after the keys
+ valuestart = keystart + len(ids)
+ koffsets = []
+ voffsets = []
+ # The string table first has the list of keys, then the list of values.
+ # Each entry has first the size of the string, then the file offset.
+ for o1, l1, o2, l2 in offsets:
+ koffsets += [l1, o1+keystart]
+ voffsets += [l2, o2+valuestart]
+ offsets = koffsets + voffsets
+ output = struct.pack("Iiiiiii",
+ 0x950412de, # Magic
+ 0, # Version
+ len(keys), # # of entries
+ 7*4, # start of key index
+ 7*4+len(keys)*8, # start of value index
+ 0, 0) # size and offset of hash table
+ output += array.array("i", offsets).tobytes()
+ output += ids
+ output += strs
+ return output
+
+
+def make(filename, outfile):
+ ID = 1
+ STR = 2
+ CTXT = 3
+
+ # Compute .mo name from .po name and arguments
+ if filename.endswith('.po'):
+ infile = filename
+ else:
+ infile = filename + '.po'
+ if outfile is None:
+ outfile = os.path.splitext(infile)[0] + '.mo'
+
+ try:
+ with open(infile, 'rb') as f:
+ lines = f.readlines()
+ except IOError as msg:
+ print(msg, file=sys.stderr)
+ sys.exit(1)
+
+ section = msgctxt = None
+ fuzzy = 0
+
+ # Start off assuming Latin-1, so everything decodes without failure,
+ # until we know the exact encoding
+ encoding = 'latin-1'
+
+ # Parse the catalog
+ lno = 0
+ for l in lines:
+ l = l.decode(encoding)
+ lno += 1
+ # If we get a comment line after a msgstr, this is a new entry
+ if l[0] == '#' and section == STR:
+ add(msgctxt, msgid, msgstr, fuzzy)
+ section = msgctxt = None
+ fuzzy = 0
+ # Record a fuzzy mark
+ if l[:2] == '#,' and 'fuzzy' in l:
+ fuzzy = 1
+ # Skip comments
+ if l[0] == '#':
+ continue
+ # Now we are in a msgid or msgctxt section, output previous section
+ if l.startswith('msgctxt'):
+ if section == STR:
+ add(msgctxt, msgid, msgstr, fuzzy)
+ section = CTXT
+ l = l[7:]
+ msgctxt = b''
+ elif l.startswith('msgid') and not l.startswith('msgid_plural'):
+ if section == STR:
+ add(msgctxt, msgid, msgstr, fuzzy)
+ if not msgid:
+ # See whether there is an encoding declaration
+ p = HeaderParser()
+ charset = p.parsestr(msgstr.decode(encoding)).get_content_charset()
+ if charset:
+ encoding = charset
+ section = ID
+ l = l[5:]
+ msgid = msgstr = b''
+ is_plural = False
+ # This is a message with plural forms
+ elif l.startswith('msgid_plural'):
+ if section != ID:
+ print('msgid_plural not preceded by msgid on %s:%d' % (infile, lno),
+ file=sys.stderr)
+ sys.exit(1)
+ l = l[12:]
+ msgid += b'\0' # separator of singular and plural
+ is_plural = True
+ # Now we are in a msgstr section
+ elif l.startswith('msgstr'):
+ section = STR
+ if l.startswith('msgstr['):
+ if not is_plural:
+ print('plural without msgid_plural on %s:%d' % (infile, lno),
+ file=sys.stderr)
+ sys.exit(1)
+ l = l.split(']', 1)[1]
+ if msgstr:
+ msgstr += b'\0' # Separator of the various plural forms
+ else:
+ if is_plural:
+ print('indexed msgstr required for plural on %s:%d' % (infile, lno),
+ file=sys.stderr)
+ sys.exit(1)
+ l = l[6:]
+ # Skip empty lines
+ l = l.strip()
+ if not l:
+ continue
+ l = ast.literal_eval(l)
+ if section == CTXT:
+ msgctxt += l.encode(encoding)
+ elif section == ID:
+ msgid += l.encode(encoding)
+ elif section == STR:
+ msgstr += l.encode(encoding)
+ else:
+ print('Syntax error on %s:%d' % (infile, lno), \
+ 'before:', file=sys.stderr)
+ print(l, file=sys.stderr)
+ sys.exit(1)
+ # Add last entry
+ if section == STR:
+ add(msgctxt, msgid, msgstr, fuzzy)
+
+ # Compute output
+ output = generate()
+
+ try:
+ with open(outfile,"wb") as f:
+ f.write(output)
+ except IOError as msg:
+ print(msg, file=sys.stderr)
+
+
+def main():
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], 'hVo:',
+ ['help', 'version', 'output-file='])
+ except getopt.error as msg:
+ usage(1, msg)
+
+ outfile = None
+ # parse options
+ for opt, arg in opts:
+ if opt in ('-h', '--help'):
+ usage(0)
+ elif opt in ('-V', '--version'):
+ print("msgfmt.py", __version__)
+ sys.exit(0)
+ elif opt in ('-o', '--output-file'):
+ outfile = arg
+ # do it
+ if not args:
+ print('No input file given', file=sys.stderr)
+ print("Try `msgfmt --help' for more information.", file=sys.stderr)
+ return
+
+ for filename in args:
+ make(filename, outfile)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/docs/release/scripts/build/png.py b/docs/release/scripts/build/png.py
new file mode 100644
index 00000000000..76798443669
--- /dev/null
+++ b/docs/release/scripts/build/png.py
@@ -0,0 +1,2782 @@
+#!/usr/bin/env python
+
+# png.py - PNG encoder/decoder in pure Python
+#
+# Copyright (C) 2006 Johann C. Rocholl <johann@browsershots.org>
+# Portions Copyright (C) 2009 David Jones <drj@pobox.com>
+# And probably portions Copyright (C) 2006 Nicko van Someren <nicko@nicko.org>
+#
+# Original concept by Johann C. Rocholl.
+#
+# LICENCE (MIT)
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+"""
+Pure Python PNG Reader/Writer
+
+This Python module implements support for PNG images (see PNG
+specification at http://www.w3.org/TR/2003/REC-PNG-20031110/ ). It reads
+and writes PNG files with all allowable bit depths
+(1/2/4/8/16/24/32/48/64 bits per pixel) and colour combinations:
+greyscale (1/2/4/8/16 bit); RGB, RGBA, LA (greyscale with alpha) with
+8/16 bits per channel; colour mapped images (1/2/4/8 bit).
+Adam7 interlacing is supported for reading and
+writing. A number of optional chunks can be specified (when writing)
+and understood (when reading): ``tRNS``, ``bKGD``, ``gAMA``.
+
+For help, type ``import png; help(png)`` in your python interpreter.
+
+A good place to start is the :class:`Reader` and :class:`Writer`
+classes.
+
+Requires Python 2.3. Limited support is available for Python 2.2, but
+not everything works. Best with Python 2.4 and higher. Installation is
+trivial, but see the ``README.txt`` file (with the source distribution)
+for details.
+
+This file can also be used as a command-line utility to convert
+`Netpbm <http://netpbm.sourceforge.net/>`_ PNM files to PNG, and the
+reverse conversion from PNG to PNM. The interface is similar to that
+of the ``pnmtopng`` program from Netpbm. Type ``python png.py --help``
+at the shell prompt for usage and a list of options.
+
+A note on spelling and terminology
+----------------------------------
+
+Generally British English spelling is used in the documentation. So
+that's "greyscale" and "colour". This not only matches the author's
+native language, it's also used by the PNG specification.
+
+The major colour models supported by PNG (and hence by PyPNG) are:
+greyscale, RGB, greyscale--alpha, RGB--alpha. These are sometimes
+referred to using the abbreviations: L, RGB, LA, RGBA. In this case
+each letter abbreviates a single channel: *L* is for Luminance or Luma
+or Lightness which is the channel used in greyscale images; *R*, *G*,
+*B* stand for Red, Green, Blue, the components of a colour image; *A*
+stands for Alpha, the opacity channel (used for transparency effects,
+but higher values are more opaque, so it makes sense to call it
+opacity).
+
+A note on formats
+-----------------
+
+When getting pixel data out of this module (reading) and presenting
+data to this module (writing) there are a number of ways the data could
+be represented as a Python value. Generally this module uses one of
+three formats called "flat row flat pixel", "boxed row flat pixel", and
+"boxed row boxed pixel". Basically the concern is whether each pixel
+and each row comes in its own little tuple (box), or not.
+
+Consider an image that is 3 pixels wide by 2 pixels high, and each pixel
+has RGB components:
+
+Boxed row flat pixel::
+
+ list([R,G,B, R,G,B, R,G,B],
+ [R,G,B, R,G,B, R,G,B])
+
+Each row appears as its own list, but the pixels are flattened so
+that three values for one pixel simply follow the three values for
+the previous pixel. This is the most common format used, because it
+provides a good compromise between space and convenience. PyPNG regards
+itself as at liberty to replace any sequence type with any sufficiently
+compatible other sequence type; in practice each row is an array (from
+the array module), and the outer list is sometimes an iterator rather
+than an explicit list (so that streaming is possible).
+
+Flat row flat pixel::
+
+ [R,G,B, R,G,B, R,G,B,
+ R,G,B, R,G,B, R,G,B]
+
+The entire image is one single giant sequence of colour values.
+Generally an array will be used (to save space), not a list.
+
+Boxed row boxed pixel::
+
+ list([ (R,G,B), (R,G,B), (R,G,B) ],
+ [ (R,G,B), (R,G,B), (R,G,B) ])
+
+Each row appears in its own list, but each pixel also appears in its own
+tuple. A serious memory burn in Python.
+
+In all cases the top row comes first, and for each row the pixels are
+ordered from left-to-right. Within a pixel the values appear in the
+order, R-G-B-A (or L-A for greyscale--alpha).
+
+There is a fourth format, mentioned because it is used internally,
+is close to what lies inside a PNG file itself, and has some support
+from the public API. This format is called packed. When packed,
+each row is a sequence of bytes (integers from 0 to 255), just as
+it is before PNG scanline filtering is applied. When the bit depth
+is 8 this is essentially the same as boxed row flat pixel; when the
+bit depth is less than 8, several pixels are packed into each byte;
+when the bit depth is 16 (the only value more than 8 that is supported
+by the PNG image format) each pixel value is decomposed into 2 bytes
+(and `packed` is a misnomer). This format is used by the
+:meth:`Writer.write_packed` method. It isn't usually a convenient
+format, but may be just right if the source data for the PNG image
+comes from something that uses a similar format (for example, 1-bit
+BMPs, or another PNG file).
+
+And now, my famous members
+--------------------------
+"""
+
+# http://www.python.org/doc/2.2.3/whatsnew/node5.html
+from __future__ import generators,print_function
+
+__version__ = "0.0.17"
+
+from array import array
+try:
+ from itertools import imap
+except ImportError:
+ imap = map
+import math
+# http://www.python.org/doc/2.4.4/lib/module-operator.html
+import operator
+import struct
+import sys
+import zlib
+# http://www.python.org/doc/2.4.4/lib/module-warnings.html
+import warnings
+try:
+ # `cpngfilters` is a Cython module: it must be compiled by
+ # Cython for this import to work.
+ # If this import does work, then it overrides pure-python
+ # filtering functions defined later in this file (see `class
+ # pngfilters`).
+ import cpngfilters as pngfilters
+except ImportError:
+ pass
+
+
+__all__ = ['Image', 'Reader', 'Writer', 'write_chunks', 'from_array']
+
+
+# The PNG signature.
+# http://www.w3.org/TR/PNG/#5PNG-file-signature
+_signature = struct.pack('8B', 137, 80, 78, 71, 13, 10, 26, 10)
+
+_adam7 = ((0, 0, 8, 8),
+ (4, 0, 8, 8),
+ (0, 4, 4, 8),
+ (2, 0, 4, 4),
+ (0, 2, 2, 4),
+ (1, 0, 2, 2),
+ (0, 1, 1, 2))
+
+def group(s, n):
+ # See http://www.python.org/doc/2.6/library/functions.html#zip
+ return zip(*[iter(s)]*n)
+
+def isarray(x):
+ """Same as ``isinstance(x, array)`` except on Python 2.2, where it
+ always returns ``False``. This helps PyPNG work on Python 2.2.
+ """
+
+ try:
+ return isinstance(x, array)
+ except TypeError:
+ # Because on Python 2.2 array.array is not a type.
+ return False
+
+try:
+ array.tobytes
+except AttributeError:
+ try: # see :pyver:old
+ array.tostring
+ except AttributeError:
+ def tostring(row):
+ l = len(row)
+ return struct.pack('%dB' % l, *row)
+ else:
+ def tostring(row):
+ """Convert row of bytes to string. Expects `row` to be an
+ ``array``.
+ """
+ return row.tostring()
+else:
+ def tostring(row):
+ """ Python3 definition, array.tostring() is deprecated in Python3
+ """
+ return row.tobytes()
+
+# Conditionally convert to bytes. Works on Python 2 and Python 3.
+try:
+ bytes('', 'ascii')
+ def strtobytes(x): return bytes(x, 'iso8859-1')
+ def bytestostr(x): return str(x, 'iso8859-1')
+except (NameError, TypeError):
+ # We get NameError when bytes() does not exist (most Python
+ # 2.x versions), and TypeError when bytes() exists but is on
+ # Python 2.x (when it is an alias for str() and takes at most
+ # one argument).
+ strtobytes = str
+ bytestostr = str
+
+def interleave_planes(ipixels, apixels, ipsize, apsize):
+ """
+ Interleave (colour) planes, e.g. RGB + A = RGBA.
+
+ Return an array of pixels consisting of the `ipsize` elements of
+ data from each pixel in `ipixels` followed by the `apsize` elements
+ of data from each pixel in `apixels`. Conventionally `ipixels`
+ and `apixels` are byte arrays so the sizes are bytes, but it
+ actually works with any arrays of the same type. The returned
+ array is the same type as the input arrays which should be the
+ same type as each other.
+ """
+
+ itotal = len(ipixels)
+ atotal = len(apixels)
+ newtotal = itotal + atotal
+ newpsize = ipsize + apsize
+ # Set up the output buffer
+ # See http://www.python.org/doc/2.4.4/lib/module-array.html#l2h-1356
+ out = array(ipixels.typecode)
+ # It's annoying that there is no cheap way to set the array size :-(
+ out.extend(ipixels)
+ out.extend(apixels)
+ # Interleave in the pixel data
+ for i in range(ipsize):
+ out[i:newtotal:newpsize] = ipixels[i:itotal:ipsize]
+ for i in range(apsize):
+ out[i+ipsize:newtotal:newpsize] = apixels[i:atotal:apsize]
+ return out
+
+def check_palette(palette):
+ """Check a palette argument (to the :class:`Writer` class)
+ for validity. Returns the palette as a list if okay; raises an
+ exception otherwise.
+ """
+
+ # None is the default and is allowed.
+ if palette is None:
+ return None
+
+ p = list(palette)
+ if not (0 < len(p) <= 256):
+ raise ValueError("a palette must have between 1 and 256 entries")
+ seen_triple = False
+ for i,t in enumerate(p):
+ if len(t) not in (3,4):
+ raise ValueError(
+ "palette entry %d: entries must be 3- or 4-tuples." % i)
+ if len(t) == 3:
+ seen_triple = True
+ if seen_triple and len(t) == 4:
+ raise ValueError(
+ "palette entry %d: all 4-tuples must precede all 3-tuples" % i)
+ for x in t:
+ if int(x) != x or not(0 <= x <= 255):
+ raise ValueError(
+ "palette entry %d: values must be integer: 0 <= x <= 255" % i)
+ return p
+
+def check_sizes(size, width, height):
+ """Check that these arguments, in supplied, are consistent.
+ Return a (width, height) pair.
+ """
+
+ if not size:
+ return width, height
+
+ if len(size) != 2:
+ raise ValueError(
+ "size argument should be a pair (width, height)")
+ if width is not None and width != size[0]:
+ raise ValueError(
+ "size[0] (%r) and width (%r) should match when both are used."
+ % (size[0], width))
+ if height is not None and height != size[1]:
+ raise ValueError(
+ "size[1] (%r) and height (%r) should match when both are used."
+ % (size[1], height))
+ return size
+
+def check_color(c, greyscale, which):
+ """Checks that a colour argument for transparent or
+ background options is the right form. Returns the colour
+ (which, if it's a bar integer, is "corrected" to a 1-tuple).
+ """
+
+ if c is None:
+ return c
+ if greyscale:
+ try:
+ len(c)
+ except TypeError:
+ c = (c,)
+ if len(c) != 1:
+ raise ValueError("%s for greyscale must be 1-tuple" %
+ which)
+ if not isinteger(c[0]):
+ raise ValueError(
+ "%s colour for greyscale must be integer" % which)
+ else:
+ if not (len(c) == 3 and
+ isinteger(c[0]) and
+ isinteger(c[1]) and
+ isinteger(c[2])):
+ raise ValueError(
+ "%s colour must be a triple of integers" % which)
+ return c
+
+class Error(Exception):
+ def __str__(self):
+ return self.__class__.__name__ + ': ' + ' '.join(self.args)
+
+class FormatError(Error):
+ """Problem with input file format. In other words, PNG file does
+ not conform to the specification in some way and is invalid.
+ """
+
+class ChunkError(FormatError):
+ pass
+
+
+class Writer:
+ """
+ PNG encoder in pure Python.
+ """
+
+ def __init__(self, width=None, height=None,
+ size=None,
+ greyscale=False,
+ alpha=False,
+ bitdepth=8,
+ palette=None,
+ transparent=None,
+ background=None,
+ gamma=None,
+ compression=None,
+ interlace=False,
+ bytes_per_sample=None, # deprecated
+ planes=None,
+ colormap=None,
+ maxval=None,
+ chunk_limit=2**20,
+ x_pixels_per_unit = None,
+ y_pixels_per_unit = None,
+ unit_is_meter = False):
+ """
+ Create a PNG encoder object.
+
+ Arguments:
+
+ width, height
+ Image size in pixels, as two separate arguments.
+ size
+ Image size (w,h) in pixels, as single argument.
+ greyscale
+ Input data is greyscale, not RGB.
+ alpha
+ Input data has alpha channel (RGBA or LA).
+ bitdepth
+ Bit depth: from 1 to 16.
+ palette
+ Create a palette for a colour mapped image (colour type 3).
+ transparent
+ Specify a transparent colour (create a ``tRNS`` chunk).
+ background
+ Specify a default background colour (create a ``bKGD`` chunk).
+ gamma
+ Specify a gamma value (create a ``gAMA`` chunk).
+ compression
+ zlib compression level: 0 (none) to 9 (more compressed);
+ default: -1 or None.
+ interlace
+ Create an interlaced image.
+ chunk_limit
+ Write multiple ``IDAT`` chunks to save memory.
+ x_pixels_per_unit (pHYs chunk)
+ Number of pixels a unit along the x axis
+ y_pixels_per_unit (pHYs chunk)
+ Number of pixels a unit along the y axis
+ With x_pixel_unit, give the pixel size ratio
+ unit_is_meter (pHYs chunk)
+ Indicates if unit is meter or not
+
+ The image size (in pixels) can be specified either by using the
+ `width` and `height` arguments, or with the single `size`
+ argument. If `size` is used it should be a pair (*width*,
+ *height*).
+
+ `greyscale` and `alpha` are booleans that specify whether
+ an image is greyscale (or colour), and whether it has an
+ alpha channel (or not).
+
+ `bitdepth` specifies the bit depth of the source pixel values.
+ Each source pixel value must be an integer between 0 and
+ ``2**bitdepth-1``. For example, 8-bit images have values
+ between 0 and 255. PNG only stores images with bit depths of
+ 1,2,4,8, or 16. When `bitdepth` is not one of these values,
+ the next highest valid bit depth is selected, and an ``sBIT``
+ (significant bits) chunk is generated that specifies the
+ original precision of the source image. In this case the
+ supplied pixel values will be rescaled to fit the range of
+ the selected bit depth.
+
+ The details of which bit depth / colour model combinations the
+ PNG file format supports directly, are somewhat arcane
+ (refer to the PNG specification for full details). Briefly:
+ "small" bit depths (1,2,4) are only allowed with greyscale and
+ colour mapped images; colour mapped images cannot have bit depth
+ 16.
+
+ For colour mapped images (in other words, when the `palette`
+ argument is specified) the `bitdepth` argument must match one of
+ the valid PNG bit depths: 1, 2, 4, or 8. (It is valid to have a
+ PNG image with a palette and an ``sBIT`` chunk, but the meaning
+ is slightly different; it would be awkward to press the
+ `bitdepth` argument into service for this.)
+
+ The `palette` option, when specified, causes a colour mapped
+ image to be created: the PNG colour type is set to 3; greyscale
+ must not be set; alpha must not be set; transparent must not be
+ set; the bit depth must be 1,2,4, or 8. When a colour mapped
+ image is created, the pixel values are palette indexes and
+ the `bitdepth` argument specifies the size of these indexes
+ (not the size of the colour values in the palette).
+
+ The palette argument value should be a sequence of 3- or
+ 4-tuples. 3-tuples specify RGB palette entries; 4-tuples
+ specify RGBA palette entries. If both 4-tuples and 3-tuples
+ appear in the sequence then all the 4-tuples must come
+ before all the 3-tuples. A ``PLTE`` chunk is created; if there
+ are 4-tuples then a ``tRNS`` chunk is created as well. The
+ ``PLTE`` chunk will contain all the RGB triples in the same
+ sequence; the ``tRNS`` chunk will contain the alpha channel for
+ all the 4-tuples, in the same sequence. Palette entries
+ are always 8-bit.
+
+ If specified, the `transparent` and `background` parameters must
+ be a tuple with three integer values for red, green, blue, or
+ a simple integer (or singleton tuple) for a greyscale image.
+
+ If specified, the `gamma` parameter must be a positive number
+ (generally, a float). A ``gAMA`` chunk will be created.
+ Note that this will not change the values of the pixels as
+ they appear in the PNG file, they are assumed to have already
+ been converted appropriately for the gamma specified.
+
+ The `compression` argument specifies the compression level to
+ be used by the ``zlib`` module. Values from 1 to 9 specify
+ compression, with 9 being "more compressed" (usually smaller
+ and slower, but it doesn't always work out that way). 0 means
+ no compression. -1 and ``None`` both mean that the default
+ level of compession will be picked by the ``zlib`` module
+ (which is generally acceptable).
+
+ If `interlace` is true then an interlaced image is created
+ (using PNG's so far only interace method, *Adam7*). This does
+ not affect how the pixels should be presented to the encoder,
+ rather it changes how they are arranged into the PNG file.
+ On slow connexions interlaced images can be partially decoded
+ by the browser to give a rough view of the image that is
+ successively refined as more image data appears.
+
+ .. note ::
+
+ Enabling the `interlace` option requires the entire image
+ to be processed in working memory.
+
+ `chunk_limit` is used to limit the amount of memory used whilst
+ compressing the image. In order to avoid using large amounts of
+ memory, multiple ``IDAT`` chunks may be created.
+ """
+
+ # At the moment the `planes` argument is ignored;
+ # its purpose is to act as a dummy so that
+ # ``Writer(x, y, **info)`` works, where `info` is a dictionary
+ # returned by Reader.read and friends.
+ # Ditto for `colormap`.
+
+ width, height = check_sizes(size, width, height)
+ del size
+
+ if width <= 0 or height <= 0:
+ raise ValueError("width and height must be greater than zero")
+ if not isinteger(width) or not isinteger(height):
+ raise ValueError("width and height must be integers")
+ # http://www.w3.org/TR/PNG/#7Integers-and-byte-order
+ if width > 2**32-1 or height > 2**32-1:
+ raise ValueError("width and height cannot exceed 2**32-1")
+
+ if alpha and transparent is not None:
+ raise ValueError(
+ "transparent colour not allowed with alpha channel")
+
+ if bytes_per_sample is not None:
+ warnings.warn('please use bitdepth instead of bytes_per_sample',
+ DeprecationWarning)
+ if bytes_per_sample not in (0.125, 0.25, 0.5, 1, 2):
+ raise ValueError(
+ "bytes per sample must be .125, .25, .5, 1, or 2")
+ bitdepth = int(8*bytes_per_sample)
+ del bytes_per_sample
+ if not isinteger(bitdepth) or bitdepth < 1 or 16 < bitdepth:
+ raise ValueError("bitdepth (%r) must be a positive integer <= 16" %
+ bitdepth)
+
+ self.rescale = None
+ palette = check_palette(palette)
+ if palette:
+ if bitdepth not in (1,2,4,8):
+ raise ValueError("with palette, bitdepth must be 1, 2, 4, or 8")
+ if transparent is not None:
+ raise ValueError("transparent and palette not compatible")
+ if alpha:
+ raise ValueError("alpha and palette not compatible")
+ if greyscale:
+ raise ValueError("greyscale and palette not compatible")
+ else:
+ # No palette, check for sBIT chunk generation.
+ if alpha or not greyscale:
+ if bitdepth not in (8,16):
+ targetbitdepth = (8,16)[bitdepth > 8]
+ self.rescale = (bitdepth, targetbitdepth)
+ bitdepth = targetbitdepth
+ del targetbitdepth
+ else:
+ assert greyscale
+ assert not alpha
+ if bitdepth not in (1,2,4,8,16):
+ if bitdepth > 8:
+ targetbitdepth = 16
+ elif bitdepth == 3:
+ targetbitdepth = 4
+ else:
+ assert bitdepth in (5,6,7)
+ targetbitdepth = 8
+ self.rescale = (bitdepth, targetbitdepth)
+ bitdepth = targetbitdepth
+ del targetbitdepth
+
+ if bitdepth < 8 and (alpha or not greyscale and not palette):
+ raise ValueError(
+ "bitdepth < 8 only permitted with greyscale or palette")
+ if bitdepth > 8 and palette:
+ raise ValueError(
+ "bit depth must be 8 or less for images with palette")
+
+ transparent = check_color(transparent, greyscale, 'transparent')
+ background = check_color(background, greyscale, 'background')
+
+ # It's important that the true boolean values (greyscale, alpha,
+ # colormap, interlace) are converted to bool because Iverson's
+ # convention is relied upon later on.
+ self.width = width
+ self.height = height
+ self.transparent = transparent
+ self.background = background
+ self.gamma = gamma
+ self.greyscale = bool(greyscale)
+ self.alpha = bool(alpha)
+ self.colormap = bool(palette)
+ self.bitdepth = int(bitdepth)
+ self.compression = compression
+ self.chunk_limit = chunk_limit
+ self.interlace = bool(interlace)
+ self.palette = palette
+ self.x_pixels_per_unit = x_pixels_per_unit
+ self.y_pixels_per_unit = y_pixels_per_unit
+ self.unit_is_meter = bool(unit_is_meter)
+
+ self.color_type = 4*self.alpha + 2*(not greyscale) + 1*self.colormap
+ assert self.color_type in (0,2,3,4,6)
+
+ self.color_planes = (3,1)[self.greyscale or self.colormap]
+ self.planes = self.color_planes + self.alpha
+ # :todo: fix for bitdepth < 8
+ self.psize = (self.bitdepth/8) * self.planes
+
+ def make_palette(self):
+ """Create the byte sequences for a ``PLTE`` and if necessary a
+ ``tRNS`` chunk. Returned as a pair (*p*, *t*). *t* will be
+ ``None`` if no ``tRNS`` chunk is necessary.
+ """
+
+ p = array('B')
+ t = array('B')
+
+ for x in self.palette:
+ p.extend(x[0:3])
+ if len(x) > 3:
+ t.append(x[3])
+ p = tostring(p)
+ t = tostring(t)
+ if t:
+ return p,t
+ return p,None
+
+ def write(self, outfile, rows):
+ """Write a PNG image to the output file. `rows` should be
+ an iterable that yields each row in boxed row flat pixel
+ format. The rows should be the rows of the original image,
+ so there should be ``self.height`` rows of ``self.width *
+ self.planes`` values. If `interlace` is specified (when
+ creating the instance), then an interlaced PNG file will
+ be written. Supply the rows in the normal image order;
+ the interlacing is carried out internally.
+
+ .. note ::
+
+ Interlacing will require the entire image to be in working
+ memory.
+ """
+
+ if self.interlace:
+ fmt = 'BH'[self.bitdepth > 8]
+ a = array(fmt, itertools.chain(*rows))
+ return self.write_array(outfile, a)
+
+ nrows = self.write_passes(outfile, rows)
+ if nrows != self.height:
+ raise ValueError(
+ "rows supplied (%d) does not match height (%d)" %
+ (nrows, self.height))
+
+ def write_passes(self, outfile, rows, packed=False):
+ """
+ Write a PNG image to the output file.
+
+ Most users are expected to find the :meth:`write` or
+ :meth:`write_array` method more convenient.
+
+ The rows should be given to this method in the order that
+ they appear in the output file. For straightlaced images,
+ this is the usual top to bottom ordering, but for interlaced
+ images the rows should have already been interlaced before
+ passing them to this function.
+
+ `rows` should be an iterable that yields each row. When
+ `packed` is ``False`` the rows should be in boxed row flat pixel
+ format; when `packed` is ``True`` each row should be a packed
+ sequence of bytes.
+ """
+
+ # http://www.w3.org/TR/PNG/#5PNG-file-signature
+ outfile.write(_signature)
+
+ # http://www.w3.org/TR/PNG/#11IHDR
+ write_chunk(outfile, 'IHDR',
+ struct.pack("!2I5B", self.width, self.height,
+ self.bitdepth, self.color_type,
+ 0, 0, self.interlace))
+
+ # See :chunk:order
+ # http://www.w3.org/TR/PNG/#11gAMA
+ if self.gamma is not None:
+ write_chunk(outfile, 'gAMA',
+ struct.pack("!L", int(round(self.gamma*1e5))))
+
+ # See :chunk:order
+ # http://www.w3.org/TR/PNG/#11sBIT
+ if self.rescale:
+ write_chunk(outfile, 'sBIT',
+ struct.pack('%dB' % self.planes,
+ *[self.rescale[0]]*self.planes))
+
+ # :chunk:order: Without a palette (PLTE chunk), ordering is
+ # relatively relaxed. With one, gAMA chunk must precede PLTE
+ # chunk which must precede tRNS and bKGD.
+ # See http://www.w3.org/TR/PNG/#5ChunkOrdering
+ if self.palette:
+ p,t = self.make_palette()
+ write_chunk(outfile, 'PLTE', p)
+ if t:
+ # tRNS chunk is optional. Only needed if palette entries
+ # have alpha.
+ write_chunk(outfile, 'tRNS', t)
+
+ # http://www.w3.org/TR/PNG/#11tRNS
+ if self.transparent is not None:
+ if self.greyscale:
+ write_chunk(outfile, 'tRNS',
+ struct.pack("!1H", *self.transparent))
+ else:
+ write_chunk(outfile, 'tRNS',
+ struct.pack("!3H", *self.transparent))
+
+ # http://www.w3.org/TR/PNG/#11bKGD
+ if self.background is not None:
+ if self.greyscale:
+ write_chunk(outfile, 'bKGD',
+ struct.pack("!1H", *self.background))
+ else:
+ write_chunk(outfile, 'bKGD',
+ struct.pack("!3H", *self.background))
+
+ # http://www.w3.org/TR/PNG/#11pHYs
+ if self.x_pixels_per_unit is not None and self.y_pixels_per_unit is not None:
+ tup = (self.x_pixels_per_unit, self.y_pixels_per_unit, int(self.unit_is_meter))
+ write_chunk(outfile, 'pHYs', struct.pack("!LLB",*tup))
+
+ # http://www.w3.org/TR/PNG/#11IDAT
+ if self.compression is not None:
+ compressor = zlib.compressobj(self.compression)
+ else:
+ compressor = zlib.compressobj()
+
+ # Choose an extend function based on the bitdepth. The extend
+ # function packs/decomposes the pixel values into bytes and
+ # stuffs them onto the data array.
+ data = array('B')
+ if self.bitdepth == 8 or packed:
+ extend = data.extend
+ elif self.bitdepth == 16:
+ # Decompose into bytes
+ def extend(sl):
+ fmt = '!%dH' % len(sl)
+ data.extend(array('B', struct.pack(fmt, *sl)))
+ else:
+ # Pack into bytes
+ assert self.bitdepth < 8
+ # samples per byte
+ spb = int(8/self.bitdepth)
+ def extend(sl):
+ a = array('B', sl)
+ # Adding padding bytes so we can group into a whole
+ # number of spb-tuples.
+ l = float(len(a))
+ extra = math.ceil(l / float(spb))*spb - l
+ a.extend([0]*int(extra))
+ # Pack into bytes
+ l = group(a, spb)
+ l = map(lambda e: reduce(lambda x,y:
+ (x << self.bitdepth) + y, e), l)
+ data.extend(l)
+ if self.rescale:
+ oldextend = extend
+ factor = \
+ float(2**self.rescale[1]-1) / float(2**self.rescale[0]-1)
+ def extend(sl):
+ oldextend(map(lambda x: int(round(factor*x)), sl))
+
+ # Build the first row, testing mostly to see if we need to
+ # changed the extend function to cope with NumPy integer types
+ # (they cause our ordinary definition of extend to fail, so we
+ # wrap it). See
+ # http://code.google.com/p/pypng/issues/detail?id=44
+ enumrows = enumerate(rows)
+ del rows
+
+ # First row's filter type.
+ data.append(0)
+ # :todo: Certain exceptions in the call to ``.next()`` or the
+ # following try would indicate no row data supplied.
+ # Should catch.
+ i,row = enumrows.next()
+ try:
+ # If this fails...
+ extend(row)
+ except:
+ # ... try a version that converts the values to int first.
+ # Not only does this work for the (slightly broken) NumPy
+ # types, there are probably lots of other, unknown, "nearly"
+ # int types it works for.
+ def wrapmapint(f):
+ return lambda sl: f(map(int, sl))
+ extend = wrapmapint(extend)
+ del wrapmapint
+ extend(row)
+
+ for i,row in enumrows:
+ # Add "None" filter type. Currently, it's essential that
+ # this filter type be used for every scanline as we do not
+ # mark the first row of a reduced pass image; that means we
+ # could accidentally compute the wrong filtered scanline if
+ # we used "up", "average", or "paeth" on such a line.
+ data.append(0)
+ extend(row)
+ if len(data) > self.chunk_limit:
+ compressed = compressor.compress(tostring(data))
+ if len(compressed):
+ write_chunk(outfile, 'IDAT', compressed)
+ # Because of our very witty definition of ``extend``,
+ # above, we must re-use the same ``data`` object. Hence
+ # we use ``del`` to empty this one, rather than create a
+ # fresh one (which would be my natural FP instinct).
+ del data[:]
+ if len(data):
+ compressed = compressor.compress(tostring(data))
+ else:
+ compressed = strtobytes('')
+ flushed = compressor.flush()
+ if len(compressed) or len(flushed):
+ write_chunk(outfile, 'IDAT', compressed + flushed)
+ # http://www.w3.org/TR/PNG/#11IEND
+ write_chunk(outfile, 'IEND')
+ return i+1
+
+ def write_array(self, outfile, pixels):
+ """
+ Write an array in flat row flat pixel format as a PNG file on
+ the output file. See also :meth:`write` method.
+ """
+
+ if self.interlace:
+ self.write_passes(outfile, self.array_scanlines_interlace(pixels))
+ else:
+ self.write_passes(outfile, self.array_scanlines(pixels))
+
+ def write_packed(self, outfile, rows):
+ """
+ Write PNG file to `outfile`. The pixel data comes from `rows`
+ which should be in boxed row packed format. Each row should be
+ a sequence of packed bytes.
+
+ Technically, this method does work for interlaced images but it
+ is best avoided. For interlaced images, the rows should be
+ presented in the order that they appear in the file.
+
+ This method should not be used when the source image bit depth
+ is not one naturally supported by PNG; the bit depth should be
+ 1, 2, 4, 8, or 16.
+ """
+
+ if self.rescale:
+ raise Error("write_packed method not suitable for bit depth %d" %
+ self.rescale[0])
+ return self.write_passes(outfile, rows, packed=True)
+
+ def convert_pnm(self, infile, outfile):
+ """
+ Convert a PNM file containing raw pixel data into a PNG file
+ with the parameters set in the writer object. Works for
+ (binary) PGM, PPM, and PAM formats.
+ """
+
+ if self.interlace:
+ pixels = array('B')
+ pixels.fromfile(infile,
+ (self.bitdepth/8) * self.color_planes *
+ self.width * self.height)
+ self.write_passes(outfile, self.array_scanlines_interlace(pixels))
+ else:
+ self.write_passes(outfile, self.file_scanlines(infile))
+
+ def convert_ppm_and_pgm(self, ppmfile, pgmfile, outfile):
+ """
+ Convert a PPM and PGM file containing raw pixel data into a
+ PNG outfile with the parameters set in the writer object.
+ """
+ pixels = array('B')
+ pixels.fromfile(ppmfile,
+ (self.bitdepth/8) * self.color_planes *
+ self.width * self.height)
+ apixels = array('B')
+ apixels.fromfile(pgmfile,
+ (self.bitdepth/8) *
+ self.width * self.height)
+ pixels = interleave_planes(pixels, apixels,
+ (self.bitdepth/8) * self.color_planes,
+ (self.bitdepth/8))
+ if self.interlace:
+ self.write_passes(outfile, self.array_scanlines_interlace(pixels))
+ else:
+ self.write_passes(outfile, self.array_scanlines(pixels))
+
+ def file_scanlines(self, infile):
+ """
+ Generates boxed rows in flat pixel format, from the input file
+ `infile`. It assumes that the input file is in a "Netpbm-like"
+ binary format, and is positioned at the beginning of the first
+ pixel. The number of pixels to read is taken from the image
+ dimensions (`width`, `height`, `planes`) and the number of bytes
+ per value is implied by the image `bitdepth`.
+ """
+
+ # Values per row
+ vpr = self.width * self.planes
+ row_bytes = vpr
+ if self.bitdepth > 8:
+ assert self.bitdepth == 16
+ row_bytes *= 2
+ fmt = '>%dH' % vpr
+ def line():
+ return array('H', struct.unpack(fmt, infile.read(row_bytes)))
+ else:
+ def line():
+ scanline = array('B', infile.read(row_bytes))
+ return scanline
+ for y in range(self.height):
+ yield line()
+
+ def array_scanlines(self, pixels):
+ """
+ Generates boxed rows (flat pixels) from flat rows (flat pixels)
+ in an array.
+ """
+
+ # Values per row
+ vpr = self.width * self.planes
+ stop = 0
+ for y in range(self.height):
+ start = stop
+ stop = start + vpr
+ yield pixels[start:stop]
+
+ def array_scanlines_interlace(self, pixels):
+ """
+ Generator for interlaced scanlines from an array. `pixels` is
+ the full source image in flat row flat pixel format. The
+ generator yields each scanline of the reduced passes in turn, in
+ boxed row flat pixel format.
+ """
+
+ # http://www.w3.org/TR/PNG/#8InterlaceMethods
+ # Array type.
+ fmt = 'BH'[self.bitdepth > 8]
+ # Value per row
+ vpr = self.width * self.planes
+ for xstart, ystart, xstep, ystep in _adam7:
+ if xstart >= self.width:
+ continue
+ # Pixels per row (of reduced image)
+ ppr = int(math.ceil((self.width-xstart)/float(xstep)))
+ # number of values in reduced image row.
+ row_len = ppr*self.planes
+ for y in range(ystart, self.height, ystep):
+ if xstep == 1:
+ offset = y * vpr
+ yield pixels[offset:offset+vpr]
+ else:
+ row = array(fmt)
+ # There's no easier way to set the length of an array
+ row.extend(pixels[0:row_len])
+ offset = y * vpr + xstart * self.planes
+ end_offset = (y+1) * vpr
+ skip = self.planes * xstep
+ for i in range(self.planes):
+ row[i::self.planes] = \
+ pixels[offset+i:end_offset:skip]
+ yield row
+
+def write_chunk(outfile, tag, data=strtobytes('')):
+ """
+ Write a PNG chunk to the output file, including length and
+ checksum.
+ """
+
+ # http://www.w3.org/TR/PNG/#5Chunk-layout
+ outfile.write(struct.pack("!I", len(data)))
+ tag = strtobytes(tag)
+ outfile.write(tag)
+ outfile.write(data)
+ checksum = zlib.crc32(tag)
+ checksum = zlib.crc32(data, checksum)
+ checksum &= 2**32-1
+ outfile.write(struct.pack("!I", checksum))
+
+def write_chunks(out, chunks):
+ """Create a PNG file by writing out the chunks."""
+
+ out.write(_signature)
+ for chunk in chunks:
+ write_chunk(out, *chunk)
+
+def filter_scanline(type, line, fo, prev=None):
+ """Apply a scanline filter to a scanline. `type` specifies the
+ filter type (0 to 4); `line` specifies the current (unfiltered)
+ scanline as a sequence of bytes; `prev` specifies the previous
+ (unfiltered) scanline as a sequence of bytes. `fo` specifies the
+ filter offset; normally this is size of a pixel in bytes (the number
+ of bytes per sample times the number of channels), but when this is
+ < 1 (for bit depths < 8) then the filter offset is 1.
+ """
+
+ assert 0 <= type < 5
+
+ # The output array. Which, pathetically, we extend one-byte at a
+ # time (fortunately this is linear).
+ out = array('B', [type])
+
+ def sub():
+ ai = -fo
+ for x in line:
+ if ai >= 0:
+ x = (x - line[ai]) & 0xff
+ out.append(x)
+ ai += 1
+ def up():
+ for i,x in enumerate(line):
+ x = (x - prev[i]) & 0xff
+ out.append(x)
+ def average():
+ ai = -fo
+ for i,x in enumerate(line):
+ if ai >= 0:
+ x = (x - ((line[ai] + prev[i]) >> 1)) & 0xff
+ else:
+ x = (x - (prev[i] >> 1)) & 0xff
+ out.append(x)
+ ai += 1
+ def paeth():
+ # http://www.w3.org/TR/PNG/#9Filter-type-4-Paeth
+ ai = -fo # also used for ci
+ for i,x in enumerate(line):
+ a = 0
+ b = prev[i]
+ c = 0
+
+ if ai >= 0:
+ a = line[ai]
+ c = prev[ai]
+ p = a + b - c
+ pa = abs(p - a)
+ pb = abs(p - b)
+ pc = abs(p - c)
+ if pa <= pb and pa <= pc:
+ Pr = a
+ elif pb <= pc:
+ Pr = b
+ else:
+ Pr = c
+
+ x = (x - Pr) & 0xff
+ out.append(x)
+ ai += 1
+
+ if not prev:
+ # We're on the first line. Some of the filters can be reduced
+ # to simpler cases which makes handling the line "off the top"
+ # of the image simpler. "up" becomes "none"; "paeth" becomes
+ # "left" (non-trivial, but true). "average" needs to be handled
+ # specially.
+ if type == 2: # "up"
+ type = 0
+ elif type == 3:
+ prev = [0]*len(line)
+ elif type == 4: # "paeth"
+ type = 1
+ if type == 0:
+ out.extend(line)
+ elif type == 1:
+ sub()
+ elif type == 2:
+ up()
+ elif type == 3:
+ average()
+ else: # type == 4
+ paeth()
+ return out
+
+
+def from_array(a, mode=None, info={}):
+ """Create a PNG :class:`Image` object from a 2- or 3-dimensional
+ array. One application of this function is easy PIL-style saving:
+ ``png.from_array(pixels, 'L').save('foo.png')``.
+
+ .. note :
+
+ The use of the term *3-dimensional* is for marketing purposes
+ only. It doesn't actually work. Please bear with us. Meanwhile
+ enjoy the complimentary snacks (on request) and please use a
+ 2-dimensional array.
+
+ Unless they are specified using the *info* parameter, the PNG's
+ height and width are taken from the array size. For a 3 dimensional
+ array the first axis is the height; the second axis is the width;
+ and the third axis is the channel number. Thus an RGB image that is
+ 16 pixels high and 8 wide will use an array that is 16x8x3. For 2
+ dimensional arrays the first axis is the height, but the second axis
+ is ``width*channels``, so an RGB image that is 16 pixels high and 8
+ wide will use a 2-dimensional array that is 16x24 (each row will be
+ 8*3==24 sample values).
+
+ *mode* is a string that specifies the image colour format in a
+ PIL-style mode. It can be:
+
+ ``'L'``
+ greyscale (1 channel)
+ ``'LA'``
+ greyscale with alpha (2 channel)
+ ``'RGB'``
+ colour image (3 channel)
+ ``'RGBA'``
+ colour image with alpha (4 channel)
+
+ The mode string can also specify the bit depth (overriding how this
+ function normally derives the bit depth, see below). Appending
+ ``';16'`` to the mode will cause the PNG to be 16 bits per channel;
+ any decimal from 1 to 16 can be used to specify the bit depth.
+
+ When a 2-dimensional array is used *mode* determines how many
+ channels the image has, and so allows the width to be derived from
+ the second array dimension.
+
+ The array is expected to be a ``numpy`` array, but it can be any
+ suitable Python sequence. For example, a list of lists can be used:
+ ``png.from_array([[0, 255, 0], [255, 0, 255]], 'L')``. The exact
+ rules are: ``len(a)`` gives the first dimension, height;
+ ``len(a[0])`` gives the second dimension; ``len(a[0][0])`` gives the
+ third dimension, unless an exception is raised in which case a
+ 2-dimensional array is assumed. It's slightly more complicated than
+ that because an iterator of rows can be used, and it all still
+ works. Using an iterator allows data to be streamed efficiently.
+
+ The bit depth of the PNG is normally taken from the array element's
+ datatype (but if *mode* specifies a bitdepth then that is used
+ instead). The array element's datatype is determined in a way which
+ is supposed to work both for ``numpy`` arrays and for Python
+ ``array.array`` objects. A 1 byte datatype will give a bit depth of
+ 8, a 2 byte datatype will give a bit depth of 16. If the datatype
+ does not have an implicit size, for example it is a plain Python
+ list of lists, as above, then a default of 8 is used.
+
+ The *info* parameter is a dictionary that can be used to specify
+ metadata (in the same style as the arguments to the
+ :class:``png.Writer`` class). For this function the keys that are
+ useful are:
+
+ height
+ overrides the height derived from the array dimensions and allows
+ *a* to be an iterable.
+ width
+ overrides the width derived from the array dimensions.
+ bitdepth
+ overrides the bit depth derived from the element datatype (but
+ must match *mode* if that also specifies a bit depth).
+
+ Generally anything specified in the
+ *info* dictionary will override any implicit choices that this
+ function would otherwise make, but must match any explicit ones.
+ For example, if the *info* dictionary has a ``greyscale`` key then
+ this must be true when mode is ``'L'`` or ``'LA'`` and false when
+ mode is ``'RGB'`` or ``'RGBA'``.
+ """
+
+ # We abuse the *info* parameter by modifying it. Take a copy here.
+ # (Also typechecks *info* to some extent).
+ info = dict(info)
+
+ # Syntax check mode string.
+ bitdepth = None
+ try:
+ # Assign the 'L' or 'RGBA' part to `gotmode`.
+ if mode.startswith('L'):
+ gotmode = 'L'
+ mode = mode[1:]
+ elif mode.startswith('RGB'):
+ gotmode = 'RGB'
+ mode = mode[3:]
+ else:
+ raise Error()
+ if mode.startswith('A'):
+ gotmode += 'A'
+ mode = mode[1:]
+
+ # Skip any optional ';'
+ while mode.startswith(';'):
+ mode = mode[1:]
+
+ # Parse optional bitdepth
+ if mode:
+ try:
+ bitdepth = int(mode)
+ except (TypeError, ValueError):
+ raise Error()
+ except Error:
+ raise Error("mode string should be 'RGB' or 'L;16' or similar.")
+ mode = gotmode
+
+ # Get bitdepth from *mode* if possible.
+ if bitdepth:
+ if info.get('bitdepth') and bitdepth != info['bitdepth']:
+ raise Error("mode bitdepth (%d) should match info bitdepth (%d)." %
+ (bitdepth, info['bitdepth']))
+ info['bitdepth'] = bitdepth
+
+ # Fill in and/or check entries in *info*.
+ # Dimensions.
+ if 'size' in info:
+ # Check width, height, size all match where used.
+ for dimension,axis in [('width', 0), ('height', 1)]:
+ if dimension in info:
+ if info[dimension] != info['size'][axis]:
+ raise Error(
+ "info[%r] should match info['size'][%r]." %
+ (dimension, axis))
+ info['width'],info['height'] = info['size']
+ if 'height' not in info:
+ try:
+ l = len(a)
+ except TypeError:
+ raise Error(
+ "len(a) does not work, supply info['height'] instead.")
+ info['height'] = l
+ # Colour format.
+ if 'greyscale' in info:
+ if bool(info['greyscale']) != ('L' in mode):
+ raise Error("info['greyscale'] should match mode.")
+ info['greyscale'] = 'L' in mode
+ if 'alpha' in info:
+ if bool(info['alpha']) != ('A' in mode):
+ raise Error("info['alpha'] should match mode.")
+ info['alpha'] = 'A' in mode
+
+ planes = len(mode)
+ if 'planes' in info:
+ if info['planes'] != planes:
+ raise Error("info['planes'] should match mode.")
+
+ # In order to work out whether we the array is 2D or 3D we need its
+ # first row, which requires that we take a copy of its iterator.
+ # We may also need the first row to derive width and bitdepth.
+ a,t = itertools.tee(a)
+ row = t.next()
+ del t
+ try:
+ row[0][0]
+ threed = True
+ testelement = row[0]
+ except (IndexError, TypeError):
+ threed = False
+ testelement = row
+ if 'width' not in info:
+ if threed:
+ width = len(row)
+ else:
+ width = len(row) // planes
+ info['width'] = width
+
+ # Not implemented yet
+ assert not threed
+
+ if 'bitdepth' not in info:
+ try:
+ dtype = testelement.dtype
+ # goto the "else:" clause. Sorry.
+ except AttributeError:
+ try:
+ # Try a Python array.array.
+ bitdepth = 8 * testelement.itemsize
+ except AttributeError:
+ # We can't determine it from the array element's
+ # datatype, use a default of 8.
+ bitdepth = 8
+ else:
+ # If we got here without exception, we now assume that
+ # the array is a numpy array.
+ if dtype.kind == 'b':
+ bitdepth = 1
+ else:
+ bitdepth = 8 * dtype.itemsize
+ info['bitdepth'] = bitdepth
+
+ for thing in 'width height bitdepth greyscale alpha'.split():
+ assert thing in info
+ return Image(a, info)
+
+# So that refugee's from PIL feel more at home. Not documented.
+fromarray = from_array
+
+class Image:
+ """A PNG image. You can create an :class:`Image` object from
+ an array of pixels by calling :meth:`png.from_array`. It can be
+ saved to disk with the :meth:`save` method.
+ """
+
+ def __init__(self, rows, info):
+ """
+ .. note ::
+
+ The constructor is not public. Please do not call it.
+ """
+
+ self.rows = rows
+ self.info = info
+
+ def save(self, file):
+ """Save the image to *file*. If *file* looks like an open file
+ descriptor then it is used, otherwise it is treated as a
+ filename and a fresh file is opened.
+
+ In general, you can only call this method once; after it has
+ been called the first time and the PNG image has been saved, the
+ source data will have been streamed, and cannot be streamed
+ again.
+ """
+
+ w = Writer(**self.info)
+
+ try:
+ file.write
+ def close(): pass
+ except AttributeError:
+ file = open(file, 'wb')
+ def close(): file.close()
+
+ try:
+ w.write(file, self.rows)
+ finally:
+ close()
+
+class _readable:
+ """
+ A simple file-like interface for strings and arrays.
+ """
+
+ def __init__(self, buf):
+ self.buf = buf
+ self.offset = 0
+
+ def read(self, n):
+ r = self.buf[self.offset:self.offset+n]
+ if isarray(r):
+ r = r.tostring()
+ self.offset += n
+ return r
+
+
+class Reader:
+ """
+ PNG decoder in pure Python.
+ """
+
+ def __init__(self, _guess=None, **kw):
+ """
+ Create a PNG decoder object.
+
+ The constructor expects exactly one keyword argument. If you
+ supply a positional argument instead, it will guess the input
+ type. You can choose among the following keyword arguments:
+
+ filename
+ Name of input file (a PNG file).
+ file
+ A file-like object (object with a read() method).
+ bytes
+ ``array`` or ``string`` with PNG data.
+
+ """
+ if ((_guess is not None and len(kw) != 0) or
+ (_guess is None and len(kw) != 1)):
+ raise TypeError("Reader() takes exactly 1 argument")
+
+ # Will be the first 8 bytes, later on. See validate_signature.
+ self.signature = None
+ self.transparent = None
+ # A pair of (len,type) if a chunk has been read but its data and
+ # checksum have not (in other words the file position is just
+ # past the 4 bytes that specify the chunk type). See preamble
+ # method for how this is used.
+ self.atchunk = None
+
+ if _guess is not None:
+ if isarray(_guess):
+ kw["bytes"] = _guess
+ elif isinstance(_guess, str):
+ kw["filename"] = _guess
+ elif hasattr(_guess, 'read'):
+ kw["file"] = _guess
+
+ if "filename" in kw:
+ self.file = open(kw["filename"], "rb")
+ elif "file" in kw:
+ self.file = kw["file"]
+ elif "bytes" in kw:
+ self.file = _readable(kw["bytes"])
+ else:
+ raise TypeError("expecting filename, file or bytes array")
+
+
+ def chunk(self, seek=None, lenient=False):
+ """
+ Read the next PNG chunk from the input file; returns a
+ (*type*,*data*) tuple. *type* is the chunk's type as a string
+ (all PNG chunk types are 4 characters long). *data* is the
+ chunk's data content, as a string.
+
+ If the optional `seek` argument is
+ specified then it will keep reading chunks until it either runs
+ out of file or finds the type specified by the argument. Note
+ that in general the order of chunks in PNGs is unspecified, so
+ using `seek` can cause you to miss chunks.
+
+ If the optional `lenient` argument evaluates to True,
+ checksum failures will raise warnings rather than exceptions.
+ """
+
+ self.validate_signature()
+
+ while True:
+ # http://www.w3.org/TR/PNG/#5Chunk-layout
+ if not self.atchunk:
+ self.atchunk = self.chunklentype()
+ length,type = self.atchunk
+ self.atchunk = None
+ data = self.file.read(length)
+ if len(data) != length:
+ raise ChunkError('Chunk %s too short for required %i octets.'
+ % (type, length))
+ checksum = self.file.read(4)
+ if len(checksum) != 4:
+ raise ChunkError('Chunk %s too short for checksum.' % type)
+ if seek and type != seek:
+ continue
+ verify = zlib.crc32(strtobytes(type))
+ verify = zlib.crc32(data, verify)
+ # Whether the output from zlib.crc32 is signed or not varies
+ # according to hideous implementation details, see
+ # http://bugs.python.org/issue1202 .
+ # We coerce it to be positive here (in a way which works on
+ # Python 2.3 and older).
+ verify &= 2**32 - 1
+ verify = struct.pack('!I', verify)
+ if checksum != verify:
+ (a, ) = struct.unpack('!I', checksum)
+ (b, ) = struct.unpack('!I', verify)
+ message = "Checksum error in %s chunk: 0x%08X != 0x%08X." % (type, a, b)
+ if lenient:
+ warnings.warn(message, RuntimeWarning)
+ else:
+ raise ChunkError(message)
+ return type, data
+
+ def chunks(self):
+ """Return an iterator that will yield each chunk as a
+ (*chunktype*, *content*) pair.
+ """
+
+ while True:
+ t,v = self.chunk()
+ yield t,v
+ if t == 'IEND':
+ break
+
+ def undo_filter(self, filter_type, scanline, previous):
+ """Undo the filter for a scanline. `scanline` is a sequence of
+ bytes that does not include the initial filter type byte.
+ `previous` is decoded previous scanline (for straightlaced
+ images this is the previous pixel row, but for interlaced
+ images, it is the previous scanline in the reduced image, which
+ in general is not the previous pixel row in the final image).
+ When there is no previous scanline (the first row of a
+ straightlaced image, or the first row in one of the passes in an
+ interlaced image), then this argument should be ``None``.
+
+ The scanline will have the effects of filtering removed, and the
+ result will be returned as a fresh sequence of bytes.
+ """
+
+ # :todo: Would it be better to update scanline in place?
+ # Yes, with the Cython extension making the undo_filter fast,
+ # updating scanline inplace makes the code 3 times faster
+ # (reading 50 images of 800x800 went from 40s to 16s)
+ result = scanline
+
+ if filter_type == 0:
+ return result
+
+ if filter_type not in (1,2,3,4):
+ raise FormatError('Invalid PNG Filter Type.'
+ ' See http://www.w3.org/TR/2003/REC-PNG-20031110/#9Filters .')
+
+ # Filter unit. The stride from one pixel to the corresponding
+ # byte from the previous pixel. Normally this is the pixel
+ # size in bytes, but when this is smaller than 1, the previous
+ # byte is used instead.
+ fu = max(1, self.psize)
+
+ # For the first line of a pass, synthesize a dummy previous
+ # line. An alternative approach would be to observe that on the
+ # first line 'up' is the same as 'null', 'paeth' is the same
+ # as 'sub', with only 'average' requiring any special case.
+ if not previous:
+ previous = array('B', [0]*len(scanline))
+
+ def sub():
+ """Undo sub filter."""
+
+ ai = 0
+ # Loop starts at index fu. Observe that the initial part
+ # of the result is already filled in correctly with
+ # scanline.
+ for i in range(fu, len(result)):
+ x = scanline[i]
+ a = result[ai]
+ result[i] = (x + a) & 0xff
+ ai += 1
+
+ def up():
+ """Undo up filter."""
+
+ for i in range(len(result)):
+ x = scanline[i]
+ b = previous[i]
+ result[i] = (x + b) & 0xff
+
+ def average():
+ """Undo average filter."""
+
+ ai = -fu
+ for i in range(len(result)):
+ x = scanline[i]
+ if ai < 0:
+ a = 0
+ else:
+ a = result[ai]
+ b = previous[i]
+ result[i] = (x + ((a + b) >> 1)) & 0xff
+ ai += 1
+
+ def paeth():
+ """Undo Paeth filter."""
+
+ # Also used for ci.
+ ai = -fu
+ for i in range(len(result)):
+ x = scanline[i]
+ if ai < 0:
+ a = c = 0
+ else:
+ a = result[ai]
+ c = previous[ai]
+ b = previous[i]
+ p = a + b - c
+ pa = abs(p - a)
+ pb = abs(p - b)
+ pc = abs(p - c)
+ if pa <= pb and pa <= pc:
+ pr = a
+ elif pb <= pc:
+ pr = b
+ else:
+ pr = c
+ result[i] = (x + pr) & 0xff
+ ai += 1
+
+ # Call appropriate filter algorithm. Note that 0 has already
+ # been dealt with.
+ (None,
+ pngfilters.undo_filter_sub,
+ pngfilters.undo_filter_up,
+ pngfilters.undo_filter_average,
+ pngfilters.undo_filter_paeth)[filter_type](fu, scanline, previous, result)
+ return result
+
+ def deinterlace(self, raw):
+ """
+ Read raw pixel data, undo filters, deinterlace, and flatten.
+ Return in flat row flat pixel format.
+ """
+
+ # Values per row (of the target image)
+ vpr = self.width * self.planes
+
+ # Make a result array, and make it big enough. Interleaving
+ # writes to the output array randomly (well, not quite), so the
+ # entire output array must be in memory.
+ fmt = 'BH'[self.bitdepth > 8]
+ a = array(fmt, [0]*vpr*self.height)
+ source_offset = 0
+
+ for xstart, ystart, xstep, ystep in _adam7:
+ if xstart >= self.width:
+ continue
+ # The previous (reconstructed) scanline. None at the
+ # beginning of a pass to indicate that there is no previous
+ # line.
+ recon = None
+ # Pixels per row (reduced pass image)
+ ppr = int(math.ceil((self.width-xstart)/float(xstep)))
+ # Row size in bytes for this pass.
+ row_size = int(math.ceil(self.psize * ppr))
+ for y in range(ystart, self.height, ystep):
+ filter_type = raw[source_offset]
+ source_offset += 1
+ scanline = raw[source_offset:source_offset+row_size]
+ source_offset += row_size
+ recon = self.undo_filter(filter_type, scanline, recon)
+ # Convert so that there is one element per pixel value
+ flat = self.serialtoflat(recon, ppr)
+ if xstep == 1:
+ assert xstart == 0
+ offset = y * vpr
+ a[offset:offset+vpr] = flat
+ else:
+ offset = y * vpr + xstart * self.planes
+ end_offset = (y+1) * vpr
+ skip = self.planes * xstep
+ for i in range(self.planes):
+ a[offset+i:end_offset:skip] = \
+ flat[i::self.planes]
+ return a
+
+ def iterboxed(self, rows):
+ """Iterator that yields each scanline in boxed row flat pixel
+ format. `rows` should be an iterator that yields the bytes of
+ each row in turn.
+ """
+
+ def asvalues(raw):
+ """Convert a row of raw bytes into a flat row. Result will
+ be a freshly allocated object, not shared with
+ argument.
+ """
+
+ if self.bitdepth == 8:
+ return array('B', raw)
+ if self.bitdepth == 16:
+ raw = tostring(raw)
+ return array('H', struct.unpack('!%dH' % (len(raw)//2), raw))
+ assert self.bitdepth < 8
+ width = self.width
+ # Samples per byte
+ spb = 8//self.bitdepth
+ out = array('B')
+ mask = 2**self.bitdepth - 1
+ shifts = list(map(self.bitdepth.__mul__, reversed(range(spb))))
+ for o in raw:
+ out.extend(list(map(lambda i: mask&(o>>i), shifts)))
+ return out[:width]
+ return itertools.imap(asvalues, rows)
+
+ def serialtoflat(self, bytes, width=None):
+ """Convert serial format (byte stream) pixel data to flat row
+ flat pixel.
+ """
+
+ if self.bitdepth == 8:
+ return bytes
+ if self.bitdepth == 16:
+ bytes = tostring(bytes)
+ return array('H',
+ struct.unpack('!%dH' % (len(bytes)//2), bytes))
+ assert self.bitdepth < 8
+ if width is None:
+ width = self.width
+ # Samples per byte
+ spb = 8//self.bitdepth
+ out = array('B')
+ mask = 2**self.bitdepth - 1
+ shifts = map(self.bitdepth.__mul__, reversed(range(spb)))
+ l = width
+ for o in bytes:
+ out.extend([(mask&(o>>s)) for s in shifts][:l])
+ l -= spb
+ if l <= 0:
+ l = width
+ return out
+
+ def iterstraight(self, raw):
+ """Iterator that undoes the effect of filtering, and yields
+ each row in serialised format (as a sequence of bytes).
+ Assumes input is straightlaced. `raw` should be an iterable
+ that yields the raw bytes in chunks of arbitrary size.
+ """
+
+ # length of row, in bytes
+ rb = self.row_bytes
+ a = array('B')
+ # The previous (reconstructed) scanline. None indicates first
+ # line of image.
+ recon = None
+ for some in raw:
+ a.extend(some)
+ while len(a) >= rb + 1:
+ filter_type = a[0]
+ scanline = a[1:rb+1]
+ del a[:rb+1]
+ recon = self.undo_filter(filter_type, scanline, recon)
+ yield recon
+ if len(a) != 0:
+ # :file:format We get here with a file format error:
+ # when the available bytes (after decompressing) do not
+ # pack into exact rows.
+ raise FormatError(
+ 'Wrong size for decompressed IDAT chunk.')
+ assert len(a) == 0
+
+ def validate_signature(self):
+ """If signature (header) has not been read then read and
+ validate it; otherwise do nothing.
+ """
+
+ if self.signature:
+ return
+ self.signature = self.file.read(8)
+ if self.signature != _signature:
+ raise FormatError("PNG file has invalid signature.")
+
+ def preamble(self, lenient=False):
+ """
+ Extract the image metadata by reading the initial part of
+ the PNG file up to the start of the ``IDAT`` chunk. All the
+ chunks that precede the ``IDAT`` chunk are read and either
+ processed for metadata or discarded.
+
+ If the optional `lenient` argument evaluates to True, checksum
+ failures will raise warnings rather than exceptions.
+ """
+
+ self.validate_signature()
+
+ while True:
+ if not self.atchunk:
+ self.atchunk = self.chunklentype()
+ if self.atchunk is None:
+ raise FormatError(
+ 'This PNG file has no IDAT chunks.')
+ if self.atchunk[1] == 'IDAT':
+ return
+ self.process_chunk(lenient=lenient)
+
+ def chunklentype(self):
+ """Reads just enough of the input to determine the next
+ chunk's length and type, returned as a (*length*, *type*) pair
+ where *type* is a string. If there are no more chunks, ``None``
+ is returned.
+ """
+
+ x = self.file.read(8)
+ if not x:
+ return None
+ if len(x) != 8:
+ raise FormatError(
+ 'End of file whilst reading chunk length and type.')
+ length,type = struct.unpack('!I4s', x)
+ type = bytestostr(type)
+ if length > 2**31-1:
+ raise FormatError('Chunk %s is too large: %d.' % (type,length))
+ return length,type
+
+ def process_chunk(self, lenient=False):
+ """Process the next chunk and its data. This only processes the
+ following chunk types, all others are ignored: ``IHDR``,
+ ``PLTE``, ``bKGD``, ``tRNS``, ``gAMA``, ``sBIT``, ``pHYs``.
+
+ If the optional `lenient` argument evaluates to True,
+ checksum failures will raise warnings rather than exceptions.
+ """
+
+ type, data = self.chunk(lenient=lenient)
+ method = '_process_' + type
+ m = getattr(self, method, None)
+ if m:
+ m(data)
+
+ def _process_IHDR(self, data):
+ # http://www.w3.org/TR/PNG/#11IHDR
+ if len(data) != 13:
+ raise FormatError('IHDR chunk has incorrect length.')
+ (self.width, self.height, self.bitdepth, self.color_type,
+ self.compression, self.filter,
+ self.interlace) = struct.unpack("!2I5B", data)
+
+ check_bitdepth_colortype(self.bitdepth, self.color_type)
+
+ if self.compression != 0:
+ raise Error("unknown compression method %d" % self.compression)
+ if self.filter != 0:
+ raise FormatError("Unknown filter method %d,"
+ " see http://www.w3.org/TR/2003/REC-PNG-20031110/#9Filters ."
+ % self.filter)
+ if self.interlace not in (0,1):
+ raise FormatError("Unknown interlace method %d,"
+ " see http://www.w3.org/TR/2003/REC-PNG-20031110/#8InterlaceMethods ."
+ % self.interlace)
+
+ # Derived values
+ # http://www.w3.org/TR/PNG/#6Colour-values
+ colormap = bool(self.color_type & 1)
+ greyscale = not (self.color_type & 2)
+ alpha = bool(self.color_type & 4)
+ color_planes = (3,1)[greyscale or colormap]
+ planes = color_planes + alpha
+
+ self.colormap = colormap
+ self.greyscale = greyscale
+ self.alpha = alpha
+ self.color_planes = color_planes
+ self.planes = planes
+ self.psize = float(self.bitdepth)/float(8) * planes
+ if int(self.psize) == self.psize:
+ self.psize = int(self.psize)
+ self.row_bytes = int(math.ceil(self.width * self.psize))
+ # Stores PLTE chunk if present, and is used to check
+ # chunk ordering constraints.
+ self.plte = None
+ # Stores tRNS chunk if present, and is used to check chunk
+ # ordering constraints.
+ self.trns = None
+ # Stores sbit chunk if present.
+ self.sbit = None
+
+ def _process_PLTE(self, data):
+ # http://www.w3.org/TR/PNG/#11PLTE
+ if self.plte:
+ warnings.warn("Multiple PLTE chunks present.")
+ self.plte = data
+ if len(data) % 3 != 0:
+ raise FormatError(
+ "PLTE chunk's length should be a multiple of 3.")
+ if len(data) > (2**self.bitdepth)*3:
+ raise FormatError("PLTE chunk is too long.")
+ if len(data) == 0:
+ raise FormatError("Empty PLTE is not allowed.")
+
+ def _process_bKGD(self, data):
+ try:
+ if self.colormap:
+ if not self.plte:
+ warnings.warn(
+ "PLTE chunk is required before bKGD chunk.")
+ self.background = struct.unpack('B', data)
+ else:
+ self.background = struct.unpack("!%dH" % self.color_planes,
+ data)
+ except struct.error:
+ raise FormatError("bKGD chunk has incorrect length.")
+
+ def _process_tRNS(self, data):
+ # http://www.w3.org/TR/PNG/#11tRNS
+ self.trns = data
+ if self.colormap:
+ if not self.plte:
+ warnings.warn("PLTE chunk is required before tRNS chunk.")
+ else:
+ if len(data) > len(self.plte)/3:
+ # Was warning, but promoted to Error as it
+ # would otherwise cause pain later on.
+ raise FormatError("tRNS chunk is too long.")
+ else:
+ if self.alpha:
+ raise FormatError(
+ "tRNS chunk is not valid with colour type %d." %
+ self.color_type)
+ try:
+ self.transparent = \
+ struct.unpack("!%dH" % self.color_planes, data)
+ except struct.error:
+ raise FormatError("tRNS chunk has incorrect length.")
+
+ def _process_gAMA(self, data):
+ try:
+ self.gamma = struct.unpack("!L", data)[0] / 100000.0
+ except struct.error:
+ raise FormatError("gAMA chunk has incorrect length.")
+
+ def _process_sBIT(self, data):
+ self.sbit = data
+ if (self.colormap and len(data) != 3 or
+ not self.colormap and len(data) != self.planes):
+ raise FormatError("sBIT chunk has incorrect length.")
+
+ def _process_pHYs(self, data):
+ # http://www.w3.org/TR/PNG/#11pHYs
+ self.phys = data
+ fmt = "!LLB"
+ if len(data) != struct.calcsize(fmt):
+ raise FormatError("pHYs chunk has incorrect length.")
+ self.x_pixels_per_unit, self.y_pixels_per_unit, unit = struct.unpack(fmt,data)
+ self.unit_is_meter = bool(unit)
+
+ def read(self, lenient=False):
+ """
+ Read the PNG file and decode it. Returns (`width`, `height`,
+ `pixels`, `metadata`).
+
+ May use excessive memory.
+
+ `pixels` are returned in boxed row flat pixel format.
+
+ If the optional `lenient` argument evaluates to True,
+ checksum failures will raise warnings rather than exceptions.
+ """
+
+ def iteridat():
+ """Iterator that yields all the ``IDAT`` chunks as strings."""
+ while True:
+ try:
+ type, data = self.chunk(lenient=lenient)
+ except ValueError:
+ raise ChunkError(sys.exc_info()[1].args[0])
+ if type == 'IEND':
+ # http://www.w3.org/TR/PNG/#11IEND
+ break
+ if type != 'IDAT':
+ continue
+ # type == 'IDAT'
+ # http://www.w3.org/TR/PNG/#11IDAT
+ if self.colormap and not self.plte:
+ warnings.warn("PLTE chunk is required before IDAT chunk")
+ yield data
+
+ def iterdecomp(idat):
+ """Iterator that yields decompressed strings. `idat` should
+ be an iterator that yields the ``IDAT`` chunk data.
+ """
+
+ # Currently, with no max_length parameter to decompress,
+ # this routine will do one yield per IDAT chunk: Not very
+ # incremental.
+ d = zlib.decompressobj()
+ # Each IDAT chunk is passed to the decompressor, then any
+ # remaining state is decompressed out.
+ for data in idat:
+ # :todo: add a max_length argument here to limit output
+ # size.
+ yield array('B', d.decompress(data))
+ yield array('B', d.flush())
+
+ self.preamble(lenient=lenient)
+ raw = iterdecomp(iteridat())
+ if self.interlace:
+ raw = array('B', itertools.chain(*raw))
+ arraycode = 'BH'[self.bitdepth>8]
+ # Like :meth:`group` but producing an array.array object for
+ # each row.
+ pixels = itertools.imap(lambda *row: array(arraycode, row),
+ *[iter(self.deinterlace(raw))]*self.width*self.planes)
+ else:
+ pixels = self.iterboxed(self.iterstraight(raw))
+ meta = dict()
+ for attr in 'greyscale alpha planes bitdepth interlace'.split():
+ meta[attr] = getattr(self, attr)
+ meta['size'] = (self.width, self.height)
+ for attr in 'gamma transparent background'.split():
+ a = getattr(self, attr, None)
+ if a is not None:
+ meta[attr] = a
+ if self.plte:
+ meta['palette'] = self.palette()
+ return self.width, self.height, pixels, meta
+
+
+ def read_flat(self):
+ """
+ Read a PNG file and decode it into flat row flat pixel format.
+ Returns (*width*, *height*, *pixels*, *metadata*).
+
+ May use excessive memory.
+
+ `pixels` are returned in flat row flat pixel format.
+
+ See also the :meth:`read` method which returns pixels in the
+ more stream-friendly boxed row flat pixel format.
+ """
+
+ x, y, pixel, meta = self.read()
+ arraycode = 'BH'[meta['bitdepth']>8]
+ pixel = array(arraycode, itertools.chain(*pixel))
+ return x, y, pixel, meta
+
+ def palette(self, alpha='natural'):
+ """Returns a palette that is a sequence of 3-tuples or 4-tuples,
+ synthesizing it from the ``PLTE`` and ``tRNS`` chunks. These
+ chunks should have already been processed (for example, by
+ calling the :meth:`preamble` method). All the tuples are the
+ same size: 3-tuples if there is no ``tRNS`` chunk, 4-tuples when
+ there is a ``tRNS`` chunk. Assumes that the image is colour type
+ 3 and therefore a ``PLTE`` chunk is required.
+
+ If the `alpha` argument is ``'force'`` then an alpha channel is
+ always added, forcing the result to be a sequence of 4-tuples.
+ """
+
+ if not self.plte:
+ raise FormatError(
+ "Required PLTE chunk is missing in colour type 3 image.")
+ plte = group(array('B', self.plte), 3)
+ if self.trns or alpha == 'force':
+ trns = array('B', self.trns or '')
+ trns.extend([255]*(len(plte)-len(trns)))
+ plte = map(operator.add, plte, group(trns, 1))
+ return plte
+
+ def asDirect(self):
+ """Returns the image data as a direct representation of an
+ ``x * y * planes`` array. This method is intended to remove the
+ need for callers to deal with palettes and transparency
+ themselves. Images with a palette (colour type 3)
+ are converted to RGB or RGBA; images with transparency (a
+ ``tRNS`` chunk) are converted to LA or RGBA as appropriate.
+ When returned in this format the pixel values represent the
+ colour value directly without needing to refer to palettes or
+ transparency information.
+
+ Like the :meth:`read` method this method returns a 4-tuple:
+
+ (*width*, *height*, *pixels*, *meta*)
+
+ This method normally returns pixel values with the bit depth
+ they have in the source image, but when the source PNG has an
+ ``sBIT`` chunk it is inspected and can reduce the bit depth of
+ the result pixels; pixel values will be reduced according to
+ the bit depth specified in the ``sBIT`` chunk (PNG nerds should
+ note a single result bit depth is used for all channels; the
+ maximum of the ones specified in the ``sBIT`` chunk. An RGB565
+ image will be rescaled to 6-bit RGB666).
+
+ The *meta* dictionary that is returned reflects the `direct`
+ format and not the original source image. For example, an RGB
+ source image with a ``tRNS`` chunk to represent a transparent
+ colour, will have ``planes=3`` and ``alpha=False`` for the
+ source image, but the *meta* dictionary returned by this method
+ will have ``planes=4`` and ``alpha=True`` because an alpha
+ channel is synthesized and added.
+
+ *pixels* is the pixel data in boxed row flat pixel format (just
+ like the :meth:`read` method).
+
+ All the other aspects of the image data are not changed.
+ """
+
+ self.preamble()
+
+ # Simple case, no conversion necessary.
+ if not self.colormap and not self.trns and not self.sbit:
+ return self.read()
+
+ x,y,pixels,meta = self.read()
+
+ if self.colormap:
+ meta['colormap'] = False
+ meta['alpha'] = bool(self.trns)
+ meta['bitdepth'] = 8
+ meta['planes'] = 3 + bool(self.trns)
+ plte = list(self.palette())
+ def iterpal(pixels):
+ for row in pixels:
+ row = list(map(plte.__getitem__, row))
+ yield array('B', itertools.chain(*row))
+ pixels = iterpal(pixels)
+ elif self.trns:
+ # It would be nice if there was some reasonable way
+ # of doing this without generating a whole load of
+ # intermediate tuples. But tuples does seem like the
+ # easiest way, with no other way clearly much simpler or
+ # much faster. (Actually, the L to LA conversion could
+ # perhaps go faster (all those 1-tuples!), but I still
+ # wonder whether the code proliferation is worth it)
+ it = self.transparent
+ maxval = 2**meta['bitdepth']-1
+ planes = meta['planes']
+ meta['alpha'] = True
+ meta['planes'] += 1
+ typecode = 'BH'[meta['bitdepth']>8]
+ def itertrns(pixels):
+ for row in pixels:
+ # For each row we group it into pixels, then form a
+ # characterisation vector that says whether each
+ # pixel is opaque or not. Then we convert
+ # True/False to 0/maxval (by multiplication),
+ # and add it as the extra channel.
+ row = group(row, planes)
+ opa = map(it.__ne__, row)
+ opa = map(maxval.__mul__, opa)
+ opa = zip(opa) # convert to 1-tuples
+ yield array(typecode,
+ itertools.chain(*map(operator.add, row, opa)))
+ pixels = itertrns(pixels)
+ targetbitdepth = None
+ if self.sbit:
+ sbit = struct.unpack('%dB' % len(self.sbit), self.sbit)
+ targetbitdepth = max(sbit)
+ if targetbitdepth > meta['bitdepth']:
+ raise Error('sBIT chunk %r exceeds bitdepth %d' %
+ (sbit,self.bitdepth))
+ if min(sbit) <= 0:
+ raise Error('sBIT chunk %r has a 0-entry' % sbit)
+ if targetbitdepth == meta['bitdepth']:
+ targetbitdepth = None
+ if targetbitdepth:
+ shift = meta['bitdepth'] - targetbitdepth
+ meta['bitdepth'] = targetbitdepth
+ def itershift(pixels):
+ for row in pixels:
+ yield map(shift.__rrshift__, row)
+ pixels = itershift(pixels)
+ return x,y,pixels,meta
+
+ def asFloat(self, maxval=1.0):
+ """Return image pixels as per :meth:`asDirect` method, but scale
+ all pixel values to be floating point values between 0.0 and
+ *maxval*.
+ """
+
+ x,y,pixels,info = self.asDirect()
+ sourcemaxval = 2**info['bitdepth']-1
+ del info['bitdepth']
+ info['maxval'] = float(maxval)
+ factor = float(maxval)/float(sourcemaxval)
+ def iterfloat():
+ for row in pixels:
+ yield map(factor.__mul__, row)
+ return x,y,iterfloat(),info
+
+ def _as_rescale(self, get, targetbitdepth):
+ """Helper used by :meth:`asRGB8` and :meth:`asRGBA8`."""
+
+ width,height,pixels,meta = get()
+ maxval = 2**meta['bitdepth'] - 1
+ targetmaxval = 2**targetbitdepth - 1
+ factor = float(targetmaxval) / float(maxval)
+ meta['bitdepth'] = targetbitdepth
+ def iterscale():
+ for row in pixels:
+ yield map(lambda x: int(round(x*factor)), row)
+ if maxval == targetmaxval:
+ return width, height, pixels, meta
+ else:
+ return width, height, iterscale(), meta
+
+ def asRGB8(self):
+ """Return the image data as an RGB pixels with 8-bits per
+ sample. This is like the :meth:`asRGB` method except that
+ this method additionally rescales the values so that they
+ are all between 0 and 255 (8-bit). In the case where the
+ source image has a bit depth < 8 the transformation preserves
+ all the information; where the source image has bit depth
+ > 8, then rescaling to 8-bit values loses precision. No
+ dithering is performed. Like :meth:`asRGB`, an alpha channel
+ in the source image will raise an exception.
+
+ This function returns a 4-tuple:
+ (*width*, *height*, *pixels*, *metadata*).
+ *width*, *height*, *metadata* are as per the
+ :meth:`read` method.
+
+ *pixels* is the pixel data in boxed row flat pixel format.
+ """
+
+ return self._as_rescale(self.asRGB, 8)
+
+ def asRGBA8(self):
+ """Return the image data as RGBA pixels with 8-bits per
+ sample. This method is similar to :meth:`asRGB8` and
+ :meth:`asRGBA`: The result pixels have an alpha channel, *and*
+ values are rescaled to the range 0 to 255. The alpha channel is
+ synthesized if necessary (with a small speed penalty).
+ """
+
+ return self._as_rescale(self.asRGBA, 8)
+
+ def asRGB(self):
+ """Return image as RGB pixels. RGB colour images are passed
+ through unchanged; greyscales are expanded into RGB
+ triplets (there is a small speed overhead for doing this).
+
+ An alpha channel in the source image will raise an
+ exception.
+
+ The return values are as for the :meth:`read` method
+ except that the *metadata* reflect the returned pixels, not the
+ source image. In particular, for this method
+ ``metadata['greyscale']`` will be ``False``.
+ """
+
+ width,height,pixels,meta = self.asDirect()
+ if meta['alpha']:
+ raise Error("will not convert image with alpha channel to RGB")
+ if not meta['greyscale']:
+ return width,height,pixels,meta
+ meta['greyscale'] = False
+ typecode = 'BH'[meta['bitdepth'] > 8]
+ def iterrgb():
+ for row in pixels:
+ a = array(typecode, [0]) * 3 * width
+ for i in range(3):
+ a[i::3] = row
+ yield a
+ return width,height,iterrgb(),meta
+
+ def asRGBA(self):
+ """Return image as RGBA pixels. Greyscales are expanded into
+ RGB triplets; an alpha channel is synthesized if necessary.
+ The return values are as for the :meth:`read` method
+ except that the *metadata* reflect the returned pixels, not the
+ source image. In particular, for this method
+ ``metadata['greyscale']`` will be ``False``, and
+ ``metadata['alpha']`` will be ``True``.
+ """
+
+ width,height,pixels,meta = self.asDirect()
+ if meta['alpha'] and not meta['greyscale']:
+ return width,height,pixels,meta
+ typecode = 'BH'[meta['bitdepth'] > 8]
+ maxval = 2**meta['bitdepth'] - 1
+ maxbuffer = struct.pack('=' + typecode, maxval) * 4 * width
+ def newarray():
+ return array(typecode, maxbuffer)
+
+ if meta['alpha'] and meta['greyscale']:
+ # LA to RGBA
+ def convert():
+ for row in pixels:
+ # Create a fresh target row, then copy L channel
+ # into first three target channels, and A channel
+ # into fourth channel.
+ a = newarray()
+ pngfilters.convert_la_to_rgba(row, a)
+ yield a
+ elif meta['greyscale']:
+ # L to RGBA
+ def convert():
+ for row in pixels:
+ a = newarray()
+ pngfilters.convert_l_to_rgba(row, a)
+ yield a
+ else:
+ assert not meta['alpha'] and not meta['greyscale']
+ # RGB to RGBA
+ def convert():
+ for row in pixels:
+ a = newarray()
+ pngfilters.convert_rgb_to_rgba(row, a)
+ yield a
+ meta['alpha'] = True
+ meta['greyscale'] = False
+ return width,height,convert(),meta
+
+def check_bitdepth_colortype(bitdepth, colortype):
+ """Check that `bitdepth` and `colortype` are both valid,
+ and specified in a valid combination. Returns if valid,
+ raise an Exception if not valid.
+ """
+
+ if bitdepth not in (1,2,4,8,16):
+ raise FormatError("invalid bit depth %d" % bitdepth)
+ if colortype not in (0,2,3,4,6):
+ raise FormatError("invalid colour type %d" % colortype)
+ # Check indexed (palettized) images have 8 or fewer bits
+ # per pixel; check only indexed or greyscale images have
+ # fewer than 8 bits per pixel.
+ if colortype & 1 and bitdepth > 8:
+ raise FormatError(
+ "Indexed images (colour type %d) cannot"
+ " have bitdepth > 8 (bit depth %d)."
+ " See http://www.w3.org/TR/2003/REC-PNG-20031110/#table111 ."
+ % (bitdepth, colortype))
+ if bitdepth < 8 and colortype not in (0,3):
+ raise FormatError("Illegal combination of bit depth (%d)"
+ " and colour type (%d)."
+ " See http://www.w3.org/TR/2003/REC-PNG-20031110/#table111 ."
+ % (bitdepth, colortype))
+
+def isinteger(x):
+ try:
+ return int(x) == x
+ except (TypeError, ValueError):
+ return False
+
+
+# === Legacy Version Support ===
+
+# :pyver:old: PyPNG works on Python versions 2.3 and 2.2, but not
+# without some awkward problems. Really PyPNG works on Python 2.4 (and
+# above); it works on Pythons 2.3 and 2.2 by virtue of fixing up
+# problems here. It's a bit ugly (which is why it's hidden down here).
+#
+# Generally the strategy is one of pretending that we're running on
+# Python 2.4 (or above), and patching up the library support on earlier
+# versions so that it looks enough like Python 2.4. When it comes to
+# Python 2.2 there is one thing we cannot patch: extended slices
+# http://www.python.org/doc/2.3/whatsnew/section-slices.html.
+# Instead we simply declare that features that are implemented using
+# extended slices will not work on Python 2.2.
+#
+# In order to work on Python 2.3 we fix up a recurring annoyance involving
+# the array type. In Python 2.3 an array cannot be initialised with an
+# array, and it cannot be extended with a list (or other sequence).
+# Both of those are repeated issues in the code. Whilst I would not
+# normally tolerate this sort of behaviour, here we "shim" a replacement
+# for array into place (and hope no-one notices). You never read this.
+#
+# In an amusing case of warty hacks on top of warty hacks... the array
+# shimming we try and do only works on Python 2.3 and above (you can't
+# subclass array.array in Python 2.2). So to get it working on Python
+# 2.2 we go for something much simpler and (probably) way slower.
+try:
+ array('B').extend([])
+ array('B', array('B'))
+# :todo:(drj) Check that TypeError is correct for Python 2.3
+except TypeError:
+ # Expect to get here on Python 2.3
+ try:
+ class _array_shim(array):
+ true_array = array
+ def __new__(cls, typecode, init=None):
+ super_new = super(_array_shim, cls).__new__
+ it = super_new(cls, typecode)
+ if init is None:
+ return it
+ it.extend(init)
+ return it
+ def extend(self, extension):
+ super_extend = super(_array_shim, self).extend
+ if isinstance(extension, self.true_array):
+ return super_extend(extension)
+ if not isinstance(extension, (list, str)):
+ # Convert to list. Allows iterators to work.
+ extension = list(extension)
+ return super_extend(self.true_array(self.typecode, extension))
+ array = _array_shim
+ except TypeError:
+ # Expect to get here on Python 2.2
+ def array(typecode, init=()):
+ if type(init) == str:
+ return map(ord, init)
+ return list(init)
+
+# Further hacks to get it limping along on Python 2.2
+try:
+ enumerate
+except NameError:
+ def enumerate(seq):
+ i=0
+ for x in seq:
+ yield i,x
+ i += 1
+
+try:
+ reversed
+except NameError:
+ def reversed(l):
+ l = list(l)
+ l.reverse()
+ for x in l:
+ yield x
+
+try:
+ itertools
+except NameError:
+ class _dummy_itertools:
+ pass
+ itertools = _dummy_itertools()
+ def _itertools_imap(f, seq):
+ for x in seq:
+ yield f(x)
+ itertools.imap = _itertools_imap
+ def _itertools_chain(*iterables):
+ for it in iterables:
+ for element in it:
+ yield element
+ itertools.chain = _itertools_chain
+
+
+# === Support for users without Cython ===
+
+try:
+ pngfilters
+except NameError:
+ class pngfilters(object):
+ def undo_filter_sub(filter_unit, scanline, previous, result):
+ """Undo sub filter."""
+
+ ai = 0
+ # Loops starts at index fu. Observe that the initial part
+ # of the result is already filled in correctly with
+ # scanline.
+ for i in range(filter_unit, len(result)):
+ x = scanline[i]
+ a = result[ai]
+ result[i] = (x + a) & 0xff
+ ai += 1
+ undo_filter_sub = staticmethod(undo_filter_sub)
+
+ def undo_filter_up(filter_unit, scanline, previous, result):
+ """Undo up filter."""
+
+ for i in range(len(result)):
+ x = scanline[i]
+ b = previous[i]
+ result[i] = (x + b) & 0xff
+ undo_filter_up = staticmethod(undo_filter_up)
+
+ def undo_filter_average(filter_unit, scanline, previous, result):
+ """Undo up filter."""
+
+ ai = -filter_unit
+ for i in range(len(result)):
+ x = scanline[i]
+ if ai < 0:
+ a = 0
+ else:
+ a = result[ai]
+ b = previous[i]
+ result[i] = (x + ((a + b) >> 1)) & 0xff
+ ai += 1
+ undo_filter_average = staticmethod(undo_filter_average)
+
+ def undo_filter_paeth(filter_unit, scanline, previous, result):
+ """Undo Paeth filter."""
+
+ # Also used for ci.
+ ai = -filter_unit
+ for i in range(len(result)):
+ x = scanline[i]
+ if ai < 0:
+ a = c = 0
+ else:
+ a = result[ai]
+ c = previous[ai]
+ b = previous[i]
+ p = a + b - c
+ pa = abs(p - a)
+ pb = abs(p - b)
+ pc = abs(p - c)
+ if pa <= pb and pa <= pc:
+ pr = a
+ elif pb <= pc:
+ pr = b
+ else:
+ pr = c
+ result[i] = (x + pr) & 0xff
+ ai += 1
+ undo_filter_paeth = staticmethod(undo_filter_paeth)
+
+ def convert_la_to_rgba(row, result):
+ for i in range(3):
+ result[i::4] = row[0::2]
+ result[3::4] = row[1::2]
+ convert_la_to_rgba = staticmethod(convert_la_to_rgba)
+
+ def convert_l_to_rgba(row, result):
+ """Convert a grayscale image to RGBA. This method assumes
+ the alpha channel in result is already correctly
+ initialized.
+ """
+ for i in range(3):
+ result[i::4] = row
+ convert_l_to_rgba = staticmethod(convert_l_to_rgba)
+
+ def convert_rgb_to_rgba(row, result):
+ """Convert an RGB image to RGBA. This method assumes the
+ alpha channel in result is already correctly initialized.
+ """
+ for i in range(3):
+ result[i::4] = row[i::3]
+ convert_rgb_to_rgba = staticmethod(convert_rgb_to_rgba)
+
+
+# === Command Line Support ===
+
+def read_pam_header(infile):
+ """
+ Read (the rest of a) PAM header. `infile` should be positioned
+ immediately after the initial 'P7' line (at the beginning of the
+ second line). Returns are as for `read_pnm_header`.
+ """
+
+ # Unlike PBM, PGM, and PPM, we can read the header a line at a time.
+ header = dict()
+ while True:
+ l = infile.readline().strip()
+ if l == strtobytes('ENDHDR'):
+ break
+ if not l:
+ raise EOFError('PAM ended prematurely')
+ if l[0] == strtobytes('#'):
+ continue
+ l = l.split(None, 1)
+ if l[0] not in header:
+ header[l[0]] = l[1]
+ else:
+ header[l[0]] += strtobytes(' ') + l[1]
+
+ required = ['WIDTH', 'HEIGHT', 'DEPTH', 'MAXVAL']
+ required = [strtobytes(x) for x in required]
+ WIDTH,HEIGHT,DEPTH,MAXVAL = required
+ present = [x for x in required if x in header]
+ if len(present) != len(required):
+ raise Error('PAM file must specify WIDTH, HEIGHT, DEPTH, and MAXVAL')
+ width = int(header[WIDTH])
+ height = int(header[HEIGHT])
+ depth = int(header[DEPTH])
+ maxval = int(header[MAXVAL])
+ if (width <= 0 or
+ height <= 0 or
+ depth <= 0 or
+ maxval <= 0):
+ raise Error(
+ 'WIDTH, HEIGHT, DEPTH, MAXVAL must all be positive integers')
+ return 'P7', width, height, depth, maxval
+
+def read_pnm_header(infile, supported=('P5','P6')):
+ """
+ Read a PNM header, returning (format,width,height,depth,maxval).
+ `width` and `height` are in pixels. `depth` is the number of
+ channels in the image; for PBM and PGM it is synthesized as 1, for
+ PPM as 3; for PAM images it is read from the header. `maxval` is
+ synthesized (as 1) for PBM images.
+ """
+
+ # Generally, see http://netpbm.sourceforge.net/doc/ppm.html
+ # and http://netpbm.sourceforge.net/doc/pam.html
+
+ supported = [strtobytes(x) for x in supported]
+
+ # Technically 'P7' must be followed by a newline, so by using
+ # rstrip() we are being liberal in what we accept. I think this
+ # is acceptable.
+ type = infile.read(3).rstrip()
+ if type not in supported:
+ raise NotImplementedError('file format %s not supported' % type)
+ if type == strtobytes('P7'):
+ # PAM header parsing is completely different.
+ return read_pam_header(infile)
+ # Expected number of tokens in header (3 for P4, 4 for P6)
+ expected = 4
+ pbm = ('P1', 'P4')
+ if type in pbm:
+ expected = 3
+ header = [type]
+
+ # We have to read the rest of the header byte by byte because the
+ # final whitespace character (immediately following the MAXVAL in
+ # the case of P6) may not be a newline. Of course all PNM files in
+ # the wild use a newline at this point, so it's tempting to use
+ # readline; but it would be wrong.
+ def getc():
+ c = infile.read(1)
+ if not c:
+ raise Error('premature EOF reading PNM header')
+ return c
+
+ c = getc()
+ while True:
+ # Skip whitespace that precedes a token.
+ while c.isspace():
+ c = getc()
+ # Skip comments.
+ while c == '#':
+ while c not in '\n\r':
+ c = getc()
+ if not c.isdigit():
+ raise Error('unexpected character %s found in header' % c)
+ # According to the specification it is legal to have comments
+ # that appear in the middle of a token.
+ # This is bonkers; I've never seen it; and it's a bit awkward to
+ # code good lexers in Python (no goto). So we break on such
+ # cases.
+ token = strtobytes('')
+ while c.isdigit():
+ token += c
+ c = getc()
+ # Slight hack. All "tokens" are decimal integers, so convert
+ # them here.
+ header.append(int(token))
+ if len(header) == expected:
+ break
+ # Skip comments (again)
+ while c == '#':
+ while c not in '\n\r':
+ c = getc()
+ if not c.isspace():
+ raise Error('expected header to end with whitespace, not %s' % c)
+
+ if type in pbm:
+ # synthesize a MAXVAL
+ header.append(1)
+ depth = (1,3)[type == strtobytes('P6')]
+ return header[0], header[1], header[2], depth, header[3]
+
+def write_pnm(file, width, height, pixels, meta):
+ """Write a Netpbm PNM/PAM file.
+ """
+
+ bitdepth = meta['bitdepth']
+ maxval = 2**bitdepth - 1
+ # Rudely, the number of image planes can be used to determine
+ # whether we are L (PGM), LA (PAM), RGB (PPM), or RGBA (PAM).
+ planes = meta['planes']
+ # Can be an assert as long as we assume that pixels and meta came
+ # from a PNG file.
+ assert planes in (1,2,3,4)
+ if planes in (1,3):
+ if 1 == planes:
+ # PGM
+ # Could generate PBM if maxval is 1, but we don't (for one
+ # thing, we'd have to convert the data, not just blat it
+ # out).
+ fmt = 'P5'
+ else:
+ # PPM
+ fmt = 'P6'
+ header = '%s %d %d %d\n' % (fmt, width, height, maxval)
+ if planes in (2,4):
+ # PAM
+ # See http://netpbm.sourceforge.net/doc/pam.html
+ if 2 == planes:
+ tupltype = 'GRAYSCALE_ALPHA'
+ else:
+ tupltype = 'RGB_ALPHA'
+ header = ('P7\nWIDTH %d\nHEIGHT %d\nDEPTH %d\nMAXVAL %d\n'
+ 'TUPLTYPE %s\nENDHDR\n' %
+ (width, height, planes, maxval, tupltype))
+ file.write(header.encode('ascii'))
+ # Values per row
+ vpr = planes * width
+ # struct format
+ fmt = '>%d' % vpr
+ if maxval > 0xff:
+ fmt = fmt + 'H'
+ else:
+ fmt = fmt + 'B'
+ for row in pixels:
+ file.write(struct.pack(fmt, *row))
+ file.flush()
+
+def color_triple(color):
+ """
+ Convert a command line colour value to a RGB triple of integers.
+ FIXME: Somewhere we need support for greyscale backgrounds etc.
+ """
+ if color.startswith('#') and len(color) == 4:
+ return (int(color[1], 16),
+ int(color[2], 16),
+ int(color[3], 16))
+ if color.startswith('#') and len(color) == 7:
+ return (int(color[1:3], 16),
+ int(color[3:5], 16),
+ int(color[5:7], 16))
+ elif color.startswith('#') and len(color) == 13:
+ return (int(color[1:5], 16),
+ int(color[5:9], 16),
+ int(color[9:13], 16))
+
+def _add_common_options(parser):
+ """Call *parser.add_option* for each of the options that are
+ common between this PNG--PNM conversion tool and the gen
+ tool.
+ """
+ parser.add_option("-i", "--interlace",
+ default=False, action="store_true",
+ help="create an interlaced PNG file (Adam7)")
+ parser.add_option("-t", "--transparent",
+ action="store", type="string", metavar="#RRGGBB",
+ help="mark the specified colour as transparent")
+ parser.add_option("-b", "--background",
+ action="store", type="string", metavar="#RRGGBB",
+ help="save the specified background colour")
+ parser.add_option("-g", "--gamma",
+ action="store", type="float", metavar="value",
+ help="save the specified gamma value")
+ parser.add_option("-c", "--compression",
+ action="store", type="int", metavar="level",
+ help="zlib compression level (0-9)")
+ return parser
+
+def _main(argv):
+ """
+ Run the PNG encoder with options from the command line.
+ """
+
+ # Parse command line arguments
+ from optparse import OptionParser
+ version = '%prog ' + __version__
+ parser = OptionParser(version=version)
+ parser.set_usage("%prog [options] [imagefile]")
+ parser.add_option('-r', '--read-png', default=False,
+ action='store_true',
+ help='Read PNG, write PNM')
+ parser.add_option("-a", "--alpha",
+ action="store", type="string", metavar="pgmfile",
+ help="alpha channel transparency (RGBA)")
+ _add_common_options(parser)
+
+ (options, args) = parser.parse_args(args=argv[1:])
+
+ # Convert options
+ if options.transparent is not None:
+ options.transparent = color_triple(options.transparent)
+ if options.background is not None:
+ options.background = color_triple(options.background)
+
+ # Prepare input and output files
+ if len(args) == 0:
+ infilename = '-'
+ infile = sys.stdin
+ elif len(args) == 1:
+ infilename = args[0]
+ infile = open(infilename, 'rb')
+ else:
+ parser.error("more than one input file")
+ outfile = sys.stdout
+ if sys.platform == "win32":
+ import msvcrt, os
+ msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
+
+ if options.read_png:
+ # Encode PNG to PPM
+ png = Reader(file=infile)
+ width,height,pixels,meta = png.asDirect()
+ write_pnm(outfile, width, height, pixels, meta)
+ else:
+ # Encode PNM to PNG
+ format, width, height, depth, maxval = \
+ read_pnm_header(infile, ('P5','P6','P7'))
+ # When it comes to the variety of input formats, we do something
+ # rather rude. Observe that L, LA, RGB, RGBA are the 4 colour
+ # types supported by PNG and that they correspond to 1, 2, 3, 4
+ # channels respectively. So we use the number of channels in
+ # the source image to determine which one we have. We do not
+ # care about TUPLTYPE.
+ greyscale = depth <= 2
+ pamalpha = depth in (2,4)
+ supported = map(lambda x: 2**x-1, range(1,17))
+ try:
+ mi = supported.index(maxval)
+ except ValueError:
+ raise NotImplementedError(
+ 'your maxval (%s) not in supported list %s' %
+ (maxval, str(supported)))
+ bitdepth = mi+1
+ writer = Writer(width, height,
+ greyscale=greyscale,
+ bitdepth=bitdepth,
+ interlace=options.interlace,
+ transparent=options.transparent,
+ background=options.background,
+ alpha=bool(pamalpha or options.alpha),
+ gamma=options.gamma,
+ compression=options.compression)
+ if options.alpha:
+ pgmfile = open(options.alpha, 'rb')
+ format, awidth, aheight, adepth, amaxval = \
+ read_pnm_header(pgmfile, 'P5')
+ if amaxval != '255':
+ raise NotImplementedError(
+ 'maxval %s not supported for alpha channel' % amaxval)
+ if (awidth, aheight) != (width, height):
+ raise ValueError("alpha channel image size mismatch"
+ " (%s has %sx%s but %s has %sx%s)"
+ % (infilename, width, height,
+ options.alpha, awidth, aheight))
+ writer.convert_ppm_and_pgm(infile, pgmfile, outfile)
+ else:
+ writer.convert_pnm(infile, outfile)
+
+
+if __name__ == '__main__':
+ try:
+ _main(sys.argv)
+ except Error:
+ e = sys.exc_info()[1]
+ print(e, file=sys.stderr)
diff --git a/docs/release/scripts/build/png2bdc.py b/docs/release/scripts/build/png2bdc.py
new file mode 100644
index 00000000000..adc4b185f44
--- /dev/null
+++ b/docs/release/scripts/build/png2bdc.py
@@ -0,0 +1,387 @@
+#!/usr/bin/env python3
+##
+## license:BSD-3-Clause
+## copyright-holders:Aaron Giles, Andrew Gardner
+## ****************************************************************************
+##
+## png2bdc.c
+##
+## Super-simple PNG to BDC file generator
+##
+## ****************************************************************************
+##
+## Format of PNG data:
+##
+## Multiple rows of characters. A black pixel means "on". All other colors
+## mean "off". Each row looks like this:
+##
+## * 8888 *** *
+## * 4444 * * **
+## * 2222 * * *
+## * 1111 * * *
+## * * * *
+## ** *** ***
+## *
+## *
+##
+## ****** ****
+##
+## The column of pixels on the left-hand side (column 0) indicates the
+## character cell height. This column must be present on each row and
+## the height must be consistent for each row.
+##
+## Protruding one pixel into column 1 is the baseline indicator. There
+## should only be one row with a pixel in column 1 for each line, and
+## that pixel row index should be consistent for each row.
+##
+## In columns 2-5 are a 4-hex-digit starting character index number. This
+## is encoded as binary value. Each column is 4 pixels tall and represents
+## one binary digit. The character index number is the unicode character
+## number of the first character encoded in this row; subsequent
+## characters in the row are at increasing character indices.
+##
+## Starting in column 6 and beyond are the actual character bitmaps.
+## Below them, in the second row after the last row of the character,
+## is a solid line that indicates the width of the character, and also
+## where the character bitmap begins and ends.
+##
+## ***************************************************************************
+
+##
+## Python note:
+## This is a near-literal translation of the original C++ code. As such there
+## are some very non-pythonic things done throughout. The conversion was done
+## this way so as to insure compatibility as much as possible given the small
+## number of test cases.
+##
+
+import os
+import png
+import sys
+
+def b2p(v):
+ return bytes([v])
+
+
+########################################
+## Helper classes
+########################################
+class RenderFontChar:
+ """
+ Contains information about a single character in a font.
+ """
+
+ def __init__(self):
+ """
+ """
+ self.width = 0 # width from this character to the next
+ self.xOffs = 0 # X offset from baseline to top,left of bitmap
+ self.yOffs = 0 # Y offset from baseline to top,left of bitmap
+ self.bmWidth = 0 # width of bitmap
+ self.bmHeight = 0 # height of bitmap
+ self.bitmap = None # pointer to the bitmap containing the raw data
+
+
+class RenderFont:
+ """
+ Contains information about a font
+ """
+
+ def __init__(self):
+ self.height = 0 # height of the font, from ascent to descent
+ self.yOffs = 0 # y offset from baseline to descent
+ self.defChar = -1 # default character for glyphs not present
+ self.chars = list() # array of characters
+ for i in range(0, 65536):
+ self.chars.append(RenderFontChar())
+
+
+
+########################################
+## Helper functions
+########################################
+def pixelIsSet(value):
+ return (value & 0xffffff) == 0
+
+
+def renderFontSaveCached(font, filename, length64, hash32):
+ """
+ """
+ fp = open(filename, "wb")
+ if not fp:
+ return 1
+
+ # Write the header
+ numChars = 0
+ for c in font.chars:
+ if c.width > 0:
+ numChars += 1
+
+ CACHED_CHAR_SIZE = 16
+ CACHED_HEADER_SIZE = 32
+
+ try:
+ fp.write(b'b')
+ fp.write(b'd')
+ fp.write(b'c')
+ fp.write(b'f')
+ fp.write(b'n')
+ fp.write(b't')
+ fp.write(b2p(1))
+ fp.write(b2p(0))
+ fp.write(b2p(length64 >> 56 & 0xff))
+ fp.write(b2p(length64 >> 48 & 0xff))
+ fp.write(b2p(length64 >> 40 & 0xff))
+ fp.write(b2p(length64 >> 32 & 0xff))
+ fp.write(b2p(length64 >> 24 & 0xff))
+ fp.write(b2p(length64 >> 16 & 0xff))
+ fp.write(b2p(length64 >> 8 & 0xff))
+ fp.write(b2p(length64 >> 0 & 0xff))
+ fp.write(b2p(hash32 >> 24 & 0xff))
+ fp.write(b2p(hash32 >> 16 & 0xff))
+ fp.write(b2p(hash32 >> 8 & 0xff))
+ fp.write(b2p(hash32 >> 0 & 0xff))
+ fp.write(b2p(numChars >> 24 & 0xff))
+ fp.write(b2p(numChars >> 16 & 0xff))
+ fp.write(b2p(numChars >> 8 & 0xff))
+ fp.write(b2p(numChars >> 0 & 0xff))
+ fp.write(b2p(font.height >> 8 & 0xff))
+ fp.write(b2p(font.height >> 0 & 0xff))
+ fp.write(b2p(font.yOffs >> 8 & 0xff))
+ fp.write(b2p(font.yOffs >> 0 & 0xff))
+ fp.write(b2p(font.defChar >> 24 & 0xff))
+ fp.write(b2p(font.defChar >> 16 & 0xff))
+ fp.write(b2p(font.defChar >> 8 & 0xff))
+ fp.write(b2p(font.defChar >> 0 & 0xff))
+
+ # Write a blank table at first (?)
+ charTable = [0]*(numChars * CACHED_CHAR_SIZE)
+ for i in range(numChars * CACHED_CHAR_SIZE):
+ fp.write(b2p(charTable[i]))
+
+ # Loop over all characters
+ tableIndex = 0
+
+ for i in range(len(font.chars)):
+ c = font.chars[i]
+ if c.width == 0:
+ continue
+
+ if c.bitmap:
+ dBuffer = list()
+ accum = 0
+ accbit = 7
+
+ # Bit-encode the character data
+ for y in range(0, c.bmHeight):
+ src = None
+ desty = y + font.height + font.yOffs - c.yOffs - c.bmHeight
+ if desty >= 0 and desty < font.height:
+ src = c.bitmap[desty]
+ for x in range(0, c.bmWidth):
+ if src is not None and src[x] != 0:
+ accum |= 1 << accbit
+ accbit -= 1
+ if accbit+1 == 0:
+ dBuffer.append(accum)
+ accum = 0
+ accbit = 7
+
+ # Flush any extra
+ if accbit != 7:
+ dBuffer.append(accum)
+
+ # Write the data
+ for j in range(len(dBuffer)):
+ fp.write(b2p(dBuffer[j]))
+
+ destIndex = tableIndex * CACHED_CHAR_SIZE
+ charTable[destIndex + 0] = i >> 24 & 0xff
+ charTable[destIndex + 1] = i >> 16 & 0xff
+ charTable[destIndex + 2] = i >> 8 & 0xff
+ charTable[destIndex + 3] = i >> 0 & 0xff
+ charTable[destIndex + 4] = c.width >> 8 & 0xff
+ charTable[destIndex + 5] = c.width >> 0 & 0xff
+ charTable[destIndex + 8] = c.xOffs >> 8 & 0xff
+ charTable[destIndex + 9] = c.xOffs >> 0 & 0xff
+ charTable[destIndex + 10] = c.yOffs >> 8 & 0xff
+ charTable[destIndex + 11] = c.yOffs >> 0 & 0xff
+ charTable[destIndex + 12] = c.bmWidth >> 8 & 0xff
+ charTable[destIndex + 13] = c.bmWidth >> 0 & 0xff
+ charTable[destIndex + 14] = c.bmHeight >> 8 & 0xff
+ charTable[destIndex + 15] = c.bmHeight >> 0 & 0xff
+ tableIndex += 1
+
+ # Seek back to the beginning and rewrite the table
+ fp.seek(CACHED_HEADER_SIZE, 0)
+ for i in range(numChars * CACHED_CHAR_SIZE):
+ fp.write(b2p(charTable[i]))
+
+ fp.close()
+ return 0
+
+ except:
+ print(sys.exc_info[1])
+ return 1
+
+
+def bitmapToChars(pngObject, font):
+ """
+ Convert a bitmap to characters in the given font
+ """
+ # Just cache the bitmap into a list of lists since random access is paramount
+ bitmap = list()
+ width = pngObject.asRGBA8()[0]
+ height = pngObject.asRGBA8()[1]
+ rowGenerator = pngObject.asRGBA8()[2]
+ for row in rowGenerator:
+ cRow = list()
+ irpd = iter(row)
+ for r,g,b,a in zip(irpd, irpd, irpd, irpd):
+ cRow.append(a << 24 | r << 16 | g << 8 | b)
+ bitmap.append(cRow)
+
+ rowStart = 0
+ while rowStart < height:
+ # Find the top of the row
+ for i in range(rowStart, height):
+ if pixelIsSet(bitmap[rowStart][0]):
+ break
+ rowStart += 1
+ if rowStart >= height:
+ break
+
+ # Find the bottom of the row
+ rowEnd = rowStart + 1
+ for i in range(rowEnd, height):
+ if not pixelIsSet(bitmap[rowEnd][0]):
+ rowEnd -= 1
+ break
+ rowEnd += 1
+
+ # Find the baseline
+ baseline = rowStart
+ for i in range(rowStart, rowEnd+1):
+ if pixelIsSet(bitmap[baseline][1]):
+ break
+ baseline += 1
+ if baseline > rowEnd:
+ sys.stderr.write("No baseline found between rows %d-%d\n" % (rowStart, rowEnd))
+ break
+
+ # Set or confirm the height
+ if font.height == 0:
+ font.height = rowEnd - rowStart + 1
+ font.yOffs = baseline - rowEnd
+ else:
+ if font.height != (rowEnd - rowStart + 1):
+ sys.stderr.write("Inconsistent font height at rows %d-%d\n" % (rowStart, rowEnd))
+ break
+ if font.yOffs != (baseline - rowEnd):
+ sys.stderr.write("Inconsistent baseline at rows %d-%d\n" % (rowStart, rowEnd))
+ break
+
+ # decode the starting character
+ chStart = 0
+ for x in range(0, 4):
+ for y in range(0, 4):
+ chStart = (chStart << 1) | pixelIsSet(bitmap[rowStart+y][2+x])
+
+ # Print debug info
+ # print("Row %d-%d, baseline %d, character start %X" % (rowStart, rowEnd, baseline, chStart))
+
+ # scan the column to find characters
+ colStart = 0
+ while colStart < width:
+ ch = RenderFontChar()
+
+ # Find the start of the character
+ for i in range(colStart, width):
+ if pixelIsSet(bitmap[rowEnd+2][colStart]):
+ break
+ colStart += 1
+ if colStart >= width:
+ break
+
+ # Find the end of the character
+ colEnd = colStart + 1
+ for i in range(colEnd, width):
+ if not pixelIsSet(bitmap[rowEnd+2][colEnd]):
+ colEnd -= 1
+ break
+ colEnd += 1
+
+ # Skip char which code is already registered
+ if ch.width <= 0:
+ # Print debug info
+ # print " Character %X - width = %d" % (chStart, colEnd - colStart + 1)
+
+ # Plot the character
+ ch.bitmap = list()
+ for y in range(rowStart, rowEnd+1):
+ ch.bitmap.append(list())
+ for x in range(colStart, colEnd+1):
+ if pixelIsSet(bitmap[y][x]):
+ ch.bitmap[-1].append(0xffffffff)
+ else:
+ ch.bitmap[-1].append(0x00000000)
+
+ # Set the character parameters
+ ch.width = colEnd - colStart + 1
+ ch.xOffs = 0
+ ch.yOffs = font.yOffs
+ ch.bmWidth = len(ch.bitmap[0])
+ ch.bmHeight = len(ch.bitmap)
+
+ # Insert the character into the list
+ font.chars[chStart] = ch
+
+ # Next character
+ chStart += 1
+ colStart = colEnd + 1
+
+ # Next row
+ rowStart = rowEnd + 1
+
+ # Return non-zero if we errored
+ return rowStart < height
+
+
+
+########################################
+## Main
+########################################
+def main():
+ if len(sys.argv) < 3:
+ sys.stderr.write("Usage:\n%s <input.png> [<input2.png> [...]] <output.bdc>\n" % sys.argv[0])
+ return 1
+ bdcName = sys.argv[-1]
+
+ font = RenderFont()
+ for i in range(1, len(sys.argv)-1):
+ filename = sys.argv[i]
+ if not os.path.exists(filename):
+ sys.stderr.write("Error attempting to open PNG file.\n")
+ return 1
+
+ pngObject = png.Reader(filename)
+ try:
+ pngObject.validate_signature()
+ except:
+ sys.stderr.write("Error reading PNG file.\n")
+ return 1
+
+ error = bitmapToChars(pngObject, font)
+ if error:
+ return 1
+
+ error = renderFontSaveCached(font, bdcName, 0, 0)
+ return error
+
+
+
+########################################
+## Program entry point
+########################################
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/docs/release/scripts/build/verinfo.py b/docs/release/scripts/build/verinfo.py
new file mode 100644
index 00000000000..719b4ae3493
--- /dev/null
+++ b/docs/release/scripts/build/verinfo.py
@@ -0,0 +1,185 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Aaron Giles, Andrew Gardner
+
+from __future__ import with_statement
+
+import io
+import re
+import sys
+
+
+def parse_args():
+ def usage():
+ sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] [-r|-p] [-o <outfile>] <srcfile>\n')
+ sys.exit(1)
+
+ flags = True
+ target = 'mame'
+ format = 'rc'
+ input = None
+ output = None
+ i = 1
+ while i < len(sys.argv):
+ if flags and (sys.argv[i] == '-r'):
+ format = 'rc'
+ elif flags and (sys.argv[i] == '-p'):
+ format = 'plist'
+ elif flags and (sys.argv[i] == '-b'):
+ i += 1
+ if (i >= len(sys.argv)):
+ usage()
+ else:
+ target = sys.argv[i]
+ elif flags and (sys.argv[i] == '-o'):
+ i += 1
+ if (i >= len(sys.argv)) or (output is not None):
+ usage()
+ else:
+ output = sys.argv[i]
+ elif flags and (sys.argv[i] == '--'):
+ flags = False
+ elif flags and sys.argv[i].startswith('-'):
+ usage()
+ elif input is not None:
+ usage()
+ else:
+ input = sys.argv[i]
+ i += 1
+ if input is None:
+ usage()
+ return target, format, input, output
+
+
+def extract_version(input):
+ pattern = re.compile('\s+BARE_BUILD_VERSION\s+"(([^."]+)\.([^."]+))"')
+ for line in input.readlines():
+ match = pattern.search(line)
+ if match:
+ return match.group(1), match.group(2), match.group(3)
+## return '0.226.A','0','226'
+ return None, None, None
+
+
+build, outfmt, srcfile, dstfile = parse_args()
+
+try:
+ fp = io.open(srcfile, 'r')
+except IOError:
+ sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
+ sys.exit(1)
+
+version_string, version_major, version_minor = extract_version(fp)
+version_build = "0"
+version_subbuild = "0"
+if not version_string:
+ sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile)
+ sys.exit(1)
+fp.close()
+
+if dstfile is not None:
+ try:
+ fp = open(dstfile, 'w')
+ except IOError:
+ sys.stderr.write("Unable to open output file '%s'\n" % dstfile)
+ sys.exit(1)
+else:
+ fp = sys.stdout
+
+legal_copyright = "Copyright Nicola Salmoria and the MAME team"
+
+if build == "mess":
+ # MESS
+ author = "MESS Team"
+ comments = "Multi Emulation Super System"
+ company_name = "MESS Team"
+ file_description = "MESS"
+ internal_name = "MESS"
+ original_filename = "MESS"
+ product_name = "MESS"
+ bundle_identifier = "org.mamedev.mess"
+elif build == "hbmame":
+ # HBMAME
+ author = "Robbbert and the MAME team"
+ legal_copyright = author
+ comments = "Homebrew MAME"
+ company_name = "MAME Team"
+ file_description = "HBMAME"
+ internal_name = "HBMAME"
+ original_filename = "HBMAME"
+ product_name = "HBMAME"
+ bundle_identifier = "org.mamedev.hbmame"
+else:
+ # MAME
+ author = "Nicola Salmoria and the MAME Team"
+ comments = "Multi-purpose emulation framework"
+ company_name = "MAME Team"
+ file_description = "MAME"
+ internal_name = "MAME" if build == "mame" else build
+ original_filename = "MAME" if build == "mame" else build
+ product_name = "MAME" if build == "mame" else build
+ bundle_identifier = "org.mamedev." + build
+
+if outfmt == 'rc':
+ fp.write('VS_VERSION_INFO VERSIONINFO\n')
+ fp.write('\tFILEVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild))
+ fp.write('\tPRODUCTVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild))
+ fp.write('\tFILEFLAGSMASK 0x3fL\n')
+ if version_build == 0:
+ fp.write('\tFILEFLAGS 0x0L\n')
+ else:
+ fp.write('\tFILEFLAGS VS_FF_PRERELEASE\n')
+ fp.write('\tFILEOS VOS_NT_WINDOWS32\n')
+ fp.write('\tFILETYPE VFT_APP\n')
+ fp.write('\tFILESUBTYPE VFT2_UNKNOWN\n')
+ fp.write('BEGIN\n')
+ fp.write('\tBLOCK "StringFileInfo"\n')
+ fp.write('\tBEGIN\n')
+ fp.write('#ifdef UNICODE\n')
+ fp.write('\t\tBLOCK "040904b0"\n')
+ fp.write('#else\n')
+ fp.write('\t\tBLOCK "040904E4"\n')
+ fp.write('#endif\n')
+ fp.write('\t\tBEGIN\n')
+ fp.write('\t\t\tVALUE "Author", "%s\\0"\n' % author)
+ fp.write('\t\t\tVALUE "Comments", "%s\\0"\n' % comments)
+ fp.write('\t\t\tVALUE "CompanyName", "%s\\0"\n' % company_name)
+ fp.write('\t\t\tVALUE "FileDescription", "%s\\0"\n' % file_description)
+ fp.write('\t\t\tVALUE "FileVersion", "%s, %s, %s, %s\\0"\n' % (version_major, version_minor, version_build, version_subbuild))
+ fp.write('\t\t\tVALUE "InternalName", "%s\\0"\n' % internal_name)
+ fp.write('\t\t\tVALUE "LegalCopyright", "%s\\0"\n' % legal_copyright)
+ fp.write('\t\t\tVALUE "OriginalFilename", "%s\\0"\n' % original_filename)
+ fp.write('\t\t\tVALUE "ProductName", "%s\\0"\n' % product_name)
+ fp.write('\t\t\tVALUE "ProductVersion", "%s\\0"\n' % version_string)
+ fp.write('\t\tEND\n')
+ fp.write('\tEND\n')
+ fp.write('\tBLOCK "VarFileInfo"\n')
+ fp.write('\tBEGIN\n')
+ fp.write('#ifdef UNICODE\n')
+ fp.write('\t\tVALUE "Translation", 0x409, 1200\n')
+ fp.write('#else\n')
+ fp.write('\t\tVALUE "Translation", 0x409, 1252\n')
+ fp.write('#endif\n')
+ fp.write('\tEND\n')
+ fp.write('END\n')
+elif outfmt == 'plist':
+ fp.write('<?xml version="1.0" encoding="UTF-8"?>\n')
+ fp.write('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n')
+ fp.write('<plist version="1.0">\n')
+ fp.write('<dict>\n')
+ fp.write('\t<key>CFBundleDisplayName</key>\n')
+ fp.write('\t<string>%s</string>\n' % product_name)
+ fp.write('\t<key>CFBundleIdentifier</key>\n')
+ fp.write('\t<string>%s</string>\n' % bundle_identifier)
+ fp.write('\t<key>CFBundleInfoDictionaryVersion</key>\n')
+ fp.write('\t<string>6.0</string>\n')
+ fp.write('\t<key>CFBundleName</key>\n')
+ fp.write('\t<string>%s</string>\n' % product_name)
+ fp.write('\t<key>CFBundleShortVersionString</key>\n')
+ fp.write('\t<string>%s.%s.%s</string>\n' % (version_major, version_minor, version_build))
+ fp.write('\t<key>NSPrincipalClass</key>\n')
+ fp.write('\t<string>NSApplication</string>\n')
+ fp.write('</dict>\n')
+ fp.write('</plist>\n')
+fp.flush()
diff --git a/docs/release/scripts/depfilter.awk b/docs/release/scripts/depfilter.awk
new file mode 100644
index 00000000000..74f3cce9ce7
--- /dev/null
+++ b/docs/release/scripts/depfilter.awk
@@ -0,0 +1,25 @@
+function base_dir(f)
+{
+ ne = split(f, s, "/")
+ for(k=ne;k>=1 && s[k] != "src";k--);
+ r = s[k]
+ for(j=k+1;j<ne;j++)
+ r = r "/" s[j]
+ return r
+}
+
+{
+ for(i=1; i<=NF; i++) {
+ if($i != "\\") {
+ ff = $i
+ fd = base_dir(ff)
+ if(substr(ff,length(ff)) == ":") {
+ root_dir = fd
+ } else if(fd != root_dir) {
+ if(fd == "src/emu" || fd == "src/osd" || fd == "src/lib/util")
+ $i = ""
+ }
+ }
+ }
+ print
+} \ No newline at end of file
diff --git a/docs/release/scripts/extlib.lua b/docs/release/scripts/extlib.lua
new file mode 100644
index 00000000000..a1fa4f5eb9d
--- /dev/null
+++ b/docs/release/scripts/extlib.lua
@@ -0,0 +1,128 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team,Jeffrey Clark
+
+local extlibs = {
+--
+-- 3rdparty system 3rdparty
+-- lib name: lib name, include dir
+--
+ asio = { "asio", "3rdparty/asio/include" },
+ expat = { "expat", "3rdparty/expat/lib" },
+ zlib = { "z", "3rdparty/zlib" },
+ jpeg = { "jpeg", "3rdparty/libjpeg" },
+ flac = { "FLAC", "3rdparty/libflac/include" },
+ sqlite3 = { "sqlite3", "3rdparty/sqlite3" },
+ portmidi = { "portmidi", "3rdparty/portmidi/pm_common" },
+ portaudio = { "portaudio", "3rdparty/portaudio/include" },
+ lua = { "lua", "3rdparty/lua/src" },
+ utf8proc = { "utf8proc", "3rdparty/utf8proc" },
+ glm = { "glm", "3rdparty/glm" },
+ rapidjson = { "rapidjson", "3rdparty/rapidjson/include" },
+ pugixml = { "pugixml", "3rdparty/pugixml/src" },
+}
+
+-- system lib options
+newoption {
+ trigger = 'with-system-asio',
+ description = 'Use system Asio library',
+}
+
+newoption {
+ trigger = 'with-system-expat',
+ description = 'Use system Expat library',
+}
+
+newoption {
+ trigger = 'with-system-zlib',
+ description = 'Use system Zlib library',
+}
+
+newoption {
+ trigger = 'with-system-jpeg',
+ description = 'Use system JPEG library',
+}
+
+newoption {
+ trigger = 'with-system-flac',
+ description = 'Use system FLAC library',
+}
+
+newoption {
+ trigger = 'with-system-sqlite3',
+ description = 'Use system SQLite library',
+}
+
+newoption {
+ trigger = 'with-system-portmidi',
+ description = 'Use system PortMidi library',
+}
+
+newoption {
+ trigger = 'with-system-portaudio',
+ description = 'Use system PortAudio library',
+}
+
+newoption {
+ trigger = "with-system-lua",
+ description = "Use system LUA library",
+}
+
+newoption {
+ trigger = "with-system-utf8proc",
+ description = "Use system utf8proc library",
+}
+
+newoption {
+ trigger = "with-system-glm",
+ description = "Use system glm library",
+}
+
+newoption {
+ trigger = "with-system-rapidjson",
+ description = "Use system rapidjson library",
+}
+
+newoption {
+ trigger = "with-system-pugixml",
+ description = "Use system pugixml library",
+}
+
+-- build helpers
+function ext_lib(lib)
+ local opt = _OPTIONS["with-system-" .. lib]
+ if (opt~=nil and opt=="1") then
+ default = extlibs[lib][1]
+ else
+ default = lib
+ end
+ return ext_best(lib, default, 1)
+end
+
+function ext_includedir(lib)
+ local opt = _OPTIONS["with-system-" .. lib]
+ if (opt==nil or opt=="0") then
+ -- using bundled, prepend MAME_DIR
+ default = MAME_DIR .. extlibs[lib][2]
+ else
+ default = ""
+ end
+ return ext_best(lib, default, 2)
+end
+
+function ext_best(lib, default, idx)
+ local opt = _OPTIONS["with-system-" .. lib]
+ local found = default
+ if (opt~=nil and opt~="0" and opt~="1") then
+ -- override default if provided (format <libname:includedir>)
+ local x = opt:explode(":")
+ if x[idx]~=nil then
+ local y = x[idx]:explode(",")
+ if y[1]~=nil then
+ found = y
+ else
+ found = x[idx]
+ end
+ end
+ end
+ return found
+end
diff --git a/docs/release/scripts/font/LICENSE b/docs/release/scripts/font/LICENSE
new file mode 100644
index 00000000000..d952d62c065
--- /dev/null
+++ b/docs/release/scripts/font/LICENSE
@@ -0,0 +1,92 @@
+This Font Software is licensed under the SIL Open Font License,
+Version 1.1.
+
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font
+creation efforts of academic and linguistic communities, and to
+provide a free and open framework in which fonts may be shared and
+improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply to
+any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software
+components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to,
+deleting, or substituting -- in part or in whole -- any of the
+components of the Original Version, by changing formats or by porting
+the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed,
+modify, redistribute, and sell modified and unmodified copies of the
+Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in
+Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the
+corresponding Copyright Holder. This restriction only applies to the
+primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created using
+the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/docs/release/scripts/font/NotoSans-Bold.bdc b/docs/release/scripts/font/NotoSans-Bold.bdc
new file mode 100644
index 00000000000..2ac5c7e0e59
--- /dev/null
+++ b/docs/release/scripts/font/NotoSans-Bold.bdc
Binary files differ
diff --git a/docs/release/scripts/font/NotoSans-Bold.ttf b/docs/release/scripts/font/NotoSans-Bold.ttf
new file mode 100644
index 00000000000..21dddde9d3b
--- /dev/null
+++ b/docs/release/scripts/font/NotoSans-Bold.ttf
Binary files differ
diff --git a/docs/release/scripts/font/README.md b/docs/release/scripts/font/README.md
new file mode 100644
index 00000000000..36ed4bbac77
--- /dev/null
+++ b/docs/release/scripts/font/README.md
@@ -0,0 +1,52 @@
+![Noto](images/noto.png)
+
+# Noto fonts
+
+Noto's goal is to provide a beautiful reading experience for everyone and for all languages. With visual harmony when multiple languages share a page. With multiple styles and weights. **_Freely available to all._**
+
+Currently, Noto covers all major languages of the world and many others, including European, African, Middle Eastern, Indic, South and Southeast Asian, Central Asian, American, and East Asian languages. Several minority and historical languages are also supported.
+
+Support for Simplified Chinese, Traditional Chinese, Japanese, and Korean was first added in July 2014.
+
+You can preview and download the Noto fonts at http://www.google.com/get/noto
+
+Noto fonts are open source. All fonts are published under the [SIL Open Font License, Version 1.1](http://scripts.sil.org/OFL). (Prior to September 29, 2015, Noto fonts other than CJK were published under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).)
+
+Use unhinted fonts for Android and Mac (Android and Mac ignore hinting information embedded in fonts). Use hinted fonts for other platforms.
+
+## Development
+
+All Noto fonts are included in this repository, except:
+
+ * Noto CJK fonts are in [noto-cjk](https://github.com/googlei18n/noto-cjk),
+ * Noto Emoji and Noto Color Emoji are in [noto-emoji](https://github.com/googlei18n/noto-emoji).
+
+Tools used for testing fonts are in [nototools](https://github.com/googlei18n/nototools).
+
+Some source files are available in [noto-source](https://github.com/googlei18n/noto-source).
+
+Development and user discussions happen on the [noto-font Google Group](https://groups.google.com/d/forum/noto-font).
+
+## News
+
+* [2015-09-29](NEWS): All Noto fonts now licensed under SIL Open Font License v1.1.
+
+* 2015-06-08: The Noto project moved from Google Code to Github.
+
+* 2015-04-20: Noto Sans CJK Version 1.002 released.
+
+* 2015-03-30: Noto Sans Oriya and and a new design for Armenian fonts released.
+
+* 2014-10-23: Experimental version of Noto Nastaliq Urdu released.
+
+## Special Note on Droid Fonts
+
+The Droid fonts are superseded by Noto. Noto began as Droid, and since renaming all updates are made to the Noto fonts.
+Today Noto gives better support to all languages covered by Droid fonts, with more characters and fewer bugs, and covers many more languages.
+Both Android and ChromeOS have switched to Noto, and we strongly recommend everyone to replace Droid with Noto.
+
+Similarly, the Droid Sans Fallback font is superseded by Noto Sans CJK, available from [noto-cjk](https://github.com/googlei18n/noto-cjk).
+
+Have fun!
+
+Google Internationalization Team
diff --git a/docs/release/scripts/genie.lua b/docs/release/scripts/genie.lua
new file mode 100644
index 00000000000..2d53bda770b
--- /dev/null
+++ b/docs/release/scripts/genie.lua
@@ -0,0 +1,1607 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+STANDALONE = false
+
+-- Big project specific
+premake.make.makefile_ignore = true
+premake._checkgenerate = false
+
+newoption {
+ trigger = 'build-dir',
+ description = 'Build directory name',
+}
+
+premake.check_paths = true
+premake.make.override = { "TARGET" }
+
+premake.xcode.parameters = { 'CLANG_CXX_LANGUAGE_STANDARD = "c++17"', 'CLANG_CXX_LIBRARY = "libc++"' }
+
+MAME_DIR = (path.getabsolute("..") .. "/")
+--MAME_DIR = string.gsub(MAME_DIR, "(%s)", "\\%1")
+local MAME_BUILD_DIR = (MAME_DIR .. _OPTIONS["build-dir"] .. "/")
+local naclToolchain = ""
+
+newoption {
+ trigger = "precompile",
+ description = "Precompiled headers generation.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+function backtick(cmd)
+ result = string.gsub(string.gsub(os.outputof(cmd), "\r?\n$", ""), " $", "")
+ return result
+end
+
+function str_to_version(str)
+ local val = 0
+ if (str == nil or str == '') then
+ return val
+ end
+ local cnt = 10000
+ for word in string.gmatch(str, '([^.]+)') do
+ if(tonumber(word) == nil) then
+ return val
+ end
+ val = val + tonumber(word) * cnt
+ cnt = cnt / 100
+ end
+ return val
+end
+
+function findfunction(x)
+ assert(type(x) == "string")
+ local f=_G
+ for v in x:gmatch("[^%.]+") do
+ if type(f) ~= "table" then
+ return nil, "looking for '"..v.."' expected table, not "..type(f)
+ end
+ f=f[v]
+ end
+ if type(f) == "function" then
+ return f
+ else
+ return nil, "expected function, not "..type(f)
+ end
+end
+
+function layoutbuildtask(_folder, _name)
+ return { MAME_DIR .. "src/".._folder.."/".. _name ..".lay" , GEN_DIR .. _folder .. "/".._name..".lh",
+ { MAME_DIR .. "scripts/build/complay.py" }, {"@echo Compressing src/".._folder.."/".._name..".lay...", PYTHON .. " $(1) $(<) $(@) layout_".._name }};
+end
+
+function precompiledheaders()
+ if _OPTIONS["precompile"]==nil or (_OPTIONS["precompile"]~=nil and _OPTIONS["precompile"]=="1") then
+ configuration { "not xcode4" }
+ pchheader("emu.h")
+ configuration { }
+ end
+end
+
+function precompiledheaders_novs()
+ precompiledheaders()
+ if string.sub(_ACTION,1,4) == "vs20" then
+ --print("Disabling pch for Visual Studio")
+ flags {
+ "NoPCH"
+ }
+ end
+end
+
+function addprojectflags()
+ local version = str_to_version(_OPTIONS["gcc_version"])
+ if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "gcc") then
+ buildoptions_cpp {
+ "-Wsuggest-override",
+ "-flifetime-dse=1",
+ }
+ end
+end
+
+function opt_tool(hash, entry)
+ if _OPTIONS["with-tools"] then
+ hash[entry] = true
+ return true
+ end
+ return hash[entry]
+end
+
+CPUS = {}
+SOUNDS = {}
+MACHINES = {}
+VIDEOS = {}
+BUSES = {}
+FORMATS = {}
+
+newoption {
+ trigger = "with-tools",
+ description = "Enable building tools.",
+}
+
+newoption {
+ trigger = "with-tests",
+ description = "Enable building tests.",
+}
+
+newoption {
+ trigger = "with-benchmarks",
+ description = "Enable building benchmarks.",
+}
+
+newoption {
+ trigger = "osd",
+ description = "Choose OSD layer implementation",
+}
+
+newoption {
+ trigger = "targetos",
+ description = "Choose target OS",
+ allowed = {
+ { "android", "Android" },
+ { "asmjs", "Emscripten/asm.js" },
+ { "freebsd", "FreeBSD" },
+ { "netbsd", "NetBSD" },
+ { "openbsd", "OpenBSD" },
+ { "pnacl", "Native Client - PNaCl" },
+ { "linux", "Linux" },
+ { "ios", "iOS" },
+ { "macosx", "OSX" },
+ { "windows", "Windows" },
+ { "haiku", "Haiku" },
+ { "solaris", "Solaris SunOS" },
+ { "steamlink", "Steam Link" },
+ { "rpi", "Raspberry Pi" },
+ { "ci20", "Creator-Ci20" },
+ },
+}
+
+newoption {
+ trigger = 'with-bundled-sdl2',
+ description = 'Build bundled SDL2 library',
+}
+
+newoption {
+ trigger = "distro",
+ description = "Choose distribution",
+ allowed = {
+ { "generic", "generic" },
+ { "debian-stable", "debian-stable" },
+ { "ubuntu-intrepid", "ubuntu-intrepid" },
+ },
+}
+
+newoption {
+ trigger = "target",
+ description = "Building target",
+}
+
+newoption {
+ trigger = "subtarget",
+ description = "Building subtarget",
+}
+
+newoption {
+ trigger = "gcc_version",
+ description = "GCC compiler version",
+}
+
+newoption {
+ trigger = "CC",
+ description = "CC replacement",
+}
+
+newoption {
+ trigger = "CXX",
+ description = "CXX replacement",
+}
+
+newoption {
+ trigger = "LD",
+ description = "LD replacement",
+}
+
+newoption {
+ trigger = "AR",
+ description = "AR replacement",
+}
+
+newoption {
+ trigger = "TOOLCHAIN",
+ description = "Toolchain prefix"
+}
+
+newoption {
+ trigger = "PROFILE",
+ description = "Enable profiling.",
+}
+
+newoption {
+ trigger = "SYMBOLS",
+ description = "Enable symbols.",
+}
+
+newoption {
+ trigger = "SYMLEVEL",
+ description = "Symbols level.",
+}
+
+newoption {
+ trigger = "PROFILER",
+ description = "Include the internal profiler.",
+}
+
+newoption {
+ trigger = "OPTIMIZE",
+ description = "Optimization level.",
+}
+
+newoption {
+ trigger = "ARCHOPTS",
+ description = "Additional options for target C/C++/Objective-C/Objective-C++ compilers and linker.",
+}
+
+newoption {
+ trigger = "ARCHOPTS_C",
+ description = "Additional options for target C++ compiler.",
+}
+
+newoption {
+ trigger = "ARCHOPTS_CXX",
+ description = "Additional options for target C++ compiler.",
+}
+
+newoption {
+ trigger = "ARCHOPTS_OBJC",
+ description = "Additional options for target Objective-C compiler.",
+}
+
+newoption {
+ trigger = "ARCHOPTS_OBJCXX",
+ description = "Additional options for target Objective-C++ compiler.",
+}
+
+newoption {
+ trigger = "OPT_FLAGS",
+ description = "OPT_FLAGS.",
+}
+
+newoption {
+ trigger = "LDOPTS",
+ description = "Additional linker options",
+}
+
+newoption {
+ trigger = "MAP",
+ description = "Generate a link map.",
+}
+
+newoption {
+ trigger = "NOASM",
+ description = "Disable implementations based on assembler code",
+ allowed = {
+ { "0", "Enable assembler code" },
+ { "1", "Disable assembler code" },
+ },
+}
+
+newoption {
+ trigger = "BIGENDIAN",
+ description = "Build for big endian target",
+ allowed = {
+ { "0", "Little endian target" },
+ { "1", "Big endian target" },
+ },
+}
+
+newoption {
+ trigger = "FORCE_DRC_C_BACKEND",
+ description = "Force DRC C backend.",
+}
+
+newoption {
+ trigger = "NOWERROR",
+ description = "NOWERROR",
+}
+
+newoption {
+ trigger = "DEPRECATED",
+ description = "Generate deprecation warnings during compilation.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "LTO",
+ description = "Clang link time optimization.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "SSE2",
+ description = "SSE2 optimized code and SSE2 code generation.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "SSE3",
+ description = "SSE3 optimized code and SSE3 code generation.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "OPENMP",
+ description = "OpenMP optimized code.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "SEPARATE_BIN",
+ description = "Use separate bin folders.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "PYTHON_EXECUTABLE",
+ description = "Python executable.",
+}
+
+newoption {
+ trigger = "SHADOW_CHECK",
+ description = "Shadow checks.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+newoption {
+ trigger = "STRIP_SYMBOLS",
+ description = "Symbols stripping.",
+ allowed = {
+ { "0", "Disabled" },
+ { "1", "Enabled" },
+ }
+}
+
+
+newoption {
+ trigger = "SHLIB",
+ description = "Generate shared libs.",
+ allowed = {
+ { "0", "Static libs" },
+ { "1", "Shared libs" },
+ }
+}
+
+newoption {
+ trigger = "SOURCES",
+ description = "List of sources to compile.",
+}
+
+newoption {
+ trigger = "PLATFORM",
+ description = "Target machine platform (x86,arm,...)",
+}
+
+newoption {
+ trigger = "DEBUG_DIR",
+ description = "Default directory for debugger.",
+}
+
+newoption {
+ trigger = "DEBUG_ARGS",
+ description = "Arguments for running debug build.",
+}
+
+newoption {
+ trigger = "WEBASSEMBLY",
+ description = "Produce WebAssembly output when building with Emscripten.",
+}
+
+newoption {
+ trigger = "SANITIZE",
+ description = "Specifies the santizer(s) to use."
+}
+
+newoption {
+ trigger = "PROJECT",
+ description = "Select projects to be built. Will look into project folder for files.",
+}
+
+dofile ("extlib.lua")
+
+if _OPTIONS["SHLIB"]=="1" then
+ LIBTYPE = "SharedLib"
+else
+ LIBTYPE = "StaticLib"
+end
+
+PYTHON = "python3"
+
+if _OPTIONS["PYTHON_EXECUTABLE"]~=nil then
+ PYTHON = _OPTIONS["PYTHON_EXECUTABLE"]
+end
+
+if not _OPTIONS["BIGENDIAN"] then
+ _OPTIONS["BIGENDIAN"] = "0"
+end
+
+if _OPTIONS["NOASM"]=="1" and not _OPTIONS["FORCE_DRC_C_BACKEND"] then
+ _OPTIONS["FORCE_DRC_C_BACKEND"] = "1"
+end
+
+if(_OPTIONS["TOOLCHAIN"] == nil) then
+ _OPTIONS['TOOLCHAIN'] = ""
+end
+
+GEN_DIR = MAME_BUILD_DIR .. "generated/"
+
+if (_OPTIONS["target"] == nil) then return false end
+if (_OPTIONS["subtarget"] == nil) then return false end
+
+if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
+ solution (_OPTIONS["target"])
+else
+ if (_OPTIONS["subtarget"]=="mess") then
+ solution (_OPTIONS["subtarget"])
+ else
+ solution (_OPTIONS["target"] .. _OPTIONS["subtarget"])
+ end
+end
+
+
+configurations {
+ "Debug",
+ "Release",
+}
+
+if _ACTION == "xcode4" then
+ platforms {
+ "x64",
+ }
+else
+ platforms {
+ "x32",
+ "x64",
+ "Native", -- for targets where bitness is not specified
+ }
+end
+
+language "C++"
+
+flags {
+ "StaticRuntime",
+ "Cpp17",
+}
+
+configuration { "vs20*" }
+ buildoptions {
+ "/bigobj",
+ }
+ buildoptions_cpp {
+ "/Zc:__cplusplus",
+ }
+ flags {
+ "ExtraWarnings",
+ }
+ if not _OPTIONS["NOWERROR"] then
+ flags{
+ "FatalWarnings",
+ }
+ end
+
+
+configuration { "Debug", "vs20*" }
+ flags {
+ "Symbols",
+ "NoMultiProcessorCompilation",
+ }
+
+configuration { "Release", "vs20*" }
+ flags {
+ "Optimize",
+ "NoEditAndContinue",
+ "NoIncrementalLink",
+ }
+ if _OPTIONS["SYMBOLS"] then
+ flags {
+ "Symbols",
+ }
+ end
+
+configuration { "vsllvm" }
+ buildoptions {
+ "/bigobj",
+ }
+ flags {
+ "NoPCH",
+ "ExtraWarnings",
+ }
+ if not _OPTIONS["NOWERROR"] then
+ flags{
+ "FatalWarnings",
+ }
+ end
+
+
+configuration { "Debug", "vsllvm" }
+ flags {
+ "Symbols",
+ "NoMultiProcessorCompilation",
+ }
+
+configuration { "Release", "vsllvm" }
+ flags {
+ "Optimize",
+ "NoEditAndContinue",
+ "NoIncrementalLink",
+ }
+
+-- Force VS2015/17 targets to use bundled SDL2
+if string.sub(_ACTION,1,4) == "vs20" and _OPTIONS["osd"]=="sdl" then
+ if _OPTIONS["with-bundled-sdl2"]==nil then
+ _OPTIONS["with-bundled-sdl2"] = "1"
+ end
+end
+-- Build SDL2 for Android
+if _OPTIONS["targetos"] == "android" then
+ _OPTIONS["with-bundled-sdl2"] = "1"
+end
+
+configuration {}
+
+if _OPTIONS["osd"] == "uwp" then
+ windowstargetplatformversion("10.0.14393.0")
+ windowstargetplatformminversion("10.0.14393.0")
+ premake._filelevelconfig = true
+end
+
+msgcompile ("Compiling $(subst ../,,$<)...")
+
+msgcompile_objc ("Objective-C compiling $(subst ../,,$<)...")
+
+msgresource ("Compiling resources $(subst ../,,$<)...")
+
+msglinking ("Linking $(notdir $@)...")
+
+msgarchiving ("Archiving $(notdir $@)...")
+
+msgprecompile ("Precompiling $(subst ../,,$<)...")
+
+messageskip { "SkipCreatingMessage", "SkipBuildingMessage", "SkipCleaningMessage" }
+
+if (_OPTIONS["PROJECT"] ~= nil) then
+ PROJECT_DIR = path.join(path.getabsolute(".."),"projects",_OPTIONS["PROJECT"]) .. "/"
+ if (not os.isfile(path.join("..", "projects", _OPTIONS["PROJECT"], "scripts", "target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))) then
+ error("File definition for TARGET=" .. _OPTIONS["target"] .. " SUBTARGET=" .. _OPTIONS["subtarget"] .. " does not exist")
+ end
+ dofile (path.join(".." ,"projects", _OPTIONS["PROJECT"], "scripts", "target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))
+end
+if (_OPTIONS["SOURCES"] == nil and _OPTIONS["PROJECT"] == nil) then
+ if (not os.isfile(path.join("target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))) then
+ error("File definition for TARGET=" .. _OPTIONS["target"] .. " SUBTARGET=" .. _OPTIONS["subtarget"] .. " does not exist")
+ end
+ dofile (path.join("target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))
+end
+
+configuration { "gmake or ninja" }
+ flags {
+ "SingleOutputDir",
+ }
+
+dofile ("toolchain.lua")
+
+if _OPTIONS["targetos"]=="windows" then
+ configuration { "x64" }
+ defines {
+ "X64_WINDOWS_ABI",
+ }
+ configuration { }
+end
+
+-- Avoid error when invoking genie --help.
+if (_ACTION == nil) then return false end
+
+-- define PTR64 if we are a 64-bit target
+configuration { "x64 or android-*64"}
+ defines { "PTR64=1" }
+
+-- define MAME_DEBUG if we are a debugging build
+configuration { "Debug" }
+ defines {
+ "MAME_DEBUG",
+ "MAME_PROFILER",
+-- "BGFX_CONFIG_DEBUG=1",
+ }
+
+configuration { }
+
+if _OPTIONS["PROFILER"]=="1" then
+ defines{
+ "MAME_PROFILER", -- define MAME_PROFILER if we are a profiling build
+ }
+end
+
+configuration { "Release" }
+ defines {
+ "NDEBUG",
+ }
+
+configuration { }
+
+-- CR/LF setup: use on win32, CR only on everything else
+if _OPTIONS["targetos"]=="windows" then
+ defines {
+ "CRLF=3",
+ }
+else
+ defines {
+ "CRLF=2",
+ }
+end
+
+
+if _OPTIONS["BIGENDIAN"]=="1" then
+ if _OPTIONS["targetos"]=="macosx" then
+ defines {
+ "OSX_PPC",
+ }
+ buildoptions {
+ "-Wno-unused-label",
+ "-flax-vector-conversions",
+ }
+ if _OPTIONS["SYMBOLS"] then
+ buildoptions {
+ "-mlong-branch",
+ }
+ end
+ configuration { "x64" }
+ buildoptions {
+ "-arch ppc64",
+ }
+ linkoptions {
+ "-arch ppc64",
+ }
+ configuration { "x32" }
+ buildoptions {
+ "-arch ppc",
+ }
+ linkoptions {
+ "-arch ppc",
+ }
+ configuration { }
+ end
+else
+ defines {
+ "LSB_FIRST",
+ }
+ if _OPTIONS["targetos"]=="macosx" then
+ configuration { "arm64" }
+ buildoptions {
+ "-arch arm64",
+ }
+ linkoptions {
+ "-arch arm64",
+ }
+ configuration { "x64", "not arm64" }
+ buildoptions {
+ "-arch x86_64",
+ }
+ linkoptions {
+ "-arch x86_64",
+ }
+ configuration { "x32", "not arm64" }
+ buildoptions {
+ "-arch i386",
+ }
+ linkoptions {
+ "-arch i386",
+ }
+ configuration { }
+ end
+end
+
+if _OPTIONS["with-system-jpeg"]~=nil then
+ defines {
+ "XMD_H",
+ }
+end
+
+if not _OPTIONS["with-system-flac"]~=nil then
+ defines {
+ "FLAC__NO_DLL",
+ }
+end
+
+if not _OPTIONS["with-system-pugixml"] then
+ defines {
+ "PUGIXML_HEADER_ONLY",
+ }
+else
+ links {
+ ext_lib("pugixml"),
+ }
+end
+
+if _OPTIONS["NOASM"]=="1" then
+ defines {
+ "MAME_NOASM"
+ }
+end
+
+if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
+ if _OPTIONS["BIGENDIAN"]~="1" then
+ configuration { "x64" }
+ defines {
+ "NATIVE_DRC=drcbe_x64",
+ }
+ configuration { "x32" }
+ defines {
+ "NATIVE_DRC=drcbe_x86",
+ }
+ configuration { }
+ end
+end
+
+ defines {
+ "LUA_COMPAT_ALL",
+ "LUA_COMPAT_5_1",
+ "LUA_COMPAT_5_2",
+ }
+
+ if _ACTION == "gmake" or _ACTION == "ninja" then
+
+ --we compile C-only to C99 standard with GNU extensions
+
+ buildoptions_c {
+ "-std=gnu99",
+ }
+
+local version = str_to_version(_OPTIONS["gcc_version"])
+ buildoptions_cpp {
+ "-std=c++17",
+ }
+
+ buildoptions_objcpp {
+ "-std=c++17",
+ }
+-- this speeds it up a bit by piping between the preprocessor/compiler/assembler
+ if not ("pnacl" == _OPTIONS["gcc"]) then
+ buildoptions {
+ "-pipe",
+ }
+ end
+-- add -g if we need symbols, and ensure we have frame pointers
+if _OPTIONS["SYMBOLS"]~=nil and _OPTIONS["SYMBOLS"]~="0" then
+ buildoptions {
+ "-g" .. _OPTIONS["SYMLEVEL"],
+ "-fno-omit-frame-pointer",
+ "-fno-optimize-sibling-calls",
+ }
+end
+
+--# we need to disable some additional implicit optimizations for profiling
+if _OPTIONS["PROFILE"] then
+ buildoptions {
+ "-mno-omit-leaf-frame-pointer",
+ }
+end
+-- add -v if we need verbose build information
+if _OPTIONS["VERBOSE"] then
+ buildoptions {
+ "-v",
+ }
+end
+
+-- only show shadow warnings when enabled
+if (_OPTIONS["SHADOW_CHECK"]=="1") then
+ buildoptions {
+ "-Wshadow"
+ }
+end
+
+-- only show deprecation warnings when enabled
+if _OPTIONS["DEPRECATED"]=="0" then
+ buildoptions {
+ "-Wno-deprecated-declarations"
+ }
+end
+
+-- add profiling information for the compiler
+if _OPTIONS["PROFILE"] then
+ buildoptions {
+ "-pg",
+ }
+ linkoptions {
+ "-pg",
+ }
+end
+
+if _OPTIONS["SYMBOLS"]~=nil and _OPTIONS["SYMBOLS"]~="0" then
+ flags {
+ "Symbols",
+ }
+end
+
+-- add the error warning flag
+if _OPTIONS["NOWERROR"]==nil then
+ buildoptions {
+ "-Werror",
+ }
+end
+
+-- if we are optimizing, include optimization options
+if _OPTIONS["OPTIMIZE"] then
+ buildoptions {
+ "-O".. _OPTIONS["OPTIMIZE"],
+ "-fno-strict-aliasing"
+ }
+ if _OPTIONS["OPT_FLAGS"] then
+ buildoptions {
+ _OPTIONS["OPT_FLAGS"]
+ }
+ end
+ if _OPTIONS["LTO"]=="1" then
+ buildoptions {
+-- windows native mingw GCC 5.2 fails with -flto=x with x > 1. bug unfixed as of this commit
+ "-flto=1",
+-- if ld fails, just buy more RAM or uncomment this!
+-- "-Wl,-no-keep-memory",
+ "-Wl,-v",
+-- silence redefine warnings from discrete.c.
+ "-Wl,-allow-multiple-definition",
+ "-fuse-linker-plugin",
+-- these next flags allow MAME to compile in GCC 5.2. odr warnings should be fixed as LTO randomly crashes otherwise
+-- some GCC 4.9.x on Windows do not have -Wodr and -flto-odr-type-merging enabled. adjust accordingly...
+-- no-fat-lto-objects is faster to compile and uses less memory, but you can't mix with a non-lto .o/.a without rebuilding
+ "-fno-fat-lto-objects",
+ "-flto-odr-type-merging",
+ "-Wodr",
+ "-flto-compression-level=0", -- lto doesn't work with anything <9 on linux with < 12G RAM, much slower if <> 0
+-- "-flto-report", -- if you get an error in lto after [WPA] stage, but before [LTRANS] stage, you need more memory!
+-- "-fmem-report-wpa","-fmem-report","-fpre-ipa-mem-report","-fpost-ipa-mem-report","-flto-report-wpa","-fmem-report",
+-- this six flag combo lets MAME compile with LTO=1 on linux with no errors and ~2% speed boost, but compile time is much longer
+-- if you are going to wait on lto, you might as well enable these for GCC
+-- "-fdevirtualize-at-ltrans","-fgcse-sm","-fgcse-las",
+-- "-fipa-pta","-fipa-icf","-fvariable-expansion-in-unroller",
+ }
+-- same flags are needed by linker
+ linkoptions {
+ "-flto=1",
+-- "-Wl,-no-keep-memory",
+ "-Wl,-v",
+ "-Wl,-allow-multiple-definition",
+ "-fuse-linker-plugin",
+ "-fno-fat-lto-objects",
+ "-flto-odr-type-merging",
+ "-Wodr",
+ "-flto-compression-level=0", -- lto doesn't work with anything <9 on linux with < 12G RAM, much slower if <> 0
+-- "-flto-report", -- if you get an error in lto after [WPA] stage, but before [LTRANS] stage, you need more memory!
+-- "-fmem-report-wpa","-fmem-report","-fpre-ipa-mem-report","-fpost-ipa-mem-report","-flto-report-wpa","-fmem-report",
+-- this six flag combo lets MAME compile with LTO=1 on linux with no errors and ~2% speed boost, but compile time is much longer
+-- if you are going to wait on lto, you might as well enable these for GCC
+-- "-fdevirtualize-at-ltrans","-fgcse-sm","-fgcse-las",
+-- "-fipa-pta","-fipa-icf","-fvariable-expansion-in-unroller",
+
+ }
+
+ end
+end
+
+configuration { "mingw-clang" }
+ buildoptions {
+ "-Xclang -flto-visibility-public-std", -- workround for __imp___ link errors
+ "-Wno-nonportable-include-path", -- workround for clang 9.0.0 case sensitivity bug when including GL/glext.h
+ }
+configuration { }
+
+if _OPTIONS["ARCHOPTS"] then
+ buildoptions {
+ _OPTIONS["ARCHOPTS"]
+ }
+ linkoptions {
+ _OPTIONS["ARCHOPTS"]
+ }
+end
+
+if _OPTIONS["ARCHOPTS_C"] then
+ buildoptions_c {
+ _OPTIONS["ARCHOPTS_C"]
+ }
+end
+
+if _OPTIONS["ARCHOPTS_CXX"] then
+ buildoptions_cpp {
+ _OPTIONS["ARCHOPTS_CXX"]
+ }
+end
+
+if _OPTIONS["ARCHOPTS_OBJC"] then
+ buildoptions_objc {
+ _OPTIONS["ARCHOPTS_OBJC"]
+ }
+end
+
+if _OPTIONS["ARCHOPTS_OBJCXX"] then
+ buildoptions_objcpp {
+ _OPTIONS["ARCHOPTS_OBJCXX"]
+ }
+end
+
+if _OPTIONS["SHLIB"] then
+ buildoptions {
+ "-fPIC"
+ }
+end
+
+if _OPTIONS["SSE2"]=="1" then
+ buildoptions {
+ "-msse",
+ "-msse2"
+ }
+end
+
+if _OPTIONS["SSE3"]=="1" then
+ buildoptions {
+ "-msse",
+ "-msse2",
+ "-msse3"
+ }
+end
+
+
+if _OPTIONS["OPENMP"]=="1" then
+ buildoptions {
+ "-fopenmp",
+ }
+ linkoptions {
+ "-fopenmp"
+ }
+ defines {
+ "USE_OPENMP=1",
+ }
+
+else
+ buildoptions {
+ "-Wno-unknown-pragmas",
+ }
+end
+
+if _OPTIONS["LDOPTS"] then
+ linkoptions {
+ _OPTIONS["LDOPTS"]
+ }
+end
+
+if _OPTIONS["MAP"] then
+ if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
+ linkoptions {
+ "-Wl,-Map," .. "../../../../" .. _OPTIONS["target"] .. ".map"
+ }
+ else
+ linkoptions {
+ "-Wl,-Map," .. "../../../../" .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".map"
+ }
+
+ end
+end
+
+
+-- add a basic set of warnings
+ buildoptions {
+ "-Wall",
+ "-Wcast-align",
+ "-Wformat-security",
+ "-Wundef",
+ "-Wwrite-strings",
+ "-Wno-conversion",
+ "-Wno-sign-compare",
+ "-Wno-error=deprecated-declarations",
+ }
+-- warnings only applicable to C compiles
+ buildoptions_c {
+ "-Wpointer-arith",
+ "-Wstrict-prototypes",
+ }
+
+if _OPTIONS["targetos"]~="freebsd" then
+ buildoptions_c {
+ "-Wbad-function-cast",
+ }
+end
+
+-- warnings only applicable to OBJ-C compiles
+ buildoptions_objcpp {
+ "-Wpointer-arith",
+ }
+
+-- warnings only applicable to C++ compiles
+ buildoptions_cpp {
+ "-Woverloaded-virtual",
+ }
+
+if _OPTIONS["SANITIZE"] then
+ buildoptions {
+ "-fsanitize=".. _OPTIONS["SANITIZE"]
+ }
+ linkoptions {
+ "-fsanitize=".. _OPTIONS["SANITIZE"]
+ }
+ if string.find(_OPTIONS["SANITIZE"], "address") then
+ buildoptions {
+ "-fsanitize-address-use-after-scope"
+ }
+ linkoptions {
+ "-fsanitize-address-use-after-scope"
+ }
+ end
+ if string.find(_OPTIONS["SANITIZE"], "undefined") then
+ -- 'function' produces errors without delegates by design
+ -- 'alignment' produces a lot of errors which we are not interested in
+ buildoptions {
+ "-fno-sanitize=function",
+ "-fno-sanitize=alignment"
+ }
+ linkoptions {
+ "-fno-sanitize=function",
+ "-fno-sanitize=alignment"
+ }
+ end
+end
+
+--ifneq (,$(findstring thread,$(SANITIZE)))
+--CCOMFLAGS += -fPIE
+--endif
+
+
+
+ local version = str_to_version(_OPTIONS["gcc_version"])
+ if string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "pnacl") or string.find(_OPTIONS["gcc"], "asmjs") or string.find(_OPTIONS["gcc"], "android") then
+ if (version < 60000) then
+ print("Clang version 6.0 or later needed")
+ os.exit(-1)
+ end
+ buildoptions {
+ "-fdiagnostics-show-note-include-stack",
+ "-Wno-cast-align",
+ "-Wno-constant-logical-operand",
+ "-Wno-extern-c-compat",
+ "-Wno-ignored-qualifiers",
+ "-Wno-pragma-pack", -- clang 6.0 complains when the packing change lifetime is not contained within a header file.
+ "-Wno-tautological-compare",
+ "-Wno-unknown-attributes",
+ "-Wno-unknown-warning-option",
+ "-Wno-unused-value",
+ "-Wno-unused-const-variable",
+ }
+ if (version < 70000) or ((version < 100001) and (_OPTIONS["targetos"] == 'macosx')) then
+ buildoptions { -- clang 6.0 complains that [[maybe_unused]] is ignored for static data members
+ "-Wno-error=ignored-attributes",
+ "-Wno-error=unused-const-variable",
+ }
+ end
+ if ((version >= 100000) and (_OPTIONS["targetos"] ~= 'macosx')) or (version >= 120000) then
+ buildoptions {
+ "-Wno-xor-used-as-pow", -- clang 10.0 complains that expressions like 10 ^ 7 look like exponention
+ }
+ end
+ else
+ if (version < 70000) then
+ print("GCC version 7.0 or later needed")
+ os.exit(-1)
+ end
+ buildoptions_cpp {
+ "-Wimplicit-fallthrough",
+ }
+ buildoptions_objcpp {
+ "-Wimplicit-fallthrough",
+ }
+ buildoptions {
+ "-Wno-unused-result", -- needed for fgets,fread on linux
+ -- array bounds checking seems to be buggy in 4.8.1 (try it on video/stvvdp1.c and video/model1.c without -Wno-array-bounds)
+ "-Wno-array-bounds",
+ "-Wno-error=attributes", -- GCC fails to recognize some uses of [[maybe_unused]]
+ }
+ if (version >= 80000) then
+ buildoptions {
+ "-Wno-format-overflow", -- try machine/bfm_sc45_helper.cpp in GCC 8.0.1, among others
+ "-Wno-stringop-truncation", -- ImGui again
+ "-Wno-stringop-overflow", -- formats/victor9k_dsk.cpp bugs the compiler
+ }
+ buildoptions_cpp {
+ "-Wno-class-memaccess", -- many instances in ImGui and BGFX
+ }
+ end
+ if (version >= 100000) then
+ buildoptions {
+ "-Wno-return-local-addr", -- sqlite3.c in GCC 10
+ }
+ end
+ if (version >= 110000) then
+ buildoptions {
+ "-Wno-nonnull", -- luaengine.cpp lambdas do not need "this" captured but GCC 11.1 erroneously insists
+ "-Wno-stringop-overread", -- machine/bbc.cpp in GCC 11.1
+ "-Wno-misleading-indentation", -- sqlite3.c in GCC 11.1
+ "-Wno-maybe-uninitialized" -- expat in GCC 11.1
+ }
+ end
+ end
+ end
+
+if (_OPTIONS["PLATFORM"]=="alpha") then
+ defines {
+ "PTR64=1",
+ }
+end
+
+if (_OPTIONS["PLATFORM"]=="arm") then
+ buildoptions {
+ "-Wno-cast-align",
+ }
+end
+
+if (_OPTIONS["PLATFORM"]=="arm64") then
+ buildoptions {
+ "-Wno-cast-align",
+ }
+ defines {
+ "PTR64=1",
+ }
+end
+
+if (_OPTIONS["PLATFORM"]=="riscv64") then
+ defines {
+ "PTR64=1",
+ }
+end
+
+if (_OPTIONS["PLATFORM"]=="mips64") then
+ defines {
+ "PTR64=1",
+ }
+end
+
+local subdir
+if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
+ subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"]
+else
+ subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"] .. _OPTIONS["subtarget"]
+end
+
+if not toolchain(MAME_BUILD_DIR, subdir) then
+ return -- no action specified
+end
+
+configuration { "asmjs" }
+ buildoptions {
+ "-std=gnu89",
+ "-Wno-implicit-function-declaration",
+ "-s USE_SDL_TTF=2",
+ }
+ buildoptions_cpp {
+ "-std=c++17",
+ "-s DISABLE_EXCEPTION_CATCHING=2",
+ "-s EXCEPTION_CATCHING_WHITELIST=\"['_ZN15running_machine17start_all_devicesEv','_ZN12cli_frontend7executeEiPPc','_ZN8chd_file11open_commonEb','_ZN8chd_file13read_metadataEjjRNSt3__212basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE','_ZN8chd_file13read_metadataEjjRNSt3__26vectorIhNS0_9allocatorIhEEEE','_ZNK19netlist_mame_device19base_validity_checkER16validity_checker']\"",
+ }
+ linkoptions {
+ "-Wl,--start-group",
+ "-r",
+ }
+ archivesplit_size "20"
+
+configuration { "android*" }
+ buildoptions {
+ "-Wno-undef",
+ "-Wno-typedef-redefinition",
+ "-Wno-unknown-warning-option",
+ "-Wno-incompatible-ms-struct",
+ }
+ buildoptions_cpp {
+ "-std=c++17",
+ "-Wno-extern-c-compat",
+ "-Wno-tautological-constant-out-of-range-compare",
+ "-Wno-tautological-pointer-compare",
+ }
+ archivesplit_size "20"
+
+configuration { "android-arm64" }
+ buildoptions {
+ "-Wno-asm-operand-widths",
+ }
+
+configuration { "pnacl" }
+ buildoptions {
+ "-std=gnu89",
+ "-Wno-inline-new-delete",
+ }
+ buildoptions_cpp {
+ "-std=c++17",
+ }
+ archivesplit_size "20"
+
+configuration { "linux-* or rpi or ci20"}
+ links {
+ "dl",
+ "rt",
+ }
+ if _OPTIONS["distro"]=="debian-stable" then
+ defines
+ {
+ "NO_AFFINITY_NP",
+ }
+ end
+
+
+
+configuration { "steamlink" }
+ links {
+ "dl",
+ "EGL",
+ "GLESv2",
+ "SDL2",
+ }
+ defines {
+ "EGL_API_FB",
+ }
+
+configuration { "rpi" }
+ links {
+ "SDL2",
+ "fontconfig",
+ "X11",
+ "GLESv2",
+ "EGL",
+ "bcm_host",
+ "vcos",
+ "vchiq_arm",
+ "pthread",
+ }
+
+
+configuration { "ci20" }
+ links {
+ "SDL2",
+ "asound",
+ "fontconfig",
+ "freetype",
+ "pthread",
+ }
+
+
+configuration { "osx* or xcode4" }
+ links {
+ "pthread",
+ }
+
+configuration { "mingw*" }
+ if _OPTIONS["osd"]=="sdl" then
+ linkoptions {
+ "-Wl,--start-group",
+ }
+ else
+ linkoptions {
+ "-static",
+ }
+ flags {
+ "LinkSupportCircularDependencies",
+ }
+ end
+ links {
+ "user32",
+ "winmm",
+ "advapi32",
+ "shlwapi",
+ "wsock32",
+ "ws2_32",
+ "psapi",
+ "iphlpapi",
+ "shell32",
+ "userenv",
+ }
+
+configuration { "vsllvm" }
+ defines {
+ "XML_STATIC",
+ "WIN32",
+ "_WIN32",
+ "_CRT_NONSTDC_NO_DEPRECATE",
+ "_CRT_SECURE_NO_DEPRECATE",
+ "_CRT_STDIO_LEGACY_WIDE_SPECIFIERS",
+ }
+ includedirs {
+ MAME_DIR .. "3rdparty/dxsdk/Include"
+ }
+
+configuration { "vs20*" }
+ defines {
+ "XML_STATIC",
+ "WIN32",
+ "_WIN32",
+ "_CRT_NONSTDC_NO_DEPRECATE",
+ "_CRT_SECURE_NO_DEPRECATE",
+ "_CRT_STDIO_LEGACY_WIDE_SPECIFIERS",
+ }
+
+-- Windows Store/Phone projects already link against the available libraries.
+if _OPTIONS["vs"]==nil or not (string.startswith(_OPTIONS["vs"], "winstore8") or string.startswith(_OPTIONS["vs"], "winphone8")) then
+ links {
+ "user32",
+ "winmm",
+ "advapi32",
+ "shlwapi",
+ "wsock32",
+ "ws2_32",
+ "psapi",
+ "iphlpapi",
+ "shell32",
+ "userenv",
+ }
+end
+
+ buildoptions {
+ "/WX", -- Treats all compiler warnings as errors.
+ "/w45038", -- warning C5038: data member 'member1' will be initialized after data member 'member2'
+ }
+
+ buildoptions {
+ "/wd4003", -- warning C4003: not enough actual parameters for macro 'xxx'
+ "/wd4005", -- warning C4005: The macro identifier is defined twice. The compiler uses the second macro definition
+ "/wd4018", -- warning C4018: 'x' : signed/unsigned mismatch
+ "/wd4060", -- warning C4060: switch statement contains no 'case' or 'default' labels
+ "/wd4065", -- warning C4065: switch statement contains 'default' but no 'case' labels
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4146", -- warning C4146: unary minus operator applied to unsigned type, result still unsigned
+ "/wd4201", -- warning C4201: nonstandard extension used : nameless struct/union
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4245", -- warning C4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
+ "/wd4250", -- warning C4250: 'xxx' : inherits 'xxx' via dominance
+ "/wd4267", -- warning C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data
+ "/wd4310", -- warning C4310: cast truncates constant value
+ "/wd4319", -- warning C4319: 'operator' : zero extending 'type' to 'type' of greater size
+ "/wd4324", -- warning C4324: 'xxx' : structure was padded due to __declspec(align())
+ "/wd4334", -- warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
+ "/wd4389", -- warning C4389: 'operator' : signed/unsigned mismatch
+ "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
+ "/wd4457", -- warning C4457: declaration of 'xxx' hides function parameter
+ "/wd4458", -- warning C4458: declaration of 'xxx' hides class member
+ "/wd4459", -- warning C4459: declaration of 'xxx' hides global declaration
+ "/wd4611", -- warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable
+ "/wd4702", -- warning C4702: unreachable code
+ "/wd4706", -- warning C4706: assignment within conditional expression
+ "/wd4804", -- warning C4804: '>>': unsafe use of type 'bool' in operation
+ "/wd4805", -- warning C4805: 'x' : unsafe mix of type 'xxx' and type 'xxx' in operation
+ "/wd4996", -- warning C4996: 'function': was declared deprecated
+ }
+
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd9", -- remark #9: nested comment is not allowed
+ "/Qwd82", -- remark #82: storage class is not first
+ "/Qwd111", -- remark #111: statement is unreachable
+ "/Qwd128", -- remark #128: loop is not reachable
+ "/Qwd177", -- remark #177: function "xxx" was declared but never referenced
+ "/Qwd181", -- remark #181: argument of type "UINT32={unsigned int}" is incompatible with format "%d", expecting argument of type "int"
+ "/Qwd185", -- remark #185: dynamic initialization in unreachable code
+ "/Qwd280", -- remark #280: selector expression is constant
+ "/Qwd344", -- remark #344: typedef name has already been declared (with same type)
+ "/Qwd411", -- remark #411: class "xxx" defines no constructor to initialize the following
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ "/Qwd2545", -- remark #2545: empty dependent statement in "else" clause of if - statement
+ "/Qwd2553", -- remark #2553: nonstandard second parameter "TCHAR={WCHAR = { __wchar_t } } **" of "main", expected "char *[]" or "char **" extern "C" int _tmain(int argc, TCHAR **argv)
+ "/Qwd2557", -- remark #2557: comparison between signed and unsigned operands
+ "/Qwd3280", -- remark #3280: declaration hides member "attotime::seconds" (declared at line 126) static attotime from_seconds(INT32 seconds) { return attotime(seconds, 0); }
+
+ "/Qwd170", -- error #170: pointer points outside of underlying object
+ "/Qwd188", -- error #188: enumerated type mixed with another type
+
+ "/Qwd63", -- warning #63: shift count is too large
+ "/Qwd177", -- warning #177: label "xxx" was declared but never referenced
+ "/Qwd186", -- warning #186: pointless comparison of unsigned integer with zero
+ "/Qwd488", -- warning #488: template parameter "_FunctionClass" is not used in declaring the parameter types of function template "device_delegate<_Signature>::device_delegate<_FunctionClass>(delegate<_Signature>:
+ "/Qwd1478", -- warning #1478: function "xxx" (declared at line yyy of "zzz") was declared deprecated
+ "/Qwd1879", -- warning #1879: unimplemented pragma ignored
+ "/Qwd3291", -- warning #3291: invalid narrowing conversion from "double" to "int"
+ "/Qwd1195", -- error #1195: conversion from integer to smaller pointer
+ "/Qwd47", -- error #47: incompatible redefinition of macro "xxx"
+ "/Qwd265", -- error #265: floating-point operation result is out of range
+ -- these occur on a release build, while we can increase the size limits instead some of the files do require extreme amounts
+ "/Qwd11074", -- remark #11074: Inlining inhibited by limit max-size / remark #11074: Inlining inhibited by limit max-total-size
+ "/Qwd11075", -- remark #11075: To get full report use -Qopt-report:4 -Qopt-report-phase ipo
+ }
+end
+
+if _OPTIONS["vs"]=="clangcl" then
+ buildoptions {
+ "-Wno-enum-conversion",
+ "-Wno-ignored-qualifiers",
+ "-Wno-missing-braces",
+ "-Wno-missing-field-initializers",
+ "-Wno-new-returns-null",
+ "-Wno-nonportable-include-path",
+ "-Wno-pointer-bool-conversion",
+ "-Wno-pragma-pack",
+ "-Wno-switch",
+ "-Wno-tautological-constant-out-of-range-compare",
+ "-Wno-tautological-pointer-compare",
+ "-Wno-unknown-warning-option",
+ "-Wno-unused-const-variable",
+ "-Wno-unused-function",
+ "-Wno-unused-label",
+ "-Wno-unused-local-typedef",
+ "-Wno-unused-private-field",
+ "-Wno-unused-variable",
+ "-Wno-xor-used-as-pow",
+ "-Wno-microsoft-cast",
+ }
+end
+
+ linkoptions {
+ "/ignore:4221", -- LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
+ }
+ includedirs {
+ MAME_DIR .. "3rdparty/dxsdk/Include"
+ }
+configuration { "winphone8* or winstore8*" }
+ linkoptions {
+ "/ignore:4264" -- LNK4264: archiving object file compiled with /ZW into a static library; note that when authoring Windows Runtime types it is not recommended to link with a static library that contains Windows Runtime metadata
+ }
+configuration { "vsllvm" }
+ buildoptions {
+ "-Wno-tautological-constant-out-of-range-compare",
+ "-Wno-ignored-qualifiers",
+ "-Wno-missing-field-initializers",
+ "-Wno-ignored-pragma-optimize",
+ "-Wno-unknown-warning-option",
+ "-Wno-unused-function",
+ "-Wno-unused-label",
+ "-Wno-unused-local-typedef",
+ "-Wno-unused-const-variable",
+ "-Wno-unused-parameter",
+ "-Wno-unneeded-internal-declaration",
+ "-Wno-unused-private-field",
+ "-Wno-missing-braces",
+ "-Wno-unused-variable",
+ "-Wno-tautological-pointer-compare",
+ "-Wno-nonportable-include-path",
+ "-Wno-enum-conversion",
+ "-Wno-pragma-pack",
+ "-Wno-new-returns-null",
+ "-Wno-sign-compare",
+ "-Wno-switch",
+ "-Wno-tautological-undefined-compare",
+ "-Wno-deprecated-declarations",
+ "-Wno-macro-redefined",
+ "-Wno-narrowing",
+ }
+
+
+configuration { }
+
+if (_OPTIONS["SOURCES"] ~= nil) then
+ local str = _OPTIONS["SOURCES"]
+ local sourceargs = ""
+ for word in string.gmatch(str, '([^,]+)') do
+ if (not os.isfile(path.join(MAME_DIR, word))) then
+ print("File " .. word.. " does not exist")
+ os.exit()
+ end
+ sourceargs = sourceargs .. " " .. word
+ end
+ OUT_STR = os.outputof( PYTHON .. " " .. MAME_DIR .. "scripts/build/makedep.py sourcesproject -r " .. MAME_DIR .. " -t " .. _OPTIONS["subtarget"] .. sourceargs )
+ load(OUT_STR)()
+ os.outputof( PYTHON .. " " .. MAME_DIR .. "scripts/build/makedep.py sourcesfilter" .. sourceargs .. " > ".. GEN_DIR .. _OPTIONS["target"] .. "/" .. _OPTIONS["subtarget"] .. ".flt" )
+end
+
+group "libs"
+
+if (not os.isfile(path.join("src", "osd", _OPTIONS["osd"] .. ".lua"))) then
+ error("Unsupported value '" .. _OPTIONS["osd"] .. "' for OSD")
+end
+dofile(path.join("src", "osd", _OPTIONS["osd"] .. ".lua"))
+dofile(path.join("src", "lib.lua"))
+if opt_tool(MACHINES, "NETLIST") then
+ dofile(path.join("src", "netlist.lua"))
+end
+--if (STANDALONE~=true) then
+dofile(path.join("src", "formats.lua"))
+formatsProject(_OPTIONS["target"],_OPTIONS["subtarget"])
+--end
+
+group "3rdparty"
+dofile(path.join("src", "3rdparty.lua"))
+
+
+group "core"
+
+dofile(path.join("src", "emu.lua"))
+
+if (STANDALONE~=true) then
+ dofile(path.join("src", "mame", "frontend.lua"))
+end
+
+group "devices"
+dofile(path.join("src", "devices.lua"))
+devicesProject(_OPTIONS["target"],_OPTIONS["subtarget"])
+
+if (STANDALONE~=true) then
+ group "drivers"
+ findfunction("createProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"])
+end
+
+group "emulator"
+dofile(path.join("src", "main.lua"))
+if (_OPTIONS["SOURCES"] == nil) then
+ if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
+ startproject (_OPTIONS["target"])
+ else
+ if (_OPTIONS["subtarget"]=="mess") then
+ startproject (_OPTIONS["subtarget"])
+ else
+ startproject (_OPTIONS["target"] .. _OPTIONS["subtarget"])
+ end
+ end
+else
+ startproject (_OPTIONS["subtarget"])
+end
+mainProject(_OPTIONS["target"],_OPTIONS["subtarget"])
+strip()
+
+if _OPTIONS["with-tools"] then
+ group "tools"
+ dofile(path.join("src", "tools.lua"))
+end
+
+if _OPTIONS["with-tests"] then
+ group "tests"
+ dofile(path.join("src", "tests.lua"))
+end
+
+if _OPTIONS["with-benchmarks"] then
+ group "benchmarks"
+ dofile(path.join("src", "benchmarks.lua"))
+end
+
+function generate_has_header(hashname, hash)
+ fname = GEN_DIR .. "has_" .. hashname:lower() .. ".h"
+ file = io.open(fname, "w")
+ file:write("// Generated file, edition is futile\n")
+ file:write("\n")
+ file:write(string.format("#ifndef GENERATED_HAS_%s_H\n", hashname))
+ file:write(string.format("#define GENERATED_HAS_%s_H\n", hashname))
+ file:write("\n")
+ for k, v in pairs(hash) do
+ if v then
+ file:write(string.format("#define HAS_%s_%s\n", hashname, k))
+ end
+ end
+ file:write("\n")
+ file:write("#endif\n")
+ file:close()
+end
+
+generate_has_header("CPUS", CPUS)
+generate_has_header("SOUNDS", SOUNDS)
+generate_has_header("MACHINES", MACHINES)
+generate_has_header("VIDEOS", VIDEOS)
+generate_has_header("BUSES", BUSES)
+generate_has_header("FORMATS", FORMATS)
diff --git a/docs/release/scripts/minimaws/lib/__init__.py b/docs/release/scripts/minimaws/lib/__init__.py
new file mode 100644
index 00000000000..d89cb7f81ba
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/__init__.py
@@ -0,0 +1,4 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
diff --git a/docs/release/scripts/minimaws/lib/assets/common.js b/docs/release/scripts/minimaws/lib/assets/common.js
new file mode 100644
index 00000000000..7439aaa5a21
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/common.js
@@ -0,0 +1,149 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+
+function make_collapsible(heading, section)
+{
+ var hidden = false;
+ var display = section.style.display;
+ var icon = heading.insertBefore(document.createElement('img'), heading.firstChild);
+ icon.setAttribute('src', assetsurl + '/disclosedown.svg');
+ icon.setAttribute('class', 'disclosure');
+ icon.addEventListener(
+ 'click',
+ function (event)
+ {
+ hidden = !hidden;
+ if (hidden)
+ {
+ icon.setAttribute('src', assetsurl + '/discloseup.svg');
+ section.style.display = 'none';
+ }
+ else
+ {
+ icon.setAttribute('src', assetsurl + '/disclosedown.svg');
+ section.style.display = display;
+ var headingtop = 0;
+ for (var element = heading; element !== null; element = element.offsetParent)
+ headingtop += element.offsetTop;
+ var sectionbot = section.offsetHeight;
+ for (var element = section; element !== null; element = element.offsetParent)
+ sectionbot += element.offsetTop;
+ if ((window.pageYOffset + window.innerHeight) < sectionbot)
+ {
+ if ((sectionbot - headingtop) > window.innerHeight)
+ heading.scrollIntoView(true);
+ else
+ window.scroll(window.pageXOffset, sectionbot - window.innerHeight);
+ }
+ }
+ });
+
+ return function ()
+ {
+ hidden = true;
+ icon.setAttribute('src', assetsurl + '/discloseup.svg');
+ section.style.display = 'none';
+ };
+}
+
+
+function make_table_sortable(tbl)
+{
+ var sorticons = new Array(tbl.tHead.rows[0].cells.length);
+
+ function TableSortHelper(i)
+ {
+ this.column = i;
+ this.header = tbl.tHead.rows[0].cells[i];
+ this.sorted = false;
+ this.direction = 1;
+
+ var container = this.header.appendChild(document.createElement('div'));
+ container.setAttribute('class', 'sorticon');
+
+ this.icon = container.appendChild(document.createElement('img'));
+ this.icon.setAttribute('src', assetsurl + '/sortind.svg');
+ this.icon.addEventListener('click', this.icon_click.bind(this));
+ }
+
+ TableSortHelper.prototype = (function ()
+ {
+ function set_unsorted(obj)
+ {
+ obj.sorted = false;
+ obj.icon.setAttribute('src', assetsurl + '/sortind.svg');
+ }
+
+ function sort_table(obj)
+ {
+ var c = obj.header.cellIndex;
+ var numeric = obj.header.getAttribute('class') == 'numeric';
+ var tbody = tbl.tBodies[0];
+ var trows;
+ if (numeric)
+ {
+ trows = Array.prototype.slice.call(tbody.rows, 0).sort(
+ function (x, y)
+ {
+ return obj.direction * (parseFloat(x.cells[c].textContent) - parseFloat(y.cells[c].textContent));
+ });
+ }
+ else
+ {
+ trows = Array.prototype.slice.call(tbody.rows, 0).sort(
+ function (x, y)
+ {
+ return obj.direction * x.cells[c].textContent.localeCompare(y.cells[c].textContent);
+ });
+ }
+ trows.forEach(function (row) { tbody.appendChild(row); });
+ }
+
+ return {
+ icon_click : function (event)
+ {
+ if (this.sorted)
+ this.direction = -this.direction;
+ if (this.direction < 0)
+ this.icon.setAttribute('src', assetsurl + '/sortdesc.svg');
+ else
+ this.icon.setAttribute('src', assetsurl + '/sortasc.svg');
+ this.sorted = true;
+ for (var i = 0; i < sorticons.length; i++)
+ {
+ if (i != this.column)
+ set_unsorted(sorticons[i]);
+ }
+ sort_table(this);
+ }
+ };
+ })();
+
+ for (var i = 0; i < sorticons.length; i++)
+ sorticons[i] = new TableSortHelper(i);
+}
+
+
+function make_restore_default_handler(popup, index)
+{
+ return function (event)
+ {
+ if (popup.selectedIndex != index)
+ {
+ popup.selectedIndex = index;
+ popup.dispatchEvent(new Event('change'));
+ }
+ }
+}
+
+
+function make_restore_default_button(title, id, popup, index)
+{
+ var btn = document.createElement('button');
+ btn.setAttribute('id', id);
+ btn.setAttribute('type', 'button');
+ btn.disabled = popup.selectedIndex == index;
+ btn.textContent = title;
+ btn.onclick = make_restore_default_handler(popup, index);
+ return btn;
+}
diff --git a/docs/release/scripts/minimaws/lib/assets/digest.js b/docs/release/scripts/minimaws/lib/assets/digest.js
new file mode 100644
index 00000000000..6739d1440d9
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/digest.js
@@ -0,0 +1,234 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+
+function Crc32Digester()
+{
+ this.crc = 0xffffffff;
+}
+
+Crc32Digester.prototype = (function ()
+ {
+ var table = new Uint32Array(256);
+ (function ()
+ {
+ for (var i = 0; i < 256; i++)
+ {
+ var crc = i;
+ for (var b = 0; b < 8; b++)
+ crc = (crc >>> 1) ^ ((crc & 1) ? 0xedb88320 : 0x00000000);
+ table[i] = crc;
+ }
+ })();
+
+ return {
+ digest: function (data, view)
+ {
+ for (var i = 0; i < view.length; i++)
+ this.crc = (this.crc >>> 8) ^ table[(this.crc & 0x000000ff) ^ view[i]];
+ },
+
+ finalise: function ()
+ {
+ return this.crc ^ 0xffffffff;
+ }
+ };
+ })();
+
+
+function Sha1Digester()
+{
+ this.st = new Uint32Array(5);
+ this.st[0] = 0xc3d2e1f0;
+ this.st[1] = 0x10325476;
+ this.st[2] = 0x98badcfe;
+ this.st[3] = 0xefcdab89;
+ this.st[4] = 0x67452301;
+
+ this.cnt = new Uint32Array(2);
+ this.cnt[0] = 0;
+ this.cnt[1] = 0;
+
+ this.buf = new DataView(new ArrayBuffer(64));
+}
+
+Sha1Digester.prototype = (function ()
+ {
+ function rol(x, n)
+ {
+ return ((x << n) | (x >>> (32 - n))) & 0xffffffff;
+ }
+
+ function b(data, i)
+ {
+ var r = data.getUint32(((i + 13) & 15) << 2, false);
+ r ^= data.getUint32(((i + 8) & 15) << 2, false);
+ r ^= data.getUint32(((i + 2) & 15) << 2, false);
+ r ^= data.getUint32((i & 15) << 2, false);
+ r = rol(r, 1);
+ data.setUint32((i & 15) << 2, r, false);
+ return r;
+ }
+
+ function r0(data, d, i)
+ {
+ d[i % 5] = 0xffffffff & (d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5]) + data.getUint32(i << 2, false) + 0x5a827999 + rol(d[(i + 4) % 5], 5));
+ d[(i + 3) % 5] = rol(d[(i + 3) % 5], 30);
+ }
+
+ function r1(data, d, i)
+ {
+ d[i % 5] = 0xffffffff & (d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5])+ b(data, i) + 0x5a827999 + rol(d[(i + 4) % 5], 5));
+ d[(i + 3) % 5] = rol(d[(i + 3) % 5], 30);
+ }
+
+ function r2(data, d, i)
+ {
+ d[i % 5] = 0xffffffff & (d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + b(data, i) + 0x6ed9eba1 + rol(d[(i + 4) % 5], 5));
+ d[(i + 3) % 5] = rol(d[(i + 3) % 5], 30);
+ }
+
+ function r3(data, d, i)
+ {
+ d[i % 5] = 0xffffffff & (d[i % 5] + (((d[(i + 3) % 5] | d[(i + 2) % 5]) & d[(i + 1) % 5]) | (d[(i + 3) % 5] & d[(i + 2) % 5])) + b(data, i) + 0x8f1bbcdc + rol(d[(i + 4) % 5], 5));
+ d[(i + 3) % 5] = rol(d[(i + 3) % 5], 30);
+ }
+
+ function r4(data, d, i)
+ {
+ d[i % 5] = 0xffffffff & (d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + b(data, i) + 0xca62c1d6 + rol(d[(i + 4) % 5], 5));
+ d[(i + 3) % 5] = rol(d[(i + 3) % 5], 30);
+ }
+
+ function process(st, data)
+ {
+ var d = new Uint32Array(st);
+ var i = 0;
+ while (i < 16)
+ r0(data, d, i++);
+ while (i < 20)
+ r1(data, d, i++);
+ while (i < 40)
+ r2(data, d, i++);
+ while (i < 60)
+ r3(data, d, i++);
+ while (i < 80)
+ r4(data, d, i++);
+ for (i = 0; i < st.length; i++)
+ st[i] = (st[i] + d[i]) & 0xffffffff;
+ }
+
+ return {
+ digest: function (data, view)
+ {
+ var residual = this.cnt[0];
+ this.cnt[0] = (this.cnt[0] + (view.length << 3)) & 0xffffffff;
+ if (residual > this.cnt[0])
+ this.cnt[1]++;
+ this.cnt[1] += (view.length >>> 29);
+ residual = (residual >>> 3) & 63;
+ var offset = 0;
+ if ((residual + view.length) >= 64)
+ {
+ if (residual > 0)
+ {
+ for (offset = 0; (offset + residual) < 64; offset++)
+ this.buf.setUint8(offset + residual, view[offset]);
+ process(this.st, this.buf);
+ residual = 0;
+ }
+ for ( ; (view.length - offset) >= 64; offset += 64)
+ process(this.st, new DataView(data, offset, 64));
+ }
+ for ( ; offset < view.length; residual++, offset++)
+ this.buf.setUint8(residual, view[offset]);
+ },
+
+ finalise : function ()
+ {
+ var lenbuf = new ArrayBuffer(8);
+ var lenview = new DataView(lenbuf);
+ lenview.setUint32(0, this.cnt[1], false);
+ lenview.setUint32(4, this.cnt[0], false);
+ var padbuf = new ArrayBuffer(64 - (63 & ((this.cnt[0] >>> 3) + 8)));
+ var padview = new Uint8Array(padbuf);
+ padview[0] = 0x80;
+ for (var i = 1; i < padview.length; i++)
+ padview[i] = 0x00;
+ this.digest(padbuf, padview);
+ this.digest(lenbuf, new Uint8Array(lenbuf));
+ var result = new Array(20);
+ for (var i = 0; i < 20; i++)
+ result[i] = (this.st[4 - (i >>> 2)] >> ((3 - (i & 3)) << 3)) & 0x000000ff;
+ return result.map(x => x.toString(16).padStart(2, '0')).join('');
+ }
+ };
+ })();
+
+
+function StuckBitsDigester(max = 4)
+{
+ this.offset = 0;
+ this.state = [ ];
+ for (var i = 0; i <= max; i++)
+ {
+ var bytes = 1 << i;
+ this.state.push({ filled: 0, bits: new Uint8Array(bytes), mask: new Uint8Array(bytes) });
+ }
+}
+
+StuckBitsDigester.prototype = (function ()
+ {
+ return {
+ digest: function (data, view)
+ {
+ for (var i = 0; i < view.length; i++)
+ {
+ var data = view[i];
+ for (var j = 0; j < this.state.length; j++)
+ {
+ var detail = this.state[j];
+ var bytes = 1 << j;
+ var o = this.offset % bytes;
+ var f = o == (bytes - 1);
+ if (!detail.filled)
+ {
+ detail.bits[o] = data;
+ detail.mask[o] = 0xff;
+ if (f)
+ detail.filled = 1;
+ }
+ else
+ {
+ detail.mask[o] &= ~(data ^ detail.bits[o]);
+ detail.bits[o] &= detail.mask[o];
+ }
+ if (o == (bytes - 1))
+ detail.filled += 1;
+ }
+ this.offset = (this.offset + 1) % (1 << (this.state.length - 1));
+ }
+ },
+
+ finalise: function ()
+ {
+ var result = [ ];
+ var lastresult = null;
+ for (var i = 0; (i < this.state.length) && (this.state[i].filled >= 4); i++)
+ {
+ var detail = this.state[i];
+ var bytes = 1 << i;
+ for (var j = 0; j < bytes; j++)
+ {
+ var mask = detail.mask[j];
+ if (mask && ((lastresult === null) || (mask != lastresult.mask[j % (1 << (lastresult.mask.length - 1))])))
+ {
+ lastresult = { bits: detail.bits, mask: detail.mask };
+ result.push(lastresult);
+ break;
+ }
+ }
+ }
+ return result;
+ }
+ };
+ })();
diff --git a/docs/release/scripts/minimaws/lib/assets/disclosedown.svg b/docs/release/scripts/minimaws/lib/assets/disclosedown.svg
new file mode 100644
index 00000000000..bb66c7f5de9
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/disclosedown.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="16">
+ <path d="m 0,5 h 16 l -8,10 z" />
+</svg>
diff --git a/docs/release/scripts/minimaws/lib/assets/discloseup.svg b/docs/release/scripts/minimaws/lib/assets/discloseup.svg
new file mode 100644
index 00000000000..010065a446b
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/discloseup.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="16">
+ <path d="m 5,0 v 16 l 10,-8 z" />
+</svg>
diff --git a/docs/release/scripts/minimaws/lib/assets/machine.js b/docs/release/scripts/minimaws/lib/assets/machine.js
new file mode 100644
index 00000000000..b7f600f04d6
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/machine.js
@@ -0,0 +1,628 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+
+var slot_info = Object.create(null);
+var bios_sets = Object.create(null);
+var machine_flags = Object.create(null);
+var softwarelist_info = Object.create(null);
+
+
+function make_slot_popup_id(name) { return ('select-slot-choice-' + name).replace(/:/g, '-'); }
+function get_slot_popup(name) { return document.getElementById(make_slot_popup_id(name)); }
+
+
+function update_cmd_preview()
+{
+ var inifmt = document.getElementById('select-options-format').value == 'ini';
+ var result = '';
+ var first = true;
+ function add_option(flag, value)
+ {
+ if (first)
+ first = false;
+ else if (inifmt)
+ result += '\n';
+ else
+ result += ' ';
+
+ if (inifmt)
+ {
+ result += flag + ' ';
+ if (flag.length < 25)
+ result += ' '.repeat(25 - flag.length);
+ result += value;
+ }
+ else
+ {
+ result += '-' + flag + ' ';
+ if (value == '')
+ result += '""';
+ else
+ result += value;
+ }
+ }
+ var elide_defaults = !document.getElementById('check-explicit-defaults').checked;
+
+ // add system BIOS if applicable
+ var sysbios = document.getElementById('select-system-bios');
+ if (sysbios && (!elide_defaults || (sysbios.selectedOptions[0].getAttribute('data-isdefault') != 'yes')))
+ add_option('bios', sysbios.value);
+
+ // add RAM option if applicable
+ var ramopt = document.getElementById('select-ram-option');
+ if (ramopt && (!elide_defaults || (ramopt.selectedOptions[0].getAttribute('data-isdefault') != 'yes')))
+ add_option('ramsize', ramopt.value);
+
+ var slotslist = document.getElementById('list-slot-options');
+ if (slotslist)
+ {
+ for (var item = slotslist.firstChild; item; item = item.nextSibling)
+ {
+ if (item.nodeName == 'DT')
+ {
+ // need to set the slot option if it has non-default card and/or non-default card BIOS
+ var slotname = item.getAttribute('data-slotname');
+ var selection = get_slot_popup(slotname).selectedOptions[0];
+ var biospopup = document.getElementById(('select-slot-bios-' + slotname).replace(/:/g, '-'));
+ var defcard = selection.getAttribute('data-isdefault') == 'yes';
+ var defbios = !biospopup || (biospopup.selectedOptions[0].getAttribute('data-isdefault') == 'yes');
+ if (!elide_defaults || !defcard || !defbios)
+ {
+ var card = selection.value;
+ add_option(slotname, card + ((biospopup && (!elide_defaults || !defbios)) ? (',bios=' + biospopup.value) : ''));
+ }
+ }
+ }
+ }
+
+ // replace the preview with appropriate element
+ var target = document.getElementById('para-cmd-preview');
+ var replacement = document.createElement(inifmt ? 'pre' : 'tt');
+ replacement.setAttribute('id', 'para-cmd-preview');
+ replacement.textContent = result;
+ target.parentNode.replaceChild(replacement, target);
+}
+
+
+function set_default_system_bios()
+{
+ // search for an explicit default option
+ var sysbios = document.getElementById('select-system-bios');
+ var len = sysbios.options.length;
+ for (var i = 0; i < len; i++)
+ {
+ if (sysbios.options[i].getAttribute('data-isdefault') == 'yes')
+ {
+ // select it and add a button for restoring it
+ sysbios.selectedIndex = i;
+ var dflt = make_restore_default_button('default', 'btn-def-system-bios', sysbios, i);
+ sysbios.onchange = make_slot_bios_change_handler(dflt);
+ sysbios.parentNode.appendChild(document.createTextNode(' '));
+ sysbios.parentNode.appendChild(dflt);
+ break;
+ }
+ }
+ update_cmd_preview();
+}
+
+
+function set_default_ram_option()
+{
+ // search for an explicit default option
+ var ramopt = document.getElementById('select-ram-option');
+ var len = ramopt.options.length;
+ for (var i = 0; i < len; i++)
+ {
+ if (ramopt.options[i].getAttribute('data-isdefault') == 'yes')
+ {
+ // select it and add a button for restoring it
+ ramopt.selectedIndex = i;
+ var dflt = make_restore_default_button('default', 'btn-def-ram-option', ramopt, i);
+ ramopt.onchange = make_slot_bios_change_handler(dflt);
+ ramopt.parentNode.appendChild(document.createTextNode(' '));
+ ramopt.parentNode.appendChild(dflt);
+ break;
+ }
+ }
+ update_cmd_preview();
+}
+
+
+var fetch_bios_sets = (function ()
+ {
+ var pending = Object.create(null);
+ return function (device)
+ {
+ if (!Object.prototype.hasOwnProperty.call(bios_sets, device) && !Object.prototype.hasOwnProperty.call(pending, device))
+ {
+ pending[device] = true;
+ var req = new XMLHttpRequest();
+ req.open('GET', appurl + 'rpc/bios/' + encodeURIComponent(device), true);
+ req.responseType = 'json';
+ req.onload =
+ function ()
+ {
+ delete pending[device];
+ if (req.status == 200)
+ {
+ bios_sets[device] = req.response;
+ var slotslist = document.getElementById('list-slot-options');
+ if (slotslist)
+ {
+ for (var item = slotslist.firstChild; item; item = item.nextSibling)
+ {
+ if ((item.nodeName == 'DT') && (item.getAttribute('data-slotcard') == device))
+ add_bios_row(item.getAttribute('data-slotname'), item.nextSibling.firstChild, device);
+ }
+ }
+ }
+ };
+ req.send();
+ }
+ };
+ })();
+
+
+var fetch_machine_flags = (function ()
+ {
+ var pending = Object.create(null);
+ return function (device)
+ {
+ if (!Object.prototype.hasOwnProperty.call(machine_flags, device) && !Object.prototype.hasOwnProperty.call(pending, device))
+ {
+ pending[device] = true;
+ var req = new XMLHttpRequest();
+ req.open('GET', appurl + 'rpc/flags/' + encodeURIComponent(device), true);
+ req.responseType = 'json';
+ req.onload =
+ function ()
+ {
+ delete pending[device];
+ if (req.status == 200)
+ {
+ machine_flags[device] = req.response;
+ var slotslist = document.getElementById('list-slot-options');
+ if (slotslist)
+ {
+ for (var item = slotslist.firstChild; item; item = item.nextSibling)
+ {
+ if ((item.nodeName == 'DT') && (item.getAttribute('data-slotcard') == device))
+ add_flag_rows(item.nextSibling.firstChild, device);
+ }
+ }
+ }
+ };
+ req.send();
+ }
+ };
+ })();
+
+
+var fetch_softwarelist_info = (function ()
+ {
+ var pending = Object.create(null);
+ return function (device)
+ {
+ if (!Object.prototype.hasOwnProperty.call(softwarelist_info, device) && !Object.prototype.hasOwnProperty.call(pending, device))
+ {
+ pending[device] = true;
+ var req = new XMLHttpRequest();
+ req.open('GET', appurl + 'rpc/softwarelists/' + encodeURIComponent(device), true);
+ req.responseType = 'json';
+ req.onload =
+ function ()
+ {
+ delete pending[device];
+ if (req.status == 200)
+ {
+ softwarelist_info[device] = req.response;
+ var slotslist = document.getElementById('list-slot-options');
+ if (slotslist)
+ {
+ for (var item = slotslist.firstChild; item; item = item.nextSibling)
+ {
+ if ((item.nodeName == 'DT') && (item.getAttribute('data-slotcard') == device))
+ {
+ var slotname = item.getAttribute('data-slotname');
+ add_softwarelist_rows(
+ device,
+ slotname,
+ document.getElementById('select-slot-choice-' + slotname.replace(/:/g, '-')).value);
+ }
+ }
+ }
+ }
+ };
+ req.send();
+ }
+ };
+ })();
+
+
+function add_flag_rows(table, device)
+{
+ var sorted_features = Object.keys(machine_flags[device].features).sort();
+ var imperfect = [], unemulated = [];
+ var len = sorted_features.length;
+ for (var i = 0; i < len; i++)
+ ((machine_flags[device].features[sorted_features[i]].overall == 'unemulated') ? unemulated : imperfect).push(sorted_features[i]);
+
+ function add_one(flags, title)
+ {
+ var len = flags.length;
+ if (len > 0)
+ {
+ var row = document.createElement('tr');
+ row.appendChild(document.createElement('th')).textContent = title;
+ var cell = row.appendChild(document.createElement('td'));
+ cell.textContent = flags[0];
+ for (i = 1; i < len; i++)
+ cell.textContent += ', ' + flags[i];
+ if (table.lastChild.getAttribute('class') == 'devbios')
+ table.insertBefore(row, table.lastChild);
+ else
+ table.appendChild(row);
+ }
+ }
+
+ add_one(unemulated, 'Unemulated features:');
+ add_one(imperfect, 'Imperfect features:');
+}
+
+
+function add_softwarelist_rows(device, slot, card)
+{
+ var sorted_softwarelists = Object.keys(softwarelist_info[device]).sort();
+ var cardtag = slot + ':' + card;
+ if (sorted_softwarelists.length)
+ {
+ var table = document.getElementById('tbl-softwarelists').tBodies[0];
+ sorted_softwarelists.forEach(
+ function (tag)
+ {
+ var cell, link;
+ var info = softwarelist_info[device][tag];
+ var href = appurl + 'softwarelist/' + encodeURIComponent(info.shortname);
+ var row = table.appendChild(document.createElement('tr'));
+ row.setAttribute('id', 'row-softwarelists-' + (cardtag + tag).replace(/:/g, '-'))
+ row.appendChild(document.createElement('td')).textContent = cardtag;
+ link = row.appendChild(document.createElement('td')).appendChild(document.createElement('a'));
+ link.setAttribute('href', href);
+ link.textContent = info.shortname;
+ link = row.appendChild(document.createElement('td')).appendChild(document.createElement('a'));
+ link.setAttribute('href', href);
+ link.textContent = info.description;
+ row.appendChild(document.createElement('td')).textContent = info.status;
+ total = info.total;
+ cell = row.appendChild(document.createElement('td'));
+ cell.textContent = total.toString(10);
+ cell.style.textAlign = 'right';
+ if (!total)
+ total = 1;
+ cell = row.appendChild(document.createElement('td'));
+ cell.textContent = (info.supported * 100.0 / total).toFixed(1) + '%';
+ cell.style.textAlign = 'right';
+ cell = row.appendChild(document.createElement('td'));
+ cell.textContent = (info.partiallysupported * 100.0 / total).toFixed(1) + '%';
+ cell.style.textAlign = 'right';
+ cell = row.appendChild(document.createElement('td'));
+ cell.textContent = (info.unsupported * 100.0 / total).toFixed(1) + '%';
+ cell.style.textAlign = 'right';
+ });
+ document.getElementById('heading-softwarelists').style.removeProperty('display');
+ document.getElementById('tbl-softwarelists').style.removeProperty('display');
+ }
+}
+
+
+function add_bios_row(slot, table, device)
+{
+ var sorted_sets = Object.keys(bios_sets[device]).sort();
+ var len = sorted_sets.length;
+ if (len > 0)
+ {
+ // create table row, add heading
+ var row = document.createElement('tr');
+ row.setAttribute('class', 'devbios');
+ row.appendChild(document.createElement('th')).textContent = 'BIOS:';
+ var cell = document.createElement('td');
+
+ // make the BIOS popul itself
+ var popup = document.createElement('select');
+ popup.setAttribute('id', ('select-slot-bios-' + slot).replace(/:/g, '-'));
+ for (var i = 0; i < len; i++)
+ {
+ var set = sorted_sets[i];
+ var detail = bios_sets[device][set];
+ var option = document.createElement('option');
+ option.setAttribute('value', set);
+ option.setAttribute('data-isdefault', detail.isdefault ? 'yes' : 'no');
+ option.textContent = set + ' - ' + detail.description;
+ popup.appendChild(option);
+ if (detail.isdefault)
+ popup.selectedIndex = i;
+ }
+ cell.appendChild(popup);
+
+ // make a button to restore the default
+ var dflt;
+ if (popup.selectedOptions[0].getAttribute('data-isdefault') == 'yes')
+ {
+ dflt = make_restore_default_button('default', ('btn-def-slot-bios-' + slot).replace(/:/g, '-'), popup, popup.selectedIndex);
+ cell.appendChild(document.createTextNode(' '))
+ cell.appendChild(dflt);
+ }
+
+ // drop the controls into a cell, add it to the table, keep the command line preview up-to-date
+ popup.onchange = make_slot_bios_change_handler(dflt);
+ row.appendChild(cell);
+ table.appendChild(row);
+ update_cmd_preview();
+ }
+}
+
+
+function make_slot_term(name, slot, defaults)
+{
+ var len, i;
+
+ // see if we can find a default, outer layers take precedence
+ var defcard = '';
+ len = defaults.length;
+ for (i = 0; (i < len) && (defcard == ''); i++)
+ {
+ if (Object.prototype.hasOwnProperty.call(defaults[i], name))
+ defcard = defaults[i][name];
+ }
+
+ // create a container with the slot name and popup
+ var term = document.createElement('dt');
+ term.setAttribute('id', ('item-slot-choice-' + name).replace(/:/g, '-'));
+ term.setAttribute('data-slotname', name);
+ term.setAttribute('data-slotcard', '');
+ term.textContent = name + ': ';
+ var popup = document.createElement('select');
+ popup.setAttribute('id', make_slot_popup_id(name));
+ term.appendChild(popup);
+
+ // add the empty slot option
+ var option = document.createElement('option');
+ option.setAttribute('value', '');
+ option.setAttribute('data-isdefault', ('' == defcard) ? 'yes' : 'no');
+ option.textContent = '-';
+ popup.appendChild(option);
+ popup.selectedIndex = 0;
+
+ // add options for the cards
+ var sorted_choices = Object.keys(slot).sort();
+ len = sorted_choices.length;
+ for (i = 0; i < len; i++)
+ {
+ var choice = sorted_choices[i];
+ var card = slot[choice];
+ option = document.createElement('option');
+ option.setAttribute('value', choice);
+ option.setAttribute('data-isdefault', (choice == defcard) ? 'yes' : 'no');
+ option.textContent = choice + ' - ' + card.description;
+ popup.appendChild(option);
+ if (choice == defcard)
+ popup.selectedIndex = i + 1;
+ }
+
+ // make a button for restoring the default and hook up events
+ var dflt = make_restore_default_button('default', ('btn-def-slot-choice-' + name).replace(/:/g, '-'), popup, popup.selectedIndex);
+ term.appendChild(document.createTextNode(' '));
+ term.appendChild(dflt);
+ popup.onchange = make_slot_change_handler(name, slot, defaults, dflt);
+ return term;
+}
+
+
+function add_slot_items(root, device, defaults, slotslist, pos)
+{
+ // add another layer of defaults for this device
+ var defvals = Object.create(null);
+ for (var key in slot_info[device].defaults)
+ defvals[root + key] = slot_info[device].defaults[key];
+ defaults = defaults.slice();
+ defaults.push(defvals);
+ var defcnt = defaults.length;
+
+ // add controls for each subslot
+ var slots = slot_info[device].slots;
+ var sorted_slots = Object.keys(slots).sort();
+ var len = sorted_slots.length;
+ for (var i = 0; i < len; i++)
+ {
+ var slotname = sorted_slots[i];
+ var slotabs = root + slotname;
+ var slot = slots[slotname];
+ var term = make_slot_term(slotabs, slot, defaults);
+ var def = document.createElement('dd');
+ def.setAttribute('id', ('item-slot-detail-' + slotabs).replace(/:/g, '-'));
+ if (pos)
+ {
+ slotslist.insertBefore(term, pos);
+ slotslist.insertBefore(def, pos);
+ }
+ else
+ {
+ slotslist.appendChild(term);
+ slotslist.appendChild(def);
+ }
+
+ // force a change event to populate subslot controls if the default isn't empty
+ get_slot_popup(slotabs).dispatchEvent(new Event('change'));
+ }
+
+ update_cmd_preview();
+}
+
+
+function make_slot_change_handler(name, slot, defaults, dfltbtn)
+{
+ var selection = null;
+ return function (event)
+ {
+ var choice = event.target.value;
+ var slotslist = event.target.parentNode.parentNode;
+ var def = event.target.parentNode.nextSibling;
+ var slotname = event.target.parentNode.getAttribute('data-slotname');
+ selection = (choice == '') ? null : slot[choice];
+ dfltbtn.disabled = event.target.selectedOptions[0].getAttribute('data-isdefault') == 'yes';
+
+ // clear out any subslots from previous selection
+ var prefix = slotname + ':';
+ for (var candidate = def.nextSibling; candidate && candidate.getAttribute('data-slotname').startsWith(prefix); )
+ {
+ var next = candidate.nextSibling;
+ slotslist.removeChild(candidate);
+ candidate = next.nextSibling;
+ slotslist.removeChild(next);
+ }
+
+ // clear out any software lists from previous selection
+ var softwarelist_rowid_prefix = 'row-softwarelists-' + prefix.replace(/:/g, '-');
+ for (var candidate = document.getElementById('tbl-softwarelists').tBodies[0].rows[0]; candidate; )
+ {
+ var next = candidate.nextSibling;
+ if ((candidate.nodeName == 'TR') && candidate.getAttribute('id').startsWith(softwarelist_rowid_prefix))
+ candidate.parentNode.removeChild(candidate);
+ candidate = next;
+ }
+
+ if (selection === null)
+ {
+ // no selection, remove the slot card details table
+ event.target.parentNode.setAttribute('data-slotcard', '');
+ if (def.firstChild)
+ def.removeChild(def.firstChild);
+ }
+ else
+ {
+ // stash the selected device where it's easy to find
+ event.target.parentNode.setAttribute('data-slotcard', selection.device);
+
+ // create details table and add a link to the device's page
+ var tbl = document.createElement('table');
+ tbl.setAttribute('class', 'sysinfo');
+ var row = tbl.appendChild(document.createElement('tr'));
+ row.appendChild(document.createElement('th')).textContent = 'Short name:';
+ var link = row.appendChild(document.createElement('td')).appendChild(document.createElement('a'));
+ link.textContent = selection.device;
+ link.setAttribute('href', appurl + 'machine/' + encodeURIComponent(selection.device));
+
+ // if we have emulation flags, populate now, otherwise fetch asynchronously
+ if (!Object.prototype.hasOwnProperty.call(machine_flags, selection.device))
+ fetch_machine_flags(selection.device);
+ else
+ add_flag_rows(tbl, selection.device);
+
+ // if we have BIOS details, populate now, otherwise fetch asynchronously
+ if (!Object.prototype.hasOwnProperty.call(bios_sets, selection.device))
+ fetch_bios_sets(selection.device);
+ else
+ add_bios_row(slotname, tbl, selection.device);
+
+ // if we have software list info, populate now, otherweise fetch asynchronously
+ if (!Object.prototype.hasOwnProperty.call(softwarelist_info, selection.device))
+ fetch_softwarelist_info(selection.device);
+ else
+ add_softwarelist_rows(selection.device, slotname, choice);
+
+ // drop the details table into the list
+ if (def.firstChild)
+ def.replaceChild(tbl, def.firstChild);
+ else
+ def.appendChild(tbl);
+
+ // create controls for subslots
+ add_slot_items(slotname + ':' + choice, selection.device, defaults, slotslist, def.nextSibling);
+ }
+ update_cmd_preview();
+ };
+}
+
+
+function make_slot_bios_change_handler(dflt)
+{
+ return function (event)
+ {
+ if (dflt)
+ dflt.disabled = event.target.selectedOptions[0].getAttribute('data-isdefault') == 'yes';
+ update_cmd_preview();
+ }
+}
+
+
+function populate_slots(machine)
+{
+ var placeholder = document.getElementById('para-slots-placeholder');
+ var slotslist = document.createElement('dl');
+ slotslist.setAttribute('id', 'list-slot-options');
+ placeholder.parentNode.replaceChild(slotslist, placeholder);
+ add_slot_items('', machine, [], slotslist, null);
+}
+
+
+function slot_retrieve_error(device)
+{
+ var errors;
+ var placeholder = document.getElementById('para-slots-placeholder');
+ if (placeholder)
+ {
+ errors = document.createElement('div');
+ errors.setAttribute('id', 'div-slots-errors');
+ placeholder.parentNode.replaceChild(errors, placeholder);
+ }
+ else
+ {
+ errors = document.getElementById('div-slots-errors');
+ }
+ var message = document.createElement('p');
+ message.textContent = 'Error retrieving slot information for ' + device + '.';
+ errors.appendChild(message);
+}
+
+
+function fetch_slots(machine)
+{
+ function make_request(device)
+ {
+ var req = new XMLHttpRequest();
+ req.open('GET', appurl + 'rpc/slots/' + encodeURIComponent(device), true);
+ req.responseType = 'json';
+ req.onload =
+ function ()
+ {
+ if (req.status == 200)
+ {
+ slot_info[device] = req.response;
+ delete pending[device];
+ for (var slotname in req.response.slots)
+ {
+ var slot = req.response.slots[slotname];
+ for (var choice in slot)
+ {
+ var card = slot[choice].device
+ if (!Object.prototype.hasOwnProperty.call(slot_info, card) && !Object.prototype.hasOwnProperty.call(pending, card))
+ {
+ pending[card] = true;
+ make_request(card);
+ }
+ }
+ }
+ if (!Object.keys(pending).length)
+ populate_slots(machine);
+ }
+ else
+ {
+ slot_retrieve_error(device);
+ }
+ };
+ req.send();
+ }
+ var pending = Object.create(null);
+ pending[machine] = true;
+ make_request(machine);
+}
diff --git a/docs/release/scripts/minimaws/lib/assets/romident.js b/docs/release/scripts/minimaws/lib/assets/romident.js
new file mode 100644
index 00000000000..599b0674007
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/romident.js
@@ -0,0 +1,641 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+
+var matched_names = new Array();
+var unmatched_names = new Array();
+var dump_info = Object.create(null);
+var machine_info = Object.create(null);
+var softwarelist_info = Object.create(null);
+var software_info = Object.create(null);
+
+
+function get_chd_sha1(header)
+{
+ if (header.byteLength < 16)
+ return null;
+ if (String.fromCharCode.apply(null, new Uint8Array(header, 0, 8)) != 'MComprHD')
+ return null;
+ var view = new DataView(header);
+ var headerlen = view.getUint32(8, false);
+ var version = view.getUint32(12, false);
+ var sha1offs;
+ if (version == 3)
+ {
+ if (headerlen != 120)
+ return null;
+ sha1offs = 80;
+ }
+ else if (version == 4)
+ {
+ if (headerlen != 108)
+ return null;
+ sha1offs = 48;
+ }
+ else if (version == 5)
+ {
+ if (headerlen != 124)
+ return null;
+ sha1offs = 84;
+ }
+ else
+ {
+ return null;
+ }
+ if (header.byteLength < (sha1offs + 20))
+ return null;
+ return Array.from(new Uint8Array(header, sha1offs, 20)).map(x => x.toString(16).padStart(2, '0')).join('');
+}
+
+
+function get_sha1_group(sha1)
+{
+ if (Object.hasOwnProperty.call(dump_info, sha1))
+ {
+ return dump_info[sha1];
+ }
+ else
+ {
+ var result = new Object();
+ result.crc = Object.create(null);
+ dump_info[sha1] = result;
+ return result;
+ }
+}
+
+
+function add_matches(table, names, matches)
+{
+ for (var i = 0; i < names.length; i++)
+ {
+ var row = table.appendChild(document.createElement('tr'));
+ var name = row.appendChild(document.createElement('th'));
+ name.textContent = names[i];
+ if (matches !== null)
+ {
+ name.setAttribute('rowspan', matches.length);
+ row.appendChild(document.createElement('td')).textContent = matches[0].name;
+ var bad = row.appendChild(document.createElement('td'));
+ if (matches[0].bad)
+ bad.textContent = 'BAD';
+ for (var j = 1; j < matches.length; j++)
+ {
+ row = table.appendChild(document.createElement('tr'));
+ row.appendChild(document.createElement('td')).textContent = matches[j].name;
+ bad = row.appendChild(document.createElement('td'));
+ if (matches[j].bad)
+ bad.textContent = 'BAD';
+ }
+ }
+ }
+}
+
+
+function add_software_matches(table, names, part, matches)
+{
+ for (var i = 0; i < names.length; i++)
+ {
+ var row = table.appendChild(document.createElement('tr'));
+ var name = row.appendChild(document.createElement('th'));
+ name.textContent = names[i];
+ if (matches !== null)
+ {
+ name.setAttribute('rowspan', matches.length);
+ row.appendChild(document.createElement('td')).textContent = part;
+ row.appendChild(document.createElement('td')).textContent = matches[0].name;
+ var bad = row.appendChild(document.createElement('td'));
+ if (matches[0].bad)
+ bad.textContent = 'BAD';
+ for (var j = 1; j < matches.length; j++)
+ {
+ row = table.appendChild(document.createElement('tr'));
+ row.appendChild(document.createElement('td')).textContent = matches[j].name;
+ bad = row.appendChild(document.createElement('td'));
+ if (matches[j].bad)
+ bad.textContent = 'BAD';
+ }
+ }
+ }
+}
+
+
+function add_unmatched(names, crc, sha1)
+{
+ var table;
+ if (unmatched_names.length > 0)
+ {
+ table = document.getElementById('table-unmatched');
+ }
+ else
+ {
+ var div = document.getElementById('div-unmatched');
+ var heading = div.appendChild(document.createElement('h2'));
+ heading.textContent = 'Unmatched';
+ table = div.appendChild(document.createElement('table'));
+ table.setAttribute('id', 'table-unmatched');
+ make_collapsible(heading, table);
+ }
+ var content;
+ if (crc === null)
+ {
+ content = 'SHA1(' + sha1 + ')';
+ }
+ else
+ {
+ if (crc < 0)
+ crc = 0xffffffff + crc + 1;
+ content = 'CRC(' + crc.toString(16).padStart(8, '0') + ') SHA1(' + sha1 + ')';
+ }
+ for (var i = 0; i < names.length; i++)
+ {
+ var row = table.appendChild(document.createElement('tr'));
+ row.appendChild(document.createElement('th')).textContent = names[i];
+ row.appendChild(document.createElement('td')).textContent = content;
+ unmatched_names.push(names[i]);
+ }
+}
+
+
+function add_issues(name)
+{
+ var div = document.getElementById('div-issues');
+ var list;
+ if (!div.hasChildNodes())
+ {
+ var heading = div.appendChild(document.createElement('h2'));
+ heading.textContent = 'Potential Issues';
+ list = div.appendChild(document.createElement('dl'));
+ make_collapsible(heading, list);
+ }
+ else
+ {
+ list = div.lastChild;
+ }
+ list.appendChild(document.createElement('dt')).textContent = name;
+ var table = list.appendChild(document.createElement('dd')).appendChild(document.createElement('table'));
+ table.setAttribute('class', 'sysinfo');
+ return table;
+}
+
+
+function add_stuck_bits(table, stuck)
+{
+ function format_stuck_bits(bits, mask)
+ {
+ var result = '';
+ for (var i = 0; i < bits.length; i++)
+ {
+ if (i > 0)
+ result += ' ';
+ for (var j = 0; j < 8; j++)
+ {
+ if (!((mask[i] >> (7 - j)) & 0x01))
+ result += '-';
+ else if ((bits[i] >> (7 - j)) & 0x01)
+ result += '1';
+ else
+ result += '0';
+ }
+ }
+ var cell = document.createElement('td');
+ cell.appendChild(document.createElement('tt')).textContent = result;
+ return cell;
+ }
+
+ var row = table.appendChild(document.createElement('tr'));
+ var header = row.appendChild(document.createElement('th'));
+ header.textContent = 'Fixed data bits:';
+ header.setAttribute('rowspan', stuck.length);
+ row.appendChild(format_stuck_bits(stuck[0].bits, stuck[0].mask));
+ for (var i = 1; i < stuck.length; i++)
+ {
+ row = table.appendChild(document.createElement('tr'));
+ row.appendChild(format_stuck_bits(stuck[i].bits, stuck[i].mask));
+ }
+}
+
+
+function get_machine_table(shortname, description)
+{
+ if (Object.hasOwnProperty.call(machine_info, shortname))
+ {
+ return machine_info[shortname];
+ }
+ else
+ {
+ var div = document.getElementById('div-machines');
+ if (!div.hasChildNodes())
+ div.appendChild(document.createElement('h2')).textContent = 'Machines';
+ var heading = div.appendChild(document.createElement('h3'));
+ var link = heading.appendChild(document.createElement('a'));
+ link.textContent = description;
+ link.setAttribute('href', appurl + 'machine/' + encodeURIComponent(shortname));
+ var table = div.appendChild(document.createElement('table'));
+ machine_info[shortname] = table;
+ add_matches(table, matched_names, null);
+ make_collapsible(heading, table);
+ return table;
+ }
+}
+
+
+function get_softwarelist_div(shortname, description)
+{
+ if (Object.hasOwnProperty.call(softwarelist_info, shortname))
+ {
+ return softwarelist_info[shortname];
+ }
+ else
+ {
+ software_info[shortname] = Object.create(null)
+ var div = document.getElementById('div-software');
+ if (!div.hasChildNodes())
+ div.appendChild(document.createElement('h2')).textContent = 'Software';
+ div = div.appendChild(document.createElement('div'));
+ var heading = div.appendChild(document.createElement('h3'));
+ var link = heading.appendChild(document.createElement('a'));
+ link.textContent = description;
+ link.setAttribute('href', appurl + 'softwarelist/' + encodeURIComponent(shortname));
+ softwarelist_info[shortname] = div;
+ return div;
+ }
+}
+
+
+function get_software_table(softwarelist, shortname, description)
+{
+ if (Object.hasOwnProperty.call(software_info, softwarelist) && Object.hasOwnProperty.call(software_info[softwarelist], shortname))
+ {
+ return software_info[softwarelist][shortname];
+ }
+ else
+ {
+ var div = softwarelist_info[softwarelist];
+ var heading = div.appendChild(document.createElement('h4'));
+ var link = heading.appendChild(document.createElement('a'));
+ link.textContent = description;
+ link.setAttribute('href', appurl + 'softwarelist/' + encodeURIComponent(softwarelist) + '/' + encodeURIComponent(shortname));
+ var table = div.appendChild(document.createElement('table'));
+ software_info[softwarelist][shortname] = table;
+ add_software_matches(table, matched_names, null, null);
+ return table;
+ }
+}
+
+
+function request_dumps(name, group, crc, sha1, url, progress)
+{
+ var req = new XMLHttpRequest();
+ req.responseType = 'json';
+ req.onload =
+ function ()
+ {
+ if (req.status == 200)
+ {
+ var machines = Object.create(null);
+ var software = Object.create(null);
+ var matched = Object.keys(req.response.machines);
+ var softwarelists = Object.keys(req.response.software);
+
+ if (matched.length > 0)
+ {
+ Object.keys(machine_info).forEach(
+ function (shortname)
+ {
+ var machine_table = machine_info[shortname];
+ if (Object.hasOwnProperty.call(req.response.machines, shortname))
+ {
+ machines[shortname] = req.response.machines[shortname].matches;
+ add_matches(machine_table, group.names, req.response.machines[shortname].matches);
+ }
+ else
+ {
+ add_matches(machine_table, group.names, null);
+ }
+ });
+ if (softwarelists.length <= 0)
+ {
+ Object.keys(software_info).forEach(
+ function (listname)
+ {
+ Object.keys(software_info[listname]).forEach(
+ function (softwarename)
+ {
+ var software_table = software_info[listname][softwarename];
+ add_software_matches(software_table, group.names, null, null);
+ });
+ });
+ }
+ matched.forEach(
+ function (shortname)
+ {
+ if (!Object.hasOwnProperty.call(machine_info, shortname))
+ {
+ var machine_details = req.response.machines[shortname];
+ var machine_table = get_machine_table(shortname, machine_details.description);
+ machines[shortname] = req.response.machines[shortname].matches;
+ add_matches(machine_table, group.names, machine_details.matches);
+ }
+ });
+ }
+
+ if (softwarelists.length > 0)
+ {
+ if (matched.length <= 0)
+ {
+ Object.keys(machine_info).forEach(
+ function (shortname)
+ {
+ var machine_table = machine_info[shortname];
+ add_matches(machine_table, group.names, null);
+ });
+ }
+ Object.keys(software_info).forEach(
+ function (listname)
+ {
+ var haslist = Object.hasOwnProperty.call(req.response.software, listname);
+ Object.keys(software_info[listname]).forEach(
+ function (softwarename)
+ {
+ var software_table = software_info[listname][softwarename];
+ if (haslist && Object.hasOwnProperty.call(req.response.software[listname].software, softwarename))
+ {
+ if (!Object.hasOwnProperty.call(software, listname))
+ software[listname] = Object.create(null);
+ if (!Object.hasOwnProperty.call(software[listname], softwarename))
+ software[listname][softwarename] = Object.create(null);
+ var software_details = req.response.software[listname].software[softwarename];
+ Object.keys(software_details.parts).forEach(
+ function (partname)
+ {
+ var matches = software_details.parts[partname].matches;
+ software[listname][softwarename][partname] = matches;
+ add_software_matches(software_table, group.names, partname, matches);
+ });
+ }
+ else
+ {
+ add_software_matches(software_table, group.names, null, null);
+ }
+ });
+ });
+ softwarelists.forEach(
+ function (listname)
+ {
+ var haslist = Object.hasOwnProperty.call(software_info, listname);
+ var softwarelist_details = req.response.software[listname];
+ var softwarelist_div = get_softwarelist_div(listname, softwarelist_details.description);
+ Object.keys(softwarelist_details.software).forEach(
+ function (softwarename)
+ {
+ if (!haslist || !Object.hasOwnProperty.call(software_info[listname], softwarename))
+ {
+ if (!Object.hasOwnProperty.call(software, listname))
+ software[listname] = Object.create(null);
+ if (!Object.hasOwnProperty.call(software[listname], softwarename))
+ software[listname][softwarename] = Object.create(null);
+ var software_details = softwarelist_details.software[softwarename];
+ var software_table = get_software_table(listname, softwarename, software_details.description);
+ Object.keys(software_details.parts).forEach(
+ function (partname)
+ {
+ var matches = software_details.parts[partname].matches;
+ software[listname][softwarename][partname] = matches;
+ add_software_matches(software_table, group.names, partname, matches);
+ });
+ }
+ });
+ });
+ }
+
+ if ((matched.length > 0) | (softwarelists.length > 0))
+ {
+ for (var i = 0; i < group.names.length; i++)
+ matched_names.push(group.names[i]);
+ }
+ else
+ {
+ add_unmatched(group.names, crc, sha1);
+ }
+
+ group.machines = machines;
+ group.software = software;
+ progress.parentNode.removeChild(progress);
+ }
+ else
+ {
+ progress.textContent = 'Error identifying \u201C' + name + '\u201D: HTTP status code ' + req.status.toString(10);
+ if (crc !== null)
+ delete dump_info[sha1].crc[crc];
+ else
+ delete dump_info[sha1].disk;
+ }
+ };
+ req.onerror =
+ function ()
+ {
+ progress.textContent = 'Error identifying \u201C' + name + '\u201D';
+ if (crc !== null)
+ delete dump_info[sha1].crc[crc];
+ else
+ delete dump_info[sha1].disk;
+ };
+ req.onabort =
+ function ()
+ {
+ progress.textContent = 'Error identifying \u201C' + name + '\u201D: server request aborted';
+ if (crc !== null)
+ delete dump_info[sha1].crc[crc];
+ else
+ delete dump_info[sha1].disk;
+ };
+ req.open('GET', url);
+ req.send();
+}
+
+
+function add_name(group, name, crc, sha1)
+{
+ if (group.names.indexOf(name) < 0)
+ {
+ group.names.push(name);
+
+ if (group.hasOwnProperty('issues'))
+ {
+ var issues = group.issues;
+ if (issues !== null)
+ issues.parentNode.parentNode.insertBefore(document.createElement('dt'), issues.parentNode).textContent = name;
+ }
+
+ if (group.hasOwnProperty('machines'))
+ {
+ var machines = group.machines;
+ var software = group.software;
+ var names = [ name ];
+ if ((Object.keys(machines).length > 0) || (Object.keys(software).length > 0))
+ {
+ Object.keys(machine_info).forEach(
+ function (shortname)
+ {
+ var machine_table = machine_info[shortname];
+ if (Object.hasOwnProperty.call(machines, shortname))
+ add_matches(machine_table, names, machines[shortname]);
+ else
+ add_matches(machine_table, names, null);
+ });
+
+ Object.keys(software_info).forEach(
+ function (listname)
+ {
+ var haslist = Object.hasOwnProperty.call(software, listname);
+ Object.keys(software_info[listname]).forEach(
+ function (softwarename)
+ {
+ var software_table = software_info[listname][softwarename];
+ if (haslist && Object.hasOwnProperty.call(software[listname], softwarename))
+ {
+ Object.keys(software[listname][softwarename]).forEach(
+ function (partname)
+ {
+ add_software_matches(software_table, names, partname, software[listname][softwarename][partname]);
+ });
+ }
+ else
+ {
+ add_software_matches(software_table, names, null, null);
+ }
+ });
+ });
+
+ matched_names.push(name);
+ }
+ else
+ {
+ add_unmatched(names, crc, sha1);
+ }
+ }
+ }
+}
+
+
+function identify_file(file, trychd, progress)
+{
+ var digested = 0;
+ var crcproc = new Crc32Digester();
+ var sha1proc = new Sha1Digester();
+ var stuckbitsproc = new StuckBitsDigester();
+
+ function process_chunk(e)
+ {
+ if (e.target.error === null)
+ {
+ var data = e.target.result;
+ if ((digested == 0) && trychd)
+ {
+ var chdsha1 = get_chd_sha1(data);
+ if (chdsha1 !== null)
+ {
+ var sha1grp = get_sha1_group(chdsha1);
+ if (!sha1grp.hasOwnProperty('disk'))
+ {
+ var diskgrp = new Object();
+ diskgrp.names = [ file.name ];
+ sha1grp.disk = diskgrp;
+ request_dumps(file.name, diskgrp, null, chdsha1, appurl + 'rpc/diskdumps?sha1=' + chdsha1, progress);
+ }
+ else
+ {
+ add_name(sha1grp.disk, file.name, crc, sha1);
+ progress.parentNode.removeChild(progress);
+ }
+ return;
+ }
+ }
+ var view = new Uint8Array(data);
+ crcproc.digest(data, view);
+ sha1proc.digest(data, view);
+ stuckbitsproc.digest(data, view);
+ digested += data.byteLength;
+ if (digested < file.size)
+ {
+ read_block();
+ }
+ else
+ {
+ var crc = crcproc.finalise();
+ var sha1 = sha1proc.finalise();
+ var stuckbits = stuckbitsproc.finalise();
+
+ var sha1grp = get_sha1_group(sha1);
+ var crcgrp;
+ if (!Object.hasOwnProperty.call(sha1grp.crc, crc))
+ {
+ crcgrp = new Object();
+ crcgrp.names = [ file.name ];
+ sha1grp.crc[crc] = crcgrp;
+ if (stuckbits.length)
+ {
+ crcgrp.issues = add_issues(file.name);
+ add_stuck_bits(crcgrp.issues, stuckbits);
+ }
+ else
+ {
+ crcgrp.issues = null;
+ }
+ var crcstr = ((crc < 0) ? (0xffffffff + crc + 1) : crc).toString(16).padStart(8, '0');
+ request_dumps(file.name, crcgrp, crc, sha1, appurl + 'rpc/romdumps?crc=' + crcstr + '&sha1=' + sha1, progress);
+ }
+ else
+ {
+ crcgrp = sha1grp.crc[crc];
+ add_name(crcgrp, file.name, crc, sha1);
+ progress.parentNode.removeChild(progress);
+ }
+ }
+ }
+ else
+ {
+ progress.textContent = 'Error identifying \u201C' + file.name + '\u201D: ' + e.target.error;
+ }
+ }
+
+ function read_block()
+ {
+ var remaining = file.size - digested;
+ var chunk = file.slice(digested, digested + Math.min(remaining, 65536));
+ var reader = new FileReader();
+ reader.onload = process_chunk;
+ reader.readAsArrayBuffer(chunk);
+ };
+
+ progress.textContent = 'Identifying \u201C' + file.name + '\u201D\u2026';
+ read_block();
+}
+
+
+function add_dump_files(files)
+{
+ var prog = document.getElementById('div-progress');
+ for (var i = 0; i < files.length; i++)
+ {
+ var name = files[i].name;
+ var dot = name.lastIndexOf('.');
+ var trychd = (dot > 0) && (name.substring(dot + 1).toLowerCase() == 'chd');
+ identify_file(files[i], trychd, prog.appendChild(document.createElement('p')));
+ }
+}
+
+
+function div_dropzone_dragover(e)
+{
+ e.stopPropagation();
+ e.preventDefault();
+ e.dataTransfer.dropEffect = 'link';
+}
+
+
+function div_dropzone_drop(e)
+{
+ e.stopPropagation();
+ e.preventDefault();
+ add_dump_files(e.dataTransfer.files);
+}
diff --git a/docs/release/scripts/minimaws/lib/assets/sortasc.png b/docs/release/scripts/minimaws/lib/assets/sortasc.png
new file mode 100644
index 00000000000..29b893cdd02
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/sortasc.png
Binary files differ
diff --git a/docs/release/scripts/minimaws/lib/assets/sortasc.svg b/docs/release/scripts/minimaws/lib/assets/sortasc.svg
new file mode 100644
index 00000000000..c2ff41afccb
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/sortasc.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="30">
+ <path d="m 14,16 h 16 l -8,-16 z" />
+</svg>
diff --git a/docs/release/scripts/minimaws/lib/assets/sortdesc.png b/docs/release/scripts/minimaws/lib/assets/sortdesc.png
new file mode 100644
index 00000000000..63f48fc7213
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/sortdesc.png
Binary files differ
diff --git a/docs/release/scripts/minimaws/lib/assets/sortdesc.svg b/docs/release/scripts/minimaws/lib/assets/sortdesc.svg
new file mode 100644
index 00000000000..4a10b3f6e47
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/sortdesc.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="30">
+ <path d="m 14,0 h 16 l -8,16 z" />
+</svg>
diff --git a/docs/release/scripts/minimaws/lib/assets/sortind.png b/docs/release/scripts/minimaws/lib/assets/sortind.png
new file mode 100644
index 00000000000..773dd6aec02
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/sortind.png
Binary files differ
diff --git a/docs/release/scripts/minimaws/lib/assets/sortind.svg b/docs/release/scripts/minimaws/lib/assets/sortind.svg
new file mode 100644
index 00000000000..6e351b6a6fb
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/sortind.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="30">
+ <path d="m 0,16 h 16 l -8,-16 z" />
+ <path d="m 14,0 h 16 l -8,16 z" />
+</svg>
diff --git a/docs/release/scripts/minimaws/lib/assets/style.css b/docs/release/scripts/minimaws/lib/assets/style.css
new file mode 100644
index 00000000000..9ba6631a783
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/assets/style.css
@@ -0,0 +1,18 @@
+/* license:BSD-3-Clause
+ * copyright-holders:Vas Crabb
+ */
+
+th { text-align: left; background-color: #ddd; padding: 0.25em }
+td { padding-left: 0.25em; padding-right: 0.25em }
+
+img[class=disclosure] { height: 0.7em; margin-right: 0.25em; vertical-align: baseline }
+
+div[class=sorticon] { float: right; height: 100%; margin-left: 0.5em }
+div[class=sorticon] img { height: 0.7em; vertical-align: baseline }
+
+table[class=sysinfo] th { text-align: right }
+
+div[class=dropzone] { padding: 0 1em; border-width: 2px; border-radius: 1em; border-style: dashed }
+
+dl[id=list-slot-options] dt { font-weight: bold; margin-top: 1em }
+dl[id=list-slot-options] dd table { margin-top: 0.5em; margin-bottom: 1em }
diff --git a/docs/release/scripts/minimaws/lib/auxverbs.py b/docs/release/scripts/minimaws/lib/auxverbs.py
new file mode 100644
index 00000000000..bff43bc9601
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/auxverbs.py
@@ -0,0 +1,283 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+from . import dbaccess
+
+import codecs
+import hashlib
+import os
+import os.path
+import struct
+import sys
+import zlib
+
+
+class _Identifier(object):
+ def __init__(self, dbcurs, **kwargs):
+ super(_Identifier, self).__init__(**kwargs)
+ self.dbcurs = dbcurs
+ self.shortnamewidth = 0
+ self.pathwidth = 0
+ self.labelwidth = 0
+ self.machines = { }
+ self.software = { }
+ self.unmatched = [ ]
+
+ def processPath(self, path, depth=0):
+ try:
+ if not os.path.isdir(path):
+ self.processFile(path)
+ elif depth > 5:
+ sys.stderr.write('Not examining \'%s\' - maximum depth exceeded\n')
+ else:
+ for name in os.listdir(path):
+ self.processPath(os.path.join(path, name), depth + 1)
+ except BaseException as e:
+ sys.stderr.write('Error identifying \'%s\': %s\n' % (path, e))
+
+ def printResults(self):
+ nw = self.shortnamewidth - (self.shortnamewidth % 4) + 4
+ pw = self.pathwidth - (self.pathwidth % 4) + 4
+ lw = self.labelwidth - (self.labelwidth % 4) + 4
+ first = True
+ for shortname, romset in sorted(self.machines.items()):
+ if first:
+ first = False
+ else:
+ sys.stdout.write('\n')
+ sys.stdout.write('%-*s%s\n' % (nw, shortname, romset[0]))
+ self.printMatches(romset[1], pw, lw)
+ for softwarelist, listinfo in sorted(self.software.items()):
+ for shortname, softwareinfo in sorted(listinfo[1].items()):
+ if first:
+ first = False
+ else:
+ sys.stdout.write('\n')
+ sys.stdout.write('%-*s%s\n' % (nw, '%s:%s' % (softwarelist, shortname), softwareinfo[0]))
+ for part, partinfo in sorted(softwareinfo[1].items()):
+ if partinfo[0] is not None:
+ sys.stdout.write('%-*s%s\n' % (nw, ' ' + part, partinfo[0]))
+ else:
+ sys.stdout.write(' %s\n' % (part, ))
+ self.printMatches(partinfo[1], pw, lw)
+ if self.unmatched:
+ if first:
+ first = False
+ else:
+ sys.stdout.write('\n')
+ sys.stdout.write('Unmatched\n')
+ for path, crc, sha1 in self.unmatched:
+ if crc is not None:
+ sys.stdout.write(' %-*sCRC(%08x) SHA1(%s)\n' % (pw, path, crc, sha1))
+ else:
+ sys.stdout.write(' %-*sSHA1(%s)\n' % (pw, path, sha1))
+
+ def getMachineMatches(self, shortname, description):
+ result = self.machines.get(shortname)
+ if result is None:
+ result = (description, [ ])
+ self.machines[shortname] = result
+ return result[1]
+
+ def getSoftwareMatches(self, softwarelist, softwarelistdescription, shortname, description, part, part_id):
+ listinfo = self.software.get(softwarelist)
+ if listinfo is None:
+ listinfo = (softwarelistdescription, { })
+ self.software[softwarelist] = listinfo
+ softwareinfo = listinfo[1].get(shortname)
+ if softwareinfo is None:
+ softwareinfo = (description, { })
+ listinfo[1][shortname] = softwareinfo
+ partinfo = softwareinfo[1].get(part)
+ if partinfo is None:
+ partinfo = (part_id, [ ])
+ softwareinfo[1][part] = partinfo
+ return partinfo[1]
+
+ def processRomFile(self, path, f):
+ crc, sha1 = self.digestRom(f)
+ matched = False
+ for shortname, description, label, bad in self.dbcurs.get_rom_dumps(crc, sha1):
+ matched = True
+ self.shortnamewidth = max(len(shortname), self.shortnamewidth)
+ self.labelwidth = max(len(label), self.labelwidth)
+ self.getMachineMatches(shortname, description).append((path, label, bad))
+ for softwarelist, softwarelistdescription, shortname, description, part, part_id, label, bad in self.dbcurs.get_software_rom_dumps(crc, sha1):
+ matched = True
+ self.shortnamewidth = max(len(softwarelist) + 1 + len(shortname), 2 + len(part), self.shortnamewidth)
+ self.labelwidth = max(len(label), self.labelwidth)
+ self.getSoftwareMatches(softwarelist, softwarelistdescription, shortname, description, part, part_id).append((path, label, bad))
+ if not matched:
+ self.unmatched.append((path, crc, sha1))
+
+ def processChd(self, path, sha1):
+ matched = False
+ for shortname, description, label, bad in self.dbcurs.get_disk_dumps(sha1):
+ matched = True
+ self.shortnamewidth = max(len(shortname), self.shortnamewidth)
+ self.labelwidth = max(len(label), self.labelwidth)
+ self.getMachineMatches(shortname, description).append((path, label, bad))
+ for softwarelist, softwarelistdescription, shortname, description, part, part_id, label, bad in self.dbcurs.get_software_disk_dumps(sha1):
+ matched = True
+ self.shortnamewidth = max(len(softwarelist) + 1 + len(shortname), 2 + len(part), self.shortnamewidth)
+ self.labelwidth = max(len(label), self.labelwidth)
+ self.getSoftwareMatches(softwarelist, softwarelistdescription, shortname, description, part, part_id).append((path, label, bad))
+ if not matched:
+ self.unmatched.append((path, None, sha1))
+
+ def processFile(self, path):
+ if os.path.splitext(path)[1].lower() != '.chd':
+ with open(path, mode='rb', buffering=0) as f:
+ self.processRomFile(path, f)
+ else:
+ with open(path, mode='rb') as f:
+ sha1 = self.probeChd(f)
+ if sha1 is None:
+ f.seek(0)
+ self.processRomFile(path, f)
+ else:
+ self.processChd(path, sha1)
+ self.pathwidth = max(len(path), self.pathwidth)
+
+ @staticmethod
+ def iterateBlocks(f, s=65536):
+ while True:
+ buf = f.read(s)
+ if buf:
+ yield buf
+ else:
+ break
+
+ @staticmethod
+ def digestRom(f):
+ crc = zlib.crc32(bytes())
+ sha = hashlib.sha1()
+ for block in _Identifier.iterateBlocks(f):
+ crc = zlib.crc32(block, crc)
+ sha.update(block)
+ return crc & 0xffffffff, sha.hexdigest()
+
+ @staticmethod
+ def probeChd(f):
+ buf = f.read(16)
+ if (len(buf) != 16) or (buf[:8] != b'MComprHD'):
+ return None
+ headerlen, version = struct.unpack('>II', buf[8:])
+ if version == 3:
+ if headerlen != 120:
+ return None
+ sha1offs = 80
+ elif version == 4:
+ if headerlen != 108:
+ return None
+ sha1offs = 48
+ elif version == 5:
+ if headerlen != 124:
+ return None
+ sha1offs = 84
+ else:
+ return None
+ f.seek(sha1offs)
+ if f.tell() != sha1offs:
+ return None
+ buf = f.read(20)
+ if len(buf) != 20:
+ return None
+ return codecs.getencoder('hex_codec')(buf)[0].decode('ascii')
+
+ @staticmethod
+ def printMatches(matches, pathwidth, labelwidth):
+ for path, label, bad in matches:
+ if bad:
+ sys.stdout.write(' %-*s= %-*s(BAD)\n' % (pathwidth, path, labelwidth, label))
+ else:
+ sys.stdout.write(' %-*s= %s\n' % (pathwidth, path, label))
+
+
+def do_listfull(options):
+ dbconn = dbaccess.QueryConnection(options.database)
+ dbcurs = dbconn.cursor()
+ first = True
+ for shortname, description in dbcurs.listfull(options.pattern):
+ if first:
+ sys.stdout.write('Name: Description:\n')
+ first = False
+ sys.stdout.write('%-16s "%s"\n' % (shortname, description))
+ if first:
+ sys.stderr.write('No matching systems found for \'%s\'\n' % (options.pattern, ))
+ dbcurs.close()
+ dbconn.close()
+
+
+def do_listsource(options):
+ dbconn = dbaccess.QueryConnection(options.database)
+ dbcurs = dbconn.cursor()
+ shortname = None
+ for shortname, sourcefile in dbcurs.listsource(options.pattern):
+ sys.stdout.write('%-16s %s\n' % (shortname, sourcefile))
+ if shortname is None:
+ sys.stderr.write('No matching systems found for \'%s\'\n' % (options.pattern, ))
+ dbcurs.close()
+ dbconn.close()
+
+
+def do_listclones(options):
+ dbconn = dbaccess.QueryConnection(options.database)
+ dbcurs = dbconn.cursor()
+ first = True
+ for shortname, parent in dbcurs.listclones(options.pattern):
+ if first:
+ sys.stdout.write('Name: Clone of:\n')
+ first = False
+ sys.stdout.write('%-16s %s\n' % (shortname, parent))
+ if first:
+ count = dbcurs.count_systems(options.pattern).fetchone()[0]
+ if count:
+ sys.stderr.write('Found %d match(es) for \'%s\' but none were clones\n' % (count, options.pattern))
+ else:
+ sys.stderr.write('No matching systems found for \'%s\'\n' % (options.pattern, ))
+ dbcurs.close()
+ dbconn.close()
+
+
+def do_listbrothers(options):
+ dbconn = dbaccess.QueryConnection(options.database)
+ dbcurs = dbconn.cursor()
+ first = True
+ for sourcefile, shortname, parent in dbcurs.listbrothers(options.pattern):
+ if first:
+ sys.stdout.write('%-20s %-16s %s\n' % ('Source file:', 'Name:', 'Parent:'))
+ first = False
+ sys.stdout.write('%-20s %-16s %s\n' % (sourcefile, shortname, parent or ''))
+ if first:
+ sys.stderr.write('No matching systems found for \'%s\'\n' % (options.pattern, ))
+ dbcurs.close()
+ dbconn.close()
+
+
+def do_listaffected(options):
+ dbconn = dbaccess.QueryConnection(options.database)
+ dbcurs = dbconn.cursor()
+ first = True
+ for shortname, description in dbcurs.listaffected(*options.pattern):
+ if first:
+ sys.stdout.write('Name: Description:\n')
+ first = False
+ sys.stdout.write('%-16s "%s"\n' % (shortname, description))
+ if first:
+ sys.stderr.write('No matching systems found for \'%s\'\n' % (options.pattern, ))
+ dbcurs.close()
+ dbconn.close()
+
+
+def do_romident(options):
+ dbconn = dbaccess.QueryConnection(options.database)
+ dbcurs = dbconn.cursor()
+ ident = _Identifier(dbcurs)
+ for path in options.path:
+ ident.processPath(path)
+ ident.printResults()
+ dbcurs.close()
+ dbconn.close()
diff --git a/docs/release/scripts/minimaws/lib/dbaccess.py b/docs/release/scripts/minimaws/lib/dbaccess.py
new file mode 100644
index 00000000000..3cfbec0c508
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/dbaccess.py
@@ -0,0 +1,1138 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import sqlite3
+import sys
+
+if sys.version_info >= (3, 4):
+ import urllib.request
+
+
+class SchemaQueries(object):
+ # software lists
+ CREATE_SOFTWAREINFOTYPE = \
+ 'CREATE TABLE softwareinfotype (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' UNIQUE (name ASC))'
+ CREATE_SOFTWARESHAREDFEATTYPE = \
+ 'CREATE TABLE softwaresharedfeattype (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' UNIQUE (name ASC))'
+ CREATE_SOFTWAREPARTFEATURETYPE = \
+ 'CREATE TABLE softwarepartfeaturetype (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' UNIQUE (name ASC))'
+ CREATE_SOFTWARELIST = \
+ 'CREATE TABLE softwarelist (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' shortname TEXT NOT NULL,\n' \
+ ' description TEXT NOT NULL,\n' \
+ ' UNIQUE (shortname ASC))'
+ CREATE_SOFTWARELISTNOTES = \
+ 'CREATE TABLE softwarelistnotes (\n' \
+ ' softwarelist INTEGER PRIMARY KEY,\n' \
+ ' notes TEXT NOT NULL,\n' \
+ ' FOREIGN KEY (softwarelist) REFERENCES softwarelist (id))'
+ CREATE_SOFTWARE = \
+ 'CREATE TABLE software (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' softwarelist INTEGER NOT NULL,\n' \
+ ' shortname TEXT NOT NULL,\n' \
+ ' supported INTEGER NOT NULL,\n' \
+ ' description TEXT NOT NULL,\n' \
+ ' year TEXT NOT NULL,\n' \
+ ' publisher TEXT NOT NULL,\n' \
+ ' UNIQUE (softwarelist ASC, shortname ASC),\n' \
+ ' FOREIGN KEY (softwarelist) REFERENCES softwarelist (id))'
+ CREATE_SOFTWARECLONEOF = \
+ 'CREATE TABLE softwarecloneof (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' parent INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (id) REFERENCES software (id),\n' \
+ ' FOREIGN KEY (parent) REFERENCES software (id))'
+ CREATE_SOFTWARENOTES = \
+ 'CREATE TABLE softwarenotes (\n' \
+ ' software INTEGER PRIMARY KEY,\n' \
+ ' notes TEXT NOT NULL,\n' \
+ ' FOREIGN KEY (software) REFERENCES software (id))'
+ CREATE_SOFTWAREINFO = \
+ 'CREATE TABLE softwareinfo (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' software INTEGER NOT NULL,\n' \
+ ' infotype INTEGER NOT NULL,\n' \
+ ' value TEXT NOT NULL,\n' \
+ ' FOREIGN KEY (software) REFERENCES software (id),\n' \
+ ' FOREIGN KEY (infotype) REFERENCES softwareinfotype (id))'
+ CREATE_SOFTWARESHAREDFEAT = \
+ 'CREATE TABLE softwaresharedfeat (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' software INTEGER NOT NULL,\n' \
+ ' sharedfeattype INTEGER NOT NULL,\n' \
+ ' value TEXT NOT NULL,\n' \
+ ' UNIQUE (software ASC, sharedfeattype ASC),\n' \
+ ' FOREIGN KEY (software) REFERENCES software (id),\n' \
+ ' FOREIGN KEY (sharedfeattype) REFERENCES softwaresharedfeattype (id))'
+ CREATE_SOFTWAREPART = \
+ 'CREATE TABLE softwarepart (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' software INTEGER NOT NULL,\n' \
+ ' shortname TEXT NOT NULL,\n' \
+ ' interface TEXT NOT NULL,\n' \
+ ' UNIQUE (software ASC, shortname ASC))'
+ CREATE_SOFTWAREPARTFEATURE = \
+ 'CREATE TABLE softwarepartfeature (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' part INTEGER NOT NULL,\n' \
+ ' featuretype INTEGER NOT NULL,\n' \
+ ' value TEXT NOT NULL,\n' \
+ ' UNIQUE (part ASC, featuretype ASC),\n' \
+ ' FOREIGN KEY (part) REFERENCES softwarepart (id),\n' \
+ ' FOREIGN KEY (featuretype) REFERENCES softwarepartfeaturetype (id))'
+
+ # machines
+ CREATE_FEATURETYPE = \
+ 'CREATE TABLE featuretype (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' UNIQUE (name ASC))'
+ CREATE_MACHINESOFTWARELISTSTATUSTYPE = \
+ 'CREATE TABLE machinesoftwareliststatustype (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' value TEXT NOT NULL,\n' \
+ ' UNIQUE (value ASC))'
+ CREATE_SOURCEFILE = \
+ 'CREATE TABLE sourcefile (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' filename TEXT NOT NULL,\n' \
+ ' UNIQUE (filename ASC))'
+ CREATE_MACHINE = \
+ 'CREATE TABLE machine (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' shortname TEXT NOT NULL,\n' \
+ ' description TEXT NOT NULL,\n' \
+ ' sourcefile INTEGER NOT NULL,\n' \
+ ' isdevice INTEGER NOT NULL,\n' \
+ ' runnable INTEGER NOT NULL,\n' \
+ ' UNIQUE (shortname ASC),\n' \
+ ' UNIQUE (description ASC),\n' \
+ ' FOREIGN KEY (sourcefile) REFERENCES sourcefile (id))'
+ CREATE_SYSTEM = \
+ 'CREATE TABLE system (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' year TEXT NOT NULL,\n' \
+ ' manufacturer TEXT NOT NULL,\n' \
+ ' FOREIGN KEY (id) REFERENCES machine (id))'
+ CREATE_CLONEOF = \
+ 'CREATE TABLE cloneof (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' parent TEXT NOT NULL,\n' \
+ ' FOREIGN KEY (id) REFERENCES machine (id))'
+ CREATE_ROMOF = \
+ 'CREATE TABLE romof (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' parent TEXT NOT NULL,\n' \
+ ' FOREIGN KEY (id) REFERENCES machine (id))'
+ CREATE_BIOSSET = \
+ 'CREATE TABLE biosset (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' description TEXT NOT NULL,\n' \
+ ' UNIQUE (machine ASC, name ASC),\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id))'
+ CREATE_BIOSSETDEFAULT = \
+ 'CREATE TABLE biossetdefault (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' FOREIGN KEY (id) REFERENCES biosset (id))'
+ CREATE_DEVICEREFERENCE = \
+ 'CREATE TABLE devicereference (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' device INTEGER NOT NULL,\n' \
+ ' UNIQUE (machine ASC, device ASC),\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id),\n' \
+ ' FOREIGN KEY (device) REFERENCES machine (id))'
+ CREATE_DIPSWITCH = \
+ 'CREATE TABLE dipswitch (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' isconfig INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' tag TEXT NOT NULL,\n' \
+ ' mask INTEGER NOT NULL,\n' \
+ ' --UNIQUE (machine ASC, tag ASC, mask ASC), not necessarily true, need to expose port conditions\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id))'
+ CREATE_DIPLOCATION = \
+ 'CREATE TABLE diplocation (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' dipswitch INTEGER NOT NULL,\n' \
+ ' bit INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' num INTEGER NOT NULL,\n' \
+ ' inverted INTEGER NOT NULL,\n' \
+ ' UNIQUE (dipswitch ASC, bit ASC),\n' \
+ ' FOREIGN KEY (dipswitch) REFERENCES dipswitch (id))'
+ CREATE_DIPVALUE = \
+ 'CREATE TABLE dipvalue (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' dipswitch INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' value INTEGER NOT NULL,\n' \
+ ' isdefault INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (dipswitch) REFERENCES dipswitch (id))'
+ CREATE_FEATURE = \
+ 'CREATE TABLE feature (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' featuretype INTEGER NOT NULL,\n' \
+ ' status INTEGER NOT NULL,\n' \
+ ' overall INTEGER NOT NULL,\n' \
+ ' UNIQUE (machine ASC, featuretype ASC),\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id),\n' \
+ ' FOREIGN KEY (featuretype) REFERENCES featuretype (id))'
+ CREATE_SLOT = \
+ 'CREATE TABLE slot (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' UNIQUE (machine ASC, name ASC),\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id))'
+ CREATE_SLOTOPTION = \
+ 'CREATE TABLE slotoption (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' slot INTEGER NOT NULL,\n' \
+ ' device INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' UNIQUE (slot ASC, name ASC),\n' \
+ ' FOREIGN KEY (slot) REFERENCES slot (id),\n' \
+ ' FOREIGN KEY (device) REFERENCES machine (id))'
+ CREATE_SLOTDEFAULT = \
+ 'CREATE TABLE slotdefault (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' slotoption INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (id) REFERENCES slot (id),\n' \
+ ' FOREIGN KEY (slotoption) REFERENCES slotoption (id))'
+ CREATE_RAMOPTION = \
+ 'CREATE TABLE ramoption (\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' size INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' PRIMARY KEY (machine ASC, size ASC),\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id))'
+ CREATE_RAMDEFAULT = \
+ 'CREATE TABLE ramdefault (\n' \
+ ' machine INTEGER PRIMARY KEY,\n' \
+ ' size INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id),\n' \
+ ' FOREIGN KEY (machine, size) REFERENCES ramoption (machine, size))'
+ CREATE_MACHINESOFTWARELIST = \
+ 'CREATE TABLE machinesoftwarelist (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' softwarelist INTEGER NOT NULL,\n' \
+ ' tag TEXT NOT NULL,\n' \
+ ' status INTEGER NOT NULL,\n' \
+ ' UNIQUE (machine ASC, tag ASC),\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id),\n' \
+ ' FOREIGN KEY (softwarelist) REFERENCES softwarelist (id),' \
+ ' FOREIGN KEY (status) REFERENCES machinesoftwareliststatustype (id))'
+
+ # media
+ CREATE_ROM = \
+ 'CREATE TABLE rom (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' crc INTEGER NOT NULL,\n' \
+ ' sha1 TEXT NOT NULL,\n' \
+ ' UNIQUE (crc ASC, sha1 ASC))'
+ CREATE_ROMDUMP = \
+ 'CREATE TABLE romdump (\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' rom INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' bad INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id),\n' \
+ ' FOREIGN KEY (rom) REFERENCES rom (id),\n' \
+ ' UNIQUE (machine, rom, name))'
+ CREATE_SOFTWAREROMDUMP = \
+ 'CREATE TABLE softwareromdump (\n' \
+ ' part INTEGER NOT NULL,\n' \
+ ' rom INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' bad INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (part) REFERENCES softwarepart (id),\n' \
+ ' FOREIGN KEY (rom) REFERENCES rom (id),\n' \
+ ' UNIQUE (part, rom, name))'
+ CREATE_DISK = \
+ 'CREATE TABLE disk (\n' \
+ ' id INTEGER PRIMARY KEY,\n' \
+ ' sha1 TEXT NOT NULL,\n' \
+ ' UNIQUE (sha1 ASC))'
+ CREATE_DISKDUMP = \
+ 'CREATE TABLE diskdump (\n' \
+ ' machine INTEGER NOT NULL,\n' \
+ ' disk INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' bad INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (machine) REFERENCES machine (id),\n' \
+ ' FOREIGN KEY (disk) REFERENCES disk (id),\n' \
+ ' UNIQUE (machine, disk, name))'
+ CREATE_SOFTWAREDISKDUMP = \
+ 'CREATE TABLE softwarediskdump (\n' \
+ ' part INTEGER NOT NULL,\n' \
+ ' disk INTEGER NOT NULL,\n' \
+ ' name TEXT NOT NULL,\n' \
+ ' bad INTEGER NOT NULL,\n' \
+ ' FOREIGN KEY (part) REFERENCES softwarepart (id),\n' \
+ ' FOREIGN KEY (disk) REFERENCES disk (id),\n' \
+ ' UNIQUE (part, disk, name))'
+
+ # create temporary tables used during loading
+ CREATE_TEMPORARY_SOFTWARECLONEOF = 'CREATE TEMPORARY TABLE temp_softwarecloneof (id INTEGER PRIMARY KEY, parent TEXT NOT NULL)'
+ CREATE_TEMPORARY_DEVICEREFERENCE = 'CREATE TEMPORARY TABLE temp_devicereference (id INTEGER PRIMARY KEY, machine INTEGER NOT NULL, device TEXT NOT NULL, UNIQUE (machine, device))'
+ CREATE_TEMPORARY_SLOTOPTION = 'CREATE TEMPORARY TABLE temp_slotoption (id INTEGER PRIMARY KEY, slot INTEGER NOT NULL, device TEXT NOT NULL, name TEXT NOT NULL)'
+ CREATE_TEMPORARY_SLOTDEFAULT = 'CREATE TEMPORARY TABLE temp_slotdefault (id INTEGER PRIMARY KEY, slotoption INTEGER NOT NULL)'
+
+ # drop temporary tables used during loading
+ DROP_TEMPORARY_SOFTWARECLONEOF = 'DROP TABLE IF EXISTS temp_softwarecloneof'
+ DROP_TEMPORARY_DEVICEREFERENCE = 'DROP TABLE IF EXISTS temp_devicereference'
+ DROP_TEMPORARY_SLOTOPTION = 'DROP TABLE IF EXISTS temp_slotoption'
+ DROP_TEMPORARY_SLOTDEFAULT = 'DROP TABLE IF EXISTS temp_slotdefault'
+
+ INDEX_SOFTWARE_SOFTWARELIST_SUPPORTED = 'CREATE INDEX software_softwarelist_supported ON software (softwarelist ASC, supported ASC)'
+ INDEX_SOFTWARE_SOFTWARELIST_YEAR = 'CREATE INDEX software_softwarelist_year ON software (softwarelist ASC, year ASC)'
+ INDEX_SOFTWARE_SOFTWARELIST_PUBLISHER = 'CREATE INDEX software_softwarelist_publisher ON software (softwarelist ASC, publisher ASC)'
+ INDEX_SOFTWARE_SHORTNAME_SOFTWARELIST = 'CREATE INDEX software_shortname_softwarelist ON software (shortname ASC, softwarelist ASC)'
+ INDEX_SOFTWARE_YEAR_SOFTWARELIST = 'CREATE INDEX software_year_softwarelist ON software (year ASC, softwarelist ASC)'
+ INDEX_SOFTWARE_PUBLISHER_SOFTWARELIST = 'CREATE INDEX software_publisher_softwarelist ON software (publisher ASC, softwarelist ASC)'
+
+ INDEX_SOFTWARECLONEOF_PARENT = 'CREATE INDEX softwarecloneof_parent ON softwarecloneof (parent ASC)'
+
+ INDEX_SOFTWAREINFO_SOFTWARE_INFOTYPE = 'CREATE INDEX softwareinfo_software_infotype ON softwareinfo (software ASC, infotype ASC)'
+ INDEX_SOFTWAREINFO_INFOTYPE_VALUE_SOFTWARE = 'CREATE INDEX softwareinfo_infotype_value_software ON softwareinfo (infotype ASC, value ASC, software ASC)'
+
+ INDEX_SOFTWARESHAREDFEAT_SHAREDFEATTYPE_VALUE_SOFTWARE = 'CREATE INDEX softwaresharedfeat_sharedfeattype_value_software ON softwaresharedfeat (sharedfeattype ASC, value ASC, software ASC)'
+
+ INDEX_SOFTWAREPART_INTERFACE_SOFTWARE = 'CREATE INDEX softwarepart_interface_software ON softwarepart (interface ASC, software ASC)'
+
+ INDEX_SOFTWAREPARTFEATURE_FEATURETYPE_VALUE_PART = 'CREATE INDEX softwarepartfeature_featuretype_value_part ON softwarepartfeature (featuretype ASC, value ASC, part ASC)'
+
+ INDEX_MACHINE_ISDEVICE_SHORTNAME = 'CREATE INDEX machine_isdevice_shortname ON machine (isdevice ASC, shortname ASC)'
+ INDEX_MACHINE_ISDEVICE_DESCRIPTION = 'CREATE INDEX machine_isdevice_description ON machine (isdevice ASC, description ASC)'
+ INDEX_MACHINE_RUNNABLE_SHORTNAME = 'CREATE INDEX machine_runnable_shortname ON machine (runnable ASC, shortname ASC)'
+ INDEX_MACHINE_RUNNABLE_DESCRIPTION = 'CREATE INDEX machine_runnable_description ON machine (runnable ASC, description ASC)'
+
+ INDEX_SYSTEM_YEAR = 'CREATE INDEX system_year ON system (year ASC)'
+ INDEX_SYSTEM_MANUFACTURER = 'CREATE INDEX system_manufacturer ON system (manufacturer ASC)'
+
+ INDEX_ROMOF_PARENT = 'CREATE INDEX romof_parent ON romof (parent ASC)'
+
+ INDEX_CLONEOF_PARENT = 'CREATE INDEX cloneof_parent ON cloneof (parent ASC)'
+
+ INDEX_DIPSWITCH_MACHINE_ISCONFIG = 'CREATE INDEX dipswitch_machine_isconfig ON dipswitch (machine ASC, isconfig ASC)'
+
+ INDEX_MACHINESOFTWARELIST_SOFTWARELIST_MACHINE = 'CREATE INDEX machinesoftwarelist_softwarelist_machine ON machinesoftwarelist (softwarelist ASC, machine ASC)'
+
+ INDEX_ROMDUMP_ROM = 'CREATE INDEX romdump_rom ON romdump (rom ASC)'
+ INDEX_ROMDUMP_MACHINE_BAD = 'CREATE INDEX romdump_machine_bad ON romdump (machine ASC, bad ASC)'
+
+ INDEX_SOFTWAREROMDUMP_ROM = 'CREATE INDEX softwareromdump_rom ON softwareromdump (rom ASC)'
+ INDEX_SOFTWAREROMDUMP_PART_BAD = 'CREATE INDEX softwareromdump_part_bad ON softwareromdump (part ASC, bad ASC)'
+
+ INDEX_DISKDUMP_DISK = 'CREATE INDEX diskdump_disk ON diskdump (disk ASC)'
+ INDEX_DISKDUMP_MACHINE_BAD = 'CREATE INDEX diskdump_machine_bad ON diskdump (machine ASC, bad ASC)'
+
+ INDEX_SOFTWAREDISKDUMP_DISK = 'CREATE INDEX softwarediskdump_disk ON softwarediskdump (disk ASC)'
+ INDEX_SOFTWAREDISKDUMP_PART_BAD = 'CREATE INDEX softwarediskdump_part_bad ON softwarediskdump (part ASC, bad ASC)'
+
+ DROP_SOFTWARE_SOFTWARELIST_SUPPORTED = 'DROP INDEX IF EXISTS software_softwarelist_supported'
+ DROP_SOFTWARE_SOFTWARELIST_YEAR = 'DROP INDEX IF EXISTS software_softwarelist_year'
+ DROP_SOFTWARE_SOFTWARELIST_PUBLISHER = 'DROP INDEX IF EXISTS software_softwarelist_publisher'
+ DROP_SOFTWARE_SHORTNAME_SOFTWARELIST = 'DROP INDEX IF EXISTS software_shortname_softwarelist'
+ DROP_SOFTWARE_YEAR_SOFTWARELIST = 'DROP INDEX IF EXISTS software_year_softwarelist'
+ DROP_SOFTWARE_PUBLISHER_SOFTWARELIST = 'DROP INDEX IF EXISTS software_publisher_softwarelist'
+
+ DROP_SOFTWARECLONEOF_PARENT = 'DROP INDEX IF EXISTS softwarecloneof_parent'
+
+ DROP_SOFTWAREINFO_SOFTWARE_INFOTYPE = 'DROP INDEX IF EXISTS softwareinfo_software_infotype'
+ DROP_SOFTWAREINFO_INFOTYPE_VALUE_SOFTWARE = 'DROP INDEX IF EXISTS softwareinfo_infotype_value_software'
+
+ DROP_SOFTWARESHAREDFEAT_SHAREDFEATTYPE_VALUE_SOFTWARE = 'DROP INDEX IF EXISTS softwaresharedfeat_sharedfeattype_value_software'
+
+ DROP_SOFTWAREPART_INTERFACE_SOFTWARE = 'DROP INDEX IF EXISTS softwarepart_interface_software'
+
+ DROP_SOFTWAREPARTFEATURE_FEATURETYPE_VALUE_PART = 'DROP INDEX IF EXISTS softwarepartfeature_featuretype_value_part'
+
+ DROP_MACHINE_ISDEVICE_SHORTNAME = 'DROP INDEX IF EXISTS machine_isdevice_shortname'
+ DROP_MACHINE_ISDEVICE_DESCRIPTION = 'DROP INDEX IF EXISTS machine_isdevice_description'
+ DROP_MACHINE_RUNNABLE_SHORTNAME = 'DROP INDEX IF EXISTS machine_runnable_shortname'
+ DROP_MACHINE_RUNNABLE_DESCRIPTION = 'DROP INDEX IF EXISTS machine_runnable_description'
+
+ DROP_SYSTEM_YEAR = 'DROP INDEX IF EXISTS system_year'
+ DROP_SYSTEM_MANUFACTURER = 'DROP INDEX IF EXISTS system_manufacturer'
+
+ DROP_ROMOF_PARENT = 'DROP INDEX IF EXISTS romof_parent'
+
+ DROP_CLONEOF_PARENT = 'DROP INDEX IF EXISTS cloneof_parent'
+
+ DROP_DIPSWITCH_MACHINE_ISCONFIG = 'DROP INDEX IF EXISTS dipswitch_machine_isconfig'
+
+ DROP_MACHINESOFTWARELIST_SOFTWARELIST_MACHINE = 'DROP INDEX IF EXISTS machinesoftwarelist_softwarelist_machine'
+
+ DROP_ROMDUMP_ROM = 'DROP INDEX IF EXISTS romdump_rom'
+ DROP_ROMDUMP_MACHINE_BAD = 'DROP INDEX IF EXISTS romdump_machine_bad'
+
+ DROP_SOFTWAREROMDUMP_ROM = 'DROP INDEX IF EXISTS softwareromdump_rom'
+ DROP_SOFTWAREROMDUMP_PART_BAD = 'DROP INDEX IF EXISTS softwareromdump_part_bad'
+
+ DROP_DISKDUMP_DISK = 'DROP INDEX IF EXISTS diskdump_disk'
+ DROP_DISKDUMP_MACHINE_BAD = 'DROP INDEX IF EXISTS diskdump_machine_bad'
+
+ DROP_SOFTWAREDISKDUMP_DISK = 'DROP INDEX IF EXISTS softwarediskdump_disk'
+ DROP_SOFTWAREDISKDUMP_PART_BAD = 'DROP INDEX IF EXISTS softwarediskdump_part_bad'
+
+ CREATE_TABLES = (
+ CREATE_SOFTWAREINFOTYPE,
+ CREATE_SOFTWARESHAREDFEATTYPE,
+ CREATE_SOFTWAREPARTFEATURETYPE,
+ CREATE_SOFTWARELIST,
+ CREATE_SOFTWARELISTNOTES,
+ CREATE_SOFTWARE,
+ CREATE_SOFTWARECLONEOF,
+ CREATE_SOFTWARENOTES,
+ CREATE_SOFTWAREINFO,
+ CREATE_SOFTWARESHAREDFEAT,
+ CREATE_SOFTWAREPART,
+ CREATE_SOFTWAREPARTFEATURE,
+ CREATE_FEATURETYPE,
+ CREATE_MACHINESOFTWARELISTSTATUSTYPE,
+ CREATE_SOURCEFILE,
+ CREATE_MACHINE,
+ CREATE_SYSTEM,
+ CREATE_CLONEOF,
+ CREATE_ROMOF,
+ CREATE_BIOSSET,
+ CREATE_BIOSSETDEFAULT,
+ CREATE_DEVICEREFERENCE,
+ CREATE_DIPSWITCH,
+ CREATE_DIPLOCATION,
+ CREATE_DIPVALUE,
+ CREATE_FEATURE,
+ CREATE_SLOT,
+ CREATE_SLOTOPTION,
+ CREATE_SLOTDEFAULT,
+ CREATE_RAMOPTION,
+ CREATE_RAMDEFAULT,
+ CREATE_MACHINESOFTWARELIST,
+ CREATE_ROM,
+ CREATE_ROMDUMP,
+ CREATE_SOFTWAREROMDUMP,
+ CREATE_DISK,
+ CREATE_DISKDUMP,
+ CREATE_SOFTWAREDISKDUMP)
+
+ CREATE_TEMPORARY_TABLES = (
+ CREATE_TEMPORARY_SOFTWARECLONEOF,
+ CREATE_TEMPORARY_DEVICEREFERENCE,
+ CREATE_TEMPORARY_SLOTOPTION,
+ CREATE_TEMPORARY_SLOTDEFAULT)
+
+ CREATE_INDEXES = (
+ INDEX_SOFTWARE_SOFTWARELIST_SUPPORTED,
+ INDEX_SOFTWARE_SOFTWARELIST_YEAR,
+ INDEX_SOFTWARE_SOFTWARELIST_PUBLISHER,
+ INDEX_SOFTWARE_SHORTNAME_SOFTWARELIST,
+ INDEX_SOFTWARE_YEAR_SOFTWARELIST,
+ INDEX_SOFTWARE_PUBLISHER_SOFTWARELIST,
+ INDEX_SOFTWARECLONEOF_PARENT,
+ INDEX_SOFTWAREINFO_SOFTWARE_INFOTYPE,
+ INDEX_SOFTWAREINFO_INFOTYPE_VALUE_SOFTWARE,
+ INDEX_SOFTWARESHAREDFEAT_SHAREDFEATTYPE_VALUE_SOFTWARE,
+ INDEX_SOFTWAREPART_INTERFACE_SOFTWARE,
+ INDEX_SOFTWAREPARTFEATURE_FEATURETYPE_VALUE_PART,
+ INDEX_MACHINE_ISDEVICE_SHORTNAME,
+ INDEX_MACHINE_ISDEVICE_DESCRIPTION,
+ INDEX_MACHINE_RUNNABLE_SHORTNAME,
+ INDEX_MACHINE_RUNNABLE_DESCRIPTION,
+ INDEX_SYSTEM_YEAR,
+ INDEX_SYSTEM_MANUFACTURER,
+ INDEX_ROMOF_PARENT,
+ INDEX_CLONEOF_PARENT,
+ INDEX_DIPSWITCH_MACHINE_ISCONFIG,
+ INDEX_MACHINESOFTWARELIST_SOFTWARELIST_MACHINE,
+ INDEX_ROMDUMP_ROM,
+ INDEX_ROMDUMP_MACHINE_BAD,
+ INDEX_SOFTWAREROMDUMP_ROM,
+ INDEX_SOFTWAREROMDUMP_PART_BAD,
+ INDEX_DISKDUMP_DISK,
+ INDEX_DISKDUMP_MACHINE_BAD,
+ INDEX_SOFTWAREDISKDUMP_DISK,
+ INDEX_SOFTWAREDISKDUMP_PART_BAD)
+
+ DROP_INDEXES = (
+ DROP_SOFTWARE_SOFTWARELIST_SUPPORTED,
+ DROP_SOFTWARE_SOFTWARELIST_YEAR,
+ DROP_SOFTWARE_SOFTWARELIST_PUBLISHER,
+ DROP_SOFTWARE_SHORTNAME_SOFTWARELIST,
+ DROP_SOFTWARE_YEAR_SOFTWARELIST,
+ DROP_SOFTWARE_PUBLISHER_SOFTWARELIST,
+ DROP_SOFTWARECLONEOF_PARENT,
+ DROP_SOFTWAREINFO_SOFTWARE_INFOTYPE,
+ DROP_SOFTWAREINFO_INFOTYPE_VALUE_SOFTWARE,
+ DROP_SOFTWARESHAREDFEAT_SHAREDFEATTYPE_VALUE_SOFTWARE,
+ DROP_SOFTWAREPART_INTERFACE_SOFTWARE,
+ DROP_SOFTWAREPARTFEATURE_FEATURETYPE_VALUE_PART,
+ DROP_MACHINE_ISDEVICE_SHORTNAME,
+ DROP_MACHINE_ISDEVICE_DESCRIPTION,
+ DROP_MACHINE_RUNNABLE_SHORTNAME,
+ DROP_MACHINE_RUNNABLE_DESCRIPTION,
+ DROP_SYSTEM_YEAR,
+ DROP_SYSTEM_MANUFACTURER,
+ DROP_ROMOF_PARENT,
+ DROP_CLONEOF_PARENT,
+ DROP_DIPSWITCH_MACHINE_ISCONFIG,
+ DROP_MACHINESOFTWARELIST_SOFTWARELIST_MACHINE,
+ DROP_ROMDUMP_ROM,
+ DROP_ROMDUMP_MACHINE_BAD,
+ DROP_SOFTWAREROMDUMP_ROM,
+ DROP_SOFTWAREROMDUMP_PART_BAD,
+ DROP_DISKDUMP_DISK,
+ DROP_DISKDUMP_MACHINE_BAD,
+ DROP_SOFTWAREDISKDUMP_DISK,
+ DROP_SOFTWAREDISKDUMP_PART_BAD)
+
+
+class UpdateQueries(object):
+ # software lists
+ ADD_SOFTWAREINFOTYPE = 'INSERT OR IGNORE INTO softwareinfotype (name) VALUES (?)'
+ ADD_SOFTWARESHAREDFEATTYPE = 'INSERT OR IGNORE INTO softwaresharedfeattype (name) VALUES (?)'
+ ADD_SOFTWAREPARTFEATURETYPE = 'INSERT OR IGNORE INTO softwarepartfeaturetype (name) VALUES(?)'
+ ADD_SOFTWARELIST = 'INSERT INTO softwarelist (shortname, description) VALUES (?, ?)'
+ ADD_SOFTWARELISTNOTES = 'INSERT INTO softwarelistnotes (softwarelist, notes) VALUES (?, ?)'
+ ADD_SOFTWARE = 'INSERT INTO software (softwarelist, shortname, supported, description, year, publisher) VALUES (?, ?, ?, ?, ?, ?)'
+ ADD_SOFTWARENOTES = 'INSERT INTO softwarenotes (software, notes) VALUES (?, ?)'
+ ADD_SOFTWAREINFO = 'INSERT INTO softwareinfo (software, infotype, value) SELECT ?, id, ? FROM softwareinfotype WHERE name = ?'
+ ADD_SOFTWARESHAREDFEAT = 'INSERT INTO softwaresharedfeat (software, sharedfeattype, value) SELECT ?, id, ? FROM softwaresharedfeattype WHERE name = ?'
+ ADD_SOFTWAREPART = 'INSERT INTO softwarepart (software, shortname, interface) VALUES (?, ?, ?)'
+ ADD_SOFTWAREPARTFEATURE = 'INSERT INTO softwarepartfeature (part, featuretype, value) SELECT ?, id, ? FROM softwarepartfeaturetype WHERE name = ?'
+
+ # machines
+ ADD_FEATURETYPE = 'INSERT OR IGNORE INTO featuretype (name) VALUES (?)'
+ ADD_MACHINESOFTWARELISTSTATUSTYPE = 'INSERT OR IGNORE INTO machinesoftwareliststatustype (value) VALUES (?)'
+ ADD_SOURCEFILE = 'INSERT OR IGNORE INTO sourcefile (filename) VALUES (?)'
+ ADD_MACHINE = 'INSERT INTO machine (shortname, description, sourcefile, isdevice, runnable) SELECT ?, ?, id, ?, ? FROM sourcefile WHERE filename = ?'
+ ADD_SYSTEM = 'INSERT INTO system (id, year, manufacturer) VALUES (?, ?, ?)'
+ ADD_CLONEOF = 'INSERT INTO cloneof (id, parent) VALUES (?, ?)'
+ ADD_ROMOF = 'INSERT INTO romof (id, parent) VALUES (?, ?)'
+ ADD_BIOSSET = 'INSERT INTO biosset (machine, name, description) VALUES (?, ?, ?)'
+ ADD_BIOSSETDEFAULT = 'INSERT INTO biossetdefault (id) VALUES (?)'
+ ADD_DIPSWITCH = 'INSERT INTO dipswitch (machine, isconfig, name, tag, mask) VALUES (?, ?, ?, ?, ?)'
+ ADD_DIPLOCATION = 'INSERT INTO diplocation (dipswitch, bit, name, num, inverted) VALUES (?, ?, ?, ?, ?)'
+ ADD_DIPVALUE = 'INSERT INTO dipvalue (dipswitch, name, value, isdefault) VALUES (?, ?, ?, ?)'
+ ADD_FEATURE = 'INSERT INTO feature (machine, featuretype, status, overall) SELECT ?, id, ?, ? FROM featuretype WHERE name = ?'
+ ADD_SLOT = 'INSERT INTO slot (machine, name) VALUES (?, ?)'
+ ADD_RAMOPTION = 'INSERT INTO ramoption (machine, size, name) VALUES (?, ?, ?)'
+ ADD_RAMDEFAULT = 'INSERT INTO ramdefault (machine, size) VALUES (?, ?)'
+ ADD_MACHINESOFTWARELIST = 'INSERT INTO machinesoftwarelist (machine, softwarelist, tag, status) SELECT ?, softwarelist.id, ?, machinesoftwareliststatustype.id FROM softwarelist JOIN machinesoftwareliststatustype WHERE softwarelist.shortname = ? AND machinesoftwareliststatustype.value = ?'
+
+ # media
+ ADD_ROM = 'INSERT OR IGNORE INTO rom (crc, sha1) VALUES (?, ?)'
+ ADD_ROMDUMP = 'INSERT OR IGNORE INTO romdump (machine, rom, name, bad) SELECT ?, id, ?, ? FROM rom WHERE crc = ? AND sha1 = ?'
+ ADD_SOFTWAREROMDUMP = 'INSERT OR IGNORE INTO softwareromdump (part, rom, name, bad) SELECT ?, id, ?, ? FROM rom WHERE crc = ? AND sha1 = ?'
+ ADD_DISK = 'INSERT OR IGNORE INTO disk (sha1) VALUES (?)'
+ ADD_DISKDUMP = 'INSERT OR IGNORE INTO diskdump (machine, disk, name, bad) SELECT ?, id, ?, ? FROM disk WHERE sha1 = ?'
+ ADD_SOFTWAREDISKDUMP = 'INSERT OR IGNORE INTO softwarediskdump (part, disk, name, bad) SELECT ?, id, ?, ? FROM disk WHERE sha1 = ?'
+
+ # temporary records used during loading
+ ADD_TEMPORARY_SOFTWARECLONEOF = 'INSERT INTO temp_softwarecloneof (id, parent) VALUES (?, ?)'
+ ADD_TEMPORARY_DEVICEREFERENCE = 'INSERT OR IGNORE INTO temp_devicereference (machine, device) VALUES (?, ?)'
+ ADD_TEMPORARY_SLOTOPTION = 'INSERT INTO temp_slotoption (slot, device, name) VALUES (?, ?, ?)'
+ ADD_TEMPORARY_SLOTDEFAULT = 'INSERT INTO temp_slotdefault (id, slotoption) VALUES (?, ?)'
+
+ # convert temporary tables to final form
+ FINALISE_SOFTWARECLONEOFS = \
+ 'INSERT INTO softwarecloneof (id, parent) ' \
+ 'SELECT temp_softwarecloneof.id AS id, parent.id AS parent ' \
+ 'FROM temp_softwarecloneof LEFT JOIN software AS clone ON temp_softwarecloneof.id = clone.id LEFT JOIN software AS parent ON clone.softwarelist = parent.softwarelist AND temp_softwarecloneof.parent = parent.shortname'
+ FINALISE_DEVICEREFERENCES = \
+ 'INSERT INTO devicereference (id, machine, device) ' \
+ 'SELECT temp_devicereference.id, temp_devicereference.machine, machine.id ' \
+ 'FROM temp_devicereference LEFT JOIN machine ON temp_devicereference.device = machine.shortname'
+ FINALISE_SLOTOPTIONS = \
+ 'INSERT INTO slotoption (id, slot, device, name) ' \
+ 'SELECT temp_slotoption.id, temp_slotoption.slot, machine.id, temp_slotoption.name ' \
+ 'FROM temp_slotoption LEFT JOIN machine ON temp_slotoption.device = machine.shortname'
+ FINALISE_SLOTDEFAULTS = \
+ 'INSERT INTO slotdefault (id, slotoption) ' \
+ 'SELECT id, slotoption ' \
+ 'FROM temp_slotdefault'
+
+
+class QueryCursor(object):
+ def __init__(self, dbconn, **kwargs):
+ super(QueryCursor, self).__init__(**kwargs)
+ self.dbcurs = dbconn.cursor()
+
+ def close(self):
+ self.dbcurs.close()
+
+ def is_glob(self, *patterns):
+ for pattern in patterns:
+ if any(ch in pattern for ch in '?*['):
+ return True
+ return False
+
+ def count_systems(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT COUNT(*) ' \
+ 'FROM machine WHERE isdevice = 0 AND shortname GLOB ? ',
+ (pattern, ))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT COUNT(*) ' \
+ 'FROM machine WHERE isdevice = 0 ')
+
+ def listfull(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT shortname, description ' \
+ 'FROM machine WHERE shortname GLOB ? ' \
+ 'ORDER BY shortname ASC',
+ (pattern, ))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT shortname, description ' \
+ 'FROM machine ' \
+ 'ORDER BY shortname ASC')
+
+ def listsource(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname, sourcefile.filename ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id ' \
+ 'WHERE machine.shortname GLOB ? ' \
+ 'ORDER BY machine.shortname ASC',
+ (pattern, ))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname, sourcefile.filename ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id ' \
+ 'ORDER BY machine.shortname ASC')
+
+ def listclones(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname, cloneof.parent ' \
+ 'FROM machine JOIN cloneof ON machine.id = cloneof.id ' \
+ 'WHERE machine.shortname GLOB ? OR cloneof.parent GLOB ? ' \
+ 'ORDER BY machine.shortname ASC',
+ (pattern, pattern))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname, cloneof.parent ' \
+ 'FROM machine JOIN cloneof ON machine.id = cloneof.id ' \
+ 'ORDER BY machine.shortname ASC')
+
+ def listbrothers(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT sourcefile.filename, machine.shortname, cloneof.parent ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id LEFT JOIN cloneof ON machine.id = cloneof.id ' \
+ 'WHERE machine.isdevice = 0 AND sourcefile.id IN (SELECT sourcefile FROM machine WHERE shortname GLOB ?)' \
+ 'ORDER BY machine.shortname ASC',
+ (pattern, ))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT sourcefile.filename, machine.shortname, cloneof.parent ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id LEFT JOIN cloneof ON machine.id = cloneof.id ' \
+ 'WHERE machine.isdevice = 0 ' \
+ 'ORDER BY machine.shortname ASC')
+
+ def listaffected(self, *patterns):
+ if 1 == len(patterns):
+ return self.dbcurs.execute(
+ 'SELECT shortname, description ' \
+ 'FROM machine ' \
+ 'WHERE id IN (SELECT machine FROM devicereference WHERE device IN (SELECT id FROM machine WHERE sourcefile IN (SELECT id FROM sourcefile WHERE filename GLOB ?))) AND runnable = 1 ' \
+ 'ORDER BY shortname ASC',
+ patterns)
+ elif self.is_glob(*patterns):
+ return self.dbcurs.execute(
+ 'SELECT shortname, description ' \
+ 'FROM machine ' \
+ 'WHERE id IN (SELECT machine FROM devicereference WHERE device IN (SELECT id FROM machine WHERE sourcefile IN (SELECT id FROM sourcefile WHERE filename GLOB ?' + (' OR filename GLOB ?' * (len(patterns) - 1)) + '))) AND runnable = 1 ' \
+ 'ORDER BY shortname ASC',
+ patterns)
+ else:
+ return self.dbcurs.execute(
+ 'SELECT shortname, description ' \
+ 'FROM machine ' \
+ 'WHERE id IN (SELECT machine FROM devicereference WHERE device IN (SELECT id FROM machine WHERE sourcefile IN (SELECT id FROM sourcefile WHERE filename IN (?' + (', ?' * (len(patterns) - 1)) + ')))) AND runnable = 1 ' \
+ 'ORDER BY shortname ASC',
+ patterns)
+
+ def get_machine_id(self, machine):
+ return (self.dbcurs.execute('SELECT id FROM machine WHERE shortname = ?', (machine, )).fetchone() or (None, ))[0]
+
+ def get_machine_details(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT machine.id AS id, machine.description AS description, machine.isdevice AS isdevice, machine.runnable AS runnable, sourcefile.filename AS sourcefile, system.year AS year, system.manufacturer AS manufacturer, cloneof.parent AS cloneof, romof.parent AS romof ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id LEFT JOIN system ON machine.id = system.id LEFT JOIN cloneof ON machine.id = cloneof.id LEFT JOIN romof ON machine.id = romof.id ' \
+ 'WHERE machine.shortname = ?',
+ (machine, ))
+
+ def get_biossets(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT biosset.name AS name, biosset.description AS description, COUNT(biossetdefault.id) AS isdefault ' \
+ 'FROM biosset LEFT JOIN biossetdefault USING (id) ' \
+ 'WHERE biosset.machine = ? ' \
+ 'GROUP BY biosset.id',
+ (machine, ))
+
+ def get_devices_referenced(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, sourcefile.filename AS sourcefile ' \
+ 'FROM devicereference LEFT JOIN machine ON devicereference.device = machine.id LEFT JOIN sourcefile ON machine.sourcefile = sourcefile.id ' \
+ 'WHERE devicereference.machine = ?',
+ (machine, ))
+
+ def get_device_references(self, device):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, sourcefile.filename AS sourcefile ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id ' \
+ 'WHERE machine.id IN (SELECT machine FROM devicereference WHERE device = ?)',
+ (device, ))
+
+ def get_compatible_slots(self, device):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, slot.name AS slot, slotoption.name AS slotoption, sourcefile.filename AS sourcefile ' \
+ 'FROM slotoption JOIN slot ON slotoption.slot = slot.id JOIN machine on slot.machine = machine.id JOIN sourcefile ON machine.sourcefile = sourcefile.id '
+ 'WHERE slotoption.device = ?',
+ (device, ))
+
+ def get_sourcefile_id(self, filename):
+ return (self.dbcurs.execute('SELECT id FROM sourcefile WHERE filename = ?', (filename, )).fetchone() or (None, ))[0]
+
+ def get_sourcefile_machines(self, id):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, machine.isdevice AS isdevice, machine.runnable AS runnable, sourcefile.filename AS sourcefile, system.year AS year, system.manufacturer AS manufacturer, cloneof.parent AS cloneof, romof.parent AS romof ' \
+ 'FROM machine JOIN sourcefile ON machine.sourcefile = sourcefile.id LEFT JOIN system ON machine.id = system.id LEFT JOIN cloneof ON machine.id = cloneof.id LEFT JOIN romof ON machine.id = romof.id ' \
+ 'WHERE machine.sourcefile = ?',
+ (id, ))
+
+ def get_sourcefiles(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT sourcefile.filename AS filename, COUNT(machine.id) AS machines ' \
+ 'FROM sourcefile LEFT JOIN machine ON sourcefile.id = machine.sourcefile ' \
+ 'WHERE sourcefile.filename GLOB ?' \
+ 'GROUP BY sourcefile.id ',
+ (pattern, ))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT sourcefile.filename AS filename, COUNT(machine.id) AS machines ' \
+ 'FROM sourcefile LEFT JOIN machine ON sourcefile.id = machine.sourcefile ' \
+ 'GROUP BY sourcefile.id')
+
+ def count_sourcefiles(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute('SELECT COUNT(*) FROM sourcefile WHERE filename GLOB ?', (pattern, )).fetchone()[0]
+ else:
+ return self.dbcurs.execute('SELECT COUNT(*) FROM sourcefile').fetchone()[0]
+
+ def get_clones(self, shortname):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, system.year AS year, system.manufacturer AS manufacturer ' \
+ 'FROM cloneof JOIN machine ON cloneof.id = machine.id LEFT JOIN system ON machine.id = system.id ' \
+ 'WHERE cloneof.parent = ?',
+ (shortname, ))
+
+ def count_slots(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT COUNT(*) FROM slot WHERE machine = ?', (machine, )).fetchone()[0]
+
+ def get_feature_flags(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT featuretype.name AS featuretype, feature.status AS status, feature.overall AS overall ' \
+ 'FROM feature JOIN featuretype ON feature.featuretype = featuretype.id ' \
+ 'WHERE feature.machine = ?',
+ (machine, ))
+
+ def get_slot_defaults(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT slot.name AS name, slotoption.name AS option ' \
+ 'FROM slot JOIN slotdefault ON slot.id = slotdefault.id JOIN slotoption ON slotdefault.slotoption = slotoption.id ' \
+ 'WHERE slot.machine = ?',
+ (machine, ))
+
+ def get_slot_options(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT slot.name AS slot, slotoption.name AS option, machine.shortname AS shortname, machine.description AS description ' \
+ 'FROM slot JOIN slotoption ON slot.id = slotoption.slot JOIN machine ON slotoption.device = machine.id ' \
+ 'WHERE slot.machine = ?',
+ (machine, ))
+
+ def get_ram_options(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT ramoption.name AS name, ramoption.size AS size, COUNT(ramdefault.machine) AS isdefault ' \
+ 'FROM ramoption LEFT JOIN ramdefault USING (machine, size) WHERE ramoption.machine = ? ' \
+ 'GROUP BY ramoption.machine, ramoption.size ' \
+ 'ORDER BY ramoption.size',
+ (machine, ))
+
+ def get_machine_softwarelists(self, machine):
+ return self.dbcurs.execute(
+ 'SELECT machinesoftwarelist.tag AS tag, machinesoftwareliststatustype.value AS status, softwarelist.shortname AS shortname, softwarelist.description AS description, COUNT(software.id) AS total, COUNT(CASE software.supported WHEN 0 THEN 1 ELSE NULL END) AS supported, COUNT(CASE software.supported WHEN 1 THEN 1 ELSE NULL END) AS partiallysupported, COUNT(CASE software.supported WHEN 2 THEN 1 ELSE NULL END) AS unsupported ' \
+ 'FROM machinesoftwarelist LEFT JOIN machinesoftwareliststatustype ON machinesoftwarelist.status = machinesoftwareliststatustype.id LEFT JOIN softwarelist ON machinesoftwarelist.softwarelist = softwarelist.id LEFT JOIN software ON softwarelist.id = software.softwarelist ' \
+ 'WHERE machinesoftwarelist.machine = ? ' \
+ 'GROUP BY machinesoftwarelist.id',
+ (machine, ))
+
+ def get_softwarelist_id(self, shortname):
+ return (self.dbcurs.execute('SELECT id FROM softwarelist WHERE shortname = ?', (shortname, )).fetchone() or (None, ))[0]
+
+ def get_softwarelist_details(self, shortname, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT softwarelist.id AS id, softwarelist.shortname AS shortname, softwarelist.description AS description, softwarelistnotes.notes AS notes, COUNT(software.id) AS total, COUNT(CASE software.supported WHEN 0 THEN 1 ELSE NULL END) AS supported, COUNT(CASE software.supported WHEN 1 THEN 1 ELSE NULL END) AS partiallysupported, COUNT(CASE software.supported WHEN 2 THEN 1 ELSE NULL END) AS unsupported ' \
+ 'FROM softwarelist LEFT JOIN softwarelistnotes ON softwarelist.id = softwarelistnotes.softwarelist LEFT JOIN software ON softwarelist.id = software.softwarelist ' \
+ 'WHERE softwarelist.shortname = ? AND software.shortname GLOB ? ' \
+ 'GROUP BY softwarelist.id',
+ (shortname, pattern))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT softwarelist.id AS id, softwarelist.shortname AS shortname, softwarelist.description AS description, softwarelistnotes.notes AS notes, COUNT(software.id) AS total, COUNT(CASE software.supported WHEN 0 THEN 1 ELSE NULL END) AS supported, COUNT(CASE software.supported WHEN 1 THEN 1 ELSE NULL END) AS partiallysupported, COUNT(CASE software.supported WHEN 2 THEN 1 ELSE NULL END) AS unsupported ' \
+ 'FROM softwarelist LEFT JOIN softwarelistnotes ON softwarelist.id = softwarelistnotes.softwarelist LEFT JOIN software ON softwarelist.id = software.softwarelist ' \
+ 'WHERE softwarelist.shortname = ? ' \
+ 'GROUP BY softwarelist.id',
+ (shortname, ))
+
+ def get_softwarelist_software(self, id, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT software.shortname AS shortname, software.description AS description, software.year AS year, software.publisher AS publisher, software.supported AS supported, COUNT(DISTINCT softwarepart.id) AS parts, COUNT(softwareromdump.rom) + COUNT(softwarediskdump.disk) AS baddumps, parent.shortname AS parent, parent.description AS parentdescription, softwarelist.shortname AS parentsoftwarelist, softwarelist.description AS parentsoftwarelistdescription ' \
+ 'FROM software JOIN softwarepart ON software.id = softwarepart.software LEFT JOIN softwareromdump ON softwarepart.id = softwareromdump.part AND softwareromdump.bad = 1 LEFT JOIN softwarediskdump ON softwarepart.id = softwarediskdump.part AND softwarediskdump.bad = 1 LEFT JOIN softwarecloneof ON software.id = softwarecloneof.id LEFT JOIN software AS parent ON softwarecloneof.parent = parent.id LEFT JOIN softwarelist ON parent.softwarelist = softwarelist.id ' \
+ 'WHERE software.softwarelist = ? AND software.shortname GLOB ? ' \
+ 'GROUP BY software.id',
+ (id, pattern))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT software.shortname AS shortname, software.description AS description, software.year AS year, software.publisher AS publisher, software.supported AS supported, COUNT(DISTINCT softwarepart.id) AS parts, COUNT(softwareromdump.rom) + COUNT(softwarediskdump.disk) AS baddumps, parent.shortname AS parent, parent.description AS parentdescription, softwarelist.shortname AS parentsoftwarelist, softwarelist.description AS parentsoftwarelistdescription ' \
+ 'FROM software JOIN softwarepart ON software.id = softwarepart.software LEFT JOIN softwareromdump ON softwarepart.id = softwareromdump.part AND softwareromdump.bad = 1 LEFT JOIN softwarediskdump ON softwarepart.id = softwarediskdump.part AND softwarediskdump.bad = 1 LEFT JOIN softwarecloneof ON software.id = softwarecloneof.id LEFT JOIN software AS parent ON softwarecloneof.parent = parent.id LEFT JOIN softwarelist ON parent.softwarelist = softwarelist.id ' \
+ 'WHERE software.softwarelist = ? ' \
+ 'GROUP BY software.id',
+ (id, ))
+
+ def get_softwarelist_machines(self, id):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, system.year AS year, system.manufacturer AS manufacturer, machinesoftwareliststatustype.value AS status ' \
+ 'FROM (SELECT DISTINCT machine, status FROM machinesoftwarelist WHERE softwarelist = ?) AS softwarelists LEFT JOIN machine ON softwarelists.machine = machine.id LEFT JOIN system ON machine.id = system.id LEFT JOIN machinesoftwareliststatustype ON softwarelists.status = machinesoftwareliststatustype.id',
+ (id, ))
+
+ def get_softwarelists(self, pattern):
+ if pattern is not None:
+ return self.dbcurs.execute(
+ 'SELECT softwarelist.shortname AS shortname, softwarelist.description AS description, COUNT(software.id) AS total, COUNT(CASE software.supported WHEN 0 THEN 1 ELSE NULL END) AS supported, COUNT(CASE software.supported WHEN 1 THEN 1 ELSE NULL END) AS partiallysupported, COUNT(CASE software.supported WHEN 2 THEN 1 ELSE NULL END) AS unsupported ' \
+ 'FROM softwarelist LEFT JOIN software ON softwarelist.id = software.softwarelist ' \
+ 'WHERE softwarelist.shortname GLOB ? ' \
+ 'GROUP BY softwarelist.id',
+ (pattern, ))
+ else:
+ return self.dbcurs.execute(
+ 'SELECT softwarelist.shortname AS shortname, softwarelist.description AS description, COUNT(software.id) AS total, COUNT(CASE software.supported WHEN 0 THEN 1 ELSE NULL END) AS supported, COUNT(CASE software.supported WHEN 1 THEN 1 ELSE NULL END) AS partiallysupported, COUNT(CASE software.supported WHEN 2 THEN 1 ELSE NULL END) AS unsupported ' \
+ 'FROM softwarelist LEFT JOIN software ON softwarelist.id = software.softwarelist ' \
+ 'GROUP BY softwarelist.id')
+
+ def get_software_details(self, softwarelist, software):
+ return self.dbcurs.execute(
+ 'SELECT software.id AS id, software.shortname AS shortname, software.supported AS supported, software.description AS description, software.year AS year, software.publisher AS publisher, softwarelist.shortname AS softwarelist, softwarelist.description AS softwarelistdescription, parent.shortname AS parent, parent.description AS parentdescription, parentsoftwarelist.shortname AS parentsoftwarelist, parentsoftwarelist.description AS parentsoftwarelistdescription, softwarenotes.notes AS notes ' \
+ 'FROM software LEFT JOIN softwarelist ON software.softwarelist = softwarelist.id LEFT JOIN softwarecloneof ON software.id = softwarecloneof.id LEFT JOIN software AS parent ON softwarecloneof.parent = parent.id LEFT JOIN softwarelist AS parentsoftwarelist ON parent.softwarelist = parentsoftwarelist.id LEFT JOIN softwarenotes ON softwarenotes.software = software.id ' \
+ 'WHERE software.softwarelist = (SELECT id FROM softwarelist WHERE shortname = ?) AND software.shortname = ?',
+ (softwarelist, software))
+
+ def get_software_clones(self, software):
+ return self.dbcurs.execute(
+ 'SELECT software.shortname AS shortname, software.description AS description, software.year AS year, software.publisher AS publisher, software.supported AS supported, softwarelist.shortname AS softwarelist, softwarelist.description AS softwarelistdescription ' \
+ 'FROM softwarecloneof LEFT JOIN software ON softwarecloneof.id = software.id LEFT JOIN softwarelist ON software.softwarelist = softwarelist.id ' \
+ 'WHERE softwarecloneof.parent = ?',
+ (software, ))
+
+ def get_software_info(self, software):
+ return self.dbcurs.execute(
+ 'SELECT softwareinfotype.name AS name, softwareinfo.value AS value ' \
+ 'FROM softwareinfo JOIN softwareinfotype ON softwareinfo.infotype = softwareinfotype.id ' \
+ 'WHERE softwareinfo.software = ? ' \
+ 'ORDER BY softwareinfotype.name ASC, softwareinfo.value ASC',
+ (software, ))
+
+ def get_software_parts(self, software):
+ return self.dbcurs.execute(
+ 'SELECT softwarepart.id AS id, softwarepart.shortname AS shortname, softwarepart.interface AS interface, softwarepartfeature.value AS part_id ' \
+ 'FROM softwarepart LEFT JOIN softwarepartfeature ON softwarepart.id = softwarepartfeature.part AND softwarepartfeature.featuretype = (SELECT id FROM softwarepartfeaturetype WHERE name = \'part_id\') ' \
+ 'WHERE softwarepart.software = ?',
+ (software, ))
+
+ def get_softwarepart_features(self, part):
+ return self.dbcurs.execute(
+ 'SELECT softwarepartfeaturetype.name AS name, softwarepartfeature.value AS value ' \
+ 'FROM softwarepartfeature LEFT JOIN softwarepartfeaturetype ON softwarepartfeature.featuretype = softwarepartfeaturetype.id ' \
+ 'WHERE softwarepartfeature.part = ? '
+ 'ORDER BY softwarepartfeaturetype.name ASC',
+ (part, ))
+
+ def get_rom_dumps(self, crc, sha1):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, romdump.name AS label, romdump.bad AS bad ' \
+ 'FROM romdump LEFT JOIN machine ON romdump.machine = machine.id ' \
+ 'WHERE romdump.rom = (SELECT id FROM rom WHERE crc = ? AND sha1 = ?)',
+ (crc, sha1))
+
+ def get_software_rom_dumps(self, crc, sha1):
+ return self.dbcurs.execute(
+ 'SELECT softwarelist.shortname AS softwarelist, softwarelist.description AS softwarelistdescription, software.shortname AS shortname, software.description AS description, softwarepart.shortname AS part, softwarepartfeature.value AS part_id, softwareromdump.name AS label, softwareromdump.bad AS bad ' \
+ 'FROM softwareromdump LEFT JOIN softwarepart ON softwareromdump.part = softwarepart.id LEFT JOIN softwarepartfeature ON softwarepart.id = softwarepartfeature.part AND softwarepartfeature.featuretype = (SELECT id FROM softwarepartfeaturetype WHERE name = \'part_id\') LEFT JOIN software ON softwarepart.software = software.id LEFT JOIN softwarelist ON software.softwarelist = softwarelist.id ' \
+ 'WHERE softwareromdump.rom = (SELECT id FROM rom WHERE crc = ? AND sha1 = ?)',
+ (crc, sha1))
+
+ def get_disk_dumps(self, sha1):
+ return self.dbcurs.execute(
+ 'SELECT machine.shortname AS shortname, machine.description AS description, diskdump.name AS label, diskdump.bad AS bad ' \
+ 'FROM diskdump LEFT JOIN machine ON diskdump.machine = machine.id ' \
+ 'WHERE diskdump.disk = (SELECT id FROM disk WHERE sha1 = ?)',
+ (sha1, ))
+
+ def get_software_disk_dumps(self, sha1):
+ return self.dbcurs.execute(
+ 'SELECT softwarelist.shortname AS softwarelist, softwarelist.description AS softwarelistdescription, software.shortname AS shortname, software.description AS description, softwarepart.shortname AS part, softwarepartfeature.value AS part_id, softwarediskdump.name AS label, softwarediskdump.bad AS bad ' \
+ 'FROM softwarediskdump LEFT JOIN softwarepart ON softwarediskdump.part = softwarepart.id LEFT JOIN softwarepartfeature ON softwarepart.id = softwarepartfeature.part AND softwarepartfeature.featuretype = (SELECT id FROM softwarepartfeaturetype WHERE name = \'part_id\') LEFT JOIN software ON softwarepart.software = software.id LEFT JOIN softwarelist ON software.softwarelist = softwarelist.id ' \
+ 'WHERE softwarediskdump.disk = (SELECT id FROM disk WHERE sha1 = ?)',
+ (sha1, ))
+
+
+class UpdateCursor(object):
+ def __init__(self, dbconn, **kwargs):
+ super(UpdateCursor, self).__init__(**kwargs)
+ self.dbcurs = dbconn.cursor()
+
+ def close(self):
+ self.dbcurs.close()
+
+ def add_softwarelist(self, shortname, description):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWARELIST, (shortname, description))
+ return self.dbcurs.lastrowid
+
+ def add_softwarelistnotes(self, softwarelist, notes):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWARELISTNOTES, (softwarelist, notes))
+
+ def add_softwareinfotype(self, name):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREINFOTYPE, (name, ))
+
+ def add_softwaresharedfeattype(self, name):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWARESHAREDFEATTYPE, (name, ))
+
+ def add_softwarepartfeaturetype(self, name):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREPARTFEATURETYPE, (name, ))
+
+ def add_software(self, softwarelist, shortname, supported, description, year, publisher):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWARE, (softwarelist, shortname, supported, description, year, publisher))
+ return self.dbcurs.lastrowid
+
+ def add_softwarecloneof(self, software, parent):
+ self.dbcurs.execute(UpdateQueries.ADD_TEMPORARY_SOFTWARECLONEOF, (software, parent))
+ return self.dbcurs.lastrowid
+
+ def add_softwarenotes(self, software, notes):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWARENOTES, (software, notes))
+
+ def add_softwareinfo(self, software, infotype, value):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREINFO, (software, value, infotype))
+ return self.dbcurs.lastrowid
+
+ def add_softwaresharedfeat(self, software, sharedfeattype, value):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWARESHAREDFEAT, (software, value, sharedfeattype))
+ return self.dbcurs.lastrowid
+
+ def add_softwarepart(self, software, shortname, interface):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREPART, (software, shortname, interface))
+ return self.dbcurs.lastrowid
+
+ def add_softwarepartfeature(self, part, featuretype, value):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREPARTFEATURE, (part, value, featuretype))
+ return self.dbcurs.lastrowid
+
+ def add_featuretype(self, name):
+ self.dbcurs.execute(UpdateQueries.ADD_FEATURETYPE, (name, ))
+
+ def add_sourcefile(self, filename):
+ self.dbcurs.execute(UpdateQueries.ADD_SOURCEFILE, (filename, ))
+
+ def add_machine(self, shortname, description, sourcefile, isdevice, runnable):
+ self.dbcurs.execute(UpdateQueries.ADD_MACHINE, (shortname, description, isdevice, runnable, sourcefile))
+ return self.dbcurs.lastrowid
+
+ def add_system(self, machine, year, manufacturer):
+ self.dbcurs.execute(UpdateQueries.ADD_SYSTEM, (machine, year, manufacturer))
+ return self.dbcurs.lastrowid
+
+ def add_cloneof(self, machine, parent):
+ self.dbcurs.execute(UpdateQueries.ADD_CLONEOF, (machine, parent))
+ return self.dbcurs.lastrowid
+
+ def add_romof(self, machine, parent):
+ self.dbcurs.execute(UpdateQueries.ADD_ROMOF, (machine, parent))
+ return self.dbcurs.lastrowid
+
+ def add_biosset(self, machine, name, description):
+ self.dbcurs.execute(UpdateQueries.ADD_BIOSSET, (machine, name, description))
+ return self.dbcurs.lastrowid
+
+ def add_biossetdefault(self, biosset):
+ self.dbcurs.execute(UpdateQueries.ADD_BIOSSETDEFAULT, (biosset, ))
+ return self.dbcurs.lastrowid
+
+ def add_devicereference(self, machine, device):
+ self.dbcurs.execute(UpdateQueries.ADD_TEMPORARY_DEVICEREFERENCE, (machine, device))
+
+ def add_dipswitch(self, machine, isconfig, name, tag, mask):
+ self.dbcurs.execute(UpdateQueries.ADD_DIPSWITCH, (machine, isconfig, name, tag, mask))
+ return self.dbcurs.lastrowid
+
+ def add_diplocation(self, dipswitch, bit, name, num, inverted):
+ self.dbcurs.execute(UpdateQueries.ADD_DIPLOCATION, (dipswitch, bit, name, num, inverted))
+ return self.dbcurs.lastrowid
+
+ def add_dipvalue(self, dipswitch, name, value, isdefault):
+ self.dbcurs.execute(UpdateQueries.ADD_DIPVALUE, (dipswitch, name, value, isdefault))
+ return self.dbcurs.lastrowid
+
+ def add_feature(self, machine, featuretype, status, overall):
+ self.dbcurs.execute(UpdateQueries.ADD_FEATURE, (machine, status, overall, featuretype))
+ return self.dbcurs.lastrowid
+
+ def add_slot(self, machine, name):
+ self.dbcurs.execute(UpdateQueries.ADD_SLOT, (machine, name))
+ return self.dbcurs.lastrowid
+
+ def add_slotoption(self, slot, device, name):
+ self.dbcurs.execute(UpdateQueries.ADD_TEMPORARY_SLOTOPTION, (slot, device, name))
+ return self.dbcurs.lastrowid
+
+ def add_slotdefault(self, slot, slotoption):
+ self.dbcurs.execute(UpdateQueries.ADD_TEMPORARY_SLOTDEFAULT, (slot, slotoption))
+ return self.dbcurs.lastrowid
+
+ def add_ramoption(self, machine, name, size):
+ self.dbcurs.execute(UpdateQueries.ADD_RAMOPTION, (machine, size, name))
+ return self.dbcurs.lastrowid
+
+ def add_ramdefault(self, machine, size):
+ self.dbcurs.execute(UpdateQueries.ADD_RAMDEFAULT, (machine, size))
+ return self.dbcurs.lastrowid
+
+ def add_machinesoftwarelist(self, machine, softwarelist, tag, status):
+ self.dbcurs.execute(UpdateQueries.ADD_MACHINESOFTWARELISTSTATUSTYPE, (status, ))
+ self.dbcurs.execute(UpdateQueries.ADD_MACHINESOFTWARELIST, (machine, tag, softwarelist, status))
+ return self.dbcurs.lastrowid
+
+ def add_rom(self, crc, sha1):
+ self.dbcurs.execute(UpdateQueries.ADD_ROM, (crc, sha1))
+ return self.dbcurs.lastrowid
+
+ def add_romdump(self, machine, name, crc, sha1, bad):
+ self.dbcurs.execute(UpdateQueries.ADD_ROMDUMP, (machine, name, 1 if bad else 0, crc, sha1))
+ return self.dbcurs.lastrowid
+
+ def add_softwareromdump(self, part, name, crc, sha1, bad):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREROMDUMP, (part, name, 1 if bad else 0, crc, sha1))
+ return self.dbcurs.lastrowid
+
+ def add_disk(self, sha1):
+ self.dbcurs.execute(UpdateQueries.ADD_DISK, (sha1, ))
+ return self.dbcurs.lastrowid
+
+ def add_diskdump(self, machine, name, sha1, bad):
+ self.dbcurs.execute(UpdateQueries.ADD_DISKDUMP, (machine, name, 1 if bad else 0, sha1))
+ return self.dbcurs.lastrowid
+
+ def add_softwarediskdump(self, part, name, sha1, bad):
+ self.dbcurs.execute(UpdateQueries.ADD_SOFTWAREDISKDUMP, (part, name, 1 if bad else 0, sha1))
+ return self.dbcurs.lastrowid
+
+
+class QueryConnection(object):
+ def __init__(self, database, **kwargs):
+ super(QueryConnection, self).__init__(**kwargs)
+ if sys.version_info >= (3, 4):
+ self.dbconn = sqlite3.connect('file:' + urllib.request.pathname2url(database) + '?mode=ro', uri=True, check_same_thread=False)
+ else:
+ self.dbconn = sqlite3.connect(database, check_same_thread=False)
+ self.dbconn.row_factory = sqlite3.Row
+ self.dbconn.execute('PRAGMA foreign_keys = ON')
+
+ def close(self):
+ self.dbconn.close()
+
+ def cursor(self):
+ return QueryCursor(self.dbconn)
+
+
+class UpdateConnection(object):
+ def __init__(self, database, **kwargs):
+ super(UpdateConnection, self).__init__(**kwargs)
+ self.dbconn = sqlite3.connect(database)
+ self.dbconn.execute('PRAGMA page_size = 4096')
+ self.dbconn.execute('PRAGMA foreign_keys = ON')
+
+ def commit(self):
+ self.dbconn.commit()
+
+ def rollback(self):
+ self.dbconn.rollback()
+
+ def close(self):
+ self.dbconn.close()
+
+ def cursor(self):
+ return UpdateCursor(self.dbconn)
+
+ def prepare_for_load(self):
+ # here be dragons - this is a poor man's DROP ALL TABLES etc.
+ self.dbconn.execute('PRAGMA foreign_keys = OFF')
+ for query in self.dbconn.execute('SELECT \'DROP VIEW \' || name FROM sqlite_master WHERE type = \'view\'').fetchall():
+ self.dbconn.execute(query[0])
+ for query in self.dbconn.execute('SELECT \'DROP INDEX \' || name FROM sqlite_master WHERE type = \'index\' AND NOT name GLOB \'sqlite_autoindex_*\'').fetchall():
+ self.dbconn.execute(query[0])
+ for query in self.dbconn.execute('SELECT \'DROP TABLE \' || name FROM sqlite_master WHERE type = \'table\'').fetchall():
+ self.dbconn.execute(query[0])
+ self.dbconn.execute('PRAGMA foreign_keys = ON')
+
+ # this is where the sanity starts
+ for query in SchemaQueries.DROP_INDEXES:
+ self.dbconn.execute(query)
+ for query in SchemaQueries.CREATE_TABLES:
+ self.dbconn.execute(query)
+ for query in SchemaQueries.CREATE_TEMPORARY_TABLES:
+ self.dbconn.execute(query)
+ self.dbconn.commit()
+
+ def finalise_load(self):
+ self.dbconn.execute(UpdateQueries.FINALISE_SOFTWARECLONEOFS)
+ self.dbconn.commit()
+ self.dbconn.execute(SchemaQueries.DROP_TEMPORARY_SOFTWARECLONEOF)
+ self.dbconn.execute(UpdateQueries.FINALISE_DEVICEREFERENCES)
+ self.dbconn.commit()
+ self.dbconn.execute(SchemaQueries.DROP_TEMPORARY_DEVICEREFERENCE)
+ self.dbconn.execute(UpdateQueries.FINALISE_SLOTOPTIONS)
+ self.dbconn.commit()
+ self.dbconn.execute(SchemaQueries.DROP_TEMPORARY_SLOTOPTION)
+ self.dbconn.execute(UpdateQueries.FINALISE_SLOTDEFAULTS)
+ self.dbconn.commit()
+ self.dbconn.execute(SchemaQueries.DROP_TEMPORARY_SLOTDEFAULT)
+ for query in SchemaQueries.CREATE_INDEXES:
+ self.dbconn.execute(query)
+ self.dbconn.commit()
diff --git a/docs/release/scripts/minimaws/lib/htmltmpl.py b/docs/release/scripts/minimaws/lib/htmltmpl.py
new file mode 100644
index 00000000000..62e1bbcf1ea
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/htmltmpl.py
@@ -0,0 +1,477 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import string
+
+
+ERROR_PAGE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <title>${code} ${message}</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${message}</h1>\n' \
+ '</body>\n' \
+ '</html>\n')
+
+
+SORTABLE_TABLE_EPILOGUE = string.Template(
+ ' </tbody>\n'
+ '</table>\n'
+ '<script>make_table_sortable(document.getElementById("${id}"));</script>\n')
+
+
+MACHINE_PROLOGUE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">\n' \
+ ' var appurl="${app}"\n' \
+ ' var assetsurl="${assets}"\n' \
+ ' </script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <script type="text/javascript" src="${assets}/machine.js"></script>\n' \
+ ' <title>Machine: ${description} (${shortname})</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${description}</h1>\n' \
+ '<table class="sysinfo">\n' \
+ ' <tr><th>Short name:</th><td>${shortname}</td></tr>\n' \
+ ' <tr><th>Is device:</th><td>${isdevice}</td></tr>\n' \
+ ' <tr><th>Runnable:</th><td>${runnable}</td></tr>\n' \
+ ' <tr><th>Source file:</th><td><a href="${sourcehref}">${sourcefile}</a></td></tr>\n')
+
+MACHINE_CLONES_PROLOGUE = string.Template(
+ '<h2 id="heading-clones">Clones</h2>\n' \
+ '<table id="tbl-clones">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th>Year</th>\n' \
+ ' <th>Manufacturer</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+MACHINE_CLONES_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${href}">${shortname}</a></td>\n' \
+ ' <td><a href="${href}">${description}</a></td>\n' \
+ ' <td>${year}</td>\n' \
+ ' <td>${manufacturer}</td>\n' \
+ ' </tr>\n')
+
+MACHINE_SOFTWARELISTS_TABLE_PROLOGUE = string.Template(
+ '<h2 id="heading-softwarelists">Software Lists</h2>\n' \
+ '<table id="tbl-softwarelists">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Card</th>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th>Status</th>\n' \
+ ' <th class="numeric">Total</th>\n' \
+ ' <th class="numeric">Supported</th>\n' \
+ ' <th class="numeric">Partially supported</th>\n' \
+ ' <th class="numeric">Unsupported</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+MACHINE_SOFTWARELISTS_TABLE_ROW = string.Template(
+ ' <tr id="row-softwarelists-${rowid}">\n' \
+ ' <td></td>\n' \
+ ' <td><a href="${href}">${shortname}</a></td>\n' \
+ ' <td><a href="${href}">${description}</a></td>\n' \
+ ' <td>${status}</td>\n' \
+ ' <td style="text-align: right">${total}</td>\n' \
+ ' <td style="text-align: right">${supported}</td>\n' \
+ ' <td style="text-align: right">${partiallysupported}</td>\n' \
+ ' <td style="text-align: right">${unsupported}</td>\n' \
+ ' </tr>\n')
+
+MACHINE_SOFTWARELISTS_TABLE_EPILOGUE = string.Template(
+ ' </tbody>\n' \
+ '</table>\n' \
+ '<script>\n' \
+ ' make_table_sortable(document.getElementById("tbl-softwarelists"));\n' \
+ ' make_collapsible(document.getElementById("heading-softwarelists"), document.getElementById("tbl-softwarelists"));\n' \
+ ' if (!document.getElementById("tbl-softwarelists").tBodies[0].rows.length)\n' \
+ ' {\n' \
+ ' document.getElementById("heading-softwarelists").style.display = "none";\n' \
+ ' document.getElementById("tbl-softwarelists").style.display = "none";\n' \
+ ' }\n' \
+ '</script>\n')
+
+MACHINE_OPTIONS_HEADING = string.Template(
+ '<h2 id="heading-options">Options</h2>\n' \
+ '<div id="div-options">\n' \
+ ' <p>\n' \
+ ' Format: <select id="select-options-format" onchange="update_cmd_preview()"><option value="cmd">Command line</option><option value="ini">INI file</option></select>\n' \
+ ' <input type="checkbox" id="check-explicit-defaults" onchange="update_cmd_preview()"><label for="check-explicit-defaults">Explicit defaults</label>\n' \
+ ' </p>\n' \
+ ' <p id="para-cmd-preview"></p>\n')
+
+MACHINE_OPTIONS_EPILOGUE = string.Template(
+ '</div>\n' \
+ '<script>make_collapsible(document.getElementById("heading-options"), document.getElementById("div-options"));</script>\n')
+
+MACHINE_BIOS_PROLOGUE = string.Template(
+ ' <h3>System BIOS</h3>' \
+ ' <select id="select-system-bios" onchange="update_cmd_preview()">')
+
+MACHINE_BIOS_OPTION = string.Template(
+ ' <option value="${name}" data-isdefault="${isdefault}">${name} - ${description}</option>\n')
+
+MACHINE_RAM_PROLOGUE = string.Template(
+ ' <h3>RAM Size</h3>\n' \
+ ' <select id="select-ram-option" onchange="update_cmd_preview()">\n')
+
+MACHINE_RAM_OPTION = string.Template(
+ ' <option value="${name}" data-isdefault="${isdefault}">${name} (${size})</option>\n')
+
+MACHINE_SLOTS_PLACEHOLDER_PROLOGUE = string.Template(
+ ' <h3>Slots</h3>\n' \
+ ' <p id="para-slots-placeholder">Loading slot information&hellip;<p>\n' \
+ ' <script>\n')
+
+MACHINE_SLOTS_PLACEHOLDER_EPILOGUE = string.Template(
+ ' populate_slots(${machine});\n'
+ ' </script>\n')
+
+MACHINE_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${machinehref}">${shortname}</a></td>\n' \
+ ' <td><a href="${machinehref}">${description}</a></td>\n' \
+ ' <td><a href="${sourcehref}">${sourcefile}</a></td>\n' \
+ ' </tr>\n')
+
+EXCL_MACHINE_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${machinehref}">${shortname}</a></td>\n' \
+ ' <td></td>\n' \
+ ' <td></td>\n' \
+ ' </tr>\n')
+
+COMPATIBLE_SLOT_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${machinehref}">${shortname}</a></td>\n' \
+ ' <td><a href="${machinehref}">${description}</a></td>\n' \
+ ' <td>${slot}</td>\n' \
+ ' <td>${slotoption}</td>\n' \
+ ' <td><a href="${sourcehref}">${sourcefile}</a></td>\n' \
+ ' </tr>\n')
+
+
+SOURCEFILE_PROLOGUE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">var assetsurl="${assets}"</script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <title>Source File: ${filename}</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${title}</h1>\n')
+
+SOURCEFILE_ROW_PARENT = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${machinehref}">${shortname}</a></td>\n' \
+ ' <td><a href="${machinehref}">${description}</a></td>\n' \
+ ' <td>${year}</td>\n' \
+ ' <td>${manufacturer}</td>\n' \
+ ' <td>${runnable}</td>\n' \
+ ' <td></td>\n' \
+ ' </tr>\n')
+
+SOURCEFILE_ROW_CLONE = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${machinehref}">${shortname}</a></td>\n' \
+ ' <td><a href="${machinehref}">${description}</a></td>\n' \
+ ' <td>${year}</td>\n' \
+ ' <td>${manufacturer}</td>\n' \
+ ' <td>${runnable}</td>\n' \
+ ' <td><a href="${parenthref}">${parent}</a></td>\n' \
+ ' </tr>\n')
+
+
+SOURCEFILE_LIST_PROLOGUE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">var assetsurl="${assets}"</script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <title>${title}</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${heading}</h1>\n' \
+ '<table id="tbl-sourcefiles">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Source file</th>\n' \
+ ' <th class="numeric">Machines</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+SOURCEFILE_LIST_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td>${sourcefile}</td>\n' \
+ ' <td style="text-align: right">${machines}</td>\n' \
+ ' </tr>\n')
+
+
+SOFTWARE_PROLOGUE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">var assetsurl="${assets}"</script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <title>${title}</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${heading}</h1>\n' \
+ '<table class="sysinfo">\n' \
+ ' <tr><th>Software list:</th><td><a href="${softwarelisthref}">${softwarelistdescription} (${softwarelist})</a></td></tr>\n' \
+ ' <tr><th>Short name:</th><td>${shortname}</td></tr>\n' \
+ ' <tr><th>Year:</th><td>${year}</td></tr>\n' \
+ ' <tr><th>Publisher:</th><td>${publisher}</td></tr>\n');
+
+SOFTWARE_CLONES_PROLOGUE = string.Template(
+ '<h2 id="heading-clones">Clones</h2>\n' \
+ '<table id="tbl-clones">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th>Year</th>\n' \
+ ' <th>Publisher</th>\n' \
+ ' <th>Supported</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+SOFTWARE_CLONES_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${href}">${shortname}</a></td>\n' \
+ ' <td><a href="${href}">${description}</a></td>\n' \
+ ' <td>${year}</td>\n' \
+ ' <td>${publisher}</td>\n' \
+ ' <td>${supported}</td>\n' \
+ ' </tr>\n')
+
+SOFTWARE_NOTES_PROLOGUE = string.Template(
+ '<h2 id="heading-notes">Notes</h2>\n' \
+ '<div id="div-notes">\n')
+
+SOFTWARE_NOTES_EPILOGUE = string.Template(
+ '</div>\n' \
+ '<script>make_collapsible(document.getElementById("heading-notes"), document.getElementById("div-notes"))();</script>\n\n')
+
+SOFTWARE_PARTS_PROLOGUE = string.Template(
+ '<h2 id="heading-parts">Parts</h2>\n' \
+ '<div id="div-parts">\n\n')
+
+SOFTWARE_PARTS_EPILOGUE = string.Template(
+ '</div>\n' \
+ '<script>make_collapsible(document.getElementById("heading-parts"), document.getElementById("div-parts"));</script>\n\n')
+
+SOFTWARE_PART_PROLOGUE = string.Template(
+ ' <h3>${heading}</h3>\n' \
+ ' <table class="sysinfo">\n' \
+ ' <tr><th>Short name:</th><td>${shortname}</td></tr>\n' \
+ ' <tr><th>Interface:</th><td>${interface}</td></tr>\n')
+
+
+SOFTWARELIST_PROLOGUE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">var assetsurl="${assets}"</script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <title>${title}</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${heading}</h1>\n' \
+ '<table class="sysinfo">\n' \
+ ' <tr>\n' \
+ ' <th>Short name:</th>\n' \
+ ' <td>${shortname}</td>\n' \
+ ' </tr>\n' \
+ ' <tr>\n' \
+ ' <th>Total:</th>\n' \
+ ' <td style="text-align: right">${total}</td>\n' \
+ ' </tr>\n' \
+ ' <tr>\n' \
+ ' <th>Supported:</th>\n' \
+ ' <td style="text-align: right">${supported}</td>\n' \
+ ' <td style="text-align: right">(${supportedpc}%)</td>\n' \
+ ' </tr>\n' \
+ ' <tr>\n' \
+ ' <th>Partially supported:</th>\n' \
+ ' <td style="text-align: right">${partiallysupported}</td>\n' \
+ ' <td style="text-align: right">(${partiallysupportedpc}%)</td>\n' \
+ ' </tr>\n' \
+ ' <tr>\n' \
+ ' <th>Unsupported:</th>\n' \
+ ' <td style="text-align: right">${unsupported}</td>\n' \
+ ' <td style="text-align: right">(${unsupportedpc}%)</td>\n' \
+ ' </tr>\n' \
+ '</table>\n')
+
+SOFTWARELIST_NOTES_PROLOGUE = string.Template(
+ '<h2 id="heading-notes">Notes</h2>\n' \
+ '<div id="div-notes">\n')
+
+SOFTWARELIST_NOTES_EPILOGUE = string.Template(
+ '</div>\n' \
+ '<script>make_collapsible(document.getElementById("heading-notes"), document.getElementById("div-notes"))();</script>\n\n')
+
+SOFTWARELIST_MACHINE_TABLE_HEADER = string.Template(
+ '<h2 id="heading-machines">Machines</h2>\n' \
+ '<table id="tbl-machines">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th>Year</th>\n' \
+ ' <th>Manufacturer</th>\n' \
+ ' <th>Status</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+SOFTWARELIST_MACHINE_TABLE_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${machinehref}">${shortname}</a></td>\n' \
+ ' <td><a href="${machinehref}">${description}</a></td>\n' \
+ ' <td>${year}</td>\n' \
+ ' <td>${manufacturer}</td>\n' \
+ ' <td>${status}</td>\n' \
+ ' </tr>\n')
+
+SOFTWARELIST_SOFTWARE_TABLE_HEADER = string.Template(
+ '<h2 id="heading-software">Software</h2>\n' \
+ '<table id="tbl-software">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th>Year</th>\n' \
+ ' <th>Publisher</th>\n' \
+ ' <th>Supported</th>\n' \
+ ' <th class="numeric">Parts</th>\n' \
+ ' <th class="numeric">Bad dumps</th>\n' \
+ ' <th>Parent</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+SOFTWARELIST_SOFTWARE_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${softwarehref}">${shortname}</a></td>\n' \
+ ' <td><a href="${softwarehref}">${description}</a></td>\n' \
+ ' <td>${year}</td>\n' \
+ ' <td>${publisher}</td>\n' \
+ ' <td>${supported}</td>\n' \
+ ' <td style="text-align: right">${parts}</td>\n' \
+ ' <td style="text-align: right">${baddumps}</td>\n' \
+ ' <td>${parent}</td>\n' \
+ ' </tr>\n')
+
+
+SOFTWARELIST_LIST_PROLOGUE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">var assetsurl="${assets}"</script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <title>${title}</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>${heading}</h1>\n' \
+ '<table id="tbl-softwarelists">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th class="numeric">Total</th>\n' \
+ ' <th class="numeric">Supported</th>\n' \
+ ' <th class="numeric">Partially supported</th>\n' \
+ ' <th class="numeric">Unsupported</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n')
+
+SOFTWARELIST_LIST_ROW = string.Template(
+ ' <tr>\n' \
+ ' <td><a href="${href}">${shortname}</a></td>\n' \
+ ' <td><a href="${href}">${description}</a></td>\n' \
+ ' <td style="text-align: right">${total}</td>\n' \
+ ' <td style="text-align: right">${supported}</td>\n' \
+ ' <td style="text-align: right">${partiallysupported}</td>\n' \
+ ' <td style="text-align: right">${unsupported}</td>\n' \
+ ' </tr>\n')
+
+
+ROMIDENT_PAGE = string.Template(
+ '<!DOCTYPE html>\n' \
+ '<html>\n' \
+ '<head>\n' \
+ ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' \
+ ' <meta http-equiv="Content-Style-Type" content="text/css">\n' \
+ ' <meta http-equiv="Content-Script-Type" content="text/javascript">\n' \
+ ' <link rel="stylesheet" type="text/css" href="${assets}/style.css">\n' \
+ ' <script type="text/javascript">\n' \
+ ' var appurl="${app}"\n' \
+ ' var assetsurl="${assets}"\n' \
+ ' </script>\n' \
+ ' <script type="text/javascript" src="${assets}/common.js"></script>\n' \
+ ' <script type="text/javascript" src="${assets}/digest.js"></script>\n' \
+ ' <script type="text/javascript" src="${assets}/romident.js"></script>\n' \
+ ' <title>Identify ROM/Disk Dumps</title>\n' \
+ '</head>\n' \
+ '<body>\n' \
+ '<h1>Identify ROM/Disk Dumps</h1>\n' \
+ '<p>No files are uploaded. Files are examined locally and checksums/digests are sent to the server. File checksums and digests may be logged on the server.</p>\n' \
+ '<div id="div-dropzone" class="dropzone" ondragover="div_dropzone_dragover(event)" ondrop="div_dropzone_drop(event)">\n' \
+ '<p><button type="button" onclick="document.getElementById(&quot;input-dumps&quot;).click()">Select ROM/disk dumps</button></p>\n' \
+ '<p>Drag and drop ROM/disk dump files here to identify them.</p>\n' \
+ '</div>\n' \
+ '<input id="input-dumps" type="file" multiple onchange="add_dump_files(this.files)" style="display: none">\n' \
+ '<div id="div-progress"></div>\n' \
+ '<div id="div-issues"></div>\n' \
+ '<div id="div-unmatched"></div>\n' \
+ '<div id="div-machines"></div>\n' \
+ '<div id="div-software"></div>\n' \
+ '</body>\n' \
+ '</html>\n')
diff --git a/docs/release/scripts/minimaws/lib/lxparse.py b/docs/release/scripts/minimaws/lib/lxparse.py
new file mode 100644
index 00000000000..e773669080d
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/lxparse.py
@@ -0,0 +1,471 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+from . import dbaccess
+
+import os
+import os.path
+import subprocess
+import xml.sax
+import xml.sax.saxutils
+
+
+class ElementHandlerBase(object):
+ def __init__(self, parent, **kwargs):
+ super(ElementHandlerBase, self).__init__(**kwargs)
+ self.dbconn = parent.dbconn if parent is not None else None
+ self.locator = parent.locator if parent is not None else None
+ self.depth = 0
+ self.childhandler = None
+ self.childdepth = 0
+
+ def startMainElement(self, name, attrs):
+ pass
+
+ def endMainElement(self, name):
+ pass
+
+ def mainCharacters(self, content):
+ pass
+
+ def mainIgnorableWitespace(self, whitespace):
+ pass
+
+ def startChildElement(self, name, attrs):
+ pass
+
+ def endChildElement(self, name):
+ pass
+
+ def childCharacters(self, content):
+ pass
+
+ def childIgnorableWitespace(self, whitespace):
+ pass
+
+ def endChildHandler(self, name, handler):
+ pass
+
+ def setChildHandler(self, name, attrs, handler):
+ self.depth -= 1
+ self.childhandler = handler
+ self.childdepth += 1
+ handler.startElement(name, attrs)
+
+ def setDocumentLocator(self, locator):
+ self.locator = locator
+
+ def startElement(self, name, attrs):
+ if self.childhandler is not None:
+ self.childdepth += 1
+ self.childhandler.startElement(name, attrs)
+ else:
+ self.depth += 1
+ if 1 == self.depth:
+ self.startMainElement(name, attrs)
+ else:
+ self.startChildElement(name, attrs)
+
+ def endElement(self, name):
+ if self.childhandler is not None:
+ self.childdepth -= 1
+ self.childhandler.endElement(name)
+ if 0 == self.childdepth:
+ self.endChildHandler(name, self.childhandler)
+ self.childhandler = None
+ else:
+ self.depth -= 1
+ if 0 == self.depth:
+ self.endMainElement(name)
+ else:
+ self.endChildElement(name)
+
+ def characters(self, content):
+ if self.childhandler is not None:
+ self.childhandler.characters(content)
+ elif 1 < self.depth:
+ self.childCharacters(content)
+ else:
+ self.mainCharacters(content)
+
+ def ignorableWhitespace(self, content):
+ if self.childhandler is not None:
+ self.childhandler.ignorableWhitespace(content)
+ elif 1 < self.depth:
+ self.childIgnorableWitespace(content)
+ else:
+ self.mainIgnorableWitespace(content)
+
+
+class ElementHandler(ElementHandlerBase):
+ IGNORE = ElementHandlerBase(parent=None)
+
+
+class TextAccumulator(ElementHandler):
+ def __init__(self, parent, **kwargs):
+ super(TextAccumulator, self).__init__(parent=parent, **kwargs)
+ self.text = ''
+
+ def mainCharacters(self, content):
+ self.text += content
+
+
+class DipSwitchHandler(ElementHandler):
+ def __init__(self, parent, **kwargs):
+ super(DipSwitchHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = parent.dbcurs
+ self.machine = parent.id
+
+ def startMainElement(self, name, attrs):
+ self.mask = int(attrs['mask'])
+ self.bit = 0
+ self.id = self.dbcurs.add_dipswitch(self.machine, name == 'configuration', attrs['name'], attrs['tag'], self.mask)
+
+ def startChildElement(self, name, attrs):
+ if (name == 'diplocation') or (name == 'conflocation'):
+ while (0 != self.mask) and not (self.mask & 1):
+ self.mask >>= 1
+ self.bit += 1
+ self.dbcurs.add_diplocation(self.id, self.bit, attrs['name'], attrs['number'], attrs.get('inverted', 'no') == 'yes')
+ self.mask >>= 1
+ self.bit += 1
+ elif (name == 'dipvalue') or (name == 'confsetting'):
+ self.dbcurs.add_dipvalue(self.id, attrs['name'], attrs['value'], attrs.get('default', 'no') == 'yes')
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+
+class SlotHandler(ElementHandler):
+ def __init__(self, parent, **kwargs):
+ super(SlotHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = parent.dbcurs
+ self.machine = parent.id
+
+ def startMainElement(self, name, attrs):
+ self.id = self.dbcurs.add_slot(self.machine, attrs['name'])
+
+ def startChildElement(self, name, attrs):
+ if name == 'slotoption':
+ option = self.dbcurs.add_slotoption(self.id, attrs['devname'], attrs['name'])
+ if attrs.get('default') == 'yes':
+ self.dbcurs.add_slotdefault(self.id, option)
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+
+class RamOptionHandler(TextAccumulator):
+ def __init__(self, parent, **kwargs):
+ super(RamOptionHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = parent.dbcurs
+ self.machine = parent.id
+
+ def startMainElement(self, name, attrs):
+ self.name = attrs['name']
+ self.default = attrs.get('default', 'no') == 'yes';
+
+ def endMainElement(self, name):
+ self.size = int(self.text)
+ self.dbcurs.add_ramoption(self.machine, self.name, self.size)
+ if self.default:
+ self.dbcurs.add_ramdefault(self.machine, self.size)
+
+
+class MachineHandler(ElementHandler):
+ CHILD_HANDLERS = {
+ 'description': TextAccumulator,
+ 'year': TextAccumulator,
+ 'manufacturer': TextAccumulator,
+ 'dipswitch': DipSwitchHandler,
+ 'configuration': DipSwitchHandler,
+ 'slot': SlotHandler,
+ 'ramoption': RamOptionHandler }
+
+ def __init__(self, parent, **kwargs):
+ super(MachineHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = self.dbconn.cursor()
+
+ def startMainElement(self, name, attrs):
+ self.shortname = attrs['name']
+ self.sourcefile = attrs['sourcefile']
+ self.isdevice = attrs.get('isdevice', 'no') == 'yes'
+ self.runnable = attrs.get('runnable', 'yes') == 'yes'
+ self.cloneof = attrs.get('cloneof')
+ self.romof = attrs.get('romof')
+ self.dbcurs.add_sourcefile(self.sourcefile)
+
+ def endMainElement(self, name):
+ self.dbcurs.close()
+
+ def startChildElement(self, name, attrs):
+ if name in self.CHILD_HANDLERS:
+ self.setChildHandler(name, attrs, self.CHILD_HANDLERS[name](self))
+ else:
+ if name == 'biosset':
+ bios = self.dbcurs.add_biosset(self.id, attrs['name'], attrs['description'])
+ if attrs.get('default', 'no') == 'yes':
+ self.dbcurs.add_biossetdefault(bios)
+ elif name == 'device_ref':
+ self.dbcurs.add_devicereference(self.id, attrs['name'])
+ elif name == 'feature':
+ self.dbcurs.add_featuretype(attrs['type'])
+ status = 0 if 'status' not in attrs else 2 if attrs['status'] == 'unemulated' else 1
+ overall = status if 'overall' not in attrs else 2 if attrs['overall'] == 'unemulated' else 1
+ self.dbcurs.add_feature(self.id, attrs['type'], status, overall)
+ elif name == 'softwarelist':
+ self.dbcurs.add_machinesoftwarelist(self.id, attrs['name'], attrs['tag'], attrs['status'])
+ elif name == 'rom':
+ crc = attrs.get('crc')
+ sha1 = attrs.get('sha1')
+ if (crc is not None) and (sha1 is not None):
+ crc = int(crc, 16)
+ sha1 = sha1.lower()
+ self.dbcurs.add_rom(crc, sha1)
+ status = attrs.get('status', 'good')
+ self.dbcurs.add_romdump(self.id, attrs['name'], crc, sha1, status != 'good')
+ elif name == 'disk':
+ sha1 = attrs.get('sha1')
+ if sha1 is not None:
+ sha1 = sha1.lower()
+ self.dbcurs.add_disk(sha1)
+ status = attrs.get('status', 'good')
+ self.dbcurs.add_diskdump(self.id, attrs['name'], sha1, status != 'good')
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+ def endChildHandler(self, name, handler):
+ if name == 'description':
+ self.description = handler.text
+ self.id = self.dbcurs.add_machine(self.shortname, self.description, self.sourcefile, self.isdevice, self.runnable)
+ if self.cloneof is not None:
+ self.dbcurs.add_cloneof(self.id, self.cloneof)
+ if self.romof is not None:
+ self.dbcurs.add_romof(self.id, self.romof)
+ elif name == 'year':
+ self.year = handler.text
+ elif name == 'manufacturer':
+ self.manufacturer = handler.text
+ self.dbcurs.add_system(self.id, self.year, self.manufacturer)
+
+
+class ListXmlHandler(ElementHandler):
+ def __init__(self, dbconn, **kwargs):
+ super(ListXmlHandler, self).__init__(parent=None, **kwargs)
+ self.dbconn = dbconn
+
+ def startDocument(self):
+ pass
+
+ def endDocument(self):
+ pass
+
+ def startMainElement(self, name, attrs):
+ if name != 'mame':
+ raise xml.sax.SAXParseException(
+ msg=('Expected "mame" element but found "%s"' % (name, )),
+ exception=None,
+ locator=self.locator)
+ self.machines = 0
+
+ def endMainElement(self, name):
+ self.dbconn.commit()
+
+ def startChildElement(self, name, attrs):
+ if name != 'machine':
+ raise xml.sax.SAXParseException(
+ msg=('Expected "machine" element but found "%s"' % (name, )),
+ exception=None,
+ locator=self.locator)
+ self.setChildHandler(name, attrs, MachineHandler(self))
+
+ def endChildHandler(self, name, handler):
+ if name == 'machine':
+ if self.machines >= 1023:
+ self.dbconn.commit()
+ self.machines = 0
+ else:
+ self.machines += 1
+
+ def processingInstruction(self, target, data):
+ pass
+
+
+class DataAreaHandler(ElementHandler):
+ def __init__(self, parent, **kwargs):
+ super(DataAreaHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = parent.dbcurs
+ self.part = parent.id
+
+ def startChildElement(self, name, attrs):
+ if name == 'rom':
+ crc = attrs.get('crc')
+ sha1 = attrs.get('sha1')
+ if ('name' in attrs) and (crc is not None) and (sha1 is not None):
+ crc = int(crc, 16)
+ sha1 = sha1.lower()
+ self.dbcurs.add_rom(crc, sha1)
+ status = attrs.get('status', 'good')
+ self.dbcurs.add_softwareromdump(self.part, attrs['name'], crc, sha1, status != 'good')
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+
+class DiskAreaHandler(ElementHandler):
+ def __init__(self, parent, **kwargs):
+ super(DiskAreaHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = parent.dbcurs
+ self.part = parent.id
+
+ def startChildElement(self, name, attrs):
+ if name == 'disk':
+ sha1 = attrs.get('sha1')
+ if sha1 is not None:
+ sha1 = sha1.lower()
+ self.dbcurs.add_disk(sha1)
+ status = attrs.get('status', 'good')
+ self.dbcurs.add_softwarediskdump(self.part, attrs['name'], sha1, status != 'good')
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+
+class SoftwarePartHandler(ElementHandler):
+ CHILD_HANDLERS = {
+ 'dataarea': DataAreaHandler,
+ 'diskarea': DiskAreaHandler }
+
+ def __init__(self, parent, **kwargs):
+ super(SoftwarePartHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = parent.dbcurs
+ self.software = parent.id
+
+ def startMainElement(self, name, attrs):
+ self.id = self.dbcurs.add_softwarepart(self.software, attrs['name'], attrs['interface'])
+
+ def startChildElement(self, name, attrs):
+ if name in self.CHILD_HANDLERS:
+ self.setChildHandler(name, attrs, self.CHILD_HANDLERS[name](self))
+ else:
+ if name == 'feature':
+ self.dbcurs.add_softwarepartfeaturetype(attrs['name'])
+ self.dbcurs.add_softwarepartfeature(self.id, attrs['name'], attrs['value'])
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+
+class SoftwareHandler(ElementHandler):
+ CHILD_HANDLERS = {
+ 'description': TextAccumulator,
+ 'year': TextAccumulator,
+ 'publisher': TextAccumulator,
+ 'notes': TextAccumulator,
+ 'part': SoftwarePartHandler }
+
+ def __init__(self, parent, **kwargs):
+ super(SoftwareHandler, self).__init__(parent=parent, **kwargs)
+ self.dbcurs = self.dbconn.cursor()
+ self.softwarelist = parent.id
+
+ def startMainElement(self, name, attrs):
+ self.shortname = attrs['name']
+ self.cloneof = attrs.get('cloneof')
+ self.supported = 0 if (attrs.get('supported', 'yes') == 'yes') else 1 if (attrs.get('supported', 'yes') == 'partial') else 2
+
+ def endMainElement(self, name):
+ self.dbcurs.close()
+
+ def startChildElement(self, name, attrs):
+ if name in self.CHILD_HANDLERS:
+ self.setChildHandler(name, attrs, self.CHILD_HANDLERS[name](self))
+ else:
+ if name == 'info':
+ self.dbcurs.add_softwareinfotype(attrs['name'])
+ self.dbcurs.add_softwareinfo(self.id, attrs['name'], attrs['value'])
+ elif name == 'sharedfeat':
+ self.dbcurs.add_softwaresharedfeattype(attrs['name'])
+ self.dbcurs.add_softwaresharedfeat(self.id, attrs['name'], attrs['value'])
+ self.setChildHandler(name, attrs, self.IGNORE)
+
+ def endChildHandler(self, name, handler):
+ if name == 'description':
+ self.description = handler.text
+ elif name == 'year':
+ self.year = handler.text
+ elif name == 'publisher':
+ self.publisher = handler.text
+ self.id = self.dbcurs.add_software(self.softwarelist, self.shortname, self.supported, self.description, self.year, self.publisher)
+ if self.cloneof is not None:
+ self.dbcurs.add_softwarecloneof(self.id, self.cloneof)
+ elif name == 'notes':
+ self.dbcurs.add_softwarenotes(self.id, handler.text)
+
+
+class SoftwareListHandler(ElementHandler):
+ CHILD_HANDLERS = {
+ 'notes': TextAccumulator,
+ 'software': SoftwareHandler }
+
+ def __init__(self, dbconn, **kwargs):
+ super(SoftwareListHandler, self).__init__(parent=None, **kwargs)
+ self.dbconn = dbconn
+
+ def startDocument(self):
+ pass
+
+ def endDocument(self):
+ pass
+
+ def startMainElement(self, name, attrs):
+ if name != 'softwarelist':
+ raise xml.sax.SAXParseException(
+ msg=('Expected "softwarelist" element but found "%s"' % (name, )),
+ exception=None,
+ locator=self.locator)
+ self.shortname = attrs['name']
+ self.description = attrs['description']
+ self.entries = 0
+ dbcurs = self.dbconn.cursor()
+ self.id = dbcurs.add_softwarelist(self.shortname, self.description)
+ dbcurs.close()
+
+ def endMainElement(self, name):
+ self.dbconn.commit()
+
+ def startChildElement(self, name, attrs):
+ if name in self.CHILD_HANDLERS:
+ self.setChildHandler(name, attrs, self.CHILD_HANDLERS[name](self))
+ else:
+ raise xml.sax.SAXParseException(
+ msg=('Found unexpected element "%s"' % (name, )),
+ exception=None,
+ locator=self.locator)
+
+ def endChildHandler(self, name, handler):
+ if name == 'notes':
+ dbcurs = self.dbconn.cursor()
+ dbcurs.add_softwarelistnotes(self.id, handler.text)
+ dbcurs.close()
+ elif name == 'software':
+ if self.entries >= 1023:
+ self.dbconn.commit()
+ self.entries = 0
+ else:
+ self.entries += 1
+
+ def processingInstruction(self, target, data):
+ pass
+
+
+def load_info(options):
+ dbconn = dbaccess.UpdateConnection(options.database)
+ dbconn.prepare_for_load()
+ parser = xml.sax.make_parser()
+
+ parser.setContentHandler(SoftwareListHandler(dbconn))
+ for path in options.softwarepath:
+ files = [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.xml')]
+ for filename in files:
+ parser.parse(filename)
+
+ parser.setContentHandler(ListXmlHandler(dbconn))
+ if options.executable is not None:
+ task = subprocess.Popen([options.executable, '-listxml'], stdout=subprocess.PIPE)
+ parser.parse(task.stdout)
+ else:
+ parser.parse(options.file)
+
+ dbconn.finalise_load()
diff --git a/docs/release/scripts/minimaws/lib/wsgiserve.py b/docs/release/scripts/minimaws/lib/wsgiserve.py
new file mode 100644
index 00000000000..1158528d954
--- /dev/null
+++ b/docs/release/scripts/minimaws/lib/wsgiserve.py
@@ -0,0 +1,998 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+from . import dbaccess
+from . import htmltmpl
+
+import cgi
+import inspect
+import json
+import mimetypes
+import os.path
+import re
+import sys
+import urllib
+import wsgiref.util
+
+if hasattr(cgi, 'escape'):
+ htmlescape = cgi.escape
+else:
+ import html
+ htmlescape = html.escape
+
+try:
+ import urllib.parse as urlparse
+ urlquote = urlparse.quote
+except ImportError:
+ import urlparse
+ urlquote = urllib.quote
+
+
+class HandlerBase(object):
+ STATUS_MESSAGE = {
+ 400: 'Bad Request',
+ 401: 'Unauthorized',
+ 403: 'Forbidden',
+ 404: 'Not Found',
+ 405: 'Method Not Allowed',
+ 500: 'Internal Server Error',
+ 501: 'Not Implemented',
+ 502: 'Bad Gateway',
+ 503: 'Service Unavailable',
+ 504: 'Gateway Timeout',
+ 505: 'HTTP Version Not Supported' }
+
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(HandlerBase, self).__init__(**kwargs)
+ self.app = app
+ self.js_escape = app.js_escape
+ self.application_uri = application_uri
+ self.environ = environ
+ self.start_response = start_response
+
+ def error_page(self, code):
+ yield htmltmpl.ERROR_PAGE.substitute(code=htmlescape('%d' % (code, )), message=htmlescape(self.STATUS_MESSAGE[code])).encode('utf-8')
+
+
+class ErrorPageHandler(HandlerBase):
+ def __init__(self, code, app, application_uri, environ, start_response, **kwargs):
+ super(ErrorPageHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.code = code
+ self.start_response('%d %s' % (self.code, self.STATUS_MESSAGE[code]), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+
+ def __iter__(self):
+ return self.error_page(self.code)
+
+
+class AssetHandler(HandlerBase):
+ EXTENSIONMAP = { '.js': 'application/javascript', '.svg': 'image/svg+xml' }
+
+ def __init__(self, directory, app, application_uri, environ, start_response, **kwargs):
+ super(AssetHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.directory = directory
+ self.asset = wsgiref.util.shift_path_info(environ)
+
+ def __iter__(self):
+ if not self.asset:
+ self.start_response('403 %s' % (self.STATUS_MESSAGE[403], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(403)
+ elif self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ else:
+ path = os.path.join(self.directory, self.asset)
+ if not os.path.isfile(path):
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ try:
+ f = open(path, 'rb')
+ base, extension = os.path.splitext(path)
+ mimetype = self.EXTENSIONMAP.get(extension)
+ if mimetype is None:
+ mimetype, encoding = mimetypes.guess_type(path)
+ self.start_response('200 OK', [('Content-type', mimetype or 'application/octet-stream'), ('Cache-Control', 'public, max-age=3600')])
+ return wsgiref.util.FileWrapper(f)
+ except:
+ self.start_response('500 %s' % (self.STATUS_MESSAGE[500], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(500)
+
+
+class QueryPageHandler(HandlerBase):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(QueryPageHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.dbcurs = app.dbconn.cursor()
+
+ def machine_href(self, shortname):
+ return htmlescape(urlparse.urljoin(self.application_uri, 'machine/%s' % (urlquote(shortname), )), True)
+
+ def sourcefile_href(self, sourcefile):
+ return htmlescape(urlparse.urljoin(self.application_uri, 'sourcefile/%s' % (urlquote(sourcefile), )), True)
+
+ def softwarelist_href(self, softwarelist):
+ return htmlescape(urlparse.urljoin(self.application_uri, 'softwarelist/%s' % (urlquote(softwarelist), )), True)
+
+ def software_href(self, softwarelist, software):
+ return htmlescape(urlparse.urljoin(self.application_uri, 'softwarelist/%s/%s' % (urlquote(softwarelist), urlquote(software))), True)
+
+ def bios_data(self, machine):
+ result = { }
+ for name, description, isdefault in self.dbcurs.get_biossets(machine):
+ result[name] = { 'description': description, 'isdefault': True if isdefault else False }
+ return result
+
+ def flags_data(self, machine):
+ result = { 'features': { } }
+ for feature, status, overall in self.dbcurs.get_feature_flags(machine):
+ detail = { }
+ if status == 1:
+ detail['status'] = 'imperfect'
+ elif status > 1:
+ detail['status'] = 'unemulated'
+ if overall == 1:
+ detail['overall'] = 'imperfect'
+ elif overall > 1:
+ detail['overall'] = 'unemulated'
+ result['features'][feature] = detail
+ return result
+
+ def slot_data(self, machine):
+ result = { 'defaults': { }, 'slots': { } }
+
+ # get slot options
+ prev = None
+ for slot, option, shortname, description in self.dbcurs.get_slot_options(machine):
+ if slot != prev:
+ if slot in result['slots']:
+ options = result['slots'][slot]
+ else:
+ options = { }
+ result['slots'][slot] = options
+ prev = slot
+ options[option] = { 'device': shortname, 'description': description }
+
+ # if there are any slots, get defaults
+ if result['slots']:
+ for slot, default in self.dbcurs.get_slot_defaults(machine):
+ result['defaults'][slot] = default
+
+ # remove slots that come from default cards in other slots
+ for slot in tuple(result['slots'].keys()):
+ slot += ':'
+ for candidate in tuple(result['slots'].keys()):
+ if candidate.startswith(slot):
+ del result['slots'][candidate]
+
+ return result
+
+ def softwarelist_data(self, machine):
+ result = { }
+
+ # get software lists referenced by machine
+ for softwarelist in self.dbcurs.get_machine_softwarelists(machine):
+ result[softwarelist['tag']] = {
+ 'status': softwarelist['status'],
+ 'shortname': softwarelist['shortname'],
+ 'description': softwarelist['description'],
+ 'total': softwarelist['total'],
+ 'supported': softwarelist['supported'],
+ 'partiallysupported': softwarelist['partiallysupported'],
+ 'unsupported': softwarelist['unsupported'] }
+
+ # remove software lists that come from default cards in slots
+ if result:
+ for slot, default in self.dbcurs.get_slot_defaults(machine):
+ slot += ':'
+ for candidate in tuple(result.keys()):
+ if candidate.startswith(slot):
+ del result[candidate]
+
+ return result
+
+
+class MachineRpcHandlerBase(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(MachineRpcHandlerBase, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.shortname = wsgiref.util.shift_path_info(environ)
+
+ def __iter__(self):
+ if not self.shortname:
+ self.start_response('403 %s' % (self.STATUS_MESSAGE[403], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(403)
+ elif self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ else:
+ machine = self.dbcurs.get_machine_id(self.shortname)
+ if machine is None:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'application/json; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.data_page(machine)
+
+
+class MachineHandler(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(MachineHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.shortname = wsgiref.util.shift_path_info(environ)
+
+ def __iter__(self):
+ if not self.shortname:
+ # could probably list machines here or something
+ self.start_response('403 %s' % (self.STATUS_MESSAGE[403], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(403)
+ elif self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ else:
+ machine_info = self.dbcurs.get_machine_details(self.shortname).fetchone()
+ if not machine_info:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.machine_page(machine_info)
+
+ def machine_page(self, machine_info):
+ id = machine_info['id']
+ description = machine_info['description']
+ yield htmltmpl.MACHINE_PROLOGUE.substitute(
+ app=self.js_escape(htmlescape(self.application_uri, True)),
+ assets=self.js_escape(htmlescape(urlparse.urljoin(self.application_uri, 'static'), True)),
+ sourcehref=self.sourcefile_href(machine_info['sourcefile']),
+ description=htmlescape(description),
+ shortname=htmlescape(self.shortname),
+ isdevice=htmlescape('Yes' if machine_info['isdevice'] else 'No'),
+ runnable=htmlescape('Yes' if machine_info['runnable'] else 'No'),
+ sourcefile=htmlescape(machine_info['sourcefile'])).encode('utf-8')
+ if machine_info['year'] is not None:
+ yield (
+ ' <tr><th>Year:</th><td>%s</td></tr>\n' \
+ ' <tr><th>Manufacturer:</th><td>%s</td></tr>\n' %
+ (htmlescape(machine_info['year']), htmlescape(machine_info['Manufacturer']))).encode('utf-8')
+ if machine_info['cloneof'] is not None:
+ parent = self.dbcurs.listfull(machine_info['cloneof']).fetchone()
+ if parent:
+ yield (
+ ' <tr><th>Parent machine:</th><td><a href="%s">%s (%s)</a></td></tr>\n' %
+ (self.machine_href(machine_info['cloneof']), htmlescape(parent[1]), htmlescape(machine_info['cloneof']))).encode('utf-8')
+ else:
+ yield (
+ ' <tr><th>Parent machine:</th><td><a href="%s">%s</a></td></tr>\n' %
+ (self.machine_href(machine_info['cloneof']), htmlescape(machine_info['cloneof']))).encode('utf-8')
+ if (machine_info['romof'] is not None) and (machine_info['romof'] != machine_info['cloneof']):
+ parent = self.dbcurs.listfull(machine_info['romof']).fetchone()
+ if parent:
+ yield (
+ ' <tr><th>Parent ROM set:</th><td><a href="%s">%s (%s)</a></td></tr>\n' %
+ (self.machine_href(machine_info['romof']), htmlescape(parent[1]), htmlescape(machine_info['romof']))).encode('utf-8')
+ else:
+ yield (
+ ' <tr><th>Parent ROM set:</th><td><a href="%s">%s</a></td></tr>\n' %
+ (self.machine_href(machine_info['romof']), htmlescape(machine_info['romof']))).encode('utf-8')
+ unemulated = []
+ imperfect = []
+ for feature, status, overall in self.dbcurs.get_feature_flags(id):
+ if overall == 1:
+ imperfect.append(feature)
+ elif overall > 1:
+ unemulated.append(feature)
+ if (unemulated):
+ unemulated.sort()
+ yield(
+ (' <tr><th>Unemulated Features:</th><td>%s' + (', %s' * (len(unemulated) - 1)) + '</td></tr>\n') %
+ tuple(unemulated)).encode('utf-8');
+ if (imperfect):
+ yield(
+ (' <tr><th>Imperfect Features:</th><td>%s' + (', %s' * (len(imperfect) - 1)) + '</td></tr>\n') %
+ tuple(imperfect)).encode('utf-8');
+ yield '</table>\n'.encode('utf-8')
+
+ # make a table of clones
+ first = True
+ for clone, clonedescription, cloneyear, clonemanufacturer in self.dbcurs.get_clones(self.shortname):
+ if first:
+ yield htmltmpl.MACHINE_CLONES_PROLOGUE.substitute().encode('utf-8')
+ first = False
+ yield htmltmpl.MACHINE_CLONES_ROW.substitute(
+ href=self.machine_href(clone),
+ shortname=htmlescape(clone),
+ description=htmlescape(clonedescription),
+ year=htmlescape(cloneyear or ''),
+ manufacturer=htmlescape(clonemanufacturer or '')).encode('utf-8')
+ if not first:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-clones').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-clones"), document.getElementById("tbl-clones"));</script>\n'.encode('utf-8')
+
+ # make a table of software lists
+ yield htmltmpl.MACHINE_SOFTWARELISTS_TABLE_PROLOGUE.substitute().encode('utf-8')
+ for softwarelist in self.dbcurs.get_machine_softwarelists(id):
+ total = softwarelist['total']
+ yield htmltmpl.MACHINE_SOFTWARELISTS_TABLE_ROW.substitute(
+ rowid=htmlescape(softwarelist['tag'].replace(':', '-'), True),
+ href=self.softwarelist_href(softwarelist['shortname']),
+ shortname=htmlescape(softwarelist['shortname']),
+ description=htmlescape(softwarelist['description']),
+ status=htmlescape(softwarelist['status']),
+ total=htmlescape('%d' % (total, )),
+ supported=htmlescape('%.1f%%' % (softwarelist['supported'] * 100.0 / (total or 1), )),
+ partiallysupported=htmlescape('%.1f%%' % (softwarelist['partiallysupported'] * 100.0 / (total or 1), )),
+ unsupported=htmlescape('%.1f%%' % (softwarelist['unsupported'] * 100.0 / (total or 1), ))).encode('utf-8')
+ yield htmltmpl.MACHINE_SOFTWARELISTS_TABLE_EPILOGUE.substitute().encode('utf-8')
+
+ # allow system BIOS selection
+ haveoptions = False
+ for name, desc, isdef in self.dbcurs.get_biossets(id):
+ if not haveoptions:
+ haveoptions = True;
+ yield htmltmpl.MACHINE_OPTIONS_HEADING.substitute().encode('utf-8')
+ yield htmltmpl.MACHINE_BIOS_PROLOGUE.substitute().encode('utf-8')
+ yield htmltmpl.MACHINE_BIOS_OPTION.substitute(
+ name=htmlescape(name, True),
+ description=htmlescape(desc),
+ isdefault=('yes' if isdef else 'no')).encode('utf-8')
+ if haveoptions:
+ yield '</select>\n<script>set_default_system_bios();</script>\n'.encode('utf-8')
+
+ # allow RAM size selection
+ first = True
+ for name, size, isdef in self.dbcurs.get_ram_options(id):
+ if first:
+ if not haveoptions:
+ haveoptions = True;
+ yield htmltmpl.MACHINE_OPTIONS_HEADING.substitute().encode('utf-8')
+ yield htmltmpl.MACHINE_RAM_PROLOGUE.substitute().encode('utf-8')
+ first = False
+ yield htmltmpl.MACHINE_RAM_OPTION.substitute(
+ name=htmlescape(name, True),
+ size=htmlescape('{:,}'.format(size)),
+ isdefault=('yes' if isdef else 'no')).encode('utf-8')
+ if not first:
+ yield ' </select>\n <script>set_default_ram_option();</script>\n'.encode('utf-8')
+
+ # placeholder for machine slots - populated by client-side JavaScript
+ if self.dbcurs.count_slots(id):
+ if not haveoptions:
+ haveoptions = True
+ yield htmltmpl.MACHINE_OPTIONS_HEADING.substitute().encode('utf-8')
+ yield htmltmpl.MACHINE_SLOTS_PLACEHOLDER_PROLOGUE.substitute().encode('utf=8')
+ pending = set((self.shortname, ))
+ added = set((self.shortname, ))
+ haveextra = set()
+ while pending:
+ requested = pending.pop()
+ slots = self.slot_data(self.dbcurs.get_machine_id(requested))
+ yield (' slot_info[%s] = %s;\n' % (self.sanitised_json(requested), self.sanitised_json(slots))).encode('utf-8')
+ for slotname, slot in slots['slots'].items():
+ for choice, card in slot.items():
+ carddev = card['device']
+ if carddev not in added:
+ pending.add(carddev)
+ added.add(carddev)
+ if (carddev not in haveextra) and (slots['defaults'].get(slotname) == choice):
+ haveextra.add(carddev)
+ cardid = self.dbcurs.get_machine_id(carddev)
+ carddev = self.sanitised_json(carddev)
+ yield (
+ ' bios_sets[%s] = %s;\n machine_flags[%s] = %s;\n softwarelist_info[%s] = %s;\n' %
+ (carddev, self.sanitised_json(self.bios_data(cardid)), carddev, self.sanitised_json(self.flags_data(cardid)), carddev, self.sanitised_json(self.softwarelist_data(cardid)))).encode('utf-8')
+ yield htmltmpl.MACHINE_SLOTS_PLACEHOLDER_EPILOGUE.substitute(
+ machine=self.sanitised_json(self.shortname)).encode('utf=8')
+
+ # add disclosure triangle for options if present
+ if haveoptions:
+ yield htmltmpl.MACHINE_OPTIONS_EPILOGUE.substitute().encode('utf=8')
+
+ # list devices referenced by this system/device
+ first = True
+ for name, desc, src in self.dbcurs.get_devices_referenced(id):
+ if first:
+ yield \
+ '<h2 id="heading-dev-refs">Devices Referenced</h2>\n' \
+ '<table id="tbl-dev-refs">\n' \
+ ' <thead>\n' \
+ ' <tr><th>Short name</th><th>Description</th><th>Source file</th></tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n'.encode('utf-8')
+ first = False
+ yield self.machine_row(name, desc, src)
+ if not first:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-dev-refs').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-dev-refs"), document.getElementById("tbl-dev-refs"));</script>\n'.encode('utf-8')
+
+ # list slots where this device is an option
+ first = True
+ for name, desc, slot, opt, src in self.dbcurs.get_compatible_slots(id):
+ if (first):
+ yield \
+ '<h2 id="heading-comp-slots">Compatible Slots</h2>\n' \
+ '<table id="tbl-comp-slots">\n' \
+ ' <thead>\n' \
+ ' <tr><th>Short name</th><th>Description</th><th>Slot</th><th>Choice</th><th>Source file</th></tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n'.encode('utf-8')
+ first = False
+ yield htmltmpl.COMPATIBLE_SLOT_ROW.substitute(
+ machinehref=self.machine_href(name),
+ sourcehref=self.sourcefile_href(src),
+ shortname=htmlescape(name),
+ description=htmlescape(desc),
+ sourcefile=htmlescape(src),
+ slot=htmlescape(slot),
+ slotoption=htmlescape(opt)).encode('utf-8')
+ if not first:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-comp-slots').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-comp-slots"), document.getElementById("tbl-comp-slots"));</script>\n'.encode('utf-8')
+
+ # list systems/devices that reference this device
+ first = True
+ for name, desc, src in self.dbcurs.get_device_references(id):
+ if first:
+ yield \
+ '<h2 id="heading-ref-by">Referenced By</h2>\n' \
+ '<table id="tbl-ref-by">\n' \
+ ' <thead>\n' \
+ ' <tr><th>Short name</th><th>Description</th><th>Source file</th></tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n'.encode('utf-8')
+ first = False
+ yield self.machine_row(name, desc, src)
+ if not first:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-ref-by').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-ref-by"), document.getElementById("tbl-ref-by"));</script>\n'.encode('utf-8')
+
+ yield '</html>\n'.encode('utf-8')
+
+ def machine_row(self, shortname, description, sourcefile):
+ return (htmltmpl.MACHINE_ROW if description is not None else htmltmpl.EXCL_MACHINE_ROW).substitute(
+ machinehref=self.machine_href(shortname),
+ sourcehref=self.sourcefile_href(sourcefile),
+ shortname=htmlescape(shortname),
+ description=htmlescape(description or ''),
+ sourcefile=htmlescape(sourcefile or '')).encode('utf-8')
+
+ @staticmethod
+ def sanitised_json(data):
+ return json.dumps(data).replace('<', '\\u003c').replace('>', '\\u003e')
+
+
+class SourceFileHandler(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(SourceFileHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+
+ def __iter__(self):
+ self.filename = self.environ['PATH_INFO']
+ if self.filename and (self.filename[0] == '/'):
+ self.filename = self.filename[1:]
+ if not self.filename:
+ if self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.sourcefile_listing_page(None)
+ else:
+ id = self.dbcurs.get_sourcefile_id(self.filename)
+ if id is None:
+ if ('*' not in self.filename) and ('?' not in self.filename) and ('?' not in self.filename):
+ self.filename += '*' if self.filename[-1] == '/' else '/*'
+ if not self.dbcurs.count_sourcefiles(self.filename):
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.sourcefile_listing_page(self.filename)
+ else:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.sourcefile_page(id)
+
+ def sourcefile_listing_page(self, pattern):
+ if not pattern:
+ title = heading = 'All Source Files'
+ else:
+ heading = self.linked_title(pattern)
+ title = 'Source Files: ' + htmlescape(pattern)
+ yield htmltmpl.SOURCEFILE_LIST_PROLOGUE.substitute(
+ assets=htmlescape(urlparse.urljoin(self.application_uri, 'static'), True),
+ title=title,
+ heading=heading).encode('utf-8')
+ for filename, machines in self.dbcurs.get_sourcefiles(pattern):
+ yield htmltmpl.SOURCEFILE_LIST_ROW.substitute(
+ sourcefile=self.linked_title(filename, True),
+ machines=htmlescape('%d' % (machines, ))).encode('utf-8')
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-sourcefiles').encode('utf-8')
+
+ def sourcefile_page(self, id):
+ yield htmltmpl.SOURCEFILE_PROLOGUE.substitute(
+ assets=htmlescape(urlparse.urljoin(self.application_uri, 'static'), True),
+ filename=htmlescape(self.filename),
+ title=self.linked_title(self.filename)).encode('utf-8')
+
+ first = True
+ for machine_info in self.dbcurs.get_sourcefile_machines(id):
+ if first:
+ yield \
+ '<table id="tbl-machines">\n' \
+ ' <thead>\n' \
+ ' <tr>\n' \
+ ' <th>Short name</th>\n' \
+ ' <th>Description</th>\n' \
+ ' <th>Year</th>\n' \
+ ' <th>Manufacturer</th>\n' \
+ ' <th>Runnable</th>\n' \
+ ' <th>Parent</th>\n' \
+ ' </tr>\n' \
+ ' </thead>\n' \
+ ' <tbody>\n'.encode('utf-8')
+ first = False
+ yield self.machine_row(machine_info)
+ if first:
+ yield '<p>No machines found.</p>\n'.encode('utf-8')
+ else:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-machines').encode('utf-8')
+
+ yield '</body>\n</html>\n'.encode('utf-8')
+
+ def linked_title(self, filename, linkfinal=False):
+ parts = filename.split('/')
+ final = parts[-1]
+ del parts[-1]
+ uri = urlparse.urljoin(self.application_uri, 'sourcefile')
+ title = ''
+ for part in parts:
+ uri = urlparse.urljoin(uri + '/', urlquote(part))
+ title += '<a href="{0}">{1}</a>/'.format(htmlescape(uri, True), htmlescape(part))
+ if linkfinal:
+ uri = urlparse.urljoin(uri + '/', urlquote(final))
+ return title + '<a href="{0}">{1}</a>'.format(htmlescape(uri, True), htmlescape(final))
+ else:
+ return title + final
+
+ def machine_row(self, machine_info):
+ return (htmltmpl.SOURCEFILE_ROW_PARENT if machine_info['cloneof'] is None else htmltmpl.SOURCEFILE_ROW_CLONE).substitute(
+ machinehref=self.machine_href(machine_info['shortname']),
+ parenthref=self.machine_href(machine_info['cloneof'] or '__invalid'),
+ shortname=htmlescape(machine_info['shortname']),
+ description=htmlescape(machine_info['description']),
+ year=htmlescape(machine_info['year'] or ''),
+ manufacturer=htmlescape(machine_info['manufacturer'] or ''),
+ runnable=htmlescape('Yes' if machine_info['runnable'] else 'No'),
+ parent=htmlescape(machine_info['cloneof'] or '')).encode('utf-8')
+
+
+class SoftwareListHandler(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(SoftwareListHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.shortname = wsgiref.util.shift_path_info(environ)
+ self.software = wsgiref.util.shift_path_info(environ)
+
+ def __iter__(self):
+ if self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.software and ('*' not in self.software) and ('?' not in self.software):
+ software_info = self.dbcurs.get_software_details(self.shortname, self.software).fetchone()
+ if not software_info:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.software_page(software_info)
+ elif self.software or (self.shortname and ('*' not in self.shortname) and ('?' not in self.shortname)):
+ softwarelist_info = self.dbcurs.get_softwarelist_details(self.shortname, self.software or None).fetchone()
+ if not softwarelist_info:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.softwarelist_page(softwarelist_info, self.software or None)
+ else:
+ if self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.softwarelist_listing_page(self.shortname or None)
+
+ def softwarelist_listing_page(self, pattern):
+ if not pattern:
+ title = heading = 'All Software Lists'
+ else:
+ title = heading = 'Software Lists: ' + htmlescape(pattern)
+ yield htmltmpl.SOFTWARELIST_LIST_PROLOGUE.substitute(
+ assets=htmlescape(urlparse.urljoin(self.application_uri, 'static'), True),
+ title=title,
+ heading=heading).encode('utf-8')
+ for shortname, description, total, supported, partiallysupported, unsupported in self.dbcurs.get_softwarelists(pattern):
+ yield htmltmpl.SOFTWARELIST_LIST_ROW.substitute(
+ href=self.softwarelist_href(shortname),
+ shortname=htmlescape(shortname),
+ description=htmlescape(description),
+ total=htmlescape('%d' % (total, )),
+ supported=htmlescape('%.1f%%' % (supported * 100.0 / (total or 1), )),
+ partiallysupported=htmlescape('%.1f%%' % (partiallysupported * 100.0 / (total or 1), )),
+ unsupported=htmlescape('%.1f%%' % (unsupported * 100.0 / (total or 1), ))).encode('utf-8')
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-softwarelists').encode('utf-8')
+
+ def softwarelist_page(self, softwarelist_info, pattern):
+ if not pattern:
+ title = 'Software List: %s (%s)' % (htmlescape(softwarelist_info['description']), htmlescape(softwarelist_info['shortname']))
+ heading = htmlescape(softwarelist_info['description'])
+ else:
+ title = 'Software List: %s (%s): %s' % (htmlescape(softwarelist_info['description']), htmlescape(softwarelist_info['shortname']), htmlescape(pattern))
+ heading = '<a href="%s">%s</a>: %s' % (self.softwarelist_href(softwarelist_info['shortname']), htmlescape(softwarelist_info['description']), htmlescape(pattern))
+ yield htmltmpl.SOFTWARELIST_PROLOGUE.substitute(
+ assets=htmlescape(urlparse.urljoin(self.application_uri, 'static'), True),
+ title=title,
+ heading=heading,
+ shortname=htmlescape(softwarelist_info['shortname']),
+ total=htmlescape('%d' % (softwarelist_info['total'], )),
+ supported=htmlescape('%d' % (softwarelist_info['supported'], )),
+ supportedpc=htmlescape('%.1f' % (softwarelist_info['supported'] * 100.0 / (softwarelist_info['total'] or 1), )),
+ partiallysupported=htmlescape('%d' % (softwarelist_info['partiallysupported'], )),
+ partiallysupportedpc=htmlescape('%.1f' % (softwarelist_info['partiallysupported'] * 100.0 / (softwarelist_info['total'] or 1), )),
+ unsupported=htmlescape('%d' % (softwarelist_info['unsupported'], )),
+ unsupportedpc=htmlescape('%.1f' % (softwarelist_info['unsupported'] * 100.0 / (softwarelist_info['total'] or 1), ))).encode('utf-8')
+
+ if softwarelist_info['notes'] is not None:
+ yield htmltmpl.SOFTWARELIST_NOTES_PROLOGUE.substitute().encode('utf-8')
+ first = True
+ for line in softwarelist_info['notes'].strip().splitlines():
+ if line:
+ yield (('<p>%s' if first else '<br />\n%s') % (htmlescape(line), )).encode('utf-8')
+ first = False
+ elif not first:
+ yield '</p>\n'.encode('utf-8')
+ first = True
+ if not first:
+ yield '</p>\n'.encode('utf-8')
+ yield htmltmpl.SOFTWARELIST_NOTES_EPILOGUE.substitute().encode('utf-8')
+
+ first = True
+ for machine_info in self.dbcurs.get_softwarelist_machines(softwarelist_info['id']):
+ if first:
+ yield htmltmpl.SOFTWARELIST_MACHINE_TABLE_HEADER.substitute().encode('utf-8')
+ first = False
+ yield htmltmpl.SOFTWARELIST_MACHINE_TABLE_ROW.substitute(
+ machinehref=self.machine_href(machine_info['shortname']),
+ shortname=htmlescape(machine_info['shortname']),
+ description=htmlescape(machine_info['description']),
+ year=htmlescape(machine_info['year'] or ''),
+ manufacturer=htmlescape(machine_info['manufacturer'] or ''),
+ status=htmlescape(machine_info['status'])).encode('utf-8')
+ if not first:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-machines').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-machines"), document.getElementById("tbl-machines"));</script>\n'.encode('utf-8')
+
+ first = True
+ for software_info in self.dbcurs.get_softwarelist_software(softwarelist_info['id'], self.software or None):
+ if first:
+ yield htmltmpl.SOFTWARELIST_SOFTWARE_TABLE_HEADER.substitute().encode('utf-8')
+ first = False
+ yield self.software_row(software_info)
+ if first:
+ yield '<p>No software found.</p>\n'.encode('utf-8')
+ else:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-software').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-software"), document.getElementById("tbl-software"));</script>\n'.encode('utf-8')
+
+ yield '</body>\n</html>\n'.encode('utf-8')
+
+ def software_page(self, software_info):
+ yield htmltmpl.SOFTWARE_PROLOGUE.substitute(
+ assets=htmlescape(urlparse.urljoin(self.application_uri, 'static'), True),
+ title=htmlescape(software_info['description']),
+ heading=htmlescape(software_info['description']),
+ softwarelisthref=self.softwarelist_href(self.shortname),
+ softwarelistdescription=htmlescape(software_info['softwarelistdescription']),
+ softwarelist=htmlescape(self.shortname),
+ shortname=htmlescape(software_info['shortname']),
+ year=htmlescape(software_info['year']),
+ publisher=htmlescape(software_info['publisher'])).encode('utf-8')
+ if software_info['parent'] is not None:
+ yield (' <tr><th>Parent:</th><td><a href="%s">%s</a></td>\n' % (self.software_href(software_info['parentsoftwarelist'], software_info['parent']), htmlescape(software_info['parentdescription']))).encode('utf-8')
+ yield (' <tr><th>Supported:</th><td>%s</td>\n' % (self.format_supported(software_info['supported']), )).encode('utf-8')
+ for name, value in self.dbcurs.get_software_info(software_info['id']):
+ yield (' <tr><th>%s:</th><td>%s</td>\n' % (htmlescape(name), htmlescape(value))).encode('utf-8')
+ yield '</table>\n\n'.encode('utf-8')
+
+ first = True
+ for clone_info in self.dbcurs.get_software_clones(software_info['id']):
+ if first:
+ yield htmltmpl.SOFTWARE_CLONES_PROLOGUE.substitute().encode('utf-8')
+ first = False
+ yield self.clone_row(clone_info)
+ if not first:
+ yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-clones').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-clones"), document.getElementById("tbl-clones"));</script>\n'.encode('utf-8')
+
+ if software_info['notes'] is not None:
+ yield htmltmpl.SOFTWARE_NOTES_PROLOGUE.substitute().encode('utf-8')
+ first = True
+ for line in software_info['notes'].strip().splitlines():
+ if line:
+ yield (('<p>%s' if first else '<br />\n%s') % (htmlescape(line), )).encode('utf-8')
+ first = False
+ elif not first:
+ yield '</p>\n'.encode('utf-8')
+ first = True
+ if not first:
+ yield '</p>\n'.encode('utf-8')
+ yield htmltmpl.SOFTWARE_NOTES_EPILOGUE.substitute().encode('utf-8')
+
+ parts = self.dbcurs.get_software_parts(software_info['id']).fetchall()
+ first = True
+ for id, partname, interface, part_id in parts:
+ if first:
+ yield htmltmpl.SOFTWARE_PARTS_PROLOGUE.substitute().encode('utf-8')
+ first = False
+ yield htmltmpl.SOFTWARE_PART_PROLOGUE.substitute(
+ heading=htmlescape(('%s (%s)' % (part_id, partname)) if part_id is not None else partname),
+ shortname=htmlescape(partname),
+ interface=htmlescape(interface)).encode('utf-8')
+ for name, value in self.dbcurs.get_softwarepart_features(id):
+ yield (' <tr><th>%s:</th><td>%s</td>\n' % (htmlescape(name), htmlescape(value))).encode('utf-8')
+ yield ' </table>\n\n'.encode('utf-8')
+ if not first:
+ yield htmltmpl.SOFTWARE_PARTS_EPILOGUE.substitute().encode('utf-8')
+
+ yield '</body>\n</html>\n'.encode('utf-8')
+
+ def software_row(self, software_info):
+ parent = software_info['parent']
+ return htmltmpl.SOFTWARELIST_SOFTWARE_ROW.substitute(
+ softwarehref=self.software_href(self.shortname, software_info['shortname']),
+ shortname=htmlescape(software_info['shortname']),
+ description=htmlescape(software_info['description']),
+ year=htmlescape(software_info['year']),
+ publisher=htmlescape(software_info['publisher']),
+ supported=self.format_supported(software_info['supported']),
+ parts=htmlescape('%d' % (software_info['parts'], )),
+ baddumps=htmlescape('%d' % (software_info['baddumps'], )),
+ parent='<a href="%s">%s</a>' % (self.software_href(software_info['parentsoftwarelist'], parent), htmlescape(parent)) if parent is not None else '').encode('utf-8')
+
+ def clone_row(self, clone_info):
+ return htmltmpl.SOFTWARE_CLONES_ROW.substitute(
+ href=self.software_href(clone_info['softwarelist'], clone_info['shortname']),
+ shortname=htmlescape(clone_info['shortname']),
+ description=htmlescape(clone_info['description']),
+ year=htmlescape(clone_info['year']),
+ publisher=htmlescape(clone_info['publisher']),
+ supported=self.format_supported(clone_info['supported'])).encode('utf-8')
+
+ @staticmethod
+ def format_supported(supported):
+ return 'Yes' if supported == 0 else 'Partial' if supported == 1 else 'No'
+
+
+class RomIdentHandler(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(QueryPageHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+ self.dbcurs = app.dbconn.cursor()
+
+ def __iter__(self):
+ if self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ self.start_response('200 OK', [('Content-type', 'text/html; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.form_page()
+
+ def form_page(self):
+ yield htmltmpl.ROMIDENT_PAGE.substitute(
+ app=self.js_escape(htmlescape(self.application_uri, True)),
+ assets=self.js_escape(htmlescape(urlparse.urljoin(self.application_uri, 'static'), True))).encode('utf-8')
+
+
+class BiosRpcHandler(MachineRpcHandlerBase):
+ def data_page(self, machine):
+ result = { }
+ for name, description, isdefault in self.dbcurs.get_biossets(machine):
+ result[name] = { 'description': description, 'isdefault': True if isdefault else False }
+ yield json.dumps(result).encode('utf-8')
+
+
+class FlagsRpcHandler(MachineRpcHandlerBase):
+ def data_page(self, machine):
+ yield json.dumps(self.flags_data(machine)).encode('utf-8')
+
+
+class SlotsRpcHandler(MachineRpcHandlerBase):
+ def data_page(self, machine):
+ yield json.dumps(self.slot_data(machine)).encode('utf-8')
+
+
+class SoftwareListsRpcHandler(MachineRpcHandlerBase):
+ def data_page(self, machine):
+ yield json.dumps(self.softwarelist_data(machine)).encode('utf-8')
+
+
+class RomDumpsRpcHandler(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(RomDumpsRpcHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+
+ def __iter__(self):
+ if self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ try:
+ args = urlparse.parse_qs(self.environ['QUERY_STRING'], keep_blank_values=True, strict_parsing=True)
+ crc = args.get('crc')
+ sha1 = args.get('sha1')
+ if (len(args) == 2) and (crc is not None) and (len(crc) == 1) and (sha1 is not None) and (len(sha1) == 1):
+ crc = int(crc[0], 16)
+ sha1 = sha1[0]
+ self.start_response('200 OK', [('Content-type', 'application/json; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.data_page(crc, sha1)
+ except BaseException as e:
+ pass
+ self.start_response('500 %s' % (self.STATUS_MESSAGE[500], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(500)
+
+ def data_page(self, crc, sha1):
+ machines = { }
+ for shortname, description, label, bad in self.dbcurs.get_rom_dumps(crc, sha1):
+ machine = machines.get(shortname)
+ if machine is None:
+ machine = { 'description': description, 'matches': [ ] }
+ machines[shortname] = machine
+ machine['matches'].append({ 'name': label, 'bad': bool(bad) })
+
+ software = { }
+ for softwarelist, softwarelistdescription, shortname, description, part, part_id, label, bad in self.dbcurs.get_software_rom_dumps(crc, sha1):
+ listinfo = software.get(softwarelist)
+ if listinfo is None:
+ listinfo = { 'description': softwarelistdescription, 'software': { } }
+ software[softwarelist] = listinfo
+ softwareinfo = listinfo['software'].get(shortname)
+ if softwareinfo is None:
+ softwareinfo = { 'description': description, 'parts': { } }
+ listinfo['software'][shortname] = softwareinfo
+ partinfo = softwareinfo['parts'].get(part)
+ if partinfo is None:
+ partinfo = { 'matches': [ ] }
+ if part_id is not None:
+ partinfo['description'] = part_id
+ softwareinfo['parts'][part] = partinfo
+ partinfo['matches'].append({ 'name': label, 'bad': bool(bad) })
+
+ result = { 'machines': machines, 'software': software }
+ yield json.dumps(result).encode('utf-8')
+
+
+class DiskDumpsRpcHandler(QueryPageHandler):
+ def __init__(self, app, application_uri, environ, start_response, **kwargs):
+ super(DiskDumpsRpcHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
+
+ def __iter__(self):
+ if self.environ['PATH_INFO']:
+ self.start_response('404 %s' % (self.STATUS_MESSAGE[404], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(404)
+ elif self.environ['REQUEST_METHOD'] != 'GET':
+ self.start_response('405 %s' % (self.STATUS_MESSAGE[405], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(405)
+ else:
+ try:
+ args = urlparse.parse_qs(self.environ['QUERY_STRING'], keep_blank_values=True, strict_parsing=True)
+ sha1 = args.get('sha1')
+ if (len(args) == 1) and (sha1 is not None) and (len(sha1) == 1):
+ sha1 = sha1[0]
+ self.start_response('200 OK', [('Content-type', 'application/json; chearset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
+ return self.data_page(sha1)
+ except BaseException as e:
+ pass
+ self.start_response('500 %s' % (self.STATUS_MESSAGE[500], ), [('Content-type', 'text/html; charset=utf-8'), ('Accept', 'GET, HEAD, OPTIONS'), ('Cache-Control', 'public, max-age=3600')])
+ return self.error_page(500)
+
+ def data_page(self, sha1):
+ machines = { }
+ for shortname, description, label, bad in self.dbcurs.get_disk_dumps(sha1):
+ machine = machines.get(shortname)
+ if machine is None:
+ machine = { 'description': description, 'matches': [ ] }
+ machines[shortname] = machine
+ machine['matches'].append({ 'name': label, 'bad': bool(bad) })
+
+ software = { }
+ for softwarelist, softwarelistdescription, shortname, description, part, part_id, label, bad in self.dbcurs.get_software_disk_dumps(sha1):
+ listinfo = software.get(softwarelist)
+ if listinfo is None:
+ listinfo = { 'description': softwarelistdescription, 'software': { } }
+ software[softwarelist] = listinfo
+ softwareinfo = listinfo['software'].get(shortname)
+ if softwareinfo is None:
+ softwareinfo = { 'description': description, 'parts': { } }
+ listinfo['software'][shortname] = softwareinfo
+ partinfo = softwareinfo['parts'].get(part)
+ if partinfo is None:
+ partinfo = { 'matches': [ ] }
+ if part_id is not None:
+ partinfo['description'] = part_id
+ softwareinfo['parts'][part] = partinfo
+ partinfo['matches'].append({ 'name': label, 'bad': bool(bad) })
+
+ result = { 'machines': machines, 'software': software }
+ yield json.dumps(result).encode('utf-8')
+
+
+class MiniMawsApp(object):
+ JS_ESCAPE = re.compile('([\"\'\\\\])')
+ RPC_SERVICES = {
+ 'bios': BiosRpcHandler,
+ 'flags': FlagsRpcHandler,
+ 'slots': SlotsRpcHandler,
+ 'softwarelists': SoftwareListsRpcHandler,
+ 'romdumps': RomDumpsRpcHandler,
+ 'diskdumps': DiskDumpsRpcHandler }
+
+ def __init__(self, dbfile, **kwargs):
+ super(MiniMawsApp, self).__init__(**kwargs)
+ self.dbconn = dbaccess.QueryConnection(dbfile)
+ self.assetsdir = os.path.join(os.path.dirname(inspect.getfile(self.__class__)), 'assets')
+ if not mimetypes.inited:
+ mimetypes.init()
+
+ def __call__(self, environ, start_response):
+ application_uri = wsgiref.util.application_uri(environ)
+ if application_uri[-1] != '/':
+ application_uri += '/'
+ module = wsgiref.util.shift_path_info(environ)
+ if module == 'machine':
+ return MachineHandler(self, application_uri, environ, start_response)
+ elif module == 'sourcefile':
+ return SourceFileHandler(self, application_uri, environ, start_response)
+ elif module == 'softwarelist':
+ return SoftwareListHandler(self, application_uri, environ, start_response)
+ elif module == 'romident':
+ return RomIdentHandler(self, application_uri, environ, start_response)
+ elif module == 'static':
+ return AssetHandler(self.assetsdir, self, application_uri, environ, start_response)
+ elif module == 'rpc':
+ service = wsgiref.util.shift_path_info(environ)
+ if not service:
+ return ErrorPageHandler(403, self, application_uri, environ, start_response)
+ elif service in self.RPC_SERVICES:
+ return self.RPC_SERVICES[service](self, application_uri, environ, start_response)
+ else:
+ return ErrorPageHandler(404, self, application_uri, environ, start_response)
+ elif not module:
+ return ErrorPageHandler(403, self, application_uri, environ, start_response)
+ else:
+ return ErrorPageHandler(404, self, application_uri, environ, start_response)
+
+ def js_escape(self, str):
+ return self.JS_ESCAPE.sub('\\\\\\1', str).replace('\0', '\\0')
diff --git a/docs/release/scripts/minimaws/minimaws.py b/docs/release/scripts/minimaws/minimaws.py
new file mode 100644
index 00000000000..25f74eb8c68
--- /dev/null
+++ b/docs/release/scripts/minimaws/minimaws.py
@@ -0,0 +1,142 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+##
+## Demonstrates use of MAME's XML system information output
+##
+## This script requires Python 2.7 or Python 3.4, and SQLite 3.6.19 at
+## the very least. Help is provided for all command-line options (use
+## -h or --help).
+##
+## Before you can use the scripts, you need to load MAME system
+## information into a database:
+##
+## $ python minimaws.py load --executable path/to/mame
+##
+## (The script uses the name "minimaws.sqlite3" for the database by
+## default, but you can override this with the --database option.)
+##
+## After you've loaded the database, you can use query commands. Most
+## of the query commands behave similarly to MAME's auxiliary verbs but
+## case-sensitive and with better globbing (output not shown for
+## brevity):
+##
+## $ python minimaws.py listfull "unkch*"
+## $ python minimaws.py listclones "unkch*"
+## $ python minimaws.py listbrothers superx
+##
+## The romident command does not support archives or software lists, but
+## it's far faster than using MAME as it has optimised indexes, and
+## results are grouped by machine rather than by file:
+##
+## $ python minimaws.py romident 27c64.bin dump-dir
+##
+## One more sophisticated query command is provided that MAME has no
+## equivalent for. The listaffected command shows all runnable machines
+## that reference devices defined in specified source files:
+##
+## $ python minimaws.py listaffected "src/devices/cpu/m6805/*" src/devices/cpu/mcs40/mcs40.cpp
+##
+## This script can also run a local web server allowing you to explore
+## systems, devices and source files:
+##
+## $ python minimaws.py serve
+##
+## The default TCP port is 8080 but if desired, this can be changed with
+## the --port option. The web service is implemented using WSGI, so it
+## can be run in a web server if desired (e.g. using Apache mod_wsgi).
+## It uses get queries and provides cacheable reponses, so it should
+## work behind a caching proxy (e.g. squid or nginx). Although the
+## service is written to avoid SQL injected and directory traversal
+## attacks, and it avoids common sources of security issues, it has not
+## been audited for vulnerabilities and is not recommended for use on
+## public web sites.
+##
+## To use the web service, you need to know the short name of a device/
+## system, or the name of a source file containing a system:
+##
+## http://localhost:8080/machine/intlc440
+## http://localhost:8080/machine/a2mouse
+## http://localhost:8080/sourcefile/src/devices/cpu/m68000/m68kcpu.cpp
+##
+## You can also start with a list of all source files containing machine
+## definitions, but this is quite a large page and may perform poorly:
+##
+## http://localhost:8080/sourcefile/
+##
+## One feature that may be of iterest to front-end authors or users of
+## computer emulation is the ability to show available slot options and
+## update live as changes are made. This can be seen in action on
+## computer systems:
+##
+## http://localhost:8080/machine/ibm5150
+## http://localhost:8080/machine/apple2e
+## http://localhost:8080/machine/ti82
+##
+## On any of these, and many other systems, you can select slot options
+## and see dependent slots update. Required command-line arguments to
+## produce the selected configuration are also displayed.
+
+if __name__ == '__main__':
+ import argparse
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--database', metavar='<dbfile>', default='minimaws.sqlite3', help='SQLite 3 info database file (defaults to minimaws.sqlite3)')
+ subparsers = parser.add_subparsers(title='commands', dest='command', metavar='<command>')
+
+ subparser = subparsers.add_parser('listfull', help='list short names and full names')
+ subparser.add_argument('pattern', nargs='?', metavar='<pat>', help='short name glob pattern')
+
+ subparser = subparsers.add_parser('listsource', help='list short names and source files')
+ subparser.add_argument('pattern', nargs='?', metavar='<pat>', help='short name glob pattern')
+
+ subparser = subparsers.add_parser('listclones', help='show clones')
+ subparser.add_argument('pattern', nargs='?', metavar='<pat>', help='short name/parent glob pattern')
+
+ subparser = subparsers.add_parser('listbrothers', help='show drivers from the same source file(s)')
+ subparser.add_argument('pattern', nargs='?', metavar='<pat>', help='short name glob pattern')
+
+ subparser = subparsers.add_parser('listaffected', help='show drivers affected by source change(s)')
+ subparser.add_argument('pattern', nargs='+', metavar='<pat>', help='source file glob pattern')
+
+ subparser = subparsers.add_parser('romident', help='identify ROM dump(s)')
+ subparser.add_argument('path', nargs='+', metavar='<path>', help='ROM dump file/directory path')
+
+ subparser = subparsers.add_parser('serve', help='serve over HTTP')
+ subparser.add_argument('--port', metavar='<port>', default=8080, type=int, help='server TCP port')
+ subparser.add_argument('--host', metavar='<host>', default='', help='server TCP hostname')
+
+ subparser = subparsers.add_parser('load', help='load machine information')
+ group = subparser.add_mutually_exclusive_group(required=True)
+ group.add_argument('--executable', metavar='<exe>', help='emulator executable')
+ group.add_argument('--file', metavar='<xmlfile>', help='XML machine information file')
+ subparser.add_argument('--softwarepath', required=True, action='append', metavar='<path>', help='Software list directory path')
+
+ options = parser.parse_args()
+
+ import lib.auxverbs
+ if options.command == 'listfull':
+ lib.auxverbs.do_listfull(options)
+ elif options.command == 'listsource':
+ lib.auxverbs.do_listsource(options)
+ elif options.command == 'listclones':
+ lib.auxverbs.do_listclones(options)
+ elif options.command == 'listbrothers':
+ lib.auxverbs.do_listbrothers(options)
+ elif options.command == 'listaffected':
+ lib.auxverbs.do_listaffected(options)
+ elif options.command == 'romident':
+ lib.auxverbs.do_romident(options)
+ elif options.command == 'serve':
+ import wsgiref.simple_server
+ import lib.wsgiserve
+ application = lib.wsgiserve.MiniMawsApp(options.database)
+ server = wsgiref.simple_server.make_server(options.host, options.port, application)
+ try:
+ server.serve_forever()
+ except KeyboardInterrupt:
+ pass
+ elif options.command == 'load':
+ import lib.lxparse
+ lib.lxparse.load_info(options)
diff --git a/docs/release/scripts/minimaws/minimaws.wsgi b/docs/release/scripts/minimaws/minimaws.wsgi
new file mode 100644
index 00000000000..1ddab440be4
--- /dev/null
+++ b/docs/release/scripts/minimaws/minimaws.wsgi
@@ -0,0 +1,16 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+##
+## Simple wrapper for deploying minimaws with mod_wsgi.
+
+import os.path
+import sys
+
+scriptdir = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, scriptdir)
+
+import lib.wsgiserve
+
+application = lib.wsgiserve.MiniMawsApp(os.path.join(scriptdir, 'minimaws.sqlite3'))
diff --git a/docs/release/scripts/resources/emscripten/emscripten_post.js b/docs/release/scripts/resources/emscripten/emscripten_post.js
new file mode 100644
index 00000000000..b23f1820175
--- /dev/null
+++ b/docs/release/scripts/resources/emscripten/emscripten_post.js
@@ -0,0 +1,18 @@
+// MAME-JavaScript function mappings
+var JSMAME = JSMAME || {};
+JSMAME.get_machine = Module.cwrap('_ZN15running_machine30emscripten_get_running_machineEv', 'number');
+JSMAME.get_ui = Module.cwrap('_ZN15running_machine17emscripten_get_uiEv', 'number');
+JSMAME.get_sound = Module.cwrap('_ZN15running_machine20emscripten_get_soundEv', 'number');
+JSMAME.ui_set_show_fps = Module.cwrap('_ZN15mame_ui_manager12set_show_fpsEb', '', ['number', 'number']);
+JSMAME.ui_get_show_fps = Module.cwrap('_ZNK15mame_ui_manager8show_fpsEv', 'number', ['number']);
+JSMAME.sound_manager_mute = Module.cwrap('_ZN13sound_manager4muteEbh', '', ['number', 'number', 'number']);
+JSMAME.sdl_pauseaudio = Module.cwrap('SDL_PauseAudio', '', ['number']);
+JSMAME.sdl_sendkeyboardkey = Module.cwrap('SDL_SendKeyboardKey', '', ['number', 'number']);
+
+JSMAME.soft_reset = Module.cwrap('_ZN15running_machine21emscripten_soft_resetEv', null);
+JSMAME.hard_reset = Module.cwrap('_ZN15running_machine21emscripten_hard_resetEv', null);
+JSMAME.exit = Module.cwrap('_ZN15running_machine15emscripten_exitEv', null, []);
+JSMAME.save = Module.cwrap('_ZN15running_machine15emscripten_saveEPKc', null, ['string']);
+JSMAME.load = Module.cwrap('_ZN15running_machine15emscripten_loadEPKc', null, ['string']);
+
+var JSMESS = JSMAME;
diff --git a/docs/release/scripts/resources/uwp/Package.appxmanifest b/docs/release/scripts/resources/uwp/Package.appxmanifest
new file mode 100644
index 00000000000..60092db9fed
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/Package.appxmanifest
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
+ <Identity Name="f0273023-de0a-46a5-b0db-1514f3a84c71" Publisher="CN=bradhugh" Version="1.0.0.0" />
+ <mp:PhoneIdentity PhoneProductId="f0273023-de0a-46a5-b0db-1514f3a84c71" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
+ <Properties>
+ <DisplayName>MAME</DisplayName>
+ <PublisherDisplayName>MAME Team</PublisherDisplayName>
+ <Logo>scripts\resources\uwp\assets\StoreLogo.png</Logo>
+ </Properties>
+ <Dependencies>
+ <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
+ </Dependencies>
+ <Resources>
+ <Resource Language="x-generate" />
+ </Resources>
+ <Applications>
+ <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="Mameuwp.App">
+ <uap:VisualElements DisplayName="MAME" Square150x150Logo="scripts\resources\uwp\assets\Square150x150Logo.png" Square44x44Logo="scripts\resources\uwp\assets\Square44x44Logo.png" Description="MAME for Windows 10" BackgroundColor="transparent">
+ <uap:DefaultTile Wide310x150Logo="scripts\resources\uwp\assets\Wide310x150Logo.png">
+ <uap:ShowNameOnTiles>
+ <uap:ShowOn Tile="square150x150Logo" />
+ </uap:ShowNameOnTiles>
+ </uap:DefaultTile>
+ <uap:SplashScreen Image="scripts\resources\uwp\assets\SplashScreen.scale-200.png" />
+ <uap:InitialRotationPreference>
+ <uap:Rotation Preference="landscape" />
+ </uap:InitialRotationPreference>
+ </uap:VisualElements>
+ </Application>
+ </Applications>
+ <Capabilities>
+ <Capability Name="internetClient" />
+ <Capability Name="codeGeneration" />
+ <Capability Name="privateNetworkClientServer" />
+ </Capabilities>
+</Package> \ No newline at end of file
diff --git a/docs/release/scripts/resources/uwp/assets/LockScreenLogo.scale-200.png b/docs/release/scripts/resources/uwp/assets/LockScreenLogo.scale-200.png
new file mode 100644
index 00000000000..989319d4ec3
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/LockScreenLogo.scale-200.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/assets/SplashScreen.scale-200.png b/docs/release/scripts/resources/uwp/assets/SplashScreen.scale-200.png
new file mode 100644
index 00000000000..538a6ad95a9
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/SplashScreen.scale-200.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/assets/Square150x150Logo.scale-200.png b/docs/release/scripts/resources/uwp/assets/Square150x150Logo.scale-200.png
new file mode 100644
index 00000000000..15b8043caa8
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/Square150x150Logo.scale-200.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/assets/Square44x44Logo.scale-200.png b/docs/release/scripts/resources/uwp/assets/Square44x44Logo.scale-200.png
new file mode 100644
index 00000000000..420dc54bf73
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/Square44x44Logo.scale-200.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/assets/Square44x44Logo.targetsize-24_altform-unplated.png b/docs/release/scripts/resources/uwp/assets/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 00000000000..ba31e4f883f
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/Square44x44Logo.targetsize-24_altform-unplated.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/assets/StoreLogo.png b/docs/release/scripts/resources/uwp/assets/StoreLogo.png
new file mode 100644
index 00000000000..a16e59dcee9
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/StoreLogo.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/assets/Wide310x150Logo.scale-200.png b/docs/release/scripts/resources/uwp/assets/Wide310x150Logo.scale-200.png
new file mode 100644
index 00000000000..b6fd1f57bca
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/assets/Wide310x150Logo.scale-200.png
Binary files differ
diff --git a/docs/release/scripts/resources/uwp/mame_TemporaryKey.pfx b/docs/release/scripts/resources/uwp/mame_TemporaryKey.pfx
new file mode 100644
index 00000000000..de6ef5c5f88
--- /dev/null
+++ b/docs/release/scripts/resources/uwp/mame_TemporaryKey.pfx
Binary files differ
diff --git a/docs/release/scripts/resources/windows/hbmame/hbmame.ico b/docs/release/scripts/resources/windows/hbmame/hbmame.ico
new file mode 100644
index 00000000000..845ec9aedd7
--- /dev/null
+++ b/docs/release/scripts/resources/windows/hbmame/hbmame.ico
Binary files differ
diff --git a/docs/release/scripts/resources/windows/hbmame/hbmame.man b/docs/release/scripts/resources/windows/hbmame/hbmame.man
new file mode 100644
index 00000000000..45d07d3f853
--- /dev/null
+++ b/docs/release/scripts/resources/windows/hbmame/hbmame.man
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
+ <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="HBMAME" type="win32" />
+ <description>Homebrew MAME</description>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
+ </dependentAssembly>
+ </dependency>
+ <asmv3:application>
+ <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+ <dpiAware>true</dpiAware>
+ </asmv3:windowsSettings>
+ </asmv3:application>
+</assembly>
diff --git a/docs/release/scripts/resources/windows/hbmame/hbmame.rc b/docs/release/scripts/resources/windows/hbmame/hbmame.rc
new file mode 100644
index 00000000000..33da7f1d685
--- /dev/null
+++ b/docs/release/scripts/resources/windows/hbmame/hbmame.rc
@@ -0,0 +1,14 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+//============================================================
+//
+// mame.rc - Minimal resource file for Win32 MAME
+//
+//============================================================
+
+#include <windows.h>
+#include "hbmamevers.rc"
+
+1 24 MOVEABLE PURE "hbmame.man"
+
+2 ICON DISCARDABLE "hbmame.ico"
diff --git a/docs/release/scripts/resources/windows/mame/mame.ico b/docs/release/scripts/resources/windows/mame/mame.ico
new file mode 100644
index 00000000000..62761447fc2
--- /dev/null
+++ b/docs/release/scripts/resources/windows/mame/mame.ico
Binary files differ
diff --git a/docs/release/scripts/resources/windows/mame/mame.man b/docs/release/scripts/resources/windows/mame/mame.man
new file mode 100644
index 00000000000..e07705a39c7
--- /dev/null
+++ b/docs/release/scripts/resources/windows/mame/mame.man
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
+ <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="MAME" type="win32" />
+ <description>MAME</description>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
+ </dependentAssembly>
+ </dependency>
+ <asmv3:application>
+ <asmv3:windowsSettings>
+ <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+ <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
+ </asmv3:windowsSettings>
+ </asmv3:application>
+</assembly>
diff --git a/docs/release/scripts/resources/windows/mame/mame.rc b/docs/release/scripts/resources/windows/mame/mame.rc
new file mode 100644
index 00000000000..deceb068193
--- /dev/null
+++ b/docs/release/scripts/resources/windows/mame/mame.rc
@@ -0,0 +1,14 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+//============================================================
+//
+// mame.rc - Minimal resource file for Win32 MAME
+//
+//============================================================
+
+#include <windows.h>
+//#include "mamevers.rc"
+
+1 24 MOVEABLE PURE "mame.man"
+
+2 ICON DISCARDABLE "mame.ico"
diff --git a/docs/release/scripts/resources/windows/mess/mess.ico b/docs/release/scripts/resources/windows/mess/mess.ico
new file mode 100644
index 00000000000..bab67dd6195
--- /dev/null
+++ b/docs/release/scripts/resources/windows/mess/mess.ico
Binary files differ
diff --git a/docs/release/scripts/resources/windows/mess/mess.man b/docs/release/scripts/resources/windows/mess/mess.man
new file mode 100644
index 00000000000..7feef51ce9f
--- /dev/null
+++ b/docs/release/scripts/resources/windows/mess/mess.man
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
+ <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="MESS" type="win32" />
+ <description>MESS</description>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
+ </dependentAssembly>
+ </dependency>
+ <asmv3:application>
+ <asmv3:windowsSettings>
+ <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+ <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
+ </asmv3:windowsSettings>
+ </asmv3:application>
+</assembly>
diff --git a/docs/release/scripts/resources/windows/mess/mess.rc b/docs/release/scripts/resources/windows/mess/mess.rc
new file mode 100644
index 00000000000..1329bcd6fb8
--- /dev/null
+++ b/docs/release/scripts/resources/windows/mess/mess.rc
@@ -0,0 +1,14 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+//============================================================
+//
+// mess.rc - Minimal resource file for Win32 MAME
+//
+//============================================================
+
+#include <windows.h>
+#include "messvers.rc"
+
+1 24 MOVEABLE PURE "mess.man"
+
+2 ICON DISCARDABLE "mess.ico"
diff --git a/docs/release/scripts/src/3rdparty.lua b/docs/release/scripts/src/3rdparty.lua
new file mode 100644
index 00000000000..fff3b94f0c8
--- /dev/null
+++ b/docs/release/scripts/src/3rdparty.lua
@@ -0,0 +1,2430 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- 3rdparty.lua
+--
+-- Library objects for all 3rdparty sources
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- expat library objects
+--------------------------------------------------
+
+if not _OPTIONS["with-system-expat"] then
+project "expat"
+ uuid "f4cd40b1-c37c-452d-9785-640f26f0bf54"
+ kind "StaticLib"
+
+ -- fake out the enough of expat_config.h to get by
+ -- could possibly add more defines here for specific targets
+ defines {
+ "HAVE_MEMMOVE",
+ "HAVE_STDINT_H",
+ "HAVE_STDLIB_H",
+ "HAVE_STRING_H",
+ "PACKAGE=\"expat\"",
+ "PACKAGE_BUGREPORT=\"expat-bugs@libexpat.org\"",
+ "PACKAGE_NAME=\"expat\"",
+ "PACKAGE_STRING=\"expat 2.2.10\"",
+ "PACKAGE_TARNAME=\"expat\"",
+ "PACKAGE_URL=\"\"",
+ "PACKAGE_VERSION=\"2.2.10\"",
+ "STDC_HEADERS",
+ "VERSION=\"2.2.10\"",
+ "XML_CONTEXT_BYTES=1024",
+ "XML_DTD",
+ "XML_NS",
+ }
+if _OPTIONS["BIGENDIAN"]=="1" then
+ defines {
+ "BYTEORDER=4321",
+ "WORDS_BIGENDIAN",
+ }
+else
+ defines {
+ "BYTEORDER=1234",
+ }
+end
+if _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="freebsd" then
+ defines {
+ "HAVE_ARC4RANDOM",
+ }
+end
+if BASE_TARGETOS=="unix" then
+ defines {
+ "HAVE_DLFCN_H",
+ "HAVE_FCNTL_H",
+ "HAVE_MMAP",
+ "HAVE_SYS_STAT_H",
+ "HAVE_SYS_TYPES_H",
+ "HAVE_UNISTD_H",
+ "XML_DEV_URANDOM",
+ }
+end
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd111", -- remark #111: statement is unreachable
+ "/Qwd1879", -- warning #1879: unimplemented pragma ignored
+ "/Qwd2557", -- remark #2557: comparison between signed and unsigned operands
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ }
+end
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/expat/lib/xmlparse.c",
+ MAME_DIR .. "3rdparty/expat/lib/xmlrole.c",
+ MAME_DIR .. "3rdparty/expat/lib/xmltok.c",
+ }
+else
+links {
+ ext_lib("expat"),
+}
+end
+
+
+--------------------------------------------------
+-- zlib library objects
+--------------------------------------------------
+
+if not _OPTIONS["with-system-zlib"] then
+project "zlib"
+ uuid "3d78bd2a-2bd0-4449-8087-42ddfaef7ec9"
+ kind "StaticLib"
+
+ local version = str_to_version(_OPTIONS["gcc_version"])
+ if _OPTIONS["gcc"]~=nil and ((string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "asmjs") or string.find(_OPTIONS["gcc"], "android"))) then
+ configuration { "gmake or ninja" }
+ if (version >= 30700) then
+ buildoptions {
+ "-Wno-shift-negative-value",
+ }
+ end
+ end
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4131", -- warning C4131: 'xxx' : uses old-style declarator
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd111", -- remark #111: statement is unreachable
+ "/Qwd280", -- remark #280: selector expression is constant
+ }
+end
+ configuration "Debug"
+ defines {
+ "verbose=-1",
+ }
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-strict-prototypes",
+ }
+
+ configuration { }
+ defines {
+ "ZLIB_CONST",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/zlib/adler32.c",
+ MAME_DIR .. "3rdparty/zlib/compress.c",
+ MAME_DIR .. "3rdparty/zlib/crc32.c",
+ MAME_DIR .. "3rdparty/zlib/deflate.c",
+ MAME_DIR .. "3rdparty/zlib/inffast.c",
+ MAME_DIR .. "3rdparty/zlib/inflate.c",
+ MAME_DIR .. "3rdparty/zlib/infback.c",
+ MAME_DIR .. "3rdparty/zlib/inftrees.c",
+ MAME_DIR .. "3rdparty/zlib/trees.c",
+ MAME_DIR .. "3rdparty/zlib/uncompr.c",
+ MAME_DIR .. "3rdparty/zlib/zutil.c",
+ }
+else
+links {
+ ext_lib("zlib"),
+}
+end
+
+
+--------------------------------------------------
+-- SoftFloat library objects
+--------------------------------------------------
+
+project "softfloat"
+ uuid "04fbf89e-4761-4cf2-8a12-64500cf0c5c5"
+ kind "StaticLib"
+
+ options {
+ "ForceCPP",
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ }
+
+ configuration { "gmake or ninja" }
+ buildoptions_cpp {
+ "-x c++",
+ }
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4146", -- warning C4146: unary minus operator applied to unsigned type, result still unsigned
+ "/wd4018", -- warning C4018: 'x' : signed/unsigned mismatch
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd2557", -- remark #2557: comparison between signed and unsigned operands
+ }
+end
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/softfloat/softfloat.c",
+ MAME_DIR .. "3rdparty/softfloat/fsincos.c",
+ MAME_DIR .. "3rdparty/softfloat/fpatan.c",
+ MAME_DIR .. "3rdparty/softfloat/fyl2x.c",
+ }
+
+
+--------------------------------------------------
+-- SoftFloat 3 library objects
+--------------------------------------------------
+
+project "softfloat3"
+uuid "9c22fc90-53fd-11e8-b566-0800200c9a66"
+kind "StaticLib"
+
+options {
+ "ForceCPP",
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "3rdparty/softfloat3/build/MAME",
+ MAME_DIR .. "3rdparty/softfloat3/source",
+ MAME_DIR .. "3rdparty/softfloat3/source/include",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086",
+}
+
+configuration { "gmake or ninja" }
+buildoptions_cpp {
+ "-x c++",
+}
+if _OPTIONS["gcc"]~=nil and not string.find(_OPTIONS["gcc"], "clang") then
+ buildoptions_cpp {
+ "-Wno-error=implicit-fallthrough",
+ }
+end
+
+configuration { "vs*" }
+buildoptions {
+ "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used
+ "/wd4703", -- warning C4703: potentially uninitialized local pointer variable 'xxx' used
+}
+
+configuration { }
+defines {
+ "SOFTFLOAT_ROUND_ODD",
+ "INLINE_LEVEL=5",
+ "SOFTFLOAT_FAST_DIV32TO16",
+ "SOFTFLOAT_FAST_DIV64TO32",
+ "SOFTFLOAT_FAST_INT64"
+}
+
+files {
+ MAME_DIR .. "3rdparty/softfloat3/source/s_eq128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_le128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_lt128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shortShiftLeft128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shortShiftRight128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shortShiftRightJam64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shortShiftRightJam64Extra.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shortShiftRightJam128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shortShiftRightJam128Extra.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shiftRightJam32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shiftRightJam64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shiftRightJam64Extra.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shiftRightJam128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shiftRightJam128Extra.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_shiftRightJam256M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_countLeadingZeros8.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_countLeadingZeros16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_countLeadingZeros32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_countLeadingZeros64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_add128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_add256M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_sub128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_sub256M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mul64ByShifted32To128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mul64To128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mul128By32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mul128To256M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_approxRecip_1Ks.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_approxRecip32_1.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_approxRecipSqrt_1Ks.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_approxRecipSqrt32_1.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/softfloat_raiseFlags.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_commonNaNToF16UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_propagateNaNF16UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_f32UIToCommonNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_commonNaNToF32UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_propagateNaNF32UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_f64UIToCommonNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_commonNaNToF64UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_propagateNaNF64UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/extF80M_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_extF80UIToCommonNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_commonNaNToExtF80UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_propagateNaNExtF80UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/f128M_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_f128UIToCommonNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_commonNaNToF128UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/8086/s_propagateNaNF128UI.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundToUI32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundToUI64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundToI32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundToI64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normSubnormalF16Sig.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundPackToF16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normRoundPackToF16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_addMagsF16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_subMagsF16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mulAddF16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normSubnormalF32Sig.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundPackToF32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normRoundPackToF32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_addMagsF32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_subMagsF32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mulAddF32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normSubnormalF64Sig.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundPackToF64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normRoundPackToF64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_addMagsF64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_subMagsF64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mulAddF64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normSubnormalExtF80Sig.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundPackToExtF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normRoundPackToExtF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_addMagsExtF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_subMagsExtF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normSubnormalF128Sig.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_roundPackToF128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_normRoundPackToF128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_addMagsF128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_subMagsF128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/s_mulAddF128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/softfloat_state.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui32_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/ui64_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i32_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/i64_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_mulAdd.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_lt_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f16_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_mulAdd.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_lt_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f32_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_mulAdd.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_lt_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f64_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_to_f128.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_lt_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_to_f128M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/extF80M_lt_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_extF80.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_mulAdd.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_lt_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128_isSignalingNaN.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_ui32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_ui64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_i32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_i64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_ui32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_ui64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_i32_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_i64_r_minMag.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_f16.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_f32.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_extF80M.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_to_f64.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_roundToInt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_add.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_sub.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_mul.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_mulAdd.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_div.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_rem.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_sqrt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_eq.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_le.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_lt.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_eq_signaling.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_le_quiet.c",
+ MAME_DIR .. "3rdparty/softfloat3/source/f128M_lt_quiet.c",
+}
+
+
+-------------------------------------------------
+-- libJPEG library objects
+--------------------------------------------------
+
+if not _OPTIONS["with-system-jpeg"] then
+project "jpeg"
+ uuid "447c6800-dcfd-4c48-b72a-a8223bb409ca"
+ kind "StaticLib"
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ }
+end
+
+ configuration { "winstore*" }
+ defines {
+ "NO_GETENV"
+ }
+
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/libjpeg/jaricom.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcapimin.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcapistd.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcarith.c",
+ MAME_DIR .. "3rdparty/libjpeg/jccoefct.c",
+ MAME_DIR .. "3rdparty/libjpeg/jccolor.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcdctmgr.c",
+ MAME_DIR .. "3rdparty/libjpeg/jchuff.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcinit.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcmainct.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcmarker.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcmaster.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcomapi.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcparam.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcprepct.c",
+ MAME_DIR .. "3rdparty/libjpeg/jcsample.c",
+ MAME_DIR .. "3rdparty/libjpeg/jctrans.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdapimin.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdapistd.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdarith.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdatadst.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdatasrc.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdcoefct.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdcolor.c",
+ MAME_DIR .. "3rdparty/libjpeg/jddctmgr.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdhuff.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdinput.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdmainct.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdmarker.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdmaster.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdmerge.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdpostct.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdsample.c",
+ MAME_DIR .. "3rdparty/libjpeg/jdtrans.c",
+ MAME_DIR .. "3rdparty/libjpeg/jerror.c",
+ MAME_DIR .. "3rdparty/libjpeg/jfdctflt.c",
+ MAME_DIR .. "3rdparty/libjpeg/jfdctfst.c",
+ MAME_DIR .. "3rdparty/libjpeg/jfdctint.c",
+ MAME_DIR .. "3rdparty/libjpeg/jidctflt.c",
+ MAME_DIR .. "3rdparty/libjpeg/jidctfst.c",
+ MAME_DIR .. "3rdparty/libjpeg/jidctint.c",
+ MAME_DIR .. "3rdparty/libjpeg/jquant1.c",
+ MAME_DIR .. "3rdparty/libjpeg/jquant2.c",
+ MAME_DIR .. "3rdparty/libjpeg/jutils.c",
+ MAME_DIR .. "3rdparty/libjpeg/jmemmgr.c",
+ MAME_DIR .. "3rdparty/libjpeg/jmemansi.c",
+ }
+else
+links {
+ ext_lib("jpeg"),
+}
+end
+
+
+--------------------------------------------------
+-- libflac library objects
+--------------------------------------------------
+
+if not _OPTIONS["with-system-flac"] then
+project "flac"
+ uuid "b6fc19e8-073a-4541-bb7b-d24b548d424a"
+ kind "StaticLib"
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
+ "/wd4702", -- warning C4702: unreachable code
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd111", -- remark #111: statement is unreachable
+ "/Qwd177", -- remark #177: function "xxx" was declared but never referenced
+ "/Qwd181", -- remark #181: argument of type "UINT32={unsigned int}" is incompatible with format "%d", expecting argument of type "int"
+ "/Qwd188", -- error #188: enumerated type mixed with another type
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ }
+end
+
+ configuration { "mingw-clang" }
+ buildoptions {
+ "-include stdint.h"
+ }
+
+ configuration { "vsllvm" }
+ buildoptions {
+ "-Wno-enum-conversion",
+ "-Wno-unused-function",
+ }
+
+ configuration { }
+ defines {
+ "WORDS_BIGENDIAN=0",
+ "FLAC__NO_ASM",
+ "_LARGEFILE_SOURCE",
+ "_FILE_OFFSET_BITS=64",
+ "FLAC__HAS_OGG=0",
+ "HAVE_CONFIG_H=1",
+ }
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-unused-function",
+ "-O0",
+ }
+ if _OPTIONS["gcc"]~=nil and (string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "android")) then
+ buildoptions {
+ "-Wno-enum-conversion",
+ }
+ if _OPTIONS["targetos"]=="macosx" then
+ buildoptions_c {
+ "-Wno-unknown-attributes",
+ }
+ end
+ end
+ configuration { }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/include",
+ MAME_DIR .. "3rdparty/libflac/include",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/bitmath.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/bitreader.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/bitwriter.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/cpu.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/crc.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/fixed.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/float.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/format.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/lpc.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/md5.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/memory.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/stream_decoder.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/stream_encoder.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/stream_encoder_framing.c",
+ MAME_DIR .. "3rdparty/libflac/src/libFLAC/window.c",
+ }
+else
+links {
+ ext_lib("flac"),
+}
+end
+
+
+--------------------------------------------------
+-- lib7z library objects
+--------------------------------------------------
+
+project "7z"
+ uuid "ad573d62-e76a-4b11-ae34-5110a6789a42"
+ kind "StaticLib"
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-strict-prototypes",
+ "-Wno-undef",
+ }
+if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") and str_to_version(_OPTIONS["gcc_version"]) >= 100000 then
+ buildoptions_c {
+ "-Wno-misleading-indentation",
+ }
+end
+
+ configuration { "asmjs" }
+ buildoptions {
+ "-Wno-misleading-indentation",
+ }
+
+ configuration { "mingw*" }
+ buildoptions_c {
+ "-Wno-strict-prototypes",
+ }
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
+ "/wd4457", -- warning C4457: declaration of 'xxx' hides function parameter
+ }
+if _OPTIONS["vs"]=="clangcl" then
+ buildoptions {
+ "-Wno-misleading-indentation",
+ }
+end
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ }
+end
+ configuration { "winstore*" }
+ forcedincludes {
+ MAME_DIR .. "src/osd/uwp/uwpcompat.h"
+ }
+
+ configuration { }
+ defines {
+ "_7ZIP_PPMD_SUPPPORT",
+ "_7ZIP_ST",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/lzma/C/7zAlloc.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zArcIn.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zBuf.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zBuf2.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zCrc.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zCrcOpt.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zDec.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zFile.c",
+ MAME_DIR .. "3rdparty/lzma/C/7zStream.c",
+ MAME_DIR .. "3rdparty/lzma/C/Aes.c",
+ MAME_DIR .. "3rdparty/lzma/C/AesOpt.c",
+ MAME_DIR .. "3rdparty/lzma/C/Alloc.c",
+ MAME_DIR .. "3rdparty/lzma/C/Bcj2.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/Bcj2Enc.c",
+ MAME_DIR .. "3rdparty/lzma/C/Bra.c",
+ MAME_DIR .. "3rdparty/lzma/C/Bra86.c",
+ MAME_DIR .. "3rdparty/lzma/C/BraIA64.c",
+ MAME_DIR .. "3rdparty/lzma/C/CpuArch.c",
+ MAME_DIR .. "3rdparty/lzma/C/Delta.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/DllSecur.c",
+ MAME_DIR .. "3rdparty/lzma/C/LzFind.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/LzFindMt.c",
+ MAME_DIR .. "3rdparty/lzma/C/Lzma2Dec.c",
+ MAME_DIR .. "3rdparty/lzma/C/Lzma2Enc.c",
+ MAME_DIR .. "3rdparty/lzma/C/Lzma86Dec.c",
+ MAME_DIR .. "3rdparty/lzma/C/Lzma86Enc.c",
+ MAME_DIR .. "3rdparty/lzma/C/LzmaDec.c",
+ MAME_DIR .. "3rdparty/lzma/C/LzmaEnc.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/LzmaLib.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/MtCoder.c",
+ MAME_DIR .. "3rdparty/lzma/C/Ppmd7.c",
+ MAME_DIR .. "3rdparty/lzma/C/Ppmd7Dec.c",
+ MAME_DIR .. "3rdparty/lzma/C/Ppmd7Enc.c",
+ MAME_DIR .. "3rdparty/lzma/C/Sha256.c",
+ MAME_DIR .. "3rdparty/lzma/C/Sort.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/Threads.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/Xz.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/XzCrc64.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/XzCrc64Opt.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/XzDec.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/XzEnc.c",
+ -- MAME_DIR .. "3rdparty/lzma/C/XzIn.c",
+ }
+
+
+--------------------------------------------------
+-- LUA library objects
+--------------------------------------------------
+if (STANDALONE~=true) then
+
+if not _OPTIONS["with-system-lua"] then
+project "lua"
+ uuid "d9e2eed1-f1ab-4737-a6ac-863700b1a5a9"
+ kind "StaticLib"
+
+ -- uncomment the options below to
+ -- compile using c++. Do the same
+ -- in lualibs.
+ -- In addition comment out the "extern "C""
+ -- in lua.hpp and do the same in luaengine.c line 47
+ --options {
+ -- "ForceCPP",
+ --}
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-bad-function-cast"
+ }
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4702", -- warning C4702: unreachable code
+ "/wd4310", -- warning C4310: cast truncates constant value
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd592", -- error #592: variable "xxx" is used before its value is set
+ }
+end
+
+ configuration { "winstore*" }
+ forcedincludes {
+ MAME_DIR .. "src/osd/uwp/uwpcompat.h",
+ }
+
+ configuration { }
+ defines {
+ "LUA_COMPAT_ALL",
+ "LUA_COMPAT_5_1",
+ "LUA_COMPAT_5_2",
+ }
+ if not (_OPTIONS["targetos"]=="windows") and not (_OPTIONS["targetos"]=="asmjs") and not (_OPTIONS["targetos"]=="pnacl") then
+ defines {
+ "LUA_USE_POSIX",
+ }
+ end
+ if ("pnacl" == _OPTIONS["gcc"]) then
+ defines {
+ "LUA_32BITS",
+ }
+ end
+
+ configuration { }
+
+ includedirs {
+ MAME_DIR .. "3rdparty",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/lua/src/lapi.c",
+ MAME_DIR .. "3rdparty/lua/src/lcode.c",
+ MAME_DIR .. "3rdparty/lua/src/lctype.c",
+ MAME_DIR .. "3rdparty/lua/src/ldebug.c",
+ MAME_DIR .. "3rdparty/lua/src/ldo.c",
+ MAME_DIR .. "3rdparty/lua/src/ldump.c",
+ MAME_DIR .. "3rdparty/lua/src/lfunc.c",
+ MAME_DIR .. "3rdparty/lua/src/lgc.c",
+ MAME_DIR .. "3rdparty/lua/src/llex.c",
+ MAME_DIR .. "3rdparty/lua/src/lmem.c",
+ MAME_DIR .. "3rdparty/lua/src/lobject.c",
+ MAME_DIR .. "3rdparty/lua/src/lopcodes.c",
+ MAME_DIR .. "3rdparty/lua/src/lparser.c",
+ MAME_DIR .. "3rdparty/lua/src/lstate.c",
+ MAME_DIR .. "3rdparty/lua/src/lstring.c",
+ MAME_DIR .. "3rdparty/lua/src/ltable.c",
+ MAME_DIR .. "3rdparty/lua/src/ltm.c",
+ MAME_DIR .. "3rdparty/lua/src/lundump.c",
+ MAME_DIR .. "3rdparty/lua/src/lvm.c",
+ MAME_DIR .. "3rdparty/lua/src/lzio.c",
+ MAME_DIR .. "3rdparty/lua/src/lauxlib.c",
+ MAME_DIR .. "3rdparty/lua/src/lbaselib.c",
+ MAME_DIR .. "3rdparty/lua/src/lbitlib.c",
+ MAME_DIR .. "3rdparty/lua/src/lcorolib.c",
+ MAME_DIR .. "3rdparty/lua/src/ldblib.c",
+ MAME_DIR .. "3rdparty/lua/src/liolib.c",
+ MAME_DIR .. "3rdparty/lua/src/lmathlib.c",
+ MAME_DIR .. "3rdparty/lua/src/loslib.c",
+ MAME_DIR .. "3rdparty/lua/src/lstrlib.c",
+ MAME_DIR .. "3rdparty/lua/src/ltablib.c",
+ MAME_DIR .. "3rdparty/lua/src/loadlib.c",
+ MAME_DIR .. "3rdparty/lua/src/linit.c",
+ MAME_DIR .. "3rdparty/lua/src/lutf8lib.c",
+ }
+else
+links {
+ ext_lib("lua"),
+}
+end
+
+
+--------------------------------------------------
+-- small lua library objects
+--------------------------------------------------
+
+project "lualibs"
+ uuid "1d84edab-94cf-48fb-83ee-b75bc697660e"
+ kind "StaticLib"
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4055", -- warning C4055: 'type cast': from data pointer 'void *' to function pointer 'xxx'
+ "/wd4152", -- warning C4152: nonstandard extension, function/data pointer conversion in expression
+ "/wd4130", -- warning C4130: '==': logical operation on address of string constant
+ }
+
+ configuration { "pnacl"}
+ buildoptions {
+ "-Wno-char-subscripts",
+ }
+
+ configuration { }
+ defines {
+ "LUA_COMPAT_ALL",
+ }
+
+ includedirs {
+ MAME_DIR .. "3rdparty",
+ }
+if (_OPTIONS["osd"] ~= "uwp") then
+ includedirs {
+ MAME_DIR .. "3rdparty/linenoise",
+ }
+end
+ includedirs {
+ ext_includedir("lua"),
+ ext_includedir("zlib"),
+ ext_includedir("sqlite3"),
+ }
+
+ configuration { "winstore*" }
+ forcedincludes {
+ MAME_DIR .. "src/osd/uwp/uwpcompat.h"
+ }
+
+ configuration {}
+
+ files {
+ MAME_DIR .. "3rdparty/lsqlite3/lsqlite3.c",
+ MAME_DIR .. "3rdparty/lua-zlib/lua_zlib.c",
+ MAME_DIR .. "3rdparty/luafilesystem/src/lfs.c",
+ }
+if (_OPTIONS["osd"] == "uwp") then
+ files {
+ MAME_DIR .. "3rdparty/lua-linenoise/linenoise_none.c",
+ }
+else
+ files {
+ MAME_DIR .. "3rdparty/lua-linenoise/linenoise.c",
+ }
+end
+
+--------------------------------------------------
+-- SQLite3 library objects
+--------------------------------------------------
+
+if not _OPTIONS["with-system-sqlite3"] then
+project "sqlite3"
+ uuid "5cb3d495-57ed-461c-81e5-80dc0857517d"
+ kind "StaticLib"
+
+ configuration { "gmake" }
+ buildoptions_c {
+ "-Wno-bad-function-cast",
+ "-Wno-discarded-qualifiers",
+ "-Wno-undef",
+ "-Wno-unused-but-set-variable",
+ }
+if _OPTIONS["gcc"]~=nil and ((string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "asmjs") or string.find(_OPTIONS["gcc"], "android"))) then
+ buildoptions_c {
+ "-Wno-incompatible-pointer-types-discards-qualifiers",
+ }
+end
+ configuration { "vs*" }
+if _OPTIONS["vs"]=="clangcl" then
+ buildoptions {
+ "-Wno-implicit-int-float-conversion",
+ }
+end
+ configuration { "winstore*" }
+ defines {
+ "SQLITE_OS_WINRT",
+ }
+
+ configuration { "vsllvm" }
+ buildoptions {
+ "-Wno-deprecated-declarations",
+ "-Wno-unused-variable",
+ }
+
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/sqlite3/sqlite3.c",
+ }
+else
+links {
+ ext_lib("sqlite3"),
+}
+end
+
+end
+
+
+--------------------------------------------------
+-- portmidi library objects
+--------------------------------------------------
+
+if _OPTIONS["NO_USE_MIDI"]~="1" then
+if not _OPTIONS["with-system-portmidi"] then
+project "portmidi"
+ uuid "587f2da6-3274-4a65-86a2-f13ea315bb98"
+ kind "StaticLib"
+
+ includedirs {
+ MAME_DIR .. "3rdparty/portmidi/pm_common",
+ MAME_DIR .. "3rdparty/portmidi/porttime",
+ }
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
+ "/wd4706", -- warning C4706: assignment within conditional expression
+ }
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd188", -- error #188: enumerated type mixed with another type
+ "/Qwd344", -- remark #344: typedef name has already been declared (with same type)
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ "/Qwd2557", -- remark #2557: comparison between signed and unsigned operands
+ }
+end
+
+ configuration { "linux*" }
+ defines {
+ "PMALSA=1",
+ }
+
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/portmidi/pm_common/portmidi.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_common/pmutil.c",
+ }
+
+ if _OPTIONS["targetos"]=="windows" then
+ files {
+ MAME_DIR .. "3rdparty/portmidi/porttime/ptwinmm.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_win/pmwin.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_win/pmwinmm.c",
+ MAME_DIR .. "3rdparty/portmidi/porttime/ptwinmm.c",
+ }
+ end
+
+ if _OPTIONS["targetos"]=="linux" then
+ files {
+ MAME_DIR .. "3rdparty/portmidi/pm_linux/pmlinux.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_linux/pmlinuxalsa.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_linux/finddefault.c",
+ MAME_DIR .. "3rdparty/portmidi/porttime/ptlinux.c",
+ }
+ end
+ if _OPTIONS["targetos"]=="netbsd" then
+ files {
+ MAME_DIR .. "3rdparty/portmidi/pm_linux/pmlinux.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_linux/finddefault.c",
+ MAME_DIR .. "3rdparty/portmidi/porttime/ptlinux.c",
+ }
+ end
+ if _OPTIONS["targetos"]=="macosx" then
+ files {
+ MAME_DIR .. "3rdparty/portmidi/pm_mac/pmmac.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_mac/pmmacosxcm.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_mac/finddefault.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_mac/readbinaryplist.c",
+ MAME_DIR .. "3rdparty/portmidi/pm_mac/osxsupport.m",
+ MAME_DIR .. "3rdparty/portmidi/porttime/ptmacosx_mach.c",
+ }
+ end
+else
+links {
+ ext_lib("portmidi"),
+}
+end
+end
+
+
+--------------------------------------------------
+-- BX library objects
+--------------------------------------------------
+
+project "bx"
+ uuid "238318fe-49f5-4eb4-88be-0618900f5eac"
+ kind "StaticLib"
+
+ defines {
+ "__STDC_LIMIT_MACROS",
+ "__STDC_FORMAT_MACROS",
+ "__STDC_CONSTANT_MACROS",
+ }
+
+ configuration { "vs*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/msvc",
+ }
+ configuration { "mingw*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/mingw",
+ }
+
+ configuration { "osx* or xcode4" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/osx",
+ }
+
+ configuration { "freebsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+ configuration { "netbsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+ configuration { }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include",
+ MAME_DIR .. "3rdparty/bx/3rdparty",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/bx/src/allocator.cpp",
+ MAME_DIR .. "3rdparty/bx/src/bx.cpp",
+ MAME_DIR .. "3rdparty/bx/src/commandline.cpp",
+ MAME_DIR .. "3rdparty/bx/src/crtnone.cpp",
+ MAME_DIR .. "3rdparty/bx/src/debug.cpp",
+ MAME_DIR .. "3rdparty/bx/src/dtoa.cpp",
+ MAME_DIR .. "3rdparty/bx/src/easing.cpp",
+ MAME_DIR .. "3rdparty/bx/src/file.cpp",
+ MAME_DIR .. "3rdparty/bx/src/filepath.cpp",
+ MAME_DIR .. "3rdparty/bx/src/hash.cpp",
+ MAME_DIR .. "3rdparty/bx/src/math.cpp",
+ MAME_DIR .. "3rdparty/bx/src/mutex.cpp",
+ MAME_DIR .. "3rdparty/bx/src/os.cpp",
+ MAME_DIR .. "3rdparty/bx/src/process.cpp",
+ MAME_DIR .. "3rdparty/bx/src/semaphore.cpp",
+ MAME_DIR .. "3rdparty/bx/src/settings.cpp",
+ MAME_DIR .. "3rdparty/bx/src/sort.cpp",
+ MAME_DIR .. "3rdparty/bx/src/string.cpp",
+ MAME_DIR .. "3rdparty/bx/src/thread.cpp",
+ MAME_DIR .. "3rdparty/bx/src/timer.cpp",
+ MAME_DIR .. "3rdparty/bx/src/url.cpp",
+ }
+
+
+--------------------------------------------------
+-- BIMG library objects
+--------------------------------------------------
+
+project "bimg"
+ uuid "5603611b-8bf8-4ffd-85bc-76858cd7df39"
+ kind "StaticLib"
+
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include",
+ }
+
+ configuration { "vs*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/msvc",
+ }
+ configuration { "mingw*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/mingw",
+ }
+
+ configuration { "osx* or xcode4" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/osx",
+ }
+
+ configuration { "freebsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+ configuration { "netbsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+ configuration { }
+
+ if _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="linux" or _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="asmjs" then
+ if _OPTIONS["gcc"]~=nil and (string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "asmjs")) then
+ buildoptions_cpp {
+ "-Wno-unused-const-variable",
+ }
+ end
+ end
+
+ defines {
+ "__STDC_LIMIT_MACROS",
+ "__STDC_FORMAT_MACROS",
+ "__STDC_CONSTANT_MACROS",
+ }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/bimg/include",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/include",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/bimg/src/image.cpp",
+ MAME_DIR .. "3rdparty/bimg/src/image_gnf.cpp",
+
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/astc_file.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/codec.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/endpoint_codec.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/footprint.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/integer_sequence_codec.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/intermediate_astc_block.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/logical_astc_block.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/partition.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/physical_astc_block.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/quantization.cc",
+ MAME_DIR .. "3rdparty/bimg/3rdparty/astc-codec/src/decoder/weight_infill.cc",
+ }
+
+
+--------------------------------------------------
+-- BGFX library objects
+--------------------------------------------------
+
+project "bgfx"
+ uuid "d3e7e119-35cf-4f4f-aba0-d3bdcd1b879a"
+ kind "StaticLib"
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4324", -- warning C4324: 'xxx' : structure was padded due to __declspec(align())
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4611", -- warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable
+ "/wd4310", -- warning C4310: cast truncates constant value
+ "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used
+ }
+
+ configuration { "vsllvm" }
+ buildoptions {
+ "-Wno-unneeded-internal-declaration",
+ "-Wno-unused-const-variable",
+ }
+
+if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd906", -- message #906: effect of this "#pragma pack" directive is local to function "xxx"
+ "/Qwd1879", -- warning #1879: unimplemented pragma ignored
+ "/Qwd82", -- remark #82: storage class is not first
+ }
+end
+ configuration { }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/bgfx/include",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty",
+ MAME_DIR .. "3rdparty/bx/include",
+ MAME_DIR .. "3rdparty/bimg/include",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/dxsdk/include",
+ }
+
+ configuration { "not steamlink"}
+ includedirs {
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
+ }
+
+ configuration { "android-*"}
+ buildoptions {
+ "-Wno-macro-redefined",
+ }
+
+ configuration { "vs*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/msvc",
+ }
+ configuration { "mingw*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/mingw",
+ }
+
+ configuration { "osx* or xcode4" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/osx",
+ }
+
+ configuration { "freebsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+ configuration { "netbsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+ configuration { "gmake or ninja" }
+ buildoptions {
+ "-Wno-uninitialized",
+ "-Wno-unused-but-set-variable",
+ "-Wno-unused-function",
+ "-Wno-unused-variable",
+ }
+ configuration { "rpi" }
+ buildoptions {
+ "-Wno-unused-but-set-variable",
+ "-Wno-unused-variable",
+ }
+ defines {
+ "__STDC_VERSION__=199901L",
+ }
+
+ configuration { }
+
+ local version = str_to_version(_OPTIONS["gcc_version"])
+ if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "gcc") then
+ if version >= 60000 then
+ buildoptions_cpp {
+ "-Wno-misleading-indentation",
+ }
+ end
+ end
+
+ if _OPTIONS["targetos"]=="windows" then
+ if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") then
+ buildoptions {
+ "-Wno-unknown-attributes",
+ "-Wno-missing-braces",
+ "-Wno-int-to-pointer-cast",
+ "-Wno-ignored-attributes", -- many instances in ImGui
+ }
+ end
+ end
+
+ if _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="linux" then
+ if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") then
+ buildoptions {
+ "-Wno-switch",
+ }
+ buildoptions_cpp {
+ "-Wno-unknown-pragmas",
+ }
+ end
+ end
+
+ if _OPTIONS["targetos"]=="freebsd" then
+ buildoptions {
+ backtick(pkgconfigcmd() .. " --cflags gl")
+ }
+ end
+
+ defines {
+ "__STDC_LIMIT_MACROS",
+ "__STDC_FORMAT_MACROS",
+ "__STDC_CONSTANT_MACROS",
+ "BGFX_CONFIG_MAX_FRAME_BUFFERS=128",
+ }
+
+ if _OPTIONS["targetos"]=="linux" or _OPTIONS["targetos"]=="netbsd" or _OPTIONS["targetos"]=="openbsd" then
+ if _OPTIONS["NO_X11"]=="1" then
+ defines {
+ "BGFX_CONFIG_RENDERER_OPENGLES=1",
+ "BGFX_CONFIG_RENDERER_OPENGL=0",
+ }
+ end
+ end
+
+ if _OPTIONS["targetos"]=="macosx" and _OPTIONS["gcc"]~=nil then
+ if string.find(_OPTIONS["gcc"], "clang") and (version < 80000) then
+ defines {
+ "TARGET_OS_OSX=1",
+ }
+ end
+ end
+
+ files {
+ MAME_DIR .. "3rdparty/bgfx/src/bgfx.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/debug_renderdoc.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/dxgi.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/glcontext_egl.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/glcontext_glx.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/glcontext_html5.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/glcontext_wgl.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/nvapi.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_agc.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_d3d11.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_d3d12.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_d3d9.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_gl.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_gnm.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_noop.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_nvn.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_vk.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_webgpu.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/shader.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/shader_dx9bc.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/shader_dxbc.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/shader_spirv.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/topology.cpp",
+ MAME_DIR .. "3rdparty/bgfx/src/vertexlayout.cpp",
+ MAME_DIR .. "3rdparty/bgfx/examples/common/imgui/imgui.cpp",
+ MAME_DIR .. "3rdparty/bgfx/examples/common/nanovg/nanovg.cpp",
+ MAME_DIR .. "3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/dear-imgui/imgui.cpp",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/dear-imgui/imgui_draw.cpp",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/dear-imgui/imgui_tables.cpp",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/dear-imgui/imgui_widgets.cpp",
+ }
+ if _OPTIONS["targetos"]=="macosx" then
+ files {
+ MAME_DIR .. "3rdparty/bgfx/src/glcontext_eagl.mm",
+ MAME_DIR .. "3rdparty/bgfx/src/glcontext_nsgl.mm",
+ MAME_DIR .. "3rdparty/bgfx/src/renderer_mtl.mm",
+ }
+ buildoptions {
+ "-x objective-c++",
+ "-D BGFX_CONFIG_MULTITHREADED=0",
+ }
+ end
+
+
+--------------------------------------------------
+-- PortAudio library objects
+--------------------------------------------------
+
+if _OPTIONS["NO_USE_PORTAUDIO"]~="1" then
+if not _OPTIONS["with-system-portaudio"] then
+project "portaudio"
+ uuid "0755c5f5-eccf-47f3-98a9-df67018a94d4"
+ kind "StaticLib"
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4245", -- warning C4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
+ "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
+ "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
+ "/wd4389", -- warning C4389: 'operator' : signed/unsigned mismatch
+ "/wd4189", -- warning C4189: 'xxx' : local variable is initialized but not referenced
+ "/wd4127", -- warning C4127: conditional expression is constant
+ "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
+ "/wd4312", -- warning C4312: 'type cast': conversion from 'UINT' to 'HWAVEIN' of greater size
+ }
+ if _OPTIONS["vs"]=="intel-15" then
+ buildoptions {
+ "/Qwd869", -- remark #869: parameter "xxx" was never referenced
+ "/Qwd1478", -- warning #1478: function "xxx" (declared at line yyy of "zzz") was declared deprecated
+ "/Qwd2544", -- message #2544: empty dependent statement in if-statement
+ "/Qwd1879", -- warning #1879: unimplemented pragma ignored
+ }
+ end
+
+ configuration { "vsllvm" }
+ buildoptions {
+ "-Wno-deprecated-declarations",
+ "-Wno-missing-braces",
+ "-Wno-switch",
+ "-Wno-unused-function",
+ "-Wno-unused-variable",
+ }
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-bad-function-cast",
+ "-Wno-missing-braces",
+ "-Wno-strict-prototypes",
+ "-Wno-undef",
+ "-Wno-unknown-pragmas",
+ "-Wno-unused-function",
+ "-Wno-unused-value",
+ "-Wno-unused-variable",
+ }
+
+ local version = str_to_version(_OPTIONS["gcc_version"])
+ if (_OPTIONS["gcc"]~=nil) then
+ if string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "android") then
+ buildoptions_c {
+ "-Wno-unknown-warning-option",
+ "-Wno-absolute-value",
+ "-Wno-unused-but-set-variable",
+ "-Wno-maybe-uninitialized",
+ "-Wno-sometimes-uninitialized",
+ }
+ else
+ buildoptions_c {
+ "-Wno-maybe-uninitialized",
+ "-Wno-sometimes-uninitialized",
+ "-Wno-unused-but-set-variable",
+ "-Wno-incompatible-pointer-types-discards-qualifiers",
+ "-w",
+ }
+ end
+ if string.find(_OPTIONS["gcc"], "clang") and version >= 100000 then
+ buildoptions_c {
+ "-Wno-misleading-indentation",
+ }
+ end
+ end
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4204", -- warning C4204: nonstandard extension used : non-constant aggregate initializer
+ "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used
+ "/wd4057", -- warning C4057: 'function': 'xxx' differs in indirection to slightly different base types from 'xxx'
+ }
+
+ configuration { }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/portaudio/include",
+ MAME_DIR .. "3rdparty/portaudio/src/common",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_allocation.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_converters.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_cpuload.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_dither.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_debugprint.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_front.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_process.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_stream.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_trace.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c",
+ }
+
+ if _OPTIONS["targetos"]=="windows" then
+ defines {
+ "PA_USE_DS=1",
+ "PA_USE_WASAPI=1",
+ "PA_USE_WDMKS=1",
+ "PA_USE_WMME=1",
+ }
+ includedirs {
+ MAME_DIR .. "3rdparty/portaudio/src/os/win",
+ }
+
+ configuration { "mingw*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/wasapi/mingw-include",
+ }
+
+ configuration { }
+ files {
+ MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_util.c",
+ MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_waveformat.c",
+ MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_hostapis.c",
+ MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_coinitialize.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/dsound/pa_win_ds.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.c",
+ MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_hostapis.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/wasapi/pa_win_wasapi.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/wdmks/pa_win_wdmks.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/wmme/pa_win_wmme.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_ringbuffer.c",
+ }
+
+ end
+ if _OPTIONS["targetos"]=="linux" then
+ defines {
+ "PA_USE_ALSA=1",
+ "PA_USE_OSS=1",
+ "HAVE_LINUX_SOUNDCARD_H",
+ }
+ includedirs {
+ MAME_DIR .. "3rdparty/portaudio/src/os/unix",
+ }
+ files {
+ MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_hostapis.c",
+ MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_util.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/alsa/pa_linux_alsa.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/oss/pa_unix_oss.c",
+ }
+ end
+ if _OPTIONS["targetos"]=="macosx" then
+ defines {
+ "PA_USE_COREAUDIO=1",
+ }
+ includedirs {
+ MAME_DIR .. "3rdparty/portaudio/src/os/unix",
+ }
+ files {
+ MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_hostapis.c",
+ MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_util.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c",
+ MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c",
+ MAME_DIR .. "3rdparty/portaudio/src/common/pa_ringbuffer.c",
+ }
+ end
+
+else
+links {
+ ext_lib("portaudio"),
+}
+end
+end
+
+
+--------------------------------------------------
+-- SDL2 library
+--------------------------------------------------
+if _OPTIONS["with-bundled-sdl2"] then
+project "SDL2"
+ uuid "caab3327-574f-4abf-b25b-74d5238ae59b"
+if _OPTIONS["targetos"]=="android" then
+ kind "SharedLib"
+ targetextension ".so"
+ targetprefix "lib"
+ links {
+ "GLESv1_CM",
+ "GLESv2",
+ "log",
+ "OpenSLES",
+ "c++_static"
+ }
+ linkoptions {
+ "-Wl,-soname,libSDL2.so",
+ }
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ if _OPTIONS["PLATFORM"]=="arm" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/armeabi-v7a")
+ end
+ if _OPTIONS["PLATFORM"]=="arm64" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/arm64-v8a")
+ end
+ if _OPTIONS["PLATFORM"]=="mips" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/mips")
+ end
+ if _OPTIONS["PLATFORM"]=="mips64" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/mips64")
+ end
+ if _OPTIONS["PLATFORM"]=="x86" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86")
+ end
+ if _OPTIONS["PLATFORM"]=="x64" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86_64")
+ end
+ end
+
+ strip()
+else
+ kind "StaticLib"
+end
+
+ files {
+ MAME_DIR .. "3rdparty/SDL2/include/begin_code.h",
+ MAME_DIR .. "3rdparty/SDL2/include/close_code.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_assert.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_atomic.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_audio.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_bits.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_blendmode.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_clipboard.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_config.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_config_windows.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_copying.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_cpuinfo.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_egl.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_endian.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_error.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_events.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_filesystem.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_gamecontroller.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_gesture.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_haptic.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_hints.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_joystick.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_keyboard.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_keycode.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_loadso.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_log.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_main.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_messagebox.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_mouse.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_mutex.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_name.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengl.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengl_glext.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengles.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengles2.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengles2_gl2.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengles2_gl2ext.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengles2_gl2platform.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_opengles2_khrplatform.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_pixels.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_platform.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_power.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_quit.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_rect.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_render.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_revision.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_rwops.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_scancode.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_shape.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_stdinc.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_surface.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_system.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_syswm.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_assert.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_common.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_compare.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_crc32.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_font.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_fuzzer.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_harness.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_images.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_log.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_md5.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_test_random.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_thread.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_timer.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_touch.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_types.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_version.h",
+ MAME_DIR .. "3rdparty/SDL2/include/SDL_video.h",
+
+
+ MAME_DIR .. "3rdparty/SDL2/src/atomic/SDL_atomic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/atomic/SDL_spinlock.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/disk/SDL_diskaudio.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/disk/SDL_diskaudio.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/dummy/SDL_dummyaudio.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/dummy/SDL_dummyaudio.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_audio.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_audio_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_audiocvt.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_audiodev.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_audiodev_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_audiotypecvt.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_mixer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_sysaudio.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_wave.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/SDL_wave.h",
+ MAME_DIR .. "3rdparty/SDL2/src/cpuinfo/SDL_cpuinfo.c",
+ MAME_DIR .. "3rdparty/SDL2/src/dynapi/SDL_dynapi.c",
+ MAME_DIR .. "3rdparty/SDL2/src/dynapi/SDL_dynapi.h",
+ MAME_DIR .. "3rdparty/SDL2/src/dynapi/SDL_dynapi_overrides.h",
+ MAME_DIR .. "3rdparty/SDL2/src/dynapi/SDL_dynapi_procs.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/blank_cursor.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/default_cursor.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_clipboardevents.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_clipboardevents_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_dropevents.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_dropevents_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_events.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_events_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_gesture.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_gesture_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_keyboard.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_keyboard_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_mouse.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_mouse_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_quit.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_sysevents.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_touch.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_touch_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_windowevents.c",
+ MAME_DIR .. "3rdparty/SDL2/src/events/SDL_windowevents_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/file/SDL_rwops.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/SDL_haptic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/SDL_syshaptic.h",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/SDL_gamecontroller.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/SDL_joystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/SDL_joystick_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/SDL_sysjoystick.h",
+ MAME_DIR .. "3rdparty/SDL2/src/loadso/windows/SDL_sysloadso.c",
+ MAME_DIR .. "3rdparty/SDL2/src/power/SDL_power.c",
+ MAME_DIR .. "3rdparty/SDL2/src/power/windows/SDL_syspower.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/direct3d/SDL_render_d3d.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/direct3d11/SDL_render_d3d11.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/mmx.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengl/SDL_render_gl.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengl/SDL_shaders_gl.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengl/SDL_shaders_gl.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengles2/SDL_render_gles2.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengles2/SDL_shaders_gles2.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_d3dmath.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_d3dmath.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_render.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_sysrender.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_yuv_mmx.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_yuv_sw.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/SDL_yuv_sw_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_blendfillrect.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_blendfillrect.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_blendline.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_blendline.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_blendpoint.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_blendpoint.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_draw.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_drawline.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_drawline.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_drawpoint.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_drawpoint.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_render_sw.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_render_sw_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_rotate.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/software/SDL_rotate.h",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL.c",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL_assert.c",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL_error.c",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL_error_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL_hints.c",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL_hints_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/SDL_log.c",
+ MAME_DIR .. "3rdparty/SDL2/src/stdlib/SDL_getenv.c",
+ MAME_DIR .. "3rdparty/SDL2/src/stdlib/SDL_iconv.c",
+ MAME_DIR .. "3rdparty/SDL2/src/stdlib/SDL_malloc.c",
+ MAME_DIR .. "3rdparty/SDL2/src/stdlib/SDL_qsort.c",
+ MAME_DIR .. "3rdparty/SDL2/src/stdlib/SDL_stdlib.c",
+ MAME_DIR .. "3rdparty/SDL2/src/stdlib/SDL_string.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/SDL_systhread.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/SDL_thread.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/SDL_thread_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/SDL_systimer.h",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/SDL_timer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/SDL_timer_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/dummy/SDL_nullevents.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/dummy/SDL_nullevents_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/dummy/SDL_nullframebuffer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/dummy/SDL_nullframebuffer_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/dummy/SDL_nullvideo.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/dummy/SDL_nullvideo.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_0.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_1.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_A.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_auto.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_auto.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_copy.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_copy.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_N.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_slow.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_blit_slow.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_bmp.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_clipboard.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_egl.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_fillrect.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_glesfuncs.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_glfuncs.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_pixels.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_pixels_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_rect.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_rect_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_RLEaccel.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_RLEaccel_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_shape.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_shape_internals.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_stretch.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_surface.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_sysvideo.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/SDL_video.c",
+
+ }
+ if _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="windows" then
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/libm/e_atan2.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/e_log.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/e_pow.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/e_rem_pio2.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/e_sqrt.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/k_cos.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/k_rem_pio2.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/k_sin.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/k_tan.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/math.h",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/math_private.h",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_atan.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_copysign.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_cos.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_fabs.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_floor.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_scalbn.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_sin.c",
+ MAME_DIR .. "3rdparty/SDL2/src/libm/s_tan.c",
+ }
+ end
+ if _OPTIONS["targetos"]~="windows" then
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengles/SDL_render_gles.c",
+ MAME_DIR .. "3rdparty/SDL2/src/render/opengles/SDL_glesfuncs.h",
+ }
+ end
+
+ if _OPTIONS["targetos"]=="android" then
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/audio/android/opensl_io.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/android/opensl_io.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/android/SDL_androidaudio.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/android/SDL_androidaudio.c",
+ MAME_DIR .. "3rdparty/SDL2/src/core/android/SDL_android.c",
+ MAME_DIR .. "3rdparty/SDL2/src/core/android/SDL_android.h",
+ MAME_DIR .. "3rdparty/SDL2/src/filesystem/android/SDL_sysfilesystem.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/dummy/SDL_syshaptic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/android/SDL_sysjoystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/loadso/dlopen/SDL_sysloadso.c",
+ MAME_DIR .. "3rdparty/SDL2/src/power/android/SDL_syspower.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_syscond.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_sysmutex.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_sysmutex_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_syssem.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_systhread.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_systhread_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_systls.c",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/unix/SDL_systimer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/unix/SDL_systimer_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidclipboard.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidclipboard.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidevents.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidevents.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidgl.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidkeyboard.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidkeyboard.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidmessagebox.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidmessagebox.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidmouse.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidmouse.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidtouch.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidtouch.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidvideo.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidvideo.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidwindow.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/android/SDL_androidwindow.h",
+ }
+ end
+
+ if _OPTIONS["targetos"]=="macosx" then
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/audio/coreaudio/SDL_coreaudio.m",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/coreaudio/SDL_coreaudio.h",
+ MAME_DIR .. "3rdparty/SDL2/src/file/cocoa/SDL_rwopsbundlesupport.m",
+ MAME_DIR .. "3rdparty/SDL2/src/file/cocoa/SDL_rwopsbundlesupport.h",
+ MAME_DIR .. "3rdparty/SDL2/src/filesystem/cocoa/SDL_sysfilesystem.m",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/darwin/SDL_syshaptic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/darwin/SDL_syshaptic_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/darwin/SDL_sysjoystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/darwin/SDL_sysjoystick_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/loadso/dlopen/SDL_sysloadso.c",
+ MAME_DIR .. "3rdparty/SDL2/src/power/macosx/SDL_syspower.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_syscond.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_sysmutex.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_sysmutex_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_syssem.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_systhread.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_systhread_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/pthread/SDL_systls.c",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/unix/SDL_systimer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoaclipboard.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoaclipboard.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoaevents.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoaevents.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoakeyboard.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoakeyboard.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamessagebox.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamessagebox.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamodes.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamodes.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamouse.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamouse.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamousetap.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoamousetap.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoaopengl.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoaopengl.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoashape.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoashape.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoavideo.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoavideo.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoawindow.m",
+ MAME_DIR .. "3rdparty/SDL2/src/video/cocoa/SDL_cocoawindow.h",
+
+ }
+ end
+
+ if _OPTIONS["targetos"]=="windows" then
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/thread/generic/SDL_syscond.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/directsound/SDL_directsound.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/directsound/SDL_directsound.h",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/winmm/SDL_winmm.c",
+ MAME_DIR .. "3rdparty/SDL2/src/audio/winmm/SDL_winmm.h",
+ MAME_DIR .. "3rdparty/SDL2/src/core/windows/SDL_directx.h",
+ MAME_DIR .. "3rdparty/SDL2/src/core/windows/SDL_windows.c",
+ MAME_DIR .. "3rdparty/SDL2/src/core/windows/SDL_windows.h",
+ MAME_DIR .. "3rdparty/SDL2/src/core/windows/SDL_xinput.c",
+ MAME_DIR .. "3rdparty/SDL2/src/core/windows/SDL_xinput.h",
+ MAME_DIR .. "3rdparty/SDL2/src/filesystem/windows/SDL_sysfilesystem.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/windows/SDL_dinputhaptic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/windows/SDL_dinputhaptic_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/windows/SDL_windowshaptic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/windows/SDL_windowshaptic_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/windows/SDL_xinputhaptic.c",
+ MAME_DIR .. "3rdparty/SDL2/src/haptic/windows/SDL_xinputhaptic_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_dinputjoystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_dinputjoystick_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_mmjoystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_windowsjoystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_windowsjoystick_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_xinputjoystick.c",
+ MAME_DIR .. "3rdparty/SDL2/src/joystick/windows/SDL_xinputjoystick_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/windows/SDL_sysmutex.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/windows/SDL_syssem.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/windows/SDL_systhread.c",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/windows/SDL_systhread_c.h",
+ MAME_DIR .. "3rdparty/SDL2/src/thread/windows/SDL_systls.c",
+ MAME_DIR .. "3rdparty/SDL2/src/timer/windows/SDL_systimer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_vkeys.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsevents.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsevents.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsframebuffer.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsframebuffer.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowskeyboard.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowskeyboard.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsmessagebox.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsmessagebox.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsmodes.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsmodes.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsmouse.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsmouse.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsopengl.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsopengl.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsopengles.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsshape.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsshape.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsvideo.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowsvideo.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowswindow.c",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/SDL_windowswindow.h",
+ MAME_DIR .. "3rdparty/SDL2/src/video/windows/wmmsg.h",
+ MAME_DIR .. "3rdparty/SDL2/src/main/windows/version.rc",
+ }
+ end
+
+ configuration { "vs*" }
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/audio/xaudio2/SDL_xaudio2.c",
+ }
+
+ buildoptions {
+ "/wd4200", -- warning C4200: nonstandard extension used: zero-sized array in struct/union
+ "/wd4055", -- warning C4055: 'type cast': from data pointer 'void *' to function pointer 'xxx'
+ "/wd4152", -- warning C4152: nonstandard extension, function/data pointer conversion in expression
+ "/wd4057", -- warning C4057: 'function': 'xxx' differs in indirection to slightly different base types from 'xxx'
+ "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used
+ "/wd4204", -- warning C4204: nonstandard extension used: non-constant aggregate initializer
+ "/wd4054", -- warning C4054: 'type cast': from function pointer 'xxx' to data pointer 'xxx'
+ }
+ defines {
+ "HAVE_LIBC",
+ }
+
+ configuration { "mingw*"}
+ includedirs {
+ MAME_DIR .. "3rdparty/SDL2-override/mingw",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
+ }
+ buildoptions_c {
+ "-Wno-bad-function-cast",
+ "-Wno-discarded-qualifiers",
+ "-Wno-format",
+ "-Wno-format-security",
+ "-Wno-pointer-to-int-cast",
+ "-Wno-strict-prototypes",
+ "-Wno-undef",
+ "-Wno-unused-but-set-variable",
+ }
+
+ configuration { "mingw-clang"}
+ buildoptions_c {
+ "-Wno-incompatible-pointer-types-discards-qualifiers"
+ }
+
+ configuration { "osx*"}
+ buildoptions {
+ "-Wno-undef",
+ }
+ buildoptions_objc {
+ "-x objective-c",
+ "-std=c99",
+ }
+
+ buildoptions_c {
+ "-Wno-bad-function-cast",
+ "-Wno-strict-prototypes",
+ }
+
+ configuration { "android-*"}
+ defines {
+ "GL_GLEXT_PROTOTYPES",
+ }
+ buildoptions_c {
+ "-Wno-bad-function-cast",
+ "-Wno-incompatible-pointer-types-discards-qualifiers",
+ "-Wno-unneeded-internal-declaration",
+ "-Wno-unused-const-variable",
+ }
+
+ configuration { }
+ includedirs {
+ MAME_DIR .. "3rdparty/SDL2/include",
+ }
+
+end
+
+
+--------------------------------------------------
+-- linenoise library
+--------------------------------------------------
+
+if (_OPTIONS["osd"] ~= "uwp") then
+project "linenoise"
+ uuid "7320ffc8-2748-4add-8864-ae29b72a8511"
+ kind (LIBTYPE)
+
+ addprojectflags()
+
+ configuration { "vs*" }
+ buildoptions {
+ "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used
+ }
+
+ configuration { }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/linenoise",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/linenoise/utf8.c",
+ MAME_DIR .. "3rdparty/linenoise/linenoise.c",
+ }
+end
+
+
+--------------------------------------------------
+-- utf8proc library objects
+--------------------------------------------------
+
+if not _OPTIONS["with-system-utf8proc"] then
+project "utf8proc"
+ uuid "1f881f09-0395-4483-ac37-2935fb092187"
+ kind "StaticLib"
+
+ defines {
+ "UTF8PROC_STATIC",
+ }
+
+ configuration "Debug"
+ defines {
+ "verbose=-1",
+ }
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-strict-prototypes",
+ }
+
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/utf8proc/utf8proc.c"
+ }
+else
+links {
+ ext_lib("utf8proc"),
+}
+end
+
+
+--------------------------------------------------
+-- wdlfft library objects (from Cockos WDL)
+--------------------------------------------------
+
+project "wdlfft"
+ uuid "74ca017e-fa0d-48b8-81d6-8081a37be14c"
+ kind "StaticLib"
+
+ configuration { "gmake or ninja" }
+ buildoptions_c {
+ "-Wno-strict-prototypes",
+ }
+
+ configuration { }
+
+ files {
+ MAME_DIR .. "3rdparty/wdlfft/fft.c",
+ MAME_DIR .. "3rdparty/wdlfft/fft.h"
+ }
+
+
+--------------------------------------------------
+-- ymfm library objects
+--------------------------------------------------
+
+project "ymfm"
+ uuid "2403a536-cb0a-4b50-b41f-10c17917689b"
+ kind "StaticLib"
+
+ configuration { }
+ defines {
+ "YMFM_MAME",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_adpcm.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_adpcm.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_fm.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_fm.ipp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_misc.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_misc.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opl.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opl.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opm.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opm.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opn.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opn.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opq.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opq.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opz.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_opz.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_pcm.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_pcm.h",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_ssg.cpp",
+ MAME_DIR .. "3rdparty/ymfm/src/ymfm_ssg.h",
+ }
+
+
+--------------------------------------------------
+-- asmjit library
+--------------------------------------------------
+
+if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
+project "asmjit"
+ uuid "4539757c-6e99-4bae-b3d0-b342a7c49539"
+ kind "StaticLib"
+
+ configuration { }
+
+ if _OPTIONS["targetos"]=="macosx" and _OPTIONS["gcc"]~=nil then
+ if string.find(_OPTIONS["gcc"], "clang") and (version < 80000) then
+ defines {
+ "TARGET_OS_OSX=1",
+ }
+ end
+ end
+
+ files {
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/asmjit.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/api-build_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/api-config.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/arch.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/arch.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/assembler.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/assembler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/builder.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/builder.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/callconv.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/callconv.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codebuffer.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codebufferwriter_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codeholder.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/codeholder.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/compiler.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/compiler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/constpool.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/constpool.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/cpuinfo.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/cpuinfo.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/datatypes.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitter.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitter.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitterutils.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/emitterutils_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/environment.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/environment.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/errorhandler.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/errorhandler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/features.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/formatter.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/formatter.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/func.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/func.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/globals.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/globals.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/inst.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/inst.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitallocator.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitallocator.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitruntime.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/jitruntime.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/logger.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/logger.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/misc_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/operand.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/operand.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/osutils_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/raassignment_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rabuilders_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/radefs_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/ralocal.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/ralocal_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rapass.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rapass_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rastack.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/rastack_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/string.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/string.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/support.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/support.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/target.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/target.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/type.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/type.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/virtmem.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/virtmem.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zone.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zone.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonehash.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonehash.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonelist.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonelist.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonestack.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonestack.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonestring.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonetree.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonetree.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonevector.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/core/zonevector.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86archdata.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86archdata_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86assembler.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86assembler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86builder.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86builder.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86callconv.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86callconv_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86compiler.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86compiler.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86emitter.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86features.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86features.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86formatter.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86formatter_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86globals.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instapi.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instapi_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86instdb_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86internal.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86internal_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86opcode_p.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86operand.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86operand.h",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86rapass.cpp",
+ MAME_DIR .. "3rdparty/asmjit/src/asmjit/x86/x86rapass_p.h",
+ }
+end
diff --git a/docs/release/scripts/src/benchmarks.lua b/docs/release/scripts/src/benchmarks.lua
new file mode 100644
index 00000000000..2e1f97405a2
--- /dev/null
+++ b/docs/release/scripts/src/benchmarks.lua
@@ -0,0 +1,74 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- benchmarks.lua
+--
+-- Rules for building benchmarks
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- Google Benchmark library objects
+--------------------------------------------------
+
+project "benchmark"
+ uuid "60a7e05c-8b4f-497c-bfda-2949a009ba0d"
+ kind "StaticLib"
+
+ configuration { }
+ defines {
+ "HAVE_STD_REGEX",
+ }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/benchmark/include",
+ }
+ files {
+ MAME_DIR .. "3rdparty/benchmark/src/benchmark.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/colorprint.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/commandlineflags.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/complexity.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/console_reporter.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/csv_reporter.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/json_reporter.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/reporter.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/sleep.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/string_util.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/sysinfo.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/timers.cc",
+ MAME_DIR .. "3rdparty/benchmark/src/re_std.cc",
+ }
+
+
+
+project("benchmarks")
+ uuid ("a9750a48-d283-4a6d-b126-31c7ce049af1")
+ kind "ConsoleApp"
+
+ flags {
+ "Symbols", -- always include minimum symbols for executables
+ }
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+
+ configuration { }
+
+ links {
+ "benchmark",
+ }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/benchmark/include",
+ MAME_DIR .. "src/osd",
+ }
+
+ files {
+ MAME_DIR .. "benchmarks/main.cpp",
+ MAME_DIR .. "benchmarks/eminline_native.cpp",
+ MAME_DIR .. "benchmarks/eminline_noasm.cpp",
+ }
+
diff --git a/docs/release/scripts/src/bus.lua b/docs/release/scripts/src/bus.lua
new file mode 100644
index 00000000000..cb898a2a4c9
--- /dev/null
+++ b/docs/release/scripts/src/bus.lua
@@ -0,0 +1,4652 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- bus.lua
+--
+-- Rules for building bus cores
+--
+---------------------------------------------------------------------------
+
+-------------------------------------------------
+--
+--@src/devices/bus/a7800/a78_slot.h,BUSES["A7800"] = true
+---------------------------------------------------
+
+if (BUSES["A7800"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/a7800/a78_slot.cpp",
+ MAME_DIR .. "src/devices/bus/a7800/a78_slot.h",
+ MAME_DIR .. "src/devices/bus/a7800/a78_carts.h",
+ MAME_DIR .. "src/devices/bus/a7800/rom.cpp",
+ MAME_DIR .. "src/devices/bus/a7800/rom.h",
+ MAME_DIR .. "src/devices/bus/a7800/hiscore.cpp",
+ MAME_DIR .. "src/devices/bus/a7800/hiscore.h",
+ MAME_DIR .. "src/devices/bus/a7800/xboard.cpp",
+ MAME_DIR .. "src/devices/bus/a7800/xboard.h",
+ MAME_DIR .. "src/devices/bus/a7800/cpuwiz.cpp",
+ MAME_DIR .. "src/devices/bus/a7800/cpuwiz.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/a800/a800_slot.h,BUSES["A800"] = true
+---------------------------------------------------
+
+if (BUSES["A800"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/a800/a8sio.cpp",
+ MAME_DIR .. "src/devices/bus/a800/a8sio.h",
+ MAME_DIR .. "src/devices/bus/a800/atari810.cpp",
+ MAME_DIR .. "src/devices/bus/a800/atari810.h",
+ MAME_DIR .. "src/devices/bus/a800/atari1050.cpp",
+ MAME_DIR .. "src/devices/bus/a800/atari1050.h",
+ MAME_DIR .. "src/devices/bus/a800/cassette.cpp",
+ MAME_DIR .. "src/devices/bus/a800/cassette.h",
+ MAME_DIR .. "src/devices/bus/a800/a800_slot.cpp",
+ MAME_DIR .. "src/devices/bus/a800/a800_slot.h",
+ MAME_DIR .. "src/devices/bus/a800/a800_carts.h",
+ MAME_DIR .. "src/devices/bus/a800/rom.cpp",
+ MAME_DIR .. "src/devices/bus/a800/rom.h",
+ MAME_DIR .. "src/devices/bus/a800/oss.cpp",
+ MAME_DIR .. "src/devices/bus/a800/oss.h",
+ MAME_DIR .. "src/devices/bus/a800/sparta.cpp",
+ MAME_DIR .. "src/devices/bus/a800/sparta.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/abcbus/abcbus.h,BUSES["ABCBUS"] = true
+---------------------------------------------------
+
+if (BUSES["ABCBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/abcbus/abcbus.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/abcbus.h",
+ MAME_DIR .. "src/devices/bus/abcbus/abc890.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/abc890.h",
+ MAME_DIR .. "src/devices/bus/abcbus/cadmouse.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/cadmouse.h",
+ MAME_DIR .. "src/devices/bus/abcbus/db4106.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/db4106.h",
+ MAME_DIR .. "src/devices/bus/abcbus/db4107.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/db4107.h",
+ MAME_DIR .. "src/devices/bus/abcbus/db4112.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/db4112.h",
+ MAME_DIR .. "src/devices/bus/abcbus/fd2.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/fd2.h",
+ MAME_DIR .. "src/devices/bus/abcbus/lux10828.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/lux10828.h",
+ MAME_DIR .. "src/devices/bus/abcbus/lux21046.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/lux21046.h",
+ MAME_DIR .. "src/devices/bus/abcbus/lux21056.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/lux21056.h",
+ MAME_DIR .. "src/devices/bus/abcbus/lux4105.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/lux4105.h",
+ MAME_DIR .. "src/devices/bus/abcbus/memcard.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/memcard.h",
+ MAME_DIR .. "src/devices/bus/abcbus/ram.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/ram.h",
+ MAME_DIR .. "src/devices/bus/abcbus/sio.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/sio.h",
+ MAME_DIR .. "src/devices/bus/abcbus/slutprov.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/slutprov.h",
+ MAME_DIR .. "src/devices/bus/abcbus/ssa.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/ssa.h",
+ MAME_DIR .. "src/devices/bus/abcbus/uni800.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/uni800.h",
+ MAME_DIR .. "src/devices/bus/abcbus/unidisk.cpp",
+ MAME_DIR .. "src/devices/bus/abcbus/unidisk.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/acorn/bus.h,BUSES["ACORN"] = true
+---------------------------------------------------
+
+if (BUSES["ACORN"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/acorn/bus.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/bus.h",
+ MAME_DIR .. "src/devices/bus/acorn/atom/discpack.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/atom/discpack.h",
+ MAME_DIR .. "src/devices/bus/acorn/atom/econet.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/atom/econet.h",
+ MAME_DIR .. "src/devices/bus/acorn/atom/sid.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/atom/sid.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/4080term.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/4080term.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/fdc.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/hires.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/hires.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/ieee.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/ieee.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/32k.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/32k.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/8k.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/8k.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/cass.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/cass.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/econet.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/econet.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/fdc.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu40.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu40.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu80.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu80.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/vib.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/vib.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/adam/exp.h,BUSES["ADAM"] = true
+---------------------------------------------------
+
+if (BUSES["ADAM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/adam/exp.cpp",
+ MAME_DIR .. "src/devices/bus/adam/exp.h",
+ MAME_DIR .. "src/devices/bus/adam/adamlink.cpp",
+ MAME_DIR .. "src/devices/bus/adam/adamlink.h",
+ MAME_DIR .. "src/devices/bus/adam/ide.cpp",
+ MAME_DIR .. "src/devices/bus/adam/ide.h",
+ MAME_DIR .. "src/devices/bus/adam/ram.cpp",
+ MAME_DIR .. "src/devices/bus/adam/ram.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/adamnet/adamnet.h,BUSES["ADAMNET"] = true
+---------------------------------------------------
+
+if (BUSES["ADAMNET"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/adamnet/adamnet.cpp",
+ MAME_DIR .. "src/devices/bus/adamnet/adamnet.h",
+ MAME_DIR .. "src/devices/bus/adamnet/ddp.cpp",
+ MAME_DIR .. "src/devices/bus/adamnet/ddp.h",
+ MAME_DIR .. "src/devices/bus/adamnet/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/adamnet/fdc.h",
+ MAME_DIR .. "src/devices/bus/adamnet/kb.cpp",
+ MAME_DIR .. "src/devices/bus/adamnet/kb.h",
+ MAME_DIR .. "src/devices/bus/adamnet/printer.cpp",
+ MAME_DIR .. "src/devices/bus/adamnet/printer.h",
+ MAME_DIR .. "src/devices/bus/adamnet/spi.cpp",
+ MAME_DIR .. "src/devices/bus/adamnet/spi.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/adb/adb.h,BUSES["ADB"] = true
+---------------------------------------------------
+
+if (BUSES["ADB"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/adb/adb.cpp",
+ MAME_DIR .. "src/devices/bus/adb/adb.h",
+ MAME_DIR .. "src/devices/bus/adb/adbhle.cpp",
+ MAME_DIR .. "src/devices/bus/adb/adbhle.h",
+ MAME_DIR .. "src/devices/bus/adb/a9m0330.cpp",
+ MAME_DIR .. "src/devices/bus/adb/a9m0330.h",
+ MAME_DIR .. "src/devices/bus/adb/a9m0331.cpp",
+ MAME_DIR .. "src/devices/bus/adb/a9m0331.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/apf/slot.h,BUSES["APF"] = true
+---------------------------------------------------
+
+if (BUSES["APF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/apf/slot.cpp",
+ MAME_DIR .. "src/devices/bus/apf/slot.h",
+ MAME_DIR .. "src/devices/bus/apf/rom.cpp",
+ MAME_DIR .. "src/devices/bus/apf/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/apricot/expansion/expansion.h,BUSES["APRICOT_EXPANSION"] = true
+---------------------------------------------------
+
+if (BUSES["APRICOT_EXPANSION"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/apricot/expansion/expansion.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/expansion.h",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/cards.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/cards.h",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/ram.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/ram.h",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/winchester.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/expansion/winchester.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/apricot/keyboard/keyboard.h,BUSES["APRICOT_KEYBOARD"] = true
+---------------------------------------------------
+
+if (BUSES["APRICOT_KEYBOARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/apricot/keyboard/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/keyboard/keyboard.h",
+ MAME_DIR .. "src/devices/bus/apricot/keyboard/hle.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/keyboard/hle.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/apricot/video/video.h,BUSES["APRICOT_VIDEO"] = true
+---------------------------------------------------
+
+if (BUSES["APRICOT_VIDEO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/apricot/video/video.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/video/video.h",
+ MAME_DIR .. "src/devices/bus/apricot/video/cards.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/video/cards.h",
+ MAME_DIR .. "src/devices/bus/apricot/video/mono.cpp",
+ MAME_DIR .. "src/devices/bus/apricot/video/mono.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/aquarius/slot.h,BUSES["AQUARIUS"] = true
+---------------------------------------------------
+
+if (BUSES["AQUARIUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/aquarius/slot.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/slot.h",
+ MAME_DIR .. "src/devices/bus/aquarius/c1541.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/c1541.h",
+ MAME_DIR .. "src/devices/bus/aquarius/mini.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/mini.h",
+ MAME_DIR .. "src/devices/bus/aquarius/qdisk.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/qdisk.h",
+ MAME_DIR .. "src/devices/bus/aquarius/ram.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/ram.h",
+ MAME_DIR .. "src/devices/bus/aquarius/rom.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/rom.h",
+ MAME_DIR .. "src/devices/bus/aquarius/supercart.cpp",
+ MAME_DIR .. "src/devices/bus/aquarius/supercart.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/arcadia/slot.h,BUSES["ARCADIA"] = true
+---------------------------------------------------
+
+if (BUSES["ARCADIA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/arcadia/slot.cpp",
+ MAME_DIR .. "src/devices/bus/arcadia/slot.h",
+ MAME_DIR .. "src/devices/bus/arcadia/rom.cpp",
+ MAME_DIR .. "src/devices/bus/arcadia/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/astrocde/slot.h,BUSES["ASTROCADE"] = true
+---------------------------------------------------
+
+if (BUSES["ASTROCADE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/astrocde/slot.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/slot.h",
+ MAME_DIR .. "src/devices/bus/astrocde/rom.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/rom.h",
+ MAME_DIR .. "src/devices/bus/astrocde/exp.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/exp.h",
+ MAME_DIR .. "src/devices/bus/astrocde/ram.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/ram.h",
+ MAME_DIR .. "src/devices/bus/astrocde/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/ctrl.h",
+ MAME_DIR .. "src/devices/bus/astrocde/joy.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/joy.h",
+ MAME_DIR .. "src/devices/bus/astrocde/cassette.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/cassette.h",
+ MAME_DIR .. "src/devices/bus/astrocde/accessory.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/accessory.h",
+ MAME_DIR .. "src/devices/bus/astrocde/lightpen.cpp",
+ MAME_DIR .. "src/devices/bus/astrocde/lightpen.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/ata/atadev.h,BUSES["ATA"] = true
+--@src/devices/bus/ata/ataintf.h,BUSES["ATA"] = true
+---------------------------------------------------
+
+if (MACHINES["ATAFLASH"]~=null) then
+ BUSES["ATA"] = true
+end
+
+if (BUSES["ATA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ata/atadev.cpp",
+ MAME_DIR .. "src/devices/bus/ata/atadev.h",
+ MAME_DIR .. "src/devices/bus/ata/atahle.cpp",
+ MAME_DIR .. "src/devices/bus/ata/atahle.h",
+ MAME_DIR .. "src/devices/bus/ata/ataintf.cpp",
+ MAME_DIR .. "src/devices/bus/ata/ataintf.h",
+ MAME_DIR .. "src/devices/bus/ata/atapicdr.cpp",
+ MAME_DIR .. "src/devices/bus/ata/atapicdr.h",
+ MAME_DIR .. "src/devices/bus/ata/atapihle.cpp",
+ MAME_DIR .. "src/devices/bus/ata/atapihle.h",
+ MAME_DIR .. "src/devices/bus/ata/cr589.cpp",
+ MAME_DIR .. "src/devices/bus/ata/cr589.h",
+ MAME_DIR .. "src/devices/bus/ata/idehd.cpp",
+ MAME_DIR .. "src/devices/bus/ata/idehd.h",
+ MAME_DIR .. "src/devices/bus/ata/px320a.cpp",
+ MAME_DIR .. "src/devices/bus/ata/px320a.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/fdc/fdc.h,BUSES["BBC_FDC"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_FDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/fdc/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/fdc.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/acorn.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/acorn.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/ams.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/ams.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/cumana.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/cumana.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/cv1797.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/cv1797.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/kenda.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/kenda.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/opus.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/opus.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/solidisk.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/solidisk.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/udm.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/udm.h",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/watford.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/fdc/watford.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/analogue/analogue.h,BUSES["BBC_ANALOGUE"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_ANALOGUE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/analogue/analogue.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/analogue.h",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/bitstik.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/bitstik.h",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/joystick.h",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/cfa3000a.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/analogue/cfa3000a.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/cart/slot.h,BUSES["BBC_CART"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_CART"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/cart/slot.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/cart/slot.h",
+ MAME_DIR .. "src/devices/bus/bbc/cart/click.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/cart/click.h",
+ MAME_DIR .. "src/devices/bus/bbc/cart/mega256.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/cart/mega256.h",
+ MAME_DIR .. "src/devices/bus/bbc/cart/mr8000.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/cart/mr8000.h",
+ MAME_DIR .. "src/devices/bus/bbc/cart/msc.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/cart/msc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/internal/internal.h,BUSES["BBC_INTERNAL"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_INTERNAL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/internal/internal.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/internal.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/aries.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/aries.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/atpl.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/atpl.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/cumana68k.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/cumana68k.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/integrab.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/integrab.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/morleyaa.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/morleyaa.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/overlay.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/overlay.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/peartree.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/peartree.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/ramamp.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/ramamp.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/raven20.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/raven20.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/romex.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/romex.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/stlswr.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/stlswr.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/stl2m128.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/stl2m128.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/stl4m32.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/stl4m32.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/werom.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/werom.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/weromram.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/weromram.h",
+ MAME_DIR .. "src/devices/bus/bbc/internal/we32kram.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/internal/we32kram.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/exp/exp.h,BUSES["BBC_EXP"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_EXP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/exp/exp.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/exp/exp.h",
+ MAME_DIR .. "src/devices/bus/bbc/exp/autocue.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/exp/autocue.h",
+ MAME_DIR .. "src/devices/bus/bbc/exp/mertec.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/exp/mertec.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/joyport/joyport.h,BUSES["BBC_JOYPORT"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_JOYPORT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/joyport/joyport.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/joyport/joyport.h",
+ MAME_DIR .. "src/devices/bus/bbc/joyport/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/joyport/joystick.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/modem/modem.h,BUSES["BBC_MODEM"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_MODEM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/modem/modem.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/modem/modem.h",
+ MAME_DIR .. "src/devices/bus/bbc/modem/scsiaiv.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/modem/scsiaiv.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/1mhzbus/1mhzbus.h,BUSES["BBC_1MHZBUS"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_1MHZBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/1mhzbus.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/1mhzbus.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/autoprom.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/autoprom.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebopl.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebopl.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebsid.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebsid.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/cc500.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/cc500.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/datacentre.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/datacentre.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/emrmidi.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/emrmidi.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/ide.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/ide.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/ieee488.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/ieee488.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/m2000.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/m2000.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/m5000.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/m5000.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/multiform.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/multiform.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/opus3.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/opus3.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/pdram.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/pdram.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/pms64k.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/pms64k.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/ramdisc.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/ramdisc.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/sasi.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/sasi.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/scsi.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/scsi.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/sprite.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/sprite.h",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/cfa3000opt.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/1mhzbus/cfa3000opt.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/rom/slot.h,BUSES["BBC_ROM"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_ROM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/rom/slot.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/slot.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/rom.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/rom.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/ram.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/ram.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/nvram.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/nvram.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/datagem.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/datagem.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/dfs.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/dfs.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/genie.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/genie.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/pal.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/pal.h",
+ MAME_DIR .. "src/devices/bus/bbc/rom/rtc.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/rom/rtc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/tube/tube.h,BUSES["BBC_TUBE"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_TUBE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_32016.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_32016.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_6502.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_6502.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_80186.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_80186.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_80286.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_80286.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_a500.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_a500.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_arm.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_arm.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_arm7.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_arm7.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_casper.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_casper.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_cms6809.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_cms6809.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_rc6502.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_rc6502.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_x25.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_x25.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_z80.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_z80.h",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_zep100.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/tube/tube_zep100.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bbc/userport/userport.h,BUSES["BBC_USERPORT"] = true
+---------------------------------------------------
+
+if (BUSES["BBC_USERPORT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bbc/userport/userport.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/userport.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/beebspch.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/beebspch.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/lcd.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/lcd.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/m4000.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/m4000.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/palext.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/palext.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/pointer.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/pointer.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/usersplit.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/usersplit.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/voicebox.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/voicebox.h",
+ MAME_DIR .. "src/devices/bus/bbc/userport/cfa3000kbd.cpp",
+ MAME_DIR .. "src/devices/bus/bbc/userport/cfa3000kbd.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/bw2/exp.h,BUSES["BW2"] = true
+---------------------------------------------------
+
+if (BUSES["BW2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bw2/exp.cpp",
+ MAME_DIR .. "src/devices/bus/bw2/exp.h",
+ MAME_DIR .. "src/devices/bus/bw2/ramcard.cpp",
+ MAME_DIR .. "src/devices/bus/bw2/ramcard.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/c64/exp.h,BUSES["C64"] = true
+--@src/devices/bus/c64/user.h,BUSES["C64"] = true
+---------------------------------------------------
+
+if (BUSES["C64"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/c64/exp.cpp",
+ MAME_DIR .. "src/devices/bus/c64/exp.h",
+ MAME_DIR .. "src/devices/bus/c64/buscard.cpp",
+ MAME_DIR .. "src/devices/bus/c64/buscard.h",
+ MAME_DIR .. "src/devices/bus/c64/buscard2.cpp",
+ MAME_DIR .. "src/devices/bus/c64/buscard2.h",
+ MAME_DIR .. "src/devices/bus/c64/c128_comal80.cpp",
+ MAME_DIR .. "src/devices/bus/c64/c128_comal80.h",
+ MAME_DIR .. "src/devices/bus/c64/c128_partner.cpp",
+ MAME_DIR .. "src/devices/bus/c64/c128_partner.h",
+ MAME_DIR .. "src/devices/bus/c64/comal80.cpp",
+ MAME_DIR .. "src/devices/bus/c64/comal80.h",
+ MAME_DIR .. "src/devices/bus/c64/cpm.cpp",
+ MAME_DIR .. "src/devices/bus/c64/cpm.h",
+ MAME_DIR .. "src/devices/bus/c64/currah_speech.cpp",
+ MAME_DIR .. "src/devices/bus/c64/currah_speech.h",
+ MAME_DIR .. "src/devices/bus/c64/dela_ep256.cpp",
+ MAME_DIR .. "src/devices/bus/c64/dela_ep256.h",
+ MAME_DIR .. "src/devices/bus/c64/dela_ep64.cpp",
+ MAME_DIR .. "src/devices/bus/c64/dela_ep64.h",
+ MAME_DIR .. "src/devices/bus/c64/dela_ep7x8.cpp",
+ MAME_DIR .. "src/devices/bus/c64/dela_ep7x8.h",
+ MAME_DIR .. "src/devices/bus/c64/dinamic.cpp",
+ MAME_DIR .. "src/devices/bus/c64/dinamic.h",
+ MAME_DIR .. "src/devices/bus/c64/dqbb.cpp",
+ MAME_DIR .. "src/devices/bus/c64/dqbb.h",
+ MAME_DIR .. "src/devices/bus/c64/easy_calc_result.cpp",
+ MAME_DIR .. "src/devices/bus/c64/easy_calc_result.h",
+ MAME_DIR .. "src/devices/bus/c64/easyflash.cpp",
+ MAME_DIR .. "src/devices/bus/c64/easyflash.h",
+ MAME_DIR .. "src/devices/bus/c64/epyx_fast_load.cpp",
+ MAME_DIR .. "src/devices/bus/c64/epyx_fast_load.h",
+ MAME_DIR .. "src/devices/bus/c64/exos.cpp",
+ MAME_DIR .. "src/devices/bus/c64/exos.h",
+ MAME_DIR .. "src/devices/bus/c64/fcc.cpp",
+ MAME_DIR .. "src/devices/bus/c64/fcc.h",
+ MAME_DIR .. "src/devices/bus/c64/final.cpp",
+ MAME_DIR .. "src/devices/bus/c64/final.h",
+ MAME_DIR .. "src/devices/bus/c64/final3.cpp",
+ MAME_DIR .. "src/devices/bus/c64/final3.h",
+ MAME_DIR .. "src/devices/bus/c64/fun_play.cpp",
+ MAME_DIR .. "src/devices/bus/c64/fun_play.h",
+ MAME_DIR .. "src/devices/bus/c64/georam.cpp",
+ MAME_DIR .. "src/devices/bus/c64/georam.h",
+ MAME_DIR .. "src/devices/bus/c64/ide64.cpp",
+ MAME_DIR .. "src/devices/bus/c64/ide64.h",
+ MAME_DIR .. "src/devices/bus/c64/ieee488.cpp",
+ MAME_DIR .. "src/devices/bus/c64/ieee488.h",
+ MAME_DIR .. "src/devices/bus/c64/kingsoft.cpp",
+ MAME_DIR .. "src/devices/bus/c64/kingsoft.h",
+ MAME_DIR .. "src/devices/bus/c64/mach5.cpp",
+ MAME_DIR .. "src/devices/bus/c64/mach5.h",
+ MAME_DIR .. "src/devices/bus/c64/magic_desk.cpp",
+ MAME_DIR .. "src/devices/bus/c64/magic_desk.h",
+ MAME_DIR .. "src/devices/bus/c64/magic_formel.cpp",
+ MAME_DIR .. "src/devices/bus/c64/magic_formel.h",
+ MAME_DIR .. "src/devices/bus/c64/magic_voice.cpp",
+ MAME_DIR .. "src/devices/bus/c64/magic_voice.h",
+ MAME_DIR .. "src/devices/bus/c64/midi_maplin.cpp",
+ MAME_DIR .. "src/devices/bus/c64/midi_maplin.h",
+ MAME_DIR .. "src/devices/bus/c64/midi_namesoft.cpp",
+ MAME_DIR .. "src/devices/bus/c64/midi_namesoft.h",
+ MAME_DIR .. "src/devices/bus/c64/midi_passport.cpp",
+ MAME_DIR .. "src/devices/bus/c64/midi_passport.h",
+ MAME_DIR .. "src/devices/bus/c64/midi_sci.cpp",
+ MAME_DIR .. "src/devices/bus/c64/midi_sci.h",
+ MAME_DIR .. "src/devices/bus/c64/midi_siel.cpp",
+ MAME_DIR .. "src/devices/bus/c64/midi_siel.h",
+ MAME_DIR .. "src/devices/bus/c64/mikro_assembler.cpp",
+ MAME_DIR .. "src/devices/bus/c64/mikro_assembler.h",
+ MAME_DIR .. "src/devices/bus/c64/multiscreen.cpp",
+ MAME_DIR .. "src/devices/bus/c64/multiscreen.h",
+ MAME_DIR .. "src/devices/bus/c64/music64.cpp",
+ MAME_DIR .. "src/devices/bus/c64/music64.h",
+ MAME_DIR .. "src/devices/bus/c64/neoram.cpp",
+ MAME_DIR .. "src/devices/bus/c64/neoram.h",
+ MAME_DIR .. "src/devices/bus/c64/ocean.cpp",
+ MAME_DIR .. "src/devices/bus/c64/ocean.h",
+ MAME_DIR .. "src/devices/bus/c64/pagefox.cpp",
+ MAME_DIR .. "src/devices/bus/c64/pagefox.h",
+ MAME_DIR .. "src/devices/bus/c64/partner.cpp",
+ MAME_DIR .. "src/devices/bus/c64/partner.h",
+ MAME_DIR .. "src/devices/bus/c64/prophet64.cpp",
+ MAME_DIR .. "src/devices/bus/c64/prophet64.h",
+ MAME_DIR .. "src/devices/bus/c64/ps64.cpp",
+ MAME_DIR .. "src/devices/bus/c64/ps64.h",
+ MAME_DIR .. "src/devices/bus/c64/reu.cpp",
+ MAME_DIR .. "src/devices/bus/c64/reu.h",
+ MAME_DIR .. "src/devices/bus/c64/rex.cpp",
+ MAME_DIR .. "src/devices/bus/c64/rex.h",
+ MAME_DIR .. "src/devices/bus/c64/rex_ep256.cpp",
+ MAME_DIR .. "src/devices/bus/c64/rex_ep256.h",
+ MAME_DIR .. "src/devices/bus/c64/ross.cpp",
+ MAME_DIR .. "src/devices/bus/c64/ross.h",
+ MAME_DIR .. "src/devices/bus/c64/sfx_sound_expander.cpp",
+ MAME_DIR .. "src/devices/bus/c64/sfx_sound_expander.h",
+ MAME_DIR .. "src/devices/bus/c64/silverrock.cpp",
+ MAME_DIR .. "src/devices/bus/c64/silverrock.h",
+ MAME_DIR .. "src/devices/bus/c64/simons_basic.cpp",
+ MAME_DIR .. "src/devices/bus/c64/simons_basic.h",
+ MAME_DIR .. "src/devices/bus/c64/speakeasy.cpp",
+ MAME_DIR .. "src/devices/bus/c64/speakeasy.h",
+ MAME_DIR .. "src/devices/bus/c64/stardos.cpp",
+ MAME_DIR .. "src/devices/bus/c64/stardos.h",
+ MAME_DIR .. "src/devices/bus/c64/std.cpp",
+ MAME_DIR .. "src/devices/bus/c64/std.h",
+ MAME_DIR .. "src/devices/bus/c64/structured_basic.cpp",
+ MAME_DIR .. "src/devices/bus/c64/structured_basic.h",
+ MAME_DIR .. "src/devices/bus/c64/super_explode.cpp",
+ MAME_DIR .. "src/devices/bus/c64/super_explode.h",
+ MAME_DIR .. "src/devices/bus/c64/super_games.cpp",
+ MAME_DIR .. "src/devices/bus/c64/super_games.h",
+ MAME_DIR .. "src/devices/bus/c64/supercpu.cpp",
+ MAME_DIR .. "src/devices/bus/c64/supercpu.h",
+ MAME_DIR .. "src/devices/bus/c64/sw8k.cpp",
+ MAME_DIR .. "src/devices/bus/c64/sw8k.h",
+ MAME_DIR .. "src/devices/bus/c64/swiftlink.cpp",
+ MAME_DIR .. "src/devices/bus/c64/swiftlink.h",
+ MAME_DIR .. "src/devices/bus/c64/system3.cpp",
+ MAME_DIR .. "src/devices/bus/c64/system3.h",
+ MAME_DIR .. "src/devices/bus/c64/tdos.cpp",
+ MAME_DIR .. "src/devices/bus/c64/tdos.h",
+ MAME_DIR .. "src/devices/bus/c64/turbo232.cpp",
+ MAME_DIR .. "src/devices/bus/c64/turbo232.h",
+ MAME_DIR .. "src/devices/bus/c64/vizastar.cpp",
+ MAME_DIR .. "src/devices/bus/c64/vizastar.h",
+ MAME_DIR .. "src/devices/bus/c64/vw64.cpp",
+ MAME_DIR .. "src/devices/bus/c64/vw64.h",
+ MAME_DIR .. "src/devices/bus/c64/warp_speed.cpp",
+ MAME_DIR .. "src/devices/bus/c64/warp_speed.h",
+ MAME_DIR .. "src/devices/bus/c64/westermann.cpp",
+ MAME_DIR .. "src/devices/bus/c64/westermann.h",
+ MAME_DIR .. "src/devices/bus/c64/xl80.cpp",
+ MAME_DIR .. "src/devices/bus/c64/xl80.h",
+ MAME_DIR .. "src/devices/bus/c64/zaxxon.cpp",
+ MAME_DIR .. "src/devices/bus/c64/zaxxon.h",
+ MAME_DIR .. "src/devices/bus/c64/user.cpp",
+ MAME_DIR .. "src/devices/bus/c64/user.h",
+ MAME_DIR .. "src/devices/bus/c64/4dxh.cpp",
+ MAME_DIR .. "src/devices/bus/c64/4dxh.h",
+ MAME_DIR .. "src/devices/bus/c64/4ksa.cpp",
+ MAME_DIR .. "src/devices/bus/c64/4ksa.h",
+ MAME_DIR .. "src/devices/bus/c64/4tba.cpp",
+ MAME_DIR .. "src/devices/bus/c64/4tba.h",
+ MAME_DIR .. "src/devices/bus/c64/16kb.cpp",
+ MAME_DIR .. "src/devices/bus/c64/16kb.h",
+ MAME_DIR .. "src/devices/bus/c64/bn1541.cpp",
+ MAME_DIR .. "src/devices/bus/c64/bn1541.h",
+ MAME_DIR .. "src/devices/bus/c64/geocable.cpp",
+ MAME_DIR .. "src/devices/bus/c64/geocable.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/cbm2/exp.h,BUSES["CBM2"] = true
+--@src/devices/bus/cbm2/user.h,BUSES["CBM2"] = true
+---------------------------------------------------
+
+if (BUSES["CBM2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/cbm2/exp.cpp",
+ MAME_DIR .. "src/devices/bus/cbm2/exp.h",
+ MAME_DIR .. "src/devices/bus/cbm2/24k.cpp",
+ MAME_DIR .. "src/devices/bus/cbm2/24k.h",
+ MAME_DIR .. "src/devices/bus/cbm2/hrg.cpp",
+ MAME_DIR .. "src/devices/bus/cbm2/hrg.h",
+ MAME_DIR .. "src/devices/bus/cbm2/std.cpp",
+ MAME_DIR .. "src/devices/bus/cbm2/std.h",
+ MAME_DIR .. "src/devices/bus/cbm2/user.cpp",
+ MAME_DIR .. "src/devices/bus/cbm2/user.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/cbmiec/cbmiec.h,BUSES["CBMIEC"] = true
+---------------------------------------------------
+
+if (BUSES["CBMIEC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/cbmiec/cbmiec.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/cbmiec.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1541.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1541.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1571.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1571.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1581.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1581.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/c64_nl10.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/c64_nl10.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/cmdhd.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/cmdhd.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/diag264_lb_iec.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/diag264_lb_iec.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/fd2000.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/fd2000.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/interpod.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/interpod.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/serialbox.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/serialbox.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/vic1515.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/vic1515.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/vic1520.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/vic1520.h",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1526.cpp",
+ MAME_DIR .. "src/devices/bus/cbmiec/c1526.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/chanf/slot.h,BUSES["CHANNELF"] = true
+---------------------------------------------------
+
+if (BUSES["CHANNELF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/chanf/slot.cpp",
+ MAME_DIR .. "src/devices/bus/chanf/slot.h",
+ MAME_DIR .. "src/devices/bus/chanf/rom.cpp",
+ MAME_DIR .. "src/devices/bus/chanf/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/comx35/exp.h,BUSES["COMX35"] = true
+---------------------------------------------------
+
+if (BUSES["COMX35"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/comx35/exp.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/exp.h",
+ MAME_DIR .. "src/devices/bus/comx35/clm.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/clm.h",
+ MAME_DIR .. "src/devices/bus/comx35/expbox.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/expbox.h",
+ MAME_DIR .. "src/devices/bus/comx35/eprom.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/eprom.h",
+ MAME_DIR .. "src/devices/bus/comx35/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/fdc.h",
+ MAME_DIR .. "src/devices/bus/comx35/joycard.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/joycard.h",
+ MAME_DIR .. "src/devices/bus/comx35/printer.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/printer.h",
+ MAME_DIR .. "src/devices/bus/comx35/ram.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/ram.h",
+ MAME_DIR .. "src/devices/bus/comx35/thermal.cpp",
+ MAME_DIR .. "src/devices/bus/comx35/thermal.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/coleco/controller/ctrl.h,BUSES["COLECO_CONTROLLER"] = true
+---------------------------------------------------
+
+if (BUSES["COLECO_CONTROLLER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/coleco/controller/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/coleco/controller/ctrl.h",
+ MAME_DIR .. "src/devices/bus/coleco/controller/hand.cpp",
+ MAME_DIR .. "src/devices/bus/coleco/controller/hand.h",
+ MAME_DIR .. "src/devices/bus/coleco/controller/sac.cpp",
+ MAME_DIR .. "src/devices/bus/coleco/controller/sac.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/coleco/cartridge/exp.h,BUSES["COLECO_CART"] = true
+---------------------------------------------------
+
+if (BUSES["COLECO_CART"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/exp.cpp",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/exp.h",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/megacart.cpp",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/megacart.h",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/std.cpp",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/std.h",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/xin1.h",
+ MAME_DIR .. "src/devices/bus/coleco/cartridge/xin1.cpp",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/crvision/slot.h,BUSES["CRVISION"] = true
+---------------------------------------------------
+
+if (BUSES["CRVISION"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/crvision/slot.cpp",
+ MAME_DIR .. "src/devices/bus/crvision/slot.h",
+ MAME_DIR .. "src/devices/bus/crvision/rom.cpp",
+ MAME_DIR .. "src/devices/bus/crvision/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/dmv/dmvbus.h,BUSES["DMV"] = true
+---------------------------------------------------
+
+if (BUSES["DMV"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/dmv/dmvbus.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/dmvbus.h",
+ MAME_DIR .. "src/devices/bus/dmv/k012.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k012.h",
+ MAME_DIR .. "src/devices/bus/dmv/k210.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k210.h",
+ MAME_DIR .. "src/devices/bus/dmv/k220.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k220.h",
+ MAME_DIR .. "src/devices/bus/dmv/k230.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k230.h",
+ MAME_DIR .. "src/devices/bus/dmv/k233.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k233.h",
+ MAME_DIR .. "src/devices/bus/dmv/k801.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k801.h",
+ MAME_DIR .. "src/devices/bus/dmv/k803.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k803.h",
+ MAME_DIR .. "src/devices/bus/dmv/k806.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/k806.h",
+ MAME_DIR .. "src/devices/bus/dmv/ram.cpp",
+ MAME_DIR .. "src/devices/bus/dmv/ram.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/ecbbus/ecbbus.h,BUSES["ECBBUS"] = true
+---------------------------------------------------
+
+if (BUSES["ECBBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ecbbus/ecbbus.cpp",
+ MAME_DIR .. "src/devices/bus/ecbbus/ecbbus.h",
+ MAME_DIR .. "src/devices/bus/ecbbus/grip.cpp",
+ MAME_DIR .. "src/devices/bus/ecbbus/grip.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/econet/econet.h,BUSES["ECONET"] = true
+---------------------------------------------------
+
+if (BUSES["ECONET"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/econet/econet.cpp",
+ MAME_DIR .. "src/devices/bus/econet/econet.h",
+ MAME_DIR .. "src/devices/bus/econet/e01.cpp",
+ MAME_DIR .. "src/devices/bus/econet/e01.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/ekara/slot.h,BUSES["EKARA"] = true
+---------------------------------------------------
+
+if (BUSES["EKARA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ekara/slot.cpp",
+ MAME_DIR .. "src/devices/bus/ekara/slot.h",
+ MAME_DIR .. "src/devices/bus/ekara/rom.cpp",
+ MAME_DIR .. "src/devices/bus/ekara/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/electron/exp.h,BUSES["ELECTRON"] = true
+---------------------------------------------------
+
+if (BUSES["ELECTRON"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/electron/exp.cpp",
+ MAME_DIR .. "src/devices/bus/electron/exp.h",
+ MAME_DIR .. "src/devices/bus/electron/fbjoy.cpp",
+ MAME_DIR .. "src/devices/bus/electron/fbjoy.h",
+ MAME_DIR .. "src/devices/bus/electron/fbprint.cpp",
+ MAME_DIR .. "src/devices/bus/electron/fbprint.h",
+ MAME_DIR .. "src/devices/bus/electron/mc68k.cpp",
+ MAME_DIR .. "src/devices/bus/electron/mc68k.h",
+ MAME_DIR .. "src/devices/bus/electron/mode7.cpp",
+ MAME_DIR .. "src/devices/bus/electron/mode7.h",
+ MAME_DIR .. "src/devices/bus/electron/plus1.cpp",
+ MAME_DIR .. "src/devices/bus/electron/plus1.h",
+ MAME_DIR .. "src/devices/bus/electron/plus2.cpp",
+ MAME_DIR .. "src/devices/bus/electron/plus2.h",
+ MAME_DIR .. "src/devices/bus/electron/plus3.cpp",
+ MAME_DIR .. "src/devices/bus/electron/plus3.h",
+ MAME_DIR .. "src/devices/bus/electron/pwrjoy.cpp",
+ MAME_DIR .. "src/devices/bus/electron/pwrjoy.h",
+ MAME_DIR .. "src/devices/bus/electron/rombox.cpp",
+ MAME_DIR .. "src/devices/bus/electron/rombox.h",
+ MAME_DIR .. "src/devices/bus/electron/romboxp.cpp",
+ MAME_DIR .. "src/devices/bus/electron/romboxp.h",
+ MAME_DIR .. "src/devices/bus/electron/sidewndr.cpp",
+ MAME_DIR .. "src/devices/bus/electron/sidewndr.h",
+ MAME_DIR .. "src/devices/bus/electron/m2105.cpp",
+ MAME_DIR .. "src/devices/bus/electron/m2105.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/electron/cart/slot.h,BUSES["ELECTRON_CART"] = true
+---------------------------------------------------
+
+if (BUSES["ELECTRON_CART"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/electron/cart/slot.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/slot.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/abr.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/abr.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/ap34.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/ap34.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/ap5.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/ap5.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/aqr.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/aqr.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/click.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/click.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/cumana.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/cumana.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/mgc.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/mgc.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/peg400.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/peg400.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/romp144.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/romp144.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/rs423.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/rs423.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/sndexp.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/sndexp.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/sndexp3.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/sndexp3.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/sp64.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/sp64.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/std.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/std.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/stlefs.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/stlefs.h",
+ MAME_DIR .. "src/devices/bus/electron/cart/tube.cpp",
+ MAME_DIR .. "src/devices/bus/electron/cart/tube.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/ep64/exp.h,BUSES["EP64"] = true
+---------------------------------------------------
+
+if (BUSES["EP64"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ep64/exp.cpp",
+ MAME_DIR .. "src/devices/bus/ep64/exp.h",
+ MAME_DIR .. "src/devices/bus/ep64/exdos.cpp",
+ MAME_DIR .. "src/devices/bus/ep64/exdos.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/fmt_scsi/fmt_scsi.h,BUSES["FMT_SCSI"] = true
+---------------------------------------------------
+
+if (BUSES["FMT_SCSI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/fmt_scsi/fmt_scsi.cpp",
+ MAME_DIR .. "src/devices/bus/fmt_scsi/fmt_scsi.h",
+ MAME_DIR .. "src/devices/bus/fmt_scsi/fmt121.cpp",
+ MAME_DIR .. "src/devices/bus/fmt_scsi/fmt121.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/gamate/slot.h,BUSES["GAMATE"] = true
+---------------------------------------------------
+
+if (BUSES["GAMATE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/gamate/slot.cpp",
+ MAME_DIR .. "src/devices/bus/gamate/slot.h",
+ MAME_DIR .. "src/devices/bus/gamate/rom.cpp",
+ MAME_DIR .. "src/devices/bus/gamate/rom.h",
+ MAME_DIR .. "src/devices/bus/gamate/gamate_protection.cpp",
+ MAME_DIR .. "src/devices/bus/gamate/gamate_protection.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/gio64/gio64.h,BUSES["GIO64"] = true
+---------------------------------------------------
+
+if (BUSES["GIO64"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/gio64/gio64.cpp",
+ MAME_DIR .. "src/devices/bus/gio64/gio64.h",
+ MAME_DIR .. "src/devices/bus/gio64/newport.cpp",
+ MAME_DIR .. "src/devices/bus/gio64/newport.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/hp_hil/hp_hil.h,BUSES["HPHIL"] = true
+---------------------------------------------------
+
+if (BUSES["HPHIL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/hp_hil/hp_hil.cpp",
+ MAME_DIR .. "src/devices/bus/hp_hil/hp_hil.h",
+ MAME_DIR .. "src/devices/bus/hp_hil/hil_devices.cpp",
+ MAME_DIR .. "src/devices/bus/hp_hil/hil_devices.h",
+ MAME_DIR .. "src/devices/bus/hp_hil/hlebase.cpp",
+ MAME_DIR .. "src/devices/bus/hp_hil/hlebase.h",
+ MAME_DIR .. "src/devices/bus/hp_hil/hlemouse.cpp",
+ MAME_DIR .. "src/devices/bus/hp_hil/hlemouse.h",
+ MAME_DIR .. "src/devices/bus/hp_hil/hlekbd.cpp",
+ MAME_DIR .. "src/devices/bus/hp_hil/hlekbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/hp_dio/hp_dio.h,BUSES["HPDIO"] = true
+---------------------------------------------------
+
+if (BUSES["HPDIO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/hp_dio/hp_dio.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp_dio.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98265a.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98265a.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98543.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98543.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98544.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98544.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98550.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98550.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98603a.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98603a.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98603b.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98603b.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98620.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98620.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98643.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98643.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98644.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/hp98644.h",
+ MAME_DIR .. "src/devices/bus/hp_dio/human_interface.cpp",
+ MAME_DIR .. "src/devices/bus/hp_dio/human_interface.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/generic/slot.h,BUSES["GENERIC"] = true
+---------------------------------------------------
+
+if (BUSES["GENERIC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/generic/slot.cpp",
+ MAME_DIR .. "src/devices/bus/generic/slot.h",
+ MAME_DIR .. "src/devices/bus/generic/carts.cpp",
+ MAME_DIR .. "src/devices/bus/generic/carts.h",
+ MAME_DIR .. "src/devices/bus/generic/ram.cpp",
+ MAME_DIR .. "src/devices/bus/generic/ram.h",
+ MAME_DIR .. "src/devices/bus/generic/rom.cpp",
+ MAME_DIR .. "src/devices/bus/generic/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/hexbus/hexbus.h,BUSES["HEXBUS"] = true
+---------------------------------------------------
+
+if (BUSES["HEXBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/hexbus/hexbus.cpp",
+ MAME_DIR .. "src/devices/bus/hexbus/hexbus.h",
+ MAME_DIR .. "src/devices/bus/hexbus/hx5102.cpp",
+ MAME_DIR .. "src/devices/bus/hexbus/hx5102.h",
+ MAME_DIR .. "src/devices/bus/hexbus/tp0370.cpp",
+ MAME_DIR .. "src/devices/bus/hexbus/tp0370.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/ieee488/ieee488.h,BUSES["IEEE488"] = true
+---------------------------------------------------
+
+if (BUSES["IEEE488"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ieee488/ieee488.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/ieee488.h",
+ MAME_DIR .. "src/devices/bus/ieee488/c2031.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/c2031.h",
+ MAME_DIR .. "src/devices/bus/ieee488/c2040.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/c2040.h",
+ MAME_DIR .. "src/devices/bus/ieee488/c2040fdc.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/c2040fdc.h",
+ MAME_DIR .. "src/devices/bus/ieee488/c8050.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/c8050.h",
+ MAME_DIR .. "src/devices/bus/ieee488/c8050fdc.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/c8050fdc.h",
+ MAME_DIR .. "src/devices/bus/ieee488/c8280.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/c8280.h",
+ MAME_DIR .. "src/devices/bus/ieee488/d9060.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/d9060.h",
+ MAME_DIR .. "src/devices/bus/ieee488/softbox.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/softbox.h",
+ MAME_DIR .. "src/devices/bus/ieee488/hardbox.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/hardbox.h",
+ MAME_DIR .. "src/devices/bus/ieee488/shark.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/shark.h",
+ MAME_DIR .. "src/devices/bus/ieee488/hp9122c.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/hp9122c.h",
+ MAME_DIR .. "src/devices/bus/ieee488/hp9895.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/hp9895.h",
+ MAME_DIR .. "src/devices/bus/ieee488/remote488.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/remote488.h",
+ MAME_DIR .. "src/devices/bus/ieee488/grid2102.cpp",
+ MAME_DIR .. "src/devices/bus/ieee488/grid2102.h",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/bus/ieee488/hp9122c.cpp", GEN_DIR .. "emu/layout/hp9122c.lh" },
+ }
+
+ custombuildtask {
+ layoutbuildtask("emu/layout", "hp9122c"),
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/iq151/iq151.h,BUSES["IQ151"] = true
+---------------------------------------------------
+
+if (BUSES["IQ151"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/iq151/iq151.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/iq151.h",
+ MAME_DIR .. "src/devices/bus/iq151/disc2.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/disc2.h",
+ MAME_DIR .. "src/devices/bus/iq151/grafik.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/grafik.h",
+ MAME_DIR .. "src/devices/bus/iq151/minigraf.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/minigraf.h",
+ MAME_DIR .. "src/devices/bus/iq151/ms151a.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/ms151a.h",
+ MAME_DIR .. "src/devices/bus/iq151/rom.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/rom.h",
+ MAME_DIR .. "src/devices/bus/iq151/staper.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/staper.h",
+ MAME_DIR .. "src/devices/bus/iq151/video32.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/video32.h",
+ MAME_DIR .. "src/devices/bus/iq151/video64.cpp",
+ MAME_DIR .. "src/devices/bus/iq151/video64.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/imi7000/imi7000.h,BUSES["IMI7000"] = true
+---------------------------------------------------
+
+if (BUSES["IMI7000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/imi7000/imi7000.cpp",
+ MAME_DIR .. "src/devices/bus/imi7000/imi7000.h",
+ MAME_DIR .. "src/devices/bus/imi7000/imi5000h.cpp",
+ MAME_DIR .. "src/devices/bus/imi7000/imi5000h.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/intellec4/intellec4.h,BUSES["INTELLEC4"] = true
+---------------------------------------------------
+
+if (BUSES["INTELLEC4"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/intellec4/insdatastor.cpp",
+ MAME_DIR .. "src/devices/bus/intellec4/insdatastor.h",
+ MAME_DIR .. "src/devices/bus/intellec4/intellec4.cpp",
+ MAME_DIR .. "src/devices/bus/intellec4/intellec4.h",
+ MAME_DIR .. "src/devices/bus/intellec4/prommemory.cpp",
+ MAME_DIR .. "src/devices/bus/intellec4/prommemory.h",
+ MAME_DIR .. "src/devices/bus/intellec4/tapereader.cpp",
+ MAME_DIR .. "src/devices/bus/intellec4/tapereader.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/intv/slot.h,BUSES["INTV"] = true
+---------------------------------------------------
+
+if (BUSES["INTV"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/intv/slot.cpp",
+ MAME_DIR .. "src/devices/bus/intv/slot.h",
+ MAME_DIR .. "src/devices/bus/intv/rom.cpp",
+ MAME_DIR .. "src/devices/bus/intv/rom.h",
+ MAME_DIR .. "src/devices/bus/intv/voice.cpp",
+ MAME_DIR .. "src/devices/bus/intv/voice.h",
+ MAME_DIR .. "src/devices/bus/intv/ecs.cpp",
+ MAME_DIR .. "src/devices/bus/intv/ecs.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/intv_ctrl/ctrl.h,BUSES["INTV_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["INTV_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/intv_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/intv_ctrl/ctrl.h",
+ MAME_DIR .. "src/devices/bus/intv_ctrl/handctrl.cpp",
+ MAME_DIR .. "src/devices/bus/intv_ctrl/handctrl.h",
+ MAME_DIR .. "src/devices/bus/intv_ctrl/ecs_ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/intv_ctrl/ecs_ctrl.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/isa/isa.h,BUSES["ISA"] = true
+---------------------------------------------------
+
+if (BUSES["ISA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/isa/isa.cpp",
+ MAME_DIR .. "src/devices/bus/isa/isa.h",
+ MAME_DIR .. "src/devices/bus/isa/isa_cards.cpp",
+ MAME_DIR .. "src/devices/bus/isa/isa_cards.h",
+ MAME_DIR .. "src/devices/bus/isa/mda.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mda.h",
+ MAME_DIR .. "src/devices/bus/isa/wdxt_gen.cpp",
+ MAME_DIR .. "src/devices/bus/isa/wdxt_gen.h",
+ MAME_DIR .. "src/devices/bus/isa/adlib.cpp",
+ MAME_DIR .. "src/devices/bus/isa/adlib.h",
+ MAME_DIR .. "src/devices/bus/isa/chessmdr.cpp",
+ MAME_DIR .. "src/devices/bus/isa/chessmdr.h",
+ MAME_DIR .. "src/devices/bus/isa/chessmsr.cpp",
+ MAME_DIR .. "src/devices/bus/isa/chessmsr.h",
+ MAME_DIR .. "src/devices/bus/isa/com.cpp",
+ MAME_DIR .. "src/devices/bus/isa/com.h",
+ MAME_DIR .. "src/devices/bus/isa/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/fdc.h",
+ MAME_DIR .. "src/devices/bus/isa/mufdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mufdc.h",
+ MAME_DIR .. "src/devices/bus/isa/finalchs.cpp",
+ MAME_DIR .. "src/devices/bus/isa/finalchs.h",
+ MAME_DIR .. "src/devices/bus/isa/gblaster.cpp",
+ MAME_DIR .. "src/devices/bus/isa/gblaster.h",
+ MAME_DIR .. "src/devices/bus/isa/gus.cpp",
+ MAME_DIR .. "src/devices/bus/isa/gus.h",
+ MAME_DIR .. "src/devices/bus/isa/sb16.cpp",
+ MAME_DIR .. "src/devices/bus/isa/sb16.h",
+ MAME_DIR .. "src/devices/bus/isa/hdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/hdc.h",
+ MAME_DIR .. "src/devices/bus/isa/ibm_mfc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ibm_mfc.h",
+ MAME_DIR .. "src/devices/bus/isa/cl_sh260.cpp",
+ MAME_DIR .. "src/devices/bus/isa/cl_sh260.h",
+ MAME_DIR .. "src/devices/bus/isa/mpu401.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mpu401.h",
+ MAME_DIR .. "src/devices/bus/isa/pcmidi.cpp",
+ MAME_DIR .. "src/devices/bus/isa/pcmidi.h",
+ MAME_DIR .. "src/devices/bus/isa/sblaster.cpp",
+ MAME_DIR .. "src/devices/bus/isa/sblaster.h",
+ MAME_DIR .. "src/devices/bus/isa/stereo_fx.cpp",
+ MAME_DIR .. "src/devices/bus/isa/stereo_fx.h",
+ MAME_DIR .. "src/devices/bus/isa/ssi2001.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ssi2001.h",
+ MAME_DIR .. "src/devices/bus/isa/ide.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ide.h",
+ MAME_DIR .. "src/devices/bus/isa/xtide.cpp",
+ MAME_DIR .. "src/devices/bus/isa/xtide.h",
+ MAME_DIR .. "src/devices/bus/isa/side116.cpp",
+ MAME_DIR .. "src/devices/bus/isa/side116.h",
+ MAME_DIR .. "src/devices/bus/isa/acb2072.cpp",
+ MAME_DIR .. "src/devices/bus/isa/acb2072.h",
+ MAME_DIR .. "src/devices/bus/isa/aha1542b.cpp",
+ MAME_DIR .. "src/devices/bus/isa/aha1542b.h",
+ MAME_DIR .. "src/devices/bus/isa/aha1542c.cpp",
+ MAME_DIR .. "src/devices/bus/isa/aha1542c.h",
+ MAME_DIR .. "src/devices/bus/isa/aha174x.cpp",
+ MAME_DIR .. "src/devices/bus/isa/aha174x.h",
+ MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.cpp",
+ MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.h",
+ MAME_DIR .. "src/devices/bus/isa/wd1007a.cpp",
+ MAME_DIR .. "src/devices/bus/isa/wd1007a.h",
+ MAME_DIR .. "src/devices/bus/isa/dectalk.cpp",
+ MAME_DIR .. "src/devices/bus/isa/dectalk.h",
+ MAME_DIR .. "src/devices/bus/isa/pds.cpp",
+ MAME_DIR .. "src/devices/bus/isa/pds.h",
+ MAME_DIR .. "src/devices/bus/isa/omti8621.cpp",
+ MAME_DIR .. "src/devices/bus/isa/omti8621.h",
+ MAME_DIR .. "src/devices/bus/isa/cga.cpp",
+ MAME_DIR .. "src/devices/bus/isa/cga.h",
+ MAME_DIR .. "src/devices/bus/isa/svga_cirrus.cpp",
+ MAME_DIR .. "src/devices/bus/isa/svga_cirrus.h",
+ MAME_DIR .. "src/devices/bus/isa/ega.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ega.h",
+ MAME_DIR .. "src/devices/bus/isa/ex1280.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ex1280.h",
+ MAME_DIR .. "src/devices/bus/isa/pgc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/pgc.h",
+ MAME_DIR .. "src/devices/bus/isa/vga.cpp",
+ MAME_DIR .. "src/devices/bus/isa/vga.h",
+ MAME_DIR .. "src/devices/bus/isa/vga_ati.cpp",
+ MAME_DIR .. "src/devices/bus/isa/vga_ati.h",
+ MAME_DIR .. "src/devices/bus/isa/mach32.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mach32.h",
+ MAME_DIR .. "src/devices/bus/isa/svga_tseng.cpp",
+ MAME_DIR .. "src/devices/bus/isa/svga_tseng.h",
+ MAME_DIR .. "src/devices/bus/isa/svga_s3.cpp",
+ MAME_DIR .. "src/devices/bus/isa/svga_s3.h",
+ MAME_DIR .. "src/devices/bus/isa/s3virge.cpp",
+ MAME_DIR .. "src/devices/bus/isa/s3virge.h",
+ MAME_DIR .. "src/devices/bus/isa/pc1640_iga.cpp",
+ MAME_DIR .. "src/devices/bus/isa/pc1640_iga.h",
+ MAME_DIR .. "src/devices/bus/isa/3c503.cpp",
+ MAME_DIR .. "src/devices/bus/isa/3c503.h",
+ MAME_DIR .. "src/devices/bus/isa/ne1000.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ne1000.h",
+ MAME_DIR .. "src/devices/bus/isa/ne2000.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ne2000.h",
+ MAME_DIR .. "src/devices/bus/isa/3c505.cpp",
+ MAME_DIR .. "src/devices/bus/isa/3c505.h",
+ MAME_DIR .. "src/devices/bus/isa/lpt.cpp",
+ MAME_DIR .. "src/devices/bus/isa/lpt.h",
+ MAME_DIR .. "src/devices/bus/isa/p1_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/p1_fdc.h",
+ MAME_DIR .. "src/devices/bus/isa/p1_hdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/p1_hdc.h",
+ MAME_DIR .. "src/devices/bus/isa/p1_rom.cpp",
+ MAME_DIR .. "src/devices/bus/isa/p1_rom.h",
+ MAME_DIR .. "src/devices/bus/isa/p1_sound.cpp",
+ MAME_DIR .. "src/devices/bus/isa/p1_sound.h",
+ MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.h",
+ MAME_DIR .. "src/devices/bus/isa/mc1502_rom.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mc1502_rom.h",
+ MAME_DIR .. "src/devices/bus/isa/xsu_cards.cpp",
+ MAME_DIR .. "src/devices/bus/isa/xsu_cards.h",
+ MAME_DIR .. "src/devices/bus/isa/sc499.cpp",
+ MAME_DIR .. "src/devices/bus/isa/sc499.h",
+ MAME_DIR .. "src/devices/bus/isa/aga.cpp",
+ MAME_DIR .. "src/devices/bus/isa/aga.h",
+ MAME_DIR .. "src/devices/bus/isa/svga_trident.cpp",
+ MAME_DIR .. "src/devices/bus/isa/svga_trident.h",
+ MAME_DIR .. "src/devices/bus/isa/num9rev.cpp",
+ MAME_DIR .. "src/devices/bus/isa/num9rev.h",
+ MAME_DIR .. "src/devices/bus/isa/mcd.cpp",
+ MAME_DIR .. "src/devices/bus/isa/mcd.h",
+ MAME_DIR .. "src/devices/bus/isa/myb3k_com.cpp",
+ MAME_DIR .. "src/devices/bus/isa/myb3k_com.h",
+ MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.h",
+ MAME_DIR .. "src/devices/bus/isa/eis_sad8852.cpp",
+ MAME_DIR .. "src/devices/bus/isa/eis_sad8852.h",
+ MAME_DIR .. "src/devices/bus/isa/eis_twib.cpp",
+ MAME_DIR .. "src/devices/bus/isa/eis_twib.h",
+ MAME_DIR .. "src/devices/bus/isa/eis_hgb107x.cpp",
+ MAME_DIR .. "src/devices/bus/isa/eis_hgb107x.h",
+ MAME_DIR .. "src/devices/bus/isa/lbaenhancer.cpp",
+ MAME_DIR .. "src/devices/bus/isa/lbaenhancer.h",
+ MAME_DIR .. "src/devices/bus/isa/np600.cpp",
+ MAME_DIR .. "src/devices/bus/isa/np600.h",
+ MAME_DIR .. "src/devices/bus/isa/bt54x.cpp",
+ MAME_DIR .. "src/devices/bus/isa/bt54x.h",
+ MAME_DIR .. "src/devices/bus/isa/dcb.cpp",
+ MAME_DIR .. "src/devices/bus/isa/dcb.h",
+ MAME_DIR .. "src/devices/bus/isa/ultra12f.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ultra12f.h",
+ MAME_DIR .. "src/devices/bus/isa/ultra14f.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ultra14f.h",
+ MAME_DIR .. "src/devices/bus/isa/ultra24f.cpp",
+ MAME_DIR .. "src/devices/bus/isa/ultra24f.h",
+ MAME_DIR .. "src/devices/bus/isa/tekram_dc820.cpp",
+ MAME_DIR .. "src/devices/bus/isa/tekram_dc820.h",
+ MAME_DIR .. "src/devices/bus/isa/asc88.cpp",
+ MAME_DIR .. "src/devices/bus/isa/asc88.h",
+ MAME_DIR .. "src/devices/bus/isa/bblue2.cpp",
+ MAME_DIR .. "src/devices/bus/isa/bblue2.h",
+ MAME_DIR .. "src/devices/bus/isa/3xtwin.cpp",
+ MAME_DIR .. "src/devices/bus/isa/3xtwin.h",
+ MAME_DIR .. "src/devices/bus/isa/lrk330.cpp",
+ MAME_DIR .. "src/devices/bus/isa/lrk330.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/isbx/isbx.h,BUSES["ISBX"] = true
+---------------------------------------------------
+
+if (BUSES["ISBX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/isbx/isbx.cpp",
+ MAME_DIR .. "src/devices/bus/isbx/isbx.h",
+ MAME_DIR .. "src/devices/bus/isbx/compis_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/isbx/compis_fdc.h",
+ MAME_DIR .. "src/devices/bus/isbx/isbc_218a.cpp",
+ MAME_DIR .. "src/devices/bus/isbx/isbc_218a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/jakks_gamekey/slot.h,BUSES["JAKKS_GAMEKEY"] = true
+---------------------------------------------------
+
+if (BUSES["JAKKS_GAMEKEY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/jakks_gamekey/slot.cpp",
+ MAME_DIR .. "src/devices/bus/jakks_gamekey/slot.h",
+ MAME_DIR .. "src/devices/bus/jakks_gamekey/rom.cpp",
+ MAME_DIR .. "src/devices/bus/jakks_gamekey/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/msx_slot/slot.h,BUSES["MSX_SLOT"] = true
+---------------------------------------------------
+
+if (BUSES["MSX_SLOT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/msx_slot/bunsetsu.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/bunsetsu.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/cartridge.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/cartridge.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/disk.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/disk.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/fs4600.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/fs4600.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/music.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/music.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/panasonic08.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/panasonic08.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/rom.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/rom.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/ram.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/ram.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/ram_mm.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/ram_mm.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/slot.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/slot.h",
+ MAME_DIR .. "src/devices/bus/msx_slot/sony08.cpp",
+ MAME_DIR .. "src/devices/bus/msx_slot/sony08.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/arc.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/arc.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/ascii.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/ascii.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/bm_012.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/bm_012.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/cartridge.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/cartridge.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/crossblaim.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/crossblaim.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/disk.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/disk.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/dooly.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/dooly.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/easi_speech.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/easi_speech.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/fmpac.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/fmpac.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/fs_sr022.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/fs_sr022.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/halnote.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/halnote.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/hfox.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/hfox.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/holy_quran.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/holy_quran.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/ink.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/ink.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/konami.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/konami.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/korean.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/korean.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/majutsushi.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/majutsushi.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/moonsound.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/moonsound.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/msx_audio.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/msx_audio.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/msx_audio_kb.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/msx_audio_kb.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/msxdos2.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/msxdos2.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/nomapper.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/nomapper.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/rtype.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/rtype.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/superloderunner.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/superloderunner.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/super_swangi.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/super_swangi.h",
+ MAME_DIR .. "src/devices/bus/msx_cart/yamaha.cpp",
+ MAME_DIR .. "src/devices/bus/msx_cart/yamaha.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/mtx/exp.h,BUSES["MTX"] = true
+---------------------------------------------------
+
+if (BUSES["MTX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/mtx/exp.cpp",
+ MAME_DIR .. "src/devices/bus/mtx/exp.h",
+ MAME_DIR .. "src/devices/bus/mtx/sdx.cpp",
+ MAME_DIR .. "src/devices/bus/mtx/sdx.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/mc10/mc10_cart.h,BUSES["MC10"] = true
+---------------------------------------------------
+if (BUSES["MC10"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/mc10/mc10_cart.cpp",
+ MAME_DIR .. "src/devices/bus/mc10/mc10_cart.h",
+ MAME_DIR .. "src/devices/bus/mc10/mcx128.cpp",
+ MAME_DIR .. "src/devices/bus/mc10/mcx128.h",
+ MAME_DIR .. "src/devices/bus/mc10/pak.cpp",
+ MAME_DIR .. "src/devices/bus/mc10/pak.h",
+ MAME_DIR .. "src/devices/bus/mc10/ram.cpp",
+ MAME_DIR .. "src/devices/bus/mc10/ram.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/kc/kc.h,BUSES["KC"] = true
+---------------------------------------------------
+
+if (BUSES["KC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/kc/kc.cpp",
+ MAME_DIR .. "src/devices/bus/kc/kc.h",
+ MAME_DIR .. "src/devices/bus/kc/d002.cpp",
+ MAME_DIR .. "src/devices/bus/kc/d002.h",
+ MAME_DIR .. "src/devices/bus/kc/d004.cpp",
+ MAME_DIR .. "src/devices/bus/kc/d004.h",
+ MAME_DIR .. "src/devices/bus/kc/ram.cpp",
+ MAME_DIR .. "src/devices/bus/kc/ram.h",
+ MAME_DIR .. "src/devices/bus/kc/rom.cpp",
+ MAME_DIR .. "src/devices/bus/kc/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/odyssey2/slot.h,BUSES["O2"] = true
+---------------------------------------------------
+
+if (BUSES["O2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/odyssey2/slot.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/slot.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/rom.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/rom.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/4in1.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/4in1.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/chess.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/chess.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/homecomp.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/homecomp.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/ktaa.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/ktaa.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/rally.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/rally.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/test.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/test.h",
+ MAME_DIR .. "src/devices/bus/odyssey2/voice.cpp",
+ MAME_DIR .. "src/devices/bus/odyssey2/voice.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/pasopia/pac2.h,BUSES["PASOPIA"] = true
+---------------------------------------------------
+
+if (BUSES["PASOPIA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pasopia/pac2.cpp",
+ MAME_DIR .. "src/devices/bus/pasopia/pac2.h",
+ MAME_DIR .. "src/devices/bus/pasopia/pac2exp.cpp",
+ MAME_DIR .. "src/devices/bus/pasopia/pac2exp.h",
+ MAME_DIR .. "src/devices/bus/pasopia/rampac2.cpp",
+ MAME_DIR .. "src/devices/bus/pasopia/rampac2.h",
+ MAME_DIR .. "src/devices/bus/pasopia/rompac2.cpp",
+ MAME_DIR .. "src/devices/bus/pasopia/rompac2.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/pc_joy/pc_joy.h,BUSES["PC_JOY"] = true
+---------------------------------------------------
+
+if (BUSES["PC_JOY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pc_joy/pc_joy.cpp",
+ MAME_DIR .. "src/devices/bus/pc_joy/pc_joy.h",
+ MAME_DIR .. "src/devices/bus/pc_joy/pc_joy_sw.cpp",
+ MAME_DIR .. "src/devices/bus/pc_joy/pc_joy_sw.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/pc_kbd/pc_kbdc.h,BUSES["PC_KBD"] = true
+---------------------------------------------------
+
+if (BUSES["PC_KBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pc_kbd/pc_kbdc.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pc_kbdc.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/keyboards.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/keyboards.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/ec1841.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/ec1841.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/iskr1030.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/iskr1030.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/keytro.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/keytro.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/msnat.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/msnat.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pc83.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pc83.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pcat84.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pcat84.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pcxt83.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pcxt83.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pcat101.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/pcat101.h",
+ MAME_DIR .. "src/devices/bus/pc_kbd/hle_mouse.cpp",
+ MAME_DIR .. "src/devices/bus/pc_kbd/hle_mouse.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/pet/cass.h,BUSES["PET"] = true
+--@src/devices/bus/pet/exp.h,BUSES["PET"] = true
+--@src/devices/bus/pet/user.h,BUSES["PET"] = true
+---------------------------------------------------
+
+if (BUSES["PET"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pet/cass.cpp",
+ MAME_DIR .. "src/devices/bus/pet/cass.h",
+ MAME_DIR .. "src/devices/bus/pet/c2n.cpp",
+ MAME_DIR .. "src/devices/bus/pet/c2n.h",
+ MAME_DIR .. "src/devices/bus/pet/diag264_lb_tape.cpp",
+ MAME_DIR .. "src/devices/bus/pet/diag264_lb_tape.h",
+ MAME_DIR .. "src/devices/bus/pet/exp.cpp",
+ MAME_DIR .. "src/devices/bus/pet/exp.h",
+ MAME_DIR .. "src/devices/bus/pet/64k.cpp",
+ MAME_DIR .. "src/devices/bus/pet/64k.h",
+ MAME_DIR .. "src/devices/bus/pet/hsg.cpp",
+ MAME_DIR .. "src/devices/bus/pet/hsg.h",
+ MAME_DIR .. "src/devices/bus/pet/superpet.cpp",
+ MAME_DIR .. "src/devices/bus/pet/superpet.h",
+ MAME_DIR .. "src/devices/bus/pet/user.cpp",
+ MAME_DIR .. "src/devices/bus/pet/user.h",
+ MAME_DIR .. "src/devices/bus/pet/diag.cpp",
+ MAME_DIR .. "src/devices/bus/pet/diag.h",
+ MAME_DIR .. "src/devices/bus/pet/petuja.cpp",
+ MAME_DIR .. "src/devices/bus/pet/petuja.h",
+ MAME_DIR .. "src/devices/bus/pet/cb2snd.cpp",
+ MAME_DIR .. "src/devices/bus/pet/cb2snd.h",
+ MAME_DIR .. "src/devices/bus/pet/2joysnd.h",
+ MAME_DIR .. "src/devices/bus/pet/2joysnd.cpp",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/plus4/exp.h,BUSES["PLUS4"] = true
+--@src/devices/bus/plus4/user.h,BUSES["PLUS4"] = true
+---------------------------------------------------
+
+if (BUSES["PLUS4"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/plus4/exp.cpp",
+ MAME_DIR .. "src/devices/bus/plus4/exp.h",
+ MAME_DIR .. "src/devices/bus/plus4/c1551.cpp",
+ MAME_DIR .. "src/devices/bus/plus4/c1551.h",
+ MAME_DIR .. "src/devices/bus/plus4/sid.cpp",
+ MAME_DIR .. "src/devices/bus/plus4/sid.h",
+ MAME_DIR .. "src/devices/bus/plus4/std.cpp",
+ MAME_DIR .. "src/devices/bus/plus4/std.h",
+ MAME_DIR .. "src/devices/bus/plus4/user.cpp",
+ MAME_DIR .. "src/devices/bus/plus4/user.h",
+ MAME_DIR .. "src/devices/bus/plus4/diag264_lb_user.cpp",
+ MAME_DIR .. "src/devices/bus/plus4/diag264_lb_user.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/pofo/exp.h,BUSES["POFO"] = true
+---------------------------------------------------
+
+if (BUSES["POFO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pofo/exp.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/exp.h",
+ MAME_DIR .. "src/devices/bus/pofo/hpc101.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/hpc101.h",
+ MAME_DIR .. "src/devices/bus/pofo/hpc102.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/hpc102.h",
+ MAME_DIR .. "src/devices/bus/pofo/hpc104.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/hpc104.h",
+ MAME_DIR .. "src/devices/bus/pofo/ccm.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/ccm.h",
+ MAME_DIR .. "src/devices/bus/pofo/ram.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/ram.h",
+ MAME_DIR .. "src/devices/bus/pofo/rom.cpp",
+ MAME_DIR .. "src/devices/bus/pofo/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/s100/s100.h,BUSES["S100"] = true
+---------------------------------------------------
+
+if (BUSES["S100"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/s100/s100.cpp",
+ MAME_DIR .. "src/devices/bus/s100/s100.h",
+ MAME_DIR .. "src/devices/bus/s100/am310.cpp",
+ MAME_DIR .. "src/devices/bus/s100/am310.h",
+ MAME_DIR .. "src/devices/bus/s100/ascsasi.cpp",
+ MAME_DIR .. "src/devices/bus/s100/ascsasi.h",
+ MAME_DIR .. "src/devices/bus/s100/dg640.cpp",
+ MAME_DIR .. "src/devices/bus/s100/dg640.h",
+ MAME_DIR .. "src/devices/bus/s100/dj2db.cpp",
+ MAME_DIR .. "src/devices/bus/s100/dj2db.h",
+ MAME_DIR .. "src/devices/bus/s100/djdma.cpp",
+ MAME_DIR .. "src/devices/bus/s100/djdma.h",
+ MAME_DIR .. "src/devices/bus/s100/mm65k16s.cpp",
+ MAME_DIR .. "src/devices/bus/s100/mm65k16s.h",
+ MAME_DIR .. "src/devices/bus/s100/nsmdsa.cpp",
+ MAME_DIR .. "src/devices/bus/s100/nsmdsa.h",
+ MAME_DIR .. "src/devices/bus/s100/nsmdsad.cpp",
+ MAME_DIR .. "src/devices/bus/s100/nsmdsad.h",
+ MAME_DIR .. "src/devices/bus/s100/poly16k.cpp",
+ MAME_DIR .. "src/devices/bus/s100/poly16k.h",
+ MAME_DIR .. "src/devices/bus/s100/polyfdc.cpp",
+ MAME_DIR .. "src/devices/bus/s100/polyfdc.h",
+ MAME_DIR .. "src/devices/bus/s100/polyvti.cpp",
+ MAME_DIR .. "src/devices/bus/s100/polyvti.h",
+ MAME_DIR .. "src/devices/bus/s100/seals8k.cpp",
+ MAME_DIR .. "src/devices/bus/s100/seals8k.h",
+ MAME_DIR .. "src/devices/bus/s100/wunderbus.cpp",
+ MAME_DIR .. "src/devices/bus/s100/wunderbus.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/spc1000/exp.h,BUSES["SPC1000"] = true
+---------------------------------------------------
+
+if (BUSES["SPC1000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/spc1000/exp.cpp",
+ MAME_DIR .. "src/devices/bus/spc1000/exp.h",
+ MAME_DIR .. "src/devices/bus/spc1000/fdd.cpp",
+ MAME_DIR .. "src/devices/bus/spc1000/fdd.h",
+ MAME_DIR .. "src/devices/bus/spc1000/vdp.cpp",
+ MAME_DIR .. "src/devices/bus/spc1000/vdp.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/ss50/interface.h,BUSES["SS50"] = true
+---------------------------------------------------
+
+if (BUSES["SS50"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ss50/interface.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/interface.h",
+ MAME_DIR .. "src/devices/bus/ss50/dc5.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/dc5.h",
+ MAME_DIR .. "src/devices/bus/ss50/mpc.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/mpc.h",
+ MAME_DIR .. "src/devices/bus/ss50/mps.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/mps.h",
+ MAME_DIR .. "src/devices/bus/ss50/mps2.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/mps2.h",
+ MAME_DIR .. "src/devices/bus/ss50/mpt.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/mpt.h",
+ MAME_DIR .. "src/devices/bus/ss50/piaide.cpp",
+ MAME_DIR .. "src/devices/bus/ss50/piaide.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/tiki100/exp.h,BUSES["TIKI100"] = true
+---------------------------------------------------
+
+if (BUSES["TIKI100"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/tiki100/exp.cpp",
+ MAME_DIR .. "src/devices/bus/tiki100/exp.h",
+ MAME_DIR .. "src/devices/bus/tiki100/8088.cpp",
+ MAME_DIR .. "src/devices/bus/tiki100/8088.h",
+ MAME_DIR .. "src/devices/bus/tiki100/hdc.cpp",
+ MAME_DIR .. "src/devices/bus/tiki100/hdc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/tvc/tvc.h,BUSES["TVC"] = true
+---------------------------------------------------
+
+if (BUSES["TVC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/tvc/tvc.cpp",
+ MAME_DIR .. "src/devices/bus/tvc/tvc.h",
+ MAME_DIR .. "src/devices/bus/tvc/hbf.cpp",
+ MAME_DIR .. "src/devices/bus/tvc/hbf.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vc4000/slot.h,BUSES["VC4000"] = true
+---------------------------------------------------
+
+if (BUSES["VC4000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vc4000/slot.cpp",
+ MAME_DIR .. "src/devices/bus/vc4000/slot.h",
+ MAME_DIR .. "src/devices/bus/vc4000/rom.cpp",
+ MAME_DIR .. "src/devices/bus/vc4000/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vcs/vcs_slot.h,BUSES["VCS"] = true
+---------------------------------------------------
+
+if (BUSES["VCS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vcs/vcs_slot.cpp",
+ MAME_DIR .. "src/devices/bus/vcs/vcs_slot.h",
+ MAME_DIR .. "src/devices/bus/vcs/rom.cpp",
+ MAME_DIR .. "src/devices/bus/vcs/rom.h",
+ MAME_DIR .. "src/devices/bus/vcs/compumat.cpp",
+ MAME_DIR .. "src/devices/bus/vcs/compumat.h",
+ MAME_DIR .. "src/devices/bus/vcs/dpc.cpp",
+ MAME_DIR .. "src/devices/bus/vcs/dpc.h",
+ MAME_DIR .. "src/devices/bus/vcs/harmony_melody.cpp",
+ MAME_DIR .. "src/devices/bus/vcs/harmony_melody.h",
+ MAME_DIR .. "src/devices/bus/vcs/scharger.cpp",
+ MAME_DIR .. "src/devices/bus/vcs/scharger.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vcs_ctrl/ctrl.h,BUSES["VCS_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["VCS_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/ctrl.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/joystick.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/joybooster.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/joybooster.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/keypad.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/keypad.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/lightpen.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/lightpen.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/mouse.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/paddles.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/paddles.h",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/wheel.cpp",
+ MAME_DIR .. "src/devices/bus/vcs_ctrl/wheel.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vectrex/slot.h,BUSES["VECTREX"] = true
+---------------------------------------------------
+
+if (BUSES["VECTREX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vectrex/slot.cpp",
+ MAME_DIR .. "src/devices/bus/vectrex/slot.h",
+ MAME_DIR .. "src/devices/bus/vectrex/rom.cpp",
+ MAME_DIR .. "src/devices/bus/vectrex/rom.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vic10/exp.h,BUSES["VIC10"] = true
+---------------------------------------------------
+
+if (BUSES["VIC10"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vic10/exp.cpp",
+ MAME_DIR .. "src/devices/bus/vic10/exp.h",
+ MAME_DIR .. "src/devices/bus/vic10/multimax.cpp",
+ MAME_DIR .. "src/devices/bus/vic10/multimax.h",
+ MAME_DIR .. "src/devices/bus/vic10/std.cpp",
+ MAME_DIR .. "src/devices/bus/vic10/std.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vic20/exp.h,BUSES["VIC20"] = true
+--@src/devices/bus/vic20/user.h,BUSES["VIC20"] = true
+---------------------------------------------------
+
+if (BUSES["VIC20"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vic20/exp.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/exp.h",
+ MAME_DIR .. "src/devices/bus/vic20/fe3.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/fe3.h",
+ MAME_DIR .. "src/devices/bus/vic20/megacart.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/megacart.h",
+ MAME_DIR .. "src/devices/bus/vic20/std.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/std.h",
+ MAME_DIR .. "src/devices/bus/vic20/vic1010.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/vic1010.h",
+ MAME_DIR .. "src/devices/bus/vic20/vic1110.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/vic1110.h",
+ MAME_DIR .. "src/devices/bus/vic20/vic1111.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/vic1111.h",
+ MAME_DIR .. "src/devices/bus/vic20/vic1112.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/vic1112.h",
+ MAME_DIR .. "src/devices/bus/vic20/vic1210.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/vic1210.h",
+ MAME_DIR .. "src/devices/bus/vic20/videopak.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/videopak.h",
+ MAME_DIR .. "src/devices/bus/vic20/speakeasy.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/speakeasy.h",
+ MAME_DIR .. "src/devices/bus/vic20/user.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/user.h",
+ MAME_DIR .. "src/devices/bus/vic20/4cga.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/4cga.h",
+ MAME_DIR .. "src/devices/bus/vic20/vic1011.cpp",
+ MAME_DIR .. "src/devices/bus/vic20/vic1011.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vidbrain/exp.h,BUSES["VIDBRAIN"] = true
+---------------------------------------------------
+
+if (BUSES["VIDBRAIN"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vidbrain/exp.cpp",
+ MAME_DIR .. "src/devices/bus/vidbrain/exp.h",
+ MAME_DIR .. "src/devices/bus/vidbrain/std.cpp",
+ MAME_DIR .. "src/devices/bus/vidbrain/std.h",
+ MAME_DIR .. "src/devices/bus/vidbrain/money_minder.cpp",
+ MAME_DIR .. "src/devices/bus/vidbrain/money_minder.h",
+ MAME_DIR .. "src/devices/bus/vidbrain/timeshare.cpp",
+ MAME_DIR .. "src/devices/bus/vidbrain/timeshare.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vip/byteio.h,BUSES["VIP"] = true
+--@src/devices/bus/vip/exp.h,BUSES["VIP"] = true
+---------------------------------------------------
+
+if (BUSES["VIP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vip/byteio.cpp",
+ MAME_DIR .. "src/devices/bus/vip/byteio.h",
+ MAME_DIR .. "src/devices/bus/vip/vp620.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp620.h",
+ MAME_DIR .. "src/devices/bus/vip/exp.cpp",
+ MAME_DIR .. "src/devices/bus/vip/exp.h",
+ MAME_DIR .. "src/devices/bus/vip/vp550.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp550.h",
+ MAME_DIR .. "src/devices/bus/vip/vp570.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp570.h",
+ MAME_DIR .. "src/devices/bus/vip/vp575.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp575.h",
+ MAME_DIR .. "src/devices/bus/vip/vp585.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp585.h",
+ MAME_DIR .. "src/devices/bus/vip/vp590.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp590.h",
+ MAME_DIR .. "src/devices/bus/vip/vp595.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp595.h",
+ MAME_DIR .. "src/devices/bus/vip/vp700.cpp",
+ MAME_DIR .. "src/devices/bus/vip/vp700.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/vme/vme.h,BUSES["VME"] = true
+---------------------------------------------------
+
+if (BUSES["VME"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vme/vme.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme.h",
+ MAME_DIR .. "src/devices/bus/vme/vme_mzr8300.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme_mzr8300.h",
+ MAME_DIR .. "src/devices/bus/vme/vme_mvme350.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme_mvme350.h",
+ MAME_DIR .. "src/devices/bus/vme/vme_fccpu20.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme_fccpu20.h",
+ MAME_DIR .. "src/devices/bus/vme/vme_fcisio.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme_fcisio.h",
+ MAME_DIR .. "src/devices/bus/vme/vme_fcscsi.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme_fcscsi.h",
+ MAME_DIR .. "src/devices/bus/vme/vme_hcpu30.cpp",
+ MAME_DIR .. "src/devices/bus/vme/vme_hcpu30.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/wangpc/wangpc.h,BUSES["WANGPC"] = true
+---------------------------------------------------
+
+if (BUSES["WANGPC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/wangpc/wangpc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/wangpc.h",
+ MAME_DIR .. "src/devices/bus/wangpc/emb.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/emb.h",
+ MAME_DIR .. "src/devices/bus/wangpc/lic.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/lic.h",
+ MAME_DIR .. "src/devices/bus/wangpc/lvc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/lvc.h",
+ MAME_DIR .. "src/devices/bus/wangpc/mcc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/mcc.h",
+ MAME_DIR .. "src/devices/bus/wangpc/mvc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/mvc.h",
+ MAME_DIR .. "src/devices/bus/wangpc/rtc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/rtc.h",
+ MAME_DIR .. "src/devices/bus/wangpc/tig.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/tig.h",
+ MAME_DIR .. "src/devices/bus/wangpc/wdc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/wdc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/z29_kbd/keyboard.h,BUSES["Z29_KBD"] = true
+---------------------------------------------------
+
+if (BUSES["Z29_KBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/z29_kbd/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/z29_kbd/keyboard.h",
+ MAME_DIR .. "src/devices/bus/z29_kbd/he191_3425.cpp",
+ MAME_DIR .. "src/devices/bus/z29_kbd/he191_3425.h",
+ MAME_DIR .. "src/devices/bus/z29_kbd/md_kbd.cpp",
+ MAME_DIR .. "src/devices/bus/z29_kbd/md_kbd.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/z88/z88.h,BUSES["Z88"] = true
+---------------------------------------------------
+
+if (BUSES["Z88"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/z88/z88.cpp",
+ MAME_DIR .. "src/devices/bus/z88/z88.h",
+ MAME_DIR .. "src/devices/bus/z88/flash.cpp",
+ MAME_DIR .. "src/devices/bus/z88/flash.h",
+ MAME_DIR .. "src/devices/bus/z88/ram.cpp",
+ MAME_DIR .. "src/devices/bus/z88/ram.h",
+ MAME_DIR .. "src/devices/bus/z88/rom.cpp",
+ MAME_DIR .. "src/devices/bus/z88/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/a2bus/a2bus.h,BUSES["A2BUS"] = true
+---------------------------------------------------
+
+if (BUSES["A2BUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/a2bus/a2bus.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2bus.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2eauxslot.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2eauxslot.h",
+ MAME_DIR .. "src/devices/bus/a2bus/4play.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/4play.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2alfam2.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2alfam2.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2applicard.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2applicard.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2arcadebd.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2arcadebd.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2cffa.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2cffa.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2corvus.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2corvus.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2diskii.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2diskii.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2diskiing.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2diskiing.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2dx1.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2dx1.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2echoii.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2echoii.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2eext80col.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2eext80col.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2eramworks3.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2eramworks3.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2estd80col.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2estd80col.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2hsscsi.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2hsscsi.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2iwm.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2iwm.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2mcms.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2mcms.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2memexp.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2memexp.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2midi.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2midi.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2mockingboard.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2mockingboard.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2parprn.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2parprn.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2pic.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2pic.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2sam.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2sam.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2scsi.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2scsi.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2sd.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2sd.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2softcard.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2softcard.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2ssc.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2ssc.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2swyft.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2swyft.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2themill.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2themill.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2thunderclock.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2thunderclock.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2ultraterm.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2ultraterm.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2videoterm.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2videoterm.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2vulcan.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2vulcan.h",
+ MAME_DIR .. "src/devices/bus/a2bus/a2zipdrive.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/a2zipdrive.h",
+ MAME_DIR .. "src/devices/bus/a2bus/agat_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/agat_fdc.h",
+ MAME_DIR .. "src/devices/bus/a2bus/agat7langcard.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/agat7langcard.h",
+ MAME_DIR .. "src/devices/bus/a2bus/agat7ports.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/agat7ports.h",
+ MAME_DIR .. "src/devices/bus/a2bus/agat7ram.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/agat7ram.h",
+ MAME_DIR .. "src/devices/bus/a2bus/agat840k_hle.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/agat840k_hle.h",
+ MAME_DIR .. "src/devices/bus/a2bus/booti.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/booti.h",
+ MAME_DIR .. "src/devices/bus/a2bus/byte8251.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/byte8251.h",
+ MAME_DIR .. "src/devices/bus/a2bus/ccs7710.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/ccs7710.h",
+ MAME_DIR .. "src/devices/bus/a2bus/cmsscsi.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/cmsscsi.h",
+ MAME_DIR .. "src/devices/bus/a2bus/computereyes2.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/computereyes2.h",
+ MAME_DIR .. "src/devices/bus/a2bus/corvfdc01.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/corvfdc01.h",
+ MAME_DIR .. "src/devices/bus/a2bus/corvfdc02.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/corvfdc02.h",
+ MAME_DIR .. "src/devices/bus/a2bus/ezcgi.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/ezcgi.h",
+ MAME_DIR .. "src/devices/bus/a2bus/grappler.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/grappler.h",
+ MAME_DIR .. "src/devices/bus/a2bus/lancegs.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/lancegs.h",
+ MAME_DIR .. "src/devices/bus/a2bus/laser128.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/laser128.h",
+ MAME_DIR .. "src/devices/bus/a2bus/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/mouse.h",
+ MAME_DIR .. "src/devices/bus/a2bus/nippelclock.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/nippelclock.h",
+ MAME_DIR .. "src/devices/bus/a2bus/pc_xporter.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/pc_xporter.h",
+ MAME_DIR .. "src/devices/bus/a2bus/q68.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/q68.h",
+ MAME_DIR .. "src/devices/bus/a2bus/ramcard128k.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/ramcard128k.h",
+ MAME_DIR .. "src/devices/bus/a2bus/ramcard16k.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/ramcard16k.h",
+ MAME_DIR .. "src/devices/bus/a2bus/sider.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/sider.h",
+ MAME_DIR .. "src/devices/bus/a2bus/softcard3.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/softcard3.h",
+ MAME_DIR .. "src/devices/bus/a2bus/ssbapple.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/ssbapple.h",
+ MAME_DIR .. "src/devices/bus/a2bus/ssprite.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/ssprite.h",
+ MAME_DIR .. "src/devices/bus/a2bus/suprterminal.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/suprterminal.h",
+ MAME_DIR .. "src/devices/bus/a2bus/timemasterho.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/timemasterho.h",
+ MAME_DIR .. "src/devices/bus/a2bus/titan3plus2.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/titan3plus2.h",
+ MAME_DIR .. "src/devices/bus/a2bus/transwarp.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/transwarp.h",
+ MAME_DIR .. "src/devices/bus/a2bus/uniprint.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/uniprint.h",
+ MAME_DIR .. "src/devices/bus/a2bus/uthernet.cpp",
+ MAME_DIR .. "src/devices/bus/a2bus/uthernet.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/a2gameio/gameio.h,BUSES["A2GAMEIO"] = true
+---------------------------------------------------
+
+if (BUSES["A2GAMEIO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/a2gameio/computereyes.cpp",
+ MAME_DIR .. "src/devices/bus/a2gameio/computereyes.h",
+ MAME_DIR .. "src/devices/bus/a2gameio/gameio.cpp",
+ MAME_DIR .. "src/devices/bus/a2gameio/gameio.h",
+ MAME_DIR .. "src/devices/bus/a2gameio/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/a2gameio/joystick.h",
+ MAME_DIR .. "src/devices/bus/a2gameio/joyport.cpp",
+ MAME_DIR .. "src/devices/bus/a2gameio/joyport.h",
+ MAME_DIR .. "src/devices/bus/a2gameio/paddles.cpp",
+ MAME_DIR .. "src/devices/bus/a2gameio/paddles.h",
+ MAME_DIR .. "src/devices/bus/a2gameio/gizmo.cpp",
+ MAME_DIR .. "src/devices/bus/a2gameio/gizmo.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/nscsi/cd.h,BUSES["NSCSI"] = true
+--@src/devices/bus/nscsi/devices.h,BUSES["NSCSI"] = true
+--@src/devices/bus/nscsi/hd.h,BUSES["NSCSI"] = true
+--@src/devices/bus/nscsi/s1410.h,BUSES["NSCSI"] = true
+---------------------------------------------------
+
+if (BUSES["NSCSI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/nscsi/applecd.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/applecd.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cd.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cd.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cdd2000.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cdd2000.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cdrn820s.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cdrn820s.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cdu75s.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cdu75s.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cdu415.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cdu415.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cdu561.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cdu561.h",
+ MAME_DIR .. "src/devices/bus/nscsi/crd254sh.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/crd254sh.h",
+ MAME_DIR .. "src/devices/bus/nscsi/cw7501.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/cw7501.h",
+ MAME_DIR .. "src/devices/bus/nscsi/devices.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/devices.h",
+ MAME_DIR .. "src/devices/bus/nscsi/hd.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/hd.h",
+ MAME_DIR .. "src/devices/bus/nscsi/s1410.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/s1410.h",
+ MAME_DIR .. "src/devices/bus/nscsi/smoc501.cpp",
+ MAME_DIR .. "src/devices/bus/nscsi/smoc501.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/nubus/nubus.h,BUSES["NUBUS"] = true
+---------------------------------------------------
+
+if (BUSES["NUBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/nubus/nubus.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_48gc.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_48gc.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_cb264.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_cb264.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_vikbw.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_vikbw.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_specpdq.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_specpdq.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_m2hires.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_m2hires.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_spec8.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_spec8.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_radiustpd.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_radiustpd.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_m2video.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_m2video.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_asntmc3b.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_asntmc3b.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_image.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_image.h",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_wsportrait.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/nubus_wsportrait.h",
+ MAME_DIR .. "src/devices/bus/nubus/bootbug.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/bootbug.h",
+ MAME_DIR .. "src/devices/bus/nubus/quadralink.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/quadralink.h",
+ MAME_DIR .. "src/devices/bus/nubus/laserview.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/laserview.h",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_cb264.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_cb264.h",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_procolor816.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_procolor816.h",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_sigmalview.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_sigmalview.h",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_30hr.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_30hr.h",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_mc30.cpp",
+ MAME_DIR .. "src/devices/bus/nubus/pds30_mc30.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/centronics/ctronics.h,BUSES["CENTRONICS"] = true
+---------------------------------------------------
+
+if (BUSES["CENTRONICS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/centronics/ctronics.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/ctronics.h",
+ MAME_DIR .. "src/devices/bus/centronics/chessmec.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/chessmec.h",
+ MAME_DIR .. "src/devices/bus/centronics/comxpl80.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/comxpl80.h",
+ MAME_DIR .. "src/devices/bus/centronics/covox.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/covox.h",
+ MAME_DIR .. "src/devices/bus/centronics/digiblst.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/digiblst.h",
+ MAME_DIR .. "src/devices/bus/centronics/dsjoy.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/dsjoy.h",
+ MAME_DIR .. "src/devices/bus/centronics/epson_ex800.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/epson_ex800.h",
+ MAME_DIR .. "src/devices/bus/centronics/epson_lx800.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/epson_lx800.h",
+ MAME_DIR .. "src/devices/bus/centronics/epson_lx810l.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/epson_lx810l.h",
+ MAME_DIR .. "src/devices/bus/centronics/nec_p72.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/nec_p72.h",
+ MAME_DIR .. "src/devices/bus/centronics/printer.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/printer.h",
+ MAME_DIR .. "src/devices/bus/centronics/samdac.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/samdac.h",
+ MAME_DIR .. "src/devices/bus/centronics/smartboard.cpp",
+ MAME_DIR .. "src/devices/bus/centronics/smartboard.h",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/bus/centronics/epson_ex800.cpp", GEN_DIR .. "emu/layout/ex800.lh" },
+ { MAME_DIR .. "src/devices/bus/centronics/epson_lx800.cpp", GEN_DIR .. "emu/layout/lx800.lh" },
+ { MAME_DIR .. "src/devices/bus/centronics/epson_lx810l.cpp", GEN_DIR .. "emu/layout/lx800.lh" },
+ { MAME_DIR .. "src/devices/bus/centronics/smartboard.cpp", GEN_DIR .. "emu/layout/smartboard.lh" },
+ }
+
+ custombuildtask {
+ layoutbuildtask("emu/layout", "ex800"),
+ layoutbuildtask("emu/layout", "lx800"),
+ layoutbuildtask("emu/layout", "smartboard"),
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/rs232/rs232.h,BUSES["RS232"] = true
+---------------------------------------------------
+
+if (BUSES["RS232"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/rs232/exorterm.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/exorterm.h",
+ MAME_DIR .. "src/devices/bus/rs232/hlemouse.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/hlemouse.h",
+ MAME_DIR .. "src/devices/bus/rs232/ie15.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/ie15.h",
+ MAME_DIR .. "src/devices/bus/rs232/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/keyboard.h",
+ MAME_DIR .. "src/devices/bus/rs232/loopback.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/loopback.h",
+ MAME_DIR .. "src/devices/bus/rs232/mboardd.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/mboardd.h",
+ MAME_DIR .. "src/devices/bus/rs232/null_modem.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/null_modem.h",
+ MAME_DIR .. "src/devices/bus/rs232/patchbox.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/patchbox.h",
+ MAME_DIR .. "src/devices/bus/rs232/printer.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/printer.h",
+ MAME_DIR .. "src/devices/bus/rs232/pty.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/pty.h",
+ MAME_DIR .. "src/devices/bus/rs232/rs232.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/rs232.h",
+ MAME_DIR .. "src/devices/bus/rs232/rs232_sync_io.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/rs232_sync_io.h",
+ MAME_DIR .. "src/devices/bus/rs232/sun_kbd.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/sun_kbd.h",
+ MAME_DIR .. "src/devices/bus/rs232/swtpc8212.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/swtpc8212.h",
+ MAME_DIR .. "src/devices/bus/rs232/terminal.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/terminal.h",
+ MAME_DIR .. "src/devices/bus/rs232/xvd701.cpp",
+ MAME_DIR .. "src/devices/bus/rs232/xvd701.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/midi/midi.h,BUSES["MIDI"] = true
+---------------------------------------------------
+
+if (BUSES["MIDI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/midi/midi.cpp",
+ MAME_DIR .. "src/devices/bus/midi/midi.h",
+ MAME_DIR .. "src/devices/bus/midi/midiinport.cpp",
+ MAME_DIR .. "src/devices/bus/midi/midiinport.h",
+ MAME_DIR .. "src/devices/bus/midi/midioutport.cpp",
+ MAME_DIR .. "src/devices/bus/midi/midioutport.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/lpci/pci.h,BUSES["LPCI"] = true
+---------------------------------------------------
+
+if (BUSES["LPCI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/lpci/pci.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/pci.h",
+ MAME_DIR .. "src/devices/bus/lpci/cirrus.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/cirrus.h",
+ MAME_DIR .. "src/devices/bus/lpci/i82371ab.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/i82371ab.h",
+ MAME_DIR .. "src/devices/bus/lpci/i82371sb.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/i82371sb.h",
+ MAME_DIR .. "src/devices/bus/lpci/i82439tx.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/i82439tx.h",
+ MAME_DIR .. "src/devices/bus/lpci/northbridge.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/northbridge.h",
+ MAME_DIR .. "src/devices/bus/lpci/southbridge.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/southbridge.h",
+ MAME_DIR .. "src/devices/bus/lpci/mpc105.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/mpc105.h",
+ MAME_DIR .. "src/devices/bus/lpci/vt82c505.cpp",
+ MAME_DIR .. "src/devices/bus/lpci/vt82c505.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/nes/nes_slot.h,BUSES["NES"] = true
+---------------------------------------------------
+
+if (BUSES["NES"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/nes/nes_slot.cpp",
+ MAME_DIR .. "src/devices/bus/nes/nes_slot.h",
+ MAME_DIR .. "src/devices/bus/nes/nes_ines.hxx",
+ MAME_DIR .. "src/devices/bus/nes/nes_pcb.hxx",
+ MAME_DIR .. "src/devices/bus/nes/nes_unif.hxx",
+ MAME_DIR .. "src/devices/bus/nes/nes_carts.cpp",
+ MAME_DIR .. "src/devices/bus/nes/nes_carts.h",
+ MAME_DIR .. "src/devices/bus/nes/2a03pur.cpp",
+ MAME_DIR .. "src/devices/bus/nes/2a03pur.h",
+ MAME_DIR .. "src/devices/bus/nes/act53.cpp",
+ MAME_DIR .. "src/devices/bus/nes/act53.h",
+ MAME_DIR .. "src/devices/bus/nes/aladdin.cpp",
+ MAME_DIR .. "src/devices/bus/nes/aladdin.h",
+ MAME_DIR .. "src/devices/bus/nes/ave.cpp",
+ MAME_DIR .. "src/devices/bus/nes/ave.h",
+ MAME_DIR .. "src/devices/bus/nes/bandai.cpp",
+ MAME_DIR .. "src/devices/bus/nes/bandai.h",
+ MAME_DIR .. "src/devices/bus/nes/batlab.cpp",
+ MAME_DIR .. "src/devices/bus/nes/batlab.h",
+ MAME_DIR .. "src/devices/bus/nes/benshieng.cpp",
+ MAME_DIR .. "src/devices/bus/nes/benshieng.h",
+ MAME_DIR .. "src/devices/bus/nes/bootleg.cpp",
+ MAME_DIR .. "src/devices/bus/nes/bootleg.h",
+ MAME_DIR .. "src/devices/bus/nes/camerica.cpp",
+ MAME_DIR .. "src/devices/bus/nes/camerica.h",
+ MAME_DIR .. "src/devices/bus/nes/cne.cpp",
+ MAME_DIR .. "src/devices/bus/nes/cne.h",
+ MAME_DIR .. "src/devices/bus/nes/cony.cpp",
+ MAME_DIR .. "src/devices/bus/nes/cony.h",
+ MAME_DIR .. "src/devices/bus/nes/datach.cpp",
+ MAME_DIR .. "src/devices/bus/nes/datach.h",
+ MAME_DIR .. "src/devices/bus/nes/discrete.cpp",
+ MAME_DIR .. "src/devices/bus/nes/discrete.h",
+ MAME_DIR .. "src/devices/bus/nes/disksys.cpp",
+ MAME_DIR .. "src/devices/bus/nes/disksys.h",
+ MAME_DIR .. "src/devices/bus/nes/event.cpp",
+ MAME_DIR .. "src/devices/bus/nes/event.h",
+ MAME_DIR .. "src/devices/bus/nes/ggenie.cpp",
+ MAME_DIR .. "src/devices/bus/nes/ggenie.h",
+ MAME_DIR .. "src/devices/bus/nes/henggedianzi.cpp",
+ MAME_DIR .. "src/devices/bus/nes/henggedianzi.h",
+ MAME_DIR .. "src/devices/bus/nes/hes.cpp",
+ MAME_DIR .. "src/devices/bus/nes/hes.h",
+ MAME_DIR .. "src/devices/bus/nes/irem.cpp",
+ MAME_DIR .. "src/devices/bus/nes/irem.h",
+ MAME_DIR .. "src/devices/bus/nes/jaleco.cpp",
+ MAME_DIR .. "src/devices/bus/nes/jaleco.h",
+ MAME_DIR .. "src/devices/bus/nes/jncota.cpp",
+ MAME_DIR .. "src/devices/bus/nes/jncota.h",
+ MAME_DIR .. "src/devices/bus/nes/jy.cpp",
+ MAME_DIR .. "src/devices/bus/nes/jy.h",
+ MAME_DIR .. "src/devices/bus/nes/kaiser.cpp",
+ MAME_DIR .. "src/devices/bus/nes/kaiser.h",
+ MAME_DIR .. "src/devices/bus/nes/karastudio.cpp",
+ MAME_DIR .. "src/devices/bus/nes/karastudio.h",
+ MAME_DIR .. "src/devices/bus/nes/konami.cpp",
+ MAME_DIR .. "src/devices/bus/nes/konami.h",
+ MAME_DIR .. "src/devices/bus/nes/legacy.cpp",
+ MAME_DIR .. "src/devices/bus/nes/legacy.h",
+ MAME_DIR .. "src/devices/bus/nes/mmc1.cpp",
+ MAME_DIR .. "src/devices/bus/nes/mmc1.h",
+ MAME_DIR .. "src/devices/bus/nes/mmc1_clones.cpp",
+ MAME_DIR .. "src/devices/bus/nes/mmc1_clones.h",
+ MAME_DIR .. "src/devices/bus/nes/mmc2.cpp",
+ MAME_DIR .. "src/devices/bus/nes/mmc2.h",
+ MAME_DIR .. "src/devices/bus/nes/mmc3.cpp",
+ MAME_DIR .. "src/devices/bus/nes/mmc3.h",
+ MAME_DIR .. "src/devices/bus/nes/mmc3_clones.cpp",
+ MAME_DIR .. "src/devices/bus/nes/mmc3_clones.h",
+ MAME_DIR .. "src/devices/bus/nes/mmc5.cpp",
+ MAME_DIR .. "src/devices/bus/nes/mmc5.h",
+ MAME_DIR .. "src/devices/bus/nes/multigame.cpp",
+ MAME_DIR .. "src/devices/bus/nes/multigame.h",
+ MAME_DIR .. "src/devices/bus/nes/namcot.cpp",
+ MAME_DIR .. "src/devices/bus/nes/namcot.h",
+ MAME_DIR .. "src/devices/bus/nes/nanjing.cpp",
+ MAME_DIR .. "src/devices/bus/nes/nanjing.h",
+ MAME_DIR .. "src/devices/bus/nes/ntdec.cpp",
+ MAME_DIR .. "src/devices/bus/nes/ntdec.h",
+ MAME_DIR .. "src/devices/bus/nes/nxrom.cpp",
+ MAME_DIR .. "src/devices/bus/nes/nxrom.h",
+ MAME_DIR .. "src/devices/bus/nes/pirate.cpp",
+ MAME_DIR .. "src/devices/bus/nes/pirate.h",
+ MAME_DIR .. "src/devices/bus/nes/pt554.cpp",
+ MAME_DIR .. "src/devices/bus/nes/pt554.h",
+ MAME_DIR .. "src/devices/bus/nes/racermate.cpp",
+ MAME_DIR .. "src/devices/bus/nes/racermate.h",
+ MAME_DIR .. "src/devices/bus/nes/rcm.cpp",
+ MAME_DIR .. "src/devices/bus/nes/rcm.h",
+ MAME_DIR .. "src/devices/bus/nes/rexsoft.cpp",
+ MAME_DIR .. "src/devices/bus/nes/rexsoft.h",
+ MAME_DIR .. "src/devices/bus/nes/sachen.cpp",
+ MAME_DIR .. "src/devices/bus/nes/sachen.h",
+ MAME_DIR .. "src/devices/bus/nes/sealie.cpp",
+ MAME_DIR .. "src/devices/bus/nes/sealie.h",
+ MAME_DIR .. "src/devices/bus/nes/somari.cpp",
+ MAME_DIR .. "src/devices/bus/nes/somari.h",
+ MAME_DIR .. "src/devices/bus/nes/subor.cpp",
+ MAME_DIR .. "src/devices/bus/nes/subor.h",
+ MAME_DIR .. "src/devices/bus/nes/sunsoft.cpp",
+ MAME_DIR .. "src/devices/bus/nes/sunsoft.h",
+ MAME_DIR .. "src/devices/bus/nes/sunsoft_dcs.cpp",
+ MAME_DIR .. "src/devices/bus/nes/sunsoft_dcs.h",
+ MAME_DIR .. "src/devices/bus/nes/taito.cpp",
+ MAME_DIR .. "src/devices/bus/nes/taito.h",
+ MAME_DIR .. "src/devices/bus/nes/tengen.cpp",
+ MAME_DIR .. "src/devices/bus/nes/tengen.h",
+ MAME_DIR .. "src/devices/bus/nes/txc.cpp",
+ MAME_DIR .. "src/devices/bus/nes/txc.h",
+ MAME_DIR .. "src/devices/bus/nes/vrc_clones.cpp",
+ MAME_DIR .. "src/devices/bus/nes/vrc_clones.h",
+ MAME_DIR .. "src/devices/bus/nes/waixing.cpp",
+ MAME_DIR .. "src/devices/bus/nes/waixing.h",
+ MAME_DIR .. "src/devices/bus/nes/zemina.cpp",
+ MAME_DIR .. "src/devices/bus/nes/zemina.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/nes_ctrl/ctrl.h,BUSES["NES_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["NES_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/nes_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/ctrl.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/joypad.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/joypad.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/4score.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/4score.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/arkpaddle.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/arkpaddle.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/bcbattle.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/bcbattle.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/ftrainer.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/ftrainer.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/fckeybrd.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/fckeybrd.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/hori.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/hori.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/konamihs.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/konamihs.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/miracle.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/miracle.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/mjpanel.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/mjpanel.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/pachinko.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/pachinko.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/partytap.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/partytap.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/powerpad.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/powerpad.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/suborkey.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/suborkey.h",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/zapper.cpp",
+ MAME_DIR .. "src/devices/bus/nes_ctrl/zapper.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sdk85/memexp.h,BUSES["SDK85"] = true
+---------------------------------------------------
+
+if (BUSES["SDK85"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sdk85/memexp.cpp",
+ MAME_DIR .. "src/devices/bus/sdk85/memexp.h",
+ MAME_DIR .. "src/devices/bus/sdk85/i8755.cpp",
+ MAME_DIR .. "src/devices/bus/sdk85/i8755.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/snes/snes_slot.h,BUSES["SNES"] = true
+---------------------------------------------------
+
+if (BUSES["SNES"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/snes/snes_slot.cpp",
+ MAME_DIR .. "src/devices/bus/snes/snes_slot.h",
+ MAME_DIR .. "src/devices/bus/snes/snes_carts.cpp",
+ MAME_DIR .. "src/devices/bus/snes/snes_carts.h",
+ MAME_DIR .. "src/devices/bus/snes/bsx.cpp",
+ MAME_DIR .. "src/devices/bus/snes/bsx.h",
+ MAME_DIR .. "src/devices/bus/snes/event.cpp",
+ MAME_DIR .. "src/devices/bus/snes/event.h",
+ MAME_DIR .. "src/devices/bus/snes/rom.cpp",
+ MAME_DIR .. "src/devices/bus/snes/rom.h",
+ MAME_DIR .. "src/devices/bus/snes/rom21.cpp",
+ MAME_DIR .. "src/devices/bus/snes/rom21.h",
+ MAME_DIR .. "src/devices/bus/snes/sa1.cpp",
+ MAME_DIR .. "src/devices/bus/snes/sa1.h",
+ MAME_DIR .. "src/devices/bus/snes/sdd1.cpp",
+ MAME_DIR .. "src/devices/bus/snes/sdd1.h",
+ MAME_DIR .. "src/devices/bus/snes/sfx.cpp",
+ MAME_DIR .. "src/devices/bus/snes/sfx.h",
+ MAME_DIR .. "src/devices/bus/snes/sgb.cpp",
+ MAME_DIR .. "src/devices/bus/snes/sgb.h",
+ MAME_DIR .. "src/devices/bus/snes/spc7110.cpp",
+ MAME_DIR .. "src/devices/bus/snes/spc7110.h",
+ MAME_DIR .. "src/devices/bus/snes/sufami.cpp",
+ MAME_DIR .. "src/devices/bus/snes/sufami.h",
+ MAME_DIR .. "src/devices/bus/snes/upd.cpp",
+ MAME_DIR .. "src/devices/bus/snes/upd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/snes_ctrl/ctrl.h,BUSES["SNES_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["SNES_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/snes_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/ctrl.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/bcbattle.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/bcbattle.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/joypad.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/joypad.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/miracle.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/miracle.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/mouse.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/multitap.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/multitap.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/pachinko.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/pachinko.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/sscope.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/sscope.h",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/twintap.cpp",
+ MAME_DIR .. "src/devices/bus/snes_ctrl/twintap.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/vboy/slot.h,BUSES["VBOY"] = true
+---------------------------------------------------
+if (BUSES["VBOY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vboy/slot.cpp",
+ MAME_DIR .. "src/devices/bus/vboy/slot.h",
+ MAME_DIR .. "src/devices/bus/vboy/rom.cpp",
+ MAME_DIR .. "src/devices/bus/vboy/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/megadrive/md_slot.h,BUSES["MEGADRIVE"] = true
+---------------------------------------------------
+
+if (BUSES["MEGADRIVE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/megadrive/md_slot.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/md_slot.h",
+ MAME_DIR .. "src/devices/bus/megadrive/md_carts.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/md_carts.h",
+ MAME_DIR .. "src/devices/bus/megadrive/eeprom.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/eeprom.h",
+ MAME_DIR .. "src/devices/bus/megadrive/ggenie.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/ggenie.h",
+ MAME_DIR .. "src/devices/bus/megadrive/jcart.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/jcart.h",
+ MAME_DIR .. "src/devices/bus/megadrive/rom.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/rom.h",
+ MAME_DIR .. "src/devices/bus/megadrive/sk.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/sk.h",
+ MAME_DIR .. "src/devices/bus/megadrive/stm95.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/stm95.h",
+ MAME_DIR .. "src/devices/bus/megadrive/svp.cpp",
+ MAME_DIR .. "src/devices/bus/megadrive/svp.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/neogeo/slot.h,BUSES["NEOGEO"] = true
+---------------------------------------------------
+
+if (BUSES["NEOGEO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/neogeo/slot.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/slot.h",
+ MAME_DIR .. "src/devices/bus/neogeo/carts.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/carts.h",
+ MAME_DIR .. "src/devices/bus/neogeo/rom.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/rom.h",
+ MAME_DIR .. "src/devices/bus/neogeo/fatfury2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/fatfury2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/kof98.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/kof98.h",
+ MAME_DIR .. "src/devices/bus/neogeo/mslugx.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/mslugx.h",
+ MAME_DIR .. "src/devices/bus/neogeo/cmc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/cmc.h",
+ MAME_DIR .. "src/devices/bus/neogeo/sma.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/sma.h",
+ MAME_DIR .. "src/devices/bus/neogeo/pcm2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/pcm2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/kof2k2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/kof2k2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/pvc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/pvc.h",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_cthd.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_cthd.h",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_misc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_misc.h",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_svc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_svc.h",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k3.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k3.h",
+ MAME_DIR .. "src/devices/bus/neogeo/sbp.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/sbp.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_fatfury2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_fatfury2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_kof98.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_kof98.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_mslugx.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_mslugx.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_cmc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_cmc.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_sma.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_sma.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_pcm2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_pcm2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k2.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k2.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_pvc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_pvc.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_cthd.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_cthd.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k3bl.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k3bl.h",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_kof10th.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/boot_kof10th.h",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_misc.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo/prot_misc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/bus/neogeo_ctrl/ctrl.h,BUSES["NEOGEO_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["NEOGEO_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/ctrl.h",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/joystick.h",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/mahjong.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/mahjong.h",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/dial.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/dial.h",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/irrmaze.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/irrmaze.h",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/kizuna4p.cpp",
+ MAME_DIR .. "src/devices/bus/neogeo_ctrl/kizuna4p.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sat_ctrl/ctrl.h,BUSES["SAT_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["SAT_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sat_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/ctrl.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/analog.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/analog.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/joy.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/joy.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/joy_md.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/joy_md.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/keybd.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/keybd.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/mouse.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/multitap.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/multitap.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/pointer.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/pointer.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/racing.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/racing.h",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/segatap.cpp",
+ MAME_DIR .. "src/devices/bus/sat_ctrl/segatap.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/saturn/sat_slot.h,BUSES["SATURN"] = true
+---------------------------------------------------
+
+if (BUSES["SATURN"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/saturn/sat_slot.cpp",
+ MAME_DIR .. "src/devices/bus/saturn/sat_slot.h",
+ MAME_DIR .. "src/devices/bus/saturn/bram.cpp",
+ MAME_DIR .. "src/devices/bus/saturn/bram.h",
+ MAME_DIR .. "src/devices/bus/saturn/dram.cpp",
+ MAME_DIR .. "src/devices/bus/saturn/dram.h",
+ MAME_DIR .. "src/devices/bus/saturn/rom.cpp",
+ MAME_DIR .. "src/devices/bus/saturn/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sega8/sega8_slot.h,BUSES["SEGA8"] = true
+---------------------------------------------------
+
+if (BUSES["SEGA8"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sega8/sega8_slot.cpp",
+ MAME_DIR .. "src/devices/bus/sega8/sega8_slot.h",
+ MAME_DIR .. "src/devices/bus/sega8/rom.cpp",
+ MAME_DIR .. "src/devices/bus/sega8/rom.h",
+ MAME_DIR .. "src/devices/bus/sega8/ccatch.cpp",
+ MAME_DIR .. "src/devices/bus/sega8/ccatch.h",
+ MAME_DIR .. "src/devices/bus/sega8/mgear.cpp",
+ MAME_DIR .. "src/devices/bus/sega8/mgear.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sg1000_exp/sg1000exp.h,BUSES["SG1000_EXP"] = true
+---------------------------------------------------
+
+if (BUSES["SG1000_EXP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sg1000_exp/sg1000exp.cpp",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/sg1000exp.h",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/fm_unit.cpp",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/fm_unit.h",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/sk1100.cpp",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/sk1100.h",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/sk1100prn.cpp",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/sk1100prn.h",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/kblink.cpp",
+ MAME_DIR .. "src/devices/bus/sg1000_exp/kblink.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sms_ctrl/smsctrl.h,BUSES["SMS_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["SMS_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sms_ctrl/smsctrl.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/smsctrl.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/joypad.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/joypad.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/lphaser.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/lphaser.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/paddle.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/paddle.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/rfu.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/rfu.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/sports.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/sports.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/sportsjp.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/sportsjp.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/multitap.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/multitap.h",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/graphic.cpp",
+ MAME_DIR .. "src/devices/bus/sms_ctrl/graphic.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sms_exp/smsexp.h,BUSES["SMS_EXP"] = true
+---------------------------------------------------
+
+if (BUSES["SMS_EXP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sms_exp/smsexp.cpp",
+ MAME_DIR .. "src/devices/bus/sms_exp/smsexp.h",
+ MAME_DIR .. "src/devices/bus/sms_exp/gender.cpp",
+ MAME_DIR .. "src/devices/bus/sms_exp/gender.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/tanbus/tanbus.h,BUSES["TANBUS"] = true
+---------------------------------------------------
+
+if (BUSES["TANBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/tanbus/bullsnd.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/bullsnd.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tanbus.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tanbus.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tanex.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tanex.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tandos.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tandos.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tanhrg.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tanhrg.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tanram.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tanram.h",
+ MAME_DIR .. "src/devices/bus/tanbus/mpvdu.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/mpvdu.h",
+ MAME_DIR .. "src/devices/bus/tanbus/ra32k.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/ra32k.h",
+ MAME_DIR .. "src/devices/bus/tanbus/radisc.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/radisc.h",
+ MAME_DIR .. "src/devices/bus/tanbus/ravdu.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/ravdu.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tug64k.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tug64k.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tug8082.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tug8082.h",
+ MAME_DIR .. "src/devices/bus/tanbus/tugpgm.cpp",
+ MAME_DIR .. "src/devices/bus/tanbus/tugpgm.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/ti8x/ti8x.h,BUSES["TI8X"] = true
+---------------------------------------------------
+
+if (BUSES["TI8X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ti8x/bitsocket.cpp",
+ MAME_DIR .. "src/devices/bus/ti8x/bitsocket.h",
+ MAME_DIR .. "src/devices/bus/ti8x/graphlinkhle.cpp",
+ MAME_DIR .. "src/devices/bus/ti8x/graphlinkhle.h",
+ MAME_DIR .. "src/devices/bus/ti8x/teeconn.cpp",
+ MAME_DIR .. "src/devices/bus/ti8x/teeconn.h",
+ MAME_DIR .. "src/devices/bus/ti8x/ti8x.cpp",
+ MAME_DIR .. "src/devices/bus/ti8x/ti8x.h",
+ MAME_DIR .. "src/devices/bus/ti8x/tispeaker.cpp",
+ MAME_DIR .. "src/devices/bus/ti8x/tispeaker.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/ti99x/990_dk.h,BUSES["TI99X"] = true
+--@src/devices/bus/ti99x/990_tap.h,BUSES["TI99X"] = true
+--@src/devices/bus/ti99x/990_hd.h,BUSES["TI99X"] = true
+---------------------------------------------------
+
+if (BUSES["TI99X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ti99x/990_dk.cpp",
+ MAME_DIR .. "src/devices/bus/ti99x/990_dk.h",
+ MAME_DIR .. "src/devices/bus/ti99x/990_hd.cpp",
+ MAME_DIR .. "src/devices/bus/ti99x/990_hd.h",
+ MAME_DIR .. "src/devices/bus/ti99x/990_tap.cpp",
+ MAME_DIR .. "src/devices/bus/ti99x/990_tap.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/ti99/colorbus/colorbus.h,BUSES["TI99"] = true
+--@src/devices/bus/ti99/gromport/cartridges.h,BUSES["TI99"] = true
+--@src/devices/bus/ti99/joyport/joyport.h,BUSES["TI99"] = true
+--@src/devices/bus/ti99/peb/peribox.h,BUSES["TI99"] = true
+--@src/devices/bus/ti99/internal/genboard.h,BUSES["TI99"] = true
+---------------------------------------------------
+
+if (BUSES["TI99"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ti99/internal/992board.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/992board.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/998board.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/998board.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/buffram.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/buffram.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/datamux.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/datamux.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/evpcconn.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/evpcconn.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/genboard.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/genboard.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/genkbd.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/genkbd.h",
+ MAME_DIR .. "src/devices/bus/ti99/internal/ioport.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/internal/ioport.h",
+ MAME_DIR .. "src/devices/bus/ti99/colorbus/busmouse.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/colorbus/busmouse.h",
+ MAME_DIR .. "src/devices/bus/ti99/colorbus/colorbus.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/colorbus/colorbus.h",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/gromport.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/gromport.h",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/cartridges.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/cartridges.h",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/gkracker.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/gkracker.h",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/multiconn.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/multiconn.h",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/singleconn.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/gromport/singleconn.h",
+ MAME_DIR .. "src/devices/bus/ti99/joyport/handset.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/joyport/handset.h",
+ MAME_DIR .. "src/devices/bus/ti99/joyport/joyport.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/joyport/joyport.h",
+ MAME_DIR .. "src/devices/bus/ti99/joyport/mecmouse.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/joyport/mecmouse.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/peribox.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/peribox.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/bwg.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/bwg.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/cc_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/cc_fdc.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/myarcfdc.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/myarcfdc.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/evpc.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/evpc.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/forti.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/forti.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/hfdc.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/hfdc.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/horizon.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/horizon.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/hsgpl.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/hsgpl.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/memex.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/memex.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/myarcmem.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/myarcmem.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/pcode.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/pcode.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/pgram.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/pgram.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/samsmem.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/samsmem.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/sidmaster.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/sidmaster.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/spchsyn.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/spchsyn.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/ti_32kmem.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/ti_32kmem.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/ti_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/ti_fdc.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/ti_rs232.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/ti_rs232.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/tn_ide.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/tn_ide.h",
+ MAME_DIR .. "src/devices/bus/ti99/peb/tn_usbsm.cpp",
+ MAME_DIR .. "src/devices/bus/ti99/peb/tn_usbsm.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/gameboy/gb_slot.h,BUSES["GAMEBOY"] = true
+---------------------------------------------------
+
+if (BUSES["GAMEBOY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/gameboy/gb_slot.cpp",
+ MAME_DIR .. "src/devices/bus/gameboy/gb_slot.h",
+ MAME_DIR .. "src/devices/bus/gameboy/rom.cpp",
+ MAME_DIR .. "src/devices/bus/gameboy/rom.h",
+ MAME_DIR .. "src/devices/bus/gameboy/mbc.cpp",
+ MAME_DIR .. "src/devices/bus/gameboy/mbc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/gamegear/ggext.h,BUSES["GAMEGEAR"] = true
+---------------------------------------------------
+
+if (BUSES["GAMEGEAR"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/gamegear/ggext.cpp",
+ MAME_DIR .. "src/devices/bus/gamegear/ggext.h",
+ MAME_DIR .. "src/devices/bus/gamegear/smsctrladp.cpp",
+ MAME_DIR .. "src/devices/bus/gamegear/smsctrladp.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/gba/gba_slot.h,BUSES["GBA"] = true
+---------------------------------------------------
+
+if (BUSES["GBA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/gba/gba_slot.cpp",
+ MAME_DIR .. "src/devices/bus/gba/gba_slot.h",
+ MAME_DIR .. "src/devices/bus/gba/rom.cpp",
+ MAME_DIR .. "src/devices/bus/gba/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/bml3/bml3bus.h,BUSES["BML3"] = true
+---------------------------------------------------
+if (BUSES["BML3"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/bml3/bml3bus.cpp",
+ MAME_DIR .. "src/devices/bus/bml3/bml3bus.h",
+ MAME_DIR .. "src/devices/bus/bml3/bml3mp1802.cpp",
+ MAME_DIR .. "src/devices/bus/bml3/bml3mp1802.h",
+ MAME_DIR .. "src/devices/bus/bml3/bml3mp1805.cpp",
+ MAME_DIR .. "src/devices/bus/bml3/bml3mp1805.h",
+ MAME_DIR .. "src/devices/bus/bml3/bml3kanji.cpp",
+ MAME_DIR .. "src/devices/bus/bml3/bml3kanji.h",
+ MAME_DIR .. "src/devices/bus/bml3/bml3rtc.cpp",
+ MAME_DIR .. "src/devices/bus/bml3/bml3rtc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/coco/cococart.h,BUSES["COCO"] = true
+---------------------------------------------------
+if (BUSES["COCO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/coco/coco_dcmodem.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_dcmodem.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_dwsock.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_dwsock.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_fdc.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_gmc.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_gmc.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_max.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_max.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_midi.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_midi.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_multi.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_multi.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_orch90.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_orch90.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_pak.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_pak.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_psg.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_psg.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_ram.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_ram.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_rs232.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_rs232.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_ssc.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_ssc.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_stecomp.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_stecomp.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_sym12.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_sym12.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_t4426.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_t4426.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_wpk.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_wpk.h",
+ MAME_DIR .. "src/devices/bus/coco/coco_wpk2p.cpp",
+ MAME_DIR .. "src/devices/bus/coco/coco_wpk2p.h",
+ MAME_DIR .. "src/devices/bus/coco/cococart.cpp",
+ MAME_DIR .. "src/devices/bus/coco/cococart.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_amtor.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_amtor.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_claw.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_claw.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_fdc.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_fdc.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_jcbsnd.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_jcbsnd.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_jcbspch.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_jcbspch.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_msx2.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_msx2.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_serial.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_serial.h",
+ MAME_DIR .. "src/devices/bus/coco/dragon_sprites.cpp",
+ MAME_DIR .. "src/devices/bus/coco/dragon_sprites.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/cpc/cpcexp.h,BUSES["CPC"] = true
+---------------------------------------------------
+if (BUSES["CPC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/cpc/cpcexp.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/cpcexp.h",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_ssa1.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_ssa1.h",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_rom.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_rom.h",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_pds.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_pds.h",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_rs232.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/cpc_rs232.h",
+ MAME_DIR .. "src/devices/bus/cpc/mface2.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/mface2.h",
+ MAME_DIR .. "src/devices/bus/cpc/symbfac2.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/symbfac2.h",
+ MAME_DIR .. "src/devices/bus/cpc/amdrum.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/amdrum.h",
+ MAME_DIR .. "src/devices/bus/cpc/playcity.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/playcity.h",
+ MAME_DIR .. "src/devices/bus/cpc/smartwatch.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/smartwatch.h",
+ MAME_DIR .. "src/devices/bus/cpc/brunword4.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/brunword4.h",
+ MAME_DIR .. "src/devices/bus/cpc/hd20.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/hd20.h",
+ MAME_DIR .. "src/devices/bus/cpc/ddi1.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/ddi1.h",
+ MAME_DIR .. "src/devices/bus/cpc/magicsound.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/magicsound.h",
+ MAME_DIR .. "src/devices/bus/cpc/doubler.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/doubler.h",
+ MAME_DIR .. "src/devices/bus/cpc/transtape.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/transtape.h",
+ MAME_DIR .. "src/devices/bus/cpc/musicmachine.cpp",
+ MAME_DIR .. "src/devices/bus/cpc/musicmachine.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/epson_sio/epson_sio.h,BUSES["EPSON_SIO"] = true
+---------------------------------------------------
+if (BUSES["EPSON_SIO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/epson_sio/epson_sio.cpp",
+ MAME_DIR .. "src/devices/bus/epson_sio/epson_sio.h",
+ MAME_DIR .. "src/devices/bus/epson_sio/pf10.cpp",
+ MAME_DIR .. "src/devices/bus/epson_sio/pf10.h",
+ MAME_DIR .. "src/devices/bus/epson_sio/tf20.cpp",
+ MAME_DIR .. "src/devices/bus/epson_sio/tf20.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/pce/pce_slot.h,BUSES["PCE"] = true
+---------------------------------------------------
+if (BUSES["PCE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pce/pce_slot.cpp",
+ MAME_DIR .. "src/devices/bus/pce/pce_slot.h",
+ MAME_DIR .. "src/devices/bus/pce/pce_rom.cpp",
+ MAME_DIR .. "src/devices/bus/pce/pce_rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/scv/slot.h,BUSES["SCV"] = true
+---------------------------------------------------
+if (BUSES["SCV"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/scv/slot.cpp",
+ MAME_DIR .. "src/devices/bus/scv/slot.h",
+ MAME_DIR .. "src/devices/bus/scv/rom.cpp",
+ MAME_DIR .. "src/devices/bus/scv/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/x68k/x68kexp.h,BUSES["X68K"] = true
+---------------------------------------------------
+if (BUSES["X68K"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/x68k/x68kexp.cpp",
+ MAME_DIR .. "src/devices/bus/x68k/x68kexp.h",
+ MAME_DIR .. "src/devices/bus/x68k/x68k_neptunex.cpp",
+ MAME_DIR .. "src/devices/bus/x68k/x68k_neptunex.h",
+ MAME_DIR .. "src/devices/bus/x68k/x68k_scsiext.cpp",
+ MAME_DIR .. "src/devices/bus/x68k/x68k_scsiext.h",
+ MAME_DIR .. "src/devices/bus/x68k/x68k_midi.cpp",
+ MAME_DIR .. "src/devices/bus/x68k/x68k_midi.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/abckb/abckb.h,BUSES["ABCKB"] = true
+---------------------------------------------------
+if (BUSES["ABCKB"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/abckb/abckb.cpp",
+ MAME_DIR .. "src/devices/bus/abckb/abckb.h",
+ MAME_DIR .. "src/devices/bus/abckb/abc77.cpp",
+ MAME_DIR .. "src/devices/bus/abckb/abc77.h",
+ MAME_DIR .. "src/devices/bus/abckb/abc99.cpp",
+ MAME_DIR .. "src/devices/bus/abckb/abc99.h",
+ MAME_DIR .. "src/devices/bus/abckb/abc800kb.cpp",
+ MAME_DIR .. "src/devices/bus/abckb/abc800kb.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/compucolor/floppy.h,BUSES["COMPUCOLOR"] = true
+---------------------------------------------------
+if (BUSES["COMPUCOLOR"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/compucolor/floppy.cpp",
+ MAME_DIR .. "src/devices/bus/compucolor/floppy.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/scsi/scsi.h,BUSES["SCSI"] = true
+---------------------------------------------------
+if (BUSES["SCSI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/scsi/scsi.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/scsi.h",
+ MAME_DIR .. "src/devices/bus/scsi/scsicd.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/scsicd.h",
+ MAME_DIR .. "src/devices/bus/scsi/scsihd.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/scsihd.h",
+ MAME_DIR .. "src/devices/bus/scsi/scsihle.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/scsihle.h",
+ MAME_DIR .. "src/devices/bus/scsi/cdu76s.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/cdu76s.h",
+ MAME_DIR .. "src/devices/bus/scsi/scsicd512.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/scsicd512.h",
+ MAME_DIR .. "src/devices/bus/scsi/acb4070.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/acb4070.h",
+ MAME_DIR .. "src/devices/bus/scsi/d9060hd.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/d9060hd.h",
+ MAME_DIR .. "src/devices/bus/scsi/sa1403d.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/sa1403d.h",
+ MAME_DIR .. "src/devices/bus/scsi/s1410.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/s1410.h",
+ MAME_DIR .. "src/devices/bus/scsi/pc9801_sasi.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/pc9801_sasi.h",
+ MAME_DIR .. "src/devices/bus/scsi/omti5100.cpp",
+ MAME_DIR .. "src/devices/bus/scsi/omti5100.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/mackbd/mackbd.h,BUSES["MACKBD"] = true
+---------------------------------------------------
+
+if (BUSES["MACKBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/mackbd/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/mackbd/keyboard.h",
+ MAME_DIR .. "src/devices/bus/mackbd/mackbd.cpp",
+ MAME_DIR .. "src/devices/bus/mackbd/mackbd.h",
+ MAME_DIR .. "src/devices/bus/mackbd/pluskbd.cpp",
+ MAME_DIR .. "src/devices/bus/mackbd/pluskbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/macpds/macpds.h,BUSES["MACPDS"] = true
+---------------------------------------------------
+if (BUSES["MACPDS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/macpds/macpds.cpp",
+ MAME_DIR .. "src/devices/bus/macpds/macpds.h",
+ MAME_DIR .. "src/devices/bus/macpds/pds_tpdfpd.cpp",
+ MAME_DIR .. "src/devices/bus/macpds/pds_tpdfpd.h",
+ MAME_DIR .. "src/devices/bus/macpds/hyperdrive.cpp",
+ MAME_DIR .. "src/devices/bus/macpds/hyperdrive.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/oricext/oricext.h,BUSES["ORICEXT"] = true
+---------------------------------------------------
+if (BUSES["ORICEXT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/oricext/oricext.cpp",
+ MAME_DIR .. "src/devices/bus/oricext/oricext.h",
+ MAME_DIR .. "src/devices/bus/oricext/jasmin.cpp",
+ MAME_DIR .. "src/devices/bus/oricext/jasmin.h",
+ MAME_DIR .. "src/devices/bus/oricext/microdisc.cpp",
+ MAME_DIR .. "src/devices/bus/oricext/microdisc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/a1bus/a1bus.h,BUSES["A1BUS"] = true
+---------------------------------------------------
+
+if (BUSES["A1BUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/a1bus/a1bus.cpp",
+ MAME_DIR .. "src/devices/bus/a1bus/a1bus.h",
+ MAME_DIR .. "src/devices/bus/a1bus/a1cassette.cpp",
+ MAME_DIR .. "src/devices/bus/a1bus/a1cassette.h",
+ MAME_DIR .. "src/devices/bus/a1bus/a1cffa.cpp",
+ MAME_DIR .. "src/devices/bus/a1bus/a1cffa.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/amiga/keyboard/keyboard.h,BUSES["AMIGA_KEYBOARD"] = true
+---------------------------------------------------
+
+if (BUSES["AMIGA_KEYBOARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/keyboard.h",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/matrix.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/matrix.h",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/a1200.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/a1200.h",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/a2000.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/a2000.h",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/mitsumi.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/keyboard/mitsumi.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/amiga/zorro/zorro.h,BUSES["ZORRO"] = true
+---------------------------------------------------
+
+if (BUSES["ZORRO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/amiga/zorro/zorro.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/zorro.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/cards.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/cards.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2052.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2052.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2058.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2058.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2065.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2065.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2232.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a2232.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a590.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/a590.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/action_replay.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/action_replay.h",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/buddha.cpp",
+ MAME_DIR .. "src/devices/bus/amiga/zorro/buddha.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sgikbd/sgikbd.h,BUSES["SGIKBD"] = true
+---------------------------------------------------
+
+if (BUSES["SGIKBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sgikbd/hlekbd.cpp",
+ MAME_DIR .. "src/devices/bus/sgikbd/hlekbd.h",
+ MAME_DIR .. "src/devices/bus/sgikbd/sgikbd.cpp",
+ MAME_DIR .. "src/devices/bus/sgikbd/sgikbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sunkbd/sunkbd.h,BUSES["SUNKBD"] = true
+---------------------------------------------------
+
+if (BUSES["SUNKBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sunkbd/hlekbd.cpp",
+ MAME_DIR .. "src/devices/bus/sunkbd/hlekbd.h",
+ MAME_DIR .. "src/devices/bus/sunkbd/sunkbd.cpp",
+ MAME_DIR .. "src/devices/bus/sunkbd/sunkbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sunmouse/sunmouse.h,BUSES["SUNMOUSE"] = true
+---------------------------------------------------
+
+if (BUSES["SUNMOUSE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sunmouse/hlemouse.cpp",
+ MAME_DIR .. "src/devices/bus/sunmouse/hlemouse.h",
+ MAME_DIR .. "src/devices/bus/sunmouse/sunmouse.cpp",
+ MAME_DIR .. "src/devices/bus/sunmouse/sunmouse.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/sbus/sbus.h,BUSES["SBUS"] = true
+---------------------------------------------------
+
+if (BUSES["SBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/sbus/artecon.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/artecon.h",
+ MAME_DIR .. "src/devices/bus/sbus/bwtwo.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/bwtwo.h",
+ MAME_DIR .. "src/devices/bus/sbus/cgsix.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/cgsix.h",
+ MAME_DIR .. "src/devices/bus/sbus/cgthree.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/cgthree.h",
+ MAME_DIR .. "src/devices/bus/sbus/hme.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/hme.h",
+ MAME_DIR .. "src/devices/bus/sbus/sunpc.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/sunpc.h",
+ MAME_DIR .. "src/devices/bus/sbus/sbus.cpp",
+ MAME_DIR .. "src/devices/bus/sbus/sbus.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/qbus/qbus.h,BUSES["QBUS"] = true
+---------------------------------------------------
+
+if (BUSES["QBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/qbus/dsd4432.cpp",
+ MAME_DIR .. "src/devices/bus/qbus/dsd4432.h",
+ MAME_DIR .. "src/devices/bus/qbus/pc11.cpp",
+ MAME_DIR .. "src/devices/bus/qbus/pc11.h",
+ MAME_DIR .. "src/devices/bus/qbus/qbus.cpp",
+ MAME_DIR .. "src/devices/bus/qbus/qbus.h",
+ MAME_DIR .. "src/devices/bus/qbus/qtx.cpp",
+ MAME_DIR .. "src/devices/bus/qbus/qtx.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/ql/exp.h,BUSES["QL"] = true
+---------------------------------------------------
+
+if (BUSES["QL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/ql/exp.cpp",
+ MAME_DIR .. "src/devices/bus/ql/exp.h",
+ MAME_DIR .. "src/devices/bus/ql/cst_qdisc.cpp",
+ MAME_DIR .. "src/devices/bus/ql/cst_qdisc.h",
+ MAME_DIR .. "src/devices/bus/ql/cst_q_plus4.cpp",
+ MAME_DIR .. "src/devices/bus/ql/cst_q_plus4.h",
+ MAME_DIR .. "src/devices/bus/ql/cumana_fdi.cpp",
+ MAME_DIR .. "src/devices/bus/ql/cumana_fdi.h",
+ MAME_DIR .. "src/devices/bus/ql/kempston_di.cpp",
+ MAME_DIR .. "src/devices/bus/ql/kempston_di.h",
+ MAME_DIR .. "src/devices/bus/ql/miracle_gold_card.cpp",
+ MAME_DIR .. "src/devices/bus/ql/miracle_gold_card.h",
+ MAME_DIR .. "src/devices/bus/ql/mp_fdi.cpp",
+ MAME_DIR .. "src/devices/bus/ql/mp_fdi.h",
+ MAME_DIR .. "src/devices/bus/ql/opd_basic_master.cpp",
+ MAME_DIR .. "src/devices/bus/ql/opd_basic_master.h",
+ MAME_DIR .. "src/devices/bus/ql/pcml_qdisk.cpp",
+ MAME_DIR .. "src/devices/bus/ql/pcml_qdisk.h",
+ MAME_DIR .. "src/devices/bus/ql/qubide.cpp",
+ MAME_DIR .. "src/devices/bus/ql/qubide.h",
+ MAME_DIR .. "src/devices/bus/ql/sandy_superdisk.cpp",
+ MAME_DIR .. "src/devices/bus/ql/sandy_superdisk.h",
+ MAME_DIR .. "src/devices/bus/ql/sandy_superqboard.cpp",
+ MAME_DIR .. "src/devices/bus/ql/sandy_superqboard.h",
+ MAME_DIR .. "src/devices/bus/ql/trumpcard.cpp",
+ MAME_DIR .. "src/devices/bus/ql/trumpcard.h",
+ MAME_DIR .. "src/devices/bus/ql/rom.cpp",
+ MAME_DIR .. "src/devices/bus/ql/rom.h",
+ MAME_DIR .. "src/devices/bus/ql/miracle_hd.cpp",
+ MAME_DIR .. "src/devices/bus/ql/miracle_hd.h",
+ MAME_DIR .. "src/devices/bus/ql/std.cpp",
+ MAME_DIR .. "src/devices/bus/ql/std.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/spectrum/exp.h,BUSES["SPECTRUM"] = true
+---------------------------------------------------
+
+if (BUSES["SPECTRUM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/spectrum/exp.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/exp.h",
+ MAME_DIR .. "src/devices/bus/spectrum/beta.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/beta.h",
+ MAME_DIR .. "src/devices/bus/spectrum/beta128.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/beta128.h",
+ MAME_DIR .. "src/devices/bus/spectrum/d40.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/d40.h",
+ MAME_DIR .. "src/devices/bus/spectrum/intf1.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/intf1.h",
+ MAME_DIR .. "src/devices/bus/spectrum/intf2.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/intf2.h",
+ MAME_DIR .. "src/devices/bus/spectrum/floppyone.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/floppyone.h",
+ MAME_DIR .. "src/devices/bus/spectrum/fuller.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/fuller.h",
+ MAME_DIR .. "src/devices/bus/spectrum/kempjoy.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/kempjoy.h",
+ MAME_DIR .. "src/devices/bus/spectrum/kempdisc.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/kempdisc.h",
+ MAME_DIR .. "src/devices/bus/spectrum/logitek.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/logitek.h",
+ MAME_DIR .. "src/devices/bus/spectrum/lprint.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/lprint.h",
+ MAME_DIR .. "src/devices/bus/spectrum/melodik.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/melodik.h",
+ MAME_DIR .. "src/devices/bus/spectrum/mface.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/mface.h",
+ MAME_DIR .. "src/devices/bus/spectrum/mgt.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/mgt.h",
+ MAME_DIR .. "src/devices/bus/spectrum/mikroplus.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/mikroplus.h",
+ MAME_DIR .. "src/devices/bus/spectrum/opus.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/opus.h",
+ MAME_DIR .. "src/devices/bus/spectrum/plus2test.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/plus2test.h",
+ MAME_DIR .. "src/devices/bus/spectrum/protek.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/protek.h",
+ MAME_DIR .. "src/devices/bus/spectrum/sdi.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/sdi.h",
+ MAME_DIR .. "src/devices/bus/spectrum/sixword.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/sixword.h",
+ MAME_DIR .. "src/devices/bus/spectrum/speccydos.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/speccydos.h",
+ MAME_DIR .. "src/devices/bus/spectrum/specdrum.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/specdrum.h",
+ MAME_DIR .. "src/devices/bus/spectrum/uslot.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/uslot.h",
+ MAME_DIR .. "src/devices/bus/spectrum/usource.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/usource.h",
+ MAME_DIR .. "src/devices/bus/spectrum/uspeech.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/uspeech.h",
+ MAME_DIR .. "src/devices/bus/spectrum/wafa.cpp",
+ MAME_DIR .. "src/devices/bus/spectrum/wafa.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/uts_kbd/uts_kbd.h,BUSES["UTS_KBD"] = true
+---------------------------------------------------
+
+if (BUSES["UTS_KBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/uts_kbd/400kbd.cpp",
+ MAME_DIR .. "src/devices/bus/uts_kbd/400kbd.h",
+ MAME_DIR .. "src/devices/bus/uts_kbd/extw.cpp",
+ MAME_DIR .. "src/devices/bus/uts_kbd/extw.h",
+ MAME_DIR .. "src/devices/bus/uts_kbd/uts_kbd.cpp",
+ MAME_DIR .. "src/devices/bus/uts_kbd/uts_kbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/vsmile/vsmile_ctrl.h,BUSES["VSMILE"] = true
+--@src/devices/bus/vsmile/vsmile_slot.h,BUSES["VSMILE"] = true
+---------------------------------------------------
+
+if (BUSES["VSMILE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vsmile/vsmile_ctrl.cpp",
+ MAME_DIR .. "src/devices/bus/vsmile/vsmile_ctrl.h",
+ MAME_DIR .. "src/devices/bus/vsmile/pad.cpp",
+ MAME_DIR .. "src/devices/bus/vsmile/pad.h",
+ MAME_DIR .. "src/devices/bus/vsmile/mat.cpp",
+ MAME_DIR .. "src/devices/bus/vsmile/mat.h",
+ MAME_DIR .. "src/devices/bus/vsmile/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/vsmile/keyboard.h",
+ MAME_DIR .. "src/devices/bus/vsmile/vsmile_slot.cpp",
+ MAME_DIR .. "src/devices/bus/vsmile/vsmile_slot.h",
+ MAME_DIR .. "src/devices/bus/vsmile/rom.cpp",
+ MAME_DIR .. "src/devices/bus/vsmile/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/vtech/memexp/memexp.h,BUSES["VTECH_MEMEXP"] = true
+---------------------------------------------------
+
+if (BUSES["VTECH_MEMEXP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vtech/memexp/memexp.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/memexp.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/carts.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/carts.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/floppy.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/floppy.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/memory.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/memory.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/rs232.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/rs232.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/rtty.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/rtty.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/sdloader.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/sdloader.h",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/wordpro.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/memexp/wordpro.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/vtech/ioexp/ioexp.h,BUSES["VTECH_IOEXP"] = true
+---------------------------------------------------
+
+if (BUSES["VTECH_IOEXP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/ioexp.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/ioexp.h",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/carts.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/carts.h",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/lpen.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/lpen.h",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/joystick.h",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/printer.cpp",
+ MAME_DIR .. "src/devices/bus/vtech/ioexp/printer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/wswan/slot.h,BUSES["WSWAN"] = true
+---------------------------------------------------
+
+if (BUSES["WSWAN"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/wswan/slot.cpp",
+ MAME_DIR .. "src/devices/bus/wswan/slot.h",
+ MAME_DIR .. "src/devices/bus/wswan/rom.cpp",
+ MAME_DIR .. "src/devices/bus/wswan/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/psx/ctlrport.h,BUSES["PSX_CONTROLLER"] = true
+---------------------------------------------------
+
+if (BUSES["PSX_CONTROLLER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/psx/ctlrport.cpp",
+ MAME_DIR .. "src/devices/bus/psx/ctlrport.h",
+ MAME_DIR .. "src/devices/bus/psx/analogue.cpp",
+ MAME_DIR .. "src/devices/bus/psx/analogue.h",
+ MAME_DIR .. "src/devices/bus/psx/multitap.cpp",
+ MAME_DIR .. "src/devices/bus/psx/multitap.h",
+ MAME_DIR .. "src/devices/bus/psx/memcard.cpp",
+ MAME_DIR .. "src/devices/bus/psx/memcard.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/psx/parallel.h,BUSES["PSX_PARALLEL"] = true
+---------------------------------------------------
+
+if (BUSES["PSX_PARALLEL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/psx/parallel.cpp",
+ MAME_DIR .. "src/devices/bus/psx/parallel.h",
+ MAME_DIR .. "src/devices/bus/psx/gamebooster.cpp",
+ MAME_DIR .. "src/devices/bus/psx/gamebooster.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/nasbus/nasbus.h,BUSES["NASBUS"] = true
+---------------------------------------------------
+
+if (BUSES["NASBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/nasbus/nasbus.cpp",
+ MAME_DIR .. "src/devices/bus/nasbus/nasbus.h",
+ MAME_DIR .. "src/devices/bus/nasbus/cards.cpp",
+ MAME_DIR .. "src/devices/bus/nasbus/cards.h",
+ MAME_DIR .. "src/devices/bus/nasbus/avc.cpp",
+ MAME_DIR .. "src/devices/bus/nasbus/avc.h",
+ MAME_DIR .. "src/devices/bus/nasbus/floppy.cpp",
+ MAME_DIR .. "src/devices/bus/nasbus/floppy.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/cgenie/expansion/expansion.h,BUSES["CGENIE_EXPANSION"] = true
+---------------------------------------------------
+
+if (BUSES["CGENIE_EXPANSION"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/cgenie/expansion/expansion.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/expansion/expansion.h",
+ MAME_DIR .. "src/devices/bus/cgenie/expansion/carts.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/expansion/carts.h",
+ MAME_DIR .. "src/devices/bus/cgenie/expansion/floppy.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/expansion/floppy.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/cgenie/parallel/parallel.h,BUSES["CGENIE_PARALLEL"] = true
+---------------------------------------------------
+
+if (BUSES["CGENIE_PARALLEL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/parallel.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/parallel.h",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/carts.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/carts.h",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/joystick.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/joystick.h",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/printer.cpp",
+ MAME_DIR .. "src/devices/bus/cgenie/parallel/printer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/m5/slot.h,BUSES["M5"] = true
+---------------------------------------------------
+if (BUSES["M5"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/m5/slot.cpp",
+ MAME_DIR .. "src/devices/bus/m5/slot.h",
+ MAME_DIR .. "src/devices/bus/m5/rom.cpp",
+ MAME_DIR .. "src/devices/bus/m5/rom.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/newbrain/exp.h,BUSES["NEWBRAIN"] = true
+---------------------------------------------------
+
+if (BUSES["NEWBRAIN"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/newbrain/exp.cpp",
+ MAME_DIR .. "src/devices/bus/newbrain/exp.h",
+ MAME_DIR .. "src/devices/bus/newbrain/eim.cpp",
+ MAME_DIR .. "src/devices/bus/newbrain/eim.h",
+ MAME_DIR .. "src/devices/bus/newbrain/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/newbrain/fdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/svi3x8/expander/expander.h,BUSES["SVI_EXPANDER"] = true
+---------------------------------------------------
+
+if (BUSES["SVI_EXPANDER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/expander.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/expander.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/modules.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/modules.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/sv601.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/sv601.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/sv602.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/sv602.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/sv603.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/expander/sv603.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/svi3x8/slot/slot.h,BUSES["SVI_SLOT"] = true
+---------------------------------------------------
+
+if (BUSES["SVI_SLOT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/slot.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/slot.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/cards.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/cards.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv801.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv801.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv802.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv802.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv803.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv803.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv805.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv805.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv806.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv806.h",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv807.cpp",
+ MAME_DIR .. "src/devices/bus/svi3x8/slot/sv807.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/hp80_io/hp80_io.h,BUSES["HP80_IO"] = true
+---------------------------------------------------
+
+if (BUSES["HP80_IO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/hp80_io/hp80_io.cpp",
+ MAME_DIR .. "src/devices/bus/hp80_io/hp80_io.h",
+ MAME_DIR .. "src/devices/bus/hp80_io/82900.cpp",
+ MAME_DIR .. "src/devices/bus/hp80_io/82900.h",
+ MAME_DIR .. "src/devices/bus/hp80_io/82937.cpp",
+ MAME_DIR .. "src/devices/bus/hp80_io/82937.h",
+ MAME_DIR .. "src/devices/bus/hp80_io/82939.cpp",
+ MAME_DIR .. "src/devices/bus/hp80_io/82939.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/hp9845_io/hp9845_io.h,BUSES["HP9845_IO"] = true
+---------------------------------------------------
+
+if (BUSES["HP9845_IO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/hp9845_io/hp9845_io.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/hp9845_io.h",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98032.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98032.h",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98034.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98034.h",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98035.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98035.h",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98036.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98036.h",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98046.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/98046.h",
+ MAME_DIR .. "src/devices/bus/hp9845_io/hp9885.cpp",
+ MAME_DIR .. "src/devices/bus/hp9845_io/hp9885.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/hp_ipc_io/hp_ipc_io.h,BUSES["HP_IPC_IO"] = true
+---------------------------------------------------
+
+if (BUSES["HP_IPC_IO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/hp_ipc_io/hp_ipc_io.cpp",
+ MAME_DIR .. "src/devices/bus/hp_ipc_io/hp_ipc_io.h",
+ MAME_DIR .. "src/devices/bus/hp_ipc_io/82919.cpp",
+ MAME_DIR .. "src/devices/bus/hp_ipc_io/82919.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/compis/graphics.h,BUSES["COMPIS_GRAPHICS"] = true
+---------------------------------------------------
+
+if (BUSES["COMPIS_GRAPHICS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/compis/graphics.cpp",
+ MAME_DIR .. "src/devices/bus/compis/graphics.h",
+ MAME_DIR .. "src/devices/bus/compis/hrg.cpp",
+ MAME_DIR .. "src/devices/bus/compis/hrg.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/pc1512/mouse.h,BUSES["PC1512"] = true
+---------------------------------------------------
+
+if (BUSES["PC1512"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pc1512/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/pc1512/mouse.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/cbus/pc9801_cbus.h,BUSES["CBUS"] = true
+---------------------------------------------------
+
+if (BUSES["CBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_26.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_26.h",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_55.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_55.h",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_86.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_86.h",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_118.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_118.h",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_amd98.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_amd98.h",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_snd.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_snd.h",
+ MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.h",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_cbus.cpp",
+ MAME_DIR .. "src/devices/bus/cbus/pc9801_cbus.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/psi_kbd/psi_kbd.h,BUSES["PSI_KEYBOARD"] = true
+---------------------------------------------------
+
+if (BUSES["PSI_KEYBOARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/psi_kbd/psi_kbd.cpp",
+ MAME_DIR .. "src/devices/bus/psi_kbd/psi_kbd.h",
+ MAME_DIR .. "src/devices/bus/psi_kbd/ergoline.cpp",
+ MAME_DIR .. "src/devices/bus/psi_kbd/ergoline.h",
+ MAME_DIR .. "src/devices/bus/psi_kbd/hle.cpp",
+ MAME_DIR .. "src/devices/bus/psi_kbd/hle.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/interpro/sr/sr.h,BUSES["INTERPRO_SR"] = true
+---------------------------------------------------
+
+if (BUSES["INTERPRO_SR"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/interpro/sr/sr.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/sr/sr.h",
+ MAME_DIR .. "src/devices/bus/interpro/sr/sr_cards.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/sr/sr_cards.h",
+ MAME_DIR .. "src/devices/bus/interpro/sr/gt.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/sr/gt.h",
+ MAME_DIR .. "src/devices/bus/interpro/sr/edge.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/sr/edge.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/interpro/keyboard/keyboard.h,BUSES["INTERPRO_KEYBOARD"] = true
+---------------------------------------------------
+
+if (BUSES["INTERPRO_KEYBOARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/interpro/keyboard/keyboard.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/keyboard/keyboard.h",
+ MAME_DIR .. "src/devices/bus/interpro/keyboard/hle.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/keyboard/hle.h",
+ MAME_DIR .. "src/devices/bus/interpro/keyboard/lle.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/keyboard/lle.h"
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/interpro/mouse/mouse.h,BUSES["INTERPRO_MOUSE"] = true
+---------------------------------------------------
+
+if (BUSES["INTERPRO_MOUSE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/interpro/mouse/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/interpro/mouse/mouse.h"
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/einstein/pipe/pipe.h,BUSES["TATUNG_PIPE"] = true
+---------------------------------------------------
+
+if (BUSES["TATUNG_PIPE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/einstein/pipe/pipe.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/pipe.h",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/silicon_disc.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/silicon_disc.h",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/speculator.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/speculator.h",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/tk02.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/pipe/tk02.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/einstein/userport/userport.h,BUSES["EINSTEIN_USERPORT"] = true
+---------------------------------------------------
+
+if (BUSES["EINSTEIN_USERPORT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/einstein/userport/userport.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/userport/userport.h",
+ MAME_DIR .. "src/devices/bus/einstein/userport/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/userport/mouse.h",
+ MAME_DIR .. "src/devices/bus/einstein/userport/speech.cpp",
+ MAME_DIR .. "src/devices/bus/einstein/userport/speech.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/tmc600/euro.h,BUSES["TMC600"] = true
+---------------------------------------------------
+
+if (BUSES["TMC600"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/tmc600/euro.cpp",
+ MAME_DIR .. "src/devices/bus/tmc600/euro.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/multibus/multibus.h,BUSES["MULTIBUS"] = true
+---------------------------------------------------
+
+if (BUSES["MULTIBUS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/multibus/multibus.cpp",
+ MAME_DIR .. "src/devices/bus/multibus/multibus.h",
+ MAME_DIR .. "src/devices/bus/multibus/isbc202.cpp",
+ MAME_DIR .. "src/devices/bus/multibus/isbc202.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/rtpc/kbd_con.h,BUSES["RTPC_KBD"] = true
+---------------------------------------------------
+
+if (BUSES["RTPC_KBD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/rtpc/kbd_con.cpp",
+ MAME_DIR .. "src/devices/bus/rtpc/kbd_con.h",
+ MAME_DIR .. "src/devices/bus/rtpc/kbd.cpp",
+ MAME_DIR .. "src/devices/bus/rtpc/kbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/saitek_osa/expansion.h,BUSES["SAITEK_OSA"] = true
+---------------------------------------------------
+
+if (BUSES["SAITEK_OSA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/saitek_osa/expansion.cpp",
+ MAME_DIR .. "src/devices/bus/saitek_osa/expansion.h",
+ MAME_DIR .. "src/devices/bus/saitek_osa/maestro.cpp",
+ MAME_DIR .. "src/devices/bus/saitek_osa/maestro.h",
+ MAME_DIR .. "src/devices/bus/saitek_osa/maestroa.cpp",
+ MAME_DIR .. "src/devices/bus/saitek_osa/maestroa.h",
+ MAME_DIR .. "src/devices/bus/saitek_osa/sparc.cpp",
+ MAME_DIR .. "src/devices/bus/saitek_osa/sparc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/samcoupe/drive/drive.h,BUSES["SAMCOUPE_DRIVE_PORT"] = true
+---------------------------------------------------
+
+if (BUSES["SAMCOUPE_DRIVE_PORT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/drive.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/drive.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/modules.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/modules.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/atom.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/atom.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/floppy.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/drive/floppy.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/samcoupe/expansion/expansion.h,BUSES["SAMCOUPE_EXPANSION"] = true
+---------------------------------------------------
+
+if (BUSES["SAMCOUPE_EXPANSION"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/expansion.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/expansion.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/modules.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/modules.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/blue_sampler.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/blue_sampler.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/dallas.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/dallas.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/onemeg.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/onemeg.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/sambus.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/sambus.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/sdide.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/sdide.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/sid.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/sid.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/spi.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/spi.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/voicebox.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/expansion/voicebox.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/samcoupe/mouse/mouse.h,BUSES["SAMCOUPE_MOUSE_PORT"] = true
+---------------------------------------------------
+
+if (BUSES["SAMCOUPE_MOUSE_PORT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/samcoupe/mouse/mouseport.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/mouse/mouseport.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/mouse/modules.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/mouse/modules.h",
+ MAME_DIR .. "src/devices/bus/samcoupe/mouse/mouse.cpp",
+ MAME_DIR .. "src/devices/bus/samcoupe/mouse/mouse.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/thomson/extension.h,BUSES["THOMSON"] = true
+---------------------------------------------------
+
+if (BUSES["THOMSON"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/thomson/extension.cpp",
+ MAME_DIR .. "src/devices/bus/thomson/extension.h",
+ MAME_DIR .. "src/devices/bus/thomson/cd90_015.cpp",
+ MAME_DIR .. "src/devices/bus/thomson/cd90_015.h",
+ MAME_DIR .. "src/devices/bus/thomson/cq90_028.cpp",
+ MAME_DIR .. "src/devices/bus/thomson/cq90_028.h",
+ MAME_DIR .. "src/devices/bus/thomson/cd90_351.cpp",
+ MAME_DIR .. "src/devices/bus/thomson/cd90_351.h",
+ MAME_DIR .. "src/devices/bus/thomson/cd90_640.cpp",
+ MAME_DIR .. "src/devices/bus/thomson/cd90_640.h",
+ MAME_DIR .. "src/devices/bus/thomson/nanoreseau.cpp",
+ MAME_DIR .. "src/devices/bus/thomson/nanoreseau.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/bus/pce_ctrl/pcectrl.h,BUSES["PCE_CTRL"] = true
+---------------------------------------------------
+
+if (BUSES["PCE_CTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/pce_ctrl/pcectrl.cpp",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/pcectrl.h",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/joypad2.cpp",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/joypad2.h",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/joypad6.cpp",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/joypad6.h",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/multitap.cpp",
+ MAME_DIR .. "src/devices/bus/pce_ctrl/multitap.h",
+ }
+end
diff --git a/docs/release/scripts/src/cpu.lua b/docs/release/scripts/src/cpu.lua
new file mode 100644
index 00000000000..9c612457313
--- /dev/null
+++ b/docs/release/scripts/src/cpu.lua
@@ -0,0 +1,3526 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- cpu.lua
+--
+-- Rules for building CPU cores
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- Dynamic recompiler objects
+--------------------------------------------------
+
+DRC_CPUS = { "E1", "SH", "MIPS3", "POWERPC", "ARM7", "ADSP21062", "MB86235", "DSP16", "UNSP" }
+CPU_INCLUDE_DRC = false
+for i, v in ipairs(DRC_CPUS) do
+ if (CPUS[v]~=null) then
+ CPU_INCLUDE_DRC = true
+ break
+ end
+end
+
+
+if (CPU_INCLUDE_DRC) then
+ files {
+ MAME_DIR .. "src/devices/cpu/drcbec.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbec.h",
+ MAME_DIR .. "src/devices/cpu/drcbeut.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbeut.h",
+ MAME_DIR .. "src/devices/cpu/drccache.cpp",
+ MAME_DIR .. "src/devices/cpu/drccache.h",
+ MAME_DIR .. "src/devices/cpu/drcfe.cpp",
+ MAME_DIR .. "src/devices/cpu/drcfe.h",
+ MAME_DIR .. "src/devices/cpu/drcuml.cpp",
+ MAME_DIR .. "src/devices/cpu/drcuml.h",
+ MAME_DIR .. "src/devices/cpu/uml.cpp",
+ MAME_DIR .. "src/devices/cpu/uml.h",
+ MAME_DIR .. "src/devices/cpu/x86log.cpp",
+ MAME_DIR .. "src/devices/cpu/x86log.h",
+ MAME_DIR .. "src/devices/cpu/drcumlsh.h",
+ }
+ if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/drcbex64.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbex64.h",
+ MAME_DIR .. "src/devices/cpu/drcbex86.cpp",
+ MAME_DIR .. "src/devices/cpu/drcbex86.h",
+ }
+ end
+
+ if _OPTIONS["targetos"]=="macosx" and _OPTIONS["gcc"]~=nil then
+ if string.find(_OPTIONS["gcc"], "clang") and (str_to_version(_OPTIONS["gcc_version"]) < 80000) then
+ defines {
+ "TARGET_OS_OSX=1",
+ }
+ end
+ end
+end
+
+--------------------------------------------------
+-- Signetics 8X300 / Scientific Micro Systems SMS300
+--@src/devices/cpu/8x300/8x300.h,CPUS["8X300"] = true
+--------------------------------------------------
+
+if CPUS["8X300"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/8x300/8x300.cpp",
+ MAME_DIR .. "src/devices/cpu/8x300/8x300.h",
+ }
+end
+
+if opt_tool(CPUS, "8X300") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/8x300/8x300dasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/8x300/8x300dasm.cpp")
+end
+
+--------------------------------------------------
+-- 3DO Don's Super Performing Processor (DSPP)
+--@src/devices/cpu/dspp/dspp.h,CPUS["DSPP"] = true
+--------------------------------------------------
+
+if CPUS["DSPP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/dspp/dspp.cpp",
+ MAME_DIR .. "src/devices/cpu/dspp/dspp.h",
+ MAME_DIR .. "src/devices/cpu/dspp/dsppdrc.cpp",
+ MAME_DIR .. "src/devices/cpu/dspp/dsppfe.cpp",
+ MAME_DIR .. "src/devices/cpu/dspp/dsppfe.h",
+ }
+end
+
+if opt_tool(CPUS, "DSPP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dspp/dsppdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dspp/dsppdasm.h")
+end
+
+--------------------------------------------------
+-- ARCangent A4
+--@src/devices/cpu/arc/arc.h,CPUS["ARC"] = true
+--------------------------------------------------
+
+if CPUS["ARC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/arc/arc.cpp",
+ MAME_DIR .. "src/devices/cpu/arc/arc.h",
+ }
+end
+
+if opt_tool(CPUS, "ARC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arc/arcdasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arc/arcdasm.cpp")
+end
+
+--------------------------------------------------
+-- ARcompact (ARCtangent-A5, ARC 600, ARC 700)
+--@src/devices/cpu/arcompact/arcompact.h,CPUS["ARCOMPACT"] = true
+--------------------------------------------------
+
+if CPUS["ARCOMPACT"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/arcompact/arcompact.cpp",
+ MAME_DIR .. "src/devices/cpu/arcompact/arcompact.h",
+ MAME_DIR .. "src/devices/cpu/arcompact/arcompact_execute.cpp",
+ }
+end
+
+if opt_tool(CPUS, "ARCOMPACT") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arcompact/arcompactdasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arcompact/arcompactdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arcompact/arcompactdasm_dispatch.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arcompact/arcompactdasm_ops.cpp")
+end
+
+--------------------------------------------------
+-- Acorn ARM series
+--
+--@src/devices/cpu/arm/arm.h,CPUS["ARM"] = true
+--@src/devices/cpu/arm7/arm7.h,CPUS["ARM7"] = true
+--------------------------------------------------
+
+if CPUS["ARM"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/arm/arm.cpp",
+ MAME_DIR .. "src/devices/cpu/arm/arm.h",
+ }
+end
+
+if opt_tool(CPUS, "ARM") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arm/armdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arm/armdasm.h")
+end
+
+if CPUS["ARM7"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/arm7/arm7.cpp",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7.h",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7thmb.cpp",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7ops.cpp",
+ MAME_DIR .. "src/devices/cpu/arm7/lpc210x.cpp",
+ MAME_DIR .. "src/devices/cpu/arm7/lpc210x.h",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7core.h",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7core.hxx",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7drc.hxx",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7help.h",
+ MAME_DIR .. "src/devices/cpu/arm7/arm7tdrc.hxx",
+ MAME_DIR .. "src/devices/cpu/arm7/cecalls.hxx",
+ }
+end
+
+if opt_tool(CPUS, "ARM7") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arm7/arm7dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/arm7/arm7dasm.h")
+end
+
+--------------------------------------------------
+-- Advanced Digital Chips SE3208
+--@src/devices/cpu/se3208/se3208.h,CPUS["SE3208"] = true
+--------------------------------------------------
+
+if CPUS["SE3208"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/se3208/se3208.cpp",
+ MAME_DIR .. "src/devices/cpu/se3208/se3208.h",
+ }
+end
+
+if opt_tool(CPUS, "SE3208") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/se3208/se3208dis.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/se3208/se3208dis.h")
+end
+
+--------------------------------------------------
+-- American Microsystems, Inc.(AMI) S2000 series
+--@src/devices/cpu/amis2000/amis2000.h,CPUS["AMIS2000"] = true
+--------------------------------------------------
+
+if CPUS["AMIS2000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/amis2000/amis2000.cpp",
+ MAME_DIR .. "src/devices/cpu/amis2000/amis2000.h",
+ MAME_DIR .. "src/devices/cpu/amis2000/amis2000op.cpp",
+ }
+end
+
+if opt_tool(CPUS, "AMIS2000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/amis2000/amis2000d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/amis2000/amis2000d.h")
+end
+
+--------------------------------------------------
+-- Analog Devices ADSP21xx series
+--@src/devices/cpu/adsp2100/adsp2100.h,CPUS["ADSP21XX"] = true
+--------------------------------------------------
+
+if CPUS["ADSP21XX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/adsp2100/adsp2100.cpp",
+ MAME_DIR .. "src/devices/cpu/adsp2100/adsp2100.h",
+ MAME_DIR .. "src/devices/cpu/adsp2100/2100ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "ADSP21XX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/adsp2100/2100dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/adsp2100/2100dasm.h")
+end
+
+--------------------------------------------------
+-- Analog Devices "Sharc" ADSP21062
+--@src/devices/cpu/sharc/sharc.h,CPUS["ADSP21062"] = true
+--------------------------------------------------
+
+if CPUS["ADSP21062"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/sharc/sharc.cpp",
+ MAME_DIR .. "src/devices/cpu/sharc/sharc.h",
+ MAME_DIR .. "src/devices/cpu/sharc/compute.hxx",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcdma.hxx",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcmem.hxx",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcops.h",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcops.hxx",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcdrc.cpp",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcfe.cpp",
+ MAME_DIR .. "src/devices/cpu/sharc/sharcfe.h",
+ }
+end
+
+if opt_tool(CPUS, "ADSP21062") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sharc/sharcdsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sharc/sharcdsm.h")
+end
+
+--------------------------------------------------
+-- APEXC
+--@src/devices/cpu/apexc/apexc.h,CPUS["APEXC"] = true
+--------------------------------------------------
+
+if CPUS["APEXC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/apexc/apexc.cpp",
+ MAME_DIR .. "src/devices/cpu/apexc/apexc.h",
+ }
+end
+
+if opt_tool(CPUS, "APEXC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/apexc/apexcdsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/apexc/apexcdsm.h")
+end
+
+--------------------------------------------------
+-- WE|AT&T DSP16
+--@src/devices/cpu/dsp16/dsp16.h,CPUS["DSP16"] = true
+--------------------------------------------------
+
+if CPUS["DSP16"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16.h",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16core.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16core.h",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16core.ipp",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16fe.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16fe.h",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16rc.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp16/dsp16rc.h",
+ }
+end
+
+if opt_tool(CPUS, "DSP16") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp16/dsp16dis.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp16/dsp16dis.h")
+end
+
+--------------------------------------------------
+-- AT&T DSP32C
+--@src/devices/cpu/dsp32/dsp32.h,CPUS["DSP32C"] = true
+--------------------------------------------------
+
+if CPUS["DSP32C"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/dsp32/dsp32.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp32/dsp32.h",
+ MAME_DIR .. "src/devices/cpu/dsp32/dsp32ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "DSP32C") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp32/dsp32dis.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp32/dsp32dis.h")
+end
+
+--------------------------------------------------
+-- Atari custom RISC processor
+--@src/devices/cpu/asap/asap.h,CPUS["ASAP"] = true
+--------------------------------------------------
+
+if CPUS["ASAP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/asap/asap.cpp",
+ MAME_DIR .. "src/devices/cpu/asap/asap.h",
+ }
+end
+
+if opt_tool(CPUS, "ASAP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/asap/asapdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/asap/asapdasm.h")
+end
+
+--------------------------------------------------
+-- AMD Am29000
+--@src/devices/cpu/am29000/am29000.h,CPUS["AM29000"] = true
+--------------------------------------------------
+
+if CPUS["AM29000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/am29000/am29000.cpp",
+ MAME_DIR .. "src/devices/cpu/am29000/am29000.h",
+ MAME_DIR .. "src/devices/cpu/am29000/am29ops.h",
+ }
+end
+
+if opt_tool(CPUS, "AM29000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/am29000/am29dasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/am29000/am29dasm.cpp")
+end
+
+--------------------------------------------------
+-- Atari Jaguar custom DSPs
+--@src/devices/cpu/jaguar/jaguar.h,CPUS["JAGUAR"] = true
+--------------------------------------------------
+
+if CPUS["JAGUAR"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/jaguar/jaguar.cpp",
+ MAME_DIR .. "src/devices/cpu/jaguar/jaguar.h",
+ }
+end
+
+if opt_tool(CPUS, "JAGUAR") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/jaguar/jagdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/jaguar/jagdasm.h")
+end
+
+--------------------------------------------------
+-- Simutrek Cube Quest bit-sliced CPUs
+--@src/devices/cpu/cubeqcpu/cubeqcpu.h,CPUS["CUBEQCPU"] = true
+--------------------------------------------------
+
+if CPUS["CUBEQCPU"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/cubeqcpu/cubeqcpu.cpp",
+ MAME_DIR .. "src/devices/cpu/cubeqcpu/cubeqcpu.h",
+ }
+end
+
+if opt_tool(CPUS, "CUBEQCPU") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cubeqcpu/cubedasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cubeqcpu/cubedasm.h")
+end
+
+--------------------------------------------------
+-- Ensoniq ES5510 ('ESP') DSP
+--@src/devices/cpu/es5510/es5510.h,CPUS["ES5510"] = true
+--------------------------------------------------
+
+if CPUS["ES5510"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/es5510/es5510.cpp",
+ MAME_DIR .. "src/devices/cpu/es5510/es5510.h",
+ }
+end
+
+if opt_tool(CPUS, "ES5510") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/es5510/es5510d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/es5510/es5510d.h")
+end
+
+--------------------------------------------------
+-- Entertainment Sciences AM29116-based RIP
+--@src/devices/cpu/esrip/esrip.h,CPUS["ESRIP"] = true
+--------------------------------------------------
+
+if CPUS["ESRIP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/esrip/esrip.cpp",
+ MAME_DIR .. "src/devices/cpu/esrip/esrip.h",
+ }
+end
+
+if opt_tool(CPUS, "ESRIP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/esrip/esripdsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/esrip/esripdsm.h")
+end
+
+--------------------------------------------------
+-- Seiko Epson E0C6200 series
+--@src/devices/cpu/e0c6200/e0c6200.h,CPUS["E0C6200"] = true
+--------------------------------------------------
+
+if CPUS["E0C6200"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200.cpp",
+ MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200.h",
+ MAME_DIR .. "src/devices/cpu/e0c6200/e0c6s46.cpp",
+ MAME_DIR .. "src/devices/cpu/e0c6200/e0c6s46.h",
+ MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200op.cpp",
+ }
+end
+
+if opt_tool(CPUS, "E0C6200") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200d.h")
+end
+
+--------------------------------------------------
+-- RCA COSMAC
+--@src/devices/cpu/cosmac/cosmac.h,CPUS["COSMAC"] = true
+--------------------------------------------------
+
+if CPUS["COSMAC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/cosmac/cosmac.cpp",
+ MAME_DIR .. "src/devices/cpu/cosmac/cosmac.h",
+ }
+end
+
+if opt_tool(CPUS, "COSMAC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cosmac/cosdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cosmac/cosdasm.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor COPS(MM57) family
+--@src/devices/cpu/cops1/mm5799.h,CPUS["COPS1"] = true
+--------------------------------------------------
+
+if CPUS["COPS1"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/cops1/cops1base.cpp",
+ MAME_DIR .. "src/devices/cpu/cops1/cops1base.h",
+ MAME_DIR .. "src/devices/cpu/cops1/mm5799.cpp",
+ MAME_DIR .. "src/devices/cpu/cops1/mm5799.h",
+ MAME_DIR .. "src/devices/cpu/cops1/mm5799op.cpp",
+ }
+end
+
+if opt_tool(CPUS, "COPS1") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cops1/cops1d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cops1/cops1d.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor COPS(COP400) family
+--@src/devices/cpu/cop400/cop400.h,CPUS["COP400"] = true
+--------------------------------------------------
+
+if CPUS["COP400"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/cop400/cop400.cpp",
+ MAME_DIR .. "src/devices/cpu/cop400/cop400.h",
+ MAME_DIR .. "src/devices/cpu/cop400/cop400op.hxx",
+ }
+end
+
+if opt_tool(CPUS, "COP400") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop410ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop410ds.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop420ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop420ds.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop444ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop444ds.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop424ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cop400/cop424ds.h")
+end
+
+--------------------------------------------------
+-- CP1610
+--@src/devices/cpu/cp1610/cp1610.h,CPUS["CP1610"] = true
+--------------------------------------------------
+
+if CPUS["CP1610"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/cp1610/cp1610.cpp",
+ MAME_DIR .. "src/devices/cpu/cp1610/cp1610.h",
+ }
+end
+
+if opt_tool(CPUS, "CP1610") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cp1610/1610dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cp1610/1610dasm.h")
+end
+
+--------------------------------------------------
+-- Cinematronics vector "CPU"
+--@src/devices/cpu/ccpu/ccpu.h,CPUS["CCPU"] = true
+--------------------------------------------------
+
+if CPUS["CCPU"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ccpu/ccpu.cpp",
+ MAME_DIR .. "src/devices/cpu/ccpu/ccpu.h",
+ }
+end
+
+if opt_tool(CPUS, "CCPU") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ccpu/ccpudasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ccpu/ccpudasm.cpp")
+end
+
+--------------------------------------------------
+-- DEC T-11
+--@src/devices/cpu/t11/t11.h,CPUS["T11"] = true
+--------------------------------------------------
+
+if CPUS["T11"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/t11/t11.cpp",
+ MAME_DIR .. "src/devices/cpu/t11/t11.h",
+ MAME_DIR .. "src/devices/cpu/t11/t11ops.hxx",
+ MAME_DIR .. "src/devices/cpu/t11/t11table.hxx",
+ }
+end
+
+if opt_tool(CPUS, "T11") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/t11/t11dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/t11/t11dasm.h")
+end
+
+--------------------------------------------------
+-- DEC PDP-8
+--@src/devices/cpu/pdp8/pdp8.h,CPUS["PDP8"] = true
+--------------------------------------------------
+
+if CPUS["PDP8"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pdp8/hd6120.cpp",
+ MAME_DIR .. "src/devices/cpu/pdp8/hd6120.h",
+ MAME_DIR .. "src/devices/cpu/pdp8/pdp8.cpp",
+ MAME_DIR .. "src/devices/cpu/pdp8/pdp8.h",
+ }
+end
+
+if opt_tool(CPUS, "PDP8") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pdp8/pdp8dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pdp8/pdp8dasm.h")
+end
+
+--------------------------------------------------
+-- F8
+--@src/devices/cpu/f8/f8.h,CPUS["F8"] = true
+--------------------------------------------------
+
+if CPUS["F8"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/f8/f8.cpp",
+ MAME_DIR .. "src/devices/cpu/f8/f8.h",
+ }
+end
+
+if opt_tool(CPUS, "F8") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/f8/f8dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/f8/f8dasm.h")
+end
+
+--------------------------------------------------
+-- Fujitsu FR
+--@src/devices/cpu/fr/fr.h,CPUS["FR"] = true
+--------------------------------------------------
+
+if CPUS["FR"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/fr/fr.cpp",
+ MAME_DIR .. "src/devices/cpu/fr/fr.h",
+ }
+end
+
+if opt_tool(CPUS, "FR") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/fr/frdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/fr/frdasm.h")
+end
+
+--------------------------------------------------
+-- G65816
+--@src/devices/cpu/g65816/g65816.h,CPUS["G65816"] = true
+--------------------------------------------------
+
+if CPUS["G65816"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/g65816/g65816.cpp",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816.h",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816o0.cpp",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816o1.cpp",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816o2.cpp",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816o3.cpp",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816o4.cpp",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816cm.h",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816ds.h",
+ MAME_DIR .. "src/devices/cpu/g65816/g65816op.h",
+ }
+end
+
+if opt_tool(CPUS, "G65816") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/g65816/g65816ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/g65816/g65816ds.h")
+end
+
+--------------------------------------------------
+-- Hitachi H16
+--@src/devices/cpu/h16/hd641016.h,CPUS["H16"] = true
+--------------------------------------------------
+
+if CPUS["H16"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/h16/hd641016.cpp",
+ MAME_DIR .. "src/devices/cpu/h16/hd641016.h",
+ }
+end
+
+if opt_tool(CPUS, "H16") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/h16/h16dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/h16/h16dasm.h")
+end
+
+--------------------------------------------------
+-- Hitachi H8 (16/32-bit H8/300, H8/300H, H8S2000 and H8S2600 series)
+--@src/devices/cpu/h8/h8.h,CPUS["H8"] = true
+--------------------------------------------------
+
+if CPUS["H8"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/h8/h8.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8h.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8h.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2000.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2000.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2600.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2600.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83337.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83337.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83002.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83002.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83003.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83003.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83006.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83006.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83008.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83008.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83032.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83032.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83042.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83042.h",
+ MAME_DIR .. "src/devices/cpu/h8/h83048.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h83048.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2245.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2245.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2320.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2320.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2357.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2357.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2655.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8s2655.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_adc.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_adc.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_dma.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_dma.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_dtc.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_dtc.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_intc.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_intc.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_port.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_port.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_timer8.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_timer8.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_timer16.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_timer16.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_sci.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_sci.h",
+ MAME_DIR .. "src/devices/cpu/h8/h8_watchdog.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/h8_watchdog.h",
+ MAME_DIR .. "src/devices/cpu/h8/gt913.cpp",
+ MAME_DIR .. "src/devices/cpu/h8/gt913.h",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/h8/h8.cpp", GEN_DIR .. "emu/cpu/h8/h8.hxx" },
+ { MAME_DIR .. "src/devices/cpu/h8/h8h.cpp", GEN_DIR .. "emu/cpu/h8/h8h.hxx" },
+ { MAME_DIR .. "src/devices/cpu/h8/h8s2000.cpp", GEN_DIR .. "emu/cpu/h8/h8s2000.hxx" },
+ { MAME_DIR .. "src/devices/cpu/h8/h8s2600.cpp", GEN_DIR .. "emu/cpu/h8/h8s2600.hxx" },
+ { MAME_DIR .. "src/devices/cpu/h8/gt913.cpp", GEN_DIR .. "emu/cpu/h8/gt913.hxx" },
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300 source file...", PYTHON .. " $(1) $(<) s o $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8h.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300H source file...", PYTHON .. " $(1) $(<) s h $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2000.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2000 source file...", PYTHON .. " $(1) $(<) s s20 $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2600.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2600 source file...", PYTHON .. " $(1) $(<) s s26 $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/h8/gt913.lst" , GEN_DIR .. "emu/cpu/h8/gt913.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating GT913 source file...", PYTHON .. " $(1) $(<) s g $(@)" }},
+ }
+end
+
+if opt_tool(CPUS, "H8") then
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8d.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300 disassembler source file...", PYTHON .. " $(1) $(<) d o $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8hd.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300H disassembler source file...", PYTHON .. " $(1) $(<) d h $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2000d.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2000 disassembler source file...", PYTHON .. " $(1) $(<) d s20 $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2600d.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2600 disassembler source file...", PYTHON .. " $(1) $(<) d s26 $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/h8/gt913.lst" , GEN_DIR .. "emu/cpu/h8/gt913d.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating GT913 disassembler source file...", PYTHON .. " $(1) $(<) d g $(@)" }})
+
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/h8/h8d.cpp", GEN_DIR .. "emu/cpu/h8/h8d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/h8/h8hd.cpp", GEN_DIR .. "emu/cpu/h8/h8hd.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/h8/h8s2000d.cpp", GEN_DIR .. "emu/cpu/h8/h8s2000d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/h8/h8s2600d.cpp", GEN_DIR .. "emu/cpu/h8/h8s2600d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/h8/gt913d.cpp", GEN_DIR .. "emu/cpu/h8/gt913d.hxx" })
+
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8hd.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8hd.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8s2000d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8s2000d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8s2600d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/h8s2600d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/gt913d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/h8/gt913d.h")
+end
+
+--------------------------------------------------
+-- Hitachi H8/500 series
+--@src/devices/cpu/h8500/h8500.h,CPUS["H8500"] = true
+--------------------------------------------------
+
+if CPUS["H8500"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/h8500/h8500.cpp",
+ MAME_DIR .. "src/devices/cpu/h8500/h8500.h",
+ MAME_DIR .. "src/devices/cpu/h8500/h8510.cpp",
+ MAME_DIR .. "src/devices/cpu/h8500/h8510.h",
+ MAME_DIR .. "src/devices/cpu/h8500/h8520.cpp",
+ MAME_DIR .. "src/devices/cpu/h8500/h8520.h",
+ MAME_DIR .. "src/devices/cpu/h8500/h8532.cpp",
+ MAME_DIR .. "src/devices/cpu/h8500/h8532.h",
+ MAME_DIR .. "src/devices/cpu/h8500/h8534.cpp",
+ MAME_DIR .. "src/devices/cpu/h8500/h8534.h",
+ }
+end
+
+if opt_tool(CPUS, "H8500") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/h8500/h8500dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/h8500/h8500dasm.h")
+end
+
+--------------------------------------------------
+-- Hitachi HCD62121
+--@src/devices/cpu/hcd62121/hcd62121.h,CPUS["HCD62121"] = true
+--------------------------------------------------
+
+if CPUS["HCD62121"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/hcd62121/hcd62121.cpp",
+ MAME_DIR .. "src/devices/cpu/hcd62121/hcd62121.h",
+ }
+end
+
+if opt_tool(CPUS, "HCD62121") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hcd62121/hcd62121d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hcd62121/hcd62121d.h")
+end
+
+--------------------------------------------------
+-- Hitachi HMCS40 series
+--@src/devices/cpu/hmcs40/hmcs40.h,CPUS["HMCS40"] = true
+--------------------------------------------------
+
+if CPUS["HMCS40"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/hmcs40/hmcs40.cpp",
+ MAME_DIR .. "src/devices/cpu/hmcs40/hmcs40.h",
+ MAME_DIR .. "src/devices/cpu/hmcs40/hmcs40op.cpp",
+ }
+end
+
+if opt_tool(CPUS, "HMCS40") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hmcs40/hmcs40d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hmcs40/hmcs40d.h")
+end
+
+--------------------------------------------------
+-- Hitachi SuperH series (SH1/SH2/SH3/SH4)
+--@src/devices/cpu/sh/sh2.h,CPUS["SH"] = true
+--@src/devices/cpu/sh/sh4.h,CPUS["SH"] = true
+--------------------------------------------------
+
+if CPUS["SH"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/sh/sh.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh2.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh2.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh2comn.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh2comn.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh_fe.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh2fe.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh4fe.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh7604_bus.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh7604_bus.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh7604_sci.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh7604_sci.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh7604_wdt.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh7604_wdt.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh4.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh4.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh4comn.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh4comn.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh3comn.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh3comn.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh4tmu.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh4tmu.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh4dmac.cpp",
+ MAME_DIR .. "src/devices/cpu/sh/sh4dmac.h",
+ MAME_DIR .. "src/devices/cpu/sh/sh4regs.h",
+ }
+end
+
+if opt_tool(CPUS, "SH") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sh/sh_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sh/sh_dasm.h")
+end
+
+--------------------------------------------------
+-- STmicro ST62xx
+--@src/devices/cpu/st62xx/st62xx.h,CPUS["ST62XX"] = true
+--------------------------------------------------
+
+if CPUS["ST62XX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/st62xx/st62xx.cpp",
+ MAME_DIR .. "src/devices/cpu/st62xx/st62xx.h",
+ }
+end
+
+if opt_tool(CPUS, "ST62XX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/st62xx/st62xx_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/st62xx/st62xx_dasm.h")
+end
+
+--------------------------------------------------
+-- HP Hybrid processor
+--@src/devices/cpu/hphybrid/hphybrid.h,CPUS["HPHYBRID"] = true
+--------------------------------------------------
+
+if CPUS["HPHYBRID"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/hphybrid/hphybrid.cpp",
+ MAME_DIR .. "src/devices/cpu/hphybrid/hphybrid.h",
+ }
+end
+
+if opt_tool(CPUS, "HPHYBRID") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hphybrid/hphybrid_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hphybrid/hphybrid_dasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hphybrid/hphybrid_defs.h")
+end
+
+--------------------------------------------------
+-- HP Nanoprocessor
+--@src/devices/cpu/nanoprocessor/nanoprocessor.h,CPUS["NANOPROCESSOR"] = true
+--------------------------------------------------
+
+if CPUS["NANOPROCESSOR"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/nanoprocessor/nanoprocessor.cpp",
+ MAME_DIR .. "src/devices/cpu/nanoprocessor/nanoprocessor.h",
+ }
+end
+
+if opt_tool(CPUS, "NANOPROCESSOR") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nanoprocessor/nanoprocessor_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nanoprocessor/nanoprocessor_dasm.h")
+end
+
+--------------------------------------------------
+-- HP Capricorn
+--@src/devices/cpu/capricorn/capricorn.h,CPUS["CAPRICORN"] = true
+--------------------------------------------------
+
+if CPUS["CAPRICORN"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/capricorn/capricorn.cpp",
+ MAME_DIR .. "src/devices/cpu/capricorn/capricorn.h",
+ }
+end
+
+if opt_tool(CPUS, "CAPRICORN") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/capricorn/capricorn_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/capricorn/capricorn_dasm.h")
+end
+
+--------------------------------------------------
+-- Hudsonsoft 6280
+--@src/devices/cpu/h6280/h6280.h,CPUS["H6280"] = true
+--------------------------------------------------
+
+if CPUS["H6280"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/h6280/h6280.cpp",
+ MAME_DIR .. "src/devices/cpu/h6280/h6280.h",
+ }
+end
+
+if opt_tool(CPUS, "H6280") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/h6280/6280dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/h6280/6280dasm.h")
+end
+
+--------------------------------------------------
+-- Hyperstone E1 series
+--@src/devices/cpu/e132xs/e132xs.h,CPUS["E1"] = true
+--------------------------------------------------
+
+if CPUS["E1"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/e132xs/e132xs.cpp",
+ MAME_DIR .. "src/devices/cpu/e132xs/e132xs.h",
+ MAME_DIR .. "src/devices/cpu/e132xs/32xsdefs.h",
+ MAME_DIR .. "src/devices/cpu/e132xs/e132xsop.hxx",
+ MAME_DIR .. "src/devices/cpu/e132xs/e132xsfe.cpp",
+ MAME_DIR .. "src/devices/cpu/e132xs/e132xsdrc.cpp",
+ MAME_DIR .. "src/devices/cpu/e132xs/e132xsdrc_ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "E1") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/e132xs/32xsdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/e132xs/32xsdasm.h")
+end
+
+--------------------------------------------------
+-- 15IE-00-013 CPU ("Microprogrammed Control Device")
+--@src/devices/cpu/ie15/ie15.h,CPUS["IE15"] = true
+--------------------------------------------------
+
+if CPUS["IE15"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ie15/ie15.cpp",
+ MAME_DIR .. "src/devices/cpu/ie15/ie15.h",
+ }
+end
+
+if opt_tool(CPUS, "IE15") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ie15/ie15dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ie15/ie15dasm.h")
+end
+
+--------------------------------------------------
+-- Intel MCS-40
+--@src/devices/cpu/mcs40/mcs40.h,CPUS["MCS40"] = true
+--------------------------------------------------
+
+if CPUS["MCS40"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mcs40/mcs40.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs40/mcs40.h",
+ }
+end
+
+if opt_tool(CPUS, "MCS40") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs40/mcs40dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs40/mcs40dasm.h")
+end
+
+--------------------------------------------------
+-- Intel 8008
+--@src/devices/cpu/i8008/i8008.h,CPUS["I8008"] = true
+--------------------------------------------------
+
+if CPUS["I8008"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i8008/i8008.cpp",
+ MAME_DIR .. "src/devices/cpu/i8008/i8008.h",
+ }
+end
+
+if opt_tool(CPUS, "I8008") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i8008/8008dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i8008/8008dasm.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor SC/MP
+--@src/devices/cpu/scmp/scmp.h,CPUS["SCMP"] = true
+--------------------------------------------------
+
+if CPUS["SCMP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/scmp/scmp.cpp",
+ MAME_DIR .. "src/devices/cpu/scmp/scmp.h",
+ }
+end
+
+if opt_tool(CPUS, "SCMP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/scmp/scmpdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/scmp/scmpdasm.h")
+end
+
+--------------------------------------------------
+-- Intel 8080/8085A
+--@src/devices/cpu/i8085/i8085.h,CPUS["I8085"] = true
+--------------------------------------------------
+
+if CPUS["I8085"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i8085/i8085.cpp",
+ MAME_DIR .. "src/devices/cpu/i8085/i8085.h",
+ }
+end
+
+if opt_tool(CPUS, "I8085") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i8085/8085dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i8085/8085dasm.h")
+end
+
+--------------------------------------------------
+-- Intel 8089
+--@src/devices/cpu/i8089/i8089.h,CPUS["I8089"] = true
+--------------------------------------------------
+
+if CPUS["I8089"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i8089/i8089.cpp",
+ MAME_DIR .. "src/devices/cpu/i8089/i8089.h",
+ MAME_DIR .. "src/devices/cpu/i8089/i8089_channel.cpp",
+ MAME_DIR .. "src/devices/cpu/i8089/i8089_channel.h",
+ MAME_DIR .. "src/devices/cpu/i8089/i8089_ops.cpp",
+ }
+end
+
+if opt_tool(CPUS, "I8089") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i8089/i8089_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i8089/i8089_dasm.h")
+end
+
+--------------------------------------------------
+-- Intel MCS-48 (8039 and derivatives)
+--@src/devices/cpu/mcs48/mcs48.h,CPUS["MCS48"] = true
+--------------------------------------------------
+
+if CPUS["MCS48"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mcs48/mcs48.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs48/mcs48.h",
+ }
+end
+
+if opt_tool(CPUS, "MCS48") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs48/mcs48dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs48/mcs48dsm.h")
+end
+
+--------------------------------------------------
+-- Intel 8051 and derivatives
+--@src/devices/cpu/mcs51/mcs51.h,CPUS["MCS51"] = true
+--------------------------------------------------
+
+if CPUS["MCS51"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mcs51/mcs51.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs51/mcs51.h",
+ MAME_DIR .. "src/devices/cpu/mcs51/mcs51ops.hxx",
+ MAME_DIR .. "src/devices/cpu/mcs51/axc51-core.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs51/axc51-core.h",
+ }
+end
+
+if opt_tool(CPUS, "MCS51") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs51/mcs51dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs51/mcs51dasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs51/axc51-core_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mcs51/axc51-core_dasm.h")
+end
+
+--------------------------------------------------
+-- Intel MCS-96
+--@src/devices/cpu/mcs96/mcs96.h,CPUS["MCS96"] = true
+--------------------------------------------------
+
+if CPUS["MCS96"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mcs96/mcs96.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs96/mcs96.h",
+ MAME_DIR .. "src/devices/cpu/mcs96/i8x9x.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs96/i8x9x.h",
+ MAME_DIR .. "src/devices/cpu/mcs96/i8xc196.cpp",
+ MAME_DIR .. "src/devices/cpu/mcs96/i8xc196.h",
+ }
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/mcs96/mcs96.cpp", GEN_DIR .. "emu/cpu/mcs96/mcs96.hxx" },
+ { MAME_DIR .. "src/devices/cpu/mcs96/i8x9x.cpp", GEN_DIR .. "emu/cpu/mcs96/i8x9x.hxx" },
+ { MAME_DIR .. "src/devices/cpu/mcs96/i8xc196.cpp", GEN_DIR .. "emu/cpu/mcs96/i8xc196.hxx" },
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/mcs96.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating mcs96 source file...", PYTHON .. " $(1) s mcs96 $(<) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8x9x.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8x9x source file...", PYTHON .. " $(1) s i8x9x $(<) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8xc196.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8xc196 source file...", PYTHON .. " $(1) s i8xc196 $(<) $(@)" }},
+ }
+end
+
+if opt_tool(CPUS, "MCS96") then
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst", GEN_DIR .. "emu/cpu/mcs96/i8x9xd.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8x9x disassembler source file...", PYTHON .. " $(1) d i8x9x $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst", GEN_DIR .. "emu/cpu/mcs96/i8xc196d.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8xc196 disassembler source file...", PYTHON .. " $(1) d i8xc196 $(<) $(2) $(@)" }})
+
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/mcs96/i8x9xd.cpp", GEN_DIR .. "emu/cpu/mcs96/i8x9xd.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/mcs96/i8xc196d.cpp", GEN_DIR .. "emu/cpu/mcs96/i8xc196d.hxx" })
+
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/mcs96/mcs96d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/mcs96/i8x9xd.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/mcs96/i8xc196d.cpp")
+ end
+
+--------------------------------------------------
+-- Intel 80x86 series (also a dynamic recompiler target)
+--@src/devices/cpu/i86/i86.h,CPUS["I86"] = true
+--@src/devices/cpu/i86/i286.h,CPUS["I86"] = true
+--@src/devices/cpu/i386/i386.h,CPUS["I386"] = true
+--------------------------------------------------
+
+if CPUS["I86"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i86/i86.cpp",
+ MAME_DIR .. "src/devices/cpu/i86/i86.h",
+ MAME_DIR .. "src/devices/cpu/i86/i186.cpp",
+ MAME_DIR .. "src/devices/cpu/i86/i186.h",
+ MAME_DIR .. "src/devices/cpu/i86/i286.cpp",
+ MAME_DIR .. "src/devices/cpu/i86/i286.h",
+ MAME_DIR .. "src/devices/cpu/i86/i86inline.h",
+ }
+end
+
+-- Beware that opt_tool can set the value, so we want both to be executed always
+local want_disasm_i86 = opt_tool(CPUS, "I86")
+local want_disasm_i386 = opt_tool(CPUS, "I386")
+if want_disasm_i86 or want_disasm_i386 or CPU_INCLUDE_DRC then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i386/i386dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i386/i386dasm.h")
+end
+
+if CPUS["I386"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i386/i386.cpp",
+ MAME_DIR .. "src/devices/cpu/i386/i386.h",
+ MAME_DIR .. "src/devices/cpu/i386/athlon.cpp",
+ MAME_DIR .. "src/devices/cpu/i386/athlon.h",
+ MAME_DIR .. "src/devices/cpu/i386/cache.h",
+ MAME_DIR .. "src/devices/cpu/i386/cycles.h",
+ MAME_DIR .. "src/devices/cpu/i386/i386op16.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/i386op32.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/i386ops.h",
+ MAME_DIR .. "src/devices/cpu/i386/i386ops.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/i386priv.h",
+ MAME_DIR .. "src/devices/cpu/i386/i386segs.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/i486ops.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/pentops.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/x87ops.hxx",
+ MAME_DIR .. "src/devices/cpu/i386/x87priv.h",
+ MAME_DIR .. "src/devices/cpu/i386/cpuidmsrs.hxx",
+ }
+end
+
+--------------------------------------------------
+-- Intel i860
+--@src/devices/cpu/i860/i860.h,CPUS["I860"] = true
+--------------------------------------------------
+
+if CPUS["I860"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i860/i860.cpp",
+ MAME_DIR .. "src/devices/cpu/i860/i860.h",
+ MAME_DIR .. "src/devices/cpu/i860/i860dec.hxx",
+ }
+end
+
+if opt_tool(CPUS, "I860") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i860/i860dis.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i860/i860dis.h")
+end
+
+--------------------------------------------------
+-- Intel i960
+--@src/devices/cpu/i960/i960.h,CPUS["I960"] = true
+--------------------------------------------------
+
+if CPUS["I960"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/i960/i960.cpp",
+ MAME_DIR .. "src/devices/cpu/i960/i960.h",
+ }
+end
+
+if opt_tool(CPUS, "I960") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i960/i960dis.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/i960/i960dis.h")
+end
+
+--------------------------------------------------
+-- LH5801
+--@src/devices/cpu/lh5801/lh5801.h,CPUS["LH5801"] = true
+--------------------------------------------------
+
+if CPUS["LH5801"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/lh5801/lh5801.cpp",
+ MAME_DIR .. "src/devices/cpu/lh5801/lh5801.h",
+ MAME_DIR .. "src/devices/cpu/lh5801/5801tbl.hxx",
+ }
+end
+
+if opt_tool(CPUS, "LH5801") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lh5801/5801dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lh5801/5801dasm.h")
+end
+--------
+------------------------------------------
+-- Manchester Small-Scale Experimental Machine
+--@src/devices/cpu/ssem/ssem.h,CPUS["SSEM"] = true
+--------------------------------------------------
+
+if CPUS["SSEM"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ssem/ssem.cpp",
+ MAME_DIR .. "src/devices/cpu/ssem/ssem.h",
+ }
+end
+
+if opt_tool(CPUS, "SSEM") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ssem/ssemdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ssem/ssemdasm.h")
+end
+
+------------------------------------------
+-- Diablo Systems printer CPU
+--@src/devices/cpu/diablo/diablo1300.h,CPUS["DIABLO"] = true
+--------------------------------------------------
+
+if CPUS["DIABLO"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/diablo/diablo1300.cpp",
+ MAME_DIR .. "src/devices/cpu/diablo/diablo1300.h",
+ }
+end
+
+if opt_tool(CPUS, "DIABLO") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/diablo/diablo1300dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/diablo/diablo1300dasm.h")
+end
+
+--------------------------------------------------
+-- Fujitsu MB88xx
+--@src/devices/cpu/mb88xx/mb88xx.h,CPUS["MB88XX"] = true
+--------------------------------------------------
+
+if CPUS["MB88XX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mb88xx/mb88xx.cpp",
+ MAME_DIR .. "src/devices/cpu/mb88xx/mb88xx.h",
+ }
+end
+
+if opt_tool(CPUS, "MB88XX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mb88xx/mb88dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mb88xx/mb88dasm.h")
+end
+
+--------------------------------------------------
+-- Fujitsu MB86233
+--@src/devices/cpu/mb86233/mb86233.h,CPUS["MB86233"] = true
+--------------------------------------------------
+
+if CPUS["MB86233"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mb86233/mb86233.cpp",
+ MAME_DIR .. "src/devices/cpu/mb86233/mb86233.h",
+ }
+end
+
+if opt_tool(CPUS, "MB86233") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mb86233/mb86233d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mb86233/mb86233d.h")
+end
+
+--------------------------------------------------
+-- Fujitsu MB86235
+--@src/devices/cpu/mb86235/mb86235.h,CPUS["MB86235"] = true
+--------------------------------------------------
+
+if CPUS["MB86235"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mb86235/mb86235.cpp",
+ MAME_DIR .. "src/devices/cpu/mb86235/mb86235.h",
+ MAME_DIR .. "src/devices/cpu/mb86235/mb86235drc.cpp",
+ MAME_DIR .. "src/devices/cpu/mb86235/mb86235fe.cpp",
+ MAME_DIR .. "src/devices/cpu/mb86235/mb86235fe.h",
+ MAME_DIR .. "src/devices/cpu/mb86235/mb86235ops.cpp",
+ }
+end
+
+if opt_tool(CPUS, "MB86235") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mb86235/mb86235d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mb86235/mb86235d.h")
+end
+
+--------------------------------------------------
+-- Microchip PIC16C5x
+--@src/devices/cpu/pic16c5x/pic16c5x.h,CPUS["PIC16C5X"] = true
+--------------------------------------------------
+
+if CPUS["PIC16C5X"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pic16c5x/pic16c5x.cpp",
+ MAME_DIR .. "src/devices/cpu/pic16c5x/pic16c5x.h",
+ }
+end
+
+if opt_tool(CPUS, "PIC16C5X") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic16c5x/16c5xdsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic16c5x/16c5xdsm.h")
+end
+
+--------------------------------------------------
+-- PIC1670 - Disassembler only temporarily
+--@src/devices/cpu/pic1670/pic1670.h,CPUS["PIC1670"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "PIC1670") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic1670/pic1670d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic1670/pic1670d.h")
+end
+
+--------------------------------------------------
+-- Microchip PIC16C62x
+--@src/devices/cpu/pic16c62x/pic16c62x.h,CPUS["PIC16C62X"] = true
+--------------------------------------------------
+
+if CPUS["PIC16C62X"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pic16c62x/pic16c62x.cpp",
+ MAME_DIR .. "src/devices/cpu/pic16c62x/pic16c62x.h",
+ }
+end
+
+if opt_tool(CPUS, "PIC16C62X") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic16c62x/16c62xdsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic16c62x/16c62xdsm.h")
+end
+
+--------------------------------------------------
+-- Generic PIC16 - Disassembler only
+--@src/devices/cpu/pic16/pic16.h,CPUS["PIC16"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "PIC16") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic16/pic16d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic16/pic16d.h")
+end
+
+--------------------------------------------------
+-- Microchip PIC17
+--@src/devices/cpu/pic17/pic17.h,CPUS["PIC17"] = true
+--------------------------------------------------
+
+if CPUS["PIC17"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pic17/pic17.cpp",
+ MAME_DIR .. "src/devices/cpu/pic17/pic17.h",
+ MAME_DIR .. "src/devices/cpu/pic17/pic17c4x.cpp",
+ MAME_DIR .. "src/devices/cpu/pic17/pic17c4x.h",
+ }
+end
+
+if opt_tool(CPUS, "PIC17") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic17/pic17d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pic17/pic17d.h")
+end
+
+--------------------------------------------------
+-- MIPS R3000 (MIPS I/II) series
+--@src/devices/cpu/mips/mips1.h,CPUS["MIPS1"] = true
+--------------------------------------------------
+
+if CPUS["MIPS1"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mips/mips1.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/mips1.h",
+ }
+end
+
+if opt_tool(CPUS, "MIPS1") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips1dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips1dsm.h")
+end
+
+--------------------------------------------------
+-- MIPS R4000 (MIPS III/IV) series
+--@src/devices/cpu/mips/mips3.h,CPUS["MIPS3"] = true
+--@src/devices/cpu/mips/r4000.h,CPUS["MIPS3"] = true
+--------------------------------------------------
+
+if CPUS["MIPS3"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mips/mips3com.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/mips3com.h",
+ MAME_DIR .. "src/devices/cpu/mips/mips3.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/mips3.h",
+ MAME_DIR .. "src/devices/cpu/mips/mips3fe.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/mips3fe.h",
+ MAME_DIR .. "src/devices/cpu/mips/mips3drc.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/o2dprintf.hxx",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vu.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vu.h",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vif1.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vif1.h",
+ MAME_DIR .. "src/devices/cpu/mips/r4000.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/r4000.h",
+ }
+end
+
+if opt_tool(CPUS, "MIPS3") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips3dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips3dsm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/vudasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/vudasm.h")
+end
+
+--------------------------------------------------
+-- Sony PlayStation CPU (R3000-based + GTE)
+--@src/devices/cpu/psx/psx.h,CPUS["PSX"] = true
+--------------------------------------------------
+
+if CPUS["PSX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/psx/psx.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/psx.h",
+ MAME_DIR .. "src/devices/cpu/psx/psxdefs.h",
+ MAME_DIR .. "src/devices/cpu/psx/gte.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/gte.h",
+ MAME_DIR .. "src/devices/cpu/psx/dma.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/dma.h",
+ MAME_DIR .. "src/devices/cpu/psx/irq.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/irq.h",
+ MAME_DIR .. "src/devices/cpu/psx/mdec.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/mdec.h",
+ MAME_DIR .. "src/devices/cpu/psx/rcnt.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/rcnt.h",
+ MAME_DIR .. "src/devices/cpu/psx/sio.cpp",
+ MAME_DIR .. "src/devices/cpu/psx/sio.h",
+ }
+end
+
+if opt_tool(CPUS, "PSX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/psx/psxdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/psx/psxdasm.h")
+end
+
+--------------------------------------------------
+-- Mitsubishi MELPS 4 series
+--@src/devices/cpu/melps4/melps4.h,CPUS["MELPS4"] = true
+--------------------------------------------------
+
+if CPUS["MELPS4"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/melps4/melps4.cpp",
+ MAME_DIR .. "src/devices/cpu/melps4/melps4.h",
+ MAME_DIR .. "src/devices/cpu/melps4/melps4op.cpp",
+ MAME_DIR .. "src/devices/cpu/melps4/m58846.cpp",
+ MAME_DIR .. "src/devices/cpu/melps4/m58846.h",
+ }
+end
+
+if opt_tool(CPUS, "MELPS4") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/melps4/melps4d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/melps4/melps4d.h")
+end
+
+--------------------------------------------------
+-- Mitsubishi M32C, disassembler only
+--------------------------------------------------
+
+if opt_tool(CPUS, "M23C") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m32c/m32cdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m32c/m32cdasm.h")
+end
+
+--------------------------------------------------
+-- Mitsubishi M37702 and M37710 (based on 65C816)
+--@src/devices/cpu/m37710/m37710.h,CPUS["M37710"] = true
+--------------------------------------------------
+
+if CPUS["M37710"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m37710/m37710.cpp",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710.h",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710o0.cpp",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710o1.cpp",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710o2.cpp",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710o3.cpp",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710cm.h",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710il.h",
+ MAME_DIR .. "src/devices/cpu/m37710/m37710op.h",
+ }
+end
+
+if opt_tool(CPUS, "M37710") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m37710/m7700ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m37710/m7700ds.h")
+end
+
+--------------------------------------------------
+-- Mostek 6502 and its many derivatives
+--@src/devices/cpu/m6502/m6502.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/deco16.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m4510.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m65ce02.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m65c02.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/r65c02.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/r65c19.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m65sc02.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m6500_1.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m6504.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m6507.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m6509.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m6510.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m6510t.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m7501.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m8502.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/n2a03.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m740.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m3745x.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/m5074x.h,CPUS["M6502"] = true
+--@src/devices/cpu/m6502/st2xxx.h,CPUS["ST2XXX"] = true
+--@src/devices/cpu/m6502/st2204.h,CPUS["ST2XXX"] = true
+--@src/devices/cpu/m6502/st2205u.h,CPUS["ST2XXX"] = true
+--@src/devices/cpu/m6502/xavix.h,CPUS["XAVIX"] = true
+--@src/devices/cpu/m6502/xavix.h,CPUS["XAVIX2000"] = true
+
+--------------------------------------------------
+
+if CPUS["M6502"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6502/deco16.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/deco16.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m4510.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m4510.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6502.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6502.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m65c02.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m65c02.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m65ce02.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m65ce02.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m65sc02.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m65sc02.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6500_1.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6500_1.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6504.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6504.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6507.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6507.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6509.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6509.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6510.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6510.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m6510t.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m6510t.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m7501.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m7501.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m8502.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m8502.h",
+ MAME_DIR .. "src/devices/cpu/m6502/n2a03.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/n2a03.h",
+ MAME_DIR .. "src/devices/cpu/m6502/r65c02.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/r65c02.h",
+ MAME_DIR .. "src/devices/cpu/m6502/r65c19.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/r65c19.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m740.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m740.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m3745x.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m3745x.h",
+ MAME_DIR .. "src/devices/cpu/m6502/m5074x.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/m5074x.h",
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/m6502/odeco16.lst", GEN_DIR .. "emu/cpu/m6502/deco16.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/ddeco16.lst" }, {"@echo Generating deco16 disassembler source file...", PYTHON .. " $(1) s deco16 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om4510.lst", GEN_DIR .. "emu/cpu/m6502/m4510.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm4510.lst" }, {"@echo Generating m4510 disassembler source file...", PYTHON .. " $(1) s m4510 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om6502.lst", GEN_DIR .. "emu/cpu/m6502/m6502.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6502.lst" }, {"@echo Generating m6502 disassembler source file...", PYTHON .. " $(1) s m6502 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om65c02.lst", GEN_DIR .. "emu/cpu/m6502/m65c02.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65c02.lst" }, {"@echo Generating m65c02 disassembler source file...", PYTHON .. " $(1) s m65c02 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om65ce02.lst", GEN_DIR .. "emu/cpu/m6502/m65ce02.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65ce02.lst" }, {"@echo Generating m65ce02 disassembler source file...", PYTHON .. " $(1) s m65ce02 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om6509.lst", GEN_DIR .. "emu/cpu/m6502/m6509.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6509.lst" }, {"@echo Generating m6509 disassembler source file...", PYTHON .. " $(1) s m6509 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om6510.lst", GEN_DIR .. "emu/cpu/m6502/m6510.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6510.lst" }, {"@echo Generating m6510 disassembler source file...", PYTHON .. " $(1) s m6510 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/on2a03.lst", GEN_DIR .. "emu/cpu/m6502/n2a03.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dn2a03.lst" }, {"@echo Generating n2a03 disassembler source file...", PYTHON .. " $(1) s n2a03_core $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/om740.lst" , GEN_DIR .. "emu/cpu/m6502/m740.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm740.lst" }, {"@echo Generating m740 disassembler source file...", PYTHON .. " $(1) s m740 $(<) $(2) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/dr65c02.lst", GEN_DIR .. "emu/cpu/m6502/r65c02.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", }, {"@echo Generating r65c02 disassembler source file...", PYTHON .. " $(1) s r65c02 - $(<) $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6502/or65c19.lst", GEN_DIR .. "emu/cpu/m6502/r65c19.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dr65c19.lst" }, {"@echo Generating r65c19 disassembler source file...", PYTHON .. " $(1) s r65c19 $(<) $(2) $(@)" }},
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/m6502/deco16.cpp", GEN_DIR .. "emu/cpu/m6502/deco16.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m4510.cpp", GEN_DIR .. "emu/cpu/m6502/m4510.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m6502.cpp", GEN_DIR .. "emu/cpu/m6502/m6502.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m65c02.cpp", GEN_DIR .. "emu/cpu/m6502/m65c02.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m65ce02.cpp", GEN_DIR .. "emu/cpu/m6502/m65ce02.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m6509.cpp", GEN_DIR .. "emu/cpu/m6502/m6509.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m6510.cpp", GEN_DIR .. "emu/cpu/m6502/m6510.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/n2a03.cpp", GEN_DIR .. "emu/cpu/m6502/n2a03.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/r65c02.cpp", GEN_DIR .. "emu/cpu/m6502/r65c02.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/r65c19.cpp", GEN_DIR .. "emu/cpu/m6502/r65c19.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6502/m740.cpp", GEN_DIR .. "emu/cpu/m6502/m740.hxx" },
+ }
+end
+
+if CPUS["ST2XXX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6502/st2xxx.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/st2xxx.h",
+ MAME_DIR .. "src/devices/cpu/m6502/st2204.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/st2204.h",
+ MAME_DIR .. "src/devices/cpu/m6502/st2205u.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/st2205u.h",
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/m6502/ost2xxx.lst" , GEN_DIR .. "emu/cpu/m6502/st2xxx.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dst2xxx.lst" }, {"@echo Generating st2xxx disassembler source file...", PYTHON .. " $(1) s st2xxx $(<) $(2) $(@)" }},
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/m6502/st2xxx.cpp", GEN_DIR .. "emu/cpu/m6502/st2xxx.hxx" },
+ }
+end
+
+if CPUS["XAVIX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6502/xavix.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/xavix.h",
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/m6502/oxavix.lst", GEN_DIR .. "emu/cpu/m6502/xavix.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dxavix.lst" }, {"@echo Generating xavix disassembler source file...", PYTHON .. " $(1) s xavix $(<) $(2) $(@)" }},
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/m6502/xavix.cpp", GEN_DIR .. "emu/cpu/m6502/xavix.hxx" },
+ }
+end
+
+if CPUS["XAVIX2000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6502/xavix2000.cpp",
+ MAME_DIR .. "src/devices/cpu/m6502/xavix2000.h",
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/m6502/oxavix2000.lst", GEN_DIR .. "emu/cpu/m6502/xavix2000.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dxavix2000.lst" }, {"@echo Generating xavix2000 disassembler source file...", PYTHON .. " $(1) s xavix2000 $(<) $(2) $(@)" }},
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/m6502/xavix2000.cpp", GEN_DIR .. "emu/cpu/m6502/xavix2000.hxx" },
+ }
+end
+
+if opt_tool(CPUS, "M6502") then
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/odeco16.lst", GEN_DIR .. "emu/cpu/m6502/deco16d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/ddeco16.lst" }, {"@echo Generating deco16 disassembler source file...", PYTHON .. " $(1) d deco16 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om4510.lst", GEN_DIR .. "emu/cpu/m6502/m4510d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm4510.lst" }, {"@echo Generating m4510 disassembler source file...", PYTHON .. " $(1) d m4510 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om6502.lst", GEN_DIR .. "emu/cpu/m6502/m6502d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6502.lst" }, {"@echo Generating m6502 disassembler source file...", PYTHON .. " $(1) d m6502 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om65c02.lst", GEN_DIR .. "emu/cpu/m6502/m65c02d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65c02.lst" }, {"@echo Generating m65c02 disassembler source file...", PYTHON .. " $(1) d m65c02 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om65ce02.lst", GEN_DIR .. "emu/cpu/m6502/m65ce02d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65ce02.lst" }, {"@echo Generating m65ce02 disassembler source file...", PYTHON .. " $(1) d m65ce02 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om6509.lst", GEN_DIR .. "emu/cpu/m6502/m6509d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6509.lst" }, {"@echo Generating m6509 disassembler source file...", PYTHON .. " $(1) d m6509 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om6510.lst", GEN_DIR .. "emu/cpu/m6502/m6510d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6510.lst" }, {"@echo Generating m6510 disassembler source file...", PYTHON .. " $(1) d m6510 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/on2a03.lst", GEN_DIR .. "emu/cpu/m6502/n2a03d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dn2a03.lst" }, {"@echo Generating n2a03 disassembler source file...", PYTHON .. " $(1) d n2a03 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/om740.lst" , GEN_DIR .. "emu/cpu/m6502/m740d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm740.lst" }, {"@echo Generating m740 disassembler source file...", PYTHON .. " $(1) d m740 $(<) $(2) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/dr65c02.lst", GEN_DIR .. "emu/cpu/m6502/r65c02d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", }, {"@echo Generating r65c02 disassembler source file...", PYTHON .. " $(1) d r65c02 - $(<) $(@)" }})
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/or65c19.lst", GEN_DIR .. "emu/cpu/m6502/r65c19d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dr65c19.lst" }, {"@echo Generating r65c19 disassembler source file...", PYTHON .. " $(1) d r65c19 $(<) $(2) $(@)" }})
+
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/deco16d.cpp", GEN_DIR .. "emu/cpu/m6502/deco16d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m4510d.cpp", GEN_DIR .. "emu/cpu/m6502/m4510d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m6502d.cpp", GEN_DIR .. "emu/cpu/m6502/m6502d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m65c02d.cpp", GEN_DIR .. "emu/cpu/m6502/m65c02d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m65ce02d.cpp", GEN_DIR .. "emu/cpu/m6502/m65ce02d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m6509d.cpp", GEN_DIR .. "emu/cpu/m6502/m6509d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m6510d.cpp", GEN_DIR .. "emu/cpu/m6502/m6510d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/n2a03d.cpp", GEN_DIR .. "emu/cpu/m6502/n2a03d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/r65c02d.cpp", GEN_DIR .. "emu/cpu/m6502/r65c02d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/r65c19d.cpp", GEN_DIR .. "emu/cpu/m6502/r65c19d.hxx" })
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/m740d.cpp", GEN_DIR .. "emu/cpu/m6502/m740d.hxx" })
+
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/deco16d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/deco16d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m4510d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m4510d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m6502d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m6502d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m6509d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m6509d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m6510d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m6510d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m65c02d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m65c02d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m65ce02d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m65ce02d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m740d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/m740d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/n2a03d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/n2a03d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/r65c02d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/r65c02d.h")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/r65c19d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/r65c19d.h")
+end
+
+if opt_tool(CPUS, "XAVIX") then
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/oxavix.lst", GEN_DIR .. "emu/cpu/m6502/xavixd.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dxavix.lst" }, {"@echo Generating xavix disassembler source file...", PYTHON .. " $(1) d xavix $(<) $(2) $(@)" }})
+
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/xavixd.cpp", GEN_DIR .. "emu/cpu/m6502/xavixd.hxx" })
+
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/xavixd.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/xavixd.h")
+end
+
+if opt_tool(CPUS, "XAVIX2000") then
+ table.insert(disasm_custombuildtask, { MAME_DIR .. "src/devices/cpu/m6502/oxavix2000.lst", GEN_DIR .. "emu/cpu/m6502/xavix2000d.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dxavix2000.lst" }, {"@echo Generating xavix2000 disassembler source file...", PYTHON .. " $(1) d xavix2000 $(<) $(2) $(@)" }})
+
+ table.insert(disasm_dependency, { MAME_DIR .. "src/devices/cpu/m6502/xavix2000d.cpp", GEN_DIR .. "emu/cpu/m6502/xavix2000d.hxx" })
+
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/xavix2000d.cpp")
+ table.insert(disasm_files, MAME_DIR .. "src/devices/cpu/m6502/xavix2000d.h")
+end
+
+--------------------------------------------------
+-- Motorola 680x
+--@src/devices/cpu/m6800/m6800.h,CPUS["M6800"] = true
+--@src/devices/cpu/m6800/m6801.h,CPUS["M6800"] = true
+--------------------------------------------------
+
+if CPUS["M6800"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6800/m6800.cpp",
+ MAME_DIR .. "src/devices/cpu/m6800/m6800.h",
+ MAME_DIR .. "src/devices/cpu/m6800/m6801.cpp",
+ MAME_DIR .. "src/devices/cpu/m6800/m6801.h",
+ MAME_DIR .. "src/devices/cpu/m6800/6800ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "M6800") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m6800/6800dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m6800/6800dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola 6805
+--@src/devices/cpu/m6805/m6805.h,CPUS["M6805"] = true
+--------------------------------------------------
+
+if CPUS["M6805"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6805/m6805.cpp",
+ MAME_DIR .. "src/devices/cpu/m6805/m6805.h",
+ MAME_DIR .. "src/devices/cpu/m6805/m6805defs.h",
+ MAME_DIR .. "src/devices/cpu/m6805/6805ops.hxx",
+ MAME_DIR .. "src/devices/cpu/m6805/m68705.cpp",
+ MAME_DIR .. "src/devices/cpu/m6805/m68705.h",
+ MAME_DIR .. "src/devices/cpu/m6805/m68hc05.cpp",
+ MAME_DIR .. "src/devices/cpu/m6805/m68hc05.h",
+ }
+end
+
+if opt_tool(CPUS, "M6805") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m6805/6805dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m6805/6805dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola 6809
+--@src/devices/cpu/m6809/m6809.h,CPUS["M6809"] = true
+--@src/devices/cpu/m6809/hd6309.h,CPUS["M6809"] = true
+--@src/devices/cpu/m6809/konami.h,CPUS["M6809"] = true
+--------------------------------------------------
+
+if CPUS["M6809"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m6809/m6809.cpp",
+ MAME_DIR .. "src/devices/cpu/m6809/m6809.h",
+ MAME_DIR .. "src/devices/cpu/m6809/hd6309.cpp",
+ MAME_DIR .. "src/devices/cpu/m6809/hd6309.h",
+ MAME_DIR .. "src/devices/cpu/m6809/konami.cpp",
+ MAME_DIR .. "src/devices/cpu/m6809/konami.h",
+ MAME_DIR .. "src/devices/cpu/m6809/m6809inl.h",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/m6809/m6809.cpp", GEN_DIR .. "emu/cpu/m6809/m6809.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6809/hd6309.cpp", GEN_DIR .. "emu/cpu/m6809/hd6309.hxx" },
+ { MAME_DIR .. "src/devices/cpu/m6809/konami.cpp", GEN_DIR .. "emu/cpu/m6809/konami.hxx" },
+ }
+
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/m6809/m6809.ops" , GEN_DIR .. "emu/cpu/m6809/m6809.hxx", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating m6809 source file...", PYTHON .. " $(1) $(<) > $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6809/hd6309.ops" , GEN_DIR .. "emu/cpu/m6809/hd6309.hxx", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating hd6309 source file...", PYTHON .. " $(1) $(<) > $(@)" }},
+ { MAME_DIR .. "src/devices/cpu/m6809/konami.ops" , GEN_DIR .. "emu/cpu/m6809/konami.hxx", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating konami source file...", PYTHON .. " $(1) $(<) > $(@)" }},
+ }
+end
+
+if opt_tool(CPUS, "M6809") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m6809/6x09dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m6809/6x09dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola 68HC11
+--@src/devices/cpu/mc68hc11/mc68hc11.h,CPUS["MC68HC11"] = true
+--------------------------------------------------
+
+if CPUS["MC68HC11"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mc68hc11/mc68hc11.cpp",
+ MAME_DIR .. "src/devices/cpu/mc68hc11/mc68hc11.h",
+ MAME_DIR .. "src/devices/cpu/mc68hc11/hc11ops.h",
+ MAME_DIR .. "src/devices/cpu/mc68hc11/hc11ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "MC68HC11") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mc68hc11/hc11dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mc68hc11/hc11dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola 68000 series
+--@src/devices/cpu/m68000/m68000.h,CPUS["M680X0"] = true
+--------------------------------------------------
+
+if CPUS["M680X0"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m68000/m68kcpu.cpp",
+ MAME_DIR .. "src/devices/cpu/m68000/m68kcpu.h",
+ MAME_DIR .. "src/devices/cpu/m68000/m68kops.cpp",
+ MAME_DIR .. "src/devices/cpu/m68000/m68kops.h",
+ MAME_DIR .. "src/devices/cpu/m68000/m68000.h",
+ MAME_DIR .. "src/devices/cpu/m68000/m68kfpu.cpp",
+ MAME_DIR .. "src/devices/cpu/m68000/m68kmmu.h",
+ }
+end
+
+if opt_tool(CPUS, "M680X0") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m68000/m68kdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m68000/m68kdasm.h")
+end
+
+--------------------------------------------------
+-- Motorola/Freescale DSP56156
+--@src/devices/cpu/dsp56156/dsp56156.h,CPUS["DSP56156"] = true
+--------------------------------------------------
+
+if CPUS["DSP56156"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56156.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56156.h",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56mem.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56mem.h",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56pcu.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56pcu.h",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56def.h",
+ MAME_DIR .. "src/devices/cpu/dsp56156/dsp56ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "DSP56156") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/dsp56dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/dsp56dsm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/opcode.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/opcode.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/inst.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/inst.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/pmove.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/pmove.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/tables.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56156/tables.h")
+end
+
+--------------------------------------------------
+-- PDP-1
+--@src/devices/cpu/pdp1/pdp1.h,CPUS["PDP1"] = true
+--------------------------------------------------
+
+if CPUS["PDP1"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pdp1/pdp1.cpp",
+ MAME_DIR .. "src/devices/cpu/pdp1/pdp1.h",
+ }
+end
+
+if opt_tool(CPUS, "PDP1") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pdp1/pdp1dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pdp1/pdp1dasm.h")
+end
+
+--------------------------------------------------
+-- PATINHO FEIO - Escola Politecnica - USP (Brazil)
+--@src/devices/cpu/patinhofeio/patinhofeio_cpu.h,CPUS["PATINHOFEIO"] = true
+--------------------------------------------------
+
+if CPUS["PATINHOFEIO"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/patinhofeio/patinho_feio.cpp",
+ MAME_DIR .. "src/devices/cpu/patinhofeio/patinhofeio_cpu.h",
+ }
+end
+
+if opt_tool(CPUS, "PATINHOFEIO") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/patinhofeio/patinho_feio_dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola PowerPC series
+--@src/devices/cpu/powerpc/ppc.h,CPUS["POWERPC"] = true
+--------------------------------------------------
+
+if CPUS["POWERPC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/powerpc/ppccom.cpp",
+ MAME_DIR .. "src/devices/cpu/powerpc/ppccom.h",
+ MAME_DIR .. "src/devices/cpu/powerpc/ppcfe.cpp",
+ MAME_DIR .. "src/devices/cpu/powerpc/ppcfe.h",
+ MAME_DIR .. "src/devices/cpu/powerpc/ppcdrc.cpp",
+ MAME_DIR .. "src/devices/cpu/powerpc/ppc.h",
+ }
+end
+
+if opt_tool(CPUS, "POWERPC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/powerpc/ppc_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/powerpc/ppc_dasm.h")
+end
+
+--------------------------------------------------
+-- NEC V-series Intel-compatible
+--@src/devices/cpu/nec/nec.h,CPUS["NEC"] = true
+--@src/devices/cpu/nec/v25.h,CPUS["NEC"] = true
+--@src/devices/cpu/nec/v5x.h,CPUS["NEC"] = true
+--@src/devices/cpu/v30mz/v30mz.h,CPUS["V30MZ"] = true
+--------------------------------------------------
+
+if CPUS["NEC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/nec/nec.cpp",
+ MAME_DIR .. "src/devices/cpu/nec/nec.h",
+ MAME_DIR .. "src/devices/cpu/nec/necea.h",
+ MAME_DIR .. "src/devices/cpu/nec/necinstr.h",
+ MAME_DIR .. "src/devices/cpu/nec/necinstr.hxx",
+ MAME_DIR .. "src/devices/cpu/nec/nec80inst.hxx",
+ MAME_DIR .. "src/devices/cpu/nec/necmacro.h",
+ MAME_DIR .. "src/devices/cpu/nec/necmodrm.h",
+ MAME_DIR .. "src/devices/cpu/nec/necpriv.ipp",
+ MAME_DIR .. "src/devices/cpu/nec/v25instr.h",
+ MAME_DIR .. "src/devices/cpu/nec/v25instr.hxx",
+ MAME_DIR .. "src/devices/cpu/nec/v25priv.ipp",
+ MAME_DIR .. "src/devices/cpu/nec/v25.cpp",
+ MAME_DIR .. "src/devices/cpu/nec/v25.h",
+ MAME_DIR .. "src/devices/cpu/nec/v25sfr.cpp",
+ MAME_DIR .. "src/devices/cpu/nec/v5x.cpp",
+ MAME_DIR .. "src/devices/cpu/nec/v5x.h",
+ }
+end
+
+if opt_tool(CPUS, "NEC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nec/necdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nec/necdasm.h")
+end
+
+if CPUS["V30MZ"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/v30mz/v30mz.cpp",
+ MAME_DIR .. "src/devices/cpu/v30mz/v30mz.h",
+ }
+end
+
+if opt_tool(CPUS, "V30MZ") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nec/necdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nec/necdasm.h")
+end
+
+--------------------------------------------------
+-- NEC V60/V70
+--@src/devices/cpu/v60/v60.h,CPUS["V60"] = true
+--------------------------------------------------
+
+if CPUS["V60"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/v60/v60.cpp",
+ MAME_DIR .. "src/devices/cpu/v60/v60.h",
+ MAME_DIR .. "src/devices/cpu/v60/am.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/am1.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/am2.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/am3.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op12.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op2.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op3.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op4.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op5.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op6.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/op7a.hxx",
+ MAME_DIR .. "src/devices/cpu/v60/optable.hxx",
+ }
+end
+
+if opt_tool(CPUS, "V60") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/v60/v60d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/v60/v60d.h")
+end
+
+--------------------------------------------------
+-- NEC V810 (uPD70732)
+--@src/devices/cpu/v810/v810.h,CPUS["V810"] = true
+--------------------------------------------------
+
+if CPUS["V810"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/v810/v810.cpp",
+ MAME_DIR .. "src/devices/cpu/v810/v810.h",
+ }
+end
+
+if opt_tool(CPUS, "V810") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/v810/v810dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/v810/v810dasm.h")
+end
+
+--------------------------------------------------
+-- NEC V850, disassembler only
+--------------------------------------------------
+
+if opt_tool(CPUS, "V850") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/v850/v850dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/v850/v850dasm.h")
+end
+
+--------------------------------------------------
+-- NEC uPD7725
+--@src/devices/cpu/upd7725/upd7725.h,CPUS["UPD7725"] = true
+--------------------------------------------------
+
+if CPUS["UPD7725"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/upd7725/upd7725.cpp",
+ MAME_DIR .. "src/devices/cpu/upd7725/upd7725.h",
+ }
+end
+
+if opt_tool(CPUS, "UPD7725") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd7725/dasm7725.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd7725/dasm7725.h")
+end
+
+--------------------------------------------------
+-- NEC uPD7810 series
+--@src/devices/cpu/upd7810/upd7810.h,CPUS["UPD7810"] = true
+--------------------------------------------------
+
+if CPUS["UPD7810"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7810.cpp",
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7810.h",
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7810_opcodes.cpp",
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7810_table.cpp",
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7810_macros.h",
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7811.cpp",
+ MAME_DIR .. "src/devices/cpu/upd7810/upd7811.h",
+ }
+end
+
+if opt_tool(CPUS, "UPD7810") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd7810/upd7810_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd7810/upd7810_dasm.h")
+end
+
+--------------------------------------------------
+-- NEC uCOM-4 series
+--@src/devices/cpu/ucom4/ucom4.h,CPUS["UCOM4"] = true
+--------------------------------------------------
+
+if CPUS["UCOM4"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ucom4/ucom4.cpp",
+ MAME_DIR .. "src/devices/cpu/ucom4/ucom4.h",
+ MAME_DIR .. "src/devices/cpu/ucom4/ucom4op.cpp",
+ }
+end
+
+if opt_tool(CPUS, "UCOM4") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ucom4/ucom4d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ucom4/ucom4d.h")
+end
+
+--------------------------------------------------
+-- Nintendo Minx
+--@src/devices/cpu/minx/minx.h,CPUS["MINX"] = true
+--------------------------------------------------
+
+if CPUS["MINX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/minx/minx.cpp",
+ MAME_DIR .. "src/devices/cpu/minx/minx.h",
+ MAME_DIR .. "src/devices/cpu/minx/minxfunc.h",
+ MAME_DIR .. "src/devices/cpu/minx/minxopce.h",
+ MAME_DIR .. "src/devices/cpu/minx/minxopcf.h",
+ MAME_DIR .. "src/devices/cpu/minx/minxops.h",
+ }
+end
+
+if opt_tool(CPUS, "MINX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/minx/minxd.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/minx/minxd.h")
+end
+
+--------------------------------------------------
+-- Nintendo/SGI RSP (R3000-based + vector processing)
+--@src/devices/cpu/rsp/rsp.h,CPUS["RSP"] = true
+--------------------------------------------------
+
+if CPUS["RSP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/rsp/rsp.cpp",
+ MAME_DIR .. "src/devices/cpu/rsp/rsp.h",
+ MAME_DIR .. "src/devices/cpu/rsp/rspdefs.h",
+ MAME_DIR .. "src/devices/cpu/rsp/rspdiv.h",
+ }
+end
+
+if opt_tool(CPUS, "RSP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rsp/rsp_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rsp/rsp_dasm.h")
+end
+
+--------------------------------------------------
+-- Panasonic MN1880
+--@src/devices/cpu/mn1880/mn1880.h,CPUS["MN1880"] = true
+--------------------------------------------------
+
+if CPUS["MN1880"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mn1880/mn1880.cpp",
+ MAME_DIR .. "src/devices/cpu/mn1880/mn1880.h",
+ }
+end
+
+if opt_tool(CPUS, "MN1880") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn1880/mn1880d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn1880/mn1880d.h")
+end
+
+--------------------------------------------------
+-- Panasonic MN10200
+--@src/devices/cpu/mn10200/mn10200.h,CPUS["MN10200"] = true
+--------------------------------------------------
+
+if CPUS["MN10200"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mn10200/mn10200.cpp",
+ MAME_DIR .. "src/devices/cpu/mn10200/mn10200.h",
+ }
+end
+
+if opt_tool(CPUS, "MN10200") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn10200/mn102dis.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn10200/mn102dis.h")
+end
+
+--------------------------------------------------
+-- Saturn
+--@src/devices/cpu/saturn/saturn.h,CPUS["SATURN"] = true
+--------------------------------------------------
+
+if CPUS["SATURN"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/saturn/saturn.cpp",
+ MAME_DIR .. "src/devices/cpu/saturn/saturn.h",
+ MAME_DIR .. "src/devices/cpu/saturn/satops.ipp",
+ MAME_DIR .. "src/devices/cpu/saturn/sattable.ipp",
+ }
+end
+
+if opt_tool(CPUS, "SATURN") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/saturn/saturnds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/saturn/saturnds.h")
+end
+
+--------------------------------------------------
+-- Sharp SM510 series
+--@src/devices/cpu/sm510/sm510.h,CPUS["SM510"] = true
+--------------------------------------------------
+
+if CPUS["SM510"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/sm510/sm510base.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm510.h",
+ MAME_DIR .. "src/devices/cpu/sm510/sm510op.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm510core.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm511core.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm530.h",
+ MAME_DIR .. "src/devices/cpu/sm510/sm530op.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm530core.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm500.h",
+ MAME_DIR .. "src/devices/cpu/sm510/sm500op.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm500core.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm5acore.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm590.h",
+ MAME_DIR .. "src/devices/cpu/sm510/sm590op.cpp",
+ MAME_DIR .. "src/devices/cpu/sm510/sm590core.cpp",
+ }
+end
+
+if opt_tool(CPUS, "SM510") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sm510/sm510d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sm510/sm510d.h")
+end
+
+--------------------------------------------------
+-- Sharp SM8500
+--@src/devices/cpu/sm8500/sm8500.h,CPUS["SM8500"] = true
+--------------------------------------------------
+
+if CPUS["SM8500"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/sm8500/sm8500.cpp",
+ MAME_DIR .. "src/devices/cpu/sm8500/sm8500.h",
+ MAME_DIR .. "src/devices/cpu/sm8500/sm85ops.h",
+ }
+end
+
+if opt_tool(CPUS, "SM8500") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sm8500/sm8500d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sm8500/sm8500d.h")
+end
+
+--------------------------------------------------
+-- Signetics 2650
+--@src/devices/cpu/s2650/s2650.h,CPUS["S2650"] = true
+--------------------------------------------------
+
+if CPUS["S2650"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/s2650/s2650.cpp",
+ MAME_DIR .. "src/devices/cpu/s2650/s2650.h",
+ MAME_DIR .. "src/devices/cpu/s2650/s2650cpu.h",
+ }
+end
+
+if opt_tool(CPUS, "S2650") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/s2650/2650dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/s2650/2650dasm.h")
+end
+
+--------------------------------------------------
+-- SC61860
+--@src/devices/cpu/sc61860/sc61860.h,CPUS["SC61860"] = true
+--------------------------------------------------
+
+if CPUS["SC61860"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/sc61860/sc61860.cpp",
+ MAME_DIR .. "src/devices/cpu/sc61860/sc61860.h",
+ --MAME_DIR .. "src/devices/cpu/sc61860/readpc.cpp",
+ MAME_DIR .. "src/devices/cpu/sc61860/scops.hxx",
+ MAME_DIR .. "src/devices/cpu/sc61860/sctable.hxx",
+ }
+end
+
+if opt_tool(CPUS, "SC61860") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sc61860/scdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sc61860/scdasm.h")
+end
+
+--------------------------------------------------
+-- Sony/Nintendo SPC700
+--@src/devices/cpu/spc700/spc700.h,CPUS["SPC700"] = true
+--------------------------------------------------
+
+if CPUS["SPC700"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/spc700/spc700.cpp",
+ MAME_DIR .. "src/devices/cpu/spc700/spc700.h",
+ MAME_DIR .. "src/devices/cpu/spc700/spc700ds.h",
+ }
+end
+
+if opt_tool(CPUS, "SPC700") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/spc700/spc700ds.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/spc700/spc700ds.h")
+end
+
+--------------------------------------------------
+-- SSP1601
+--@src/devices/cpu/ssp1601/ssp1601.h,CPUS["SSP1601"] = true
+--------------------------------------------------
+
+if CPUS["SSP1601"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ssp1601/ssp1601.cpp",
+ MAME_DIR .. "src/devices/cpu/ssp1601/ssp1601.h",
+ }
+end
+
+if opt_tool(CPUS, "SSP1601") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ssp1601/ssp1601d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ssp1601/ssp1601d.h")
+end
+
+--------------------------------------------------
+-- SunPlus u'nSP
+--@src/devices/cpu/unsp/unsp.h,CPUS["UNSP"] = true
+--------------------------------------------------
+
+if CPUS["UNSP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/unsp/unsp.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unsp.h",
+ MAME_DIR .. "src/devices/cpu/unsp/unsp_extended.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unsp_jumps.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unsp_exxx.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unsp_fxxx.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unsp_other.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unspdefs.h",
+ MAME_DIR .. "src/devices/cpu/unsp/unspdrc.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unspfe.cpp",
+ MAME_DIR .. "src/devices/cpu/unsp/unspfe.h",
+ }
+end
+
+if opt_tool(CPUS, "UNSP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm_extended.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm_jumps.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm_exxx.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm_fxxx.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/unsp/unspdasm_other.cpp")
+end
+
+--------------------------------------------------
+-- Atmel 8-bit AVR
+--@src/devices/cpu/avr8/avr8.h,CPUS["AVR8"] = true
+--------------------------------------------------
+
+if CPUS["AVR8"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/avr8/avr8.cpp",
+ MAME_DIR .. "src/devices/cpu/avr8/avr8.h",
+ }
+end
+
+if opt_tool(CPUS, "AVR8") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/avr8/avr8dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/avr8/avr8dasm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS1000 series
+--@src/devices/cpu/tms1000/tms1000.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tms1000c.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tms1100.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tms1400.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tms0970.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tms0980.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tms0270.h,CPUS["TMS1000"] = true
+--@src/devices/cpu/tms1000/tp0320.h,CPUS["TMS1000"] = true
+--------------------------------------------------
+
+if CPUS["TMS1000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1k_base.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1k_base.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1000.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1000.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1000c.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1000c.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1100.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1100.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1400.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms1400.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms0970.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms0970.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms0980.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms0980.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms0270.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tms0270.h",
+ MAME_DIR .. "src/devices/cpu/tms1000/tp0320.cpp",
+ MAME_DIR .. "src/devices/cpu/tms1000/tp0320.h",
+ }
+end
+
+if opt_tool(CPUS, "TMS1000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms1000/tms1k_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms1000/tms1k_dasm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS7000 series
+--@src/devices/cpu/tms7000/tms7000.h,CPUS["TMS7000"] = true
+--------------------------------------------------
+
+if CPUS["TMS7000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms7000/tms7000.cpp",
+ MAME_DIR .. "src/devices/cpu/tms7000/tms7000.h",
+ MAME_DIR .. "src/devices/cpu/tms7000/tms7000op.cpp",
+ }
+end
+
+if opt_tool(CPUS, "TMS7000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms7000/7000dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms7000/7000dasm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS99xx series
+--@src/devices/cpu/tms9900/tms9900.h,CPUS["TMS9900"] = true
+--@src/devices/cpu/tms9900/tms9980a.h,CPUS["TMS9900"] = true
+--@src/devices/cpu/tms9900/tms9995.h,CPUS["TMS9900"] = true
+--@src/devices/cpu/tms9900/ti990_10.h,CPUS["TMS9900"] = true
+--------------------------------------------------
+
+if CPUS["TMS9900"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms9900/tms9900.cpp",
+ MAME_DIR .. "src/devices/cpu/tms9900/tms9900.h",
+ MAME_DIR .. "src/devices/cpu/tms9900/tms9980a.cpp",
+ MAME_DIR .. "src/devices/cpu/tms9900/tms9980a.h",
+ MAME_DIR .. "src/devices/cpu/tms9900/tms9995.cpp",
+ MAME_DIR .. "src/devices/cpu/tms9900/tms9995.h",
+ MAME_DIR .. "src/devices/cpu/tms9900/ti990_10.cpp",
+ MAME_DIR .. "src/devices/cpu/tms9900/ti990_10.h",
+ MAME_DIR .. "src/devices/cpu/tms9900/tms99com.h",
+ }
+end
+
+if opt_tool(CPUS, "TMS9900") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms9900/9900dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms9900/9900dasm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS340x0 graphics controllers
+--@src/devices/cpu/tms34010/tms34010.h,CPUS["TMS340X0"] = true
+--------------------------------------------------
+
+if CPUS["TMS340X0"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms34010/tms34010.cpp",
+ MAME_DIR .. "src/devices/cpu/tms34010/tms34010.h",
+ MAME_DIR .. "src/devices/cpu/tms34010/34010fld.hxx",
+ MAME_DIR .. "src/devices/cpu/tms34010/34010gfx.hxx",
+ MAME_DIR .. "src/devices/cpu/tms34010/34010ops.h",
+ MAME_DIR .. "src/devices/cpu/tms34010/34010ops.hxx",
+ MAME_DIR .. "src/devices/cpu/tms34010/34010tbl.hxx",
+ }
+end
+
+if opt_tool(CPUS, "TMS340X0") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms34010/34010dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms34010/34010dsm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS3201x DSP
+--@src/devices/cpu/tms32010/tms32010.h,CPUS["TMS32010"] = true
+--------------------------------------------------
+
+if CPUS["TMS32010"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms32010/tms32010.cpp",
+ MAME_DIR .. "src/devices/cpu/tms32010/tms32010.h",
+ }
+end
+
+if opt_tool(CPUS, "TMS32010") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32010/32010dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32010/32010dsm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS3202x DSP
+--@src/devices/cpu/tms32025/tms32025.h,CPUS["TMS32025"] = true
+--------------------------------------------------
+
+if CPUS["TMS32025"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms32025/tms32025.cpp",
+ MAME_DIR .. "src/devices/cpu/tms32025/tms32025.h",
+ }
+end
+
+if opt_tool(CPUS, "TMS32025") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32025/32025dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32025/32025dsm.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS3203x DSP
+--@src/devices/cpu/tms32031/tms32031.h,CPUS["TMS32031"] = true
+--------------------------------------------------
+
+if CPUS["TMS32031"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms32031/tms32031.cpp",
+ MAME_DIR .. "src/devices/cpu/tms32031/tms32031.h",
+ MAME_DIR .. "src/devices/cpu/tms32031/32031ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "TMS32031") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32031/dis32031.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32031/dis32031.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS3205x DSP
+--@src/devices/cpu/tms32051/tms32051.h,CPUS["TMS32051"] = true
+--------------------------------------------------
+
+if CPUS["TMS32051"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms32051/tms32051.cpp",
+ MAME_DIR .. "src/devices/cpu/tms32051/tms32051.h",
+ MAME_DIR .. "src/devices/cpu/tms32051/32051ops.h",
+ MAME_DIR .. "src/devices/cpu/tms32051/32051ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "TMS32051") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32051/dis32051.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32051/dis32051.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS3208x DSP
+--@src/devices/cpu/tms32082/tms32082.h,CPUS["TMS32082"] = true
+--------------------------------------------------
+
+if CPUS["TMS32082"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms32082/tms32082.cpp",
+ MAME_DIR .. "src/devices/cpu/tms32082/tms32082.h",
+ MAME_DIR .. "src/devices/cpu/tms32082/mp_ops.cpp",
+ }
+end
+
+if opt_tool(CPUS, "TMS32082") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32082/dis_mp.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32082/dis_mp.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32082/dis_pp.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms32082/dis_pp.h")
+end
+
+--------------------------------------------------
+-- Texas Instruments TMS57002 DSP
+--@src/devices/cpu/tms57002/tms57002.h,CPUS["TMS57002"] = true
+--------------------------------------------------
+
+if CPUS["TMS57002"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tms57002/tms57002.cpp",
+ MAME_DIR .. "src/devices/cpu/tms57002/tms57002.h",
+ MAME_DIR .. "src/devices/cpu/tms57002/tmsops.cpp",
+ MAME_DIR .. "src/devices/cpu/tms57002/tms57kdec.cpp",
+ }
+ dependency {
+ { MAME_DIR .. "src/devices/cpu/tms57002/tms57kdec.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" },
+ { MAME_DIR .. "src/devices/cpu/tms57002/tms57002.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" },
+ { MAME_DIR .. "src/devices/cpu/tms57002/tmsops.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" },
+ }
+ custombuildtask {
+ { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) s $(<) $(@)" } }
+ }
+end
+
+if opt_tool(CPUS, "TMS57002") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.h")
+ table.insert(disasm_dependency , { MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002d.hxx" } )
+ table.insert(disasm_dependency , { MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" } )
+ table.insert(disasm_custombuildtask , { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002d.hxx", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) d $(<) $(@)" }})
+ table.insert(disasm_custombuildtask , { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) s $(<) $(@)" }})
+end
+
+--------------------------------------------------
+-- Toshiba TLCS-90 Series
+--@src/devices/cpu/tlcs90/tlcs90.h,CPUS["TLCS90"] = true
+--------------------------------------------------
+
+if CPUS["TLCS90"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tlcs90/tlcs90.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs90/tlcs90.h",
+ }
+end
+
+if opt_tool(CPUS, "TLCS90") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tlcs90/tlcs90d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tlcs90/tlcs90d.h")
+end
+
+--------------------------------------------------
+-- Toshiba TLCS-870 Series
+--@src/devices/cpu/tlcs870/tlcs870.h,CPUS["TLCS870"] = true
+--------------------------------------------------
+
+if CPUS["TLCS870"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870_ops.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870_ops_reg.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870_ops_src.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870_ops_dst.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870_ops_helper.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870.h",
+ }
+end
+
+if opt_tool(CPUS, "TLCS870") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tlcs870/tlcs870d.h")
+end
+
+--------------------------------------------------
+-- Toshiba TLCS-900 Series
+--@src/devices/cpu/tlcs900/tlcs900.h,CPUS["TLCS900"] = true
+--------------------------------------------------
+
+if CPUS["TLCS900"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tlcs900/tlcs900.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tlcs900.h",
+ MAME_DIR .. "src/devices/cpu/tlcs900/900tbl.hxx",
+ MAME_DIR .. "src/devices/cpu/tlcs900/900htbl.hxx",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tmp95c061.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tmp95c061.h",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tmp95c063.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tmp95c063.h",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tmp96c141.cpp",
+ MAME_DIR .. "src/devices/cpu/tlcs900/tmp96c141.h",
+ }
+end
+
+if opt_tool(CPUS, "TLCS900") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tlcs900/dasm900.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tlcs900/dasm900.h")
+end
+
+--------------------------------------------------
+-- TX0
+--@src/devices/cpu/tx0/tx0.h,CPUS["TX0"] = true
+--------------------------------------------------
+
+if CPUS["TX0"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/tx0/tx0.cpp",
+ MAME_DIR .. "src/devices/cpu/tx0/tx0.h",
+ }
+end
+
+if opt_tool(CPUS, "TX0") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tx0/tx0dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tx0/tx0dasm.h")
+end
+
+--------------------------------------------------
+-- Zilog Z80
+--@src/devices/cpu/z80/z80.h,CPUS["Z80"] = true
+--@src/devices/cpu/z80/kc82.h,CPUS["KC80"] = true
+--@src/devices/cpu/z80/kl5c80a12.h,CPUS["KC80"] = true
+--@src/devices/cpu/z80/kl5c80a16.h,CPUS["KC80"] = true
+--@src/devices/cpu/z80/ky80.h,CPUS["KC80"] = true
+--------------------------------------------------
+
+if (CPUS["Z80"]~=null or CPUS["KC80"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/cpu/z80/z80.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/z80.h",
+ MAME_DIR .. "src/devices/cpu/z80/tmpz84c011.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/tmpz84c011.h",
+ MAME_DIR .. "src/devices/cpu/z80/tmpz84c015.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/tmpz84c015.h",
+ MAME_DIR .. "src/devices/cpu/z80/ez80.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/ez80.h",
+ MAME_DIR .. "src/devices/cpu/z80/lz8420m.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/lz8420m.h",
+ MAME_DIR .. "src/devices/cpu/z80/r800.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/r800.h",
+ }
+end
+
+if CPUS["KC80"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/z80/kc82.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/kc82.h",
+ MAME_DIR .. "src/devices/cpu/z80/kl5c80a12.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/kl5c80a12.h",
+ MAME_DIR .. "src/devices/cpu/z80/kl5c80a16.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/kl5c80a16.h",
+ MAME_DIR .. "src/devices/cpu/z80/kp63.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/kp63.h",
+ MAME_DIR .. "src/devices/cpu/z80/kp69.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/kp69.h",
+ MAME_DIR .. "src/devices/cpu/z80/ky80.cpp",
+ MAME_DIR .. "src/devices/cpu/z80/ky80.h",
+ }
+end
+
+local want_disasm_z80 = opt_tool(CPUS, "Z80")
+local want_disasm_kc80 = opt_tool(CPUS, "KC80")
+
+if want_disasm_z80 or want_disasm_kc80 then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z80/z80dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z80/z80dasm.h")
+end
+
+--------------------------------------------------
+-- Sharp LR35902 (Game Boy CPU)
+--@src/devices/cpu/lr35902/lr35902.h,CPUS["LR35902"] = true
+--------------------------------------------------
+
+if CPUS["LR35902"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/lr35902/lr35902.cpp",
+ MAME_DIR .. "src/devices/cpu/lr35902/lr35902.h",
+ MAME_DIR .. "src/devices/cpu/lr35902/opc_cb.hxx",
+ MAME_DIR .. "src/devices/cpu/lr35902/opc_main.hxx",
+ }
+end
+
+if opt_tool(CPUS, "LR35902") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lr35902/lr35902d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lr35902/lr35902d.h")
+end
+
+--------------------------------------------------
+-- Zilog Z180
+--@src/devices/cpu/z180/z180.h,CPUS["Z180"] = true
+--------------------------------------------------
+
+if CPUS["Z180"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/z180/hd647180x.cpp",
+ MAME_DIR .. "src/devices/cpu/z180/hd647180x.h",
+ MAME_DIR .. "src/devices/cpu/z180/z180.cpp",
+ MAME_DIR .. "src/devices/cpu/z180/z180.h",
+ MAME_DIR .. "src/devices/cpu/z180/z180cb.hxx",
+ MAME_DIR .. "src/devices/cpu/z180/z180dd.hxx",
+ MAME_DIR .. "src/devices/cpu/z180/z180ed.hxx",
+ MAME_DIR .. "src/devices/cpu/z180/z180fd.hxx",
+ MAME_DIR .. "src/devices/cpu/z180/z180op.hxx",
+ MAME_DIR .. "src/devices/cpu/z180/z180ops.h",
+ MAME_DIR .. "src/devices/cpu/z180/z180tbl.h",
+ MAME_DIR .. "src/devices/cpu/z180/z180xy.hxx",
+ }
+end
+
+if opt_tool(CPUS, "Z180") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z180/z180dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z180/z180dasm.h")
+end
+
+--------------------------------------------------
+-- Zilog Z8000
+--@src/devices/cpu/z8000/z8000.h,CPUS["Z8000"] = true
+--------------------------------------------------
+
+if CPUS["Z8000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/z8000/z8000.cpp",
+ MAME_DIR .. "src/devices/cpu/z8000/z8000.h",
+ --MAME_DIR .. "src/devices/cpu/z8000/makedab.cpp",
+ MAME_DIR .. "src/devices/cpu/z8000/z8000cpu.h",
+ MAME_DIR .. "src/devices/cpu/z8000/z8000dab.h",
+ MAME_DIR .. "src/devices/cpu/z8000/z8000ops.hxx",
+ MAME_DIR .. "src/devices/cpu/z8000/z8000tbl.hxx",
+ }
+end
+
+if opt_tool(CPUS, "Z8000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z8000/8000dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z8000/8000dasm.h")
+end
+
+--------------------------------------------------
+-- Zilog Z8
+--@src/devices/cpu/z8/z8.h,CPUS["Z8"] = true
+--------------------------------------------------
+
+if CPUS["Z8"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/z8/z8.cpp",
+ MAME_DIR .. "src/devices/cpu/z8/z8.h",
+ MAME_DIR .. "src/devices/cpu/z8/z8ops.hxx",
+ }
+end
+
+if opt_tool(CPUS, "Z8") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z8/z8dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/z8/z8dasm.h")
+end
+
+--------------------------------------------------
+-- Argonaut SuperFX
+--@src/devices/cpu/superfx/superfx.h,CPUS["SUPERFX"] = true
+--------------------------------------------------
+
+if CPUS["SUPERFX"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/superfx/superfx.cpp",
+ MAME_DIR .. "src/devices/cpu/superfx/superfx.h",
+ }
+end
+
+if opt_tool(CPUS, "SUPERFX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/superfx/sfx_dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/superfx/sfx_dasm.h")
+end
+
+--------------------------------------------------
+-- Rockwell PPS-4
+--@src/devices/cpu/pps4/pps4.h,CPUS["PPS4"] = true
+--------------------------------------------------
+
+if CPUS["PPS4"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pps4/pps4.cpp",
+ MAME_DIR .. "src/devices/cpu/pps4/pps4.h",
+ }
+end
+
+if opt_tool(CPUS, "PPS4") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pps4/pps4dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pps4/pps4dasm.h")
+end
+
+--------------------------------------------------
+-- Rockwell PPS-4/1
+--@src/devices/cpu/pps41/mm75.h,CPUS["PPS41"] = true
+--@src/devices/cpu/pps41/mm76.h,CPUS["PPS41"] = true
+--@src/devices/cpu/pps41/mm78.h,CPUS["PPS41"] = true
+--@src/devices/cpu/pps41/mm78la.h,CPUS["PPS41"] = true
+--------------------------------------------------
+
+if CPUS["PPS41"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pps41/pps41base.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/pps41base.h",
+ MAME_DIR .. "src/devices/cpu/pps41/mm75.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm75.h",
+ MAME_DIR .. "src/devices/cpu/pps41/mm75op.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm76.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm76.h",
+ MAME_DIR .. "src/devices/cpu/pps41/mm76op.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78.h",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78op.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78la.cpp",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78la.h",
+ MAME_DIR .. "src/devices/cpu/pps41/mm78laop.cpp",
+ }
+end
+
+if opt_tool(CPUS, "PPS41") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pps41/pps41d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pps41/pps41d.h")
+end
+
+--------------------------------------------------
+-- Hitachi HD61700
+--@src/devices/cpu/hd61700/hd61700.h,CPUS["HD61700"] = true
+--------------------------------------------------
+
+if CPUS["HD61700"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/hd61700/hd61700.cpp",
+ MAME_DIR .. "src/devices/cpu/hd61700/hd61700.h",
+ }
+end
+
+if opt_tool(CPUS, "HD61700") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hd61700/hd61700d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hd61700/hd61700d.h")
+end
+
+--------------------------------------------------
+-- Sanyo LC8670
+--@src/devices/cpu/lc8670/lc8670.h,CPUS["LC8670"] = true
+--------------------------------------------------
+
+if CPUS["LC8670"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/lc8670/lc8670.cpp",
+ MAME_DIR .. "src/devices/cpu/lc8670/lc8670.h",
+ }
+end
+
+if opt_tool(CPUS, "LC8670") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lc8670/lc8670dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lc8670/lc8670dsm.h")
+end
+
+--------------------------------------------------
+-- Sega SCU DSP
+--@src/devices/cpu/scudsp/scudsp.h,CPUS["SCUDSP"] = true
+--------------------------------------------------
+
+if CPUS["SCUDSP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/scudsp/scudsp.cpp",
+ MAME_DIR .. "src/devices/cpu/scudsp/scudsp.h",
+ }
+end
+
+if opt_tool(CPUS, "SCUDSP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/scudsp/scudspdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/scudsp/scudspdasm.h")
+end
+
+--------------------------------------------------
+-- Sunplus Technology S+core
+--@src/devices/cpu/score/score.h,CPUS["SCORE"] = true
+--------------------------------------------------
+
+if CPUS["SCORE"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/score/score.cpp",
+ MAME_DIR .. "src/devices/cpu/score/score.h",
+ MAME_DIR .. "src/devices/cpu/score/scorem.h",
+ }
+end
+
+if opt_tool(CPUS, "SCORE") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/score/scoredsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/score/scoredsm.h")
+end
+
+--------------------------------------------------
+-- Xerox Alto-II
+--@src/devices/cpu/alto2/alto2cpu.h,CPUS["ALTO2"] = true
+--------------------------------------------------
+
+if CPUS["ALTO2"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/alto2/alto2cpu.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/alto2cpu.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2disk.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2disk.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2disp.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2disp.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2curt.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2curt.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2dht.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2dht.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2dvt.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2dvt.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2dwt.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2dwt.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2emu.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2emu.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2ether.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2ether.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2hw.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2hw.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2kbd.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2kbd.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2ksec.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2ksec.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2kwd.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2kwd.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2mem.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2mem.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2mouse.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2mouse.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2mrt.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2mrt.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2part.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2part.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2ram.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2ram.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2roms.cpp",
+ MAME_DIR .. "src/devices/cpu/alto2/a2roms.h",
+ MAME_DIR .. "src/devices/cpu/alto2/a2jkff.h",
+ }
+end
+
+if opt_tool(CPUS, "ALTO2") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/alto2/alto2dsm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/alto2/alto2dsm.h")
+end
+
+------------------------------------------
+-- Sun SPARCv7, SPARCv8 implementation
+--@src/devices/cpu/sparc/sparc.h,CPUS["SPARC"] = true
+--------------------------------------------------
+
+if CPUS["SPARC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/sparc/sparc.cpp",
+ MAME_DIR .. "src/devices/cpu/sparc/sparcdefs.h",
+ MAME_DIR .. "src/devices/cpu/sparc/sparc_intf.h",
+ MAME_DIR .. "src/devices/cpu/sparc/sparc.h",
+ }
+end
+
+if opt_tool(CPUS, "SPARC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sparc/sparcdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/sparc/sparcdasm.h")
+end
+
+--------------------------------------------------
+-- Intergraph CLIPPER (C100/C300/C400) series
+--@src/devices/cpu/clipper/clipper.h,CPUS["CLIPPER"] = true
+--------------------------------------------------
+
+if CPUS["CLIPPER"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/clipper/clipper.cpp",
+ MAME_DIR .. "src/devices/cpu/clipper/clipper.h",
+ }
+end
+
+if opt_tool(CPUS, "CLIPPER") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/clipper/clipperd.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/clipper/clipperd.h")
+end
+
+
+--------------------------------------------------
+-- VM Labs Nuon, disassembler only
+--------------------------------------------------
+
+if opt_tool(CPUS, "NUON") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nuon/nuondasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/nuon/nuondasm.h")
+end
+
+--------------------------------------------------
+-- DEC Alpha (EV4/EV5/EV6/EV7) series
+--@src/devices/cpu/alpha/alpha.h,CPUS["ALPHA"] = true
+--------------------------------------------------
+
+if CPUS["ALPHA"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/alpha/alpha.cpp",
+ MAME_DIR .. "src/devices/cpu/alpha/alpha.h",
+ }
+end
+
+if opt_tool(CPUS, "ALPHA") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/alpha/alphad.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/alpha/alphad.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor HPC
+--@src/devices/cpu/hpc/hpc.h,CPUS["HPC"] = true
+--------------------------------------------------
+
+if CPUS["HPC"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/hpc/hpc.cpp",
+ MAME_DIR .. "src/devices/cpu/hpc/hpc.h",
+ }
+end
+
+if opt_tool(CPUS, "HPC") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hpc/hpcdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/hpc/hpcdasm.h")
+end
+
+--------------------------------------------------
+-- Yamaha Multiple Effects Generator
+--@src/devices/sound/meg.h,CPUS["MEG"] = true
+--------------------------------------------------
+
+if CPUS["MEG"] then
+ files {
+ MAME_DIR .. "src/devices/sound/meg.cpp",
+ MAME_DIR .. "src/devices/sound/meg.h",
+ }
+end
+
+if opt_tool(CPUS, "MEG") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/sound/megd.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/sound/megd.h")
+end
+
+--------------------------------------------------
+-- Yamaha DSPV
+--@src/devices/sound/dspv.h,CPUS["DSPV"] = true
+--------------------------------------------------
+
+if CPUS["DSPV"] then
+ files {
+ MAME_DIR .. "src/devices/sound/dspv.cpp",
+ MAME_DIR .. "src/devices/sound/dspv.h",
+ }
+end
+
+if opt_tool(CPUS, "DSPV") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/sound/dspvd.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/sound/dspvd.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor NS32000 series
+--@src/devices/cpu/ns32000/ns32000.h,CPUS["NS32000"] = true
+--------------------------------------------------
+
+if CPUS["NS32000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ns32000/ns32000.cpp",
+ MAME_DIR .. "src/devices/cpu/ns32000/ns32000.h",
+ MAME_DIR .. "src/devices/cpu/ns32000/slave.h",
+ }
+end
+
+if opt_tool(CPUS, "NS32000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ns32000/ns32000dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ns32000/ns32000dasm.h")
+end
+
+--------------------------------------------------
+-- Elan RISC II series
+--@src/devices/cpu/rii/riscii.h,CPUS["RII"] = true
+--------------------------------------------------
+
+if CPUS["RII"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/rii/riscii.cpp",
+ MAME_DIR .. "src/devices/cpu/rii/riscii.h",
+ }
+end
+
+if opt_tool(CPUS, "RII") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rii/riidasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rii/riidasm.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor BCP
+--@src/devices/cpu/bcp/dp8344.h,CPUS["BCP"] = true
+--------------------------------------------------
+
+if CPUS["BCP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/bcp/dp8344.cpp",
+ MAME_DIR .. "src/devices/cpu/bcp/dp8344.h",
+ }
+end
+
+if opt_tool(CPUS, "BCP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/bcp/bcpdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/bcp/bcpdasm.h")
+end
+
+--------------------------------------------------
+-- Fujitsu F2MC-16 series
+--@src/devices/cpu/f2mc16/f2mc16.h,CPUS["F2MC16"] = true
+--------------------------------------------------
+
+if CPUS["F2MC16"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/f2mc16/f2mc16.cpp",
+ MAME_DIR .. "src/devices/cpu/f2mc16/f2mc16.h",
+ MAME_DIR .. "src/devices/cpu/f2mc16/mb9061x.cpp",
+ MAME_DIR .. "src/devices/cpu/f2mc16/mb9061x.h",
+ }
+end
+
+if opt_tool(CPUS, "F2MC16") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/f2mc16/f2mc16d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/f2mc16/f2mc16d.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor CR16B
+--@src/devices/cpu/cr16b/cr16b.h,CPUS["CR16B"] = true
+--------------------------------------------------
+
+if CPUS["CR16B"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/cr16b/cr16b.cpp",
+ MAME_DIR .. "src/devices/cpu/cr16b/cr16b.h",
+ }
+end
+
+if opt_tool(CPUS, "CR16B") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cr16b/cr16bdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cr16b/cr16bdasm.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor CR16C, disassembler only
+--------------------------------------------------
+
+if opt_tool(CPUS, "CR16C") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cr16c/cr16cdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/cr16c/cr16cdasm.h")
+end
+
+--------------------------------------------------
+-- Gigatron
+--@src/devices/cpu/gigatron/gigatron.h,CPUS["GTRON"] = true
+--------------------------------------------------
+
+if CPUS["GTRON"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/gigatron/gigatron.cpp",
+ MAME_DIR .. "src/devices/cpu/gigatron/gigatron.h",
+ }
+end
+
+if opt_tool(CPUS, "GTRON") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/gigatron/gigatrondasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/gigatron/gigatrondasm.h")
+end
+
+--------------------------------------------------
+-- Motorola DSP56000
+--@src/devices/cpu/dsp56000/dsp56000.h,CPUS["DSP56000"] = true
+--------------------------------------------------
+
+if CPUS["DSP56000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/dsp56000/dsp56000.cpp",
+ MAME_DIR .. "src/devices/cpu/dsp56000/dsp56000.h",
+ }
+end
+
+if opt_tool(CPUS, "DSP56000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56000/dsp56000d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/dsp56000/dsp56000d.h")
+end
+
+--------------------------------------------------
+-- DEC VAX, disassembler only
+--@src/devices/cpu/vax/vax.h,CPUS["VAX"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "VAX") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vax/vaxdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vax/vaxdasm.h")
+end
+
+--------------------------------------------------
+-- DEC VT50/VT52
+--@src/devices/cpu/vt50/vt50.h,CPUS["VT50"] = true
+--------------------------------------------------
+
+if CPUS["VT50"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/vt50/vt50.cpp",
+ MAME_DIR .. "src/devices/cpu/vt50/vt50.h",
+ }
+end
+
+if opt_tool(CPUS, "VT50") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vt50/vt50dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vt50/vt50dasm.h")
+end
+
+--------------------------------------------------
+-- DEC VT61
+--@src/devices/cpu/vt61/vt61.h,CPUS["VT61"] = true
+--------------------------------------------------
+
+if CPUS["VT61"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/vt61/vt61.cpp",
+ MAME_DIR .. "src/devices/cpu/vt61/vt61.h",
+ }
+end
+
+if opt_tool(CPUS, "VT61") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vt61/vt61dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/vt61/vt61dasm.h")
+end
+
+--------------------------------------------------
+-- National Semiconductor PACE/INS8900
+--@src/devices/cpu/pace/pace.h,CPUS["PACE"] = true
+--------------------------------------------------
+
+if CPUS["PACE"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/pace/pace.cpp",
+ MAME_DIR .. "src/devices/cpu/pace/pace.h",
+ }
+end
+
+if opt_tool(CPUS, "PACE") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pace/pacedasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/pace/pacedasm.h")
+end
+
+--------------------------------------------------
+-- AT&T WE32000/WE32100/WE32200
+--@src/devices/cpu/we32000/we32100.h,CPUS["WE32000"] = true
+--------------------------------------------------
+
+if CPUS["WE32000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/we32000/we32100.cpp",
+ MAME_DIR .. "src/devices/cpu/we32000/we32100.h",
+ }
+end
+
+if opt_tool(CPUS, "WE32000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/we32000/we32100d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/we32000/we32100d.h")
+end
+
+--------------------------------------------------
+-- DEC RX01
+--@src/devices/cpu/rx01/rx01.h,CPUS["RX01"] = true
+--------------------------------------------------
+
+if CPUS["RX01"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/rx01/rx01.cpp",
+ MAME_DIR .. "src/devices/cpu/rx01/rx01.h",
+ }
+end
+
+if opt_tool(CPUS, "RX01") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rx01/rx01dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/rx01/rx01dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola M88000
+--@src/devices/cpu/m88000/m88000.h,CPUS["M88000"] = true
+--------------------------------------------------
+
+if CPUS["M88000"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/m88000/m88000.cpp",
+ MAME_DIR .. "src/devices/cpu/m88000/m88000.h",
+ }
+end
+
+if opt_tool(CPUS, "M88000") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m88000/m88000d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m88000/m88000d.h")
+end
+
+--------------------------------------------------
+-- XAVIX2
+--@src/devices/cpu/xavix2/xavix2.h,CPUS["XAVIX2"] = true
+--------------------------------------------------
+
+if CPUS["XAVIX2"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/xavix2/xavix2.cpp",
+ MAME_DIR .. "src/devices/cpu/xavix2/xavix2.h",
+ }
+end
+
+if opt_tool(CPUS, "XAVIX2") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/xavix2/xavix2d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/xavix2/xavix2d.h")
+end
+
+--------------------------------------------------
+-- NEC 78K
+--@src/devices/cpu/upd78k/upd78k0.h,CPUS["UPD78K"] = true
+--@src/devices/cpu/upd78k/upd78k2.h,CPUS["UPD78K"] = true
+--@src/devices/cpu/upd78k/upd78k3.h,CPUS["UPD78K"] = true
+--------------------------------------------------
+
+if CPUS["UPD78K"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/upd78k/upd78k0.cpp",
+ MAME_DIR .. "src/devices/cpu/upd78k/upd78k0.h",
+ MAME_DIR .. "src/devices/cpu/upd78k/upd78k2.cpp",
+ MAME_DIR .. "src/devices/cpu/upd78k/upd78k2.h",
+ MAME_DIR .. "src/devices/cpu/upd78k/upd78k3.cpp",
+ MAME_DIR .. "src/devices/cpu/upd78k/upd78k3.h",
+ }
+end
+
+if opt_tool(CPUS, "UPD78K") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78kd.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78kd.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k0d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k0d.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k1d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k1d.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k2d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k2d.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k3d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd78k/upd78k3d.h")
+end
+
+--------------------------------------------------
+-- IBM ROMP
+--@src/devices/cpu/romp/romp.h,CPUS["ROMP"] = true
+--------------------------------------------------
+
+if CPUS["ROMP"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/romp/romp.cpp",
+ MAME_DIR .. "src/devices/cpu/romp/romp.h",
+ MAME_DIR .. "src/devices/cpu/romp/rsc.h",
+ }
+end
+
+if opt_tool(CPUS, "ROMP") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/romp/rompdasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/romp/rompdasm.h")
+end
+
+--------------------------------------------------
+-- KS0164
+--@src/devices/cpu/ks0164/ks0164.h,CPUS["KS0164"] = true
+--------------------------------------------------
+
+if CPUS["KS0164"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/ks0164/ks0164.cpp",
+ MAME_DIR .. "src/devices/cpu/ks0164/ks0164.h",
+ }
+end
+
+if opt_tool(CPUS, "KS0164") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ks0164/ks0164d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/ks0164/ks0164d.h")
+end
+
+--------------------------------------------------
+-- uPD177x - Disassembler only
+--@src/devices/cpu/upd177x/upd177x.h,CPUS["UPD177X"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "UPD177X") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd177x/upd177xd.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/upd177x/upd177xd.h")
+end
+
+--------------------------------------------------
+-- Sanyo LC58 - Disassembler only
+--@src/devices/cpu/lc58/lc58.h,CPUS["LC58"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "LC58") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lc58/lc58d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lc58/lc58d.h")
+end
+
+--------------------------------------------------
+-- OKI MSM6502/6512 - Disassembler only
+--@src/devices/cpu/msm65x2/msm65x2.h,CPUS["MSM65X2"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "MSM65X2") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/msm65x2/msm65x2d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/msm65x2/msm65x2d.h")
+end
+
+--------------------------------------------------
+-- Sanyo LC57 - Disassembler only
+--@src/devices/cpu/lc57/lc57.h,CPUS["LC57"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "LC57") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lc57/lc57d.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/lc57/lc57d.h")
+end
+
+--------------------------------------------------
+-- Mark I (Andrew Holme)
+--@src/devices/cpu/mk1/mk1.h,CPUS["MK1"] = true
+--------------------------------------------------
+
+if CPUS["MK1"] then
+ files {
+ MAME_DIR .. "src/devices/cpu/mk1/mk1.cpp",
+ MAME_DIR .. "src/devices/cpu/mk1/mk1.h",
+ }
+end
+
+if opt_tool(CPUS, "MK1") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mk1/mk1dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mk1/mk1dasm.h")
+end
+
+--------------------------------------------------
+-- Motorola M68HC16 (CPU16) - Disassembler only
+--@src/devices/cpu/m68hc16/m68hc16.h,CPUS["M68HC16"] = true
+--------------------------------------------------
+
+if opt_tool(CPUS, "M68HC16") then
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m68hc16/cpu16dasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/m68hc16/cpu16dasm.h")
+end
diff --git a/docs/release/scripts/src/devices.lua b/docs/release/scripts/src/devices.lua
new file mode 100644
index 00000000000..4940ccdaafd
--- /dev/null
+++ b/docs/release/scripts/src/devices.lua
@@ -0,0 +1,100 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- devices.lua
+--
+-- Rules for building device cores
+--
+---------------------------------------------------------------------------
+
+function devicesProject(_target, _subtarget)
+
+ disasm_files = { }
+ disasm_dependency = { }
+ disasm_custombuildtask = { }
+
+ project ("optional")
+ uuid (os.uuid("optional-" .. _target .."_" .. _subtarget))
+ kind (LIBTYPE)
+ targetsubdir(_target .."_" .. _subtarget)
+
+ if (_OPTIONS["targetos"] ~= "asmjs") then
+ options {
+ "ArchiveSplit",
+ }
+ end
+
+ addprojectflags()
+ precompiledheaders()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame", -- used for sound amiga
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "emu",
+ GEN_DIR .. "emu/layout",
+ ext_includedir("asio"),
+ ext_includedir("expat"),
+ ext_includedir("flac"),
+ }
+
+ dofile(path.join("src", "cpu.lua"))
+
+ dofile(path.join("src", "sound.lua"))
+
+ dofile(path.join("src", "video.lua"))
+
+ dofile(path.join("src", "machine.lua"))
+
+ dofile(path.join("src", "bus.lua"))
+
+ pchsource(MAME_DIR .. "src/devices/machine/timer.cpp")
+
+if #disasm_files > 0 then
+ project ("dasm")
+ uuid ("f2d28b0a-6da5-4f78-b629-d834aa00429d")
+ kind (LIBTYPE)
+ targetsubdir(_target .."_" .. _subtarget)
+ addprojectflags()
+ precompiledheaders()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "emu",
+ ext_includedir("asio"),
+ ext_includedir("expat"),
+ }
+
+ files {
+ disasm_files
+ }
+
+ for key,value in pairs(disasm_files) do
+ if string.endswith(value, ".cpp") then
+ --print("calling pchsource with " .. value)
+ pchsource(value)
+ break
+ end
+ end
+
+ if #disasm_dependency > 0 then
+ dependency(disasm_dependency)
+ end
+
+ if #disasm_custombuildtask > 0 then
+ custombuildtask(disasm_custombuildtask)
+ end
+end
+
+end
diff --git a/docs/release/scripts/src/emu.lua b/docs/release/scripts/src/emu.lua
new file mode 100644
index 00000000000..06b92469c25
--- /dev/null
+++ b/docs/release/scripts/src/emu.lua
@@ -0,0 +1,329 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- emu.lua
+--
+-- Rules for building emu cores
+--
+---------------------------------------------------------------------------
+
+project ("emu")
+uuid ("e6fa15e4-a354-4526-acef-13c8e80fcacf")
+kind (LIBTYPE)
+
+addprojectflags()
+precompiledheaders()
+options {
+ "ArchiveSplit",
+}
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "3rdparty/sol2",
+ GEN_DIR .. "emu",
+ GEN_DIR .. "emu/layout",
+}
+
+includedirs {
+ ext_includedir("asio"),
+ ext_includedir("expat"),
+ ext_includedir("zlib"),
+ ext_includedir("flac"),
+ ext_includedir("jpeg"),
+ ext_includedir("rapidjson"),
+ ext_includedir("pugixml"),
+}
+
+files {
+ MAME_DIR .. "src/emu/emu.h",
+ MAME_DIR .. "src/emu/emufwd.h",
+ MAME_DIR .. "src/emu/main.h",
+ MAME_DIR .. "src/emu/main.cpp",
+ MAME_DIR .. "src/emu/gamedrv.h",
+ MAME_DIR .. "src/emu/hashfile.cpp",
+ MAME_DIR .. "src/emu/hashfile.h",
+ MAME_DIR .. "src/emu/addrmap.cpp",
+ MAME_DIR .. "src/emu/addrmap.h",
+ MAME_DIR .. "src/emu/attotime.cpp",
+ MAME_DIR .. "src/emu/attotime.h",
+ MAME_DIR .. "src/emu/bookkeeping.cpp",
+ MAME_DIR .. "src/emu/bookkeeping.h",
+ MAME_DIR .. "src/emu/config.cpp",
+ MAME_DIR .. "src/emu/config.h",
+ MAME_DIR .. "src/emu/crsshair.cpp",
+ MAME_DIR .. "src/emu/crsshair.h",
+ MAME_DIR .. "src/emu/debugger.cpp",
+ MAME_DIR .. "src/emu/debugger.h",
+ MAME_DIR .. "src/emu/devdelegate.cpp",
+ MAME_DIR .. "src/emu/devdelegate.h",
+ MAME_DIR .. "src/emu/devcb.cpp",
+ MAME_DIR .. "src/emu/devcb.h",
+ MAME_DIR .. "src/emu/devcpu.cpp",
+ MAME_DIR .. "src/emu/devcpu.h",
+ MAME_DIR .. "src/emu/devfind.cpp",
+ MAME_DIR .. "src/emu/devfind.h",
+ MAME_DIR .. "src/emu/device.cpp",
+ MAME_DIR .. "src/emu/device.h",
+ MAME_DIR .. "src/emu/device.ipp",
+ MAME_DIR .. "src/emu/didisasm.cpp",
+ MAME_DIR .. "src/emu/didisasm.h",
+ MAME_DIR .. "src/emu/diexec.cpp",
+ MAME_DIR .. "src/emu/diexec.h",
+ MAME_DIR .. "src/emu/digfx.cpp",
+ MAME_DIR .. "src/emu/digfx.h",
+ MAME_DIR .. "src/emu/diimage.cpp",
+ MAME_DIR .. "src/emu/diimage.h",
+ MAME_DIR .. "src/emu/dimemory.cpp",
+ MAME_DIR .. "src/emu/dimemory.h",
+ MAME_DIR .. "src/emu/dinetwork.cpp",
+ MAME_DIR .. "src/emu/dinetwork.h",
+ MAME_DIR .. "src/emu/dinvram.cpp",
+ MAME_DIR .. "src/emu/dinvram.h",
+ MAME_DIR .. "src/emu/dipalette.cpp",
+ MAME_DIR .. "src/emu/dipalette.h",
+ MAME_DIR .. "src/emu/dipty.cpp",
+ MAME_DIR .. "src/emu/dipty.h",
+ MAME_DIR .. "src/emu/dirom.ipp",
+ MAME_DIR .. "src/emu/dirom.h",
+ MAME_DIR .. "src/emu/dirtc.cpp",
+ MAME_DIR .. "src/emu/dirtc.h",
+ MAME_DIR .. "src/emu/diserial.cpp",
+ MAME_DIR .. "src/emu/diserial.h",
+ MAME_DIR .. "src/emu/dislot.cpp",
+ MAME_DIR .. "src/emu/dislot.h",
+ MAME_DIR .. "src/emu/disound.cpp",
+ MAME_DIR .. "src/emu/disound.h",
+ MAME_DIR .. "src/emu/distate.cpp",
+ MAME_DIR .. "src/emu/distate.h",
+ MAME_DIR .. "src/emu/divideo.cpp",
+ MAME_DIR .. "src/emu/divideo.h",
+ MAME_DIR .. "src/emu/divtlb.cpp",
+ MAME_DIR .. "src/emu/divtlb.h",
+ MAME_DIR .. "src/emu/drawgfx.cpp",
+ MAME_DIR .. "src/emu/drawgfx.h",
+ MAME_DIR .. "src/emu/drawgfxt.ipp",
+ MAME_DIR .. "src/emu/driver.cpp",
+ MAME_DIR .. "src/emu/driver.h",
+ MAME_DIR .. "src/emu/drivenum.cpp",
+ MAME_DIR .. "src/emu/drivenum.h",
+ MAME_DIR .. "src/emu/emucore.cpp",
+ MAME_DIR .. "src/emu/emucore.h",
+ MAME_DIR .. "src/emu/emumem.cpp",
+ MAME_DIR .. "src/emu/emumem.h",
+ MAME_DIR .. "src/emu/emumem_aspace.cpp",
+ MAME_DIR .. "src/emu/emumem_mview.cpp",
+ MAME_DIR .. "src/emu/emumem_mud.cpp",
+ MAME_DIR .. "src/emu/emumem_mud.h",
+ MAME_DIR .. "src/emu/emumem_hea.h",
+ MAME_DIR .. "src/emu/emumem_hem.cpp",
+ MAME_DIR .. "src/emu/emumem_hem.h",
+ MAME_DIR .. "src/emu/emumem_hedp.cpp",
+ MAME_DIR .. "src/emu/emumem_hedp.h",
+ MAME_DIR .. "src/emu/emumem_heun.cpp",
+ MAME_DIR .. "src/emu/emumem_heun.h",
+ MAME_DIR .. "src/emu/emumem_heu.cpp",
+ MAME_DIR .. "src/emu/emumem_heu.h",
+ MAME_DIR .. "src/emu/emumem_hedr.ipp",
+ MAME_DIR .. "src/emu/emumem_hedr.h",
+ MAME_DIR .. "src/emu/emumem_hedr0.cpp",
+ MAME_DIR .. "src/emu/emumem_hedr1.cpp",
+ MAME_DIR .. "src/emu/emumem_hedr2.cpp",
+ MAME_DIR .. "src/emu/emumem_hedr3.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw.ipp",
+ MAME_DIR .. "src/emu/emumem_hedw.h",
+ MAME_DIR .. "src/emu/emumem_hedw0.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw1.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw2.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw3.cpp",
+ MAME_DIR .. "src/emu/emumem_hep.cpp",
+ MAME_DIR .. "src/emu/emumem_hep.h",
+ MAME_DIR .. "src/emu/emumem_het.cpp",
+ MAME_DIR .. "src/emu/emumem_het.h",
+ MAME_DIR .. "src/emu/emuopts.cpp",
+ MAME_DIR .. "src/emu/emuopts.h",
+ MAME_DIR .. "src/emu/emupal.cpp",
+ MAME_DIR .. "src/emu/emupal.h",
+ MAME_DIR .. "src/emu/fileio.cpp",
+ MAME_DIR .. "src/emu/fileio.h",
+ MAME_DIR .. "src/emu/http.h",
+ MAME_DIR .. "src/emu/http.cpp",
+ MAME_DIR .. "src/emu/image.cpp",
+ MAME_DIR .. "src/emu/image.h",
+ MAME_DIR .. "src/emu/input.cpp",
+ MAME_DIR .. "src/emu/input.h",
+ MAME_DIR .. "src/emu/inputdev.cpp",
+ MAME_DIR .. "src/emu/inputdev.h",
+ MAME_DIR .. "src/emu/ioport.cpp",
+ MAME_DIR .. "src/emu/ioport.h",
+ MAME_DIR .. "src/emu/inpttype.ipp",
+ MAME_DIR .. "src/emu/logmacro.h",
+ MAME_DIR .. "src/emu/machine.cpp",
+ MAME_DIR .. "src/emu/machine.h",
+ MAME_DIR .. "src/emu/mconfig.cpp",
+ MAME_DIR .. "src/emu/mconfig.h",
+ MAME_DIR .. "src/emu/memarray.cpp",
+ MAME_DIR .. "src/emu/memarray.h",
+ MAME_DIR .. "src/emu/natkeyboard.cpp",
+ MAME_DIR .. "src/emu/natkeyboard.h",
+ MAME_DIR .. "src/emu/network.cpp",
+ MAME_DIR .. "src/emu/network.h",
+ MAME_DIR .. "src/emu/parameters.cpp",
+ MAME_DIR .. "src/emu/parameters.h",
+ MAME_DIR .. "src/emu/profiler.cpp",
+ MAME_DIR .. "src/emu/profiler.h",
+ MAME_DIR .. "src/emu/output.cpp",
+ MAME_DIR .. "src/emu/output.h",
+ MAME_DIR .. "src/emu/recording.cpp",
+ MAME_DIR .. "src/emu/recording.h",
+ MAME_DIR .. "src/emu/render.cpp",
+ MAME_DIR .. "src/emu/render.h",
+ MAME_DIR .. "src/emu/rendertypes.h",
+ MAME_DIR .. "src/emu/rendfont.cpp",
+ MAME_DIR .. "src/emu/rendfont.h",
+ MAME_DIR .. "src/emu/rendlay.cpp",
+ MAME_DIR .. "src/emu/rendlay.h",
+ MAME_DIR .. "src/emu/rendutil.cpp",
+ MAME_DIR .. "src/emu/rendutil.h",
+ MAME_DIR .. "src/emu/romload.cpp",
+ MAME_DIR .. "src/emu/romload.h",
+ MAME_DIR .. "src/emu/romentry.h",
+ MAME_DIR .. "src/emu/romentry.cpp",
+ MAME_DIR .. "src/emu/save.cpp",
+ MAME_DIR .. "src/emu/save.h",
+ MAME_DIR .. "src/emu/schedule.cpp",
+ MAME_DIR .. "src/emu/schedule.h",
+ MAME_DIR .. "src/emu/screen.cpp",
+ MAME_DIR .. "src/emu/screen.h",
+ MAME_DIR .. "src/emu/softlist.cpp",
+ MAME_DIR .. "src/emu/softlist.h",
+ MAME_DIR .. "src/emu/softlist_dev.cpp",
+ MAME_DIR .. "src/emu/softlist_dev.h",
+ MAME_DIR .. "src/emu/sound.cpp",
+ MAME_DIR .. "src/emu/sound.h",
+ MAME_DIR .. "src/emu/speaker.cpp",
+ MAME_DIR .. "src/emu/speaker.h",
+ MAME_DIR .. "src/emu/tilemap.cpp",
+ MAME_DIR .. "src/emu/tilemap.h",
+ MAME_DIR .. "src/emu/uiinput.cpp",
+ MAME_DIR .. "src/emu/uiinput.h",
+ MAME_DIR .. "src/emu/validity.cpp",
+ MAME_DIR .. "src/emu/validity.h",
+ MAME_DIR .. "src/emu/video.cpp",
+ MAME_DIR .. "src/emu/video.h",
+ MAME_DIR .. "src/emu/xtal.cpp",
+ MAME_DIR .. "src/emu/xtal.h",
+ MAME_DIR .. "src/emu/rendersw.hxx",
+ MAME_DIR .. "src/emu/ui/uimain.h",
+ MAME_DIR .. "src/emu/ui/cmddata.h", -- TODO: remove
+ MAME_DIR .. "src/emu/debug/debugbuf.cpp",
+ MAME_DIR .. "src/emu/debug/debugbuf.h",
+ MAME_DIR .. "src/emu/debug/debugcmd.cpp",
+ MAME_DIR .. "src/emu/debug/debugcmd.h",
+ MAME_DIR .. "src/emu/debug/debugcon.cpp",
+ MAME_DIR .. "src/emu/debug/debugcon.h",
+ MAME_DIR .. "src/emu/debug/debugcpu.cpp",
+ MAME_DIR .. "src/emu/debug/debugcpu.h",
+ MAME_DIR .. "src/emu/debug/debughlp.cpp",
+ MAME_DIR .. "src/emu/debug/debughlp.h",
+ MAME_DIR .. "src/emu/debug/debugvw.cpp",
+ MAME_DIR .. "src/emu/debug/debugvw.h",
+ MAME_DIR .. "src/emu/debug/dvdisasm.cpp",
+ MAME_DIR .. "src/emu/debug/dvdisasm.h",
+ MAME_DIR .. "src/emu/debug/dvmemory.cpp",
+ MAME_DIR .. "src/emu/debug/dvmemory.h",
+ MAME_DIR .. "src/emu/debug/dvbpoints.cpp",
+ MAME_DIR .. "src/emu/debug/dvbpoints.h",
+ MAME_DIR .. "src/emu/debug/dvrpoints.cpp",
+ MAME_DIR .. "src/emu/debug/dvrpoints.h",
+ MAME_DIR .. "src/emu/debug/dvwpoints.cpp",
+ MAME_DIR .. "src/emu/debug/dvwpoints.h",
+ MAME_DIR .. "src/emu/debug/dvstate.cpp",
+ MAME_DIR .. "src/emu/debug/dvstate.h",
+ MAME_DIR .. "src/emu/debug/dvtext.cpp",
+ MAME_DIR .. "src/emu/debug/dvtext.h",
+ MAME_DIR .. "src/emu/debug/express.cpp",
+ MAME_DIR .. "src/emu/debug/express.h",
+ MAME_DIR .. "src/emu/debug/points.cpp",
+ MAME_DIR .. "src/emu/debug/points.h",
+ MAME_DIR .. "src/emu/debug/textbuf.cpp",
+ MAME_DIR .. "src/emu/debug/textbuf.h",
+ MAME_DIR .. "src/emu/drivers/empty.cpp",
+ MAME_DIR .. "src/emu/layout/generic.h",
+ MAME_DIR .. "src/emu/video/generic.cpp",
+ MAME_DIR .. "src/emu/video/generic.h",
+ MAME_DIR .. "src/emu/video/resnet.cpp",
+ MAME_DIR .. "src/emu/video/resnet.h",
+ MAME_DIR .. "src/emu/video/rgbutil.h",
+ MAME_DIR .. "src/emu/video/rgbgen.cpp",
+ MAME_DIR .. "src/emu/video/rgbgen.h",
+ MAME_DIR .. "src/emu/video/rgbsse.cpp",
+ MAME_DIR .. "src/emu/video/rgbsse.h",
+ MAME_DIR .. "src/emu/video/rgbvmx.cpp",
+ MAME_DIR .. "src/emu/video/rgbvmx.h",
+}
+
+pchsource(MAME_DIR .. "src/emu/main.cpp")
+-- 2 files do not include emu.h
+nopch(MAME_DIR .. "src/emu/attotime.cpp")
+nopch(MAME_DIR .. "src/emu/debug/textbuf.cpp")
+
+dependency {
+ --------------------------------------------------
+ -- additional dependencies
+ --------------------------------------------------
+ { MAME_DIR .. "src/emu/rendfont.cpp", GEN_DIR .. "emu/uismall.fh" },
+ { MAME_DIR .. "src/emu/rendfont.cpp", GEN_DIR .. "emu/ui/uicmd14.fh" },
+ -------------------------------------------------
+ -- core layouts
+ --------------------------------------------------
+ { MAME_DIR .. "src/emu/rendlay.cpp", GEN_DIR .. "emu/layout/dualhovu.lh" },
+ { MAME_DIR .. "src/emu/rendlay.cpp", GEN_DIR .. "emu/layout/dualhsxs.lh" },
+ { MAME_DIR .. "src/emu/rendlay.cpp", GEN_DIR .. "emu/layout/dualhuov.lh" },
+ { MAME_DIR .. "src/emu/rendlay.cpp", GEN_DIR .. "emu/layout/triphsxs.lh" },
+ { MAME_DIR .. "src/emu/rendlay.cpp", GEN_DIR .. "emu/layout/quadhsxs.lh" },
+ { MAME_DIR .. "src/emu/rendlay.cpp", GEN_DIR .. "emu/layout/noscreens.lh" },
+}
+
+custombuildtask {
+ { MAME_DIR .. "scripts/font/NotoSans-Bold.bdc", GEN_DIR .. "emu/uismall.fh", { MAME_DIR .. "scripts/build/file2str.py" }, { "@echo Converting NotoSans-Bold.bdc...", PYTHON .. " $(1) $(<) $(@) font_uismall uint8_t" } },
+}
+
+custombuildtask {
+ { MAME_DIR .. "src/frontend/mame/ui/uicmd14.png", GEN_DIR .. "emu/ui/uicmd14.fh", { MAME_DIR.. "scripts/build/png2bdc.py", MAME_DIR .. "scripts/build/file2str.py" }, { "@echo Converting uicmd14.png...", PYTHON .. " $(1) $(<) temp_cmd.bdc", PYTHON .. " $(2) temp_cmd.bdc $(@) font_uicmd14 uint8_t" } },
+
+ layoutbuildtask("emu/layout", "dualhovu"),
+ layoutbuildtask("emu/layout", "dualhsxs"),
+ layoutbuildtask("emu/layout", "dualhuov"),
+ layoutbuildtask("emu/layout", "triphsxs"),
+ layoutbuildtask("emu/layout", "quadhsxs"),
+ layoutbuildtask("emu/layout", "noscreens"),
+}
+
+project ("precompile")
+uuid ("a6fb15d4-b123-4445-acef-13c8e80fcacf")
+kind (LIBTYPE)
+
+addprojectflags()
+precompiledheaders()
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/lib/util",
+}
+files {
+ MAME_DIR .. "src/emu/drivers/empty.cpp",
+}
+
+pchsource(MAME_DIR .. "src/emu/drivers/empty.cpp")
+
+dependency {
+ { "$(OBJDIR)/src/emu/drivers/empty.o", "$(GCH)", true },
+}
+
+
diff --git a/docs/release/scripts/src/formats.lua b/docs/release/scripts/src/formats.lua
new file mode 100644
index 00000000000..349324dca58
--- /dev/null
+++ b/docs/release/scripts/src/formats.lua
@@ -0,0 +1,2102 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- formats.lua
+--
+-- Rules for building formats
+--
+---------------------------------------------------------------------------
+function formatsProject(_target, _subtarget)
+project "formats"
+ uuid (os.uuid("formats-" .. _target .."_" .. _subtarget))
+ kind (LIBTYPE)
+ targetsubdir(_target .."_" .. _subtarget)
+ addprojectflags()
+
+ options {
+ "ArchiveSplit",
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR,
+ ext_includedir("zlib"),
+ }
+
+ files {
+ MAME_DIR .. "src/lib/formats/all.cpp",
+ MAME_DIR .. "src/lib/formats/all.h",
+
+ MAME_DIR .. "src/lib/formats/imageutl.cpp",
+ MAME_DIR .. "src/lib/formats/imageutl.h",
+
+ MAME_DIR .. "src/lib/formats/cassimg.cpp",
+ MAME_DIR .. "src/lib/formats/cassimg.h",
+ MAME_DIR .. "src/lib/formats/wavfile.cpp",
+ MAME_DIR .. "src/lib/formats/wavfile.h",
+
+ MAME_DIR .. "src/lib/formats/flopimg.cpp",
+ MAME_DIR .. "src/lib/formats/flopimg.h",
+ MAME_DIR .. "src/lib/formats/flopimg_legacy.cpp",
+ MAME_DIR .. "src/lib/formats/flopimg_legacy.h",
+
+ MAME_DIR .. "src/lib/formats/cqm_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/cqm_dsk.h",
+ MAME_DIR .. "src/lib/formats/dsk_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/dsk_dsk.h",
+ MAME_DIR .. "src/lib/formats/ipf_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/ipf_dsk.h",
+ MAME_DIR .. "src/lib/formats/td0_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/td0_dsk.h",
+ MAME_DIR .. "src/lib/formats/hxchfe_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/hxchfe_dsk.h",
+ MAME_DIR .. "src/lib/formats/hxcmfm_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/hxcmfm_dsk.h",
+ MAME_DIR .. "src/lib/formats/mfi_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/mfi_dsk.h",
+ MAME_DIR .. "src/lib/formats/imd_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/imd_dsk.h",
+ MAME_DIR .. "src/lib/formats/upd765_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/upd765_dsk.h",
+ MAME_DIR .. "src/lib/formats/pc_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/pc_dsk.h",
+ MAME_DIR .. "src/lib/formats/d88_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/d88_dsk.h",
+ MAME_DIR .. "src/lib/formats/dfi_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/dfi_dsk.h",
+ MAME_DIR .. "src/lib/formats/fdi_dsk.cpp",
+ MAME_DIR .. "src/lib/formats/rpk.cpp",
+ MAME_DIR .. "src/lib/formats/rpk.h",
+
+ MAME_DIR .. "src/lib/formats/fsmgr.h",
+ MAME_DIR .. "src/lib/formats/fsmgr.cpp",
+ MAME_DIR .. "src/lib/formats/fsblk_vec.h",
+ MAME_DIR .. "src/lib/formats/fsblk_vec.cpp",
+ MAME_DIR .. "src/lib/formats/fs_unformatted.h",
+ MAME_DIR .. "src/lib/formats/fs_unformatted.cpp",
+ }
+
+--------------------------------------------------
+--
+--@src/lib/formats/2d_dsk.h,FORMATS["2D_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "2D_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/2d_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/2d_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/a26_cas.h,FORMATS["A26_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "A26_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/a26_cas.cpp",
+ MAME_DIR.. "src/lib/formats/a26_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/a5105_dsk.h,FORMATS["A5105_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "A5105_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/a5105_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/a5105_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/abc800_dsk.h,FORMATS["ABC800_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ABC800_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/abc800_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/abc800_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/abcfd2_dsk.h,FORMATS["ABCFD2_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ABCFD2_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/abcfd2_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/abcfd2_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ace_tap.h,FORMATS["ACE_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ACE_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/ace_tap.cpp",
+ MAME_DIR.. "src/lib/formats/ace_tap.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/acorn_dsk.h,FORMATS["ACORN_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ACORN_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/acorn_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/acorn_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/adam_cas.h,FORMATS["ADAM_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ADAM_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/adam_cas.cpp",
+ MAME_DIR.. "src/lib/formats/adam_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/adam_dsk.h,FORMATS["ADAM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ADAM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/adam_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/adam_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/afs_dsk.h,FORMATS["AFS_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AFS_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/afs_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/afs_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/agat840k_hle_dsk.h,FORMATS["AGAT840K_HLE_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AGAT840K_HLE_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/agat840k_hle_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/agat840k_hle_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/aim_dsk.h,FORMATS["AIM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AIM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/aim_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/aim_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ami_dsk.h,FORMATS["AMI_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AMI_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ami_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ami_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ap2_dsk.h,FORMATS["AP2_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AP2_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ap2_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ap2_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/apd_dsk.h,FORMATS["APD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "APD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/apd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/apd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/apf_apt.h,FORMATS["APF_APT"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "APF_APT") then
+ files {
+ MAME_DIR.. "src/lib/formats/apf_apt.cpp",
+ MAME_DIR.. "src/lib/formats/apf_apt.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/apollo_dsk.h,FORMATS["APOLLO_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "APOLLO_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/apollo_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/apollo_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/applix_dsk.h,FORMATS["APPLIX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "APPLIX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/applix_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/applix_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/apridisk.h,FORMATS["APRIDISK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "APRIDISK") then
+ files {
+ MAME_DIR.. "src/lib/formats/apridisk.cpp",
+ MAME_DIR.. "src/lib/formats/apridisk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ap_dsk35.h,FORMATS["AP_DSK35"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AP_DSK35") then
+ files {
+ MAME_DIR.. "src/lib/formats/ap_dsk35.cpp",
+ MAME_DIR.. "src/lib/formats/ap_dsk35.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/aquarius_caq.h,FORMATS["AQUARIUS_CAQ"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "AQUARIUS_CAQ") then
+ files {
+ MAME_DIR.. "src/lib/formats/aquarius_caq.cpp",
+ MAME_DIR.. "src/lib/formats/aquarius_caq.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/asst128_dsk.h,FORMATS["ASST128_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ASST128_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/asst128_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/asst128_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/atari_dsk.h,FORMATS["ATARI_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ATARI_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/atari_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/atari_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/atom_dsk.h,FORMATS["ATOM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ATOM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/atom_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/atom_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/atom_tap.h,FORMATS["ATOM_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ATOM_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/atom_tap.cpp",
+ MAME_DIR.. "src/lib/formats/atom_tap.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/basicdsk.h,FORMATS["BASICDSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "BASICDSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/basicdsk.cpp",
+ MAME_DIR.. "src/lib/formats/basicdsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/bw12_dsk.h,FORMATS["BW12_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "BW12_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/bw12_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/bw12_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/bw2_dsk.h,FORMATS["BW2_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "BW2_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/bw2_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/bw2_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/c3040_dsk.h,FORMATS["C3040_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "C3040_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/c3040_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/c3040_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/c4040_dsk.h,FORMATS["C4040_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "C4040_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/c4040_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/c4040_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/c8280_dsk.h,FORMATS["C8280_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "C8280_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/c8280_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/c8280_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/camplynx_cas.h,FORMATS["CAMPLYNX_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CAMPLYNX_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/camplynx_cas.cpp",
+ MAME_DIR.. "src/lib/formats/camplynx_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/camplynx_dsk.h,FORMATS["CAMPLYNX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CAMPLYNX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/camplynx_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/camplynx_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/cbm_crt.h,FORMATS["CBM_CRT"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CBM_CRT") then
+ files {
+ MAME_DIR.. "src/lib/formats/cbm_crt.cpp",
+ MAME_DIR.. "src/lib/formats/cbm_crt.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/cbm_tap.h,FORMATS["CBM_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CBM_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/cbm_tap.cpp",
+ MAME_DIR.. "src/lib/formats/cbm_tap.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ccvf_dsk.h,FORMATS["CCVF_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CCVF_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ccvf_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ccvf_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/cd90_640_dsk.h,FORMATS["CD90_640_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CD90_640_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/cd90_640_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/cd90_640_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/cgenie_dsk.h,FORMATS["CGENIE_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CGENIE_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/cgenie_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/cgenie_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/cgen_cas.h,FORMATS["CGEN_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CGEN_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/cgen_cas.cpp",
+ MAME_DIR.. "src/lib/formats/cgen_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/coco_cas.h,FORMATS["COCO_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "COCO_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/coco_cas.cpp",
+ MAME_DIR.. "src/lib/formats/coco_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/comx35_dsk.h,FORMATS["COMX35_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "COMX35_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/comx35_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/comx35_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/concept_dsk.h,FORMATS["CONCEPT_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CONCEPT_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/concept_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/concept_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/coupedsk.h,FORMATS["COUPEDSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "COUPEDSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/coupedsk.cpp",
+ MAME_DIR.. "src/lib/formats/coupedsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/cpis_dsk.h,FORMATS["CPIS_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CPIS_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/cpis_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/cpis_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/csw_cas.h,FORMATS["CSW_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "CSW_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/csw_cas.cpp",
+ MAME_DIR.. "src/lib/formats/csw_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/d64_dsk.h,FORMATS["D64_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "D64_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/d64_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/d64_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/d71_dsk.h,FORMATS["D71_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "D71_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/d71_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/d71_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/d80_dsk.h,FORMATS["D80_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "D80_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/d80_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/d80_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/d81_dsk.h,FORMATS["D81_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "D81_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/d81_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/d81_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/d82_dsk.h,FORMATS["D82_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "D82_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/d82_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/d82_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/dcp_dsk.h,FORMATS["DCP_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DCP_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/dcp_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/dcp_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/dim_dsk.h,FORMATS["DIM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DIM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/dim_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/dim_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/dip_dsk.h,FORMATS["DIP_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DIP_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/dip_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/dip_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/dmk_dsk.h,FORMATS["DMK_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DMK_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/dmk_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/dmk_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ds9_dsk.h,FORMATS["DS9_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DS9_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ds9_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ds9_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sdf_dsk.h,FORMATS["SDF_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SDF_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/sdf_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/sdf_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ep64_dsk.h,FORMATS["EP64_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "EP64_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ep64_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ep64_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/dmv_dsk.h,FORMATS["DMV_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DMV_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/dmv_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/dmv_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/dvk_mx_dsk.h,FORMATS["DVK_MX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "DVK_MX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/dvk_mx_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/dvk_mx_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/esq16_dsk.h,FORMATS["ESQ16_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ESQ16_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/esq16_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/esq16_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/esq8_dsk.h,FORMATS["ESQ8_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ESQ8_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/esq8_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/esq8_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/excali64_dsk.h,FORMATS["EXCALI64_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "EXCALI64_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/excali64_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/excali64_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fc100_cas.h,FORMATS["FC100_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FC100_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/fc100_cas.cpp",
+ MAME_DIR.. "src/lib/formats/fc100_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fdd_dsk.h,FORMATS["FDD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FDD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/fdd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/fdd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fl1_dsk.h,FORMATS["FL1_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FL1_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/fl1_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/fl1_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/flex_dsk.h,FORMATS["FLEX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FLEX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/flex_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/flex_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/uniflex_dsk.h,FORMATS["UNIFLEX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "UNIFLEX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/uniflex_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/uniflex_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fm7_cas.h,FORMATS["FM7_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FM7_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/fm7_cas.cpp",
+ MAME_DIR.. "src/lib/formats/fm7_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fmsx_cas.h,FORMATS["FMSX_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FMSX_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/fmsx_cas.cpp",
+ MAME_DIR.. "src/lib/formats/fmsx_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fmtowns_dsk.h,FORMATS["FMTOWNS_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FMTOWNS_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/fmtowns_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/fmtowns_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fsd_dsk.h,FORMATS["FSD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FSD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/fsd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/fsd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/g64_dsk.h,FORMATS["G64_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "G64_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/g64_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/g64_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/gtp_cas.h,FORMATS["GTP_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "GTP_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/gtp_cas.cpp",
+ MAME_DIR.. "src/lib/formats/gtp_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/guab_dsk.h,FORMATS["GUAB_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "GUAB_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/guab_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/guab_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/h8_cas.h,FORMATS["H8_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "H8_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/h8_cas.cpp",
+ MAME_DIR.. "src/lib/formats/h8_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/hector_minidisc.h,FORMATS["HECTOR_MINIDISC"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "HECTOR_MINIDISC") then
+ files {
+ MAME_DIR.. "src/lib/formats/hector_minidisc.cpp",
+ MAME_DIR.. "src/lib/formats/hector_minidisc.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/hect_dsk.h,FORMATS["HECT_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "HECT_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/hect_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/hect_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/hect_tap.h,FORMATS["HECT_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "HECT_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/hect_tap.cpp",
+ MAME_DIR.. "src/lib/formats/hect_tap.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/hti_tape.h,FORMATS["HTI_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "HTI_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/hti_tape.cpp",
+ MAME_DIR.. "src/lib/formats/hti_tape.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/hpi_dsk.h,FORMATS["HPI_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "HPI_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/hpi_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/hpi_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/hp_ipc_dsk.h,FORMATS["HP_IPC_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "HP_IPC_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/hp_ipc_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/hp_ipc_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/img_dsk.h,FORMATS["IMG_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "IMG_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/img_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/img_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/iq151_dsk.h,FORMATS["IQ151_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "IQ151_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/iq151_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/iq151_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/itt3030_dsk.h,FORMATS["ITT3030_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ITT3030_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/itt3030_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/itt3030_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/juku_dsk.h,FORMATS["JUKU_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "JUKU_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/juku_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/juku_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/jvc_dsk.h,FORMATS["JVC_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "JVC_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/jvc_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/jvc_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/os9_dsk.h,FORMATS["OS9_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "OS9_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/os9_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/os9_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/jfd_dsk.h,FORMATS["JFD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "JFD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/jfd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/jfd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/kaypro_dsk.h,FORMATS["KAYPRO_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "KAYPRO_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/kaypro_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/kaypro_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/kc85_dsk.h,FORMATS["KC85_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "KC85_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/kc85_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/kc85_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/kc_cas.h,FORMATS["KC_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "KC_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/kc_cas.cpp",
+ MAME_DIR.. "src/lib/formats/kc_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/kim1_cas.h,FORMATS["KIM1_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "KIM1_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/kim1_cas.cpp",
+ MAME_DIR.. "src/lib/formats/kim1_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/lviv_lvt.h,FORMATS["LVIV_LVT"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "LVIV_LVT") then
+ files {
+ MAME_DIR.. "src/lib/formats/lviv_lvt.cpp",
+ MAME_DIR.. "src/lib/formats/lviv_lvt.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/m20_dsk.h,FORMATS["M20_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "M20_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/m20_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/m20_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/m5_dsk.h,FORMATS["M5_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "M5_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/m5_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/m5_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/mbee_cas.h,FORMATS["MBEE_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MBEE_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/mbee_cas.cpp",
+ MAME_DIR.. "src/lib/formats/mbee_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/mdos_dsk.h,FORMATS["MDOS_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MDOS_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/mdos_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/mdos_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/mfm_hd.h,FORMATS["MFM_HD"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MFM_HD") then
+ files {
+ MAME_DIR.. "src/lib/formats/mfm_hd.cpp",
+ MAME_DIR.. "src/lib/formats/mfm_hd.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/mm_dsk.h,FORMATS["MM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/mm_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/mm_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ms0515_dsk.h,FORMATS["MS0515_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MS0515_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ms0515_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ms0515_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/msx_dsk.h,FORMATS["MSX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MSX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/msx_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/msx_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/mtx_dsk.h,FORMATS["MTX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MTX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/mtx_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/mtx_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/mz_cas.h,FORMATS["MZ_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "MZ_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/mz_cas.cpp",
+ MAME_DIR.. "src/lib/formats/mz_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/nanos_dsk.h,FORMATS["NANOS_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "NANOS_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/nanos_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/nanos_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/nascom_dsk.h,FORMATS["NASCOM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "NASCOM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/nascom_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/nascom_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/naslite_dsk.h,FORMATS["NASLITE_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "NASLITE_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/naslite_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/naslite_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/nes_dsk.h,FORMATS["NES_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "NES_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/nes_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/nes_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/nfd_dsk.h,FORMATS["NFD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "NFD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/nfd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/nfd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/opd_dsk.h,FORMATS["OPD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "OPD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/opd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/opd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/orao_cas.h,FORMATS["ORAO_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ORAO_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/orao_cas.cpp",
+ MAME_DIR.. "src/lib/formats/orao_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/oric_dsk.h,FORMATS["ORIC_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ORIC_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/oric_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/oric_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/oric_tap.h,FORMATS["ORIC_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ORIC_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/oric_tap.cpp",
+ MAME_DIR.. "src/lib/formats/oric_tap.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ibmxdf_dsk.h,FORMATS["IBMXDF_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "IBMXDF_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ibmxdf_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ibmxdf_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/p2000t_cas.h,FORMATS["P2000T_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "P2000T_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/p2000t_cas.cpp",
+ MAME_DIR.. "src/lib/formats/p2000t_cas.h",
+ }
+end
+
+
+--------------------------------------------------
+--
+--@src/lib/formats/p6001_cas.h,FORMATS["P6001_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "P6001_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/p6001_cas.cpp",
+ MAME_DIR.. "src/lib/formats/p6001_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/pasti_dsk.h,FORMATS["PASTI_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PASTI_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/pasti_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/pasti_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/pc98fdi_dsk.h,FORMATS["PC98FDI_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PC98FDI_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/pc98fdi_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/pc98fdi_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/pc98_dsk.h,FORMATS["PC98_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PC98_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/pc98_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/pc98_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/phc25_cas.h,FORMATS["PHC25_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PHC25_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/phc25_cas.cpp",
+ MAME_DIR.. "src/lib/formats/phc25_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/pk8020_dsk.h,FORMATS["PK8020_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PK8020_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/pk8020_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/pk8020_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/pmd_cas.h,FORMATS["PMD_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PMD_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/pmd_cas.cpp",
+ MAME_DIR.. "src/lib/formats/pmd_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/poly_dsk.h,FORMATS["POLY_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "POLY_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/poly_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/poly_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ppg_dsk.h,FORMATS["PPG_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PPG_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ppg_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ppg_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/primoptp.h,FORMATS["PRIMOPTP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PRIMOPTP") then
+ files {
+ MAME_DIR.. "src/lib/formats/primoptp.cpp",
+ MAME_DIR.. "src/lib/formats/primoptp.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/pyldin_dsk.h,FORMATS["PYLDIN_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "PYLDIN_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/pyldin_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/pyldin_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ql_dsk.h,FORMATS["QL_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "QL_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ql_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ql_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/rc759_dsk.h,FORMATS["RC759_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "RC759_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/rc759_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/rc759_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/rk_cas.h,FORMATS["RK_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "RK_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/rk_cas.cpp",
+ MAME_DIR.. "src/lib/formats/rk_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/rx50_dsk.h,FORMATS["RX50_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "RX50_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/rx50_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/rx50_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sc3000_bit.h,FORMATS["SC3000_BIT"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SC3000_BIT") then
+ files {
+ MAME_DIR.. "src/lib/formats/sc3000_bit.cpp",
+ MAME_DIR.. "src/lib/formats/sc3000_bit.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sdd_dsk.h,FORMATS["SDD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SDD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/sdd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/sdd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sf7000_dsk.h,FORMATS["SF7000_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SF7000_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/sf7000_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/sf7000_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/smx_dsk.h,FORMATS["SMX_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SMX_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/smx_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/smx_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sol_cas.h,FORMATS["SOL_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SOL_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/sol_cas.cpp",
+ MAME_DIR.. "src/lib/formats/sol_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sorc_cas.h,FORMATS["SORC_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SORC_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/sorc_cas.cpp",
+ MAME_DIR.. "src/lib/formats/sorc_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sorc_dsk.h,FORMATS["SORC_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SORC_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/sorc_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/sorc_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/sord_cas.h,FORMATS["SORD_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SORD_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/sord_cas.cpp",
+ MAME_DIR.. "src/lib/formats/sord_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/spc1000_cas.h,FORMATS["SPC1000_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SPC1000_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/spc1000_cas.cpp",
+ MAME_DIR.. "src/lib/formats/spc1000_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/st_dsk.h,FORMATS["ST_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ST_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/st_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/st_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/svi_cas.h,FORMATS["SVI_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SVI_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/svi_cas.cpp",
+ MAME_DIR.. "src/lib/formats/svi_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/svi_dsk.h,FORMATS["SVI_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SVI_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/svi_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/svi_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/swd_dsk.h,FORMATS["SWD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "SWD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/swd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/swd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/tandy2k_dsk.h,FORMATS["TANDY2K_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TANDY2K_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/tandy2k_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/tandy2k_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/thom_cas.h,FORMATS["THOM_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "THOM_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/thom_cas.cpp",
+ MAME_DIR.. "src/lib/formats/thom_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/thom_dsk.h,FORMATS["THOM_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "THOM_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/thom_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/thom_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/ti99_dsk.h,FORMATS["TI99_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TI99_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/ti99_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/ti99_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/tiki100_dsk.h,FORMATS["TIKI100_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TIKI100_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/tiki100_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/tiki100_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/trd_dsk.h,FORMATS["TRD_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TRD_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/trd_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/trd_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/trs80_dsk.h,FORMATS["TRS80_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TRS80_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/trs80_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/trs80_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/trs_cas.h,FORMATS["TRS_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TRS_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/trs_cas.cpp",
+ MAME_DIR.. "src/lib/formats/trs_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/tvc_cas.h,FORMATS["TVC_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TVC_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/tvc_cas.cpp",
+ MAME_DIR.. "src/lib/formats/tvc_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/tvc_dsk.h,FORMATS["TVC_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TVC_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/tvc_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/tvc_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/tzx_cas.h,FORMATS["TZX_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "TZX_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/tzx_cas.cpp",
+ MAME_DIR.. "src/lib/formats/tzx_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/uef_cas.h,FORMATS["UEF_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "UEF_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/uef_cas.cpp",
+ MAME_DIR.. "src/lib/formats/uef_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/vdk_dsk.h,FORMATS["VDK_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "VDK_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/vdk_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/vdk_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/vector06_dsk.h,FORMATS["VECTOR06_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "VECTOR06_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/vector06_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/vector06_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/vg5k_cas.h,FORMATS["VG5K_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "VG5K_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/vg5k_cas.cpp",
+ MAME_DIR.. "src/lib/formats/vg5k_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/victor9k_dsk.h,FORMATS["VICTOR9K_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "VICTOR9K_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/victor9k_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/victor9k_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/vt_cas.h,FORMATS["VT_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "VT_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/vt_cas.cpp",
+ MAME_DIR.. "src/lib/formats/vt_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/vt_dsk.h,FORMATS["VT_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "VT_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/vt_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/vt_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fs_vtech.h,FORMATS["FS_VTECH"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FS_VTECH") then
+ files {
+ MAME_DIR.. "src/lib/formats/fs_vtech.cpp",
+ MAME_DIR.. "src/lib/formats/fs_vtech.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/wd177x_dsk.h,FORMATS["WD177X_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "WD177X_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/wd177x_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/wd177x_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/x07_cas.h,FORMATS["X07_CAS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "X07_CAS") then
+ files {
+ MAME_DIR.. "src/lib/formats/x07_cas.cpp",
+ MAME_DIR.. "src/lib/formats/x07_cas.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/x1_tap.h,FORMATS["X1_TAP"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "X1_TAP") then
+ files {
+ MAME_DIR.. "src/lib/formats/x1_tap.cpp",
+ MAME_DIR.. "src/lib/formats/x1_tap.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/xdf_dsk.h,FORMATS["XDF_DSK"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "XDF_DSK") then
+ files {
+ MAME_DIR.. "src/lib/formats/xdf_dsk.cpp",
+ MAME_DIR.. "src/lib/formats/xdf_dsk.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/zx81_p.h,FORMATS["ZX81_P"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "ZX81_P") then
+ files {
+ MAME_DIR.. "src/lib/formats/zx81_p.cpp",
+ MAME_DIR.. "src/lib/formats/zx81_p.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fs_prodos.h,FORMATS["FS_PRODOS"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FS_PRODOS") then
+ files {
+ MAME_DIR.. "src/lib/formats/fs_prodos.cpp",
+ MAME_DIR.. "src/lib/formats/fs_prodos.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/lib/formats/fs_oric_jasmin.h,FORMATS["FS_ORIC_JASMIN"] = true
+--------------------------------------------------
+
+if opt_tool(FORMATS, "FS_ORIC_JASMIN") then
+ files {
+ MAME_DIR.. "src/lib/formats/fs_oric_jasmin.cpp",
+ MAME_DIR.. "src/lib/formats/fs_oric_jasmin.h",
+ }
+end
+
+end
diff --git a/docs/release/scripts/src/lib.lua b/docs/release/scripts/src/lib.lua
new file mode 100644
index 00000000000..6b1bd29e3ea
--- /dev/null
+++ b/docs/release/scripts/src/lib.lua
@@ -0,0 +1,137 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- lib.lua
+--
+-- Rules for building lib cores
+--
+---------------------------------------------------------------------------
+
+project "utils"
+ uuid "22489ad0-4cb2-4d91-ad81-24b0d80ca30a"
+ kind (LIBTYPE)
+
+ addprojectflags()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ ext_includedir("expat"),
+ ext_includedir("zlib"),
+ ext_includedir("flac"),
+ ext_includedir("utf8proc"),
+ }
+
+if not _OPTIONS["with-system-utf8proc"] then
+ defines {
+ "UTF8PROC_STATIC",
+ }
+end
+
+ files {
+ MAME_DIR .. "src/lib/util/abi.h",
+ MAME_DIR .. "src/lib/util/avhuff.cpp",
+ MAME_DIR .. "src/lib/util/avhuff.h",
+ MAME_DIR .. "src/lib/util/aviio.cpp",
+ MAME_DIR .. "src/lib/util/aviio.h",
+ MAME_DIR .. "src/lib/util/base64.hpp",
+ MAME_DIR .. "src/lib/util/bitmap.cpp",
+ MAME_DIR .. "src/lib/util/bitmap.h",
+ MAME_DIR .. "src/lib/util/bitstream.h",
+ MAME_DIR .. "src/lib/util/cdrom.cpp",
+ MAME_DIR .. "src/lib/util/cdrom.h",
+ MAME_DIR .. "src/lib/util/chd.cpp",
+ MAME_DIR .. "src/lib/util/chd.h",
+ MAME_DIR .. "src/lib/util/chdcd.cpp",
+ MAME_DIR .. "src/lib/util/chdcd.h",
+ MAME_DIR .. "src/lib/util/chdcodec.cpp",
+ MAME_DIR .. "src/lib/util/chdcodec.h",
+ MAME_DIR .. "src/lib/util/client_http.hpp",
+ MAME_DIR .. "src/lib/util/client_https.hpp",
+ MAME_DIR .. "src/lib/util/client_ws.hpp",
+ MAME_DIR .. "src/lib/util/client_wss.hpp",
+ MAME_DIR .. "src/lib/util/corealloc.cpp",
+ MAME_DIR .. "src/lib/util/corealloc.h",
+ MAME_DIR .. "src/lib/util/corefile.cpp",
+ MAME_DIR .. "src/lib/util/corefile.h",
+ MAME_DIR .. "src/lib/util/corestr.cpp",
+ MAME_DIR .. "src/lib/util/corestr.h",
+ MAME_DIR .. "src/lib/util/coretmpl.h",
+ MAME_DIR .. "src/lib/util/coreutil.cpp",
+ MAME_DIR .. "src/lib/util/coreutil.h",
+ MAME_DIR .. "src/lib/util/crypto.hpp",
+ MAME_DIR .. "src/lib/util/delegate.cpp",
+ MAME_DIR .. "src/lib/util/delegate.h",
+ MAME_DIR .. "src/lib/util/disasmintf.cpp",
+ MAME_DIR .. "src/lib/util/disasmintf.h",
+ MAME_DIR .. "src/lib/util/dynamicclass.cpp",
+ MAME_DIR .. "src/lib/util/dynamicclass.h",
+ MAME_DIR .. "src/lib/util/dynamicclass.ipp",
+ MAME_DIR .. "src/lib/util/endianness.h",
+ MAME_DIR .. "src/lib/util/flac.cpp",
+ MAME_DIR .. "src/lib/util/flac.h",
+ MAME_DIR .. "src/lib/util/harddisk.cpp",
+ MAME_DIR .. "src/lib/util/harddisk.h",
+ MAME_DIR .. "src/lib/util/hash.cpp",
+ MAME_DIR .. "src/lib/util/hash.h",
+ MAME_DIR .. "src/lib/util/hashing.cpp",
+ MAME_DIR .. "src/lib/util/hashing.h",
+ MAME_DIR .. "src/lib/util/huffman.cpp",
+ MAME_DIR .. "src/lib/util/huffman.h",
+ MAME_DIR .. "src/lib/util/ioprocs.cpp",
+ MAME_DIR .. "src/lib/util/ioprocs.h",
+ MAME_DIR .. "src/lib/util/ioprocsfill.h",
+ MAME_DIR .. "src/lib/util/ioprocsfilter.cpp",
+ MAME_DIR .. "src/lib/util/ioprocsfilter.h",
+ MAME_DIR .. "src/lib/util/ioprocsvec.h",
+ MAME_DIR .. "src/lib/util/jedparse.cpp",
+ MAME_DIR .. "src/lib/util/jedparse.h",
+ MAME_DIR .. "src/lib/util/lrucache.h",
+ MAME_DIR .. "src/lib/util/md5.cpp",
+ MAME_DIR .. "src/lib/util/md5.h",
+ MAME_DIR .. "src/lib/util/msdib.cpp",
+ MAME_DIR .. "src/lib/util/msdib.h",
+ MAME_DIR .. "src/lib/util/nanosvg.cpp",
+ MAME_DIR .. "src/lib/util/nanosvg.h",
+ MAME_DIR .. "src/lib/util/opresolv.cpp",
+ MAME_DIR .. "src/lib/util/opresolv.h",
+ MAME_DIR .. "src/lib/util/options.cpp",
+ MAME_DIR .. "src/lib/util/options.h",
+ MAME_DIR .. "src/lib/util/palette.cpp",
+ MAME_DIR .. "src/lib/util/palette.h",
+ MAME_DIR .. "src/lib/util/path.cpp",
+ MAME_DIR .. "src/lib/util/path.h",
+ MAME_DIR .. "src/lib/util/path_to_regex.cpp",
+ MAME_DIR .. "src/lib/util/path_to_regex.hpp",
+ MAME_DIR .. "src/lib/util/plaparse.cpp",
+ MAME_DIR .. "src/lib/util/plaparse.h",
+ MAME_DIR .. "src/lib/util/png.cpp",
+ MAME_DIR .. "src/lib/util/png.h",
+ MAME_DIR .. "src/lib/util/server_http.hpp",
+ MAME_DIR .. "src/lib/util/server_https.hpp",
+ MAME_DIR .. "src/lib/util/server_ws.hpp",
+ MAME_DIR .. "src/lib/util/server_wss.hpp",
+ MAME_DIR .. "src/lib/util/strformat.cpp",
+ MAME_DIR .. "src/lib/util/strformat.h",
+ MAME_DIR .. "src/lib/util/timeconv.cpp",
+ MAME_DIR .. "src/lib/util/timeconv.h",
+ MAME_DIR .. "src/lib/util/unicode.cpp",
+ MAME_DIR .. "src/lib/util/unicode.h",
+ MAME_DIR .. "src/lib/util/unzip.cpp",
+ MAME_DIR .. "src/lib/util/unzip.h",
+ MAME_DIR .. "src/lib/util/un7z.cpp",
+ MAME_DIR .. "src/lib/util/utilfwd.h",
+ MAME_DIR .. "src/lib/util/vbiparse.cpp",
+ MAME_DIR .. "src/lib/util/vbiparse.h",
+ MAME_DIR .. "src/lib/util/vecstream.cpp",
+ MAME_DIR .. "src/lib/util/vecstream.h",
+ MAME_DIR .. "src/lib/util/wavwrite.cpp",
+ MAME_DIR .. "src/lib/util/wavwrite.h",
+ MAME_DIR .. "src/lib/util/xmlfile.cpp",
+ MAME_DIR .. "src/lib/util/xmlfile.h",
+ MAME_DIR .. "src/lib/util/zippath.cpp",
+ MAME_DIR .. "src/lib/util/zippath.h",
+ }
diff --git a/docs/release/scripts/src/machine.lua b/docs/release/scripts/src/machine.lua
new file mode 100644
index 00000000000..1dd90ed1a59
--- /dev/null
+++ b/docs/release/scripts/src/machine.lua
@@ -0,0 +1,4822 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- machine.lua
+--
+-- Rules for building machine cores
+--
+----------------------------------------------------------------------------
+
+files {
+ MAME_DIR .. "src/devices/machine/bcreader.cpp",
+ MAME_DIR .. "src/devices/machine/bcreader.h",
+-- MAME_DIR .. "src/devices/machine/buffer.cpp",
+-- MAME_DIR .. "src/devices/machine/buffer.h",
+ MAME_DIR .. "src/devices/machine/clock.cpp",
+ MAME_DIR .. "src/devices/machine/clock.h",
+ MAME_DIR .. "src/devices/machine/keyboard.cpp",
+ MAME_DIR .. "src/devices/machine/keyboard.h",
+ MAME_DIR .. "src/devices/machine/keyboard.ipp",
+ MAME_DIR .. "src/devices/machine/laserdsc.cpp",
+ MAME_DIR .. "src/devices/machine/laserdsc.h",
+ MAME_DIR .. "src/devices/machine/nvram.cpp",
+ MAME_DIR .. "src/devices/machine/nvram.h",
+ MAME_DIR .. "src/devices/machine/ram.cpp",
+ MAME_DIR .. "src/devices/machine/ram.h",
+ MAME_DIR .. "src/devices/machine/legscsi.cpp",
+ MAME_DIR .. "src/devices/machine/legscsi.h",
+-- MAME_DIR .. "src/devices/machine/sdlc.cpp",
+-- MAME_DIR .. "src/devices/machine/sdlc.h",
+ MAME_DIR .. "src/devices/machine/terminal.cpp",
+ MAME_DIR .. "src/devices/machine/terminal.h",
+ MAME_DIR .. "src/devices/machine/timer.cpp",
+ MAME_DIR .. "src/devices/machine/timer.h",
+}
+files {
+-- MAME_DIR .. "src/devices/imagedev/bitbngr.cpp",
+-- MAME_DIR .. "src/devices/imagedev/bitbngr.h",
+ MAME_DIR .. "src/devices/imagedev/cassette.cpp",
+ MAME_DIR .. "src/devices/imagedev/cassette.h",
+ MAME_DIR .. "src/devices/imagedev/chd_cd.cpp",
+ MAME_DIR .. "src/devices/imagedev/chd_cd.h",
+-- MAME_DIR .. "src/devices/imagedev/diablo.cpp",
+-- MAME_DIR .. "src/devices/imagedev/diablo.h",
+ MAME_DIR .. "src/devices/imagedev/flopdrv.cpp",
+ MAME_DIR .. "src/devices/imagedev/flopdrv.h",
+ MAME_DIR .. "src/devices/imagedev/floppy.cpp",
+ MAME_DIR .. "src/devices/imagedev/floppy.h",
+ MAME_DIR .. "src/devices/imagedev/harddriv.cpp",
+ MAME_DIR .. "src/devices/imagedev/harddriv.h",
+-- MAME_DIR .. "src/devices/imagedev/mfmhd.cpp",
+-- MAME_DIR .. "src/devices/imagedev/mfmhd.h",
+-- MAME_DIR .. "src/devices/imagedev/microdrv.cpp",
+-- MAME_DIR .. "src/devices/imagedev/microdrv.h",
+-- MAME_DIR .. "src/devices/imagedev/midiin.cpp",
+-- MAME_DIR .. "src/devices/imagedev/midiin.h",
+-- MAME_DIR .. "src/devices/imagedev/midiout.cpp",
+-- MAME_DIR .. "src/devices/imagedev/midiout.h",
+-- MAME_DIR .. "src/devices/imagedev/picture.cpp",
+-- MAME_DIR .. "src/devices/imagedev/picture.h",
+-- MAME_DIR .. "src/devices/imagedev/printer.cpp",
+-- MAME_DIR .. "src/devices/imagedev/printer.h",
+-- MAME_DIR .. "src/devices/imagedev/snapquik.cpp",
+-- MAME_DIR .. "src/devices/imagedev/snapquik.h",
+-- MAME_DIR .. "src/devices/imagedev/wafadrive.cpp",
+-- MAME_DIR .. "src/devices/imagedev/wafadrive.h",
+-- MAME_DIR .. "src/devices/imagedev/avivideo.cpp",
+-- MAME_DIR .. "src/devices/imagedev/avivideo.h",
+}
+
+
+--------------------------------------------------
+--
+--@src/devices/machine/acorn_ioc.h,MACHINES["ACORN_IOC"] = true
+--------------------------------------------------
+
+if (MACHINES["ACORN_IOC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/acorn_ioc.cpp",
+ MAME_DIR .. "src/devices/machine/acorn_ioc.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/machine/acorn_memc.h,MACHINES["ACORN_MEMC"] = true
+--------------------------------------------------
+
+if (MACHINES["ACORN_MEMC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/acorn_memc.cpp",
+ MAME_DIR .. "src/devices/machine/acorn_memc.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/machine/acorn_vidc.h,MACHINES["ACORN_VIDC"] = true
+--------------------------------------------------
+
+if (MACHINES["ACORN_VIDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/acorn_vidc.cpp",
+ MAME_DIR .. "src/devices/machine/acorn_vidc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/akiko.h,MACHINES["AKIKO"] = true
+---------------------------------------------------
+
+if (MACHINES["AKIKO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/akiko.cpp",
+ MAME_DIR .. "src/devices/machine/akiko.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am2901b.h,MACHINES["AM2901B"] = true
+---------------------------------------------------
+
+if (MACHINES["AM2901B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am2901b.cpp",
+ MAME_DIR .. "src/devices/machine/am2901b.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/machine/arm_iomd.h,MACHINES["ARM_IOMD"] = true
+--------------------------------------------------
+
+if (MACHINES["ARM_IOMD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/arm_iomd.cpp",
+ MAME_DIR .. "src/devices/machine/arm_iomd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/autoconfig.h,MACHINES["AUTOCONFIG"] = true
+---------------------------------------------------
+
+if (MACHINES["AUTOCONFIG"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/autoconfig.cpp",
+ MAME_DIR .. "src/devices/machine/autoconfig.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/cop452.h,MACHINES["COP452"] = true
+---------------------------------------------------
+
+if (MACHINES["COP452"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cop452.cpp",
+ MAME_DIR .. "src/devices/machine/cop452.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/cr511b.h,MACHINES["CR511B"] = true
+---------------------------------------------------
+
+if (MACHINES["CR511B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cr511b.cpp",
+ MAME_DIR .. "src/devices/machine/cr511b.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/dmac.h,MACHINES["DMAC"] = true
+---------------------------------------------------
+
+if (MACHINES["DMAC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/dmac.cpp",
+ MAME_DIR .. "src/devices/machine/dmac.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/gayle.h,MACHINES["GAYLE"] = true
+---------------------------------------------------
+
+if (MACHINES["GAYLE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/gayle.cpp",
+ MAME_DIR .. "src/devices/machine/gayle.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/40105.h,MACHINES["CMOS40105"] = true
+---------------------------------------------------
+
+if (MACHINES["CMOS40105"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/40105.cpp",
+ MAME_DIR .. "src/devices/machine/40105.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/53c7xx.h,MACHINES["NCR53C7XX"] = true
+---------------------------------------------------
+
+if (MACHINES["NCR53C7XX"]~=null) then
+ MACHINES["NSCSI"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/53c7xx.cpp",
+ MAME_DIR .. "src/devices/machine/53c7xx.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ncr5385.h,MACHINES["NCR5385"] = true
+---------------------------------------------------
+
+if (MACHINES["NCR5385"]~=null) then
+ MACHINES["NSCSI"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/ncr5385.cpp",
+ MAME_DIR .. "src/devices/machine/ncr5385.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/53c810.h,MACHINES["LSI53C810"] = true
+---------------------------------------------------
+
+if (MACHINES["LSI53C810"]~=null) then
+ MACHINES["SCSI"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/53c810.cpp",
+ MAME_DIR .. "src/devices/machine/53c810.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/2812fifo.h,MACHINES["2812FIFO"] = true
+---------------------------------------------------
+
+if (MACHINES["2812FIFO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/2812fifo.cpp",
+ MAME_DIR .. "src/devices/machine/2812fifo.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/6522via.h,MACHINES["6522VIA"] = true
+---------------------------------------------------
+
+if (MACHINES["6522VIA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/6522via.cpp",
+ MAME_DIR .. "src/devices/machine/6522via.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/6525tpi.h,MACHINES["TPI6525"] = true
+---------------------------------------------------
+
+if (MACHINES["TPI6525"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/6525tpi.cpp",
+ MAME_DIR .. "src/devices/machine/6525tpi.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/6532riot.h,MACHINES["RIOT6532"] = true
+---------------------------------------------------
+
+if (MACHINES["RIOT6532"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/6532riot.cpp",
+ MAME_DIR .. "src/devices/machine/6532riot.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/6821pia.h,MACHINES["6821PIA"] = true
+---------------------------------------------------
+
+if (MACHINES["6821PIA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/6821pia.cpp",
+ MAME_DIR .. "src/devices/machine/6821pia.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/6840ptm.h,MACHINES["6840PTM"] = true
+---------------------------------------------------
+
+if (MACHINES["6840PTM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/6840ptm.cpp",
+ MAME_DIR .. "src/devices/machine/6840ptm.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/6850acia.h,MACHINES["ACIA6850"] = true
+---------------------------------------------------
+
+if (MACHINES["ACIA6850"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/6850acia.cpp",
+ MAME_DIR .. "src/devices/machine/6850acia.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/68153bim.h,MACHINES["BIM68153"] = true
+---------------------------------------------------
+
+if (MACHINES["BIM68153"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/68153bim.cpp",
+ MAME_DIR .. "src/devices/machine/68153bim.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/68230pit.h,MACHINES["PIT68230"] = true
+---------------------------------------------------
+
+if (MACHINES["PIT68230"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/68230pit.cpp",
+ MAME_DIR .. "src/devices/machine/68230pit.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/68561mpcc.h,MACHINES["MPCC68561"] = true
+---------------------------------------------------
+
+if (MACHINES["MPCC68561"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/68561mpcc.cpp",
+ MAME_DIR .. "src/devices/machine/68561mpcc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc68681.h,MACHINES["68681"] = true
+---------------------------------------------------
+
+if (MACHINES["68681"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc68681.cpp",
+ MAME_DIR .. "src/devices/machine/mc68681.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/7200fifo.h,MACHINES["7200FIFO"] = true
+---------------------------------------------------
+
+if (MACHINES["7200FIFO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/7200fifo.cpp",
+ MAME_DIR .. "src/devices/machine/7200fifo.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/7400.h,MACHINES["TTL7400"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL7400"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/7400.cpp",
+ MAME_DIR .. "src/devices/machine/7400.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/7404.h,MACHINES["TTL7404"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL7404"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/7404.cpp",
+ MAME_DIR .. "src/devices/machine/7404.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74123.h,MACHINES["TTL74123"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74123"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74123.cpp",
+ MAME_DIR .. "src/devices/machine/74123.h",
+ MAME_DIR .. "src/devices/machine/rescap.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74145.h,MACHINES["TTL74145"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74145"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74145.cpp",
+ MAME_DIR .. "src/devices/machine/74145.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74148.h,MACHINES["TTL74148"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74148"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74148.cpp",
+ MAME_DIR .. "src/devices/machine/74148.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74153.h,MACHINES["TTL74153"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74153"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74153.cpp",
+ MAME_DIR .. "src/devices/machine/74153.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74157.h,MACHINES["TTL74157"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74157"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74157.cpp",
+ MAME_DIR .. "src/devices/machine/74157.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74161.h,MACHINES["TTL74161"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74161"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74161.cpp",
+ MAME_DIR .. "src/devices/machine/74161.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74165.h,MACHINES["TTL74165"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74165"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74165.cpp",
+ MAME_DIR .. "src/devices/machine/74165.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74166.h,MACHINES["TTL74166"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74166"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74166.cpp",
+ MAME_DIR .. "src/devices/machine/74166.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74175.h,MACHINES["TTL74175"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74175"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74175.cpp",
+ MAME_DIR .. "src/devices/machine/74175.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74181.h,MACHINES["TTL74181"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74181"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74181.cpp",
+ MAME_DIR .. "src/devices/machine/74181.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74259.h,MACHINES["TTL74259"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74259"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74259.cpp",
+ MAME_DIR .. "src/devices/machine/74259.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74381.h,MACHINES["TTL74381"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74381"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74381.cpp",
+ MAME_DIR .. "src/devices/machine/74381.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/74543.h,MACHINES["TTL74543"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL74543"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/74543.cpp",
+ MAME_DIR .. "src/devices/machine/74543.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/7474.h,MACHINES["TTL7474"] = true
+---------------------------------------------------
+
+if (MACHINES["TTL7474"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/7474.cpp",
+ MAME_DIR .. "src/devices/machine/7474.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/82s129.h,MACHINES["PROM82S129"] = true
+---------------------------------------------------
+
+if (MACHINES["PROM82S129"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/82s129.cpp",
+ MAME_DIR .. "src/devices/machine/82s129.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/8042kbdc.h,MACHINES["KBDC8042"] = true
+---------------------------------------------------
+
+if (MACHINES["KBDC8042"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/8042kbdc.cpp",
+ MAME_DIR .. "src/devices/machine/8042kbdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/8530scc.h,MACHINES["8530SCC"] = true
+---------------------------------------------------
+
+if (MACHINES["8530SCC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/8530scc.cpp",
+ MAME_DIR .. "src/devices/machine/8530scc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/adc0804.h,MACHINES["ADC0804"] = true
+---------------------------------------------------
+
+if (MACHINES["ADC0804"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/adc0804.cpp",
+ MAME_DIR .. "src/devices/machine/adc0804.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/adc0808.h,MACHINES["ADC0808"] = true
+---------------------------------------------------
+
+if (MACHINES["ADC0808"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/adc0808.cpp",
+ MAME_DIR .. "src/devices/machine/adc0808.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/adc083x.h,MACHINES["ADC083X"] = true
+---------------------------------------------------
+
+if (MACHINES["ADC083X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/adc083x.cpp",
+ MAME_DIR .. "src/devices/machine/adc083x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/adc1038.h,MACHINES["ADC1038"] = true
+---------------------------------------------------
+
+if (MACHINES["ADC1038"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/adc1038.cpp",
+ MAME_DIR .. "src/devices/machine/adc1038.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/adc1213x.h,MACHINES["ADC1213X"] = true
+---------------------------------------------------
+
+if (MACHINES["ADC1213X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/adc1213x.cpp",
+ MAME_DIR .. "src/devices/machine/adc1213x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/aicartc.h,MACHINES["AICARTC"] = true
+---------------------------------------------------
+
+if (MACHINES["AICARTC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/aicartc.cpp",
+ MAME_DIR .. "src/devices/machine/aicartc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am25s55x.h,MACHINES["AM25S55X"] = true
+---------------------------------------------------
+
+if (MACHINES["AM25S55X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am25s55x.cpp",
+ MAME_DIR .. "src/devices/machine/am25s55x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am2847.h,MACHINES["AM2847"] = true
+---------------------------------------------------
+
+if (MACHINES["AM2847"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am2847.cpp",
+ MAME_DIR .. "src/devices/machine/am2847.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am2910.h,MACHINES["AM2910"] = true
+---------------------------------------------------
+
+if (MACHINES["AM2910"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am2910.cpp",
+ MAME_DIR .. "src/devices/machine/am2910.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am53cf96.h,MACHINES["AM53CF96"] = true
+---------------------------------------------------
+
+if (MACHINES["AM53CF96"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am53cf96.cpp",
+ MAME_DIR .. "src/devices/machine/am53cf96.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am79c30.h,MACHINES["AM79C30"] = true
+---------------------------------------------------
+
+if (MACHINES["AM79C30"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am79c30.cpp",
+ MAME_DIR .. "src/devices/machine/am79c30.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am79c90.h,MACHINES["AM79C90"] = true
+---------------------------------------------------
+
+if (MACHINES["AM79C90"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am79c90.cpp",
+ MAME_DIR .. "src/devices/machine/am79c90.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am9513.h,MACHINES["AM9513"] = true
+---------------------------------------------------
+
+if (MACHINES["AM9513"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am9513.cpp",
+ MAME_DIR .. "src/devices/machine/am9513.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am9517a.h,MACHINES["AM9517A"] = true
+---------------------------------------------------
+
+if (MACHINES["AM9517A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am9517a.cpp",
+ MAME_DIR .. "src/devices/machine/am9517a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/am9519.h,MACHINES["AM9519"] = true
+---------------------------------------------------
+
+if (MACHINES["AM9519"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/am9519.cpp",
+ MAME_DIR .. "src/devices/machine/am9519.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/amigafdc.h,MACHINES["AMIGAFDC"] = true
+---------------------------------------------------
+
+if (MACHINES["AMIGAFDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/amigafdc.cpp",
+ MAME_DIR .. "src/devices/machine/amigafdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/applepic.h,MACHINES["APPLEPIC"] = true
+---------------------------------------------------
+
+if (MACHINES["APPLEPIC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/applepic.cpp",
+ MAME_DIR .. "src/devices/machine/applepic.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/at28c16.h,MACHINES["AT28C16"] = true
+---------------------------------------------------
+
+if (MACHINES["AT28C16"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/at28c16.cpp",
+ MAME_DIR .. "src/devices/machine/at28c16.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/at28c64b.h,MACHINES["AT28C64B"] = true
+---------------------------------------------------
+
+if (MACHINES["AT28C64B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/at28c64b.cpp",
+ MAME_DIR .. "src/devices/machine/at28c64b.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/at29x.h,MACHINES["AT29X"] = true
+---------------------------------------------------
+
+if (MACHINES["AT29X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/at29x.cpp",
+ MAME_DIR .. "src/devices/machine/at29x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/at45dbxx.h,MACHINES["AT45DBXX"] = true
+---------------------------------------------------
+
+if (MACHINES["AT45DBXX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/at45dbxx.cpp",
+ MAME_DIR .. "src/devices/machine/at45dbxx.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ataflash.h,MACHINES["ATAFLASH"] = true
+---------------------------------------------------
+
+if (MACHINES["ATAFLASH"]~=null) then
+ MACHINES["PCCARD"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/ataflash.cpp",
+ MAME_DIR .. "src/devices/machine/ataflash.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/atmel_arm_aic.h,MACHINES["ARM_AIC"] = true
+---------------------------------------------------
+
+if (MACHINES["ARM_AIC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/atmel_arm_aic.cpp",
+ MAME_DIR .. "src/devices/machine/atmel_arm_aic.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ay31015.h,MACHINES["AY31015"] = true
+---------------------------------------------------
+
+if (MACHINES["AY31015"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ay31015.cpp",
+ MAME_DIR .. "src/devices/machine/ay31015.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/bankdev.h,MACHINES["BANKDEV"] = true
+---------------------------------------------------
+
+if (MACHINES["BANKDEV"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/bankdev.cpp",
+ MAME_DIR .. "src/devices/machine/bankdev.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/bq4847.h,MACHINES["BQ4847"] = true
+---------------------------------------------------
+
+if (MACHINES["BQ4847"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/bq4847.cpp",
+ MAME_DIR .. "src/devices/machine/bq4847.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/bq48x2.h,MACHINES["BQ4852"] = true
+---------------------------------------------------
+
+if (MACHINES["BQ4852"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/bq48x2.cpp",
+ MAME_DIR .. "src/devices/machine/bq48x2.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/busmouse.h,MACHINES["BUSMOUSE"] = true
+---------------------------------------------------
+
+if (MACHINES["BUSMOUSE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/busmouse.cpp",
+ MAME_DIR .. "src/devices/machine/busmouse.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cdp1852.h,MACHINES["CDP1852"] = true
+---------------------------------------------------
+
+if (MACHINES["CDP1852"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cdp1852.cpp",
+ MAME_DIR .. "src/devices/machine/cdp1852.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cdp1871.h,MACHINES["CDP1871"] = true
+---------------------------------------------------
+
+if (MACHINES["CDP1871"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cdp1871.cpp",
+ MAME_DIR .. "src/devices/machine/cdp1871.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cdp1879.h,MACHINES["CDP1879"] = true
+---------------------------------------------------
+
+if (MACHINES["CDP1879"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cdp1879.cpp",
+ MAME_DIR .. "src/devices/machine/cdp1879.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ch376.h,MACHINES["CH376"] = true
+---------------------------------------------------
+
+if (MACHINES["CH376"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ch376.cpp",
+ MAME_DIR .. "src/devices/machine/ch376.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/chessmachine.h,MACHINES["CHESSMACHINE"] = true
+---------------------------------------------------
+
+if (MACHINES["CHESSMACHINE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/chessmachine.cpp",
+ MAME_DIR .. "src/devices/machine/chessmachine.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/com52c50.h,MACHINES["COM52C50"] = true
+---------------------------------------------------
+
+if (MACHINES["COM52C50"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/com52c50.cpp",
+ MAME_DIR .. "src/devices/machine/com52c50.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/com8116.h,MACHINES["COM8116"] = true
+---------------------------------------------------
+
+if (MACHINES["COM8116"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/com8116.cpp",
+ MAME_DIR .. "src/devices/machine/com8116.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cs4031.h,MACHINES["CS4031"] = true
+---------------------------------------------------
+
+if (MACHINES["CS4031"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cs4031.cpp",
+ MAME_DIR .. "src/devices/machine/cs4031.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cs8221.h,MACHINES["CS8221"] = true
+---------------------------------------------------
+
+if (MACHINES["CS8221"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cs8221.cpp",
+ MAME_DIR .. "src/devices/machine/cs8221.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cs8900a.h,MACHINES["CS8900A"] = true
+---------------------------------------------------
+
+if (MACHINES["CS8900A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cs8900a.cpp",
+ MAME_DIR .. "src/devices/machine/cs8900a.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/cxd1095.h,MACHINES["CXD1095"] = true
+---------------------------------------------------
+
+if (MACHINES["CXD1095"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/cxd1095.cpp",
+ MAME_DIR .. "src/devices/machine/cxd1095.h",
+ }
+end
+
+--@src/devices/machine/ds1204.h,MACHINES["DS1204"] = true
+---------------------------------------------------
+
+if (MACHINES["DS1204"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds1204.cpp",
+ MAME_DIR .. "src/devices/machine/ds1204.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds1205.h,MACHINES["DS1205"] = true
+---------------------------------------------------
+
+if (MACHINES["DS1205"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds1205.cpp",
+ MAME_DIR .. "src/devices/machine/ds1205.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds1302.h,MACHINES["DS1302"] = true
+---------------------------------------------------
+
+if (MACHINES["DS1302"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds1302.cpp",
+ MAME_DIR .. "src/devices/machine/ds1302.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds1315.h,MACHINES["DS1315"] = true
+---------------------------------------------------
+
+if (MACHINES["DS1315"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds1315.cpp",
+ MAME_DIR .. "src/devices/machine/ds1315.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds1386.h,MACHINES["DS1386"] = true
+---------------------------------------------------
+
+if (MACHINES["DS1386"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds1386.cpp",
+ MAME_DIR .. "src/devices/machine/ds1386.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds17x85.h,MACHINES["DS17X85"] = true
+---------------------------------------------------
+
+if (MACHINES["DS17X85"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds17x85.cpp",
+ MAME_DIR .. "src/devices/machine/ds17x85.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds1994.h,MACHINES["DS1994"] = true
+---------------------------------------------------
+
+if (MACHINES["DS1994"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds1994.cpp",
+ MAME_DIR .. "src/devices/machine/ds1994.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds2401.h,MACHINES["DS2401"] = true
+---------------------------------------------------
+
+if (MACHINES["DS2401"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds2401.cpp",
+ MAME_DIR .. "src/devices/machine/ds2401.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds2404.h,MACHINES["DS2404"] = true
+---------------------------------------------------
+
+if (MACHINES["DS2404"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds2404.cpp",
+ MAME_DIR .. "src/devices/machine/ds2404.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds6417.h,MACHINES["DS6417"] = true
+---------------------------------------------------
+
+if (MACHINES["DS6417"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds6417.cpp",
+ MAME_DIR .. "src/devices/machine/ds6417.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds75160a.h,MACHINES["DS75160A"] = true
+---------------------------------------------------
+
+if (MACHINES["DS75160A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds75160a.cpp",
+ MAME_DIR .. "src/devices/machine/ds75160a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds75161a.h,MACHINES["DS75161A"] = true
+---------------------------------------------------
+
+if (MACHINES["DS75161A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds75161a.cpp",
+ MAME_DIR .. "src/devices/machine/ds75161a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ds8874.h,MACHINES["DS8874"] = true
+---------------------------------------------------
+
+if (MACHINES["DS8874"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ds8874.cpp",
+ MAME_DIR .. "src/devices/machine/ds8874.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/e0516.h,MACHINES["E0516"] = true
+---------------------------------------------------
+
+if (MACHINES["E0516"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/e0516.cpp",
+ MAME_DIR .. "src/devices/machine/e0516.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/e05a03.h,MACHINES["E05A03"] = true
+---------------------------------------------------
+
+if (MACHINES["E05A03"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/e05a03.cpp",
+ MAME_DIR .. "src/devices/machine/e05a03.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/e05a30.h,MACHINES["E05A30"] = true
+---------------------------------------------------
+
+if (MACHINES["E05A30"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/e05a30.cpp",
+ MAME_DIR .. "src/devices/machine/e05a30.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/eeprom.h,MACHINES["EEPROMDEV"] = true
+--@src/devices/machine/eepromser.h,MACHINES["EEPROMDEV"] = true
+--@src/devices/machine/eeprompar.h,MACHINES["EEPROMDEV"] = true
+---------------------------------------------------
+
+if (MACHINES["EEPROMDEV"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/eeprom.cpp",
+ MAME_DIR .. "src/devices/machine/eeprom.h",
+ MAME_DIR .. "src/devices/machine/eepromser.cpp",
+ MAME_DIR .. "src/devices/machine/eepromser.h",
+ MAME_DIR .. "src/devices/machine/eeprompar.cpp",
+ MAME_DIR .. "src/devices/machine/eeprompar.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/er1400.h,MACHINES["ER1400"] = true
+---------------------------------------------------
+
+if (MACHINES["ER1400"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/er1400.cpp",
+ MAME_DIR .. "src/devices/machine/er1400.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/er2055.h,MACHINES["ER2055"] = true
+---------------------------------------------------
+
+if (MACHINES["ER2055"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/er2055.cpp",
+ MAME_DIR .. "src/devices/machine/er2055.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/exorterm.h,MACHINES["EXORTERM"] = true
+---------------------------------------------------
+
+if (MACHINES["EXORTERM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/exorterm.cpp",
+ MAME_DIR .. "src/devices/machine/exorterm.h",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/machine/exorterm.cpp", GEN_DIR .. "emu/layout/exorterm155.lh" },
+ }
+
+ custombuildtask {
+ layoutbuildtask("emu/layout", "exorterm155"),
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/f3853.h,MACHINES["F3853"] = true
+---------------------------------------------------
+
+if (MACHINES["F3853"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/f3853.cpp",
+ MAME_DIR .. "src/devices/machine/f3853.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/f4702.h,MACHINES["F4702"] = true
+---------------------------------------------------
+
+if (MACHINES["F4702"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/f4702.cpp",
+ MAME_DIR .. "src/devices/machine/f4702.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/fga002.h,MACHINES["FGA002"] = true
+---------------------------------------------------
+
+if (MACHINES["FGA002"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/fga002.cpp",
+ MAME_DIR .. "src/devices/machine/fga002.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/gt913.h,MACHINES["GT913"] = true
+---------------------------------------------------
+
+if (MACHINES["GT913"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/gt913_io.cpp",
+ MAME_DIR .. "src/devices/machine/gt913_io.h",
+ MAME_DIR .. "src/devices/machine/gt913_kbd.cpp",
+ MAME_DIR .. "src/devices/machine/gt913_kbd.h",
+ MAME_DIR .. "src/devices/machine/gt913_snd.cpp",
+ MAME_DIR .. "src/devices/machine/gt913_snd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/hd63450.h,MACHINES["HD63450"] = true
+---------------------------------------------------
+
+if (MACHINES["HD63450"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/hd63450.cpp",
+ MAME_DIR .. "src/devices/machine/hd63450.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/hd64610.h,MACHINES["HD64610"] = true
+---------------------------------------------------
+
+if (MACHINES["HD64610"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/hd64610.cpp",
+ MAME_DIR .. "src/devices/machine/hd64610.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/hp_dc100_tape.h,MACHINES["HP_DC100_TAPE"] = true
+---------------------------------------------------
+
+if (MACHINES["HP_DC100_TAPE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/hp_dc100_tape.cpp",
+ MAME_DIR .. "src/devices/machine/hp_dc100_tape.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/hp_taco.h,MACHINES["HP_TACO"] = true
+---------------------------------------------------
+
+if (MACHINES["HP_TACO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/hp_taco.cpp",
+ MAME_DIR .. "src/devices/machine/hp_taco.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/1ma6.h,MACHINES["1MA6"] = true
+---------------------------------------------------
+
+if (MACHINES["1MA6"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/1ma6.cpp",
+ MAME_DIR .. "src/devices/machine/1ma6.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/1mb5.h,MACHINES["1MB5"] = true
+---------------------------------------------------
+
+if (MACHINES["1MB5"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/1mb5.cpp",
+ MAME_DIR .. "src/devices/machine/1mb5.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i2cmem.h,MACHINES["I2CMEM"] = true
+---------------------------------------------------
+
+if (MACHINES["I2CMEM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i2cmem.cpp",
+ MAME_DIR .. "src/devices/machine/i2cmem.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i7220.h,MACHINES["I7220"] = true
+---------------------------------------------------
+
+if (MACHINES["I7220"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i7220.cpp",
+ MAME_DIR .. "src/devices/machine/i7220.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8087.h,MACHINES["I8087"] = true
+---------------------------------------------------
+
+if (MACHINES["I8087"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8087.cpp",
+ MAME_DIR .. "src/devices/machine/i8087.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8155.h,MACHINES["I8155"] = true
+---------------------------------------------------
+
+if (MACHINES["I8155"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8155.cpp",
+ MAME_DIR .. "src/devices/machine/i8155.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8212.h,MACHINES["I8212"] = true
+---------------------------------------------------
+
+if (MACHINES["I8212"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8212.cpp",
+ MAME_DIR .. "src/devices/machine/i8212.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8214.h,MACHINES["I8214"] = true
+---------------------------------------------------
+
+if (MACHINES["I8214"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8214.cpp",
+ MAME_DIR .. "src/devices/machine/i8214.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i82355.h,MACHINES["I82355"] = true
+---------------------------------------------------
+
+if (MACHINES["I82355"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i82355.cpp",
+ MAME_DIR .. "src/devices/machine/i82355.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8243.h,MACHINES["I8243"] = true
+---------------------------------------------------
+
+if (MACHINES["I8243"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8243.cpp",
+ MAME_DIR .. "src/devices/machine/i8243.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8251.h,MACHINES["I8251"] = true
+---------------------------------------------------
+
+if (MACHINES["I8251"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8251.cpp",
+ MAME_DIR .. "src/devices/machine/i8251.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8257.h,MACHINES["I8257"] = true
+---------------------------------------------------
+
+if (MACHINES["I8257"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8257.cpp",
+ MAME_DIR .. "src/devices/machine/i8257.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8271.h,MACHINES["I8271"] = true
+---------------------------------------------------
+
+if (MACHINES["I8271"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8271.cpp",
+ MAME_DIR .. "src/devices/machine/i8271.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8279.h,MACHINES["I8279"] = true
+---------------------------------------------------
+
+if (MACHINES["I8279"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8279.cpp",
+ MAME_DIR .. "src/devices/machine/i8279.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8355.h,MACHINES["I8355"] = true
+---------------------------------------------------
+
+if (MACHINES["I8355"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8355.cpp",
+ MAME_DIR .. "src/devices/machine/i8355.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i80130.h,MACHINES["I80130"] = true
+---------------------------------------------------
+
+if (MACHINES["I80130"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i80130.cpp",
+ MAME_DIR .. "src/devices/machine/i80130.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/icm7170.h,MACHINES["ICM7170"] = true
+---------------------------------------------------
+
+if (MACHINES["ICM7170"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/icm7170.cpp",
+ MAME_DIR .. "src/devices/machine/icm7170.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ibm21s850.h,MACHINES["IBM21S850"] = true
+---------------------------------------------------
+
+if (MACHINES["IBM21S850"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ibm21s850.cpp",
+ MAME_DIR .. "src/devices/machine/ibm21s850.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/idectrl.h,MACHINES["IDECTRL"] = true
+--@src/devices/machine/vt83c461.h,MACHINES["IDECTRL"] = true
+---------------------------------------------------
+
+if (MACHINES["IDECTRL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/idectrl.cpp",
+ MAME_DIR .. "src/devices/machine/idectrl.h",
+ MAME_DIR .. "src/devices/machine/vt83c461.cpp",
+ MAME_DIR .. "src/devices/machine/vt83c461.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ie15.h,MACHINES["IE15"] = true
+---------------------------------------------------
+
+if (MACHINES["IE15"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ie15.cpp",
+ MAME_DIR .. "src/devices/machine/ie15.h",
+ MAME_DIR .. "src/devices/machine/ie15_kbd.cpp",
+ MAME_DIR .. "src/devices/machine/ie15_kbd.h",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/devices/machine/ie15.cpp", GEN_DIR .. "emu/layout/ie15.lh" },
+ }
+
+ custombuildtask {
+ layoutbuildtask("emu/layout", "ie15"),
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/im6402.h,MACHINES["IM6402"] = true
+---------------------------------------------------
+
+if (MACHINES["IM6402"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/im6402.cpp",
+ MAME_DIR .. "src/devices/machine/im6402.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ins8154.h,MACHINES["INS8154"] = true
+---------------------------------------------------
+
+if (MACHINES["INS8154"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ins8154.cpp",
+ MAME_DIR .. "src/devices/machine/ins8154.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ins8250.h,MACHINES["INS8250"] = true
+---------------------------------------------------
+
+if (MACHINES["INS8250"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ins8250.cpp",
+ MAME_DIR .. "src/devices/machine/ins8250.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/intelfsh.h,MACHINES["INTELFLASH"] = true
+---------------------------------------------------
+
+if (MACHINES["INTELFLASH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/intelfsh.cpp",
+ MAME_DIR .. "src/devices/machine/intelfsh.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/jvsdev.h,MACHINES["JVS"] = true
+--@src/devices/machine/jvshost.h,MACHINES["JVS"] = true
+---------------------------------------------------
+
+if (MACHINES["JVS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/jvsdev.cpp",
+ MAME_DIR .. "src/devices/machine/jvsdev.h",
+ MAME_DIR .. "src/devices/machine/jvshost.cpp",
+ MAME_DIR .. "src/devices/machine/jvshost.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/k033906.h,MACHINES["K033906"] = true
+---------------------------------------------------
+
+if (MACHINES["K033906"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/k033906.cpp",
+ MAME_DIR .. "src/devices/machine/k033906.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/k053252.h,MACHINES["K053252"] = true
+---------------------------------------------------
+
+if (MACHINES["K053252"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/k053252.cpp",
+ MAME_DIR .. "src/devices/machine/k053252.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/k056230.h,MACHINES["K056230"] = true
+---------------------------------------------------
+
+if (MACHINES["K056230"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/k056230.cpp",
+ MAME_DIR .. "src/devices/machine/k056230.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/m950x0.h,MACHINES["M950X0"] = true
+---------------------------------------------------
+
+if (MACHINES["M950X0"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/m950x0.cpp",
+ MAME_DIR .. "src/devices/machine/m950x0.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mm5740.h,MACHINES["MM5740"] = true
+---------------------------------------------------
+
+if (MACHINES["MM5740"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mm5740.cpp",
+ MAME_DIR .. "src/devices/machine/mm5740.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/kb3600.h,MACHINES["KB3600"] = true
+---------------------------------------------------
+
+if (MACHINES["KB3600"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/kb3600.cpp",
+ MAME_DIR .. "src/devices/machine/kb3600.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/kr2376.h,MACHINES["KR2376"] = true
+---------------------------------------------------
+
+if (MACHINES["KR2376"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/kr2376.cpp",
+ MAME_DIR .. "src/devices/machine/kr2376.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/latch8.h,MACHINES["LATCH8"] = true
+---------------------------------------------------
+
+if (MACHINES["LATCH8"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/latch8.cpp",
+ MAME_DIR .. "src/devices/machine/latch8.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/lc89510.h,MACHINES["LC89510"] = true
+---------------------------------------------------
+
+if (MACHINES["LC89510"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/lc89510.cpp",
+ MAME_DIR .. "src/devices/machine/lc89510.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ldpr8210.h,MACHINES["LDPR8210"] = true
+---------------------------------------------------
+
+if (MACHINES["LDPR8210"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ldpr8210.cpp",
+ MAME_DIR .. "src/devices/machine/ldpr8210.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ldstub.h,MACHINES["LDSTUB"] = true
+---------------------------------------------------
+
+if (MACHINES["LDSTUB"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ldstub.cpp",
+ MAME_DIR .. "src/devices/machine/ldstub.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ldv1000.h,MACHINES["LDV1000"] = true
+---------------------------------------------------
+
+if (MACHINES["LDV1000"]~=null) then
+ MACHINES["Z80CTC"] = true
+ MACHINES["I8255"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/ldv1000.cpp",
+ MAME_DIR .. "src/devices/machine/ldv1000.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ldp1000.h,MACHINES["LDP1000"] = true
+---------------------------------------------------
+
+if (MACHINES["LDP1000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ldp1000.cpp",
+ MAME_DIR .. "src/devices/machine/ldp1000.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ldp1450.h,MACHINES["LDP1450"] = true
+---------------------------------------------------
+
+if (MACHINES["LDP1450"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ldp1450.cpp",
+ MAME_DIR .. "src/devices/machine/ldp1450.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ldvp931.h,MACHINES["LDVP931"] = true
+---------------------------------------------------
+
+if (MACHINES["LDVP931"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ldvp931.cpp",
+ MAME_DIR .. "src/devices/machine/ldvp931.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/lh5810.h,MACHINES["LH5810"] = true
+---------------------------------------------------
+
+if (MACHINES["LH5810"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/lh5810.cpp",
+ MAME_DIR .. "src/devices/machine/lh5810.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/linflash.h,MACHINES["LINFLASH"] = true
+---------------------------------------------------
+
+if (MACHINES["LINFLASH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/linflash.cpp",
+ MAME_DIR .. "src/devices/machine/linflash.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/locomo.h,MACHINES["LOCOMO"] = true
+---------------------------------------------------
+
+if (MACHINES["LOCOMO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/locomo.cpp",
+ MAME_DIR .. "src/devices/machine/locomo.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/m3002.h,MACHINES["M3002"] = true
+---------------------------------------------------
+
+if (MACHINES["M3002"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/m3002.cpp",
+ MAME_DIR .. "src/devices/machine/m3002.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/m68sfdc.h,MACHINES["M68SFDC"] = true
+---------------------------------------------------
+
+if (MACHINES["M68SFDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/m68sfdc.cpp",
+ MAME_DIR .. "src/devices/machine/m68sfdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/m6m80011ap.h,MACHINES["M6M80011AP"] = true
+---------------------------------------------------
+
+if (MACHINES["M6M80011AP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/m6m80011ap.cpp",
+ MAME_DIR .. "src/devices/machine/m6m80011ap.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb14241.h,MACHINES["MB14241"] = true
+---------------------------------------------------
+
+if (MACHINES["MB14241"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb14241.cpp",
+ MAME_DIR .. "src/devices/machine/mb14241.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb3773.h,MACHINES["MB3773"] = true
+---------------------------------------------------
+
+if (MACHINES["MB3773"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb3773.cpp",
+ MAME_DIR .. "src/devices/machine/mb3773.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb8421.h,MACHINES["MB8421"] = true
+---------------------------------------------------
+
+if (MACHINES["MB8421"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb8421.cpp",
+ MAME_DIR .. "src/devices/machine/mb8421.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb87030.h,MACHINES["MB87030"] = true
+---------------------------------------------------
+
+if (MACHINES["MB87030"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb87030.cpp",
+ MAME_DIR .. "src/devices/machine/mb87030.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb87078.h,MACHINES["MB87078"] = true
+---------------------------------------------------
+
+if (MACHINES["MB87078"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb87078.cpp",
+ MAME_DIR .. "src/devices/machine/mb87078.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb8795.h,MACHINES["MB8795"] = true
+---------------------------------------------------
+
+if (MACHINES["MB8795"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb8795.cpp",
+ MAME_DIR .. "src/devices/machine/mb8795.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb89352.h,MACHINES["MB89352"] = true
+---------------------------------------------------
+
+if (MACHINES["MB89352"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb89352.cpp",
+ MAME_DIR .. "src/devices/machine/mb89352.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb89371.h,MACHINES["MB89371"] = true
+---------------------------------------------------
+
+if (MACHINES["MB89371"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb89371.cpp",
+ MAME_DIR .. "src/devices/machine/mb89371.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mb89374.h,MACHINES["MB89374"] = true
+---------------------------------------------------
+
+if (MACHINES["MB89374"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mb89374.cpp",
+ MAME_DIR .. "src/devices/machine/mb89374.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc146818.h,MACHINES["MC146818"] = true
+---------------------------------------------------
+
+if (MACHINES["MC146818"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc146818.cpp",
+ MAME_DIR .. "src/devices/machine/mc146818.h",
+ MAME_DIR .. "src/devices/machine/ds128x.cpp",
+ MAME_DIR .. "src/devices/machine/ds128x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc14411.h,MACHINES["MC14411"] = true
+---------------------------------------------------
+
+if (MACHINES["MC14411"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc14411.cpp",
+ MAME_DIR .. "src/devices/machine/mc14411.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc6843.h,MACHINES["MC6843"] = true
+---------------------------------------------------
+
+if (MACHINES["MC6843"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc6843.cpp",
+ MAME_DIR .. "src/devices/machine/mc6843.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc6844.h,MACHINES["MC6844"] = true
+---------------------------------------------------
+
+if (MACHINES["MC6844"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc6844.cpp",
+ MAME_DIR .. "src/devices/machine/mc6844.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc6846.h,MACHINES["MC6846"] = true
+---------------------------------------------------
+
+if (MACHINES["MC6846"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc6846.cpp",
+ MAME_DIR .. "src/devices/machine/mc6846.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc6852.h,MACHINES["MC6852"] = true
+---------------------------------------------------
+
+if (MACHINES["MC6852"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc6852.cpp",
+ MAME_DIR .. "src/devices/machine/mc6852.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc6854.h,MACHINES["MC6854"] = true
+---------------------------------------------------
+
+if (MACHINES["MC6854"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc6854.cpp",
+ MAME_DIR .. "src/devices/machine/mc6854.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc68328.h,MACHINES["MC68328"] = true
+---------------------------------------------------
+
+if (MACHINES["MC68328"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc68328.cpp",
+ MAME_DIR .. "src/devices/machine/mc68328.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mc68901.h,MACHINES["MC68901"] = true
+---------------------------------------------------
+
+if (MACHINES["MC68901"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mc68901.cpp",
+ MAME_DIR .. "src/devices/machine/mc68901.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mccs1850.h,MACHINES["MCCS1850"] = true
+---------------------------------------------------
+
+if (MACHINES["MCCS1850"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mccs1850.cpp",
+ MAME_DIR .. "src/devices/machine/mccs1850.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/68307.h,MACHINES["M68307"] = true
+---------------------------------------------------
+
+if (MACHINES["M68307"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/68307.cpp",
+ MAME_DIR .. "src/devices/machine/68307.h",
+ MAME_DIR .. "src/devices/machine/68307sim.cpp",
+ MAME_DIR .. "src/devices/machine/68307sim.h",
+ MAME_DIR .. "src/devices/machine/68307bus.cpp",
+ MAME_DIR .. "src/devices/machine/68307bus.h",
+ MAME_DIR .. "src/devices/machine/68307tmu.cpp",
+ MAME_DIR .. "src/devices/machine/68307tmu.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/68340.h,MACHINES["M68340"] = true
+---------------------------------------------------
+
+if (MACHINES["M68340"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/68340.cpp",
+ MAME_DIR .. "src/devices/machine/68340.h",
+ MAME_DIR .. "src/devices/machine/68340sim.cpp",
+ MAME_DIR .. "src/devices/machine/68340sim.h",
+ MAME_DIR .. "src/devices/machine/68340dma.cpp",
+ MAME_DIR .. "src/devices/machine/68340dma.h",
+ MAME_DIR .. "src/devices/machine/68340ser.cpp",
+ MAME_DIR .. "src/devices/machine/68340ser.h",
+ MAME_DIR .. "src/devices/machine/68340tmu.cpp",
+ MAME_DIR .. "src/devices/machine/68340tmu.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mcf5206e.h,MACHINES["MCF5206E"] = true
+---------------------------------------------------
+
+if (MACHINES["MCF5206E"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mcf5206e.cpp",
+ MAME_DIR .. "src/devices/machine/mcf5206e.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/meters.h,MACHINES["METERS"] = true
+---------------------------------------------------
+
+if (MACHINES["METERS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/meters.cpp",
+ MAME_DIR .. "src/devices/machine/meters.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/microtch.h,MACHINES["MICROTOUCH"] = true
+---------------------------------------------------
+
+if (MACHINES["MICROTOUCH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/microtch.cpp",
+ MAME_DIR .. "src/devices/machine/microtch.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mm5307.h,MACHINES["MM5307"] = true
+---------------------------------------------------
+
+if (MACHINES["MM5307"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mm5307.cpp",
+ MAME_DIR .. "src/devices/machine/mm5307.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mm58274c.h,MACHINES["MM58274C"] = true
+---------------------------------------------------
+
+if (MACHINES["MM58274C"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mm58274c.cpp",
+ MAME_DIR .. "src/devices/machine/mm58274c.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mm74c922.h,MACHINES["MM74C922"] = true
+---------------------------------------------------
+
+if (MACHINES["MM74C922"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mm74c922.cpp",
+ MAME_DIR .. "src/devices/machine/mm74c922.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos6526.h,MACHINES["MOS6526"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS6526"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos6526.cpp",
+ MAME_DIR .. "src/devices/machine/mos6526.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos6529.h,MACHINES["MOS6529"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS6529"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos6529.cpp",
+ MAME_DIR .. "src/devices/machine/mos6529.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos6702.h,MACHINES["MOS6702"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS6702"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos6702.cpp",
+ MAME_DIR .. "src/devices/machine/mos6702.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos8706.h,MACHINES["MOS8706"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS8706"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos8706.cpp",
+ MAME_DIR .. "src/devices/machine/mos8706.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos8722.h,MACHINES["MOS8722"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS8722"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos8722.cpp",
+ MAME_DIR .. "src/devices/machine/mos8722.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos8726.h,MACHINES["MOS8726"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS8726"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos8726.cpp",
+ MAME_DIR .. "src/devices/machine/mos8726.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos6530.h,MACHINES["MIOT6530"] = true
+--@src/devices/machine/mos6530n.h,MACHINES["MIOT6530"] = true
+---------------------------------------------------
+
+if (MACHINES["MIOT6530"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos6530.cpp",
+ MAME_DIR .. "src/devices/machine/mos6530.h",
+ MAME_DIR .. "src/devices/machine/mos6530n.cpp",
+ MAME_DIR .. "src/devices/machine/mos6530n.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mos6551.h,MACHINES["MOS6551"] = true
+---------------------------------------------------
+
+if (MACHINES["MOS6551"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mos6551.cpp",
+ MAME_DIR .. "src/devices/machine/mos6551.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/msm5832.h,MACHINES["MSM5832"] = true
+---------------------------------------------------
+
+if (MACHINES["MSM5832"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/msm5832.cpp",
+ MAME_DIR .. "src/devices/machine/msm5832.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/msm58321.h,MACHINES["MSM58321"] = true
+---------------------------------------------------
+
+if (MACHINES["MSM58321"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/msm58321.cpp",
+ MAME_DIR .. "src/devices/machine/msm58321.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/msm6242.h,MACHINES["MSM6242"] = true
+---------------------------------------------------
+
+if (MACHINES["MSM6242"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/msm6242.cpp",
+ MAME_DIR .. "src/devices/machine/msm6242.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/msm6253.h,MACHINES["MSM6253"] = true
+---------------------------------------------------
+
+if (MACHINES["MSM6253"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/msm6253.cpp",
+ MAME_DIR .. "src/devices/machine/msm6253.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/myb3k_kbd.h,MACHINES["MYB3K_KEYBOARD"] = true
+---------------------------------------------------
+
+if (MACHINES["MYB3K_KEYBOARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/myb3k_kbd.cpp",
+ MAME_DIR .. "src/devices/machine/myb3k_kbd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ncr539x.h,MACHINES["NCR539x"] = true
+---------------------------------------------------
+
+if (MACHINES["NCR539x"]~=null) then
+ MACHINES["SCSI"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/ncr539x.cpp",
+ MAME_DIR .. "src/devices/machine/ncr539x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/nmc9306.h,MACHINES["NMC9306"] = true
+---------------------------------------------------
+
+if (MACHINES["NMC9306"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/nmc9306.cpp",
+ MAME_DIR .. "src/devices/machine/nmc9306.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/nscsi_bus.h,MACHINES["NSCSI"] = true
+--@src/devices/machine/nscsi_cb.h,MACHINES["NSCSI"] = true
+---------------------------------------------------
+
+if (MACHINES["NSCSI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/nscsi_bus.cpp",
+ MAME_DIR .. "src/devices/machine/nscsi_bus.h",
+ MAME_DIR .. "src/devices/machine/nscsi_cb.cpp",
+ MAME_DIR .. "src/devices/machine/nscsi_cb.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pcf8573.h,MACHINES["PCF8573"] = true
+---------------------------------------------------
+
+if (MACHINES["PCF8573"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pcf8573.cpp",
+ MAME_DIR .. "src/devices/machine/pcf8573.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pcf8583.h,MACHINES["PCF8583"] = true
+---------------------------------------------------
+
+if (MACHINES["PCF8583"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pcf8583.cpp",
+ MAME_DIR .. "src/devices/machine/pcf8583.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pcf8584.h,MACHINES["PCF8584"] = true
+---------------------------------------------------
+
+if (MACHINES["PCF8584"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pcf8584.cpp",
+ MAME_DIR .. "src/devices/machine/pcf8584.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pcf8593.h,MACHINES["PCF8593"] = true
+---------------------------------------------------
+
+if (MACHINES["PCF8593"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pcf8593.cpp",
+ MAME_DIR .. "src/devices/machine/pcf8593.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/lpci.h,MACHINES["LPCI"] = true
+---------------------------------------------------
+
+if (MACHINES["LPCI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/lpci.cpp",
+ MAME_DIR .. "src/devices/machine/lpci.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pci.h,MACHINES["PCI"] = true
+---------------------------------------------------
+
+if (MACHINES["PCI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pci.cpp",
+ MAME_DIR .. "src/devices/machine/pci.h",
+ MAME_DIR .. "src/devices/machine/pci-usb.cpp",
+ MAME_DIR .. "src/devices/machine/pci-usb.h",
+ MAME_DIR .. "src/devices/machine/pci-sata.cpp",
+ MAME_DIR .. "src/devices/machine/pci-sata.h",
+ MAME_DIR .. "src/devices/machine/pci-ide.cpp",
+ MAME_DIR .. "src/devices/machine/pci-ide.h",
+ MAME_DIR .. "src/devices/machine/pci-apic.cpp",
+ MAME_DIR .. "src/devices/machine/pci-apic.h",
+ MAME_DIR .. "src/devices/machine/pci-smbus.cpp",
+ MAME_DIR .. "src/devices/machine/pci-smbus.h",
+ MAME_DIR .. "src/devices/machine/i82541.cpp",
+ MAME_DIR .. "src/devices/machine/i82541.h",
+ MAME_DIR .. "src/devices/machine/i82875p.cpp",
+ MAME_DIR .. "src/devices/machine/i82875p.h",
+ MAME_DIR .. "src/devices/machine/i6300esb.cpp",
+ MAME_DIR .. "src/devices/machine/i6300esb.h",
+ MAME_DIR .. "src/devices/machine/i82439hx.cpp",
+ MAME_DIR .. "src/devices/machine/i82439hx.h",
+ MAME_DIR .. "src/devices/machine/i82439tx.cpp",
+ MAME_DIR .. "src/devices/machine/i82439tx.h",
+ MAME_DIR .. "src/devices/machine/i82371sb.cpp",
+ MAME_DIR .. "src/devices/machine/i82371sb.h",
+ MAME_DIR .. "src/devices/machine/lpc.h",
+ MAME_DIR .. "src/devices/machine/lpc-acpi.cpp",
+ MAME_DIR .. "src/devices/machine/lpc-acpi.h",
+ MAME_DIR .. "src/devices/machine/lpc-rtc.cpp",
+ MAME_DIR .. "src/devices/machine/lpc-rtc.h",
+ MAME_DIR .. "src/devices/machine/lpc-pit.cpp",
+ MAME_DIR .. "src/devices/machine/lpc-pit.h",
+ MAME_DIR .. "src/devices/machine/vrc4373.cpp",
+ MAME_DIR .. "src/devices/machine/vrc4373.h",
+ MAME_DIR .. "src/devices/machine/vrc5074.cpp",
+ MAME_DIR .. "src/devices/machine/vrc5074.h",
+ MAME_DIR .. "src/devices/machine/gt64xxx.cpp",
+ MAME_DIR .. "src/devices/machine/gt64xxx.h",
+ MAME_DIR .. "src/devices/machine/sis85c496.cpp",
+ MAME_DIR .. "src/devices/machine/sis85c496.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pckeybrd.h,MACHINES["PCKEYBRD"] = true
+---------------------------------------------------
+
+if (MACHINES["PCKEYBRD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pckeybrd.cpp",
+ MAME_DIR .. "src/devices/machine/pckeybrd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/phi.h,MACHINES["PHI"] = true
+---------------------------------------------------
+
+if (MACHINES["PHI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/phi.cpp",
+ MAME_DIR .. "src/devices/machine/phi.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pic8259.h,MACHINES["PIC8259"] = true
+---------------------------------------------------
+
+if (MACHINES["PIC8259"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pic8259.cpp",
+ MAME_DIR .. "src/devices/machine/pic8259.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pit8253.h,MACHINES["PIT8253"] = true
+---------------------------------------------------
+
+if (MACHINES["PIT8253"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pit8253.cpp",
+ MAME_DIR .. "src/devices/machine/pit8253.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pla.h,MACHINES["PLA"] = true
+---------------------------------------------------
+
+if (MACHINES["PLA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pla.cpp",
+ MAME_DIR .. "src/devices/machine/pla.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pxa255.h,MACHINES["PXA255"] = true
+---------------------------------------------------
+
+if (MACHINES["PXA255"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pxa255.cpp",
+ MAME_DIR .. "src/devices/machine/pxa255.h",
+ MAME_DIR .. "src/devices/machine/pxa255defs.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/r10696.h,MACHINES["R10696"] = true
+---------------------------------------------------
+
+if (MACHINES["R10696"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/r10696.cpp",
+ MAME_DIR .. "src/devices/machine/r10696.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/r10788.h,MACHINES["R10788"] = true
+---------------------------------------------------
+
+if (MACHINES["R10788"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/r10788.cpp",
+ MAME_DIR .. "src/devices/machine/r10788.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ra17xx.h,MACHINES["RA17XX"] = true
+---------------------------------------------------
+
+if (MACHINES["RA17XX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ra17xx.cpp",
+ MAME_DIR .. "src/devices/machine/ra17xx.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rf5c296.h,MACHINES["RF5C296"] = true
+---------------------------------------------------
+
+if (MACHINES["RF5C296"]~=null) then
+ MACHINES["PCCARD"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/rf5c296.cpp",
+ MAME_DIR .. "src/devices/machine/rf5c296.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ripple_counter.h,MACHINES["RIPPLE_COUNTER"] = true
+---------------------------------------------------
+
+if (MACHINES["RIPPLE_COUNTER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ripple_counter.cpp",
+ MAME_DIR .. "src/devices/machine/ripple_counter.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/roc10937.h,MACHINES["ROC10937"] = true
+---------------------------------------------------
+
+if (MACHINES["ROC10937"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/roc10937.cpp",
+ MAME_DIR .. "src/devices/machine/roc10937.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rp5c01.h,MACHINES["RP5C01"] = true
+---------------------------------------------------
+
+if (MACHINES["RP5C01"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rp5c01.cpp",
+ MAME_DIR .. "src/devices/machine/rp5c01.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rp5c15.h,MACHINES["RP5C15"] = true
+---------------------------------------------------
+
+if (MACHINES["RP5C15"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rp5c15.cpp",
+ MAME_DIR .. "src/devices/machine/rp5c15.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rp5h01.h,MACHINES["RP5H01"] = true
+---------------------------------------------------
+
+if (MACHINES["RP5H01"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rp5h01.cpp",
+ MAME_DIR .. "src/devices/machine/rp5h01.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/64h156.h,MACHINES["R64H156"] = true
+---------------------------------------------------
+
+if (MACHINES["R64H156"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/64h156.cpp",
+ MAME_DIR .. "src/devices/machine/64h156.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rstbuf.h,MACHINES["RSTBUF"] = true
+---------------------------------------------------
+
+if (MACHINES["RSTBUF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rstbuf.cpp",
+ MAME_DIR .. "src/devices/machine/rstbuf.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rtc4543.h,MACHINES["RTC4543"] = true
+---------------------------------------------------
+
+if (MACHINES["RTC4543"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rtc4543.cpp",
+ MAME_DIR .. "src/devices/machine/rtc4543.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rtc65271.h,MACHINES["RTC65271"] = true
+---------------------------------------------------
+
+if (MACHINES["RTC65271"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rtc65271.cpp",
+ MAME_DIR .. "src/devices/machine/rtc65271.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/rtc9701.h,MACHINES["RTC9701"] = true
+---------------------------------------------------
+
+if (MACHINES["RTC9701"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/rtc9701.cpp",
+ MAME_DIR .. "src/devices/machine/rtc9701.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/s2636.h,MACHINES["S2636"] = true
+---------------------------------------------------
+
+if (MACHINES["S2636"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/s2636.cpp",
+ MAME_DIR .. "src/devices/machine/s2636.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/s3520cf.h,MACHINES["S3520CF"] = true
+---------------------------------------------------
+
+if (MACHINES["S3520CF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/s3520cf.cpp",
+ MAME_DIR .. "src/devices/machine/s3520cf.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/s3c2400.h,MACHINES["S3C24XX"] = true
+--@src/devices/machine/s3c2410.h,MACHINES["S3C24XX"] = true
+--@src/devices/machine/s3c2440.h,MACHINES["S3C24XX"] = true
+---------------------------------------------------
+
+if (MACHINES["S3C24XX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/s3c2400.cpp",
+ MAME_DIR .. "src/devices/machine/s3c2400.h",
+ MAME_DIR .. "src/devices/machine/s3c2410.cpp",
+ MAME_DIR .. "src/devices/machine/s3c2410.h",
+ MAME_DIR .. "src/devices/machine/s3c2440.cpp",
+ MAME_DIR .. "src/devices/machine/s3c2440.h",
+ MAME_DIR .. "src/devices/machine/s3c24xx.cpp",
+ MAME_DIR .. "src/devices/machine/s3c24xx.h",
+ MAME_DIR .. "src/devices/machine/s3c24xx.hxx",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/s3c44b0.h,MACHINES["S3C44B0"] = true
+---------------------------------------------------
+
+if (MACHINES["S3C44B0"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/s3c44b0.cpp",
+ MAME_DIR .. "src/devices/machine/s3c44b0.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sa1110.h,MACHINES["SA1110"] = true
+---------------------------------------------------
+
+if (MACHINES["SA1110"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sa1110.cpp",
+ MAME_DIR .. "src/devices/machine/sa1110.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sa1111.h,MACHINES["SA1111"] = true
+---------------------------------------------------
+
+if (MACHINES["SA1111"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sa1111.cpp",
+ MAME_DIR .. "src/devices/machine/sa1111.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/saa1043.h,MACHINES["SAA1043"] = true
+---------------------------------------------------
+
+if (MACHINES["SAA1043"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/saa1043.cpp",
+ MAME_DIR .. "src/devices/machine/saa1043.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/scc68070.h,MACHINES["SCC68070"] = true
+---------------------------------------------------
+if (MACHINES["SCC68070"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/scc68070.cpp",
+ MAME_DIR .. "src/devices/machine/scc68070.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/scn_pci.h,MACHINES["SCN_PCI"] = true
+---------------------------------------------------
+
+if (MACHINES["SCN_PCI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/scn_pci.cpp",
+ MAME_DIR .. "src/devices/machine/scn_pci.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/scoop.h,MACHINES["SCOOP"] = true
+---------------------------------------------------
+if (MACHINES["SCOOP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/scoop.cpp",
+ MAME_DIR .. "src/devices/machine/scoop.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/scnxx562.h,MACHINES["DUSCC"] = true
+---------------------------------------------------
+
+if (MACHINES["DUSCC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/scnxx562.cpp",
+ MAME_DIR .. "src/devices/machine/scnxx562.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sda2006.h,MACHINES["SDA2006"] = true
+---------------------------------------------------
+
+if (MACHINES["SDA2006"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sda2006.cpp",
+ MAME_DIR .. "src/devices/machine/sda2006.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sensorboard.h,MACHINES["SENSORBOARD"] = true
+---------------------------------------------------
+
+if (MACHINES["SENSORBOARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sensorboard.cpp",
+ MAME_DIR .. "src/devices/machine/sensorboard.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/serflash.h,MACHINES["SERFLASH"] = true
+---------------------------------------------------
+
+if (MACHINES["SERFLASH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/serflash.cpp",
+ MAME_DIR .. "src/devices/machine/serflash.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/smc91c9x.h,MACHINES["SMC91C9X"] = true
+---------------------------------------------------
+
+if (MACHINES["SMC91C9X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/smc91c9x.cpp",
+ MAME_DIR .. "src/devices/machine/smc91c9x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/smpc.h,MACHINES["SMPC"] = true
+---------------------------------------------------
+
+if (MACHINES["SMPC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/smpc.cpp",
+ MAME_DIR .. "src/devices/machine/smpc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sega_scu.h,MACHINES["SEGA_SCU"] = true
+---------------------------------------------------
+
+if (MACHINES["SEGA_SCU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sega_scu.cpp",
+ MAME_DIR .. "src/devices/machine/sega_scu.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/spg2xx.h,MACHINES["SPG2XX"] = true
+--@src/devices/machine/spg110.h,MACHINES["SPG2XX"] = true
+--@src/devices/machine/generalplus_gpl16250soc.h,MACHINES["SPG2XX"] = true
+---------------------------------------------------
+
+if (MACHINES["SPG2XX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/spg2xx.cpp",
+ MAME_DIR .. "src/devices/machine/spg2xx.h",
+ MAME_DIR .. "src/devices/machine/spg2xx_audio.cpp",
+ MAME_DIR .. "src/devices/machine/spg2xx_audio.h",
+ MAME_DIR .. "src/devices/machine/spg2xx_io.cpp",
+ MAME_DIR .. "src/devices/machine/spg2xx_io.h",
+ MAME_DIR .. "src/devices/machine/spg2xx_sysdma.cpp",
+ MAME_DIR .. "src/devices/machine/spg2xx_sysdma.h",
+ MAME_DIR .. "src/devices/machine/spg2xx_video.cpp",
+ MAME_DIR .. "src/devices/machine/spg2xx_video.h",
+ MAME_DIR .. "src/devices/machine/spg110.cpp",
+ MAME_DIR .. "src/devices/machine/spg110.h",
+ MAME_DIR .. "src/devices/machine/spg110_video.cpp",
+ MAME_DIR .. "src/devices/machine/spg110_video.h",
+ MAME_DIR .. "src/devices/machine/generalplus_gpl16250soc.cpp",
+ MAME_DIR .. "src/devices/machine/generalplus_gpl16250soc.h",
+ MAME_DIR .. "src/devices/machine/generalplus_gpl16250soc_video.cpp",
+ MAME_DIR .. "src/devices/machine/generalplus_gpl16250soc_video.h",
+ MAME_DIR .. "src/devices/machine/spg_renderer.cpp",
+ MAME_DIR .. "src/devices/machine/spg_renderer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/spg290_cdservo.h,MACHINES["SPG290"] = true
+--@src/devices/machine/spg290_timer.h,MACHINES["SPG290"] = true
+--@src/devices/machine/spg290_i2c.h,MACHINES["SPG290"] = true
+--@src/devices/machine/spg290_ppu.h,MACHINES["SPG290"] = true
+---------------------------------------------------
+
+if (MACHINES["SPG290"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/spg290_cdservo.cpp",
+ MAME_DIR .. "src/devices/machine/spg290_cdservo.h",
+ MAME_DIR .. "src/devices/machine/spg290_timer.cpp",
+ MAME_DIR .. "src/devices/machine/spg290_timer.h",
+ MAME_DIR .. "src/devices/machine/spg290_i2c.cpp",
+ MAME_DIR .. "src/devices/machine/spg290_i2c.h",
+ MAME_DIR .. "src/devices/machine/spg290_ppu.cpp",
+ MAME_DIR .. "src/devices/machine/spg290_ppu.h",
+ }
+end
+---------------------------------------------------
+--
+--@src/devices/machine/stvcd.h,MACHINES["STVCD"] = true
+---------------------------------------------------
+
+if (MACHINES["STVCD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/stvcd.cpp",
+ MAME_DIR .. "src/devices/machine/stvcd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/swtpc8212.h,MACHINES["SWTPC8212"] = true
+---------------------------------------------------
+
+if (MACHINES["SWTPC8212"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/swtpc8212.cpp",
+ MAME_DIR .. "src/devices/machine/swtpc8212.h",
+ }
+end
+
+---------------------------------------------------
+--
+--
+---------------------------------------------------
+
+if (BUSES["ATA"]~=null) or (BUSES["SCSI"]~=null) then
+ MACHINES["T10"] = true
+end
+
+if (MACHINES["T10"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/t10mmc.cpp",
+ MAME_DIR .. "src/devices/machine/t10mmc.h",
+ MAME_DIR .. "src/devices/machine/t10sbc.cpp",
+ MAME_DIR .. "src/devices/machine/t10sbc.h",
+ MAME_DIR .. "src/devices/machine/t10spc.cpp",
+ MAME_DIR .. "src/devices/machine/t10spc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/smartboard.h,MACHINES["TASC_SB30"] = true
+---------------------------------------------------
+
+if (MACHINES["TASC_SB30"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/smartboard.cpp",
+ MAME_DIR .. "src/devices/machine/smartboard.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tc009xlvc.h,MACHINES["TC0091LVC"] = true
+---------------------------------------------------
+
+if (MACHINES["TC0091LVC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tc009xlvc.cpp",
+ MAME_DIR .. "src/devices/machine/tc009xlvc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tdc1008.h,MACHINES["TDC1008"] = true
+---------------------------------------------------
+
+if (MACHINES["TDC1008"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tdc1008.cpp",
+ MAME_DIR .. "src/devices/machine/tdc1008.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/te7750.h,MACHINES["TE7750"] = true
+---------------------------------------------------
+
+if (MACHINES["TE7750"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/te7750.cpp",
+ MAME_DIR .. "src/devices/machine/te7750.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ticket.h,MACHINES["TICKET"] = true
+---------------------------------------------------
+
+if (MACHINES["TICKET"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ticket.cpp",
+ MAME_DIR .. "src/devices/machine/ticket.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/timekpr.h,MACHINES["TIMEKPR"] = true
+---------------------------------------------------
+
+if (MACHINES["TIMEKPR"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/timekpr.cpp",
+ MAME_DIR .. "src/devices/machine/timekpr.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tmc0430.h,MACHINES["TMC0430"] = true
+---------------------------------------------------
+
+if (MACHINES["TMC0430"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tmc0430.cpp",
+ MAME_DIR .. "src/devices/machine/tmc0430.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tmc0999.h,MACHINES["TMC0999"] = true
+---------------------------------------------------
+
+if (MACHINES["TMC0999"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tmc0999.cpp",
+ MAME_DIR .. "src/devices/machine/tmc0999.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tmc208k.h,MACHINES["TMC208K"] = true
+---------------------------------------------------
+
+if (MACHINES["TMC208K"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tmc208k.cpp",
+ MAME_DIR .. "src/devices/machine/tmc208k.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tmp68301.h,MACHINES["TMP68301"] = true
+---------------------------------------------------
+
+if (MACHINES["TMP68301"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tmp68301.cpp",
+ MAME_DIR .. "src/devices/machine/tmp68301.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tms1024.h,MACHINES["TMS1024"] = true
+---------------------------------------------------
+
+if (MACHINES["TMS1024"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tms1024.cpp",
+ MAME_DIR .. "src/devices/machine/tms1024.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tms5501.h,MACHINES["TMS5501"] = true
+---------------------------------------------------
+
+if (MACHINES["TMS5501"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tms5501.cpp",
+ MAME_DIR .. "src/devices/machine/tms5501.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tms6100.h,MACHINES["TMS6100"] = true
+---------------------------------------------------
+
+if (MACHINES["TMS6100"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tms6100.cpp",
+ MAME_DIR .. "src/devices/machine/tms6100.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tms9901.h,MACHINES["TMS9901"] = true
+---------------------------------------------------
+
+if (MACHINES["TMS9901"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tms9901.cpp",
+ MAME_DIR .. "src/devices/machine/tms9901.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tms9902.h,MACHINES["TMS9902"] = true
+---------------------------------------------------
+
+if (MACHINES["TMS9902"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tms9902.cpp",
+ MAME_DIR .. "src/devices/machine/tms9902.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tms9914.h,MACHINES["TMS9914"] = true
+---------------------------------------------------
+
+if (MACHINES["TMS9914"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tms9914.cpp",
+ MAME_DIR .. "src/devices/machine/tms9914.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tsb12lv01a.h,MACHINES["TSB12LV01A"] = true
+---------------------------------------------------
+
+if (MACHINES["TSB12LV01A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tsb12lv01a.cpp",
+ MAME_DIR .. "src/devices/machine/tsb12lv01a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/tube.h,MACHINES["TUBE"] = true
+---------------------------------------------------
+
+if (MACHINES["TUBE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/tube.cpp",
+ MAME_DIR .. "src/devices/machine/tube.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ucb1200.h,MACHINES["UCB1200"] = true
+---------------------------------------------------
+
+if (MACHINES["UCB1200"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ucb1200.cpp",
+ MAME_DIR .. "src/devices/machine/ucb1200.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd1990a.h,MACHINES["UPD1990A"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD1990A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd1990a.cpp",
+ MAME_DIR .. "src/devices/machine/upd1990a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd4991a.h,MACHINES["UPD4991A"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD4991A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd4991a.cpp",
+ MAME_DIR .. "src/devices/machine/upd4991a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd4992.h,MACHINES["UPD4992"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD4992"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd4992.cpp",
+ MAME_DIR .. "src/devices/machine/upd4992.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd4701.h,MACHINES["UPD4701"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD4701"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd4701.cpp",
+ MAME_DIR .. "src/devices/machine/upd4701.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd7001.h,MACHINES["UPD7001"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD7001"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd7001.cpp",
+ MAME_DIR .. "src/devices/machine/upd7001.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd7002.h,MACHINES["UPD7002"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD7002"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd7002.cpp",
+ MAME_DIR .. "src/devices/machine/upd7002.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd7004.h,MACHINES["UPD7004"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD7004"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd7004.cpp",
+ MAME_DIR .. "src/devices/machine/upd7004.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd71071.h,MACHINES["UPD71071"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD71071"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd71071.cpp",
+ MAME_DIR .. "src/devices/machine/upd71071.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/upd765.h,MACHINES["UPD765"] = true
+---------------------------------------------------
+
+if (MACHINES["UPD765"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/upd765.cpp",
+ MAME_DIR .. "src/devices/machine/upd765.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/v3021.h,MACHINES["V3021"] = true
+---------------------------------------------------
+
+if (MACHINES["V3021"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/v3021.cpp",
+ MAME_DIR .. "src/devices/machine/v3021.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/vic_pl192.h,MACHINES["VIC_PL192"] = true
+---------------------------------------------------
+
+if (MACHINES["VIC_PL192"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/vic_pl192.cpp",
+ MAME_DIR .. "src/devices/machine/vic_pl192.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd_fdc.h,MACHINES["WD_FDC"] = true
+---------------------------------------------------
+
+if (MACHINES["WD_FDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wd_fdc.cpp",
+ MAME_DIR .. "src/devices/machine/wd_fdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd1000.h,MACHINES["WD1000"] = true
+---------------------------------------------------
+
+if (MACHINES["WD1000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wd1000.cpp",
+ MAME_DIR .. "src/devices/machine/wd1000.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd1010.h,MACHINES["WD1010"] = true
+---------------------------------------------------
+
+if (MACHINES["WD1010"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wd1010.cpp",
+ MAME_DIR .. "src/devices/machine/wd1010.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd11c00_17.h,MACHINES["WD11C00_17"] = true
+---------------------------------------------------
+
+if (MACHINES["WD11C00_17"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wd11c00_17.cpp",
+ MAME_DIR .. "src/devices/machine/wd11c00_17.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd2010.h,MACHINES["WD2010"] = true
+---------------------------------------------------
+
+if (MACHINES["WD2010"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wd2010.cpp",
+ MAME_DIR .. "src/devices/machine/wd2010.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd33c9x.h,MACHINES["WD33C9X"] = true
+---------------------------------------------------
+
+if (MACHINES["WD33C9X"]~=null) then
+ MACHINES["SCSI"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/wd33c9x.cpp",
+ MAME_DIR .. "src/devices/machine/wd33c9x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wd7600.h,MACHINES["WD7600"] = true
+---------------------------------------------------
+
+if (MACHINES["WD7600"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wd7600.cpp",
+ MAME_DIR .. "src/devices/machine/wd7600.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/x2201.h,MACHINES["X2201"] = true
+---------------------------------------------------
+
+if (MACHINES["X2201"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/x2201.cpp",
+ MAME_DIR .. "src/devices/machine/x2201.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/x2212.h,MACHINES["X2212"] = true
+---------------------------------------------------
+
+if (MACHINES["X2212"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/x2212.cpp",
+ MAME_DIR .. "src/devices/machine/x2212.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/x76f041.h,MACHINES["X76F041"] = true
+---------------------------------------------------
+
+if (MACHINES["X76F041"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/x76f041.cpp",
+ MAME_DIR .. "src/devices/machine/x76f041.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/x76f100.h,MACHINES["X76F100"] = true
+---------------------------------------------------
+
+if (MACHINES["X76F100"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/x76f100.cpp",
+ MAME_DIR .. "src/devices/machine/x76f100.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ym2148.h,MACHINES["YM2148"] = true
+---------------------------------------------------
+
+if (MACHINES["YM2148"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ym2148.cpp",
+ MAME_DIR .. "src/devices/machine/ym2148.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ym3802.h,MACHINES["YM3802"] = true
+---------------------------------------------------
+
+if (MACHINES["YM3802"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ym3802.cpp",
+ MAME_DIR .. "src/devices/machine/ym3802.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80ctc.h,MACHINES["Z80CTC"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80CTC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80ctc.cpp",
+ MAME_DIR .. "src/devices/machine/z80ctc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80sio.h,MACHINES["Z80SIO"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80SIO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80sio.cpp",
+ MAME_DIR .. "src/devices/machine/z80sio.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80scc.h,MACHINES["Z80SCC"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80SCC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80scc.cpp",
+ MAME_DIR .. "src/devices/machine/z80scc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80dma.h,MACHINES["Z80DMA"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80DMA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80dma.cpp",
+ MAME_DIR .. "src/devices/machine/z80dma.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80pio.h,MACHINES["Z80PIO"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80PIO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80pio.cpp",
+ MAME_DIR .. "src/devices/machine/z80pio.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80sti.h,MACHINES["Z80STI"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80STI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80sti.cpp",
+ MAME_DIR .. "src/devices/machine/z80sti.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z8536.h,MACHINES["Z8536"] = true
+---------------------------------------------------
+
+if (MACHINES["Z8536"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z8536.cpp",
+ MAME_DIR .. "src/devices/machine/z8536.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pccard.h,MACHINES["PCCARD"] = true
+---------------------------------------------------
+
+if (MACHINES["PCCARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pccard.cpp",
+ MAME_DIR .. "src/devices/machine/pccard.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8255.h,MACHINES["I8255"] = true
+---------------------------------------------------
+
+if (MACHINES["I8255"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8255.cpp",
+ MAME_DIR .. "src/devices/machine/i8255.h",
+ MAME_DIR .. "src/devices/machine/mb89363b.cpp",
+ MAME_DIR .. "src/devices/machine/mb89363b.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ncr5380.h,MACHINES["NCR5380"] = true
+---------------------------------------------------
+
+if (MACHINES["NCR5380"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ncr5380.cpp",
+ MAME_DIR .. "src/devices/machine/ncr5380.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ncr5390.h,MACHINES["NCR5390"] = true
+---------------------------------------------------
+
+if (MACHINES["NCR5390"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ncr5390.cpp",
+ MAME_DIR .. "src/devices/machine/ncr5390.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mm58167.h,MACHINES["MM58167"] = true
+---------------------------------------------------
+
+if (MACHINES["MM58167"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mm58167.cpp",
+ MAME_DIR .. "src/devices/machine/mm58167.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mm58174.h,MACHINES["MM58174"] = true
+---------------------------------------------------
+
+if (MACHINES["MM58174"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mm58174.cpp",
+ MAME_DIR .. "src/devices/machine/mm58174.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/dp8390.h,MACHINES["DP8390"] = true
+---------------------------------------------------
+
+if (MACHINES["DP8390"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/dp8390.cpp",
+ MAME_DIR .. "src/devices/machine/dp8390.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/dp83932c.h,MACHINES["DP83932C"] = true
+---------------------------------------------------
+
+if (MACHINES["DP83932C"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/dp83932c.cpp",
+ MAME_DIR .. "src/devices/machine/dp83932c.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/dp8573.h,MACHINES["DP8573"] = true
+---------------------------------------------------
+
+if (MACHINES["DP8573"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/dp8573.cpp",
+ MAME_DIR .. "src/devices/machine/dp8573.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pc_lpt.h,MACHINES["PC_LPT"] = true
+---------------------------------------------------
+
+if (MACHINES["PC_LPT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pc_lpt.cpp",
+ MAME_DIR .. "src/devices/machine/pc_lpt.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pc_fdc.h,MACHINES["PC_FDC"] = true
+---------------------------------------------------
+
+if (MACHINES["PC_FDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pc_fdc.cpp",
+ MAME_DIR .. "src/devices/machine/pc_fdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mpu401.h,MACHINES["MPU401"] = true
+---------------------------------------------------
+
+if (MACHINES["MPU401"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mpu401.cpp",
+ MAME_DIR .. "src/devices/machine/mpu401.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/at_keybc.h,MACHINES["AT_KEYBC"] = true
+---------------------------------------------------
+
+if (MACHINES["AT_KEYBC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/at_keybc.cpp",
+ MAME_DIR .. "src/devices/machine/at_keybc.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/hdc92x4.h,MACHINES["HDC9234"] = true
+---------------------------------------------------
+
+if (MACHINES["HDC9234"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/hdc92x4.cpp",
+ MAME_DIR .. "src/devices/machine/hdc92x4.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/strata.h,MACHINES["STRATA"] = true
+---------------------------------------------------
+
+if (MACHINES["STRATA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/strata.cpp",
+ MAME_DIR .. "src/devices/machine/strata.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/steppers.h,MACHINES["STEPPERS"] = true
+---------------------------------------------------
+
+if (MACHINES["STEPPERS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/steppers.cpp",
+ MAME_DIR .. "src/devices/machine/steppers.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/corvushd.h,MACHINES["CORVUSHD"] = true
+---------------------------------------------------
+if (MACHINES["CORVUSHD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/corvushd.cpp",
+ MAME_DIR .. "src/devices/machine/corvushd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wozfdc.h,MACHINES["WOZFDC"] = true
+---------------------------------------------------
+if (MACHINES["WOZFDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wozfdc.cpp",
+ MAME_DIR .. "src/devices/machine/wozfdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/diablo_hd.h,MACHINES["DIABLO_HD"] = true
+---------------------------------------------------
+if (MACHINES["DIABLO_HD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/diablo_hd.cpp",
+ MAME_DIR .. "src/devices/machine/diablo_hd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/fdc37c665gt.h,MACHINES["FDC37C665GT"] = true
+---------------------------------------------------
+
+if (MACHINES["FDC37C665GT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/fdc37c665gt.cpp",
+ MAME_DIR .. "src/devices/machine/fdc37c665gt.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pci9050.h,MACHINES["PCI9050"] = true
+---------------------------------------------------
+
+if (MACHINES["PCI9050"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pci9050.cpp",
+ MAME_DIR .. "src/devices/machine/pci9050.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/netlist.h,MACHINES["NETLIST"] = true
+---------------------------------------------------
+
+if (MACHINES["NETLIST"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/netlist.cpp",
+ MAME_DIR .. "src/devices/machine/netlist.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/nsc810.h,MACHINES["NSC810"] = true
+---------------------------------------------------
+
+if (MACHINES["NSC810"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/nsc810.cpp",
+ MAME_DIR .. "src/devices/machine/nsc810.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/vt82c496.h,MACHINES["VT82C496"] = true
+---------------------------------------------------
+
+if (MACHINES["VT82C496"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/vt82c496.cpp",
+ MAME_DIR .. "src/devices/machine/vt82c496.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/fdc37c93x.h,MACHINES["FDC37C93X"] = true
+---------------------------------------------------
+
+if (MACHINES["FDC37C93X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/fdc37c93x.cpp",
+ MAME_DIR .. "src/devices/machine/fdc37c93x.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/pdc.h,MACHINES["PDC"] = true
+---------------------------------------------------
+
+if (MACHINES["PDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/pdc.cpp",
+ MAME_DIR .. "src/devices/machine/pdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/genpc.h,MACHINES["GENPC"] = true
+---------------------------------------------------
+
+if (MACHINES["GENPC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/genpc.cpp",
+ MAME_DIR .. "src/devices/machine/genpc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/gen_latch.h,MACHINES["GEN_LATCH"] = true
+---------------------------------------------------
+
+if (MACHINES["GEN_LATCH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/gen_latch.cpp",
+ MAME_DIR .. "src/devices/machine/gen_latch.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/fdc_pll.h,MACHINES["FDC_PLL"] = true
+---------------------------------------------------
+
+if (MACHINES["FDC_PLL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/fdc_pll.cpp",
+ MAME_DIR .. "src/devices/machine/fdc_pll.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/watchdog.h,MACHINES["WATCHDOG"] = true
+---------------------------------------------------
+
+if (MACHINES["WATCHDOG"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/watchdog.cpp",
+ MAME_DIR .. "src/devices/machine/watchdog.h",
+ }
+end
+
+
+---------------------------------------------------
+--
+--@src/devices/machine/smartmed.h,MACHINES["SMARTMEDIA"] = true
+---------------------------------------------------
+if (MACHINES["SMARTMEDIA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/smartmed.cpp",
+ MAME_DIR .. "src/devices/machine/smartmed.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/spi_sdcard.h,MACHINES["SPISDCARD"] = true
+---------------------------------------------------
+if (MACHINES["SPISDCARD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/spi_sdcard.cpp",
+ MAME_DIR .. "src/devices/machine/spi_sdcard.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/appldriv.h,MACHINES["APPLE_DRIVE"] = true
+---------------------------------------------------
+if (MACHINES["APPLE_DRIVE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/appldriv.cpp",
+ MAME_DIR .. "src/devices/machine/appldriv.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/applefdc.h,MACHINES["APPLE_FDC"] = true
+---------------------------------------------------
+if (MACHINES["APPLE_FDC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/applefdc.cpp",
+ MAME_DIR .. "src/devices/machine/applefdc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sonydriv.h,MACHINES["SONY_DRIVE"] = true
+---------------------------------------------------
+if (MACHINES["SONY_DRIVE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sonydriv.cpp",
+ MAME_DIR .. "src/devices/machine/sonydriv.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/scnxx562.h,MACHINES["SCNXX562"] = true
+---------------------------------------------------
+if (MACHINES["SCNXX562"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/scnxx562.cpp",
+ MAME_DIR .. "src/devices/machine/scnxx562.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/input_merger.h,MACHINES["INPUT_MERGER"] = true
+---------------------------------------------------
+if (MACHINES["INPUT_MERGER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/input_merger.cpp",
+ MAME_DIR .. "src/devices/machine/input_merger.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/k054321.h,MACHINES["K054321"] = true
+---------------------------------------------------
+if (MACHINES["K054321"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/k054321.cpp",
+ MAME_DIR .. "src/devices/machine/k054321.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/smioc.h,MACHINES["SMIOC"] = true
+---------------------------------------------------
+
+if (MACHINES["SMIOC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/smioc.cpp",
+ MAME_DIR .. "src/devices/machine/smioc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i82586.h,MACHINES["I82586"] = true
+---------------------------------------------------
+
+if (MACHINES["I82586"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i82586.cpp",
+ MAME_DIR .. "src/devices/machine/i82586.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/adc0844.h,MACHINES["ADC0844"] = true
+---------------------------------------------------
+
+if (MACHINES["ADC0844"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/adc0844.cpp",
+ MAME_DIR .. "src/devices/machine/adc0844.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/28fxxx.h,MACHINES["28FXXX"] = true
+---------------------------------------------------
+
+if (MACHINES["28FXXX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/28fxxx.cpp",
+ MAME_DIR .. "src/devices/machine/28fxxx.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/gen_fifo.h,MACHINES["GEN_FIFO"] = true
+---------------------------------------------------
+
+if (MACHINES["GEN_FIFO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/gen_fifo.cpp",
+ MAME_DIR .. "src/devices/machine/gen_fifo.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/output_latch.h,MACHINES["OUTPUT_LATCH"] = true
+---------------------------------------------------
+
+if (MACHINES["OUTPUT_LATCH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/output_latch.cpp",
+ MAME_DIR .. "src/devices/machine/output_latch.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z80daisy.h,MACHINES["Z80DAISY"] = true
+---------------------------------------------------
+
+if (MACHINES["Z80DAISY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z80daisy.cpp",
+ MAME_DIR .. "src/devices/machine/z80daisy.h",
+ MAME_DIR .. "src/devices/machine/z80daisy_generic.cpp",
+ MAME_DIR .. "src/devices/machine/z80daisy_generic.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i8291a.h,MACHINES["I8291A"] = true
+---------------------------------------------------
+
+if (MACHINES["I8291A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i8291a.cpp",
+ MAME_DIR .. "src/devices/machine/i8291a.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2dma.h,MACHINES["PS2DMAC"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2DMAC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2dma.cpp",
+ MAME_DIR .. "src/devices/machine/ps2dma.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2intc.h,MACHINES["PS2INTC"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2INTC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2intc.cpp",
+ MAME_DIR .. "src/devices/machine/ps2intc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2mc.h,MACHINES["PS2MC"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2MC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2mc.cpp",
+ MAME_DIR .. "src/devices/machine/ps2mc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2pad.h,MACHINES["PS2PAD"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2PAD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2pad.cpp",
+ MAME_DIR .. "src/devices/machine/ps2pad.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2sif.h,MACHINES["PS2SIF"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2SIF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2sif.cpp",
+ MAME_DIR .. "src/devices/machine/ps2sif.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2timer.h,MACHINES["PS2TIMER"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2TIMER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2timer.cpp",
+ MAME_DIR .. "src/devices/machine/ps2timer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopcdvd.h,MACHINES["IOPCDVD"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPCDVD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopcdvd.cpp",
+ MAME_DIR .. "src/devices/machine/iopcdvd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopdma.h,MACHINES["IOPDMA"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPDMA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopdma.cpp",
+ MAME_DIR .. "src/devices/machine/iopdma.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopintc.h,MACHINES["IOPINTC"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPINTC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopintc.cpp",
+ MAME_DIR .. "src/devices/machine/iopintc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopsio2.h,MACHINES["IOPSIO2"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPSIO2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopsio2.cpp",
+ MAME_DIR .. "src/devices/machine/iopsio2.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ioptimer.h,MACHINES["IOPTIMER"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPTIMER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ioptimer.cpp",
+ MAME_DIR .. "src/devices/machine/ioptimer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/sun4c_mmu.h,MACHINES["SUN4C_MMU"] = true
+---------------------------------------------------
+
+if (MACHINES["SUN4C_MMU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/sun4c_mmu.cpp",
+ MAME_DIR .. "src/devices/machine/sun4c_mmu.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/z8038.h,MACHINES["Z8038"] = true
+---------------------------------------------------
+
+if (MACHINES["Z8038"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/z8038.cpp",
+ MAME_DIR .. "src/devices/machine/z8038.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/scc2698b.h,MACHINES["SCC2698B"] = true
+---------------------------------------------------
+
+if (MACHINES["SCC2698B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/scc2698b.cpp",
+ MAME_DIR .. "src/devices/machine/scc2698b.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/aic565.h,MACHINES["AIC565"] = true
+---------------------------------------------------
+
+if (MACHINES["AIC565"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/aic565.cpp",
+ MAME_DIR .. "src/devices/machine/aic565.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/aic580.h,MACHINES["AIC580"] = true
+---------------------------------------------------
+
+if (MACHINES["AIC580"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/aic580.cpp",
+ MAME_DIR .. "src/devices/machine/aic580.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/aic6250.h,MACHINES["AIC6250"] = true
+---------------------------------------------------
+
+if (MACHINES["AIC6250"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/aic6250.cpp",
+ MAME_DIR .. "src/devices/machine/aic6250.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/dc7085.h,MACHINES["DC7085"] = true
+---------------------------------------------------
+
+if (MACHINES["DC7085"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/dc7085.cpp",
+ MAME_DIR .. "src/devices/machine/dc7085.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i82357.h,MACHINES["I82357"] = true
+---------------------------------------------------
+
+if (MACHINES["I82357"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i82357.cpp",
+ MAME_DIR .. "src/devices/machine/i82357.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/xc1700e.h,MACHINES["XC1700E"] = true
+---------------------------------------------------
+
+if (MACHINES["XC1700E"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/xc1700e.cpp",
+ MAME_DIR .. "src/devices/machine/xc1700e.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/edlc.h,MACHINES["EDLC"] = true
+---------------------------------------------------
+
+if (MACHINES["EDLC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/edlc.cpp",
+ MAME_DIR .. "src/devices/machine/edlc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/wtl3132.h,MACHINES["WTL3132"] = true
+---------------------------------------------------
+
+if (MACHINES["WTL3132"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/wtl3132.cpp",
+ MAME_DIR .. "src/devices/machine/wtl3132.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/vrender0.h,MACHINES["VRENDER0"] = true
+---------------------------------------------------
+
+if (MACHINES["VRENDER0"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/vrender0.cpp",
+ MAME_DIR .. "src/devices/machine/vr0uart.cpp",
+ MAME_DIR .. "src/devices/machine/vrender0.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i3001.h,MACHINES["I3001"] = true
+---------------------------------------------------
+
+if (MACHINES["I3001"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i3001.cpp",
+ MAME_DIR .. "src/devices/machine/i3001.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/i3002.h,MACHINES["I3002"] = true
+---------------------------------------------------
+
+if (MACHINES["I3002"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/i3002.cpp",
+ MAME_DIR .. "src/devices/machine/i3002.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/s_smp.h,MACHINES["S_SMP"] = true
+---------------------------------------------------
+
+if (MACHINES["S_SMP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/s_smp.cpp",
+ MAME_DIR .. "src/devices/machine/s_smp.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/cxd1185.h,MACHINES["CXD1185"] = true
+---------------------------------------------------
+
+if (MACHINES["CXD1185"]~=null) then
+ MACHINES["NSCSI"] = true
+ files {
+ MAME_DIR .. "src/devices/machine/cxd1185.cpp",
+ MAME_DIR .. "src/devices/machine/cxd1185.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/applefdintf.h,MACHINES["APPLE_FDINTF"] = true
+---------------------------------------------------
+if (MACHINES["APPLE_FDINTF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/applefdintf.cpp",
+ MAME_DIR .. "src/devices/machine/applefdintf.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iwm.h,MACHINES["IWM"] = true
+---------------------------------------------------
+if (MACHINES["IWM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iwm.cpp",
+ MAME_DIR .. "src/devices/machine/iwm.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/swim1.h,MACHINES["SWIM1"] = true
+---------------------------------------------------
+if (MACHINES["SWIM1"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/swim1.cpp",
+ MAME_DIR .. "src/devices/machine/swim1.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/swim2.h,MACHINES["SWIM2"] = true
+---------------------------------------------------
+if (MACHINES["SWIM2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/swim2.cpp",
+ MAME_DIR .. "src/devices/machine/swim2.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/swim3.h,MACHINES["SWIM3"] = true
+---------------------------------------------------
+if (MACHINES["SWIM3"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/swim3.cpp",
+ MAME_DIR .. "src/devices/machine/swim3.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/mv_sonora.h,MACHINES["MAC_VIDEO_SONORA"] = true
+---------------------------------------------------
+if (MACHINES["MAC_VIDEO_SONORA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/mv_sonora.cpp",
+ MAME_DIR .. "src/devices/machine/mv_sonora.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/alpha_8921.h,MACHINES["ALPHA_8921"] = true
+---------------------------------------------------
+if (MACHINES["ALPHA_8921"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/alpha_8921.cpp",
+ MAME_DIR .. "src/devices/machine/alpha_8921.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/bl_handhelds_menucontrol.h,MACHINES["BL_HANDHELDS_MENUCONTROL"] = true
+---------------------------------------------------
+if (MACHINES["BL_HANDHELDS_MENUCONTROL"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/bl_handhelds_menucontrol.cpp",
+ MAME_DIR .. "src/devices/machine/bl_handhelds_menucontrol.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ns32081.h,MACHINES["NS32081"] = true
+---------------------------------------------------
+if (MACHINES["NS32081"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ns32081.cpp",
+ MAME_DIR .. "src/devices/machine/ns32081.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ns32202.h,MACHINES["NS32202"] = true
+---------------------------------------------------
+if (MACHINES["NS32202"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ns32202.cpp",
+ MAME_DIR .. "src/devices/machine/ns32202.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ns32082.h,MACHINES["NS32082"] = true
+---------------------------------------------------
+if (MACHINES["NS32082"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ns32082.cpp",
+ MAME_DIR .. "src/devices/machine/ns32082.h",
+ }
+end
diff --git a/docs/release/scripts/src/main.lua b/docs/release/scripts/src/main.lua
new file mode 100644
index 00000000000..985afcf2cda
--- /dev/null
+++ b/docs/release/scripts/src/main.lua
@@ -0,0 +1,457 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- main.lua
+--
+-- Rules for building main binary
+--
+---------------------------------------------------------------------------
+
+function mainProject(_target, _subtarget)
+if (_OPTIONS["SOURCES"] == nil) then
+ if (_target == _subtarget) then
+ project (_target)
+ else
+ if (_subtarget=="mess") then
+ project (_subtarget)
+ else
+ project (_target .. _subtarget)
+ end
+ end
+else
+ project (_subtarget)
+end
+ uuid (os.uuid(_target .."_" .. _subtarget))
+ kind "ConsoleApp"
+
+ configuration { "android*" }
+ targetprefix "lib"
+ targetname "main"
+ targetextension ".so"
+ linkoptions {
+ "-shared",
+ "-Wl,-soname,libmain.so"
+ }
+ links {
+ "EGL",
+ "GLESv1_CM",
+ "GLESv2",
+ "SDL2",
+ }
+ configuration { "pnacl" }
+ kind "ConsoleApp"
+ targetextension ".pexe"
+ links {
+ "ppapi",
+ "ppapi_gles2",
+ "pthread",
+ }
+
+ configuration { "winstore*" }
+ kind "WindowedApp"
+
+ configuration { }
+
+ addprojectflags()
+ flags {
+ "NoManifest",
+ "Symbols", -- always include minimum symbols for executables
+ }
+
+ if _OPTIONS["SYMBOLS"] then
+ configuration { "mingw*" }
+ postbuildcommands {
+ "$(SILENT) echo Dumping symbols.",
+ "$(SILENT) objdump --section=.text --line-numbers --syms --demangle $(TARGET) >$(subst .exe,.sym,$(TARGET))"
+ }
+ end
+
+ configuration { "winstore*" }
+ -- Windows Required Files
+ files {
+ -- Manifest file
+ MAME_DIR .. "scripts/resources/uwp/Package.appxmanifest",
+ }
+
+ configuration { "winstore*" }
+ files {
+ MAME_DIR .. "scripts/resources/uwp/assets/*.png"
+ }
+ configuration "**/scripts/resources/uwp/assets/*.png"
+ flags { "DeploymentContent" }
+
+ -- Effects and Shaders
+ configuration { "winstore*" }
+ files {
+ MAME_DIR .. "artwork/*",
+ MAME_DIR .. "artwork/**/*",
+ MAME_DIR .. "bgfx/*",
+ MAME_DIR .. "bgfx/**/*",
+ MAME_DIR .. "hash/*",
+ MAME_DIR .. "language/*",
+ MAME_DIR .. "language/**/*",
+ MAME_DIR .. "plugins/*",
+ MAME_DIR .. "plugins/**/*",
+ }
+ configuration "**/*"
+ flags { "DeploymentContent" }
+
+ configuration { "x64", "Release" }
+ targetsuffix ""
+ if _OPTIONS["PROFILE"] then
+ targetsuffix "p"
+ end
+
+ configuration { "x64", "Debug" }
+ targetsuffix "d"
+ if _OPTIONS["PROFILE"] then
+ targetsuffix "dp"
+ end
+
+ configuration { "x32", "Release" }
+ targetsuffix "32"
+ if _OPTIONS["PROFILE"] then
+ targetsuffix "32p"
+ end
+
+ configuration { "x32", "Debug" }
+ targetsuffix "32d"
+ if _OPTIONS["PROFILE"] then
+ targetsuffix "32dp"
+ end
+
+ configuration { "mingw*" or "vs20*" }
+ targetextension ".exe"
+
+ configuration { "rpi" }
+ targetextension ""
+
+ configuration { "asmjs" }
+ targetextension ".bc"
+ if os.getenv("EMSCRIPTEN") then
+ local emccopts = ""
+ .. " -O" .. _OPTIONS["OPTIMIZE"]
+ .. " -s USE_SDL=2"
+ .. " -s USE_SDL_TTF=2"
+ .. " --memory-init-file 0"
+ .. " -s DISABLE_EXCEPTION_CATCHING=2"
+ .. " -s EXCEPTION_CATCHING_WHITELIST=\"['__ZN15running_machine17start_all_devicesEv','__ZN12cli_frontend7executeEiPPc','__ZN8chd_file11open_commonEb','__ZN8chd_file13read_metadataEjjRNSt3__212basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE','__ZN8chd_file13read_metadataEjjRNSt3__26vectorIhNS0_9allocatorIhEEEE','__ZNK19netlist_mame_device19base_validity_checkER16validity_checker']\""
+ .. " -s EXPORTED_FUNCTIONS=\"['_main', '_malloc', '__ZN15running_machine30emscripten_get_running_machineEv', '__ZN15running_machine17emscripten_get_uiEv', '__ZN15running_machine20emscripten_get_soundEv', '__ZN15mame_ui_manager12set_show_fpsEb', '__ZNK15mame_ui_manager8show_fpsEv', '__ZN13sound_manager4muteEbh', '_SDL_PauseAudio', '_SDL_SendKeyboardKey', '__ZN15running_machine15emscripten_saveEPKc', '__ZN15running_machine15emscripten_loadEPKc', '__ZN15running_machine21emscripten_hard_resetEv', '__ZN15running_machine21emscripten_soft_resetEv', '__ZN15running_machine15emscripten_exitEv']\""
+ .. " -s EXTRA_EXPORTED_RUNTIME_METHODS=\"['cwrap']\""
+ .. " -s ERROR_ON_UNDEFINED_SYMBOLS=0"
+ .. " -s USE_WEBGL2=1"
+ .. " -s LEGACY_GL_EMULATION=1"
+ .. " -s GL_UNSAFE_OPTS=0"
+ .. " --pre-js " .. _MAKE.esc(MAME_DIR) .. "src/osd/modules/sound/js_sound.js"
+ .. " --post-js " .. _MAKE.esc(MAME_DIR) .. "scripts/resources/emscripten/emscripten_post.js"
+ .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/chains@bgfx/chains"
+ .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/effects@bgfx/effects"
+ .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/shaders/essl@bgfx/shaders/essl"
+ .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "artwork/bgfx@artwork/bgfx"
+ .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "artwork/slot-mask.png@artwork/slot-mask.png"
+
+ if _OPTIONS["SYMBOLS"]~=nil and _OPTIONS["SYMBOLS"]~="0" then
+ emccopts = emccopts
+ .. " -g" .. _OPTIONS["SYMLEVEL"]
+ .. " -s DEMANGLE_SUPPORT=1"
+ end
+
+ if _OPTIONS["WEBASSEMBLY"] then
+ emccopts = emccopts
+ .. " -s WASM=" .. _OPTIONS["WEBASSEMBLY"]
+ else
+ emccopts = emccopts
+ .. " -s WASM=1"
+ end
+
+ if _OPTIONS["WEBASSEMBLY"]~=nil and _OPTIONS["WEBASSEMBLY"]=="0" then
+ -- define a fixed memory size because allowing memory growth disables asm.js optimizations
+ emccopts = emccopts
+ .. " -s ALLOW_MEMORY_GROWTH=0"
+ .. " -s TOTAL_MEMORY=268435456"
+ else
+ emccopts = emccopts
+ .. " -s ALLOW_MEMORY_GROWTH=1"
+ end
+
+ if _OPTIONS["ARCHOPTS"] then
+ emccopts = emccopts .. " " .. _OPTIONS["ARCHOPTS"]
+ end
+
+ postbuildcommands {
+ --os.getenv("EMSCRIPTEN") .. "/emcc " .. emccopts .. " $(TARGET) -o " .. _MAKE.esc(MAME_DIR) .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".js",
+ os.getenv("EMSCRIPTEN") .. "/emcc " .. emccopts .. " $(TARGET) -o " .. _MAKE.esc(MAME_DIR) .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".html",
+ }
+ end
+
+ configuration { }
+
+ if _OPTIONS["targetos"]=="android" then
+ includedirs {
+ MAME_DIR .. "3rdparty/SDL2/include",
+ }
+
+ files {
+ MAME_DIR .. "3rdparty/SDL2/src/main/android/SDL_android_main.c",
+ }
+ targetsuffix ""
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ if _OPTIONS["PLATFORM"]=="arm" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/armeabi-v7a")
+ end
+ if _OPTIONS["PLATFORM"]=="arm64" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/arm64-v8a")
+ end
+ if _OPTIONS["PLATFORM"]=="mips" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/mips")
+ end
+ if _OPTIONS["PLATFORM"]=="mips64" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/mips64")
+ end
+ if _OPTIONS["PLATFORM"]=="x86" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86")
+ end
+ if _OPTIONS["PLATFORM"]=="x64" then
+ targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86_64")
+ end
+ end
+ else
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+ end
+
+if (STANDALONE~=true) then
+ findfunction("linkProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"])
+end
+ links {
+ "osd_" .. _OPTIONS["osd"],
+ }
+ links {
+ "qtdbg_" .. _OPTIONS["osd"],
+ }
+if (STANDALONE~=true) then
+ links {
+ "frontend",
+ }
+end
+ links {
+ "optional",
+ "emu",
+ }
+--if (STANDALONE~=true) then
+ links {
+ "formats",
+ }
+--end
+if #disasm_files > 0 then
+ links {
+ "dasm",
+ }
+end
+if (MACHINES["NETLIST"]~=null) then
+ links {
+ "netlist",
+ }
+end
+ links {
+ "utils",
+ ext_lib("expat"),
+ "softfloat",
+ "softfloat3",
+ "wdlfft",
+ "ymfm",
+ ext_lib("jpeg"),
+ "7z",
+ }
+if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
+ links {
+ "asmjit",
+ }
+end
+if (STANDALONE~=true) then
+ links {
+ ext_lib("lua"),
+ "lualibs",
+ }
+if (_OPTIONS["osd"] ~= "uwp") then
+ links {
+ "linenoise",
+ }
+end
+end
+ links {
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+ }
+if (STANDALONE~=true) then
+ links {
+ ext_lib("sqlite3"),
+ }
+end
+
+ if _OPTIONS["NO_USE_PORTAUDIO"]~="1" then
+ links {
+ ext_lib("portaudio"),
+ }
+ if _OPTIONS["targetos"]=="windows" then
+ links {
+ "setupapi",
+ }
+ end
+ end
+ if _OPTIONS["NO_USE_MIDI"]~="1" then
+ links {
+ ext_lib("portmidi"),
+ }
+ end
+ links {
+ "bgfx",
+ "bimg",
+ "bx",
+ "ocore_" .. _OPTIONS["osd"],
+ }
+
+ override_resources = false;
+
+ maintargetosdoptions(_target,_subtarget)
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/" .. _target,
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. _target .. "/layout",
+ GEN_DIR .. "resource",
+ ext_includedir("zlib"),
+ ext_includedir("flac"),
+ }
+
+
+if (STANDALONE==true) then
+ standalone();
+end
+
+if (STANDALONE~=true) then
+ if _OPTIONS["targetos"]=="macosx" and (not override_resources) then
+ linkoptions {
+ "-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. _subtarget .. "-Info.plist"
+ }
+ custombuildtask {
+ { GEN_DIR .. "version.cpp" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. _subtarget .. "-Info.plist" .. "...", PYTHON .. " $(1) -p -b " .. _subtarget .. " $(<) > $(@)" }},
+ }
+ dependency {
+ { "$(TARGET)" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", true },
+ }
+
+ end
+ local rctarget = _subtarget
+
+ if _OPTIONS["targetos"]=="windows" and (not override_resources) then
+ rcfile = MAME_DIR .. "scripts/resources/windows/" .. _subtarget .. "/" .. rctarget ..".rc"
+ if os.isfile(rcfile) then
+ files {
+ rcfile,
+ }
+ dependency {
+ { "$(OBJDIR)/".._subtarget ..".res" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", true },
+ }
+ else
+ rctarget = "mame"
+ files {
+ MAME_DIR .. "scripts/resources/windows/mame/mame.rc",
+ }
+ dependency {
+ { "$(OBJDIR)/mame.res" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", true },
+ }
+ end
+ end
+
+ local mainfile = MAME_DIR .. "src/".._target .."/" .. _subtarget ..".cpp"
+ if not os.isfile(mainfile) then
+ mainfile = MAME_DIR .. "src/".._target .."/" .. _target ..".cpp"
+ end
+ files {
+ mainfile,
+ MAME_DIR .. "src/version.cpp",
+ GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp",
+ }
+
+ if (_OPTIONS["SOURCES"] == nil) then
+
+ if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt") then
+ dependency {
+ {
+ GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
+ }
+ custombuildtask {
+ { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" }},
+ }
+ else
+ if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst") then
+ custombuildtask {
+ { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(<) > $(@)" }},
+ }
+ else
+ dependency {
+ {
+ GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
+ }
+ custombuildtask {
+ { MAME_DIR .. "src/".._target .."/" .. _target ..".lst" , GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(<) > $(@)" }},
+ }
+ end
+ end
+ end
+
+ if (_OPTIONS["SOURCES"] ~= nil) then
+ dependency {
+ {
+ GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
+ }
+ custombuildtask {
+ { GEN_DIR .. _target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" }},
+ }
+ end
+
+ configuration { "mingw*" }
+ custombuildtask {
+-- { GEN_DIR .. "version.cpp" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. rctarget .. "vers.rc" .. "...", PYTHON .. " $(1) -r -b " .. rctarget .. " $(<) > $(@)" }},
+ { MAME_DIR .. "src/version.cpp" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. rctarget .. "vers.rc" .. "...", PYTHON .. " $(1) -r -b " .. rctarget .. " $(<) > $(@)" }},
+ }
+
+ configuration { "vs20*" }
+ prebuildcommands {
+ "mkdir \"" .. path.translate(GEN_DIR .. "resource/","\\") .. "\" 2>NUL",
+ "@echo Emitting ".. rctarget .. "vers.rc...",
+ PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py","\\") .. "\" -r -b " .. rctarget .. " \"" .. path.translate(GEN_DIR .. "version.cpp","\\") .. "\" > \"" .. path.translate(GEN_DIR .. "resource/" .. rctarget .. "vers.rc", "\\") .. "\"" ,
+ }
+
+ configuration { "vsllvm" }
+ prebuildcommands {
+ "mkdir \"" .. path.translate(GEN_DIR .. "resource/","\\") .. "\" 2>NUL",
+ "@echo Emitting ".. rctarget .. "vers.rc...",
+ PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py","\\") .. "\" -r -b " .. rctarget .. " \"" .. path.translate(GEN_DIR .. "version.cpp","\\") .. "\" > \"" .. path.translate(GEN_DIR .. "resource/" .. rctarget .. "vers.rc", "\\") .. "\"" ,
+ }
+end
+
+ configuration { }
+
+ if _OPTIONS["DEBUG_DIR"]~=nil then
+ debugdir(_OPTIONS["DEBUG_DIR"])
+ else
+ debugdir (MAME_DIR)
+ end
+ if _OPTIONS["DEBUG_ARGS"]~=nil then
+ debugargs (_OPTIONS["DEBUG_ARGS"])
+ else
+ debugargs ("-window")
+ end
+
+end
diff --git a/docs/release/scripts/src/mame/frontend.lua b/docs/release/scripts/src/mame/frontend.lua
new file mode 100644
index 00000000000..91d60cf6587
--- /dev/null
+++ b/docs/release/scripts/src/mame/frontend.lua
@@ -0,0 +1,195 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- frontend.lua
+--
+-- Rules for building frontend
+--
+---------------------------------------------------------------------------
+
+project ("frontend")
+uuid ("e98e14c4-82a4-4988-ba29-01c90c817ab8")
+kind (LIBTYPE)
+
+addprojectflags()
+precompiledheaders()
+
+if (_OPTIONS["targetos"] ~= "asmjs") then
+ options {
+ "ArchiveSplit",
+ }
+end
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/frontend/mame",
+ MAME_DIR .. "src/devices", -- till deps are fixed
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "3rdparty/sol2",
+ GEN_DIR .. "emu",
+ GEN_DIR .. "emu/layout",
+}
+
+includedirs {
+ ext_includedir("asio"),
+ ext_includedir("expat"),
+ ext_includedir("lua"),
+ ext_includedir("zlib"),
+ ext_includedir("flac"),
+ ext_includedir("rapidjson")
+}
+
+configuration { }
+if (_OPTIONS["targetos"] == "windows") then
+ defines {
+ "UI_WINDOWS",
+ }
+end
+
+if (_OPTIONS["osd"] == "sdl") then
+ defines {
+ "UI_SDL",
+ }
+end
+
+files {
+ MAME_DIR .. "src/frontend/mame/audit.cpp",
+ MAME_DIR .. "src/frontend/mame/audit.h",
+ MAME_DIR .. "src/frontend/mame/cheat.cpp",
+ MAME_DIR .. "src/frontend/mame/cheat.h",
+ MAME_DIR .. "src/frontend/mame/clifront.cpp",
+ MAME_DIR .. "src/frontend/mame/clifront.h",
+ MAME_DIR .. "src/frontend/mame/infoxml.cpp",
+ MAME_DIR .. "src/frontend/mame/infoxml.h",
+ MAME_DIR .. "src/frontend/mame/iptseqpoll.cpp",
+ MAME_DIR .. "src/frontend/mame/iptseqpoll.h",
+ MAME_DIR .. "src/frontend/mame/language.cpp",
+ MAME_DIR .. "src/frontend/mame/language.h",
+ MAME_DIR .. "src/frontend/mame/luaengine.cpp",
+ MAME_DIR .. "src/frontend/mame/luaengine.h",
+ MAME_DIR .. "src/frontend/mame/luaengine.ipp",
+ MAME_DIR .. "src/frontend/mame/luaengine_debug.cpp",
+ MAME_DIR .. "src/frontend/mame/luaengine_input.cpp",
+ MAME_DIR .. "src/frontend/mame/luaengine_mem.cpp",
+ MAME_DIR .. "src/frontend/mame/luaengine_render.cpp",
+ MAME_DIR .. "src/frontend/mame/mame.cpp",
+ MAME_DIR .. "src/frontend/mame/mame.h",
+ MAME_DIR .. "src/frontend/mame/mameopts.cpp",
+ MAME_DIR .. "src/frontend/mame/mameopts.h",
+ MAME_DIR .. "src/frontend/mame/media_ident.cpp",
+ MAME_DIR .. "src/frontend/mame/media_ident.h",
+ MAME_DIR .. "src/frontend/mame/pluginopts.cpp",
+ MAME_DIR .. "src/frontend/mame/pluginopts.h",
+ MAME_DIR .. "src/frontend/mame/ui/about.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/about.h",
+ MAME_DIR .. "src/frontend/mame/ui/analogipt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/analogipt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/auditmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/auditmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/barcode.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/barcode.h",
+ MAME_DIR .. "src/frontend/mame/ui/cheatopt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/cheatopt.h",
+ MAME_DIR .. "src/frontend/mame/ui/confswitch.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/confswitch.h",
+ MAME_DIR .. "src/frontend/mame/ui/custui.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/custui.h",
+ MAME_DIR .. "src/frontend/mame/ui/datmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/datmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/defimg.ipp",
+ MAME_DIR .. "src/frontend/mame/ui/devctrl.h",
+ MAME_DIR .. "src/frontend/mame/ui/devopt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/devopt.h",
+ MAME_DIR .. "src/frontend/mame/ui/dirmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/dirmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/filecreate.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/filecreate.h",
+ MAME_DIR .. "src/frontend/mame/ui/filemngr.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/filemngr.h",
+ MAME_DIR .. "src/frontend/mame/ui/filesel.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/filesel.h",
+ MAME_DIR .. "src/frontend/mame/ui/floppycntrl.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/floppycntrl.h",
+ MAME_DIR .. "src/frontend/mame/ui/icorender.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/icorender.h",
+ MAME_DIR .. "src/frontend/mame/ui/imgcntrl.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/imgcntrl.h",
+ MAME_DIR .. "src/frontend/mame/ui/info.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/info.h",
+ MAME_DIR .. "src/frontend/mame/ui/info_pty.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/info_pty.h",
+ MAME_DIR .. "src/frontend/mame/ui/inifile.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/inifile.h",
+ MAME_DIR .. "src/frontend/mame/ui/inputmap.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/inputmap.h",
+ MAME_DIR .. "src/frontend/mame/ui/keyboard.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/keyboard.h",
+ MAME_DIR .. "src/frontend/mame/ui/mainmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/mainmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/menu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/menu.h",
+ MAME_DIR .. "src/frontend/mame/ui/miscmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/miscmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/miscmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/miscmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/moptions.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/moptions.h",
+ MAME_DIR .. "src/frontend/mame/ui/optsmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/optsmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/pluginopt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/pluginopt.h",
+ MAME_DIR .. "src/frontend/mame/ui/selector.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/selector.h",
+ MAME_DIR .. "src/frontend/mame/ui/selgame.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/selgame.h",
+ MAME_DIR .. "src/frontend/mame/ui/selmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/selmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/selsoft.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/selsoft.h",
+ MAME_DIR .. "src/frontend/mame/ui/simpleselgame.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/simpleselgame.h",
+ MAME_DIR .. "src/frontend/mame/ui/sliders.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/sliders.h",
+ MAME_DIR .. "src/frontend/mame/ui/slotopt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/slotopt.h",
+ MAME_DIR .. "src/frontend/mame/ui/sndmenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/sndmenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/state.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/state.h",
+ MAME_DIR .. "src/frontend/mame/ui/submenu.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/submenu.h",
+ MAME_DIR .. "src/frontend/mame/ui/swlist.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/swlist.h",
+ MAME_DIR .. "src/frontend/mame/ui/systemlist.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/systemlist.h",
+ MAME_DIR .. "src/frontend/mame/ui/tapectrl.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/tapectrl.h",
+ MAME_DIR .. "src/frontend/mame/ui/text.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/text.h",
+ MAME_DIR .. "src/frontend/mame/ui/toolbar.ipp",
+ MAME_DIR .. "src/frontend/mame/ui/ui.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/ui.h",
+ MAME_DIR .. "src/frontend/mame/ui/utils.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/utils.h",
+ MAME_DIR .. "src/frontend/mame/ui/videoopt.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/videoopt.h",
+ MAME_DIR .. "src/frontend/mame/ui/viewgfx.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/viewgfx.h",
+ MAME_DIR .. "src/frontend/mame/ui/widgets.cpp",
+ MAME_DIR .. "src/frontend/mame/ui/widgets.h",
+}
+
+pchsource(MAME_DIR .. "src/frontend/mame/audit.cpp")
+
+dependency {
+ { MAME_DIR .. "src/frontend/mame/ui/about.cpp", GEN_DIR .. "emu/copying.ipp" },
+}
+
+custombuildtask {
+ { MAME_DIR .. "COPYING", GEN_DIR .. "emu/copying.ipp", { MAME_DIR .. "scripts/build/file2lines.py" }, { "@echo Converting COPYING...", PYTHON .. " $(1) $(<) $(@) copying_text" } },
+}
diff --git a/docs/release/scripts/src/netlist.lua b/docs/release/scripts/src/netlist.lua
new file mode 100644
index 00000000000..b5d569c6279
--- /dev/null
+++ b/docs/release/scripts/src/netlist.lua
@@ -0,0 +1,225 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- netlist.lua
+--
+-- Rules for building netlist cores
+--
+---------------------------------------------------------------------------
+
+project "netlist"
+ uuid "665ef8ac-2a4c-4c3e-a05f-fd1e5db11de9"
+ kind (LIBTYPE)
+
+ if _OPTIONS["targetos"]=="windows" then
+ configuration { "mingw* or vs*" }
+ defines {
+ "UNICODE",
+ "_UNICODE",
+ "_WIN32_WINNT=0x0501",
+ "WIN32_LEAN_AND_MEAN",
+ "NOMINMAX",
+ }
+ end
+
+ addprojectflags()
+
+ defines {
+ "__STDC_CONSTANT_MACROS",
+ "NL_USE_ACADEMIC_SOLVERS=0",
+ }
+
+ includedirs {
+ -- MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/netlist",
+ }
+
+ files {
+ MAME_DIR .. "src/lib/netlist/nl_base.cpp",
+ MAME_DIR .. "src/lib/netlist/nl_base.h",
+ MAME_DIR .. "src/lib/netlist/nl_config.h",
+ MAME_DIR .. "src/lib/netlist/nl_errstr.h",
+ MAME_DIR .. "src/lib/netlist/nl_dice_compat.h",
+ MAME_DIR .. "src/lib/netlist/nl_factory.cpp",
+ MAME_DIR .. "src/lib/netlist/nl_factory.h",
+ MAME_DIR .. "src/lib/netlist/nl_interface.h",
+ MAME_DIR .. "src/lib/netlist/nl_parser.cpp",
+ MAME_DIR .. "src/lib/netlist/nl_parser.h",
+ MAME_DIR .. "src/lib/netlist/nl_setup.cpp",
+ MAME_DIR .. "src/lib/netlist/nl_setup.h",
+ MAME_DIR .. "src/lib/netlist/nltypes.h",
+ MAME_DIR .. "src/lib/netlist/core/analog.h",
+ MAME_DIR .. "src/lib/netlist/core/base_objects.h",
+ MAME_DIR .. "src/lib/netlist/core/core_device.h",
+ MAME_DIR .. "src/lib/netlist/core/device.h",
+ MAME_DIR .. "src/lib/netlist/core/device_macros.h",
+ MAME_DIR .. "src/lib/netlist/core/devices.h",
+ MAME_DIR .. "src/lib/netlist/core/exec.h",
+ MAME_DIR .. "src/lib/netlist/core/logic_family.h",
+ MAME_DIR .. "src/lib/netlist/core/logic.h",
+ MAME_DIR .. "src/lib/netlist/core/netlist_state.h",
+ MAME_DIR .. "src/lib/netlist/core/nets.h",
+ MAME_DIR .. "src/lib/netlist/core/object_array.h",
+ MAME_DIR .. "src/lib/netlist/core/param.h",
+ MAME_DIR .. "src/lib/netlist/core/queue.h",
+ MAME_DIR .. "src/lib/netlist/core/setup.h",
+ MAME_DIR .. "src/lib/netlist/core/state_var.h",
+ MAME_DIR .. "src/lib/netlist/plib/gmres.h",
+ MAME_DIR .. "src/lib/netlist/plib/pconfig.h",
+ MAME_DIR .. "src/lib/netlist/plib/palloc.h",
+ MAME_DIR .. "src/lib/netlist/plib/parray.h",
+ MAME_DIR .. "src/lib/netlist/plib/pchrono.h",
+ MAME_DIR .. "src/lib/netlist/plib/pgsl.h",
+ MAME_DIR .. "src/lib/netlist/plib/penum.h",
+ MAME_DIR .. "src/lib/netlist/plib/pexception.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/pexception.h",
+ MAME_DIR .. "src/lib/netlist/plib/pfunction.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/pfunction.h",
+ MAME_DIR .. "src/lib/netlist/plib/pfmtlog.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/pfmtlog.h",
+ MAME_DIR .. "src/lib/netlist/plib/plists.h",
+ MAME_DIR .. "src/lib/netlist/plib/pdynlib.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/pdynlib.h",
+ MAME_DIR .. "src/lib/netlist/plib/pmain.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/pmain.h",
+ MAME_DIR .. "src/lib/netlist/plib/pmath.h",
+ MAME_DIR .. "src/lib/netlist/plib/pmatrix2d.h",
+ MAME_DIR .. "src/lib/netlist/plib/pmatrix_cr.h",
+ MAME_DIR .. "src/lib/netlist/plib/pmempool.h",
+ MAME_DIR .. "src/lib/netlist/plib/pmulti_threading.h",
+ MAME_DIR .. "src/lib/netlist/plib/pomp.h",
+ MAME_DIR .. "src/lib/netlist/plib/poptions.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/poptions.h",
+ MAME_DIR .. "src/lib/netlist/plib/ppmf.h",
+ MAME_DIR .. "src/lib/netlist/plib/ppreprocessor.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/ppreprocessor.h",
+ MAME_DIR .. "src/lib/netlist/plib/prandom.h",
+ MAME_DIR .. "src/lib/netlist/plib/psource.h",
+ MAME_DIR .. "src/lib/netlist/plib/pstate.h",
+ MAME_DIR .. "src/lib/netlist/plib/pstonum.h",
+ MAME_DIR .. "src/lib/netlist/plib/pstring.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/pstring.h",
+ MAME_DIR .. "src/lib/netlist/plib/pstrutil.h",
+ MAME_DIR .. "src/lib/netlist/plib/pstream.h",
+ MAME_DIR .. "src/lib/netlist/plib/ptests.h",
+ MAME_DIR .. "src/lib/netlist/plib/ptime.h",
+ MAME_DIR .. "src/lib/netlist/plib/ptimed_queue.h",
+ MAME_DIR .. "src/lib/netlist/plib/ptokenizer.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/ptokenizer.h",
+ MAME_DIR .. "src/lib/netlist/plib/ptypes.h",
+ MAME_DIR .. "src/lib/netlist/plib/putil.cpp",
+ MAME_DIR .. "src/lib/netlist/plib/putil.h",
+ MAME_DIR .. "src/lib/netlist/plib/vector_ops.h",
+ MAME_DIR .. "src/lib/netlist/tools/nl_convert.cpp",
+ MAME_DIR .. "src/lib/netlist/tools/nl_convert.h",
+ MAME_DIR .. "src/lib/netlist/analog/nld_bjt.cpp",
+ MAME_DIR .. "src/lib/netlist/analog/nld_generic_models.h",
+ MAME_DIR .. "src/lib/netlist/analog/nld_mosfet.cpp",
+ MAME_DIR .. "src/lib/netlist/analog/nlid_fourterm.cpp",
+ MAME_DIR .. "src/lib/netlist/analog/nlid_fourterm.h",
+ MAME_DIR .. "src/lib/netlist/analog/nld_switches.cpp",
+ MAME_DIR .. "src/lib/netlist/analog/nlid_twoterm.cpp",
+ MAME_DIR .. "src/lib/netlist/analog/nlid_twoterm.h",
+ MAME_DIR .. "src/lib/netlist/analog/nld_opamps.cpp",
+ MAME_DIR .. "src/lib/netlist/solver/nld_solver.cpp",
+ MAME_DIR .. "src/lib/netlist/solver/nld_solver.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_matrix_solver.cpp",
+ MAME_DIR .. "src/lib/netlist/solver/nld_matrix_solver_ext.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_matrix_solver.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct1.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct2.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_gcr.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_sor.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_sor_mat.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_gmres.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_sm.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_w.h",
+ MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct_lu.h",
+ MAME_DIR .. "src/lib/netlist/devices/net_lib.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/net_lib.h",
+ MAME_DIR .. "src/lib/netlist/devices/nld_9316_base.hxx",
+ MAME_DIR .. "src/lib/netlist/devices/nld_2102a.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_tms4800.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4006.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4013.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4017.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4020.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4029.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4042.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4053.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4066.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4076.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_4316.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7448.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7450.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7473.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7474.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7475.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7483.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7485.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7490.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7492.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7493.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_7497.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74107.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74113.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74123.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74125.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74153.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74161.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74163.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74164.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74165.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74166.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74174.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74175.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74192.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74193.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74194.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74377.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74393.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74365.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_74ls629.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_82s16.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_82s115.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_8277.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_9316.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_9321.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_9322.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_am2847.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_dm9314.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_dm9334.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_ne555.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_mm5837.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_r2r_dac.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_tristate.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_schmitt.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_legacy.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_log.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_roms.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_system.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nlid_truthtable.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nlid_truthtable.h",
+ MAME_DIR .. "src/lib/netlist/devices/nlid_system.h",
+ MAME_DIR .. "src/lib/netlist/devices/nlid_proxy.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nlid_proxy.h",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_base_lib.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx_lib.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_cd4xxx_lib.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_opamp_lib.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_otheric_lib.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_roms_lib.cpp",
+
+ MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_rtest.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp",
+
+ MAME_DIR .. "src/lib/netlist/generated/static_solvers.cpp",
+ MAME_DIR .. "src/lib/netlist/generated/nld_devinc.h",
+ MAME_DIR .. "src/lib/netlist/generated/lib_entries.hxx",
+ MAME_DIR .. "src/lib/netlist/generated/nlm_modules_lib.cpp",
+ }
diff --git a/docs/release/scripts/src/osd/mac.lua b/docs/release/scripts/src/osd/mac.lua
new file mode 100644
index 00000000000..4b3967b8c3d
--- /dev/null
+++ b/docs/release/scripts/src/osd/mac.lua
@@ -0,0 +1,177 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- mac.lua
+--
+-- Rules for the building with SDL
+--
+---------------------------------------------------------------------------
+
+dofile("modules.lua")
+
+
+function maintargetosdoptions(_target,_subtarget)
+ osdmodulestargetconf()
+
+ configuration { }
+end
+
+BASE_TARGETOS = "unix"
+
+local os_version = str_to_version(backtick("sw_vers -productVersion"))
+links {
+ "Cocoa.framework",
+}
+linkoptions {
+ "-framework QuartzCore",
+ "-framework OpenGL",
+}
+if os_version>=101100 then
+ linkoptions {
+ "-weak_framework Metal",
+ }
+end
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("mac_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ configuration { "linux-* or freebsd" }
+ buildoptions {
+ "-fPIC",
+ }
+ configuration { }
+
+ qtdebuggerbuild()
+
+project ("osd_" .. _OPTIONS["osd"])
+ targetsubdir(_OPTIONS["target"] .."_" .._OPTIONS["subtarget"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("mac_cfg.lua")
+ osdmodulesbuild()
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/osd/mac",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/modules/debugger/debugosx.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/breakpointsview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/breakpointsview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/consoleview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/consoleview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugcommandhistory.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugcommandhistory.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugconsole.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugconsole.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugwindowhandler.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugwindowhandler.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/deviceinfoviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/deviceinfoviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/devicesviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/devicesviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/pointsviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/pointsviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registerpointsview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registerpointsview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registersview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registersview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/watchpointsview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/watchpointsview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugosx.h",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/mac/main.mm",
+ MAME_DIR .. "src/osd/mac/macmain.cpp",
+ MAME_DIR .. "src/osd/mac/appdelegate.mm",
+ MAME_DIR .. "src/osd/mac/appdelegate.h",
+ MAME_DIR .. "src/osd/mac/video.cpp",
+ MAME_DIR .. "src/osd/mac/window.cpp",
+ MAME_DIR .. "src/osd/mac/window.h",
+ MAME_DIR .. "src/osd/mac/windowcontroller.mm",
+ MAME_DIR .. "src/osd/mac/windowcontroller.h",
+ MAME_DIR .. "src/osd/mac/mamefswindow.mm",
+ MAME_DIR .. "src/osd/mac/mamefswindow.h",
+ MAME_DIR .. "src/osd/mac/oglview.mm",
+ MAME_DIR .. "src/osd/mac/oglview.h",
+ MAME_DIR .. "src/osd/modules/osdwindow.cpp",
+ MAME_DIR .. "src/osd/modules/osdwindow.h",
+ }
+
+
+project ("ocore_" .. _OPTIONS["osd"])
+ targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("mac_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/mac",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/osdfile.h",
+ MAME_DIR .. "src/osd/strconv.cpp",
+ MAME_DIR .. "src/osd/strconv.h",
+ MAME_DIR .. "src/osd/osdsync.cpp",
+ MAME_DIR .. "src/osd/osdsync.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/modules/lib/osdlib_macosx.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdlib.h",
+ MAME_DIR .. "src/osd/modules/file/posixdir.cpp",
+ MAME_DIR .. "src/osd/modules/file/posixfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/posixfile.h",
+ MAME_DIR .. "src/osd/modules/file/posixptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/posixsocket.cpp",
+ }
+
+
diff --git a/docs/release/scripts/src/osd/mac_cfg.lua b/docs/release/scripts/src/osd/mac_cfg.lua
new file mode 100644
index 00000000000..e75c8d009a2
--- /dev/null
+++ b/docs/release/scripts/src/osd/mac_cfg.lua
@@ -0,0 +1,40 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+dofile('modules.lua')
+
+forcedincludes {
+-- MAME_DIR .. "src/osd/sdl/sdlprefix.h"
+}
+
+if _OPTIONS["USE_TAPTUN"]=="1" or _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "USE_NETWORK",
+ }
+ if _OPTIONS["USE_TAPTUN"]=="1" then
+ defines {
+ "OSD_NET_USE_TAPTUN",
+ }
+ end
+ if _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "OSD_NET_USE_PCAP",
+ }
+ end
+end
+
+defines {
+ "OSD_MAC",
+ "SDLMAME_UNIX",
+ "SDLMAME_MACOSX",
+ "SDLMAME_DARWIN"
+}
+
+configuration { "osx*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/osx",
+ }
+
+
+configuration { }
+
diff --git a/docs/release/scripts/src/osd/modules.lua b/docs/release/scripts/src/osd/modules.lua
new file mode 100644
index 00000000000..7ee20732784
--- /dev/null
+++ b/docs/release/scripts/src/osd/modules.lua
@@ -0,0 +1,655 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- modules.lua
+--
+-- Rules for the building of modules
+--
+---------------------------------------------------------------------------
+
+function string.starts(String,Start)
+ return string.sub(String,1,string.len(Start))==Start
+end
+
+function addlibfromstring(str)
+ if (str==nil) then return end
+ for w in str:gmatch("%S+") do
+ if string.starts(w,"-l")==true then
+ links {
+ string.sub(w,3)
+ }
+ end
+ end
+end
+
+function addoptionsfromstring(str)
+ if (str==nil) then return end
+ for w in str:gmatch("%S+") do
+ if string.starts(w,"-l")==false then
+ linkoptions {
+ w
+ }
+ end
+ end
+end
+
+function pkgconfigcmd()
+ local pkgconfig = os.getenv("PKG_CONFIG")
+ if pkgconfig == nil then
+ return "pkg-config"
+ end
+ return pkgconfig
+end
+
+function osdmodulesbuild()
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/osdnet.cpp",
+ MAME_DIR .. "src/osd/osdnet.h",
+ MAME_DIR .. "src/osd/watchdog.cpp",
+ MAME_DIR .. "src/osd/watchdog.h",
+ MAME_DIR .. "src/osd/modules/debugger/debug_module.h",
+ MAME_DIR .. "src/osd/modules/font/font_module.h",
+ MAME_DIR .. "src/osd/modules/midi/midi_module.h",
+ MAME_DIR .. "src/osd/modules/netdev/netdev_module.h",
+ MAME_DIR .. "src/osd/modules/sound/sound_module.h",
+ MAME_DIR .. "src/osd/modules/diagnostics/diagnostics_module.h",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_module.h",
+ MAME_DIR .. "src/osd/modules/lib/osdobj_common.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdobj_common.h",
+ MAME_DIR .. "src/osd/modules/diagnostics/none.cpp",
+ MAME_DIR .. "src/osd/modules/diagnostics/diagnostics_win32.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/none.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/debugwin.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/debugimgui.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/debuggdbstub.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_sdl.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_windows.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_dwrite.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_osx.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_none.cpp",
+ MAME_DIR .. "src/osd/modules/netdev/taptun.cpp",
+ MAME_DIR .. "src/osd/modules/netdev/pcap.cpp",
+ MAME_DIR .. "src/osd/modules/netdev/none.cpp",
+ MAME_DIR .. "src/osd/modules/midi/portmidi.cpp",
+ MAME_DIR .. "src/osd/modules/midi/none.cpp",
+ MAME_DIR .. "src/osd/modules/sound/js_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/direct_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/pa_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/pulse_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/coreaudio_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/sdl_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/xaudio2_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/none.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_module.h",
+ MAME_DIR .. "src/osd/modules/input/input_common.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_common.h",
+ MAME_DIR .. "src/osd/modules/input/input_dinput.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_dinput.h",
+ MAME_DIR .. "src/osd/modules/input/input_none.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_rawinput.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_win32.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_sdl.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_sdlcommon.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_sdlcommon.h",
+ MAME_DIR .. "src/osd/modules/input/input_x11.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_windows.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_windows.h",
+ MAME_DIR .. "src/osd/modules/input/input_xinput.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_xinput.h",
+ MAME_DIR .. "src/osd/modules/input/input_winhybrid.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_uwp.cpp",
+ MAME_DIR .. "src/osd/modules/input/input_mac.cpp",
+ MAME_DIR .. "src/osd/modules/output/output_module.h",
+ MAME_DIR .. "src/osd/modules/output/none.cpp",
+ MAME_DIR .. "src/osd/modules/output/console.cpp",
+ MAME_DIR .. "src/osd/modules/output/network.cpp",
+ MAME_DIR .. "src/osd/modules/output/win32_output.cpp",
+ MAME_DIR .. "src/osd/modules/output/win32_output.h",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_common.h",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_common.cpp",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_win32.cpp",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_dxgi.cpp",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_sdl.cpp",
+ MAME_DIR .. "src/osd/modules/monitor/monitor_mac.cpp",
+ }
+ includedirs {
+ ext_includedir("asio"),
+ }
+
+ if _OPTIONS["targetos"]=="windows" then
+ includedirs {
+ MAME_DIR .. "3rdparty/winpcap/Include",
+ MAME_DIR .. "3rdparty/compat/mingw",
+ MAME_DIR .. "3rdparty/portaudio/include",
+ }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/compat/winsdk-override",
+ }
+ end
+
+ if _OPTIONS["NO_OPENGL"]=="1" then
+ defines {
+ "USE_OPENGL=0",
+ }
+ else
+ files {
+ MAME_DIR .. "src/osd/modules/render/drawogl.cpp",
+ MAME_DIR .. "src/osd/modules/opengl/gl_shader_tool.cpp",
+ MAME_DIR .. "src/osd/modules/opengl/gl_shader_mgr.cpp",
+ MAME_DIR .. "src/osd/modules/opengl/gl_shader_mgr.h",
+ MAME_DIR .. "src/osd/modules/opengl/gl_shader_tool.h",
+ MAME_DIR .. "src/osd/modules/opengl/osd_opengl.h",
+ }
+ defines {
+ "USE_OPENGL=1",
+ }
+ if _OPTIONS["USE_DISPATCH_GL"]=="1" then
+ defines {
+ "USE_DISPATCH_GL=1",
+ }
+ end
+ end
+
+ defines {
+ "__STDC_LIMIT_MACROS",
+ "__STDC_FORMAT_MACROS",
+ "__STDC_CONSTANT_MACROS",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/modules/render/drawbgfx.cpp",
+ MAME_DIR .. "src/osd/modules/render/aviwrite.cpp",
+ MAME_DIR .. "src/osd/modules/render/aviwrite.h",
+ MAME_DIR .. "src/osd/modules/render/bgfxutil.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfxutil.h",
+ MAME_DIR .. "src/osd/modules/render/binpacker.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/blendreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/blendreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chain.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chain.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainentry.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainentry.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainentryreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainentryreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainmanager.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainmanager.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/chainreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/clear.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/clear.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/clearreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/clearreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/cullreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/cullreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/depthreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/depthreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/effect.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/effect.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/effectmanager.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/effectmanager.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/effectreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/effectreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/entryuniformreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/entryuniformreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/inputpair.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/inputpair.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/frameparameter.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/frameparameter.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/timeparameter.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/timeparameter.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/paramreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/paramreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/paramuniform.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/paramuniform.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/paramuniformreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/paramuniformreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/shadermanager.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/shadermanager.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/slider.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/slider.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/sliderreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/sliderreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/slideruniform.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/slideruniform.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/slideruniformreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/slideruniformreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/statereader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/statereader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/suppressor.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/suppressor.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/suppressorreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/suppressorreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/target.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/target.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/targetreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/targetreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/targetmanager.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/targetmanager.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/texture.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/texture.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/texturehandleprovider.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/texturemanager.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/texturemanager.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/uniform.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/uniform.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/uniformreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/uniformreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/valueuniform.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/valueuniform.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/valueuniformreader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/valueuniformreader.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/view.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/view.h",
+ MAME_DIR .. "src/osd/modules/render/bgfx/writereader.cpp",
+ MAME_DIR .. "src/osd/modules/render/bgfx/writereader.h",
+ }
+ includedirs {
+ MAME_DIR .. "3rdparty/bgfx/examples/common",
+ MAME_DIR .. "3rdparty/bgfx/include",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty",
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
+ MAME_DIR .. "3rdparty/bx/include",
+ ext_includedir("rapidjson")
+ }
+
+ if _OPTIONS["NO_USE_PORTAUDIO"]=="1" then
+ defines {
+ "NO_USE_PORTAUDIO",
+ }
+ else
+ includedirs {
+ ext_includedir("portaudio"),
+ }
+ end
+
+ if _OPTIONS["NO_USE_PULSEAUDIO"]=="1" then
+ defines {
+ "NO_USE_PULSEAUDIO",
+ }
+ end
+
+ if _OPTIONS["NO_USE_MIDI"]=="1" then
+ defines {
+ "NO_USE_MIDI",
+ }
+ else
+ includedirs {
+ ext_includedir("portmidi"),
+ }
+ end
+
+ if _OPTIONS["USE_QTDEBUG"]=="1" then
+ defines {
+ "USE_QTDEBUG=1",
+ }
+ else
+ defines {
+ "USE_QTDEBUG=0",
+ }
+ end
+
+end
+
+
+function qtdebuggerbuild()
+
+ removeflags {
+ "SingleOutputDir",
+ }
+ local version = str_to_version(_OPTIONS["gcc_version"])
+ if _OPTIONS["gcc"]~=nil and (string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "asmjs")) then
+ configuration { "gmake or ninja" }
+ if (version >= 30600) then
+ buildoptions {
+ "-Wno-inconsistent-missing-override",
+ }
+ end
+ configuration { }
+ end
+
+ files {
+ MAME_DIR .. "src/osd/modules/debugger/debugqt.cpp",
+ }
+
+ if _OPTIONS["USE_QTDEBUG"]=="1" then
+ files {
+ MAME_DIR .. "src/osd/modules/debugger/qt/debuggerview.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/debuggerview.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/windowqt.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/windowqt.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/logwindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/logwindow.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/dasmwindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/dasmwindow.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/mainwindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/mainwindow.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/memorywindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/memorywindow.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/breakpointswindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/breakpointswindow.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/deviceswindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/deviceinformationwindow.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/qt/deviceinformationwindow.h",
+ MAME_DIR .. "src/osd/modules/debugger/qt/deviceswindow.h",
+ GEN_DIR .. "osd/modules/debugger/qt/debuggerview.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/windowqt.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/logwindow.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/dasmwindow.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/mainwindow.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/memorywindow.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/breakpointswindow.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/deviceswindow.moc.cpp",
+ GEN_DIR .. "osd/modules/debugger/qt/deviceinformationwindow.moc.cpp",
+ }
+ defines {
+ "USE_QTDEBUG=1",
+ }
+
+ local MOC = ""
+ if (os.is("windows")) then
+ MOC = "moc"
+ else
+ if _OPTIONS["QT_HOME"]~=nil then
+ QMAKETST = backtick(_OPTIONS["QT_HOME"] .. "/bin/qmake --version 2>/dev/null")
+ if (QMAKETST=='') then
+ print("Qt's Meta Object Compiler (moc) wasn't found!")
+ os.exit(1)
+ end
+ MOC = _OPTIONS["QT_HOME"] .. "/bin/moc"
+ else
+ MOCTST = backtick("which moc-qt5 2>/dev/null")
+ if (MOCTST=='') then
+ MOCTST = backtick("which moc 2>/dev/null")
+ end
+ if (MOCTST=='') then
+ print("Qt's Meta Object Compiler (moc) wasn't found!")
+ os.exit(1)
+ end
+ MOC = MOCTST
+ end
+ end
+
+
+ custombuildtask {
+ { MAME_DIR .. "src/osd/modules/debugger/qt/debuggerview.h", GEN_DIR .. "osd/modules/debugger/qt/debuggerview.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/windowqt.h", GEN_DIR .. "osd/modules/debugger/qt/windowqt.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/logwindow.h", GEN_DIR .. "osd/modules/debugger/qt/logwindow.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/dasmwindow.h", GEN_DIR .. "osd/modules/debugger/qt/dasmwindow.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/mainwindow.h", GEN_DIR .. "osd/modules/debugger/qt/mainwindow.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/memorywindow.h", GEN_DIR .. "osd/modules/debugger/qt/memorywindow.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/breakpointswindow.h", GEN_DIR .. "osd/modules/debugger/qt/breakpointswindow.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/deviceswindow.h", GEN_DIR .. "osd/modules/debugger/qt/deviceswindow.moc.cpp", { }, { MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+ { MAME_DIR .. "src/osd/modules/debugger/qt/deviceinformationwindow.h", GEN_DIR .. "osd/modules/debugger/qt/deviceinformationwindow.moc.cpp", { },{ MOC .. "$(MOCINCPATH) -b emu.h $(<) -o $(@)" }},
+
+ }
+
+ if _OPTIONS["targetos"]=="windows" then
+ configuration { "mingw*" }
+ buildoptions {
+ "-I$(shell qmake -query QT_INSTALL_HEADERS)",
+ }
+ configuration { }
+ elseif _OPTIONS["targetos"]=="macosx" then
+ buildoptions {
+ "-F" .. backtick("qmake -query QT_INSTALL_LIBS"),
+ }
+ else
+ if _OPTIONS["QT_HOME"]~=nil then
+ buildoptions {
+ "-I" .. backtick(_OPTIONS["QT_HOME"] .. "/bin/qmake -query QT_INSTALL_HEADERS"),
+ }
+ else
+ buildoptions {
+ backtick(pkgconfigcmd() .. " --cflags Qt5Widgets"),
+ }
+ end
+ end
+ else
+ defines {
+ "USE_QTDEBUG=0",
+ }
+ end
+
+end
+
+
+function osdmodulestargetconf()
+
+ if _OPTIONS["NO_OPENGL"]~="1" then
+ if _OPTIONS["targetos"]=="macosx" then
+ links {
+ "OpenGL.framework",
+ }
+ elseif _OPTIONS["USE_DISPATCH_GL"]~="1" then
+ if _OPTIONS["targetos"]=="windows" then
+ links {
+ "opengl32",
+ }
+ else
+ links {
+ "GL",
+ }
+ end
+ end
+ end
+
+ if _OPTIONS["NO_USE_MIDI"]~="1" then
+ if _OPTIONS["targetos"]=="linux" then
+ local str = backtick(pkgconfigcmd() .. " --libs alsa")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ elseif _OPTIONS["targetos"]=="macosx" then
+ links {
+ "CoreMIDI.framework",
+ }
+ end
+ end
+
+ if _OPTIONS["USE_QTDEBUG"]=="1" then
+ if _OPTIONS["targetos"]=="windows" then
+ linkoptions {
+ "-L$(shell qmake -query QT_INSTALL_LIBS)",
+ }
+ links {
+ "Qt5Core.dll",
+ "Qt5Gui.dll",
+ "Qt5Widgets.dll",
+ }
+ elseif _OPTIONS["targetos"]=="macosx" then
+ linkoptions {
+ "-F" .. backtick("qmake -query QT_INSTALL_LIBS"),
+ }
+ links {
+ "Qt5Core.framework",
+ "Qt5Gui.framework",
+ "Qt5Widgets.framework",
+ }
+ else
+ if _OPTIONS["QT_HOME"]~=nil then
+ linkoptions {
+ "-L" .. backtick(_OPTIONS["QT_HOME"] .. "/bin/qmake -query QT_INSTALL_LIBS"),
+ }
+ links {
+ "Qt5Core",
+ "Qt5Gui",
+ "Qt5Widgets",
+ }
+ else
+ local str = backtick(pkgconfigcmd() .. " --libs Qt5Widgets")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ end
+ end
+ end
+
+ if _OPTIONS["targetos"]=="windows" then
+ links {
+ "gdi32",
+ "dsound",
+ "dxguid",
+ "oleaut32",
+ "winmm",
+ }
+ elseif _OPTIONS["targetos"]=="macosx" then
+ links {
+ "AudioUnit.framework",
+ "AudioToolbox.framework",
+ "CoreAudio.framework",
+ "CoreServices.framework",
+ }
+ end
+
+ if _OPTIONS["NO_USE_PULSEAUDIO"]=="0" then
+ links {
+ ext_lib("pulse"),
+ }
+ end
+end
+
+
+newoption {
+ trigger = "USE_TAPTUN",
+ description = "Include tap/tun network module",
+ allowed = {
+ { "0", "Don't include tap/tun network module" },
+ { "1", "Include tap/tun network module" },
+ },
+}
+
+newoption {
+ trigger = "USE_PCAP",
+ description = "Include pcap network module",
+ allowed = {
+ { "0", "Don't include pcap network module" },
+ { "1", "Include pcap network module" },
+ },
+}
+
+newoption {
+ trigger = "NO_OPENGL",
+ description = "Disable use of OpenGL",
+ allowed = {
+ { "0", "Enable OpenGL" },
+ { "1", "Disable OpenGL" },
+ },
+}
+
+newoption {
+ trigger = "USE_DISPATCH_GL",
+ description = "Use GL-dispatching",
+ allowed = {
+ { "0", "Link to OpenGL library" },
+ { "1", "Use GL-dispatching" },
+ },
+}
+
+if not _OPTIONS["USE_DISPATCH_GL"] then
+ _OPTIONS["USE_DISPATCH_GL"] = "0"
+end
+
+newoption {
+ trigger = "NO_USE_MIDI",
+ description = "Disable MIDI I/O",
+ allowed = {
+ { "0", "Enable MIDI" },
+ { "1", "Disable MIDI" },
+ },
+}
+
+if not _OPTIONS["NO_USE_MIDI"] then
+ if _OPTIONS["targetos"]=="freebsd" or _OPTIONS["targetos"]=="openbsd" or _OPTIONS["targetos"]=="netbsd" or _OPTIONS["targetos"]=="solaris" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"] == "asmjs" then
+ _OPTIONS["NO_USE_MIDI"] = "1"
+ else
+ _OPTIONS["NO_USE_MIDI"] = "0"
+ end
+end
+
+newoption {
+ trigger = "NO_USE_PORTAUDIO",
+ description = "Disable PortAudio interface",
+ allowed = {
+ { "0", "Enable PortAudio" },
+ { "1", "Disable PortAudio" },
+ },
+}
+
+if not _OPTIONS["NO_USE_PORTAUDIO"] then
+ if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="linux" or _OPTIONS["targetos"]=="macosx" then
+ _OPTIONS["NO_USE_PORTAUDIO"] = "0"
+ else
+ _OPTIONS["NO_USE_PORTAUDIO"] = "1"
+ end
+end
+
+newoption {
+ trigger = "NO_USE_PULSEAUDIO",
+ description = "Disable PulseAudio interface",
+ allowed = {
+ { "0", "Enable PulseAudio" },
+ { "1", "Disable PulseAudio" },
+ },
+}
+
+if not _OPTIONS["NO_USE_PULSEAUDIO"] then
+ if _OPTIONS["targetos"]=="linux" then
+ _OPTIONS["NO_USE_PULSEAUDIO"] = "0"
+ else
+ _OPTIONS["NO_USE_PULSEAUDIO"] = "1"
+ end
+end
+
+newoption {
+ trigger = "MODERN_WIN_API",
+ description = "Use Modern Windows APIs",
+ allowed = {
+ { "0", "Use classic Windows APIs - allows support for XP and later" },
+ { "1", "Use Modern Windows APIs - support for Windows 8.1 and later" },
+ },
+}
+
+newoption {
+ trigger = "USE_QTDEBUG",
+ description = "Use QT debugger",
+ allowed = {
+ { "0", "Don't use Qt debugger" },
+ { "1", "Use Qt debugger" },
+ },
+}
+
+newoption {
+ trigger = "QT_HOME",
+ description = "QT lib location",
+}
+
+
+if not _OPTIONS["USE_TAPTUN"] then
+ if _OPTIONS["targetos"]=="linux" or _OPTIONS["targetos"]=="windows" then
+ _OPTIONS["USE_TAPTUN"] = "1"
+ else
+ _OPTIONS["USE_TAPTUN"] = "0"
+ end
+end
+
+if not _OPTIONS["USE_PCAP"] then
+ if _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="netbsd" then
+ _OPTIONS["USE_PCAP"] = "1"
+ else
+ _OPTIONS["USE_PCAP"] = "0"
+ end
+end
+
+if not _OPTIONS["USE_QTDEBUG"] then
+ if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="solaris" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="asmjs" then
+ _OPTIONS["USE_QTDEBUG"] = "0"
+ else
+ _OPTIONS["USE_QTDEBUG"] = "1"
+ end
+end
diff --git a/docs/release/scripts/src/osd/newui.lua b/docs/release/scripts/src/osd/newui.lua
new file mode 100644
index 00000000000..425eb50ba12
--- /dev/null
+++ b/docs/release/scripts/src/osd/newui.lua
@@ -0,0 +1,273 @@
+-- license:BSD-3-Clause
+-- copyright-holders:Robbbert
+
+---------------------------------------------------------------------------
+--
+-- newui.lua
+--
+-- Rules for the building for Windows
+--
+---------------------------------------------------------------------------
+
+dofile("modules.lua")
+
+premake.make.linkoptions_after = false;
+
+function maintargetosdoptions(_target,_subtarget)
+ osdmodulestargetconf()
+
+ configuration { "mingw*" }
+ links {
+ "mingw32",
+ }
+
+ configuration { }
+
+ if _OPTIONS["DIRECTINPUT"] == "8" then
+ links {
+ "dinput8",
+ }
+ else
+ links {
+ "dinput",
+ }
+ end
+
+ links {
+ "comctl32",
+ "comdlg32",
+ "psapi",
+ "ole32",
+ }
+
+-- needs same resources as messui, because dropdown menus are in mameui.rc
+ override_resources = true;
+ rctarget = _subtarget;
+ local rcfile = MAME_DIR .. "src/osd/winui/" .. _subtarget .. ".rc"
+ local uifile = MAME_DIR .. "src/osd/winui/mameui.rc"
+
+ if not os.isfile(rcfile) then
+ print(string.format("***** %s not found *****",rcfile))
+ os.exit();
+ end
+
+ if not os.isfile(uifile) then
+ print(string.format("***** %s not found *****",uifile))
+ os.exit();
+ end
+
+ files {
+ rcfile,
+ }
+ dependency {
+ { "$(OBJDIR)/".._subtarget..".res" , GEN_DIR .. "/resource/".._subtarget.."vers.rc", true },
+ }
+end
+
+
+newoption {
+ trigger = "DIRECTINPUT",
+ description = "Minimum DirectInput version to support",
+ allowed = {
+ { "7", "Support DirectInput 7 or later" },
+ { "8", "Support DirectInput 8 or later" },
+ },
+}
+
+if not _OPTIONS["DIRECTINPUT"] then
+ _OPTIONS["DIRECTINPUT"] = "8"
+end
+
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("windows_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ qtdebuggerbuild()
+
+project ("osd_" .. _OPTIONS["osd"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind "StaticLib"
+
+ dofile("winui_cfg.lua")
+ osdmodulesbuild()
+
+ defines {
+ "DIRECT3D_VERSION=0x0900",
+ }
+
+ if _OPTIONS["DIRECTINPUT"] == "8" then
+ defines {
+ "DIRECTINPUT_VERSION=0x0800",
+ }
+ else
+ defines {
+ "DIRECTINPUT_VERSION=0x0700",
+ }
+ end
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/frontend/mame",
+ MAME_DIR .. "src/osd/windows",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dintf.h",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dhlsl.cpp",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dcomm.h",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dhlsl.h",
+ MAME_DIR .. "src/osd/modules/render/drawd3d.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawd3d.h",
+ MAME_DIR .. "src/osd/modules/render/drawgdi.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawgdi.h",
+ MAME_DIR .. "src/osd/modules/render/drawnone.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawnone.h",
+ MAME_DIR .. "src/osd/windows/video.cpp",
+ MAME_DIR .. "src/osd/windows/video.h",
+ MAME_DIR .. "src/osd/windows/window.cpp",
+ MAME_DIR .. "src/osd/windows/window.h",
+ MAME_DIR .. "src/osd/modules/osdwindow.cpp",
+ MAME_DIR .. "src/osd/modules/osdwindow.h",
+ MAME_DIR .. "src/osd/windows/winmain.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.h",
+ MAME_DIR .. "src/osd/osdepend.h",
+ MAME_DIR .. "src/osd/winui/newui.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/consolewininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/consolewininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugbaseinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugbaseinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmbasewininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmbasewininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/editwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/editwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/logviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/logviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/logwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/logwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/memoryviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/memoryviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/memorywininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/memorywininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/pointswininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/pointswininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/uimetrics.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/uimetrics.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwin.h",
+ }
+
+
+project ("ocore_" .. _OPTIONS["osd"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind "StaticLib"
+
+ options {
+ "ForceCPP",
+ }
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("windows_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ }
+
+ BASE_TARGETOS = "win32"
+ SDLOS_TARGETOS = "win32"
+ SYNC_IMPLEMENTATION = "windows"
+
+ includedirs {
+ MAME_DIR .. "src/osd/windows",
+ MAME_DIR .. "src/lib/winpcap",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/eigccppc.h",
+ MAME_DIR .. "src/osd/eigccx86.h",
+ MAME_DIR .. "src/osd/eivc.h",
+ MAME_DIR .. "src/osd/eivcx86.h",
+ MAME_DIR .. "src/osd/eminline.h",
+ MAME_DIR .. "src/osd/osdcomm.h",
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/strconv.cpp",
+ MAME_DIR .. "src/osd/strconv.h",
+ MAME_DIR .. "src/osd/windows/main.cpp",
+ MAME_DIR .. "src/osd/osdsync.cpp",
+ MAME_DIR .. "src/osd/osdsync.h",
+ MAME_DIR .. "src/osd/windows/winutf8.cpp",
+ MAME_DIR .. "src/osd/windows/winutf8.h",
+ MAME_DIR .. "src/osd/windows/winutil.cpp",
+ MAME_DIR .. "src/osd/windows/winutil.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/modules/file/windir.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.h",
+ MAME_DIR .. "src/osd/modules/file/winptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/winsocket.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdlib_win32.cpp",
+ }
+
+
+
+--------------------------------------------------
+-- ledutil
+--------------------------------------------------
+
+if _OPTIONS["with-tools"] then
+ project("ledutil")
+ uuid ("061293ca-7290-44ac-b2b5-5913ae8dc9c0")
+ kind "ConsoleApp"
+
+ options {
+ "ForceCPP",
+ }
+
+ targetdir(MAME_DIR)
+
+ links {
+ "ocore_" .. _OPTIONS["osd"],
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/windows/ledutil.cpp",
+ }
+end
diff --git a/docs/release/scripts/src/osd/osdmini.lua b/docs/release/scripts/src/osd/osdmini.lua
new file mode 100644
index 00000000000..b05839e7873
--- /dev/null
+++ b/docs/release/scripts/src/osd/osdmini.lua
@@ -0,0 +1,130 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- osdmini.lua
+--
+-- Rules for the building of osdmini
+--
+---------------------------------------------------------------------------
+
+function maintargetosdoptions(_target,_subtarget)
+end
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("osdmini_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/modules/debugger/debugqt.cpp",
+ }
+
+project ("osd_" .. _OPTIONS["osd"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("osdmini_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/sdl",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "3rdparty/winpcap/Include",
+ MAME_DIR .. "3rdparty/bgfx/include",
+ MAME_DIR .. "3rdparty/bx/include",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/osdnet.cpp",
+ MAME_DIR .. "src/osd/osdnet.h",
+ MAME_DIR .. "src/osd/osdmini/minimain.cpp",
+ MAME_DIR .. "src/osd/osdmini/osdmini.h",
+ MAME_DIR .. "src/osd/osdepend.h",
+ MAME_DIR .. "src/osd/modules/lib/osdobj_common.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdobj_common.h",
+ MAME_DIR .. "src/osd/modules/font/font_sdl.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_windows.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_osx.cpp",
+ MAME_DIR .. "src/osd/modules/font/font_none.cpp",
+ MAME_DIR .. "src/osd/modules/netdev/taptun.cpp",
+ MAME_DIR .. "src/osd/modules/netdev/pcap.cpp",
+ MAME_DIR .. "src/osd/modules/netdev/none.cpp",
+ MAME_DIR .. "src/osd/modules/midi/portmidi.cpp",
+ MAME_DIR .. "src/osd/modules/midi/none.cpp",
+ MAME_DIR .. "src/osd/modules/sound/js_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/direct_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/coreaudio_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/sdl_sound.cpp",
+ MAME_DIR .. "src/osd/modules/sound/none.cpp",
+ MAME_DIR .. "src/osd/modules/sound/xaudio2_sound.cpp",
+ }
+
+project ("ocore_" .. _OPTIONS["osd"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("osdmini_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ }
+
+ if _OPTIONS["targetos"]=="linux" then
+ BASE_TARGETOS = "unix"
+ SDLOS_TARGETOS = "unix"
+ SYNC_IMPLEMENTATION = "tc"
+ end
+
+ if _OPTIONS["targetos"]=="windows" then
+ BASE_TARGETOS = "win32"
+ SDLOS_TARGETOS = "win32"
+ SYNC_IMPLEMENTATION = "windows"
+ end
+
+ if _OPTIONS["targetos"]=="macosx" then
+ BASE_TARGETOS = "unix"
+ SDLOS_TARGETOS = "macosx"
+ SYNC_IMPLEMENTATION = "ntc"
+ end
+
+ files {
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/osdmini/minidir.cpp",
+ MAME_DIR .. "src/osd/osdmini/minifile.cpp",
+ MAME_DIR .. "src/osd/osdmini/minimisc.cpp",
+ MAME_DIR .. "src/osd/osdmini/minitime.cpp",
+ MAME_DIR .. "src/osd/modules/sync/work_mini.cpp",
+ }
diff --git a/docs/release/scripts/src/osd/osdmini_cfg.lua b/docs/release/scripts/src/osd/osdmini_cfg.lua
new file mode 100644
index 00000000000..586075d3cac
--- /dev/null
+++ b/docs/release/scripts/src/osd/osdmini_cfg.lua
@@ -0,0 +1,12 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+defines {
+ "OSD_MINI",
+ "USE_QTDEBUG=0",
+ "USE_SDL",
+ "SDLMAME_NOASM=1",
+ "USE_OPENGL=0",
+ "NO_USE_MIDI=1",
+ "USE_XAUDIO2=0",
+}
diff --git a/docs/release/scripts/src/osd/sdl.lua b/docs/release/scripts/src/osd/sdl.lua
new file mode 100644
index 00000000000..fc8fab036d4
--- /dev/null
+++ b/docs/release/scripts/src/osd/sdl.lua
@@ -0,0 +1,510 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- sdl.lua
+--
+-- Rules for the building with SDL
+--
+---------------------------------------------------------------------------
+
+dofile("modules.lua")
+
+
+function maintargetosdoptions(_target,_subtarget)
+ osdmodulestargetconf()
+
+ if _OPTIONS["USE_DISPATCH_GL"]~="1" and _OPTIONS["MESA_INSTALL_ROOT"] then
+ libdirs {
+ path.join(_OPTIONS["MESA_INSTALL_ROOT"],"lib"),
+ }
+ linkoptions {
+ "-Wl,-rpath=" .. path.join(_OPTIONS["MESA_INSTALL_ROOT"],"lib"),
+ }
+ end
+
+ if _OPTIONS["NO_X11"]~="1" then
+ links {
+ "X11",
+ "Xinerama",
+ }
+ else
+ if _OPTIONS["targetos"]=="linux" or _OPTIONS["targetos"]=="netbsd" or _OPTIONS["targetos"]=="openbsd" then
+ links {
+ "EGL",
+ }
+ end
+ end
+
+ if _OPTIONS["NO_USE_XINPUT"]~="1" then
+ links {
+ "Xext",
+ "Xi",
+ }
+ end
+
+ if BASE_TARGETOS=="unix" and _OPTIONS["targetos"]~="macosx" and _OPTIONS["targetos"]~="android" and _OPTIONS["targetos"]~="asmjs" then
+ links {
+ "SDL2_ttf",
+ }
+ local str = backtick(pkgconfigcmd() .. " --libs fontconfig")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ end
+
+ if _OPTIONS["targetos"]=="windows" then
+ if _OPTIONS["with-bundled-sdl2"]~=nil then
+ configuration { "mingw*"}
+ links {
+ "SDL2",
+ "imm32",
+ "version",
+ "ole32",
+ "oleaut32",
+ }
+ configuration { "vs*" }
+ links {
+ "SDL2",
+ "imm32",
+ "version",
+ }
+ configuration { }
+ else
+ if _OPTIONS["USE_LIBSDL"]~="1" then
+ configuration { "mingw*"}
+ links {
+ "SDL2main",
+ "SDL2",
+ }
+ configuration { "vs*" }
+ links {
+ "SDL2",
+ "imm32",
+ "version",
+ }
+ configuration { }
+ else
+ local str = backtick(sdlconfigcmd() .. " --libs | sed 's/ -lSDLmain//'")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ end
+ configuration { "x32", "vs*" }
+ libdirs {
+ path.join(_OPTIONS["SDL_INSTALL_ROOT"],"lib","x86")
+ }
+ configuration { "x64", "vs*" }
+ libdirs {
+ path.join(_OPTIONS["SDL_INSTALL_ROOT"],"lib","x64")
+ }
+ configuration { }
+ end
+ links {
+ "psapi",
+ }
+ elseif _OPTIONS["targetos"]=="haiku" then
+ links {
+ "network",
+ "bsd",
+ }
+ end
+
+ configuration { "mingw*" or "vs*" }
+ targetprefix "sdl"
+ links {
+ "psapi",
+ "ole32",
+ }
+ configuration { }
+
+ if _OPTIONS["targetos"]=="macosx" then
+ if _OPTIONS["with-bundled-sdl2"]~=nil then
+ links {
+ "SDL2",
+ }
+ end
+ end
+
+end
+
+
+function sdlconfigcmd()
+ if _OPTIONS["targetos"]=="asmjs" then
+ return "sdl2-config"
+ elseif not _OPTIONS["SDL_INSTALL_ROOT"] then
+ return pkgconfigcmd() .. " sdl2"
+ else
+ return path.join(_OPTIONS["SDL_INSTALL_ROOT"],"bin","sdl2") .. "-config"
+ end
+end
+
+
+newoption {
+ trigger = "MESA_INSTALL_ROOT",
+ description = "link against specific GL-Library - also adds rpath to executable (overridden by USE_DISPATCH_GL)",
+}
+
+newoption {
+ trigger = "SDL_INI_PATH",
+ description = "Default search path for .ini files",
+}
+
+newoption {
+ trigger = "NO_X11",
+ description = "Disable use of X11",
+ allowed = {
+ { "0", "Enable X11" },
+ { "1", "Disable X11" },
+ },
+}
+
+if not _OPTIONS["NO_X11"] then
+ if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="asmjs" then
+ _OPTIONS["NO_X11"] = "1"
+ else
+ _OPTIONS["NO_X11"] = "0"
+ end
+end
+
+newoption {
+ trigger = "NO_USE_XINPUT",
+ description = "Disable use of Xinput",
+ allowed = {
+ { "0", "Enable Xinput" },
+ { "1", "Disable Xinput" },
+ },
+}
+
+if not _OPTIONS["NO_USE_XINPUT"] then
+ if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="asmjs" then
+ _OPTIONS["NO_USE_XINPUT"] = "1"
+ else
+ _OPTIONS["NO_USE_XINPUT"] = "0"
+ end
+end
+
+newoption {
+ trigger = "NO_USE_XINPUT_WII_LIGHTGUN_HACK",
+ description = "Disable use of Xinput Wii Lightgun Hack",
+ allowed = {
+ { "0", "Enable Xinput Wii Lightgun Hack" },
+ { "1", "Disable Xinput Wii Lightgun Hack" },
+ },
+}
+
+if not _OPTIONS["NO_USE_XINPUT_WII_LIGHTGUN_HACK"] then
+ _OPTIONS["NO_USE_XINPUT_WII_LIGHTGUN_HACK"] = "1"
+end
+
+newoption {
+ trigger = "SDL2_MULTIAPI",
+ description = "Use couriersud's multi-keyboard patch for SDL 2.1? (this API was removed prior to the 2.0 release)",
+ allowed = {
+ { "0", "Use single-keyboard API" },
+ { "1", "Use multi-keyboard API" },
+ },
+}
+
+if not _OPTIONS["SDL2_MULTIAPI"] then
+ _OPTIONS["SDL2_MULTIAPI"] = "0"
+end
+
+newoption {
+ trigger = "SDL_INSTALL_ROOT",
+ description = "Equivalent to the ./configure --prefix=<path>",
+}
+
+newoption {
+ trigger = "SDL_FRAMEWORK_PATH",
+ description = "Location of SDL framework for custom OS X installations",
+}
+
+if not _OPTIONS["SDL_FRAMEWORK_PATH"] then
+ _OPTIONS["SDL_FRAMEWORK_PATH"] = "/Library/Frameworks/"
+end
+
+newoption {
+ trigger = "USE_LIBSDL",
+ description = "Use SDL library on OS (rather than framework/dll)",
+ allowed = {
+ { "0", "Use framework/dll" },
+ { "1", "Use library" },
+ },
+}
+
+if not _OPTIONS["USE_LIBSDL"] then
+ _OPTIONS["USE_LIBSDL"] = "0"
+end
+
+
+BASE_TARGETOS = "unix"
+SDLOS_TARGETOS = "unix"
+if _OPTIONS["targetos"]=="linux" then
+elseif _OPTIONS["targetos"]=="openbsd" then
+elseif _OPTIONS["targetos"]=="netbsd" then
+elseif _OPTIONS["targetos"]=="haiku" then
+elseif _OPTIONS["targetos"]=="asmjs" then
+elseif _OPTIONS["targetos"]=="windows" then
+ BASE_TARGETOS = "win32"
+ SDLOS_TARGETOS = "win32"
+elseif _OPTIONS["targetos"]=="macosx" then
+ SDLOS_TARGETOS = "macosx"
+end
+
+if _OPTIONS["with-bundled-sdl2"]~=nil then
+ includedirs {
+ GEN_DIR .. "includes",
+ }
+end
+if BASE_TARGETOS=="unix" then
+ if _OPTIONS["targetos"]=="macosx" then
+ local os_version = str_to_version(backtick("sw_vers -productVersion"))
+
+ links {
+ "Cocoa.framework",
+ }
+ linkoptions {
+ "-framework QuartzCore",
+ "-framework OpenGL",
+ }
+
+
+ if os_version>=101100 then
+ linkoptions {
+ "-weak_framework Metal",
+ }
+ end
+ if _OPTIONS["with-bundled-sdl2"]~=nil then
+ linkoptions {
+ "-framework AudioToolbox",
+ "-framework AudioUnit",
+ "-framework CoreAudio",
+ "-framework Carbon",
+ "-framework ForceFeedback",
+ "-framework IOKit",
+ "-framework CoreVideo",
+ }
+ else
+ if _OPTIONS["USE_LIBSDL"]~="1" then
+ linkoptions {
+ "-F" .. _OPTIONS["SDL_FRAMEWORK_PATH"],
+ }
+ links {
+ "SDL2.framework",
+ }
+ else
+ local str = backtick(sdlconfigcmd() .. " --libs --static | sed 's/-lSDLmain//'")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ end
+ end
+ else
+ if _OPTIONS["NO_X11"]=="1" then
+ _OPTIONS["USE_QTDEBUG"] = "0"
+ else
+ libdirs {
+ "/usr/X11/lib",
+ "/usr/X11R6/lib",
+ "/usr/openwin/lib",
+ }
+ end
+ if _OPTIONS["with-bundled-sdl2"]~=nil then
+ if _OPTIONS["targetos"]~="android" then
+ links {
+ "SDL2",
+ }
+ end
+ else
+ local str = backtick(sdlconfigcmd() .. " --libs")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ end
+
+ if _OPTIONS["targetos"]~="haiku" and _OPTIONS["targetos"]~="android" then
+ links {
+ "m",
+ "pthread",
+ }
+ if _OPTIONS["targetos"]=="solaris" then
+ links {
+ "socket",
+ "nsl",
+ }
+ elseif _OPTIONS["targetos"]~="asmjs" then
+ links {
+ "util",
+ }
+ end
+ end
+ end
+end
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("sdl_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ configuration { "linux-* or freebsd" }
+ buildoptions {
+ "-fPIC",
+ }
+ configuration { }
+
+ qtdebuggerbuild()
+
+project ("osd_" .. _OPTIONS["osd"])
+ targetsubdir(_OPTIONS["target"] .."_" .._OPTIONS["subtarget"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("sdl_cfg.lua")
+ osdmodulesbuild()
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/osd/sdl",
+ }
+
+ if _OPTIONS["targetos"]=="windows" then
+ files {
+ MAME_DIR .. "src/osd/windows/main.cpp",
+ }
+ end
+
+ if _OPTIONS["targetos"]=="macosx" then
+ files {
+ MAME_DIR .. "src/osd/modules/debugger/debugosx.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/breakpointsview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/breakpointsview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/consoleview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/consoleview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugcommandhistory.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugcommandhistory.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugconsole.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugconsole.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugwindowhandler.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugwindowhandler.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/deviceinfoviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/deviceinfoviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/devicesviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/devicesviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/disassemblyview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/errorlogviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/memoryviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/pointsviewer.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/pointsviewer.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registerpointsview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registerpointsview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registersview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/registersview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/watchpointsview.mm",
+ MAME_DIR .. "src/osd/modules/debugger/osx/watchpointsview.h",
+ MAME_DIR .. "src/osd/modules/debugger/osx/debugosx.h",
+ }
+ end
+
+ files {
+ MAME_DIR .. "src/osd/sdl/osdsdl.h",
+ MAME_DIR .. "src/osd/sdl/sdlprefix.h",
+ MAME_DIR .. "src/osd/sdl/sdlmain.cpp",
+ MAME_DIR .. "src/osd/osdepend.h",
+ MAME_DIR .. "src/osd/sdl/video.cpp",
+ MAME_DIR .. "src/osd/sdl/window.cpp",
+ MAME_DIR .. "src/osd/sdl/window.h",
+ MAME_DIR .. "src/osd/modules/osdwindow.cpp",
+ MAME_DIR .. "src/osd/modules/osdwindow.h",
+ MAME_DIR .. "src/osd/modules/render/drawsdl.cpp",
+ }
+ files {
+ MAME_DIR .. "src/osd/modules/render/draw13.cpp",
+ MAME_DIR .. "src/osd/modules/render/blit13.h",
+ }
+
+
+project ("ocore_" .. _OPTIONS["osd"])
+ targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("sdl_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/sdl",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/osdfile.h",
+ MAME_DIR .. "src/osd/strconv.cpp",
+ MAME_DIR .. "src/osd/strconv.h",
+ MAME_DIR .. "src/osd/osdsync.cpp",
+ MAME_DIR .. "src/osd/osdsync.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/modules/lib/osdlib_" .. SDLOS_TARGETOS .. ".cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdlib.h",
+ }
+
+ if BASE_TARGETOS=="unix" then
+ files {
+ MAME_DIR .. "src/osd/modules/file/posixdir.cpp",
+ MAME_DIR .. "src/osd/modules/file/posixfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/posixfile.h",
+ MAME_DIR .. "src/osd/modules/file/posixptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/posixsocket.cpp",
+ }
+ elseif BASE_TARGETOS=="win32" then
+ includedirs {
+ MAME_DIR .. "src/osd/windows",
+ }
+ files {
+ MAME_DIR .. "src/osd/modules/file/windir.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.h",
+ MAME_DIR .. "src/osd/modules/file/winptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/winsocket.cpp",
+ MAME_DIR .. "src/osd/windows/winutil.cpp", -- FIXME put the necessary functions somewhere more appropriate
+ }
+ else
+ files {
+ MAME_DIR .. "src/osd/modules/file/stdfile.cpp",
+ }
+ end
+
+
diff --git a/docs/release/scripts/src/osd/sdl_cfg.lua b/docs/release/scripts/src/osd/sdl_cfg.lua
new file mode 100644
index 00000000000..26850d4ec85
--- /dev/null
+++ b/docs/release/scripts/src/osd/sdl_cfg.lua
@@ -0,0 +1,174 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+dofile('modules.lua')
+
+forcedincludes {
+ MAME_DIR .. "src/osd/sdl/sdlprefix.h"
+}
+
+if _OPTIONS["USE_TAPTUN"]=="1" or _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "USE_NETWORK",
+ }
+ if _OPTIONS["USE_TAPTUN"]=="1" then
+ defines {
+ "OSD_NET_USE_TAPTUN",
+ }
+ end
+ if _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "OSD_NET_USE_PCAP",
+ }
+ end
+end
+
+if _OPTIONS["NO_OPENGL"]~="1" and _OPTIONS["USE_DISPATCH_GL"]~="1" and _OPTIONS["MESA_INSTALL_ROOT"] then
+ includedirs {
+ path.join(_OPTIONS["MESA_INSTALL_ROOT"],"include"),
+ }
+end
+
+if _OPTIONS["SDL_INI_PATH"]~=nil then
+ defines {
+ "'INI_PATH=\"" .. _OPTIONS["SDL_INI_PATH"] .. "\"'",
+ }
+end
+
+if _OPTIONS["NO_X11"]=="1" then
+ defines {
+ "SDLMAME_NO_X11",
+ }
+else
+ defines {
+ "SDLMAME_X11",
+ }
+ includedirs {
+ "/usr/X11/include",
+ "/usr/X11R6/include",
+ "/usr/openwin/include",
+ }
+end
+
+if _OPTIONS["NO_USE_XINPUT"]=="1" then
+ defines {
+ "USE_XINPUT=0",
+ }
+else
+ defines {
+ "USE_XINPUT=1",
+ "USE_XINPUT_DEBUG=0",
+ }
+end
+
+if _OPTIONS["NO_USE_XINPUT_WII_LIGHTGUN_HACK"]=="1" then
+ defines {
+ "USE_XINPUT_WII_LIGHTGUN_HACK=0",
+ }
+else
+ defines {
+ "USE_XINPUT_WII_LIGHTGUN_HACK=1",
+ }
+end
+
+if _OPTIONS["NO_USE_MIDI"]~="1" and _OPTIONS["targetos"]=="linux" then
+ buildoptions {
+ backtick(pkgconfigcmd() .. " --cflags alsa"),
+ }
+end
+
+defines {
+ "SDLMAME_SDL2=1",
+}
+if _OPTIONS["SDL2_MULTIAPI"]=="1" then
+ defines {
+ "SDL2_MULTIAPI",
+ }
+end
+
+defines {
+ "OSD_SDL",
+}
+
+if BASE_TARGETOS=="unix" then
+ defines {
+ "SDLMAME_UNIX",
+ }
+ if _OPTIONS["targetos"]=="macosx" then
+ if _OPTIONS["with-bundled-sdl2"]==nil then
+ if _OPTIONS["USE_LIBSDL"]~="1" then
+ buildoptions {
+ "-F" .. _OPTIONS["SDL_FRAMEWORK_PATH"],
+ }
+ else
+ defines {
+ "MACOSX_USE_LIBSDL",
+ }
+ buildoptions {
+ backtick(sdlconfigcmd() .. " --cflags | sed 's:/SDL2::'"),
+ }
+ end
+ end
+ else
+ buildoptions {
+ backtick(sdlconfigcmd() .. " --cflags"),
+ }
+ if _OPTIONS["targetos"]~="asmjs" then
+ buildoptions {
+ backtick(pkgconfigcmd() .. " --cflags fontconfig"),
+ }
+ end
+ end
+end
+
+if _OPTIONS["targetos"]=="windows" then
+ configuration { "mingw* or vs*" }
+ defines {
+ "UNICODE",
+ "_UNICODE",
+ "_WIN32_WINNT=0x0501",
+ "WIN32_LEAN_AND_MEAN",
+ "NOMINMAX",
+ }
+
+ configuration { }
+
+elseif _OPTIONS["targetos"]=="linux" then
+ if _OPTIONS["QT_HOME"]~=nil then
+ buildoptions {
+ "-I" .. backtick(_OPTIONS["QT_HOME"] .. "/bin/qmake -query QT_INSTALL_HEADERS"),
+ }
+ else
+ buildoptions {
+ backtick(pkgconfigcmd() .. " --cflags Qt5Widgets"),
+ }
+ end
+elseif _OPTIONS["targetos"]=="macosx" then
+ defines {
+ "SDLMAME_MACOSX",
+ "SDLMAME_DARWIN",
+ }
+elseif _OPTIONS["targetos"]=="freebsd" then
+ buildoptions {
+ -- /usr/local/include is not considered a system include director on FreeBSD. GL.h resides there and throws warnings
+ "-isystem /usr/local/include",
+ }
+end
+
+configuration { "osx*" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/osx",
+ }
+
+configuration { "freebsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+configuration { "netbsd" }
+ includedirs {
+ MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
+ }
+
+configuration { }
+
diff --git a/docs/release/scripts/src/osd/uwp.lua b/docs/release/scripts/src/osd/uwp.lua
new file mode 100644
index 00000000000..1cb0eef5c75
--- /dev/null
+++ b/docs/release/scripts/src/osd/uwp.lua
@@ -0,0 +1,122 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- uwp.lua
+--
+-- Rules for the building of UWP OSD
+--
+---------------------------------------------------------------------------
+
+dofile("modules.lua")
+
+function maintargetosdoptions(_target,_subtarget)
+end
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("uwp_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/modules/debugger/debugqt.cpp",
+ }
+
+project ("osd_" .. _OPTIONS["osd"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("uwp_cfg.lua")
+ osdmodulesbuild()
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd/uwp",
+ MAME_DIR .. "src/osd/windows",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/uwp/video.cpp",
+ MAME_DIR .. "src/osd/uwp/video.h",
+ MAME_DIR .. "src/osd/uwp/window.cpp",
+ MAME_DIR .. "src/osd/uwp/window.h",
+ MAME_DIR .. "src/osd/windows/winutf8.cpp",
+ MAME_DIR .. "src/osd/windows/winutf8.h",
+ MAME_DIR .. "src/osd/modules/osdwindow.cpp",
+ MAME_DIR .. "src/osd/modules/osdwindow.h",
+ MAME_DIR .. "src/osd/windows/winmain.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.h",
+ MAME_DIR .. "src/osd/modules/render/drawnone.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawnone.h",
+ MAME_DIR .. "src/osd/uwp/uwpcompat.cpp",
+ MAME_DIR .. "src/osd/uwp/uwpcompat.h",
+ MAME_DIR .. "src/osd/osdepend.h",
+ }
+
+project ("ocore_" .. _OPTIONS["osd"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("uwp_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/osdcomm.h",
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/osdfile.h",
+ MAME_DIR .. "src/osd/strconv.cpp",
+ MAME_DIR .. "src/osd/strconv.h",
+ MAME_DIR .. "src/osd/osdsync.cpp",
+ MAME_DIR .. "src/osd/osdsync.h",
+ MAME_DIR .. "src/osd/windows/winutil.cpp",
+ MAME_DIR .. "src/osd/windows/winutil.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/modules/file/winrtdir.cpp",
+ MAME_DIR .. "src/osd/modules/file/winrtfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/winrtfile.h",
+ MAME_DIR .. "src/osd/modules/file/winrtptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/winrtsocket.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdlib_uwp.cpp",
+ }
diff --git a/docs/release/scripts/src/osd/uwp_cfg.lua b/docs/release/scripts/src/osd/uwp_cfg.lua
new file mode 100644
index 00000000000..28892656728
--- /dev/null
+++ b/docs/release/scripts/src/osd/uwp_cfg.lua
@@ -0,0 +1,20 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+defines {
+ "OSD_UWP=1",
+ "USE_QTDEBUG=0",
+ "SDLMAME_NOASM=1",
+ "USE_OPENGL=0",
+ "NO_USE_MIDI=1",
+ "WINVER=0x0603",
+ "_WIN32_WINNT=0x0603",
+ "NTDDI_VERSION=0x06030000",
+ "MODERN_WIN_API",
+ "WIN32_LEAN_AND_MEAN",
+ "NOMINMAX",
+}
+
+flags {
+ "Unicode",
+}
diff --git a/docs/release/scripts/src/osd/windows.lua b/docs/release/scripts/src/osd/windows.lua
new file mode 100644
index 00000000000..2f77844d17a
--- /dev/null
+++ b/docs/release/scripts/src/osd/windows.lua
@@ -0,0 +1,265 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- windows.lua
+--
+-- Rules for the building for Windows
+--
+---------------------------------------------------------------------------
+
+dofile("modules.lua")
+
+
+function maintargetosdoptions(_target,_subtarget)
+ osdmodulestargetconf()
+
+ configuration { "mingw*" }
+ links {
+ "mingw32",
+ }
+
+ configuration { }
+
+ if _OPTIONS["USE_SDL"] == "1" then
+ links {
+ "SDL.dll",
+ }
+ end
+
+ links {
+ "dinput8",
+ "comctl32",
+ "comdlg32",
+ "psapi",
+ "ole32",
+ "shlwapi",
+ }
+end
+
+
+newoption {
+ trigger = "USE_SDL",
+ description = "Enable SDL sound output",
+ allowed = {
+ { "0", "Disable SDL sound output" },
+ { "1", "Enable SDL sound output" },
+ },
+}
+
+if not _OPTIONS["USE_SDL"] then
+ _OPTIONS["USE_SDL"] = "0"
+end
+
+newoption {
+ trigger = "CYGWIN_BUILD",
+ description = "Build with Cygwin tools",
+ allowed = {
+ { "0", "Build with MinGW tools" },
+ { "1", "Build with Cygwin tools" },
+ },
+}
+
+if not _OPTIONS["CYGWIN_BUILD"] then
+ _OPTIONS["CYGWIN_BUILD"] = "0"
+end
+
+
+if _OPTIONS["CYGWIN_BUILD"] == "1" then
+ buildoptions {
+ "-mmo-cygwin",
+ }
+ linkoptions {
+ "-mno-cygwin",
+ }
+end
+
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("windows_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ qtdebuggerbuild()
+
+project ("osd_" .. _OPTIONS["osd"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("windows_cfg.lua")
+ osdmodulesbuild()
+
+ defines {
+ "DIRECT3D_VERSION=0x0900",
+ "DIRECTINPUT_VERSION=0x0800",
+ }
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd/windows",
+ }
+
+ if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") then
+ buildoptions_cpp {
+ "-Wno-ignored-attributes",-- many instances in ImGui
+ }
+ end
+
+ files {
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dhlsl.cpp",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dcomm.h",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dhlsl.h",
+ MAME_DIR .. "src/osd/modules/render/drawd3d.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawd3d.h",
+ MAME_DIR .. "src/osd/modules/render/drawgdi.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawgdi.h",
+ MAME_DIR .. "src/osd/modules/render/drawnone.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawnone.h",
+ MAME_DIR .. "src/osd/windows/video.cpp",
+ MAME_DIR .. "src/osd/windows/video.h",
+ MAME_DIR .. "src/osd/windows/window.cpp",
+ MAME_DIR .. "src/osd/windows/window.h",
+ MAME_DIR .. "src/osd/modules/osdwindow.cpp",
+ MAME_DIR .. "src/osd/modules/osdwindow.h",
+ MAME_DIR .. "src/osd/windows/winmenu.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.h",
+ MAME_DIR .. "src/osd/osdepend.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/consolewininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/consolewininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugbaseinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugbaseinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmbasewininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmbasewininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/editwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/editwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/logwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/logwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/logviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/logviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/memoryviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/memoryviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/memorywininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/memorywininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/pointswininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/pointswininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/uimetrics.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/uimetrics.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwin.h",
+ }
+
+
+project ("ocore_" .. _OPTIONS["osd"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("windows_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ }
+
+ BASE_TARGETOS = "win32"
+ SDLOS_TARGETOS = "win32"
+
+ includedirs {
+ MAME_DIR .. "src/osd/windows",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/eigccppc.h",
+ MAME_DIR .. "src/osd/eigccx86.h",
+ MAME_DIR .. "src/osd/eivc.h",
+ MAME_DIR .. "src/osd/eivcarm.h",
+ MAME_DIR .. "src/osd/eivcx86.h",
+ MAME_DIR .. "src/osd/eminline.h",
+ MAME_DIR .. "src/osd/osdcomm.h",
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/strconv.cpp",
+ MAME_DIR .. "src/osd/strconv.h",
+ MAME_DIR .. "src/osd/osdsync.cpp",
+ MAME_DIR .. "src/osd/osdsync.h",
+ MAME_DIR .. "src/osd/windows/main.cpp",
+ MAME_DIR .. "src/osd/windows/winutf8.cpp",
+ MAME_DIR .. "src/osd/windows/winutf8.h",
+ MAME_DIR .. "src/osd/windows/winutil.cpp",
+ MAME_DIR .. "src/osd/windows/winutil.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/modules/file/windir.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.h",
+ MAME_DIR .. "src/osd/modules/file/winptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/winsocket.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdlib_win32.cpp",
+ }
+
+
+
+--------------------------------------------------
+-- ledutil
+--------------------------------------------------
+
+if _OPTIONS["with-tools"] then
+ project("ledutil")
+ uuid ("061293ca-7290-44ac-b2b5-5913ae8dc9c0")
+ kind "ConsoleApp"
+
+ flags {
+ "Symbols", -- always include minimum symbols for executables
+ }
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+
+ links {
+ "ocore_" .. _OPTIONS["osd"],
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/windows/ledutil.cpp",
+ }
+end
diff --git a/docs/release/scripts/src/osd/windows_cfg.lua b/docs/release/scripts/src/osd/windows_cfg.lua
new file mode 100644
index 00000000000..8faf636e0bc
--- /dev/null
+++ b/docs/release/scripts/src/osd/windows_cfg.lua
@@ -0,0 +1,67 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+defines {
+ "OSD_WINDOWS",
+ "WIN32_LEAN_AND_MEAN",
+ "NOMINMAX",
+}
+
+configuration { "mingw* or vs*" }
+ defines {
+ "UNICODE",
+ "_UNICODE"
+ }
+
+configuration { "vs*" }
+ flags {
+ "Unicode",
+ }
+
+configuration { }
+
+if not _OPTIONS["MODERN_WIN_API"] then
+ _OPTIONS["MODERN_WIN_API"] = "0"
+end
+
+if _OPTIONS["MODERN_WIN_API"]=="1" then
+ defines {
+ "WINVER=0x0602",
+ "_WIN32_WINNT=0x0602",
+ "NTDDI_VERSION=0x06030000",
+ "MODERN_WIN_API",
+ }
+else
+ defines {
+ "_WIN32_WINNT=0x0501",
+ }
+end
+
+if _OPTIONS["USE_TAPTUN"]=="1" or _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "USE_NETWORK",
+ }
+ if _OPTIONS["USE_TAPTUN"]=="1" then
+ defines {
+ "OSD_NET_USE_TAPTUN",
+ }
+ end
+ if _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "OSD_NET_USE_PCAP",
+ }
+ end
+end
+
+if _OPTIONS["USE_SDL"]=="1" then
+ defines {
+ "SDLMAME_SDL2=1",
+ "USE_XINPUT=0",
+ "USE_SDL=1",
+ "USE_SDL_SOUND",
+ }
+else
+ defines {
+ "USE_SDL=0",
+ }
+end
diff --git a/docs/release/scripts/src/osd/winui.lua b/docs/release/scripts/src/osd/winui.lua
new file mode 100644
index 00000000000..b691f1d701d
--- /dev/null
+++ b/docs/release/scripts/src/osd/winui.lua
@@ -0,0 +1,322 @@
+-- license:BSD-3-Clause
+-- copyright-holders:Robbbert
+
+---------------------------------------------------------------------------
+--
+-- winui.lua
+--
+-- Rules for the building for Windows
+--
+---------------------------------------------------------------------------
+
+dofile("modules.lua")
+
+premake.make.linkoptions_after = false;
+
+function maintargetosdoptions(_target,_subtarget)
+ kind "WindowedApp"
+
+ osdmodulestargetconf()
+
+ configuration { "mingw*-gcc" }
+ linkoptions {
+ "-municode",
+ "-lmingw32",
+ "-Wl,--allow-multiple-definition",
+ }
+
+ configuration { "x64", "Release" }
+ targetsuffix "ui"
+
+ configuration { "x64", "Debug" }
+ targetsuffix "uid"
+
+ configuration { "x32", "Release" }
+ targetsuffix "ui32"
+
+ configuration { "x32", "Debug" }
+ targetsuffix "ui32d"
+
+ configuration { "Native", "Release" }
+ targetsuffix "ui"
+
+ configuration { "Native", "Debug" }
+ targetsuffix "uid"
+
+ configuration { }
+
+ if _OPTIONS["DIRECTINPUT"] == "8" then
+ links {
+ "dinput8",
+ }
+ else
+ links {
+ "dinput",
+ }
+ end
+
+ links {
+ "comctl32",
+ "comdlg32",
+ "psapi",
+ "ole32",
+-- "shell32",
+ "uxtheme",
+ }
+
+-- Local file gives correct icon in mame instance inside of mameui
+-- Local file must #include mameui.rc
+ override_resources = true;
+ rctarget = _target;
+ local rcfile = MAME_DIR .. "src/osd/winui/" .. _target .. ".rc"
+ local uifile = MAME_DIR .. "src/osd/winui/hbmameui.rc"
+
+ if not os.isfile(rcfile) then
+ print(string.format("***** %s not found *****",rcfile))
+ os.exit();
+ end
+
+ if not os.isfile(uifile) then
+ print(string.format("***** %s not found *****",uifile))
+ os.exit();
+ end
+
+ files {
+ rcfile,
+ }
+ dependency {
+ { "$(OBJDIR)/".._target ..".res" , GEN_DIR .. "/resource/" .. _target .. "vers.rc", true },
+ }
+end
+
+
+newoption {
+ trigger = "DIRECTINPUT",
+ description = "Minimum DirectInput version to support",
+ allowed = {
+ { "7", "Support DirectInput 7 or later" },
+ { "8", "Support DirectInput 8 or later" },
+ },
+}
+
+if not _OPTIONS["DIRECTINPUT"] then
+ _OPTIONS["DIRECTINPUT"] = "8"
+end
+
+
+project ("qtdbg_" .. _OPTIONS["osd"])
+ uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"]))
+ kind (LIBTYPE)
+
+ dofile("winui_cfg.lua")
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices", -- accessing imagedev from debugger
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ }
+ qtdebuggerbuild()
+
+project ("osd_" .. _OPTIONS["osd"])
+ uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
+ kind "StaticLib"
+
+ dofile("winui_cfg.lua")
+ osdmodulesbuild()
+
+ defines {
+ "DIRECT3D_VERSION=0x0900",
+ }
+
+ if _OPTIONS["DIRECTINPUT"] == "8" then
+ defines {
+ "DIRECTINPUT_VERSION=0x0800",
+ }
+ else
+ defines {
+ "DIRECTINPUT_VERSION=0x0700",
+ }
+ end
+
+ includedirs {
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/osd/modules/render",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/frontend/mame",
+ MAME_DIR .. "src/osd/windows",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dintf.h",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dhlsl.cpp",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dcomm.h",
+ MAME_DIR .. "src/osd/modules/render/d3d/d3dhlsl.h",
+ MAME_DIR .. "src/osd/modules/render/drawd3d.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawd3d.h",
+ MAME_DIR .. "src/osd/modules/render/drawgdi.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawgdi.h",
+ MAME_DIR .. "src/osd/modules/render/drawnone.cpp",
+ MAME_DIR .. "src/osd/modules/render/drawnone.h",
+ MAME_DIR .. "src/osd/windows/video.cpp",
+ MAME_DIR .. "src/osd/windows/video.h",
+ MAME_DIR .. "src/osd/windows/window.cpp",
+ MAME_DIR .. "src/osd/windows/window.h",
+ MAME_DIR .. "src/osd/modules/osdwindow.cpp",
+ MAME_DIR .. "src/osd/modules/osdwindow.h",
+ MAME_DIR .. "src/osd/windows/winmain.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.h",
+ MAME_DIR .. "src/osd/osdepend.h",
+ MAME_DIR .. "src/osd/windows/winmenu.cpp",
+-- MAME_DIR .. "src/osd/winui/newui.cpp",
+ MAME_DIR .. "src/osd/windows/winmain.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/consolewininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/consolewininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugbaseinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugbaseinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmbasewininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmbasewininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/disasmwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/editwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/editwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/logviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/logviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/logwininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/logwininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/memoryviewinfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/memoryviewinfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/memorywininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/memorywininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/pointswininfo.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/pointswininfo.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/uimetrics.cpp",
+ MAME_DIR .. "src/osd/modules/debugger/win/uimetrics.h",
+ MAME_DIR .. "src/osd/modules/debugger/win/debugwin.h",
+ MAME_DIR .. "src/osd/winui/bitmask.cpp",
+ MAME_DIR .. "src/osd/winui/columnedit.cpp",
+ MAME_DIR .. "src/osd/winui/datamap.cpp",
+ MAME_DIR .. "src/osd/winui/dialogs.cpp",
+ MAME_DIR .. "src/osd/winui/dijoystick.cpp",
+-- MAME_DIR .. "src/osd/winui/directdraw.cpp",
+ MAME_DIR .. "src/osd/winui/directinput.cpp",
+ MAME_DIR .. "src/osd/winui/directories.cpp",
+ MAME_DIR .. "src/osd/winui/dirwatch.cpp",
+-- MAME_DIR .. "src/osd/winui/dxdecode.cpp",
+ MAME_DIR .. "src/osd/winui/emu_opts.cpp",
+ MAME_DIR .. "src/osd/winui/help.cpp",
+ MAME_DIR .. "src/osd/winui/helpids.cpp",
+ MAME_DIR .. "src/osd/winui/history.cpp",
+ MAME_DIR .. "src/osd/winui/layout.cpp",
+ MAME_DIR .. "src/osd/winui/mui_audit.cpp",
+ MAME_DIR .. "src/osd/winui/mui_main.cpp",
+ MAME_DIR .. "src/osd/winui/mui_opts.cpp",
+ MAME_DIR .. "src/osd/winui/mui_util.cpp",
+ MAME_DIR .. "src/osd/winui/picker.cpp",
+ MAME_DIR .. "src/osd/winui/properties.cpp",
+ MAME_DIR .. "src/osd/winui/resource.h",
+ MAME_DIR .. "src/osd/winui/screenshot.cpp",
+ MAME_DIR .. "src/osd/winui/splitters.cpp",
+ MAME_DIR .. "src/osd/winui/tabview.cpp",
+ MAME_DIR .. "src/osd/winui/treeview.cpp",
+ MAME_DIR .. "src/osd/winui/winui.cpp",
+ }
+
+project ("ocore_" .. _OPTIONS["osd"])
+ uuid (os.uuid("ocore_" .. _OPTIONS["osd"]))
+ kind "StaticLib"
+
+ options {
+ "ForceCPP",
+ }
+ removeflags {
+ "SingleOutputDir",
+ }
+
+ dofile("windows_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/osd/modules/file",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ }
+
+ BASE_TARGETOS = "win32"
+ SDLOS_TARGETOS = "win32"
+ SYNC_IMPLEMENTATION = "windows"
+
+ includedirs {
+ MAME_DIR .. "src/osd/windows",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/eigccppc.h",
+ MAME_DIR .. "src/osd/eigccx86.h",
+ MAME_DIR .. "src/osd/eivc.h",
+ MAME_DIR .. "src/osd/eivcx86.h",
+ MAME_DIR .. "src/osd/eminline.h",
+ MAME_DIR .. "src/osd/osdcomm.h",
+ MAME_DIR .. "src/osd/osdcore.cpp",
+ MAME_DIR .. "src/osd/osdcore.h",
+ MAME_DIR .. "src/osd/strconv.cpp",
+ MAME_DIR .. "src/osd/strconv.h",
+ MAME_DIR .. "src/osd/windows/main.cpp",
+ MAME_DIR .. "src/osd/osdsync.cpp",
+ MAME_DIR .. "src/osd/osdsync.h",
+ MAME_DIR .. "src/osd/windows/winutf8.cpp",
+ MAME_DIR .. "src/osd/windows/winutf8.h",
+ MAME_DIR .. "src/osd/windows/winutil.cpp",
+ MAME_DIR .. "src/osd/windows/winutil.h",
+ MAME_DIR .. "src/osd/modules/osdmodule.cpp",
+ MAME_DIR .. "src/osd/modules/osdmodule.h",
+ MAME_DIR .. "src/osd/modules/file/windir.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.cpp",
+ MAME_DIR .. "src/osd/modules/file/winfile.h",
+ MAME_DIR .. "src/osd/modules/file/winptty.cpp",
+ MAME_DIR .. "src/osd/modules/file/winsocket.cpp",
+ MAME_DIR .. "src/osd/modules/lib/osdlib_win32.cpp",
+ }
+
+
+--------------------------------------------------
+-- ledutil
+--------------------------------------------------
+
+if _OPTIONS["with-tools"] then
+ project("ledutil")
+ uuid ("061293ca-7290-44ac-b2b5-5913ae8dc9c0")
+ kind "ConsoleApp"
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+
+ links {
+ "ocore_" .. _OPTIONS["osd"],
+ }
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ }
+
+ files {
+ MAME_DIR .. "src/osd/windows/ledutil.cpp",
+ }
+end
+
diff --git a/docs/release/scripts/src/osd/winui_cfg.lua b/docs/release/scripts/src/osd/winui_cfg.lua
new file mode 100644
index 00000000000..5823a20b171
--- /dev/null
+++ b/docs/release/scripts/src/osd/winui_cfg.lua
@@ -0,0 +1,35 @@
+defines {
+ "UNICODE",
+ "_UNICODE",
+ "OSD_WINDOWS",
+ "USE_SDL=0",
+ --"WIN95_MULTIMON"
+ "_WIN32_WINNT=0x0501",
+ "USE_QTDEBUG=0",
+ "WIN32_LEAN_AND_MEAN",
+ "NOMINMAX",
+}
+
+configuration { "vs*" }
+ flags {
+ "Unicode",
+ }
+
+configuration { }
+
+if _OPTIONS["USE_TAPTUN"]=="1" or _OPTIONS["USE_PCAP"]==1 then
+ defines {
+ "USE_NETWORK",
+ }
+ if _OPTIONS["USE_TAPTUN"]=="1" then
+ defines {
+ "OSD_NET_USE_TAPTUN",
+ }
+ end
+ if _OPTIONS["USE_PCAP"]=="1" then
+ defines {
+ "OSD_NET_USE_PCAP",
+ }
+ end
+end
+
diff --git a/docs/release/scripts/src/sound.lua b/docs/release/scripts/src/sound.lua
new file mode 100644
index 00000000000..f9710d96547
--- /dev/null
+++ b/docs/release/scripts/src/sound.lua
@@ -0,0 +1,1567 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- sound.lua
+--
+-- Rules for building sound cores
+--
+----------------------------------------------------------------------------
+
+files {
+ MAME_DIR .. "src/devices/sound/bbd.cpp",
+ MAME_DIR .. "src/devices/sound/bbd.h",
+ MAME_DIR .. "src/devices/sound/flt_biquad.cpp",
+ MAME_DIR .. "src/devices/sound/flt_biquad.h",
+ MAME_DIR .. "src/devices/sound/flt_vol.cpp",
+ MAME_DIR .. "src/devices/sound/flt_vol.h",
+ MAME_DIR .. "src/devices/sound/flt_rc.cpp",
+ MAME_DIR .. "src/devices/sound/flt_rc.h",
+ MAME_DIR .. "src/devices/sound/mixer.cpp",
+ MAME_DIR .. "src/devices/sound/mixer.h",
+ MAME_DIR .. "src/devices/sound/samples.cpp",
+ MAME_DIR .. "src/devices/sound/samples.h",
+}
+
+---------------------------------------------------
+-- DACs
+--@src/devices/sound/dac.h,SOUNDS["DAC"] = true
+--@src/devices/sound/dmadac.h,SOUNDS["DMADAC"] = true
+--@src/devices/sound/spkrdev.h,SOUNDS["SPEAKER"] = true
+--@src/devices/sound/beep.h,SOUNDS["BEEP"] = true
+---------------------------------------------------
+
+if (SOUNDS["DAC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/dac.cpp",
+ MAME_DIR .. "src/devices/sound/dac.h",
+ }
+end
+
+if (SOUNDS["DMADAC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/dmadac.cpp",
+ MAME_DIR .. "src/devices/sound/dmadac.h",
+ }
+end
+
+if (SOUNDS["SPEAKER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/spkrdev.cpp",
+ MAME_DIR .. "src/devices/sound/spkrdev.h",
+ }
+end
+
+if (SOUNDS["BEEP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/beep.cpp",
+ MAME_DIR .. "src/devices/sound/beep.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- CD audio
+--@src/devices/sound/cdda.h,SOUNDS["CDDA"] = true
+---------------------------------------------------
+
+if (SOUNDS["CDDA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/cdda.cpp",
+ MAME_DIR .. "src/devices/sound/cdda.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Discrete component audio
+--@src/devices/sound/discrete.h,SOUNDS["DISCRETE"] = true
+---------------------------------------------------
+
+if (SOUNDS["DISCRETE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/discrete.cpp",
+ MAME_DIR .. "src/devices/sound/discrete.h",
+ MAME_DIR .. "src/devices/sound/disc_cls.h",
+ MAME_DIR .. "src/devices/sound/disc_dev.h",
+ MAME_DIR .. "src/devices/sound/disc_dev.hxx",
+ MAME_DIR .. "src/devices/sound/disc_flt.h",
+ MAME_DIR .. "src/devices/sound/disc_flt.hxx",
+ MAME_DIR .. "src/devices/sound/disc_inp.hxx",
+ MAME_DIR .. "src/devices/sound/disc_mth.h",
+ MAME_DIR .. "src/devices/sound/disc_mth.hxx",
+ MAME_DIR .. "src/devices/sound/disc_sys.hxx",
+ MAME_DIR .. "src/devices/sound/disc_wav.h",
+ MAME_DIR .. "src/devices/sound/disc_wav.hxx",
+ }
+end
+
+---------------------------------------------------
+-- AC97
+--@src/devices/sound/pci-ac97.h,SOUNDS["AC97"] = true
+---------------------------------------------------
+
+if (SOUNDS["AC97"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/pci-ac97.cpp",
+ MAME_DIR .. "src/devices/sound/pci-ac97.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Apple custom sound chips
+--@src/devices/sound/asc.h,SOUNDS["ASC"] = true
+--@src/devices/sound/awacs.h,SOUNDS["AWACS"] = true
+---------------------------------------------------
+
+if (SOUNDS["ASC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/asc.cpp",
+ MAME_DIR .. "src/devices/sound/asc.h",
+ }
+end
+
+if (SOUNDS["AWACS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/awacs.cpp",
+ MAME_DIR .. "src/devices/sound/awacs.h",
+ }
+end
+
+
+---------------------------------------------------
+-- Atari custom sound chips
+--@src/devices/sound/pokey.h,SOUNDS["POKEY"] = true
+--@src/devices/sound/tiaintf.h,SOUNDS["TIA"] = true
+---------------------------------------------------
+
+if (SOUNDS["POKEY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/pokey.cpp",
+ MAME_DIR .. "src/devices/sound/pokey.h",
+ }
+end
+
+if (SOUNDS["TIA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tiasound.cpp",
+ MAME_DIR .. "src/devices/sound/tiasound.h",
+ MAME_DIR .. "src/devices/sound/tiaintf.cpp",
+ MAME_DIR .. "src/devices/sound/tiaintf.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Amiga audio hardware
+--@src/devices/machine/8364_paula.h,SOUNDS["PAULA_8364"] = true
+---------------------------------------------------
+
+if (SOUNDS["PAULA_8364"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/8364_paula.cpp",
+ MAME_DIR .. "src/devices/machine/8364_paula.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Bally Astrocade sound system
+--@src/devices/sound/astrocde.h,SOUNDS["ASTROCADE"] = true
+---------------------------------------------------
+
+if (SOUNDS["ASTROCADE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/astrocde.cpp",
+ MAME_DIR .. "src/devices/sound/astrocde.h",
+ }
+end
+
+
+
+---------------------------------------------------
+---------------------------------------------------
+-- AC97
+--@src/devices/sound/pic-ac97.h,SOUNDS["AC97"] = true
+---------------------------------------------------
+
+if (SOUNDS["AC97"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/pci-ac97.cpp",
+ MAME_DIR .. "src/devices/sound/pci-ac97.h",
+ }
+end
+-- CEM 3394 analog synthesizer chip
+--@src/devices/sound/cem3394.h,SOUNDS["CEM3394"] = true
+---------------------------------------------------
+
+if (SOUNDS["CEM3394"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/cem3394.cpp",
+ MAME_DIR .. "src/devices/sound/cem3394.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Creative Labs SB0400 Audigy2 Value
+--@src/devices/sound/sb0400.h,SOUNDS["SB0400"] = true
+---------------------------------------------------
+
+if (SOUNDS["SB0400"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/sb0400.cpp",
+ MAME_DIR .. "src/devices/sound/sb0400.h",
+ }
+end
+
+
+--------------------------------------------------
+-- Creative Labs Ensonic AudioPCI97 ES1373
+--@src/devices/sound/es1373.h,SOUNDS["ES1373"] = true
+--------------------------------------------------
+
+if (SOUNDS["ES1373"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/es1373.cpp",
+ MAME_DIR .. "src/devices/sound/es1373.h",
+ }
+end
+
+---------------------------------------------------
+-- Data East custom sound chips
+--@src/devices/sound/bsmt2000.h,SOUNDS["BSMT2000"] = true
+---------------------------------------------------
+
+if (SOUNDS["BSMT2000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/bsmt2000.cpp",
+ MAME_DIR .. "src/devices/sound/bsmt2000.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Ensoniq 5503 (Apple IIgs)
+--@src/devices/sound/es5503.h,SOUNDS["ES5503"] = true
+---------------------------------------------------
+
+if (SOUNDS["ES5503"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/es5503.cpp",
+ MAME_DIR .. "src/devices/sound/es5503.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Ensoniq 5505/5506
+--@src/devices/sound/es5506.h,SOUNDS["ES5505"] = true
+---------------------------------------------------
+
+if (SOUNDS["ES5505"]~=null or SOUNDS["ES5506"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/es5506.cpp",
+ MAME_DIR .. "src/devices/sound/es5506.h",
+ }
+end
+
+
+---------------------------------------------------
+-- Ensoniq "pump" device, interfaces 5505/5506 with 5510
+--@src/devices/sound/esqpump.h,SOUNDS["ESQPUMP"] = true
+---------------------------------------------------
+
+if (SOUNDS["ESQPUMP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/esqpump.cpp",
+ MAME_DIR .. "src/devices/sound/esqpump.h",
+ }
+end
+
+
+---------------------------------------------------
+-- Excellent Systems ADPCM sound chip
+--@src/devices/sound/es8712.h,SOUNDS["ES8712"] = true
+---------------------------------------------------
+
+if (SOUNDS["ES8712"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/es8712.cpp",
+ MAME_DIR .. "src/devices/sound/es8712.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Gaelco custom sound chips
+--@src/devices/sound/gaelco.h,SOUNDS["GAELCO_CG1V"] = true
+---------------------------------------------------
+
+if (SOUNDS["GAELCO_CG1V"]~=null or SOUNDS["GAELCO_GAE1"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/gaelco.cpp",
+ MAME_DIR .. "src/devices/sound/gaelco.h",
+ }
+end
+
+
+---------------------------------------------------
+-- RCA CDP1863
+--@src/devices/sound/cdp1863.h,SOUNDS["CDP1863"] = true
+---------------------------------------------------
+
+if (SOUNDS["CDP1863"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/cdp1863.cpp",
+ MAME_DIR .. "src/devices/sound/cdp1863.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- RCA CDP1864
+--@src/devices/sound/cdp1864.h,SOUNDS["CDP1864"] = true
+---------------------------------------------------
+
+if (SOUNDS["CDP1864"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/cdp1864.cpp",
+ MAME_DIR .. "src/devices/sound/cdp1864.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- RCA CDP1869
+--@src/devices/sound/cdp1869.h,SOUNDS["CDP1869"] = true
+---------------------------------------------------
+
+if (SOUNDS["CDP1869"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/cdp1869.cpp",
+ MAME_DIR .. "src/devices/sound/cdp1869.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- GI AY-8910
+--@src/devices/sound/ay8910.h,SOUNDS["AY8910"] = true
+---------------------------------------------------
+
+if (SOUNDS["AY8910"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ay8910.cpp",
+ MAME_DIR .. "src/devices/sound/ay8910.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Harris HC55516 CVSD
+--@src/devices/sound/hc55516.h,SOUNDS["HC55516"] = true
+---------------------------------------------------
+
+if (SOUNDS["HC55516"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/hc55516.cpp",
+ MAME_DIR .. "src/devices/sound/hc55516.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Hudsonsoft HuC6230 SoundBox
+--@src/devices/sound/huc6230.h,SOUNDS["HUC6230"] = true
+---------------------------------------------------
+
+if (SOUNDS["HUC6230"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/huc6230.cpp",
+ MAME_DIR .. "src/devices/sound/huc6230.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Hudsonsoft C6280 sound chip
+--@src/devices/sound/c6280.h,SOUNDS["C6280"] = true
+---------------------------------------------------
+
+if (SOUNDS["C6280"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/c6280.cpp",
+ MAME_DIR .. "src/devices/sound/c6280.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- ICS2115 sound chip
+--@src/devices/sound/ics2115.h,SOUNDS["ICS2115"] = true
+---------------------------------------------------
+
+if (SOUNDS["ICS2115"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ics2115.cpp",
+ MAME_DIR .. "src/devices/sound/ics2115.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Imagetek I5000 sound
+--@src/devices/sound/i5000.h,SOUNDS["I5000_SND"] = true
+---------------------------------------------------
+
+if (SOUNDS["I5000_SND"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/i5000.cpp",
+ MAME_DIR .. "src/devices/sound/i5000.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Irem custom sound chips
+--@src/devices/sound/iremga20.h,SOUNDS["IREMGA20"] = true
+---------------------------------------------------
+
+if (SOUNDS["IREMGA20"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/iremga20.cpp",
+ MAME_DIR .. "src/devices/sound/iremga20.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Konami custom sound chips
+--@src/devices/sound/k005289.h,SOUNDS["K005289"] = true
+--@src/devices/sound/k007232.h,SOUNDS["K007232"] = true
+--@src/devices/sound/k051649.h,SOUNDS["K051649"] = true
+--@src/devices/sound/k053260.h,SOUNDS["K053260"] = true
+--@src/devices/sound/k054539.h,SOUNDS["K054539"] = true
+--@src/devices/sound/k056800.h,SOUNDS["K056800"] = true
+---------------------------------------------------
+
+if (SOUNDS["K005289"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/k005289.cpp",
+ MAME_DIR .. "src/devices/sound/k005289.h",
+ }
+end
+
+if (SOUNDS["K007232"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/k007232.cpp",
+ MAME_DIR .. "src/devices/sound/k007232.h",
+ }
+end
+
+if (SOUNDS["K051649"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/k051649.cpp",
+ MAME_DIR .. "src/devices/sound/k051649.h",
+ }
+end
+
+if (SOUNDS["K053260"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/k053260.cpp",
+ MAME_DIR .. "src/devices/sound/k053260.h",
+ }
+end
+
+if (SOUNDS["K054539"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/k054539.cpp",
+ MAME_DIR .. "src/devices/sound/k054539.h",
+ }
+end
+
+if (SOUNDS["K056800"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/k056800.cpp",
+ MAME_DIR .. "src/devices/sound/k056800.h",
+ }
+end
+
+
+---------------------------------------------------
+-- L7A1045 L6028 DSP-A
+--@src/devices/sound/l7a1045_l6028_dsp_a.h,SOUNDS["L7A1045"] = true
+---------------------------------------------------
+
+if (SOUNDS["L7A1045"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/l7a1045_l6028_dsp_a.cpp",
+ MAME_DIR .. "src/devices/sound/l7a1045_l6028_dsp_a.h",
+ }
+end
+
+
+---------------------------------------------------
+-- LMC1992 mixer chip
+--@src/devices/sound/lmc1992.h,SOUNDS["LMC1992"] = true
+---------------------------------------------------
+
+if (SOUNDS["LMC1992"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/lmc1992.cpp",
+ MAME_DIR .. "src/devices/sound/lmc1992.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- MAS 3507D MPEG 1/2 Layer 2/3 Audio Decoder
+--@src/devices/sound/mas3507d.h,SOUNDS["MAS3507D"] = true
+---------------------------------------------------
+
+if (SOUNDS["MAS3507D"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mas3507d.cpp",
+ MAME_DIR .. "src/devices/sound/mas3507d.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- MEA8000 Voice Synthesizer
+--@src/devices/sound/mea8000.h,SOUNDS["MEA8000"] = true
+---------------------------------------------------
+
+if (SOUNDS["MEA8000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mea8000.cpp",
+ MAME_DIR .. "src/devices/sound/mea8000.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- MOS 6560VIC
+--@src/devices/sound/mos6560.h,SOUNDS["MOS656X"] = true
+---------------------------------------------------
+
+if (SOUNDS["MOS656X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mos6560.cpp",
+ MAME_DIR .. "src/devices/sound/mos6560.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- MOS 7360 TED
+--@src/devices/sound/mos7360.h,SOUNDS["MOS7360"] = true
+---------------------------------------------------
+
+if (SOUNDS["MOS7360"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mos7360.cpp",
+ MAME_DIR .. "src/devices/sound/mos7360.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Namco custom sound chips
+--@src/devices/sound/namco.h,SOUNDS["NAMCO"] = true
+--@src/devices/sound/namco_163.h,SOUNDS["NAMCO_163"] = true
+--@src/devices/sound/n63701x.h,SOUNDS["NAMCO_63701X"] = true
+--@src/devices/sound/c140.h,SOUNDS["C140"] = true
+--@src/devices/sound/c352.h,SOUNDS["C352"] = true
+---------------------------------------------------
+
+if (SOUNDS["NAMCO"]~=null or SOUNDS["NAMCO_15XX"]~=null or SOUNDS["NAMCO_CUS30"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/namco.cpp",
+ MAME_DIR .. "src/devices/sound/namco.h",
+ }
+end
+
+if (SOUNDS["NAMCO_163"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/namco_163.cpp",
+ MAME_DIR .. "src/devices/sound/namco_163.h",
+ }
+end
+
+if (SOUNDS["NAMCO_63701X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/n63701x.cpp",
+ MAME_DIR .. "src/devices/sound/n63701x.h",
+ }
+end
+
+if (SOUNDS["C140"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/c140.cpp",
+ MAME_DIR .. "src/devices/sound/c140.h",
+ }
+end
+
+if (SOUNDS["C352"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/c352.cpp",
+ MAME_DIR .. "src/devices/sound/c352.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- National Semiconductor Digitalker
+--@src/devices/sound/digitalk.h,SOUNDS["DIGITALKER"] = true
+---------------------------------------------------
+
+if (SOUNDS["DIGITALKER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/digitalk.cpp",
+ MAME_DIR .. "src/devices/sound/digitalk.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Nintendo custom sound chips
+--@src/devices/sound/nes_apu.h,SOUNDS["NES_APU"] = true
+---------------------------------------------------
+
+if (SOUNDS["NES_APU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/nes_apu.cpp",
+ MAME_DIR .. "src/devices/sound/nes_apu.h",
+ MAME_DIR .. "src/devices/sound/nes_defs.h",
+ MAME_DIR .. "src/devices/sound/nes_apu_vt.cpp",
+ MAME_DIR .. "src/devices/sound/nes_apu_vt.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- NEC uPD7759 ADPCM sample player
+--@src/devices/sound/upd7759.h,SOUNDS["UPD7759"] = true
+---------------------------------------------------
+
+if (SOUNDS["UPD7759"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/upd7759.cpp",
+ MAME_DIR .. "src/devices/sound/upd7759.h",
+ MAME_DIR .. "src/devices/sound/315-5641.cpp",
+ MAME_DIR .. "src/devices/sound/315-5641.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- OKI ADPCM sample players
+--@src/devices/sound/okim6258.h,SOUNDS["OKIM6258"] = true
+--@src/devices/sound/msm5205.h,SOUNDS["MSM5205"] = true
+--@src/devices/sound/msm5232.h,SOUNDS["MSM5232"] = true
+--@src/devices/sound/okim6376.h,SOUNDS["OKIM6376"] = true
+--@src/devices/sound/okim6295.h,SOUNDS["OKIM6295"] = true
+--@src/devices/sound/okim9810.h,SOUNDS["OKIM9810"] = true
+--@src/devices/sound/okiadpcm.h,SOUNDS["OKIADPCM"] = true
+---------------------------------------------------
+
+if (SOUNDS["OKIM6258"]~=null or SOUNDS["OKIM6295"]~=null or SOUNDS["OKIM9810"]~=null or SOUNDS["I5000_SND"]~=null or SOUNDS["OKIADPCM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/okiadpcm.cpp",
+ MAME_DIR .. "src/devices/sound/okiadpcm.h",
+ }
+end
+
+if (SOUNDS["MSM5205"]~=null or SOUNDS["MSM6585"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/msm5205.cpp",
+ MAME_DIR .. "src/devices/sound/msm5205.h",
+ }
+end
+
+if (SOUNDS["MSM5232"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/msm5232.cpp",
+ MAME_DIR .. "src/devices/sound/msm5232.h",
+ }
+end
+
+if (SOUNDS["OKIM6376"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/okim6376.cpp",
+ MAME_DIR .. "src/devices/sound/okim6376.h",
+ }
+end
+
+if (SOUNDS["OKIM6295"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/okim6295.cpp",
+ MAME_DIR .. "src/devices/sound/okim6295.h",
+ }
+end
+
+if (SOUNDS["OKIM6258"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/okim6258.cpp",
+ MAME_DIR .. "src/devices/sound/okim6258.h",
+ }
+end
+
+if (SOUNDS["OKIM9810"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/okim9810.cpp",
+ MAME_DIR .. "src/devices/sound/okim9810.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Philips SAA1099
+--@src/devices/sound/saa1099.h,SOUNDS["SAA1099"] = true
+---------------------------------------------------
+
+if (SOUNDS["SAA1099"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/saa1099.cpp",
+ MAME_DIR .. "src/devices/sound/saa1099.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- AdMOS QS1000
+--@src/devices/sound/qs1000.h,SOUNDS["QS1000"] = true
+---------------------------------------------------
+
+if (SOUNDS["QS1000"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/qs1000.cpp",
+ MAME_DIR .. "src/devices/sound/qs1000.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- QSound sample player
+--@src/devices/sound/qsound.h,SOUNDS["QSOUND"] = true
+---------------------------------------------------
+
+if (SOUNDS["QSOUND"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/qsound.cpp",
+ MAME_DIR .. "src/devices/sound/qsound.h",
+ MAME_DIR .. "src/devices/sound/qsoundhle.cpp",
+ MAME_DIR .. "src/devices/sound/qsoundhle.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Ricoh sample players
+--@src/devices/sound/rf5c68.h,SOUNDS["RF5C68"] = true
+--@src/devices/sound/rf5c400.h,SOUNDS["RF5C400"] = true
+---------------------------------------------------
+
+if (SOUNDS["RF5C68"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/rf5c68.cpp",
+ MAME_DIR .. "src/devices/sound/rf5c68.h",
+ }
+end
+
+if (SOUNDS["RF5C400"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/rf5c400.cpp",
+ MAME_DIR .. "src/devices/sound/rf5c400.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Sega custom sound chips
+--@src/devices/sound/segapcm.h,SOUNDS["SEGAPCM"] = true
+--@src/devices/sound/multipcm.h,SOUNDS["MULTIPCM"] = true
+--@src/devices/sound/scsp.h,SOUNDS["SCSP"] = true
+--@src/devices/sound/aica.h,SOUNDS["AICA"] = true
+---------------------------------------------------
+
+if (SOUNDS["SEGAPCM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/segapcm.cpp",
+ MAME_DIR .. "src/devices/sound/segapcm.h",
+ }
+end
+
+if (SOUNDS["MULTIPCM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/multipcm.cpp",
+ MAME_DIR .. "src/devices/sound/multipcm.h",
+ }
+end
+
+if (SOUNDS["SCSP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/scsp.cpp",
+ MAME_DIR .. "src/devices/sound/scsp.h",
+ MAME_DIR .. "src/devices/sound/scspdsp.cpp",
+ MAME_DIR .. "src/devices/sound/scspdsp.h",
+ }
+end
+
+if (SOUNDS["AICA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/aica.cpp",
+ MAME_DIR .. "src/devices/sound/aica.h",
+ MAME_DIR .. "src/devices/sound/aicadsp.cpp",
+ MAME_DIR .. "src/devices/sound/aicadsp.h",
+ }
+end
+
+---------------------------------------------------
+-- Seta custom sound chips
+--@src/devices/sound/st0016.h,SOUNDS["ST0016"] = true
+--@src/devices/sound/setapcm.h,SOUNDS["SETAPCM"] = true
+--@src/devices/sound/x1_010.h,SOUNDS["X1_010"] = true
+---------------------------------------------------
+
+if (SOUNDS["ST0016"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/st0016.cpp",
+ MAME_DIR .. "src/devices/sound/st0016.h",
+ }
+end
+
+if (SOUNDS["SETAPCM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/setapcm.cpp",
+ MAME_DIR .. "src/devices/sound/setapcm.h",
+ }
+end
+
+if (SOUNDS["X1_010"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/x1_010.cpp",
+ MAME_DIR .. "src/devices/sound/x1_010.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- SID custom sound chips
+--@src/devices/sound/mos6581.h,SOUNDS["SID6581"] = true
+---------------------------------------------------
+
+if (SOUNDS["SID6581"]~=null or SOUNDS["SID8580"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mos6581.cpp",
+ MAME_DIR .. "src/devices/sound/mos6581.h",
+ MAME_DIR .. "src/devices/sound/sid.cpp",
+ MAME_DIR .. "src/devices/sound/sid.h",
+ MAME_DIR .. "src/devices/sound/sidenvel.cpp",
+ MAME_DIR .. "src/devices/sound/sidenvel.h",
+ MAME_DIR .. "src/devices/sound/sidvoice.cpp",
+ MAME_DIR .. "src/devices/sound/sidvoice.h",
+ MAME_DIR .. "src/devices/sound/side6581.h",
+ MAME_DIR .. "src/devices/sound/sidw6581.h",
+ MAME_DIR .. "src/devices/sound/sidw8580.h",
+ }
+end
+
+
+---------------------------------------------------
+-- SNK(?) custom stereo sn76489a clone
+--@src/devices/sound/t6w28.h,SOUNDS["T6W28"] = true
+---------------------------------------------------
+
+if (SOUNDS["T6W28"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/t6w28.cpp",
+ MAME_DIR .. "src/devices/sound/t6w28.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- SNK custom wave generator
+--@src/devices/sound/snkwave.h,SOUNDS["SNKWAVE"] = true
+---------------------------------------------------
+
+if (SOUNDS["SNKWAVE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/snkwave.cpp",
+ MAME_DIR .. "src/devices/sound/snkwave.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Sony custom sound chips
+--@src/devices/sound/spu.h,SOUNDS["SPU"] = true
+---------------------------------------------------
+
+if (SOUNDS["SPU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/spu.cpp",
+ MAME_DIR .. "src/devices/sound/spu.h",
+ MAME_DIR .. "src/devices/sound/spu_tables.cpp",
+ MAME_DIR .. "src/devices/sound/spureverb.cpp",
+ MAME_DIR .. "src/devices/sound/spureverb.h",
+ }
+end
+
+
+---------------------------------------------------
+-- SP0256 speech synthesizer
+--@src/devices/sound/sp0256.h,SOUNDS["SP0256"] = true
+---------------------------------------------------
+
+if (SOUNDS["SP0256"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/sp0256.cpp",
+ MAME_DIR .. "src/devices/sound/sp0256.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- SP0250 speech synthesizer
+--@src/devices/sound/sp0250.h,SOUNDS["SP0250"] = true
+---------------------------------------------------
+
+if (SOUNDS["SP0250"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/sp0250.cpp",
+ MAME_DIR .. "src/devices/sound/sp0250.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- S14001A speech synthesizer
+--@src/devices/sound/s14001a.h,SOUNDS["S14001A"] = true
+---------------------------------------------------
+
+if (SOUNDS["S14001A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/s14001a.cpp",
+ MAME_DIR .. "src/devices/sound/s14001a.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Texas Instruments SN76477 analog chip
+--@src/devices/sound/sn76477.h,SOUNDS["SN76477"] = true
+---------------------------------------------------
+
+if (SOUNDS["SN76477"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/sn76477.cpp",
+ MAME_DIR .. "src/devices/sound/sn76477.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Texas Instruments SN76496
+--@src/devices/sound/sn76496.h,SOUNDS["SN76496"] = true
+---------------------------------------------------
+
+if (SOUNDS["SN76496"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/sn76496.cpp",
+ MAME_DIR .. "src/devices/sound/sn76496.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Texas Instruments TMS36xx doorbell chime
+--@src/devices/sound/tms36xx.h,SOUNDS["TMS36XX"] = true
+---------------------------------------------------
+
+if (SOUNDS["TMS36XX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tms36xx.cpp",
+ MAME_DIR .. "src/devices/sound/tms36xx.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Texas Instruments TMS3615 Octave Multiple Tone Synthesizer
+--@src/devices/sound/tms3615.h,SOUNDS["TMS3615"] = true
+---------------------------------------------------
+
+if (SOUNDS["TMS3615"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tms3615.cpp",
+ MAME_DIR .. "src/devices/sound/tms3615.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Texas Instruments TMS5100-series speech synthesizers
+--@src/devices/sound/tms5110.h,SOUNDS["TMS5110"] = true
+---------------------------------------------------
+
+if (SOUNDS["TMS5110"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tms5110.cpp",
+ MAME_DIR .. "src/devices/sound/tms5110.h",
+ MAME_DIR .. "src/devices/sound/tms5110r.hxx",
+ }
+end
+
+---------------------------------------------------
+-- Texas Instruments TMS5200-series speech synthesizers
+--@src/devices/sound/tms5220.h,SOUNDS["TMS5220"] = true
+---------------------------------------------------
+if (SOUNDS["TMS5220"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tms5220.cpp",
+ MAME_DIR .. "src/devices/sound/tms5220.h",
+ MAME_DIR .. "src/devices/sound/tms5110r.hxx",
+ MAME_DIR .. "src/devices/machine/spchrom.cpp",
+ MAME_DIR .. "src/devices/machine/spchrom.h",
+ }
+end
+
+
+---------------------------------------------------
+-- Toshiba T6721A voice synthesizer
+--@src/devices/sound/t6721a.h,SOUNDS["T6721A"] = true
+---------------------------------------------------
+
+if (SOUNDS["T6721A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/t6721a.cpp",
+ MAME_DIR .. "src/devices/sound/t6721a.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Toshiba TC8830F sample player/recorder
+--@src/devices/sound/tc8830f.h,SOUNDS["TC8830F"] = true
+---------------------------------------------------
+
+if (SOUNDS["TC8830F"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tc8830f.cpp",
+ MAME_DIR .. "src/devices/sound/tc8830f.h",
+ }
+end
+
+
+---------------------------------------------------
+-- NEC uPD7752
+--@src/devices/sound/upd7752.h,SOUNDS["UPD7752"] = true
+---------------------------------------------------
+
+if (SOUNDS["UPD7752"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/upd7752.cpp",
+ MAME_DIR .. "src/devices/sound/upd7752.h",
+ }
+end
+
+
+---------------------------------------------------
+-- VLM5030 speech synthesizer
+--@src/devices/sound/vlm5030.h,SOUNDS["VLM5030"] = true
+---------------------------------------------------
+
+if (SOUNDS["VLM5030"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/vlm5030.cpp",
+ MAME_DIR .. "src/devices/sound/vlm5030.h",
+ MAME_DIR .. "src/devices/sound/tms5110r.hxx",
+ }
+end
+
+---------------------------------------------------
+-- Votrax speech synthesizer
+--@src/devices/sound/votrax.h,SOUNDS["VOTRAX"] = true
+---------------------------------------------------
+
+if (SOUNDS["VOTRAX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/votrax.cpp",
+ MAME_DIR .. "src/devices/sound/votrax.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- VRender0 custom sound chip
+--@src/devices/sound/vrender0.h,SOUNDS["VRENDER0"] = true
+---------------------------------------------------
+
+if (SOUNDS["VRENDER0"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/vrender0.cpp",
+ MAME_DIR .. "src/devices/sound/vrender0.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- WAVE file (used for MESS cassette)
+--@src/devices/sound/wave.h,SOUNDS["WAVE"] = true
+---------------------------------------------------
+
+if (SOUNDS["WAVE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/wave.cpp",
+ MAME_DIR .. "src/devices/sound/wave.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Yamaha FM synthesizers
+--@src/devices/sound/ym2154.h,SOUNDS["YM2154"] = true
+--@src/devices/sound/ymopm.h,SOUNDS["YM2151"] = true
+--@src/devices/sound/ymopz.h,SOUNDS["YM2414"] = true
+--@src/devices/sound/ymopq.h,SOUNDS["YM3806"] = true
+--@src/devices/sound/ymopn.h,SOUNDS["YM2203"] = true
+--@src/devices/sound/ymopl.h,SOUNDS["YM2413"] = true
+--@src/devices/sound/ymopn.h,SOUNDS["YM2608"] = true
+--@src/devices/sound/ymopn.h,SOUNDS["YM2610"] = true
+--@src/devices/sound/ymopn.h,SOUNDS["YM2612"] = true
+--@src/devices/sound/ymopl.h,SOUNDS["YM3526"] = true
+--@src/devices/sound/ymopl.h,SOUNDS["YM3812"] = true
+--@src/devices/sound/ymopl.h,SOUNDS["YMF262"] = true
+--@src/devices/sound/ymopl.h,SOUNDS["YMF278B"] = true
+--@src/devices/sound/ymf271.h,SOUNDS["YMF271"] = true
+--@src/devices/sound/ymopl.h,SOUNDS["Y8950"] = true
+---------------------------------------------------
+
+if (SOUNDS["YM2154"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ym2154.cpp",
+ MAME_DIR .. "src/devices/sound/ym2154.h",
+ }
+end
+
+if (SOUNDS["YM2151"]~=null or SOUNDS["YM2164"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymopm.cpp",
+ MAME_DIR .. "src/devices/sound/ymopm.h",
+ }
+end
+
+if (SOUNDS["YM2414"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymopz.cpp",
+ MAME_DIR .. "src/devices/sound/ymopz.h",
+ }
+end
+
+if (SOUNDS["YM3806"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymopq.cpp",
+ MAME_DIR .. "src/devices/sound/ymopq.h",
+ }
+end
+
+if (SOUNDS["YM2203"]~=null or SOUNDS["YM2608"]~=null or SOUNDS["YM2610"]~=null or SOUNDS["YM2610B"]~=null or SOUNDS["YM2612"]~=null or SOUNDS["YM3438"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ay8910.cpp",
+ MAME_DIR .. "src/devices/sound/ay8910.h",
+ MAME_DIR .. "src/devices/sound/ymopn.cpp",
+ MAME_DIR .. "src/devices/sound/ymopn.h",
+ }
+end
+
+if (SOUNDS["YM3526"]~=null or SOUNDS["Y8950"]~=null or SOUNDS["YM3812"]~=null or SOUNDS["YMF262"]~=null or SOUNDS["YMF278B"]~=null or SOUNDS["YM2413"]~=null or SOUNDS["YM2423"]~=null or SOUNDS["YMF281"]~=null or SOUNDS["DS1001"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymopl.cpp",
+ MAME_DIR .. "src/devices/sound/ymopl.h",
+ }
+end
+
+if (SOUNDS["YMF271"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymf271.cpp",
+ MAME_DIR .. "src/devices/sound/ymf271.h",
+ }
+end
+
+
+
+---------------------------------------------------
+-- Yamaha YMZ280B ADPCM
+--@src/devices/sound/ymz280b.h,SOUNDS["YMZ280B"] = true
+---------------------------------------------------
+
+if (SOUNDS["YMZ280B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymz280b.cpp",
+ MAME_DIR .. "src/devices/sound/ymz280b.h",
+ }
+end
+
+---------------------------------------------------
+-- Yamaha YMZ770 AMM
+--@src/devices/sound/ymz770.h,SOUNDS["YMZ770"] = true
+---------------------------------------------------
+
+if (SOUNDS["YMZ770"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ymz770.cpp",
+ MAME_DIR .. "src/devices/sound/ymz770.h",
+ }
+end
+
+---------------------------------------------------
+-- MPEG AUDIO
+--@src/devices/sound/mpeg_audio.h,SOUNDS["MPEG_AUDIO"] = true
+---------------------------------------------------
+
+if (SOUNDS["MPEG_AUDIO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mpeg_audio.cpp",
+ MAME_DIR .. "src/devices/sound/mpeg_audio.h",
+ }
+end
+
+---------------------------------------------------
+-- ZOOM ZSG-2
+--@src/devices/sound/zsg2.h,SOUNDS["ZSG2"] = true
+---------------------------------------------------
+
+if (SOUNDS["ZSG2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/zsg2.cpp",
+ MAME_DIR .. "src/devices/sound/zsg2.h",
+ }
+end
+
+---------------------------------------------------
+-- VRC6
+--@src/devices/sound/vrc6.h,SOUNDS["VRC6"] = true
+---------------------------------------------------
+
+if (SOUNDS["VRC6"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/vrc6.cpp",
+ MAME_DIR .. "src/devices/sound/vrc6.h",
+ }
+end
+
+---------------------------------------------------
+-- AD1848
+--@src/devices/sound/ad1848.h,SOUNDS["AD1848"] = true
+---------------------------------------------------
+
+if (SOUNDS["AD1848"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ad1848.cpp",
+ MAME_DIR .. "src/devices/sound/ad1848.h",
+ }
+end
+
+---------------------------------------------------
+-- UPD1771
+--@src/devices/sound/upd1771.h,SOUNDS["UPD1771"] = true
+---------------------------------------------------
+
+if (SOUNDS["UPD1771"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/upd1771.cpp",
+ MAME_DIR .. "src/devices/sound/upd1771.h",
+ }
+end
+
+---------------------------------------------------
+-- GB_SOUND
+--@src/devices/sound/gb.h,SOUNDS["GB_SOUND"] = true
+---------------------------------------------------
+
+if (SOUNDS["GB_SOUND"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/gb.cpp",
+ MAME_DIR .. "src/devices/sound/gb.h",
+ }
+end
+
+---------------------------------------------------
+-- PCD3311
+--@src/devices/sound/pcd3311.h,SOUNDS["PCD3311"] = true
+---------------------------------------------------
+
+if (SOUNDS["PCD3311"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/pcd3311.cpp",
+ MAME_DIR .. "src/devices/sound/pcd3311.h",
+ }
+end
+
+---------------------------------------------------
+-- DAC-76 COMDAC
+--@src/devices/sound/dac76.h,SOUNDS["DAC76"] = true
+---------------------------------------------------
+if (SOUNDS["DAC76"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/dac76.cpp",
+ MAME_DIR .. "src/devices/sound/dac76.h",
+ }
+end
+
+---------------------------------------------------
+-- MM5837 Noise Generator
+--@src/devices/sound/mm5837.h,SOUNDS["MM5837"] = true
+---------------------------------------------------
+
+if (SOUNDS["MM5837"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/mm5837.cpp",
+ MAME_DIR .. "src/devices/sound/mm5837.h",
+ }
+end
+
+---------------------------------------------------
+-- Intelligent Designs DAVE
+--@src/devices/sound/dave.h,SOUNDS["DAVE"] = true
+---------------------------------------------------
+
+if (SOUNDS["DAVE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/dave.cpp",
+ MAME_DIR .. "src/devices/sound/dave.h",
+ }
+end
+
+---------------------------------------------------
+-- Toshiba TA7630
+--@src/devices/sound/ta7630.h,SOUNDS["TA7630"] = true
+---------------------------------------------------
+
+if (SOUNDS["TA7630"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ta7630.cpp",
+ MAME_DIR .. "src/devices/sound/ta7630.h",
+ }
+end
+
+---------------------------------------------------
+-- Sanyo LC7535
+--@src/devices/sound/lc7535.h,SOUNDS["LC7535"] = true
+---------------------------------------------------
+
+if (SOUNDS["LC7535"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/lc7535.cpp",
+ MAME_DIR .. "src/devices/sound/lc7535.h",
+ }
+end
+
+---------------------------------------------------
+-- NEC uPD934G
+--@src/devices/sound/upd934g.h,SOUNDS["UPD934G"] = true
+---------------------------------------------------
+
+if (SOUNDS["UPD934G"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/upd934g.cpp",
+ MAME_DIR .. "src/devices/sound/upd934g.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/iopspu.h,SOUNDS["IOPSPU"] = true
+---------------------------------------------------
+
+if (SOUNDS["IOPSPU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/iopspu.cpp",
+ MAME_DIR .. "src/devices/sound/iopspu.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/swp00.h,SOUNDS["SWP00"] = true
+---------------------------------------------------
+
+if (SOUNDS["SWP00"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/swp00.cpp",
+ MAME_DIR .. "src/devices/sound/swp00.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/swp20.h,SOUNDS["SWP20"] = true
+---------------------------------------------------
+
+if (SOUNDS["SWP20"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/swp20.cpp",
+ MAME_DIR .. "src/devices/sound/swp20.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/swp30.h,SOUNDS["SWP30"] = true
+---------------------------------------------------
+
+if (SOUNDS["SWP30"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/swp30.cpp",
+ MAME_DIR .. "src/devices/sound/swp30.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/xt446.h,SOUNDS["XT446"] = true
+---------------------------------------------------
+
+if (SOUNDS["XT446"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/xt446.cpp",
+ MAME_DIR .. "src/devices/sound/xt446.h",
+ }
+end
+
+---------------------------------------------------
+-- Roland sample players
+--@src/devices/sound/rolandpcm.h,SOUNDS["ROLANDPCM"] = true
+---------------------------------------------------
+
+if (SOUNDS["ROLANDPCM"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/rolandpcm.cpp",
+ MAME_DIR .. "src/devices/sound/rolandpcm.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/vgm_visualizer.h,SOUNDS["VGMVIZ"] = true
+---------------------------------------------------
+
+if (SOUNDS["VGMVIZ"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/vgm_visualizer.cpp",
+ MAME_DIR .. "src/devices/sound/vgm_visualizer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/s_dsp.h,SOUNDS["S_DSP"] = true
+---------------------------------------------------
+
+if (SOUNDS["S_DSP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/s_dsp.cpp",
+ MAME_DIR .. "src/devices/sound/s_dsp.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/ks0164.h,SOUNDS["KS0164"] = true
+---------------------------------------------------
+
+if (SOUNDS["KS0164"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/ks0164.cpp",
+ MAME_DIR .. "src/devices/sound/ks0164.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/rp2c33_snd.h,SOUNDS["RP2C33_SOUND"] = true
+---------------------------------------------------
+
+if (SOUNDS["RP2C33_SOUND"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/rp2c33_snd.cpp",
+ MAME_DIR .. "src/devices/sound/rp2c33_snd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/tt5665.h,SOUNDS["TT5665"] = true
+---------------------------------------------------
+
+if (SOUNDS["TT5665"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/tt5665.cpp",
+ MAME_DIR .. "src/devices/sound/tt5665.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/sound/uda1344.h,SOUNDS["UDA1344"] = true
+---------------------------------------------------
+
+if (SOUNDS["UDA1344"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/uda1344.cpp",
+ MAME_DIR .. "src/devices/sound/uda1344.h",
+ }
+end
diff --git a/docs/release/scripts/src/tests.lua b/docs/release/scripts/src/tests.lua
new file mode 100644
index 00000000000..89c8c976c39
--- /dev/null
+++ b/docs/release/scripts/src/tests.lua
@@ -0,0 +1,75 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- tests.lua
+--
+-- Rules for building tests
+--
+---------------------------------------------------------------------------
+
+project("mametests")
+ uuid ("66d4c639-196b-4065-a411-7ee9266564f5")
+ kind "ConsoleApp"
+
+ flags {
+ "Symbols", -- always include minimum symbols for executables
+ }
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+
+ configuration { "Release" }
+ targetsuffix ""
+ if _OPTIONS["PROFILE"] then
+ targetsuffix "p"
+ end
+
+ configuration { "Debug" }
+ targetsuffix "d"
+ if _OPTIONS["PROFILE"] then
+ targetsuffix "dp"
+ end
+
+ configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+ configuration { "rpi" }
+ targetextension ""
+
+
+ configuration { }
+
+ links {
+ "utils",
+ ext_lib("expat"),
+ ext_lib("zlib"),
+ "ocore_" .. _OPTIONS["osd"],
+ }
+
+ includedirs {
+ MAME_DIR .. "3rdparty/catch/single_include",
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/lib/util",
+ ext_includedir("expat"),
+ ext_includedir("zlib"),
+ }
+
+ files {
+ MAME_DIR .. "src/emu/video/rgbsse.cpp",
+ MAME_DIR .. "src/emu/video/rgbsse.h",
+ MAME_DIR .. "src/emu/video/rgbvmx.cpp",
+ MAME_DIR .. "src/emu/video/rgbvmx.h",
+ }
+
+ files {
+ MAME_DIR .. "tests/main.cpp",
+ MAME_DIR .. "tests/lib/util/corestr.cpp",
+ MAME_DIR .. "tests/lib/util/options.cpp",
+ MAME_DIR .. "tests/emu/attotime.cpp",
+ MAME_DIR .. "tests/emu/video/rgbutil.cpp",
+ }
+
diff --git a/docs/release/scripts/src/tools.lua b/docs/release/scripts/src/tools.lua
new file mode 100644
index 00000000000..999ff594407
--- /dev/null
+++ b/docs/release/scripts/src/tools.lua
@@ -0,0 +1,860 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- tools.lua
+--
+-- Rules for the building of tools
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- romcmp
+--------------------------------------------------
+
+project("romcmp")
+uuid ("1b40275b-194c-497b-8abd-9338775a21b8")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/romcmp.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- chdman
+--------------------------------------------------
+
+project("chdman")
+uuid ("7d948868-42db-432a-9bb5-70ce5c5f4620")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+}
+includedirs {
+ ext_includedir("flac"),
+}
+
+files {
+ MAME_DIR .. "src/tools/chdman.cpp",
+ GEN_DIR .. "version.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- jedutil
+--------------------------------------------------
+
+project("jedutil")
+uuid ("bda60edb-f7f5-489f-b232-23d33c43dda1")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/jedutil.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- unidasm
+--------------------------------------------------
+
+project("unidasm")
+uuid ("65f81d3b-299a-4b08-a3fa-d5241afa9fd1")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "dasm",
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+}
+
+files {
+ MAME_DIR .. "src/tools/unidasm.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- ldresample
+--------------------------------------------------
+
+project("ldresample")
+uuid ("3401561a-4407-4e13-9c6d-c0801330f7cc")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+}
+includedirs {
+ ext_includedir("flac"),
+}
+
+files {
+ MAME_DIR .. "src/tools/ldresample.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- ldverify
+--------------------------------------------------
+
+project("ldverify")
+uuid ("3e66560d-b928-4227-928b-eadd0a10f00a")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+}
+includedirs {
+ ext_includedir("flac"),
+}
+
+files {
+ MAME_DIR .. "src/tools/ldverify.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- regrep
+--------------------------------------------------
+
+project("regrep")
+uuid ("7f6de580-d800-4e8d-bed6-9fc86829584d")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/regrep.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- srcclean
+---------------------------------------------------
+
+project("srcclean")
+uuid ("4dd58139-313a-42c5-965d-f378bdeed220")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/srcclean.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- split
+--------------------------------------------------
+
+project("split")
+uuid ("8ef6ff18-3199-4cc2-afd0-d64033070faa")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/split.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- pngcmp
+--------------------------------------------------
+
+project("pngcmp")
+uuid ("61f647d9-b129-409b-9c62-8acf98ed39be")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "utils",
+ ext_lib("expat"),
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/pngcmp.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- nltool
+--------------------------------------------------
+
+project("nltool")
+uuid ("853a03b7-fa37-41a8-8250-0dc23dd935d6")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "netlist",
+}
+
+includedirs {
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/netlist",
+}
+
+defines {
+ "NL_DISABLE_DYNAMIC_LOAD=1",
+}
+
+files {
+ MAME_DIR .. "src/lib/netlist/prg/nltool.cpp",
+}
+
+configuration { "mingw*" }
+ linkoptions{
+ "-municode",
+ }
+configuration { "vs*" }
+ flags {
+ "Unicode",
+ }
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- nlwav
+--------------------------------------------------
+
+project("nlwav")
+uuid ("7c5396d1-2a1a-4c93-bed6-6b8fa182054a")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "netlist",
+}
+
+includedirs {
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/netlist",
+}
+
+files {
+ MAME_DIR .. "src/lib/netlist/prg/nlwav.cpp",
+}
+
+configuration { "mingw*" }
+ linkoptions{
+ "-municode",
+ }
+configuration { "vs*" }
+ flags {
+ "Unicode",
+ }
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- castool
+--------------------------------------------------
+
+project("castool")
+uuid ("7d9ed428-e2ba-4448-832d-d882a64d5c22")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "formats",
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/castool.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- floptool
+--------------------------------------------------
+
+project("floptool")
+uuid ("85d8e3a6-1661-4ac9-8c21-281d20cbaf5b")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "formats",
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+}
+
+files {
+ MAME_DIR .. "src/tools/image_handler.cpp",
+ MAME_DIR .. "src/tools/image_handler.h",
+ MAME_DIR .. "src/tools/floptool.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- imgtool
+--------------------------------------------------
+
+project("imgtool")
+uuid ("f3707807-e587-4297-a5d8-bc98f3d0b1ca")
+kind "ConsoleApp"
+
+flags {
+ "Symbols", -- always include minimum symbols for executables
+}
+
+if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+end
+
+links {
+ "formats",
+ "utils",
+ ext_lib("expat"),
+ "7z",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("zlib"),
+ ext_lib("flac"),
+ ext_lib("utf8proc"),
+}
+
+includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ ext_includedir("zlib"),
+ MAME_DIR .. "src/tools/imgtool",
+}
+
+files {
+ MAME_DIR .. "src/tools/imgtool/main.cpp",
+ MAME_DIR .. "src/tools/imgtool/main.h",
+ MAME_DIR .. "src/tools/imgtool/stream.cpp",
+ MAME_DIR .. "src/tools/imgtool/stream.h",
+ MAME_DIR .. "src/tools/imgtool/library.cpp",
+ MAME_DIR .. "src/tools/imgtool/library.h",
+ MAME_DIR .. "src/tools/imgtool/modules.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules.h",
+ MAME_DIR .. "src/tools/imgtool/iflopimg.cpp",
+ MAME_DIR .. "src/tools/imgtool/iflopimg.h",
+ MAME_DIR .. "src/tools/imgtool/filter.cpp",
+ MAME_DIR .. "src/tools/imgtool/filter.h",
+ MAME_DIR .. "src/tools/imgtool/filteoln.cpp",
+ MAME_DIR .. "src/tools/imgtool/filtbas.cpp",
+ MAME_DIR .. "src/tools/imgtool/imgtool.cpp",
+ MAME_DIR .. "src/tools/imgtool/imgtool.h",
+ MAME_DIR .. "src/tools/imgtool/imgterrs.cpp",
+ MAME_DIR .. "src/tools/imgtool/imgterrs.h",
+ MAME_DIR .. "src/tools/imgtool/imghd.cpp",
+ MAME_DIR .. "src/tools/imgtool/imghd.h",
+ MAME_DIR .. "src/tools/imgtool/charconv.cpp",
+ MAME_DIR .. "src/tools/imgtool/charconv.h",
+ MAME_DIR .. "src/tools/imgtool/formats/vt_dsk_legacy.cpp",
+ MAME_DIR .. "src/tools/imgtool/formats/vt_dsk_legacy.h",
+ MAME_DIR .. "src/tools/imgtool/formats/coco_dsk.cpp",
+ MAME_DIR .. "src/tools/imgtool/formats/coco_dsk.h",
+ MAME_DIR .. "src/tools/imgtool/formats/pc_dsk_legacy.cpp",
+ MAME_DIR .. "src/tools/imgtool/formats/pc_dsk_legacy.h",
+ MAME_DIR .. "src/tools/imgtool/modules/amiga.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/macbin.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/rsdos.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/dgndos.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/os9.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/mac.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/ti99.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/ti990hd.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/concept.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/fat.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/fat.h",
+ MAME_DIR .. "src/tools/imgtool/modules/pc_flop.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/pc_hard.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/prodos.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/vzdos.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/thomson.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/macutil.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/macutil.h",
+ MAME_DIR .. "src/tools/imgtool/modules/cybiko.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/cybikoxt.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/psion.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/bml3.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/hp48.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/hp9845_tape.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/hp85_tape.cpp",
+ MAME_DIR .. "src/tools/imgtool/modules/rt11.cpp",
+}
+
+configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+configuration { }
+
+strip()
+
+--------------------------------------------------
+-- aueffectutil
+--------------------------------------------------
+
+if _OPTIONS["targetos"] == "macosx" then
+ project("aueffectutil")
+ uuid ("3db8316d-fad7-4f5b-b46a-99373c91550e")
+ kind "ConsoleApp"
+
+ flags {
+ "Symbols", -- always include minimum symbols for executables
+ }
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+
+ linkoptions {
+ "-sectcreate __TEXT __info_plist " .. _MAKE.esc(MAME_DIR) .. "src/tools/aueffectutil-Info.plist",
+ }
+
+ dependency {
+ { "aueffectutil", MAME_DIR .. "src/tools/aueffectutil-Info.plist", true },
+ }
+
+ links {
+ "AudioUnit.framework",
+ "AudioToolbox.framework",
+ "CoreAudio.framework",
+ "CoreAudioKit.framework",
+ "CoreServices.framework",
+ }
+
+ files {
+ MAME_DIR .. "src/tools/aueffectutil.mm",
+ }
+
+ configuration { }
+
+ strip()
+end
+
+--------------------------------------------------
+-- testkeys
+--------------------------------------------------
+
+if (_OPTIONS["osd"] == "sdl") then
+ project("testkeys")
+ uuid ("b3f5a5b8-3203-11e9-93e4-670b4f4e359d")
+ kind "ConsoleApp"
+
+ flags {
+ "Symbols", -- always include minimum symbols for executables
+ }
+
+ if _OPTIONS["SEPARATE_BIN"]~="1" then
+ targetdir(MAME_DIR)
+ end
+
+ links {
+ "utils",
+ "ocore_" .. _OPTIONS["osd"],
+ ext_lib("utf8proc"),
+ }
+
+ if _OPTIONS["targetos"]=="windows" then
+ if _OPTIONS["with-bundled-sdl2"]~=nil then
+ configuration { "mingw*"}
+ links {
+ "SDL2",
+ "imm32",
+ "version",
+ "ole32",
+ "oleaut32",
+ }
+ configuration { "vs*" }
+ links {
+ "SDL2",
+ "imm32",
+ "version",
+ }
+ configuration { }
+ else
+ if _OPTIONS["USE_LIBSDL"]~="1" then
+ configuration { "mingw*"}
+ links {
+ "SDL2main",
+ "SDL2",
+ }
+ configuration { "vs*" }
+ links {
+ "SDL2",
+ "imm32",
+ "version",
+ }
+ configuration { }
+ else
+ local str = backtick(sdlconfigcmd() .. " --libs | sed 's/ -lSDLmain//'")
+ addlibfromstring(str)
+ addoptionsfromstring(str)
+ end
+ configuration { "x32", "vs*" }
+ libdirs {
+ path.join(_OPTIONS["SDL_INSTALL_ROOT"],"lib","x86")
+ }
+ configuration { "x64", "vs*" }
+ libdirs {
+ path.join(_OPTIONS["SDL_INSTALL_ROOT"],"lib","x64")
+ }
+ end
+ end
+
+ if BASE_TARGETOS=="unix" then
+ if _OPTIONS["with-bundled-sdl2"]~=nil then
+ links {
+ "SDL2",
+ }
+ end
+ end
+
+ dofile("osd/sdl_cfg.lua")
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/lib/util",
+ }
+
+ files {
+ MAME_DIR .. "src/tools/testkeys.cpp",
+ }
+
+ configuration { "mingw*" or "vs*" }
+ targetextension ".exe"
+
+ configuration { }
+
+ strip()
+end
diff --git a/docs/release/scripts/src/video.lua b/docs/release/scripts/src/video.lua
new file mode 100644
index 00000000000..b61b5ffb0f7
--- /dev/null
+++ b/docs/release/scripts/src/video.lua
@@ -0,0 +1,1394 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- video.lua
+--
+-- Rules for building video cores
+--
+---------------------------------------------------------------------------
+
+files {
+ MAME_DIR .. "src/devices/video/poly.h",
+ MAME_DIR .. "src/devices/video/sprite.cpp",
+ MAME_DIR .. "src/devices/video/sprite.h",
+ MAME_DIR .. "src/devices/video/vector.cpp",
+ MAME_DIR .. "src/devices/video/vector.h",
+}
+
+--------------------------------------------------
+--
+--@src/devices/video/315_5124.h,VIDEOS["SEGA315_5124"] = true
+--------------------------------------------------
+
+if (VIDEOS["SEGA315_5124"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/315_5124.cpp",
+ MAME_DIR .. "src/devices/video/315_5124.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/315_5313.h,VIDEOS["SEGA315_5313"] = true
+--------------------------------------------------
+
+if (VIDEOS["SEGA315_5313"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/315_5313.cpp",
+ MAME_DIR .. "src/devices/video/315_5313.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/am8052.h,VIDEOS["AM8052"] = true
+--------------------------------------------------
+
+if (VIDEOS["AM8052"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/am8052.cpp",
+ MAME_DIR .. "src/devices/video/am8052.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/bufsprite.h,VIDEOS["BUFSPRITE"] = true
+--------------------------------------------------
+
+if (VIDEOS["BUFSPRITE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/bufsprite.cpp",
+ MAME_DIR .. "src/devices/video/bufsprite.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/cdp1861.h,VIDEOS["CDP1861"] = true
+--------------------------------------------------
+
+if (VIDEOS["CDP1861"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/cdp1861.cpp",
+ MAME_DIR .. "src/devices/video/cdp1861.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/cdp1862.h,VIDEOS["CDP1862"] = true
+--------------------------------------------------
+
+if (VIDEOS["CDP1862"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/cdp1862.cpp",
+ MAME_DIR .. "src/devices/video/cdp1862.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/cesblit.h,VIDEOS["CESBLIT"] = true
+--------------------------------------------------
+
+if (VIDEOS["CESBLIT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/cesblit.cpp",
+ MAME_DIR .. "src/devices/video/cesblit.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/crt9007.h,VIDEOS["CRT9007"] = true
+--------------------------------------------------
+
+if (VIDEOS["CRT9007"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/crt9007.cpp",
+ MAME_DIR .. "src/devices/video/crt9007.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/crt9021.h,VIDEOS["CRT9021"] = true
+--------------------------------------------------
+
+if (VIDEOS["CRT9021"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/crt9021.cpp",
+ MAME_DIR .. "src/devices/video/crt9021.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/crt9028.h,VIDEOS["CRT9028"] = true
+--------------------------------------------------
+
+if (VIDEOS["CRT9028"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/crt9028.cpp",
+ MAME_DIR .. "src/devices/video/crt9028.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/crt9212.h,VIDEOS["CRT9212"] = true
+--------------------------------------------------
+
+if (VIDEOS["CRT9212"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/crt9212.cpp",
+ MAME_DIR .. "src/devices/video/crt9212.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/dl1416.h,VIDEOS["DL1416"] = true
+--------------------------------------------------
+
+if (VIDEOS["DL1416"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/dl1416.cpp",
+ MAME_DIR .. "src/devices/video/dl1416.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/dm9368.h,VIDEOS["DM9368"] = true
+--------------------------------------------------
+
+if (VIDEOS["DM9368"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/dm9368.cpp",
+ MAME_DIR .. "src/devices/video/dm9368.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/dp8350.h,VIDEOS["DP8350"] = true
+--------------------------------------------------
+
+if (VIDEOS["DP8350"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/dp8350.cpp",
+ MAME_DIR .. "src/devices/video/dp8350.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ef9340_1.h,VIDEOS["EF9340_1"] = true
+--------------------------------------------------
+
+if (VIDEOS["EF9340_1"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ef9340_1.cpp",
+ MAME_DIR .. "src/devices/video/ef9340_1.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ef9345.h,VIDEOS["EF9345"] = true
+--------------------------------------------------
+
+if (VIDEOS["EF9345"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ef9345.cpp",
+ MAME_DIR .. "src/devices/video/ef9345.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ef9364.h,VIDEOS["EF9364"] = true
+--------------------------------------------------
+
+if (VIDEOS["EF9364"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ef9364.cpp",
+ MAME_DIR .. "src/devices/video/ef9364.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ef9365.h,VIDEOS["EF9365"] = true
+--------------------------------------------------
+
+if (VIDEOS["EF9365"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ef9365.cpp",
+ MAME_DIR .. "src/devices/video/ef9365.h",
+ }
+end
+
+--------------------------------------------------
+--@src/devices/video/epic12.h,VIDEOS["EPIC12"] = true
+--------------------------------------------------
+
+if (VIDEOS["EPIC12"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/epic12.cpp",
+ MAME_DIR .. "src/devices/video/epic12.h",
+ MAME_DIR .. "src/devices/video/epic12_blit0.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit1.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit2.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit3.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit4.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit5.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit6.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit7.cpp",
+ MAME_DIR .. "src/devices/video/epic12_blit8.cpp",
+ MAME_DIR .. "src/devices/video/epic12in.hxx",
+ MAME_DIR .. "src/devices/video/epic12pixel.hxx",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/fixfreq.h,VIDEOS["FIXFREQ"] = true
+--------------------------------------------------
+
+if (VIDEOS["FIXFREQ"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/fixfreq.cpp",
+ MAME_DIR .. "src/devices/video/fixfreq.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/gf4500.h,VIDEOS["GF4500"] = true
+--------------------------------------------------
+
+if (VIDEOS["GF4500"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/gf4500.cpp",
+ MAME_DIR .. "src/devices/video/gf4500.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/gf7600gs.h,VIDEOS["GF7600GS"] = true
+--------------------------------------------------
+
+if (VIDEOS["GF7600GS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/gf7600gs.cpp",
+ MAME_DIR .. "src/devices/video/gf7600gs.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mga2064w.h,VIDEOS["MGA2064W"] = true
+--------------------------------------------------
+
+if (VIDEOS["MGA2064W"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mga2064w.cpp",
+ MAME_DIR .. "src/devices/video/mga2064w.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/nt7534.h,VIDEOS["NT7534"] = true
+--------------------------------------------------
+
+if (VIDEOS["NT7534"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/nt7534.cpp",
+ MAME_DIR .. "src/devices/video/nt7534.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd44102.h,VIDEOS["HD44102"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD44102"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd44102.cpp",
+ MAME_DIR .. "src/devices/video/hd44102.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd44352.h,VIDEOS["HD44352"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD44352"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd44352.cpp",
+ MAME_DIR .. "src/devices/video/hd44352.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd44780.h,VIDEOS["HD44780"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD44780"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd44780.cpp",
+ MAME_DIR .. "src/devices/video/hd44780.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd61202.h,VIDEOS["HD61202"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD61202"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd61202.cpp",
+ MAME_DIR .. "src/devices/video/hd61202.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd61603.h,VIDEOS["HD61603"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD61603"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd61603.cpp",
+ MAME_DIR .. "src/devices/video/hd61603.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd61830.h,VIDEOS["HD61830"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD61830"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd61830.cpp",
+ MAME_DIR .. "src/devices/video/hd61830.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd63484.h,VIDEOS["HD63484"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD63484"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd63484.cpp",
+ MAME_DIR .. "src/devices/video/hd63484.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hd66421.h,VIDEOS["HD66421"] = true
+--------------------------------------------------
+
+if (VIDEOS["HD66421"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hd66421.cpp",
+ MAME_DIR .. "src/devices/video/hd66421.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hlcd0438.h,VIDEOS["HLCD0438"] = true
+--------------------------------------------------
+
+if (VIDEOS["HLCD0438"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hlcd0438.cpp",
+ MAME_DIR .. "src/devices/video/hlcd0438.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hlcd0488.h,VIDEOS["HLCD0488"] = true
+--------------------------------------------------
+
+if (VIDEOS["HLCD0488"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hlcd0488.cpp",
+ MAME_DIR .. "src/devices/video/hlcd0488.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hlcd0515.h,VIDEOS["HLCD0515"] = true
+--------------------------------------------------
+
+if (VIDEOS["HLCD0515"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hlcd0515.cpp",
+ MAME_DIR .. "src/devices/video/hlcd0515.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hlcd0538.h,VIDEOS["HLCD0538"] = true
+--------------------------------------------------
+
+if (VIDEOS["HLCD0538"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hlcd0538.cpp",
+ MAME_DIR .. "src/devices/video/hlcd0538.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/hp1ll3.h,VIDEOS["HP1LL3"] = true
+--------------------------------------------------
+
+if (VIDEOS["HP1LL3"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/hp1ll3.cpp",
+ MAME_DIR .. "src/devices/video/hp1ll3.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/huc6202.h,VIDEOS["HUC6202"] = true
+--------------------------------------------------
+
+if (VIDEOS["HUC6202"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/huc6202.cpp",
+ MAME_DIR .. "src/devices/video/huc6202.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/huc6260.h,VIDEOS["HUC6260"] = true
+--------------------------------------------------
+
+if (VIDEOS["HUC6260"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/huc6260.cpp",
+ MAME_DIR .. "src/devices/video/huc6260.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/huc6261.h,VIDEOS["HUC6261"] = true
+--------------------------------------------------
+
+if (VIDEOS["HUC6261"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/huc6261.cpp",
+ MAME_DIR .. "src/devices/video/huc6261.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/huc6270.h,VIDEOS["HUC6270"] = true
+--------------------------------------------------
+
+if (VIDEOS["HUC6270"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/huc6270.cpp",
+ MAME_DIR .. "src/devices/video/huc6270.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/huc6271.h,VIDEOS["HUC6271"] = true
+--------------------------------------------------
+
+if (VIDEOS["HUC6271"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/huc6271.cpp",
+ MAME_DIR .. "src/devices/video/huc6271.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/huc6272.h,VIDEOS["HUC6272"] = true
+--------------------------------------------------
+
+if (VIDEOS["HUC6272"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/huc6272.cpp",
+ MAME_DIR .. "src/devices/video/huc6272.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/i8244.h,VIDEOS["I8244"] = true
+--------------------------------------------------
+
+if (VIDEOS["I8244"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/i8244.cpp",
+ MAME_DIR .. "src/devices/video/i8244.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/i82730.h,VIDEOS["I82730"] = true
+--------------------------------------------------
+
+if (VIDEOS["I82730"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/i82730.cpp",
+ MAME_DIR .. "src/devices/video/i82730.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/i8275.h,VIDEOS["I8275"] = true
+--------------------------------------------------
+
+if (VIDEOS["I8275"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/i8275.cpp",
+ MAME_DIR .. "src/devices/video/i8275.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ims_cvc.h,VIDEOS["IMS_CVC"] = true
+--------------------------------------------------
+
+if (VIDEOS["IMS_CVC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ims_cvc.cpp",
+ MAME_DIR .. "src/devices/video/ims_cvc.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/lc7582.h,VIDEOS["LC7582"] = true
+--------------------------------------------------
+
+if (VIDEOS["LC7582"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/lc7582.cpp",
+ MAME_DIR .. "src/devices/video/lc7582.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/lc7985.h,VIDEOS["LC7985"] = true
+--------------------------------------------------
+
+if (VIDEOS["LC7985"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/lc7985.cpp",
+ MAME_DIR .. "src/devices/video/lc7985.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/m50458.h,VIDEOS["M50458"] = true
+--------------------------------------------------
+
+if (VIDEOS["M50458"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/m50458.cpp",
+ MAME_DIR .. "src/devices/video/m50458.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/video/mb88303.h,VIDEOS["MB88303"] = true
+---------------------------------------------------
+
+if (VIDEOS["MB88303"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mb88303.cpp",
+ MAME_DIR .. "src/devices/video/mb88303.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mb90082.h,VIDEOS["MB90082"] = true
+--------------------------------------------------
+
+if (VIDEOS["MB90082"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mb90082.cpp",
+ MAME_DIR .. "src/devices/video/mb90082.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mb_vcu.h,VIDEOS["MB_VCU"] = true
+--------------------------------------------------
+
+if (VIDEOS["MB_VCU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mb_vcu.cpp",
+ MAME_DIR .. "src/devices/video/mb_vcu.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mc6845.h,VIDEOS["MC6845"] = true
+--------------------------------------------------
+
+if (VIDEOS["MC6845"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mc6845.cpp",
+ MAME_DIR .. "src/devices/video/mc6845.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mc6847.h,VIDEOS["MC6847"] = true
+--------------------------------------------------
+
+if (VIDEOS["MC6847"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mc6847.cpp",
+ MAME_DIR .. "src/devices/video/mc6847.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/md4330b.h,VIDEOS["MD4330B"] = true
+--------------------------------------------------
+
+if (VIDEOS["MD4330B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/md4330b.cpp",
+ MAME_DIR .. "src/devices/video/md4330b.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mm5445.h,VIDEOS["MM5445"] = true
+--------------------------------------------------
+
+if (VIDEOS["MM5445"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mm5445.cpp",
+ MAME_DIR .. "src/devices/video/mm5445.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/msm6222b.h,VIDEOS["MSM6222B"] = true
+--------------------------------------------------
+
+if (VIDEOS["MSM6222B"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/msm6222b.cpp",
+ MAME_DIR .. "src/devices/video/msm6222b.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/msm6255.h,VIDEOS["MSM6255"] = true
+--------------------------------------------------
+
+if (VIDEOS["MSM6255"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/msm6255.cpp",
+ MAME_DIR .. "src/devices/video/msm6255.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/mos6566.h,VIDEOS["MOS6566"] = true
+--------------------------------------------------
+
+if (VIDEOS["MOS6566"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/mos6566.cpp",
+ MAME_DIR .. "src/devices/video/mos6566.h",
+ }
+end
+
+
+files {
+ MAME_DIR .. "src/devices/video/cgapal.cpp",
+ MAME_DIR .. "src/devices/video/cgapal.h",
+}
+
+--------------------------------------------------
+--
+--@src/devices/video/pc_vga.h,VIDEOS["PC_VGA"] = true
+--------------------------------------------------
+
+if (VIDEOS["PC_VGA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/pc_vga.cpp",
+ MAME_DIR .. "src/devices/video/pc_vga.h",
+ MAME_DIR .. "src/devices/bus/isa/trident.cpp",
+ MAME_DIR .. "src/devices/bus/isa/trident.h",
+ MAME_DIR .. "src/devices/video/clgd542x.cpp",
+ MAME_DIR .. "src/devices/video/clgd542x.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/virge_pci.h,VIDEOS["VIRGE_PCI"] = true
+--------------------------------------------------
+
+if (VIDEOS["VIRGE_PCI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/virge_pci.cpp",
+ MAME_DIR .. "src/devices/video/virge_pci.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/pcd8544.h,VIDEOS["PCD8544"] = true
+--------------------------------------------------
+
+if (VIDEOS["PCD8544"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/pcd8544.cpp",
+ MAME_DIR .. "src/devices/video/pcd8544.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/pcf2100.h,VIDEOS["PCF2100"] = true
+--------------------------------------------------
+
+if (VIDEOS["PCF2100"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/pcf2100.cpp",
+ MAME_DIR .. "src/devices/video/pcf2100.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/psx.h,VIDEOS["PSX"] = true
+--------------------------------------------------
+
+if (VIDEOS["PSX"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/psx.cpp",
+ MAME_DIR .. "src/devices/video/psx.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ramdac.h,VIDEOS["RAMDAC"] = true
+--------------------------------------------------
+
+if (VIDEOS["RAMDAC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ramdac.cpp",
+ MAME_DIR .. "src/devices/video/ramdac.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/saa5050.h,VIDEOS["SAA5050"] = true
+--------------------------------------------------
+
+if (VIDEOS["SAA5050"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/saa5050.cpp",
+ MAME_DIR .. "src/devices/video/saa5050.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/saa5240.h,VIDEOS["SAA5240"] = true
+--------------------------------------------------
+
+if (VIDEOS["SAA5240"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/saa5240.cpp",
+ MAME_DIR .. "src/devices/video/saa5240.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/pwm.h,VIDEOS["PWM_DISPLAY"] = true
+--------------------------------------------------
+if (VIDEOS["PWM_DISPLAY"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/pwm.cpp",
+ MAME_DIR .. "src/devices/video/pwm.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/sed1200.h,VIDEOS["SED1200"] = true
+--------------------------------------------------
+if (VIDEOS["SED1200"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/sed1200.cpp",
+ MAME_DIR .. "src/devices/video/sed1200.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/sed1330.h,VIDEOS["SED1330"] = true
+--------------------------------------------------
+if (VIDEOS["SED1330"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/sed1330.cpp",
+ MAME_DIR .. "src/devices/video/sed1330.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/sed1356.h,VIDEOS["SED1356"] = true
+--------------------------------------------------
+if (VIDEOS["SED1356"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/sed1356.cpp",
+ MAME_DIR .. "src/devices/video/sed1356.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/sed1500.h,VIDEOS["SED1500"] = true
+--------------------------------------------------
+if (VIDEOS["SED1500"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/sed1500.cpp",
+ MAME_DIR .. "src/devices/video/sed1500.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/sed1520.h,VIDEOS["SED1520"] = true
+--------------------------------------------------
+if (VIDEOS["SED1520"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/sed1520.cpp",
+ MAME_DIR .. "src/devices/video/sed1520.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/scn2674.h,VIDEOS["SCN2674"] = true
+--------------------------------------------------
+if (VIDEOS["SCN2674"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/scn2674.cpp",
+ MAME_DIR .. "src/devices/video/scn2674.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/sda5708.h,VIDEOS["SDA5708"] = true
+--------------------------------------------------
+if (VIDEOS["SDA5708"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/sda5708.cpp",
+ MAME_DIR .. "src/devices/video/sda5708.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/snes_ppu.h,VIDEOS["SNES_PPU"] = true
+--------------------------------------------------
+if (VIDEOS["SNES_PPU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/snes_ppu.cpp",
+ MAME_DIR .. "src/devices/video/snes_ppu.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/stvvdp1.h,VIDEOS["STVVDP"] = true
+--@src/devices/video/stvvdp2.h,VIDEOS["STVVDP"] = true
+--------------------------------------------------
+
+if (VIDEOS["STVVDP"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/stvvdp1.cpp",
+ MAME_DIR .. "src/devices/video/stvvdp1.h",
+ MAME_DIR .. "src/devices/video/stvvdp2.cpp",
+ MAME_DIR .. "src/devices/video/stvvdp2.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/t6963c.h,VIDEOS["T6963C"] = true
+--------------------------------------------------
+
+if (VIDEOS["T6963C"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/t6963c.cpp",
+ MAME_DIR .. "src/devices/video/t6963c.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/t6a04.h,VIDEOS["T6A04"] = true
+--------------------------------------------------
+
+if (VIDEOS["T6A04"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/t6a04.cpp",
+ MAME_DIR .. "src/devices/video/t6a04.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/tea1002.h,VIDEOS["TEA1002"] = true
+--------------------------------------------------
+
+if (VIDEOS["TEA1002"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/tea1002.cpp",
+ MAME_DIR .. "src/devices/video/tea1002.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/tlc34076.h,VIDEOS["TLC34076"] = true
+--------------------------------------------------
+
+if (VIDEOS["TLC34076"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/tlc34076.cpp",
+ MAME_DIR .. "src/devices/video/tlc34076.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/tms34061.h,VIDEOS["TMS34061"] = true
+--------------------------------------------------
+
+if (VIDEOS["TMS34061"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/tms34061.cpp",
+ MAME_DIR .. "src/devices/video/tms34061.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/tms3556.h,VIDEOS["TMS3556"] = true
+--------------------------------------------------
+
+if (VIDEOS["TMS3556"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/tms3556.cpp",
+ MAME_DIR .. "src/devices/video/tms3556.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/tms9927.h,VIDEOS["TMS9927"] = true
+--------------------------------------------------
+
+if (VIDEOS["TMS9927"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/tms9927.cpp",
+ MAME_DIR .. "src/devices/video/tms9927.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/tms9928a.h,VIDEOS["TMS9928A"] = true
+--------------------------------------------------
+
+if (VIDEOS["TMS9928A"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/tms9928a.cpp",
+ MAME_DIR .. "src/devices/video/tms9928a.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/upd3301.h,VIDEOS["UPD3301"] = true
+--------------------------------------------------
+
+if (VIDEOS["UPD3301"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/upd3301.cpp",
+ MAME_DIR .. "src/devices/video/upd3301.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/upd7220.h,VIDEOS["UPD7220"] = true
+--------------------------------------------------
+
+if (VIDEOS["UPD7220"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/upd7220.cpp",
+ MAME_DIR .. "src/devices/video/upd7220.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/upd7227.h,VIDEOS["UPD7227"] = true
+--------------------------------------------------
+
+if (VIDEOS["UPD7227"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/upd7227.cpp",
+ MAME_DIR .. "src/devices/video/upd7227.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/vic4567.h,VIDEOS["VIC4567"] = true
+--------------------------------------------------
+
+if (VIDEOS["VIC4567"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/vic4567.cpp",
+ MAME_DIR .. "src/devices/video/vic4567.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/v9938.h,VIDEOS["V9938"] = true
+--------------------------------------------------
+
+if (VIDEOS["V9938"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/v9938.cpp",
+ MAME_DIR .. "src/devices/video/v9938.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/zeus2.h,VIDEOS["ZEUS2"] = true
+--------------------------------------------------
+
+if (VIDEOS["ZEUS2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/zeus2.cpp",
+ MAME_DIR .. "src/devices/video/zeus2.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/voodoo.h,VIDEOS["VOODOO"] = true
+--------------------------------------------------
+
+if (VIDEOS["VOODOO"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/voodoo.cpp",
+ MAME_DIR .. "src/devices/video/voodoo.h",
+ MAME_DIR .. "src/devices/video/voodoo_2.cpp",
+ MAME_DIR .. "src/devices/video/voodoo_2.h",
+ MAME_DIR .. "src/devices/video/voodoo_banshee.cpp",
+ MAME_DIR .. "src/devices/video/voodoo_banshee.h",
+ MAME_DIR .. "src/devices/video/voodoo_regs.h",
+ MAME_DIR .. "src/devices/video/voodoo_render.cpp",
+ MAME_DIR .. "src/devices/video/voodoo_render.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/voodoo_pci.h,VIDEOS["VOODOO_PCI"] = true
+--------------------------------------------------
+
+if (VIDEOS["VOODOO_PCI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/voodoo_pci.cpp",
+ MAME_DIR .. "src/devices/video/voodoo_pci.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/crtc_ega.h,VIDEOS["CRTC_EGA"] = true
+--------------------------------------------------
+
+if (VIDEOS["CRTC_EGA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/crtc_ega.cpp",
+ MAME_DIR .. "src/devices/video/crtc_ega.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/jangou_blitter.h,VIDEOS["JANGOU_BLITTER"] = true
+--------------------------------------------------
+
+if (VIDEOS["JANGOU_BLITTER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/jangou_blitter.cpp",
+ MAME_DIR .. "src/devices/video/jangou_blitter.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/gb_lcd.h,VIDEOS["GB_LCD"] = true
+--------------------------------------------------
+
+if (VIDEOS["GB_LCD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/gb_lcd.cpp",
+ MAME_DIR .. "src/devices/video/gb_lcd.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/gba_lcd.h,VIDEOS["GBA_LCD"] = true
+--------------------------------------------------
+
+if (VIDEOS["GBA_LCD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/gba_lcd.cpp",
+ MAME_DIR .. "src/devices/video/gba_lcd.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ef9369.h,VIDEOS["EF9369"] = true
+--------------------------------------------------
+
+if (VIDEOS["EF9369"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ef9369.cpp",
+ MAME_DIR .. "src/devices/video/ef9369.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ppu2c0x.h,VIDEOS["PPU2C0X"] = true
+--------------------------------------------------
+
+if (VIDEOS["PPU2C0X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ppu2c0x.cpp",
+ MAME_DIR .. "src/devices/video/ppu2c0x.h",
+ MAME_DIR .. "src/devices/video/ppu2c0x_vt.cpp",
+ MAME_DIR .. "src/devices/video/ppu2c0x_vt.h",
+ MAME_DIR .. "src/devices/video/ppu2c0x_sh6578.cpp",
+ MAME_DIR .. "src/devices/video/ppu2c0x_sh6578.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/bt459.h,VIDEOS["BT459"] = true
+--------------------------------------------------
+
+if (VIDEOS["BT459"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/bt459.cpp",
+ MAME_DIR .. "src/devices/video/bt459.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/imagetek_i4100.h,VIDEOS["I4100"] = true
+--------------------------------------------------
+
+if (VIDEOS["I4100"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/imagetek_i4100.cpp",
+ MAME_DIR .. "src/devices/video/imagetek_i4100.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/dp8510.h,VIDEOS["DP8510"] = true
+--------------------------------------------------
+
+if (VIDEOS["DP8510"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/dp8510.cpp",
+ MAME_DIR .. "src/devices/video/dp8510.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/bt45x.h,VIDEOS["BT45X"] = true
+--------------------------------------------------
+
+if (VIDEOS["BT45X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/bt45x.cpp",
+ MAME_DIR .. "src/devices/video/bt45x.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/topcat.h,VIDEOS["TOPCAT"] = true
+--------------------------------------------------
+if (VIDEOS["TOPCAT"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/topcat.cpp",
+ MAME_DIR .. "src/devices/video/topcat.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/catseye.h,VIDEOS["CATSEYE"] = true
+--------------------------------------------------
+if (VIDEOS["CATSEYE"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/catseye.cpp",
+ MAME_DIR .. "src/devices/video/catseye.h",
+ }
+end
+
+
+--------------------------------------------------
+--
+--@src/devices/video/nereid.h,VIDEOS["NEREID"] = true
+--------------------------------------------------
+if (VIDEOS["NEREID"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/nereid.cpp",
+ MAME_DIR .. "src/devices/video/nereid.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ps2gif.h,VIDEOS["PS2GIF"] = true
+--------------------------------------------------
+if (VIDEOS["PS2GIF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ps2gif.cpp",
+ MAME_DIR .. "src/devices/video/ps2gif.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ps2gs.h,VIDEOS["PS2GS"] = true
+--------------------------------------------------
+if (VIDEOS["PS2GS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ps2gs.cpp",
+ MAME_DIR .. "src/devices/video/ps2gs.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/decsfb.h,VIDEOS["DECSFB"] = true
+--------------------------------------------------
+if (VIDEOS["DECSFB"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/decsfb.cpp",
+ MAME_DIR .. "src/devices/video/decsfb.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/bt47x.h,VIDEOS["BT47X"] = true
+--------------------------------------------------
+
+if (VIDEOS["BT47X"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/bt47x.cpp",
+ MAME_DIR .. "src/devices/video/bt47x.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/bt431.h,VIDEOS["BT431"] = true
+--------------------------------------------------
+
+if (VIDEOS["BT431"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/bt431.cpp",
+ MAME_DIR .. "src/devices/video/bt431.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/vrender0.h,VIDEOS["VRENDER0"] = true
+--------------------------------------------------
+
+if (VIDEOS["VRENDER0"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/vrender0.cpp",
+ MAME_DIR .. "src/devices/video/vrender0.h",
+ }
+end
diff --git a/docs/release/scripts/target/hbmame/hbmame.lua b/docs/release/scripts/target/hbmame/hbmame.lua
new file mode 100644
index 00000000000..e6d3c67f597
--- /dev/null
+++ b/docs/release/scripts/target/hbmame/hbmame.lua
@@ -0,0 +1,1104 @@
+-- license:BSD-3-Clause
+-- copyright-holders:Robbbert
+---------------------------------------------------------------------------
+--
+-- hbmame.lua
+--
+-- HBMAME target makefile
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- specify available CPU cores
+---------------------------------------------------
+
+CPUS["ADSP21XX"] = true
+CPUS["ADSP21062"] = true -- model2
+CPUS["ARM"] = true
+CPUS["ARM7"] = true
+CPUS["CCPU"] = true
+CPUS["DSP16A"] = true
+CPUS["E1"] = true -- vamphalf
+CPUS["ES5510"] = true
+CPUS["FR"] = true
+CPUS["G65816"] = true -- snesb
+CPUS["H8"] = true -- seta2
+CPUS["H6280"] = true
+CPUS["HD6309"] = true
+CPUS["I8085"] = true
+CPUS["I8089"] = true
+CPUS["I86"] = true
+CPUS["I960"] = true -- model2
+CPUS["KC80"] = true -- ddenlovr
+CPUS["M37710"] = true -- namcona1
+CPUS["M6502"] = true
+CPUS["M6800"] = true
+CPUS["M6805"] = true
+CPUS["M6809"] = true
+CPUS["M680X0"] = true
+CPUS["MB88XX"] = true
+CPUS["MB86233"] = true -- model2
+CPUS["MB86235"] = true -- model2
+CPUS["MCS48"] = true
+CPUS["MCS51"] = true
+CPUS["MN10200"] = true
+CPUS["NEC"] = true
+CPUS["PSX"] = true
+CPUS["S2650"] = true
+CPUS["SCUDSP"] = true -- stv
+CPUS["SH"] = true
+CPUS["SM510"] = true
+CPUS["SPC700"] = true -- snesb
+CPUS["SSP1601"] = true
+CPUS["TLCS90"] = true
+CPUS["TMS32010"] = true
+CPUS["TMS32031"] = true
+CPUS["TMS340X0"] = true
+CPUS["TMS57002"] = true
+CPUS["PIC16C5X"] = true
+CPUS["UPD7725"] = true -- segas32
+CPUS["UPD7810"] = true
+CPUS["V60"] = true -- segas32
+CPUS["V810"] = true
+CPUS["Z180"] = true
+CPUS["Z80"] = true
+CPUS["Z8000"] = true -- polepos
+
+--------------------------------------------------
+-- specify available sound cores
+--------------------------------------------------
+
+SOUNDS["ASTROCADE"] = true
+SOUNDS["AY8910"] = true
+SOUNDS["BEEP"] = true
+SOUNDS["BSMT2000"] = true -- deco32
+SOUNDS["C140"] = true -- namcona1
+SOUNDS["C6280"] = true
+SOUNDS["CDDA"] = true
+SOUNDS["DAC"] = true
+SOUNDS["DMADAC"] = true
+SOUNDS["DIGITALKER"] = true
+SOUNDS["DISCRETE"] = true
+SOUNDS["ES5505"] = true
+SOUNDS["ESQPUMP"] = true
+SOUNDS["HC55516"] = true
+SOUNDS["I5000_SND"] = true
+SOUNDS["ICS2115"] = true
+SOUNDS["IREMGA20"] = true -- m92
+SOUNDS["K005289"] = true
+SOUNDS["K007232"] = true
+SOUNDS["K051649"] = true
+SOUNDS["K053260"] = true
+SOUNDS["K054539"] = true
+SOUNDS["K056800"] = true -- mystwarr
+SOUNDS["LC7535"] = true -- deco32
+SOUNDS["MPEG_AUDIO"] = true -- model2
+SOUNDS["MSM5205"] = true
+SOUNDS["MSM5232"] = true -- flstory
+SOUNDS["MULTIPCM"] = true -- model2
+SOUNDS["NAMCO_15XX"] = true
+SOUNDS["NAMCO_52XX"] = true
+SOUNDS["NAMCO_63701X"] = true
+SOUNDS["NES_APU"] = true
+SOUNDS["OKIM6295"] = true
+SOUNDS["OKIM9810"] = true -- seta2
+SOUNDS["POKEY"] = true
+SOUNDS["QS1000"] = true -- vamphalf
+SOUNDS["QSOUND"] = true
+SOUNDS["RF5C68"] = true
+SOUNDS["SAMPLES"] = true
+SOUNDS["SCSP"] = true -- model2
+SOUNDS["SEGAPCM"] = true
+SOUNDS["SN76477"] = true
+SOUNDS["SN76496"] = true
+SOUNDS["SP0250"] = true
+SOUNDS["SPEAKER"] = true
+SOUNDS["SPU"] = true -- zn
+SOUNDS["ST0016"] = true
+SOUNDS["S_DSP"] = true -- snes
+SOUNDS["TA7630"] = true -- flstory
+SOUNDS["TC8830F"] = true -- timeplt
+SOUNDS["TMS36XX"] = true
+SOUNDS["TMS5110"] = true
+SOUNDS["TMS5220"] = true
+SOUNDS["UPD7759"] = true
+SOUNDS["VLM5030"] = true
+SOUNDS["VOLT_REG"] = true
+SOUNDS["VOTRAX"] = true
+SOUNDS["X1_010"] = true -- seta2
+SOUNDS["YM2151"] = true
+SOUNDS["YM2203"] = true
+SOUNDS["YM2413"] = true
+SOUNDS["YM2608"] = true
+SOUNDS["YM2610"] = true
+SOUNDS["YM2612"] = true
+SOUNDS["YM3812"] = true
+SOUNDS["YM3526"] = true
+SOUNDS["YMF262"] = true
+SOUNDS["YMF271"] = true -- zn
+SOUNDS["YMF278B"] = true
+SOUNDS["YMZ280B"] = true
+SOUNDS["YMZ770"] = true -- cv1k
+SOUNDS["ZSG2"] = true -- zn
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+VIDEOS["BUFSPRITE"] = true
+VIDEOS["EPIC12"] = true -- cv1k
+VIDEOS["HD63484"] = true
+VIDEOS["MC6845"] = true
+VIDEOS["SEGA315_5124"] = true
+VIDEOS["SEGA315_5313"] = true
+VIDEOS["SNES_PPU"] = true -- snesb
+VIDEOS["TLC34076"] = true
+VIDEOS["TMS34061"] = true
+VIDEOS["PSX"] = true
+VIDEOS["STVVDP"] = true -- stv
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["6522VIA"] = true
+MACHINES["6821PIA"] = true
+MACHINES["6840PTM"] = true -- ginganin
+MACHINES["68681"] = true
+MACHINES["7200FIFO"] = true
+MACHINES["AAKARTDEV"] = true
+MACHINES["ACIA6850"] = true -- seta
+MACHINES["ACORN_VIDC"] = false -- armdemo, MNW
+MACHINES["ADC0804"] = true
+MACHINES["ADC0808"] = true
+MACHINES["ADC083X"] = true -- seta
+MACHINES["ADC0844"] = true
+MACHINES["AT28C16"] = true -- zn
+MACHINES["BANKDEV"] = true
+MACHINES["CXD1095"] = true
+MACHINES["EEPROMDEV"] = true
+MACHINES["ER2055"] = true
+MACHINES["FDC_PLL"] = true
+MACHINES["I2CMEM"] = true
+MACHINES["I8243"] = true
+MACHINES["I8251"] = true
+MACHINES["I8255"] = true
+MACHINES["IDECTRL"] = true
+MACHINES["INPUT_MERGER"] = true
+MACHINES["INTELFLASH"] = true
+MACHINES["GEN_FIFO"] = true
+MACHINES["GEN_LATCH"] = true
+MACHINES["I8257"] = true
+MACHINES["K053252"] = true
+MACHINES["K054321"] = true -- mystwarr
+MACHINES["LATCH8"] = true
+MACHINES["LDPR8210"] = true
+MACHINES["MB3773"] = true
+MACHINES["MB8421"] = true
+MACHINES["MB14241"] = true
+MACHINES["MB87078"] = true
+MACHINES["MB89352"] = true -- segas32
+MACHINES["MCF5206E"] = true -- seta2
+MACHINES["MIOT6530"] = true
+MACHINES["MSM6242"] = true -- namcona1
+MACHINES["MSM6253"] = true
+MACHINES["NETLIST"] = true
+MACHINES["NSCSI"] = true -- cps3
+MACHINES["OUTPUT_LATCH"] = true
+MACHINES["PIC8259"] = true -- m92
+MACHINES["PIT8253"] = true -- seta
+MACHINES["RIOT6532"] = true
+MACHINES["RP5C01"] = true
+MACHINES["RP5H01"] = true
+MACHINES["RSTBUF"] = true -- dynax, ddenlovr
+MACHINES["RTC9701"] = true -- cv1k
+MACHINES["SEGA_SCU"] = true -- stv
+MACHINES["SERFLASH"] = true -- cv1k
+MACHINES["SMPC"] = true -- stv
+MACHINES["STVCD"] = true -- stv
+MACHINES["S_SMP"] = true -- snes
+MACHINES["TC0091LVC"] = true
+MACHINES["TE7750"] = true
+MACHINES["TICKET"] = true
+MACHINES["TIMEKPR"] = true
+MACHINES["TMP68301"] = true -- seta2
+MACHINES["TMS1024"] = true -- docastle
+MACHINES["TMS6100"] = true
+MACHINES["TTL74153"] = true
+MACHINES["TTL74157"] = true
+MACHINES["TTL74259"] = true
+MACHINES["TTL7474"] = true -- scramble
+MACHINES["UPD1990A"] = true
+MACHINES["UPD4701"] = true
+MACHINES["UPD4992"] = true
+MACHINES["UPD7001"] = true
+MACHINES["V3021"] = true
+MACHINES["WATCHDOG"] = true
+MACHINES["WD33C93"] = true
+MACHINES["WD33C9X"] = true -- cps3
+MACHINES["WD_FDC"] = true
+MACHINES["Z80CTC"] = true
+MACHINES["Z80DAISY"] = true
+MACHINES["Z80PIO"] = true
+MACHINES["Z80SIO"] = true -- ddenlovr
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+
+BUSES["ATA"] = true
+BUSES["GENERIC"] = true
+BUSES["NSCSI"] = true
+BUSES["SAT_CTRL"] = true -- stv
+BUSES["SCSI"] = true
+
+--------------------------------------------------
+-- this is the list of driver libraries that
+-- comprise MAME plus hbmame.lst which contains
+-- the list of drivers
+--------------------------------------------------
+
+function linkProjects_hbmame_hbmame(_target, _subtarget)
+ links {
+-- "acorn",
+ "atari",
+ "atlus",
+ "capcom",
+ "cave",
+ "cinemat",
+ "dataeast",
+ "dynax",
+ "exidy",
+ "fuuki",
+ "gottlieb",
+ "igs",
+ "irem",
+ "itech",
+ "jaleco",
+ "kaneko",
+ "konami",
+ "metro",
+ "midway",
+ "namco",
+ "neogeo",
+ "nichibut",
+ "nintendo",
+ "nmk",
+ "phoenix",
+ "psikyo",
+ "puckman",
+ "sega",
+ "seibu",
+ "seta",
+ "snk",
+ "sony",
+ "taito",
+ "technos",
+ "tehkan",
+ "toaplan",
+ "unico",
+ "univers",
+ "valadon",
+ "vsystem",
+ "misc",
+ }
+end
+
+function createHBMAMEProjects(_target, _subtarget, _name)
+ project (_name)
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-" .. _target .."_" .. _subtarget .. "_" .._name))
+-- addprojectflags() -- no idea if this is needed, seems to work fine without it
+ precompiledheaders()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/hbmame/includes",
+ MAME_DIR .. "src/hbmame",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "src/lib/netlist",
+ MAME_DIR .. "3rdparty",
+ MAME_DIR .. "3rdparty/zlib",
+ GEN_DIR .. "mame/layout",
+ GEN_DIR .. "hbmame/layout",
+ }
+ includedirs {
+ ext_includedir("flac"),
+ }
+end
+
+function createProjects_hbmame_hbmame(_target, _subtarget)
+--------------------------------------------------
+-- the following files are general components and
+-- shared across a number of drivers
+--------------------------------------------------
+
+--createHBMAMEProjects(_target, _subtarget, "shared")
+--files {
+-- MAME_DIR .. "src/devices/machine/ticket.cpp",
+--}
+
+--------------------------------------------------
+-- manufacturer-specific groupings for drivers
+--------------------------------------------------
+
+--createHBMAMEProjects(_target, _subtarget, "acorn")
+--files {
+-- MAME_DIR .. "src/hbmame/drivers/ertictac.cpp",
+-- MAME_DIR .. "src/mame/machine/archimds.cpp",
+--}
+
+createHBMAMEProjects(_target, _subtarget, "atari")
+files {
+ MAME_DIR .. "src/hbmame/drivers/asteroid.cpp",
+ MAME_DIR .. "src/mame/machine/asteroid.cpp",
+ MAME_DIR .. "src/hbmame/drivers/atarisy1.cpp",
+ MAME_DIR .. "src/mame/video/atarisy1.cpp",
+ MAME_DIR .. "src/mame/audio/asteroid.cpp",
+ MAME_DIR .. "src/hbmame/drivers/bwidow.cpp",
+ MAME_DIR .. "src/mame/audio/bwidow.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cball.cpp",
+ MAME_DIR .. "src/hbmame/drivers/centiped.cpp",
+ MAME_DIR .. "src/mame/video/centiped.cpp",
+ MAME_DIR .. "src/hbmame/drivers/gauntlet.cpp",
+ MAME_DIR .. "src/mame/video/gauntlet.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tempest.cpp",
+ MAME_DIR .. "src/mame/machine/atarigen.cpp",
+ MAME_DIR .. "src/mame/machine/mathbox.cpp",
+ MAME_DIR .. "src/mame/machine/slapstic.cpp",
+ MAME_DIR .. "src/mame/audio/llander.cpp",
+ MAME_DIR .. "src/mame/video/atarimo.cpp",
+ MAME_DIR .. "src/mame/video/avgdvg.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mhavoc_hb.cpp",
+ MAME_DIR .. "src/hbmame/machine/mhavoc_hb.cpp",
+ MAME_DIR .. "src/mame/drivers/mhavoc.cpp",
+ MAME_DIR .. "src/mame/machine/mhavoc.cpp",
+ MAME_DIR .. "src/hbmame/drivers/missile.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "atlus")
+files {
+ MAME_DIR .. "src/hbmame/drivers/powerins.cpp",
+ MAME_DIR .. "src/mame/video/powerins.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "capcom")
+files {
+ MAME_DIR .. "src/hbmame/drivers/sf.cpp",
+ MAME_DIR .. "src/hbmame/drivers/1942.cpp",
+ MAME_DIR .. "src/mame/video/1942.cpp",
+ MAME_DIR .. "src/mame/audio/nl_1942.cpp",
+ MAME_DIR .. "src/hbmame/drivers/blktiger.cpp",
+ MAME_DIR .. "src/mame/video/blktiger.cpp",
+ MAME_DIR .. "src/hbmame/drivers/commando.cpp",
+ MAME_DIR .. "src/mame/video/commando.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cps1.cpp",
+ MAME_DIR .. "src/hbmame/video/cps1.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cps2.cpp",
+ MAME_DIR .. "src/hbmame/video/cps2.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cps3.cpp",
+ MAME_DIR .. "src/mame/audio/cps3.cpp",
+ MAME_DIR .. "src/hbmame/drivers/fcrash.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mitchell.cpp",
+ MAME_DIR .. "src/mame/video/mitchell.cpp",
+ MAME_DIR .. "src/mame/machine/kabuki.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "cave")
+files {
+ MAME_DIR .. "src/hbmame/drivers/cave.cpp",
+ MAME_DIR .. "src/mame/video/cave.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cv1k.cpp",
+ MAME_DIR .. "src/mame/video/tmap038.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "cinemat")
+files {
+ MAME_DIR .. "src/hbmame/drivers/cinemat.cpp",
+ MAME_DIR .. "src/mame/audio/cinemat.cpp",
+ MAME_DIR .. "src/mame/video/cinemat.cpp",
+ MAME_DIR .. "src/mame/audio/nl_armora.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_barrier.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_boxingb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_cinemat_common.h",
+ MAME_DIR .. "src/mame/audio/nl_ripoff.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_solarq.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_spacewar.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_speedfrk.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_starcas.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_starhawk.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_sundance.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_tailg.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_warrior.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "dataeast")
+files {
+ MAME_DIR .. "src/hbmame/drivers/astrof.cpp",
+ MAME_DIR .. "src/mame/audio/astrof.cpp",
+ MAME_DIR .. "src/hbmame/drivers/btime.cpp",
+ MAME_DIR .. "src/mame/machine/btime.cpp",
+ MAME_DIR .. "src/mame/video/btime.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cninja.cpp",
+ MAME_DIR .. "src/mame/video/cninja.cpp",
+ MAME_DIR .. "src/hbmame/drivers/dec0.cpp",
+ MAME_DIR .. "src/mame/machine/dec0.cpp",
+ MAME_DIR .. "src/mame/video/dec0.cpp",
+ MAME_DIR .. "src/mame/machine/deco222.cpp",
+ MAME_DIR .. "src/mame/machine/decocpu7.cpp",
+ MAME_DIR .. "src/hbmame/drivers/pcktgal.cpp",
+ MAME_DIR .. "src/mame/video/pcktgal.cpp",
+ MAME_DIR .. "src/mame/video/decbac06.cpp",
+ MAME_DIR .. "src/mame/video/decmxc06.cpp",
+ MAME_DIR .. "src/mame/video/deco16ic.cpp", -- cninja
+ MAME_DIR .. "src/mame/machine/deco104.cpp", -- cninja
+ MAME_DIR .. "src/mame/machine/deco146.cpp", -- cninja
+ MAME_DIR .. "src/mame/video/decospr.cpp", -- cninja
+ MAME_DIR .. "src/mame/machine/deco_irq.cpp", -- cninja
+ MAME_DIR .. "src/mame/machine/decocrpt.cpp", -- cninja
+ MAME_DIR .. "src/hbmame/drivers/deco32.cpp",
+ MAME_DIR .. "src/mame/video/deco32.cpp",
+ MAME_DIR .. "src/mame/audio/decobsmt.cpp", -- deco32
+ MAME_DIR .. "src/mame/video/deco_ace.cpp", -- deco32
+ MAME_DIR .. "src/mame/machine/deco156.cpp", -- deco32
+ MAME_DIR .. "src/hbmame/drivers/rohga.cpp",
+ MAME_DIR .. "src/mame/video/rohga.cpp",
+ MAME_DIR .. "src/mame/video/decocomn.cpp", -- rohga
+ MAME_DIR .. "src/hbmame/drivers/sidepckt.cpp",
+ MAME_DIR .. "src/mame/video/sidepckt.cpp",
+ MAME_DIR .. "src/mame/drivers/decocass.cpp",
+ MAME_DIR .. "src/mame/machine/decocass.cpp",
+ MAME_DIR .. "src/mame/machine/decocass_tape.cpp",
+ MAME_DIR .. "src/mame/video/decocass.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "dynax")
+files {
+ MAME_DIR .. "src/hbmame/drivers/ddenlovr.cpp",
+ MAME_DIR .. "src/hbmame/drivers/dynax.cpp",
+ MAME_DIR .. "src/mame/video/dynax.cpp",
+ MAME_DIR .. "src/mame/video/dynax_blitter_rev2.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "exidy")
+files {
+ MAME_DIR .. "src/hbmame/drivers/exidy.cpp",
+ MAME_DIR .. "src/mame/audio/exidy.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "fuuki")
+files {
+ MAME_DIR .. "src/hbmame/drivers/fuukifg3.cpp",
+ MAME_DIR .. "src/mame/video/fuukifg3.cpp",
+ MAME_DIR .. "src/mame/video/fuukifg.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "gottlieb")
+files {
+ MAME_DIR .. "src/hbmame/drivers/gottlieb.cpp",
+ MAME_DIR .. "src/mame/audio/gottlieb.cpp",
+ MAME_DIR .. "src/mame/video/gottlieb.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "igs")
+files {
+ MAME_DIR .. "src/hbmame/drivers/igs011.cpp",
+ MAME_DIR .. "src/hbmame/drivers/pgm.cpp",
+ MAME_DIR .. "src/mame/video/pgm.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type1.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type2.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type3.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs012.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs022.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs028.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_orlegend.cpp",
+ MAME_DIR .. "src/mame/machine/pgmcrypt.cpp",
+ MAME_DIR .. "src/mame/machine/igs025.cpp",
+ MAME_DIR .. "src/mame/machine/igs022.cpp",
+ MAME_DIR .. "src/mame/machine/igs028.cpp",
+ MAME_DIR .. "src/hbmame/drivers/lordgun.cpp",
+ MAME_DIR .. "src/mame/video/lordgun.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "irem")
+files {
+ MAME_DIR .. "src/hbmame/drivers/m52.cpp",
+ MAME_DIR .. "src/mame/video/m52.cpp",
+ MAME_DIR .. "src/hbmame/drivers/m92.cpp",
+ MAME_DIR .. "src/mame/video/m92.cpp",
+ MAME_DIR .. "src/mame/machine/irem_cpu.cpp",
+ MAME_DIR .. "src/mame/audio/nl_kidniki.cpp",
+ MAME_DIR .. "src/mame/audio/irem.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "itech")
+files {
+ MAME_DIR .. "src/hbmame/drivers/itech8.cpp",
+ MAME_DIR .. "src/mame/machine/itech8.cpp",
+ MAME_DIR .. "src/mame/video/itech8.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "jaleco")
+files {
+ MAME_DIR .. "src/hbmame/drivers/exerion.cpp",
+ MAME_DIR .. "src/mame/video/exerion.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ginganin.cpp",
+ MAME_DIR .. "src/mame/video/ginganin.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "kaneko")
+files {
+ MAME_DIR .. "src/hbmame/drivers/kaneko16.cpp",
+ MAME_DIR .. "src/mame/video/kaneko16.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_tmap.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_spr.cpp",
+ MAME_DIR .. "src/mame/machine/kaneko_hit.cpp",
+ MAME_DIR .. "src/mame/machine/kaneko_calc3.cpp",
+ MAME_DIR .. "src/mame/machine/kaneko_toybox.cpp",
+ MAME_DIR .. "src/mame/video/kan_pand.cpp", -- this needed for linux compile
+}
+
+createHBMAMEProjects(_target, _subtarget, "konami")
+files {
+ MAME_DIR .. "src/hbmame/drivers/contra.cpp",
+ MAME_DIR .. "src/mame/video/contra.cpp",
+ MAME_DIR .. "src/hbmame/drivers/dbz.cpp",
+ MAME_DIR .. "src/mame/video/dbz.cpp",
+ MAME_DIR .. "src/hbmame/drivers/gradius3.cpp",
+ MAME_DIR .. "src/mame/video/gradius3.cpp",
+ MAME_DIR .. "src/hbmame/drivers/1943.cpp",
+ MAME_DIR .. "src/mame/video/1943.cpp",
+ MAME_DIR .. "src/mame/audio/hyprolyb.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mystwarr.cpp",
+ MAME_DIR .. "src/mame/video/mystwarr.cpp",
+ MAME_DIR .. "src/hbmame/drivers/nemesis.cpp",
+ MAME_DIR .. "src/mame/video/nemesis.cpp",
+ MAME_DIR .. "src/hbmame/drivers/pooyan.cpp",
+ MAME_DIR .. "src/mame/video/pooyan.cpp",
+ MAME_DIR .. "src/hbmame/drivers/scramble.cpp",
+ MAME_DIR .. "src/mame/machine/scramble.cpp",
+ MAME_DIR .. "src/mame/audio/scramble.cpp",
+ MAME_DIR .. "src/mame/drivers/galaxold.cpp",
+ MAME_DIR .. "src/mame/machine/galaxold.cpp",
+ MAME_DIR .. "src/mame/video/galaxold.cpp",
+ MAME_DIR .. "src/hbmame/drivers/shaolins.cpp",
+ MAME_DIR .. "src/mame/video/shaolins.cpp",
+ MAME_DIR .. "src/hbmame/drivers/timeplt.cpp",
+ MAME_DIR .. "src/mame/audio/timeplt.cpp",
+ MAME_DIR .. "src/mame/video/timeplt.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tmnt.cpp",
+ MAME_DIR .. "src/mame/video/tmnt.cpp",
+ MAME_DIR .. "src/hbmame/drivers/trackfld.cpp",
+ MAME_DIR .. "src/hbmame/drivers/konamigx.cpp",
+ MAME_DIR .. "src/mame/machine/konamigx.cpp",
+ MAME_DIR .. "src/mame/video/konamigx.cpp",
+ MAME_DIR .. "src/mame/machine/konami1.cpp",
+ MAME_DIR .. "src/mame/audio/trackfld.cpp",
+ MAME_DIR .. "src/mame/video/trackfld.cpp",
+ MAME_DIR .. "src/mame/video/tutankhm.cpp",
+ MAME_DIR .. "src/hbmame/drivers/yiear.cpp",
+ MAME_DIR .. "src/mame/video/yiear.cpp",
+ MAME_DIR .. "src/mame/video/konami_helper.cpp",
+ MAME_DIR .. "src/mame/machine/k007452.cpp",
+ MAME_DIR .. "src/mame/video/k007121.cpp",
+ MAME_DIR .. "src/mame/video/k053250.cpp",
+ MAME_DIR .. "src/mame/video/k054338.cpp",
+ MAME_DIR .. "src/mame/video/k051960.cpp",
+ MAME_DIR .. "src/mame/video/k052109.cpp",
+ MAME_DIR .. "src/mame/video/k053246_k053247_k055673.cpp",
+ MAME_DIR .. "src/mame/video/k053251.cpp",
+ MAME_DIR .. "src/mame/video/k053244_k053245.cpp",
+ MAME_DIR .. "src/mame/video/k054000.cpp",
+ MAME_DIR .. "src/mame/video/k054156_k054157_k056832.cpp",
+ MAME_DIR .. "src/mame/video/k053936.cpp",
+ MAME_DIR .. "src/mame/video/k055555.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "metro")
+files {
+ MAME_DIR .. "src/hbmame/drivers/rabbit.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "midway")
+files {
+ MAME_DIR .. "src/hbmame/drivers/8080bw.cpp",
+ MAME_DIR .. "src/mame/audio/8080bw.cpp",
+ MAME_DIR .. "src/mame/video/8080bw.cpp",
+ MAME_DIR .. "src/mame/drivers/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/machine/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/audio/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/video/mw8080bw.cpp",
+ MAME_DIR .. "src/hbmame/drivers/astrocde.cpp",
+ MAME_DIR .. "src/mame/video/astrocde.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mcr.cpp",
+ MAME_DIR .. "src/mame/machine/mcr.cpp",
+ MAME_DIR .. "src/mame/video/mcr.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mcr3.cpp",
+ MAME_DIR .. "src/mame/video/mcr3.cpp",
+ MAME_DIR .. "src/mame/drivers/mcr68.cpp",
+ MAME_DIR .. "src/mame/machine/mcr68.cpp",
+ MAME_DIR .. "src/mame/video/mcr68.cpp",
+ MAME_DIR .. "src/hbmame/drivers/midtunit.cpp",
+ MAME_DIR .. "src/mame/machine/midtunit.cpp",
+ MAME_DIR .. "src/mame/video/midtunit.cpp",
+ MAME_DIR .. "src/hbmame/drivers/midwunit.cpp",
+ MAME_DIR .. "src/mame/machine/midwunit.cpp",
+ MAME_DIR .. "src/hbmame/drivers/midyunit.cpp",
+ MAME_DIR .. "src/mame/machine/midyunit.cpp",
+ MAME_DIR .. "src/mame/video/midyunit.cpp",
+ MAME_DIR .. "src/mame/drivers/wmg.cpp",
+ MAME_DIR .. "src/hbmame/drivers/williams.cpp",
+ MAME_DIR .. "src/mame/machine/williams.cpp",
+ MAME_DIR .. "src/mame/audio/williams.cpp",
+ MAME_DIR .. "src/mame/video/williams.cpp",
+ MAME_DIR .. "src/mame/machine/midwayic.cpp",
+ MAME_DIR .. "src/mame/audio/midway.cpp",
+ MAME_DIR .. "src/mame/audio/cage.cpp",
+ MAME_DIR .. "src/mame/audio/dcs.cpp",
+ MAME_DIR .. "src/mame/audio/csd.cpp",
+ MAME_DIR .. "src/mame/audio/bally.cpp",
+ MAME_DIR .. "src/mame/audio/nl_gunfight.cpp",
+ MAME_DIR .. "src/mame/audio/nl_280zzzap.cpp",
+ MAME_DIR .. "src/mame/audio/s11c_bg.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "namco")
+files {
+ MAME_DIR .. "src/hbmame/drivers/galaga.cpp",
+ MAME_DIR .. "src/mame/audio/galaga.cpp",
+ MAME_DIR .. "src/mame/video/galaga.cpp",
+ MAME_DIR .. "src/mame/video/bosco.cpp",
+ MAME_DIR .. "src/mame/video/digdug.cpp",
+ MAME_DIR .. "src/mame/machine/xevious.cpp",
+ MAME_DIR .. "src/mame/video/xevious.cpp",
+ MAME_DIR .. "src/hbmame/drivers/galaxian.cpp",
+ MAME_DIR .. "src/mame/audio/galaxian.cpp",
+ MAME_DIR .. "src/mame/video/galaxian.cpp",
+ MAME_DIR .. "src/mame/audio/nl_konami.cpp",
+ MAME_DIR .. "src/mame/video/starfield_05xx.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mappy.cpp",
+ MAME_DIR .. "src/mame/video/mappy.cpp",
+ MAME_DIR .. "src/hbmame/drivers/pacland.cpp",
+ MAME_DIR .. "src/mame/video/pacland.cpp",
+ MAME_DIR .. "src/hbmame/drivers/polepos.cpp",
+ MAME_DIR .. "src/mame/audio/polepos.cpp",
+ MAME_DIR .. "src/mame/video/polepos.cpp",
+ MAME_DIR .. "src/hbmame/drivers/rallyx.cpp",
+ MAME_DIR .. "src/mame/video/rallyx.cpp",
+ MAME_DIR .. "src/mame/machine/namcoio.cpp",
+ MAME_DIR .. "src/mame/machine/namco06.cpp",
+ MAME_DIR .. "src/mame/machine/namco50.cpp",
+ MAME_DIR .. "src/mame/machine/namco51.cpp",
+ MAME_DIR .. "src/mame/machine/namco53.cpp",
+ MAME_DIR .. "src/mame/audio/namco52.cpp",
+ MAME_DIR .. "src/mame/audio/namco54.cpp",
+ MAME_DIR .. "src/mame/audio/timeplt.cpp",
+ MAME_DIR .. "src/hbmame/drivers/namcona1.cpp",
+ MAME_DIR .. "src/mame/video/namcona1.cpp",
+ MAME_DIR .. "src/mame/machine/namcomcu.cpp",
+ MAME_DIR .. "src/hbmame/drivers/namcos2.cpp",
+ MAME_DIR .. "src/mame/machine/namcos2.cpp",
+ MAME_DIR .. "src/mame/video/namcos2.cpp",
+ MAME_DIR .. "src/mame/video/namcos2_roz.cpp",
+ MAME_DIR .. "src/mame/video/namcos2_sprite.cpp",
+ MAME_DIR .. "src/mame/video/namco_c45road.cpp",
+ MAME_DIR .. "src/mame/machine/namco65.cpp",
+ MAME_DIR .. "src/mame/machine/namco68.cpp",
+ MAME_DIR .. "src/hbmame/drivers/namcos86.cpp",
+ MAME_DIR .. "src/mame/video/namcos86.cpp",
+ MAME_DIR .. "src/mame/video/namco_c116.cpp",
+ MAME_DIR .. "src/mame/video/namco_c123tmap.cpp",
+ MAME_DIR .. "src/mame/machine/namco_c139.cpp",
+ MAME_DIR .. "src/mame/machine/namco_c148.cpp",
+ MAME_DIR .. "src/mame/video/namco_c169roz.cpp",
+ MAME_DIR .. "src/mame/video/namco_c355spr.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "neogeo")
+files {
+ MAME_DIR .. "src/hbmame/drivers/neogeo.cpp",
+ MAME_DIR .. "src/hbmame/drivers/neogeohb.cpp",
+ MAME_DIR .. "src/hbmame/drivers/neogeo1.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof94.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof95.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof96.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof97.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof98.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof99.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof2000.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof2001.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof2002.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kof2003.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mgd2.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mslug.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mslug2.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mslug3.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mslug4.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mslug5.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mslugx.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngdoubledr.cpp",
+ MAME_DIR .. "src/hbmame/drivers/nggaroup.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngkofmisc.cpp",
+ MAME_DIR .. "src/hbmame/drivers/nglastblade.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngrbff.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngrotd.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngsamsho.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngsengoku.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngsvc.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ngwh.cpp",
+ MAME_DIR .. "src/hbmame/video/neogeo.cpp",
+ MAME_DIR .. "src/hbmame/drivers/neogeo_noslot.cpp",
+ MAME_DIR .. "src/hbmame/video/neogeo_spr.cpp",
+ MAME_DIR .. "src/hbmame/machine/ng_memcard.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo/prot.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo/banked_cart.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/ctrl.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/joystick.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/mahjong.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/dial.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/irrmaze.cpp",
+ MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "nichibut")
+files {
+ MAME_DIR .. "src/hbmame/drivers/cclimber.cpp",
+ MAME_DIR .. "src/mame/machine/cclimber.cpp",
+ MAME_DIR .. "src/mame/audio/cclimber.cpp",
+ MAME_DIR .. "src/mame/video/cclimber.cpp",
+ MAME_DIR .. "src/hbmame/drivers/terracre.cpp",
+ MAME_DIR .. "src/mame/video/terracre.cpp",
+ MAME_DIR .. "src/mame/machine/nb1412m2.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "nintendo")
+files {
+ MAME_DIR .. "src/hbmame/drivers/dkong.cpp",
+ MAME_DIR .. "src/mame/audio/dkong.cpp",
+ MAME_DIR .. "src/mame/video/dkong.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mario.cpp",
+ MAME_DIR .. "src/mame/audio/mario.cpp",
+ MAME_DIR .. "src/mame/video/mario.cpp",
+ MAME_DIR .. "src/mame/audio/nl_mario.cpp",
+ MAME_DIR .. "src/hbmame/drivers/playch10.cpp",
+ MAME_DIR .. "src/mame/machine/playch10.cpp",
+ MAME_DIR .. "src/mame/video/playch10.cpp",
+ MAME_DIR .. "src/mame/machine/snes.cpp",
+ MAME_DIR .. "src/hbmame/drivers/snesb.cpp",
+ MAME_DIR .. "src/hbmame/drivers/vsnes.cpp",
+ MAME_DIR .. "src/mame/machine/vsnes.cpp",
+ MAME_DIR .. "src/devices/video/ppu2c0x.cpp",
+ MAME_DIR .. "src/devices/machine/z80dma.cpp",
+
+}
+
+createHBMAMEProjects(_target, _subtarget, "nmk")
+files {
+ MAME_DIR .. "src/hbmame/drivers/nmk16.cpp",
+ MAME_DIR .. "src/mame/video/nmk16.cpp",
+ MAME_DIR .. "src/mame/video/nmk16spr.cpp",
+ MAME_DIR .. "src/mame/machine/nmk004.cpp",
+ MAME_DIR .. "src/mame/audio/seibu.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "puckman")
+files {
+ MAME_DIR .. "src/hbmame/drivers/jrpacman.cpp",
+ MAME_DIR .. "src/hbmame/drivers/puckman.cpp",
+ MAME_DIR .. "src/hbmame/video/puckman.cpp",
+ MAME_DIR .. "src/hbmame/drivers/pengo.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "phoenix")
+files {
+ MAME_DIR .. "src/hbmame/drivers/phoenix.cpp",
+ MAME_DIR .. "src/mame/audio/phoenix.cpp",
+ MAME_DIR .. "src/mame/video/phoenix.cpp",
+ MAME_DIR .. "src/mame/audio/pleiads.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "psikyo")
+files {
+ MAME_DIR .. "src/hbmame/drivers/psikyo.cpp",
+ MAME_DIR .. "src/mame/video/psikyo.cpp",
+ MAME_DIR .. "src/hbmame/drivers/psikyosh.cpp",
+ MAME_DIR .. "src/mame/video/psikyosh.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "sega")
+files {
+ MAME_DIR .. "src/hbmame/drivers/segas24.cpp",
+ MAME_DIR .. "src/mame/video/segas24.cpp",
+ MAME_DIR .. "src/mame/machine/megadriv.cpp",
+ MAME_DIR .. "src/mame/drivers/megaplay.cpp",
+ MAME_DIR .. "src/mame/drivers/megatech.cpp",
+ MAME_DIR .. "src/hbmame/drivers/segac2.cpp",
+ MAME_DIR .. "src/mame/drivers/segae.cpp",
+ MAME_DIR .. "src/hbmame/drivers/segag80r.cpp",
+ MAME_DIR .. "src/mame/machine/segag80.cpp",
+ MAME_DIR .. "src/mame/audio/segag80r.cpp",
+ MAME_DIR .. "src/mame/video/segag80r.cpp",
+ MAME_DIR .. "src/hbmame/drivers/segaorun.cpp",
+ MAME_DIR .. "src/mame/video/segaorun.cpp",
+ MAME_DIR .. "src/hbmame/drivers/system1.cpp",
+ MAME_DIR .. "src/mame/video/system1.cpp",
+ MAME_DIR .. "src/hbmame/drivers/system16.cpp",
+ MAME_DIR .. "src/mame/video/system16.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segas16b.cpp",
+ MAME_DIR .. "src/mame/machine/315_5296.cpp",
+ MAME_DIR .. "src/mame/machine/fd1089.cpp",
+ MAME_DIR .. "src/mame/machine/fd1094.cpp",
+ MAME_DIR .. "src/mame/machine/mc8123.cpp",
+ MAME_DIR .. "src/mame/machine/segaic16.cpp",
+ MAME_DIR .. "src/mame/machine/segacrpt_device.cpp",
+ MAME_DIR .. "src/mame/machine/segacrp2_device.cpp",
+ MAME_DIR .. "src/mame/audio/segaspeech.cpp",
+ MAME_DIR .. "src/mame/audio/segausb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segausb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segaspeech.cpp",
+ MAME_DIR .. "src/mame/audio/segag80.cpp",
+ MAME_DIR .. "src/mame/audio/nl_astrob.cpp",
+ MAME_DIR .. "src/mame/audio/nl_elim.cpp", -- not used
+ MAME_DIR .. "src/mame/audio/nl_spacfury.cpp", -- not used
+ MAME_DIR .. "src/mame/video/segaic16.cpp",
+ MAME_DIR .. "src/mame/video/segaic16_road.cpp",
+ MAME_DIR .. "src/mame/video/sega16sp.cpp",
+ MAME_DIR .. "src/hbmame/drivers/segas16b.cpp",
+ MAME_DIR .. "src/mame/video/segas16b.cpp",
+ MAME_DIR .. "src/hbmame/drivers/segas32.cpp",
+ MAME_DIR .. "src/mame/machine/segas32.cpp",
+ MAME_DIR .. "src/mame/video/segas32.cpp",
+ MAME_DIR .. "src/mame/machine/s32comm.cpp",
+ MAME_DIR .. "src/mame/machine/m2comm.cpp", -- from here, for model2
+ MAME_DIR .. "src/mame/audio/dsbz80.cpp",
+ MAME_DIR .. "src/hbmame/drivers/model2.cpp",
+ MAME_DIR .. "src/mame/video/model2rd.hxx",
+ MAME_DIR .. "src/mame/video/model2.cpp",
+ MAME_DIR .. "src/mame/machine/model2.cpp",
+ MAME_DIR .. "src/mame/audio/segam1audio.cpp",
+ MAME_DIR .. "src/mame/video/segaic24.cpp",
+ MAME_DIR .. "src/mame/machine/315_5195.cpp",
+ MAME_DIR .. "src/mame/machine/315_5338a.cpp",
+ MAME_DIR .. "src/mame/machine/315_5649.cpp",
+ MAME_DIR .. "src/mame/machine/315-5881_crypt.cpp",
+ MAME_DIR .. "src/mame/machine/315-5838_317-0229_comp.cpp",
+ MAME_DIR .. "src/mame/machine/model1io.cpp",
+ MAME_DIR .. "src/hbmame/drivers/segahang.cpp",
+ MAME_DIR .. "src/mame/video/segahang.cpp",
+ MAME_DIR .. "src/hbmame/drivers/stv.cpp", -- from here, for stv
+ MAME_DIR .. "src/mame/machine/saturn.cpp",
+ MAME_DIR .. "src/mame/machine/segabill.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "seibu")
+files {
+ MAME_DIR .. "src/hbmame/drivers/bloodbro.cpp",
+ MAME_DIR .. "src/mame/video/bloodbro.cpp",
+ MAME_DIR .. "src/hbmame/drivers/cabal.cpp",
+ MAME_DIR .. "src/mame/video/cabal.cpp",
+ MAME_DIR .. "src/mame/video/seibu_crtc.cpp",
+ MAME_DIR .. "src/hbmame/drivers/raiden2.cpp",
+ MAME_DIR .. "src/mame/video/raiden2.cpp",
+ MAME_DIR .. "src/mame/machine/r2crypt.cpp",
+ MAME_DIR .. "src/hbmame/drivers/r2dx_v33.cpp",
+ MAME_DIR .. "src/mame/machine/seibucop.cpp",
+ MAME_DIR .. "src/mame/machine/seibucop_dma.hxx",
+ MAME_DIR .. "src/mame/machine/seibucop_cmd.hxx",
+ MAME_DIR .. "src/mame/machine/seibuspi.cpp",
+ MAME_DIR .. "src/hbmame/drivers/wiz.cpp",
+ MAME_DIR .. "src/mame/video/wiz.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "seta")
+files {
+ MAME_DIR .. "src/mame/machine/st0016.cpp",
+ MAME_DIR .. "src/hbmame/drivers/simple_st0016.cpp",
+ MAME_DIR .. "src/hbmame/drivers/seta.cpp",
+ MAME_DIR .. "src/mame/video/seta.cpp",
+ MAME_DIR .. "src/hbmame/drivers/seta2.cpp",
+ MAME_DIR .. "src/mame/video/seta2.cpp",
+ MAME_DIR .. "src/mame/video/seta001.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ssv.cpp",
+ MAME_DIR .. "src/mame/video/ssv.cpp",
+ MAME_DIR .. "src/mame/video/st0020.cpp",
+ MAME_DIR .. "src/mame/video/x1_012.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "snk")
+files {
+ MAME_DIR .. "src/hbmame/drivers/snk6502.cpp",
+ MAME_DIR .. "src/mame/audio/snk6502.cpp",
+ MAME_DIR .. "src/mame/video/snk6502.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "sony")
+files {
+ MAME_DIR .. "src/hbmame/drivers/zn.cpp",
+ MAME_DIR .. "src/mame/machine/znmcu.cpp",
+ MAME_DIR .. "src/mame/machine/cat702.cpp",
+ MAME_DIR .. "src/mame/audio/rax.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "taito")
+files {
+ MAME_DIR .. "src/hbmame/drivers/kikikai.cpp",
+ MAME_DIR .. "src/mame/machine/kikikai.cpp",
+ MAME_DIR .. "src/mame/video/kikikai.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ikage.cpp",
+ MAME_DIR .. "src/mame/video/lkage.cpp",
+ MAME_DIR .. "src/hbmame/drivers/arkanoid.cpp",
+ MAME_DIR .. "src/mame/machine/arkanoid.cpp",
+ MAME_DIR .. "src/mame/video/arkanoid.cpp",
+ MAME_DIR .. "src/hbmame/drivers/asuka.cpp",
+ MAME_DIR .. "src/hbmame/drivers/bublbobl.cpp",
+ MAME_DIR .. "src/mame/machine/bublbobl.cpp",
+ MAME_DIR .. "src/mame/video/bublbobl.cpp",
+ MAME_DIR .. "src/hbmame/drivers/flstory.cpp",
+ MAME_DIR .. "src/mame/video/flstory.cpp",
+ MAME_DIR .. "src/hbmame/drivers/rastan.cpp",
+ MAME_DIR .. "src/mame/video/rastan.cpp",
+ MAME_DIR .. "src/hbmame/drivers/retofinv.cpp",
+ MAME_DIR .. "src/mame/video/retofinv.cpp",
+ MAME_DIR .. "src/hbmame/drivers/taito_b.cpp",
+ MAME_DIR .. "src/mame/video/taito_b.cpp",
+ MAME_DIR .. "src/hbmame/drivers/taito_f2.cpp",
+ MAME_DIR .. "src/mame/video/taito_f2.cpp",
+ MAME_DIR .. "src/hbmame/drivers/taito_f3.cpp",
+ MAME_DIR .. "src/mame/video/taito_f3.cpp",
+ MAME_DIR .. "src/mame/machine/taitocchip.cpp",
+ MAME_DIR .. "src/hbmame/drivers/volfied.cpp",
+ MAME_DIR .. "src/mame/video/volfied.cpp",
+ MAME_DIR .. "src/mame/audio/taitosnd.cpp",
+ MAME_DIR .. "src/mame/audio/taito_en.cpp",
+ MAME_DIR .. "src/mame/machine/taitoio.cpp",
+ MAME_DIR .. "src/mame/video/taito_helper.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tnzs.cpp",
+ MAME_DIR .. "src/mame/machine/tnzs.cpp",
+ MAME_DIR .. "src/mame/video/tnzs.cpp",
+ MAME_DIR .. "src/mame/video/pc080sn.cpp",
+ MAME_DIR .. "src/mame/video/pc090oj.cpp",
+ MAME_DIR .. "src/mame/video/tc0100scn.cpp",
+ MAME_DIR .. "src/mame/video/tc0280grd.cpp",
+ MAME_DIR .. "src/mame/video/tc0360pri.cpp",
+ MAME_DIR .. "src/mame/video/tc0480scp.cpp",
+ MAME_DIR .. "src/mame/video/tc0110pcr.cpp",
+ MAME_DIR .. "src/mame/video/tc0180vcu.cpp",
+ MAME_DIR .. "src/hbmame/drivers/taito_l.cpp",
+ MAME_DIR .. "src/mame/video/taito_l.cpp",
+ MAME_DIR .. "src/mame/machine/taito68705interface.cpp",
+ MAME_DIR .. "src/mame/machine/taitosjsec.cpp",
+ MAME_DIR .. "src/hbmame/drivers/taitosj.cpp",
+ MAME_DIR .. "src/mame/machine/taitosj.cpp",
+ MAME_DIR .. "src/mame/video/taitosj.cpp",
+ MAME_DIR .. "src/mame/audio/taito_zm.cpp", -- zn
+ MAME_DIR .. "src/hbmame/drivers/warriorb.cpp",
+ MAME_DIR .. "src/mame/video/warriorb.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "technos")
+files {
+ MAME_DIR .. "src/hbmame/drivers/shadfrce.cpp",
+ MAME_DIR .. "src/mame/video/shadfrce.cpp",
+ MAME_DIR .. "src/hbmame/drivers/ddragon.cpp",
+ MAME_DIR .. "src/mame/video/ddragon.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "tehkan")
+files {
+ MAME_DIR .. "src/hbmame/drivers/solomon.cpp",
+ MAME_DIR .. "src/mame/video/solomon.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tecmosys.cpp",
+ MAME_DIR .. "src/mame/machine/tecmosys.cpp",
+ MAME_DIR .. "src/mame/video/tecmosys.cpp",
+ MAME_DIR .. "src/mame/video/tecmo_spr.cpp",
+ MAME_DIR .. "src/mame/video/tecmo_mix.cpp",
+ MAME_DIR .. "src/hbmame/drivers/bombjack.cpp",
+ MAME_DIR .. "src/mame/video/bombjack.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tecmo.cpp",
+ MAME_DIR .. "src/mame/video/tecmo.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tecmo16.cpp",
+ MAME_DIR .. "src/mame/video/tecmo16.cpp",
+ MAME_DIR .. "src/hbmame/drivers/tehkanwc.cpp",
+ MAME_DIR .. "src/mame/video/tehkanwc.cpp",
+ MAME_DIR .. "src/mame/drivers/wc90.cpp",
+ MAME_DIR .. "src/mame/video/wc90.cpp",
+ MAME_DIR .. "src/hbmame/drivers/wc90b.cpp",
+ MAME_DIR .. "src/mame/video/wc90b.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "toaplan")
+files {
+ MAME_DIR .. "src/hbmame/drivers/snowbros.cpp",
+ MAME_DIR .. "src/mame/video/snowbros.cpp",
+ MAME_DIR .. "src/mame/drivers/toaplan1.cpp",
+ MAME_DIR .. "src/mame/machine/toaplan1.cpp",
+ MAME_DIR .. "src/mame/video/toaplan1.cpp",
+ MAME_DIR .. "src/hbmame/drivers/toaplan2.cpp",
+ MAME_DIR .. "src/mame/video/toaplan2.cpp",
+ MAME_DIR .. "src/mame/video/gp9001.cpp",
+ MAME_DIR .. "src/hbmame/drivers/twincobr.cpp",
+ MAME_DIR .. "src/mame/machine/twincobr.cpp",
+ MAME_DIR .. "src/mame/video/twincobr.cpp",
+ MAME_DIR .. "src/mame/drivers/wardner.cpp",
+ MAME_DIR .. "src/mame/video/toaplan_scu.cpp",
+ MAME_DIR .. "src/mame/machine/nmk112.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "unico")
+files {
+ MAME_DIR .. "src/hbmame/drivers/silkroad.cpp",
+ MAME_DIR .. "src/mame/video/silkroad.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "univers")
+files {
+ MAME_DIR .. "src/hbmame/drivers/docastle.cpp",
+ MAME_DIR .. "src/mame/machine/docastle.cpp",
+ MAME_DIR .. "src/mame/video/docastle.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mrdo.cpp",
+ MAME_DIR .. "src/mame/video/mrdo.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "valadon")
+files {
+ MAME_DIR .. "src/hbmame/drivers/bagman.cpp",
+ MAME_DIR .. "src/mame/machine/bagman.cpp",
+ MAME_DIR .. "src/mame/video/bagman.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "vsystem")
+files {
+ MAME_DIR .. "src/mame/machine/vs9209.cpp",
+ MAME_DIR .. "src/mame/video/vsystem_gga.cpp",
+ MAME_DIR .. "src/mame/video/vsystem_spr.cpp",
+ MAME_DIR .. "src/mame/video/vsystem_spr2.cpp",
+ MAME_DIR .. "src/hbmame/drivers/aerofgt.cpp",
+ MAME_DIR .. "src/mame/video/aerofgt.cpp",
+ MAME_DIR .. "src/hbmame/drivers/taotaido.cpp",
+ MAME_DIR .. "src/mame/video/taotaido.cpp",
+}
+
+createHBMAMEProjects(_target, _subtarget, "misc")
+files {
+ MAME_DIR .. "src/hbmame/drivers/dotrikun.cpp",
+ MAME_DIR .. "src/hbmame/drivers/schaser.cpp",
+ MAME_DIR .. "src/hbmame/drivers/spacmiss.cpp",
+ MAME_DIR .. "src/hbmame/drivers/monaco.cpp",
+ MAME_DIR .. "src/hbmame/drivers/kyugo.cpp",
+ MAME_DIR .. "src/mame/video/kyugo.cpp",
+ MAME_DIR .. "src/hbmame/drivers/mcatadv.cpp",
+ MAME_DIR .. "src/mame/video/mcatadv.cpp",
+ MAME_DIR .. "src/mame/drivers/skimaxx.cpp",
+ MAME_DIR .. "src/hbmame/drivers/timelimit.cpp",
+ MAME_DIR .. "src/mame/video/timelimt.cpp",
+ MAME_DIR .. "src/hbmame/drivers/vamphalf.cpp",
+ MAME_DIR .. "src/hbmame/drivers/hh_sm510.cpp",
+}
+
+end
+
diff --git a/docs/release/scripts/target/ldplayer/ldplayer.lua b/docs/release/scripts/target/ldplayer/ldplayer.lua
new file mode 100644
index 00000000000..4348f3bd318
--- /dev/null
+++ b/docs/release/scripts/target/ldplayer/ldplayer.lua
@@ -0,0 +1,88 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- ldplayer.lua
+--
+-- Small makefile to build a standalone laserdisc player
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- specify required CPU cores (none)
+--------------------------------------------------
+
+CPUS["MCS48"] = true
+CPUS["Z80"] = true
+
+
+
+--------------------------------------------------
+-- specify required sound cores
+--------------------------------------------------
+
+SOUNDS["WAVE"] = true
+
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["LDV1000"] = true
+MACHINES["LDPR8210"] = true
+
+--------------------------------------------------
+-- specify available bus cores
+--
+-- MIDI is here as dummy bus to allow libbus.a to
+-- be created on OSX.
+--------------------------------------------------
+
+BUSES["MIDI"] = true
+
+--------------------------------------------------
+-- this is the list of driver libraries that
+-- comprise MAME plus mamedriv.o which contains
+-- the list of drivers
+--------------------------------------------------
+
+function createProjects_ldplayer_ldplayer(_target, _subtarget)
+ project ("drvldplayer")
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drvldplayer"))
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+
+ files{
+ MAME_DIR .. "src/emu/drivers/emudummy.cpp",
+ }
+
+ dependency {
+ { MAME_DIR .. "src/emu/drivers/emudummy.cpp", GEN_DIR .. "ldplayer/layout/pr8210.lh" },
+ }
+
+ custombuildtask {
+ layoutbuildtask("ldplayer/layout", "pr8210"),
+ }
+end
+
+function linkProjects_ldplayer_ldplayer(_target, _subtarget)
+ links {
+ "drvldplayer",
+ }
+end
diff --git a/docs/release/scripts/target/mame/arcade.lua b/docs/release/scripts/target/mame/arcade.lua
new file mode 100644
index 00000000000..f339007eeb0
--- /dev/null
+++ b/docs/release/scripts/target/mame/arcade.lua
@@ -0,0 +1,5188 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- arcade.lua
+--
+-- MAME target makefile
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- specify available CPU cores
+---------------------------------------------------
+
+CPUS["Z80"] = true
+CPUS["KC80"] = true
+CPUS["Z180"] = true
+CPUS["I8085"] = true
+CPUS["I8089"] = true
+CPUS["M6502"] = true
+--CPUS["ST2XXX"] = true
+--CPUS["XAVIX"] = true
+--CPUS["XAVIX2000"] = true
+CPUS["H6280"] = true
+CPUS["I86"] = true
+CPUS["I386"] = true
+CPUS["NEC"] = true
+CPUS["V30MZ"] = true
+CPUS["V60"] = true
+CPUS["MCS48"] = true
+CPUS["MCS51"] = true
+CPUS["MCS96"] = true
+CPUS["M6800"] = true
+CPUS["M6805"] = true
+CPUS["HD6309"] = true
+CPUS["M6809"] = true
+CPUS["KONAMI"] = true
+CPUS["M680X0"] = true
+CPUS["T11"] = true
+CPUS["S2650"] = true
+CPUS["TMS340X0"] = true
+CPUS["TMS9900"] = true
+CPUS["TMS9995"] = true
+CPUS["TMS9900L"] = true
+CPUS["Z8000"] = true
+CPUS["Z8001"] = true
+CPUS["TMS32010"] = true
+CPUS["TMS32025"] = true
+CPUS["TMS32031"] = true
+CPUS["TMS32051"] = true
+CPUS["TMS32082"] = true
+CPUS["TMS57002"] = true
+CPUS["CCPU"] = true
+CPUS["ADSP21XX"] = true
+CPUS["ASAP"] = true
+CPUS["AM29000"] = true
+CPUS["UPD7810"] = true
+CPUS["ARM"] = true
+CPUS["ARM7"] = true
+CPUS["JAGUAR"] = true
+CPUS["CUBEQCPU"] = true
+CPUS["ESRIP"] = true
+CPUS["MIPS1"] = true
+CPUS["MIPS3"] = true
+CPUS["PSX"] = true
+CPUS["SH"] = true
+CPUS["DSP16"] = true
+CPUS["DSP32C"] = true
+CPUS["PIC16C5X"] = true
+CPUS["PIC16C62X"] = true
+CPUS["PIC17"] = true
+CPUS["G65816"] = true
+CPUS["SPC700"] = true
+CPUS["E1"] = true
+CPUS["I860"] = true
+CPUS["I960"] = true
+CPUS["H8"] = true
+CPUS["H8500"] = true
+CPUS["V810"] = true
+CPUS["M37710"] = true
+CPUS["POWERPC"] = true
+CPUS["SE3208"] = true
+CPUS["MC68HC11"] = true
+CPUS["ADSP21062"] = true
+CPUS["DSP56156"] = true
+CPUS["RSP"] = true
+CPUS["COP400"] = true
+CPUS["TLCS90"] = true
+CPUS["TLCS870"] = true
+CPUS["TLCS900"] = true
+CPUS["MB88XX"] = true
+CPUS["MB86233"] = true
+CPUS["MB86235"] = true
+CPUS["SSP1601"] = true
+CPUS["APEXC"] = true
+CPUS["CP1610"] = true
+CPUS["F8"] = true
+CPUS["LH5801"] = true
+--CPUS["PDP1"] = true
+--CPUS["TX0"] = true
+CPUS["SATURN"] = true
+CPUS["SC61860"] = true
+CPUS["LR35902"] = true
+CPUS["TMS7000"] = true
+CPUS["SM8500"] = true
+CPUS["MINX"] = true
+CPUS["SSEM"] = true
+CPUS["AVR8"] = true
+--CPUS["TMS1000"] = true
+CPUS["MCS40"] = true
+CPUS["SUPERFX"] = true
+CPUS["Z8"] = true
+CPUS["I8008"] = true
+CPUS["SCMP"] = true
+--CPUS["MN1880"] = true
+CPUS["MN10200"] = true
+CPUS["COSMAC"] = true
+CPUS["UNSP"] = true
+CPUS["HCD62121"] = true
+CPUS["PPS4"] = true
+--CPUS["PPS41"] = true
+CPUS["UPD7725"] = true
+CPUS["HD61700"] = true
+CPUS["LC8670"] = true
+CPUS["SCORE"] = true
+CPUS["ES5510"] = true
+CPUS["SCUDSP"] = true
+CPUS["IE15"] = true
+CPUS["8X300"] = true
+CPUS["ALTO2"] = true
+--CPUS["W65816"] = true
+CPUS["ARC"] = true
+CPUS["ARCOMPACT"] = true
+--CPUS["AMIS2000"] = true
+--CPUS["UCOM4"] = true
+CPUS["HMCS40"] = true
+--CPUS["E0C6200"] = true
+--CPUS["MELPS4"] = true
+--CPUS["HPHYBRID"] = true
+--CPUS["SM510"] = true
+CPUS["ST62XX"] = true
+CPUS["DSPP"] = true
+CPUS["HPC"] = true
+--CPUS["RII"] = true
+--CPUS["BCP"] = true
+--CPUS["CR16B"] = true
+CPUS["FR"] = true
+CPUS["UPD78K"] = true
+CPUS["KS0164"] = true
+--CPUS["COPS1"] = true
+CPUS["MEG"] = true
+CPUS["F2MC16"] = true
+
+--------------------------------------------------
+-- specify available sound cores
+--------------------------------------------------
+
+SOUNDS["SAMPLES"] = true
+SOUNDS["DAC"] = true
+SOUNDS["DMADAC"] = true
+SOUNDS["SPEAKER"] = true
+SOUNDS["BEEP"] = true
+SOUNDS["DISCRETE"] = true
+SOUNDS["AY8910"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["YM2203"] = true
+SOUNDS["YM2413"] = true
+SOUNDS["YM2608"] = true
+SOUNDS["YM2610"] = true
+SOUNDS["YM2610B"] = true
+SOUNDS["YM2612"] = true
+SOUNDS["YM3438"] = true
+SOUNDS["YM3812"] = true
+SOUNDS["YM3526"] = true
+SOUNDS["Y8950"] = true
+SOUNDS["YMF262"] = true
+SOUNDS["YMF271"] = true
+SOUNDS["YMF278B"] = true
+SOUNDS["YMZ280B"] = true
+SOUNDS["SN76477"] = true
+SOUNDS["SN76496"] = true
+SOUNDS["POKEY"] = true
+SOUNDS["TIA"] = true
+SOUNDS["NES_APU"] = true
+SOUNDS["PAULA_8364"] = true
+SOUNDS["ASTROCADE"] = true
+SOUNDS["NAMCO"] = true
+SOUNDS["NAMCO_15XX"] = true
+SOUNDS["NAMCO_CUS30"] = true
+SOUNDS["NAMCO_52XX"] = true
+SOUNDS["NAMCO_63701X"] = true
+--SOUNDS["NAMCO_163"] = true
+SOUNDS["T6W28"] = true
+SOUNDS["SNKWAVE"] = true
+SOUNDS["C140"] = true
+SOUNDS["C352"] = true
+SOUNDS["TMS36XX"] = true
+SOUNDS["TMS3615"] = true
+SOUNDS["TMS5110"] = true
+SOUNDS["TMS5220"] = true
+SOUNDS["VLM5030"] = true
+SOUNDS["ADPCM"] = true
+SOUNDS["MSM5205"] = true
+SOUNDS["MSM5232"] = true
+SOUNDS["OKIM6258"] = true
+SOUNDS["OKIM6295"] = true
+SOUNDS["OKIM6376"] = true
+SOUNDS["OKIM9810"] = true
+--SOUNDS["UPD7752"] = true
+SOUNDS["UPD7759"] = true
+SOUNDS["HC55516"] = true
+SOUNDS["TC8830F"] = true
+SOUNDS["K005289"] = true
+SOUNDS["K007232"] = true
+SOUNDS["K051649"] = true
+SOUNDS["K053260"] = true
+SOUNDS["K054539"] = true
+SOUNDS["K056800"] = true
+SOUNDS["SEGAPCM"] = true
+SOUNDS["MULTIPCM"] = true
+SOUNDS["SCSP"] = true
+SOUNDS["AICA"] = true
+SOUNDS["RF5C68"] = true
+SOUNDS["RF5C400"] = true
+SOUNDS["CEM3394"] = true
+SOUNDS["QSOUND"] = true
+SOUNDS["QS1000"] = true
+SOUNDS["SAA1099"] = true
+SOUNDS["IREMGA20"] = true
+SOUNDS["ES5503"] = true
+SOUNDS["ES5505"] = true
+SOUNDS["ES5506"] = true
+SOUNDS["BSMT2000"] = true
+SOUNDS["GAELCO_CG1V"] = true
+SOUNDS["GAELCO_GAE1"] = true
+--SOUNDS["HUC6230"] = true
+SOUNDS["C6280"] = true
+SOUNDS["SP0250"] = true
+SOUNDS["SPU"] = true
+SOUNDS["CDDA"] = true
+SOUNDS["ICS2115"] = true
+SOUNDS["I5000_SND"] = true
+SOUNDS["ST0016"] = true
+SOUNDS["SETAPCM"] = true
+SOUNDS["X1_010"] = true
+SOUNDS["VRENDER0"] = true
+SOUNDS["VOTRAX"] = true
+SOUNDS["ES8712"] = true
+SOUNDS["CDP1869"] = true
+SOUNDS["S14001A"] = true
+SOUNDS["WAVE"] = true
+SOUNDS["SID6581"] = true
+SOUNDS["SID8580"] = true
+SOUNDS["SP0256"] = true
+SOUNDS["DIGITALKER"] = true
+SOUNDS["CDP1863"] = true
+SOUNDS["CDP1864"] = true
+SOUNDS["ZSG2"] = true
+SOUNDS["MOS656X"] = true
+SOUNDS["ASC"] = true
+SOUNDS["MAS3507D"] = true
+SOUNDS["SOCRATES"] = true
+SOUNDS["TMC0285"] = true
+SOUNDS["TMS5200"] = true
+SOUNDS["CD2801"] = true
+SOUNDS["CD2802"] = true
+SOUNDS["M58817"] = true
+SOUNDS["TMC0281"] = true
+SOUNDS["TMS5100"] = true
+SOUNDS["TMS5110A"] = true
+SOUNDS["LMC1992"] = true
+SOUNDS["AWACS"] = true
+SOUNDS["YMZ770"] = true
+SOUNDS["MPEG_AUDIO"] = true
+SOUNDS["T6721A"] = true
+SOUNDS["MOS7360"] = true
+SOUNDS["ESQPUMP"] = true
+--SOUNDS["VRC6"] = true
+SOUNDS["SB0400"] = true
+SOUNDS["AC97"] = true
+SOUNDS["ES1373"] = true
+SOUNDS["L7A1045"] = true
+SOUNDS["AD1848"] = true
+--SOUNDS["UPD1771"] = true
+SOUNDS["MEA8000"] = true
+SOUNDS["DAC76"] = true
+SOUNDS["TA7630"] = true
+SOUNDS["MM5837"] = true
+--SOUNDS["DAVE"] = true
+SOUNDS["LC7535"] = true
+--SOUNDS["UPD934G"] = true
+SOUNDS["S_DSP"] = true
+SOUNDS["KS0164"] = true
+SOUNDS["TT5665"] = true
+--SOUNDS["RP2C33_SOUND"] = true
+--SOUNDS["UDA1344"] = true
+SOUNDS["SWP30"] = true
+SOUNDS["XT446"] = true
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+VIDEOS["SEGA315_5124"] = true
+VIDEOS["SEGA315_5313"] = true
+--VIDEOS["AM8052"] = true
+VIDEOS["BUFSPRITE"] = true
+VIDEOS["BT45X"] = true
+VIDEOS["BT47X"] = true
+--VIDEOS["CDP1861"] = true
+--VIDEOS["CDP1862"] = true
+VIDEOS["CESBLIT"] = true
+--VIDEOS["CRT9007"] = true
+--VIDEOS["CRT9021"] = true
+--VIDEOS["CRT9028"] = true
+--VIDEOS["CRT9212"] = true
+VIDEOS["CRTC_EGA"] = true
+--VIDEOS["DL1416"] = true
+VIDEOS["DM9368"] = true
+VIDEOS["DP8350"] = true
+--VIDEOS["EF9340_1"] = true
+--VIDEOS["EF9345"] = true
+--VIDEOS["EF9364"] = true
+--VIDEOS["EF9365"] = true
+VIDEOS["EF9369"] = true
+--VIDEOS["GF4500"] = true
+VIDEOS["GF7600GS"] = true
+VIDEOS["EPIC12"] = true
+VIDEOS["FIXFREQ"] = true
+--VIDEOS["HD44102"] = true
+--VIDEOS["HD44352"] = true
+VIDEOS["HD44780"] = true
+--VIDEOS["HD61603"] = true
+VIDEOS["HD61830"] = true
+VIDEOS["HD63484"] = true
+--VIDEOS["HD66421"] = true
+--VIDEOS["HLCD0438"] = true
+--VIDEOS["HLCD0488"] = true
+--VIDEOS["HLCD0515"] = true
+--VIDEOS["HLCD0538"] = true
+VIDEOS["HUC6202"] = true
+VIDEOS["HUC6260"] = true
+--VIDEOS["HUC6261"] = true
+VIDEOS["HUC6270"] = true
+--VIDEOS["HUC6272"] = true
+VIDEOS["I4100"] = true
+--VIDEOS["I8244"] = true
+VIDEOS["I8275"] = true
+VIDEOS["JANGOU_BLITTER"] = true
+--VIDEOS["LC7582"] = true
+--VIDEOS["LC7985"] = true
+VIDEOS["M50458"] = true
+VIDEOS["MB90082"] = true
+VIDEOS["MB_VCU"] = true
+VIDEOS["MC6845"] = true
+--VIDEOS["MC6847"] = true
+--VIDEOS["MD4330B"] = true
+--VIDEOS["MM5445"] = true
+--VIDEOS["MSM6222B"] = true
+--VIDEOS["MSM6255"] = true
+--VIDEOS["MOS6566"] = true
+VIDEOS["PC_VGA"] = true
+--VIDEOS["PCF2100"] = true
+VIDEOS["POLY"] = true
+VIDEOS["PSX"] = true
+VIDEOS["RAMDAC"] = true
+--VIDEOS["S2636"] = true
+VIDEOS["SAA5050"] = true
+--VIDEOS["SDA5708"] = true
+VIDEOS["SCN2674"] = true
+VIDEOS["PWM_DISPLAY"] = true
+--VIDEOS["SED1200"] = true
+--VIDEOS["SED1330"] = true
+--VIDEOS["SED1356"] = true
+--VIDEOS["SED1500"] = true
+--VIDEOS["SED1520"] = true
+VIDEOS["SNES_PPU"] = true
+VIDEOS["STVVDP"] = true
+--VIDEOS["T6963C"] = true
+--VIDEOS["T6A04"] = true
+VIDEOS["TLC34076"] = true
+VIDEOS["TMS34061"] = true
+--VIDEOS["TMS3556"] = true
+VIDEOS["TMS9927"] = true
+VIDEOS["TMS9928A"] = true
+--VIDEOS["UPD3301"] = true
+VIDEOS["UPD7220"] = true
+--VIDEOS["UPD7227"] = true
+VIDEOS["V9938"] = true
+--VIDEOS["VIC4567"] = true
+VIDEOS["VOODOO"] = true
+VIDEOS["VOODOO_PCI"] = true
+VIDEOS["ZEUS2"] = true
+VIDEOS["PPU2C0X"] = true
+VIDEOS["PS2GS"] = true
+VIDEOS["PS2GIF"] = true
+VIDEOS["VRENDER0"] = true
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["ACORN_IOC"] = true
+MACHINES["ACORN_MEMC"] = true
+MACHINES["ACORN_VIDC"] = true
+MACHINES["AKIKO"] = true
+MACHINES["ALPHA_8921"] = true
+--MACHINES["AM2901B"] = true
+MACHINES["ARM_IOMD"] = true
+MACHINES["AUTOCONFIG"] = true
+MACHINES["BUSMOUSE"] = true
+MACHINES["CR511B"] = true
+MACHINES["DMAC"] = true
+MACHINES["GAYLE"] = true
+MACHINES["2812FIFO"] = true
+MACHINES["6522VIA"] = true
+MACHINES["TPI6525"] = true
+MACHINES["RIOT6532"] = true
+MACHINES["6821PIA"] = true
+MACHINES["6840PTM"] = true
+--MACHINES["MPCC68561"] = true
+MACHINES["ACIA6850"] = true
+MACHINES["68681"] = true
+MACHINES["7200FIFO"] = true
+--MACHINES["8530SCC"] = true
+--MACHINES["TTL7400"] = true
+--MACHINES["TTL7404"] = true
+MACHINES["TTL74123"] = true
+MACHINES["TTL74145"] = true
+MACHINES["TTL74148"] = true
+MACHINES["TTL74153"] = true
+MACHINES["TTL74157"] = true
+--MACHINES["TTL74161"] = true
+--MACHINES["TTL74164"] = true
+MACHINES["TTL74165"] = true
+MACHINES["TTL74166"] = true
+--MACHINES["TTL74175"] = true
+MACHINES["TTL74181"] = true
+MACHINES["TTL74259"] = true
+--MACHINES["TTL74381"] = true
+MACHINES["TTL7474"] = true
+MACHINES["KBDC8042"] = true
+MACHINES["I8257"] = true
+--MACHINES["ACIA6850"] = true
+MACHINES["ADC0804"] = true
+MACHINES["ADC0808"] = true
+MACHINES["ADC083X"] = true
+MACHINES["ADC1038"] = true
+MACHINES["ADC1213X"] = true
+MACHINES["AICARTC"] = true
+--MACHINES["AM25S55X"] = true
+--MACHINES["AM2847"] = true
+--MACHINES["AM2910"] = true
+MACHINES["AM53CF96"] = true
+MACHINES["AM79C90"] = true
+--MACHINES["AM9513"] = true
+MACHINES["AM9517A"] = true
+MACHINES["AMIGAFDC"] = true
+--MACHINES["APPLEPIC"] = true
+MACHINES["AT_KEYBC"] = true
+MACHINES["AT28C16"] = true
+--MACHINES["AT28C64B"] = true
+MACHINES["AT29X"] = true
+MACHINES["AT45DBXX"] = true
+MACHINES["ATAFLASH"] = true
+MACHINES["ARM_AIC"] = true
+MACHINES["AY31015"] = true
+MACHINES["BANKDEV"] = true
+--MACHINES["BIM68153"] = true
+MACHINES["CDP1852"] = true
+MACHINES["CDP1871"] = true
+--MACHINES["CH376"] = true
+MACHINES["CHESSMACHINE"] = true
+MACHINES["CMOS40105"] = true
+MACHINES["CDU76S"] = true
+MACHINES["COM52C50"] = true
+MACHINES["COM8116"] = true
+MACHINES["CR589"] = true
+--MACHINES["CS4031"] = true
+--MACHINES["CS8221"] = true
+MACHINES["CXD1095"] = true
+MACHINES["CXD1185"] = true
+MACHINES["DP8390"] = true
+--MACHINES["DP8573"] = true
+MACHINES["DS1204"] = true
+MACHINES["DS1205"] = true
+MACHINES["DS1302"] = true
+--MACHINES["DS1315"] = true
+MACHINES["DS1386"] = true
+MACHINES["DS17X85"] = true
+MACHINES["DS1994"] = true
+MACHINES["DS2401"] = true
+MACHINES["DS2404"] = true
+MACHINES["DS75160A"] = true
+MACHINES["DS75161A"] = true
+--MACHINES["DS8874"] = true
+MACHINES["E0516"] = true
+MACHINES["E05A03"] = true
+MACHINES["E05A30"] = true
+MACHINES["EEPROMDEV"] = true
+--MACHINES["ER1400"] = true
+MACHINES["ER2055"] = true
+MACHINES["F3853"] = true
+--MACHINES["F4702"] = true
+--MACHINES["HD63450"] = true
+--MACHINES["HD64610"] = true
+MACHINES["I2CMEM"] = true
+--MACHINES["I80130"] = true
+--MACHINES["I8089"] = true
+MACHINES["I8155"] = true
+MACHINES["I8212"] = true
+MACHINES["I8214"] = true
+MACHINES["I82355"] = true
+MACHINES["I8243"] = true
+MACHINES["I8251"] = true
+MACHINES["I8255"] = true
+--MACHINES["I8257"] = true
+--MACHINES["I8271"] = true
+MACHINES["I8279"] = true
+MACHINES["I8355"] = true
+MACHINES["IBM21S850"] = true
+MACHINES["IDECTRL"] = true
+MACHINES["IE15"] = true
+MACHINES["IM6402"] = true
+MACHINES["INS8154"] = true
+MACHINES["INS8250"] = true
+MACHINES["INTELFLASH"] = true
+MACHINES["JVS"] = true
+MACHINES["K033906"] = true
+MACHINES["K053252"] = true
+MACHINES["K056230"] = true
+--MACHINES["KB3600"] = true
+--MACHINES["KBDC8042"] = true
+--MACHINES["KR2376"] = true
+MACHINES["LATCH8"] = true
+MACHINES["LC89510"] = true
+MACHINES["LDPR8210"] = true
+MACHINES["LDSTUB"] = true
+MACHINES["LDV1000"] = true
+MACHINES["LDP1000"] = true
+MACHINES["LDP1450"] = true
+MACHINES["LDVP931"] = true
+--MACHINES["LH5810"] = true
+MACHINES["LINFLASH"] = true
+--MACHINES["LOCOMO"] = true
+MACHINES["LPCI"] = true
+MACHINES["LSI53C810"] = true
+--MACHINES["M3002"] = true
+--MACHINES["M68307"] = true
+--MACHINES["M68340"] = true
+MACHINES["M6M80011AP"] = true
+MACHINES["MB14241"] = true
+MACHINES["MB3773"] = true
+MACHINES["MB8421"] = true
+MACHINES["MB87078"] = true
+--MACHINES["MB8795"] = true
+MACHINES["MB89352"] = true
+MACHINES["MB89371"] = true
+MACHINES["MB89374"] = true
+--MACHINES["MC14411"] = true
+MACHINES["MC146818"] = true
+MACHINES["MC6843"] = true
+MACHINES["MC6846"] = true
+MACHINES["MC6852"] = true
+MACHINES["MC6854"] = true
+MACHINES["MC68328"] = true
+MACHINES["MC68901"] = true
+MACHINES["MCCS1850"] = true
+MACHINES["M68307"] = true
+MACHINES["M68340"] = true
+--MACHINES["M950X0"] = true
+MACHINES["MCF5206E"] = true
+MACHINES["METERS"] = true
+MACHINES["MICROTOUCH"] = true
+--MACHINES["MIOT6530"] = true
+--MACHINES["MM5307"] = true
+--MACHINES["MM58167"] = true
+MACHINES["MM58274C"] = true
+MACHINES["MM74C922"] = true
+MACHINES["MOS6526"] = true
+MACHINES["MOS6529"] = true
+MACHINES["MIOT6530"] = true
+MACHINES["MOS6551"] = true
+--MACHINES["MOS6702"] = true
+--MACHINES["MOS8706"] = true
+--MACHINES["MOS8722"] = true
+--MACHINES["MOS8726"] = true
+MACHINES["MPU401"] = true
+MACHINES["MSM5832"] = true
+MACHINES["MSM58321"] = true
+MACHINES["MSM6242"] = true
+MACHINES["MSM6253"] = true
+MACHINES["NCR5380"] = true
+MACHINES["NCR5390"] = true
+MACHINES["NCR539x"] = true
+MACHINES["NETLIST"] = true
+MACHINES["NCR53C7XX"] = true
+MACHINES["NMC9306"] = true
+--MACHINES["NSC810"] = true
+MACHINES["NSCSI"] = true
+MACHINES["OUTPUT_LATCH"] = true
+MACHINES["PC_FDC"] = true
+MACHINES["PC_LPT"] = true
+--MACHINES["PCCARD"] = true
+MACHINES["PCF8583"] = true
+MACHINES["PCF8584"] = true
+MACHINES["PCF8593"] = true
+MACHINES["PCI"] = true
+MACHINES["PCKEYBRD"] = true
+MACHINES["PIC8259"] = true
+MACHINES["PIT68230"] = true
+MACHINES["PIT8253"] = true
+MACHINES["PLA"] = true
+--MACHINES["PROFILE"] = true
+--MACHINES["PROM82S129"] = true
+MACHINES["PXA255"] = true
+MACHINES["R10696"] = true
+MACHINES["R10788"] = true
+MACHINES["RA17XX"] = true
+--MACHINES["R64H156"] = true
+MACHINES["RF5C296"] = true
+--MACHINES["RIOT6532"] = true
+MACHINES["RIPPLE_COUNTER"] = true
+MACHINES["ROC10937"] = true
+MACHINES["RP5C01"] = true
+MACHINES["RP5C15"] = true
+MACHINES["RP5H01"] = true
+MACHINES["RSTBUF"] = true
+MACHINES["RTC4543"] = true
+MACHINES["RTC65271"] = true
+MACHINES["RTC9701"] = true
+MACHINES["S_SMP"] = true
+MACHINES["S2636"] = true
+MACHINES["S3520CF"] = true
+MACHINES["S3C24XX"] = true
+--MACHINES["S3C44B0"] = true
+--MACHINES["SA1110"] = true
+--MACHINES["SA1111"] = true
+MACHINES["SATURN"] = true
+MACHINES["SCC68070"] = true
+MACHINES["SCN_PCI"] = true
+--MACHINES["SCOOP"] = true
+MACHINES["SCSI"] = true
+MACHINES["SCUDSP"] = true
+MACHINES["SDA2006"] = true
+--MACHINES["SECFLASH"] = true
+MACHINES["SENSORBOARD"] = true
+MACHINES["SERFLASH"] = true
+MACHINES["SMC91C9X"] = true
+MACHINES["SEGA_SCU"] = true
+MACHINES["SMPC"] = true
+--MACHINES["SPG2XX"] = true
+--MACHINES["SPISDCARD"] = true
+MACHINES["STVCD"] = true
+--MACHINES["SUN4C_MMU"] = true
+MACHINES["SWTPC8212"] = true
+MACHINES["TASC_SB30"] = true
+MACHINES["TC0091LVC"] = true
+--MACHINES["TDC1008"] = true
+MACHINES["TE7750"] = true
+MACHINES["TICKET"] = true
+MACHINES["TIMEKPR"] = true
+--MACHINES["TMC208K"] = true
+MACHINES["TMP68301"] = true
+--MACHINES["TMS5501"] = true
+MACHINES["TMS6100"] = true
+MACHINES["TMS9901"] = true
+MACHINES["TMS9902"] = true
+--MACHINES["TPI6525"] = true
+MACHINES["TSB12LV01A"] = true
+--MACHINES["TTL74123"] = true
+--MACHINES["TTL74145"] = true
+--MACHINES["TTL74148"] = true
+--MACHINES["TTL74153"] = true
+--MACHINES["TTL74181"] = true
+--MACHINES["TTL7474"] = true
+--MACHINES["UCB1200"] = true
+MACHINES["UPD1990A"] = true
+--MACHINES["UPD4991A"] = true
+MACHINES["UPD4992"] = true
+MACHINES["UPD4701"] = true
+MACHINES["UPD7001"] = true
+MACHINES["UPD7002"] = true
+MACHINES["UPD7004"] = true
+MACHINES["UPD71071"] = true
+MACHINES["UPD765"] = true
+MACHINES["FDC_PLL"] = true
+MACHINES["V3021"] = true
+MACHINES["WD_FDC"] = true
+--MACHINES["WD1010"] = true
+MACHINES["WD11C00_17"] = true
+MACHINES["WD2010"] = true
+MACHINES["WD33C9X"] = true
+MACHINES["X2212"] = true
+MACHINES["X76F041"] = true
+MACHINES["X76F100"] = true
+MACHINES["Z80CTC"] = true
+MACHINES["Z80SIO"] = true
+MACHINES["Z80SCC"] = true
+MACHINES["Z80DMA"] = true
+MACHINES["Z80PIO"] = true
+MACHINES["Z80STI"] = true
+MACHINES["Z8536"] = true
+MACHINES["SECFLASH"] = true
+MACHINES["PCCARD"] = true
+MACHINES["FDC37C665GT"] = true
+--MACHINES["SMC92X4"] = true
+--MACHINES["TI99_HD"] = true
+--MACHINES["STRATA"] = true
+MACHINES["STEPPERS"] = true
+--MACHINES["CORVUSHD"] = true
+--MACHINES["WOZFDC"] = true
+--MACHINES["APPLE_FDINTF"] = true
+--MACHINES["IWM"] = true
+--MACHINES["SWIM1"] = true
+--MACHINES["SWIM2"] = true
+--MACHINES["SWIM3"] = true
+--MACHINES["MAC_VIDEO_SONORA"] = true
+--MACHINES["DIABLO_HD"] = true
+MACHINES["PCI9050"] = true
+MACHINES["TMS1024"] = true
+MACHINES["GENPC"] = true
+MACHINES["GEN_LATCH"] = true
+MACHINES["WATCHDOG"] = true
+MACHINES["SMARTMEDIA"] = true
+MACHINES["I82586"] = true
+MACHINES["INPUT_MERGER"] = true
+MACHINES["K054321"] = true
+MACHINES["ADC0844"] = true
+MACHINES["GEN_FIFO"] = true
+MACHINES["Z80DAISY"] = true
+--MACHINES["PS2DMAC"] = true
+MACHINES["PS2INTC"] = true
+--MACHINES["PS2MC"] = true
+--MACHINES["PS2PAD"] = true
+--MACHINES["PS2SIF"] = true
+--MACHINES["PS2TIMER"] = true
+--MACHINES["IOPCDVD"] = true
+--MACHINES["IOPDMA"] = true
+--MACHINES["IOPINTC"] = true
+--MACHINES["IOPSIO2"] = true
+--MACHINES["IOPTIMER"] = true
+MACHINES["AIC565"] = true
+MACHINES["AIC580"] = true
+MACHINES["AIC6250"] = true
+MACHINES["VRENDER0"] = true
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+
+--BUSES["A1BUS"] = true
+--BUSES["A2BUS"] = true
+--BUSES["A7800"] = true
+--BUSES["A800"] = true
+--BUSES["ABCBUS"] = true
+--BUSES["ABCKB"] = true
+--BUSES["ADAM"] = true
+--BUSES["ADAMNET"] = true
+--BUSES["ADB"] = true
+--BUSES["APF"] = true
+BUSES["AMIGA_KEYBOARD"] = true
+--BUSES["ARCADIA"] = true
+--BUSES["ASTROCADE"] = true
+BUSES["ATA"] = true
+--BUSES["BML3"] = true
+--BUSES["BW2"] = true
+--BUSES["C64"] = true
+--BUSES["CBM2"] = true
+--BUSES["CBMIEC"] = true
+BUSES["CENTRONICS"] = true
+--BUSES["CHANNELF"] = true
+--BUSES["COCO"] = true
+--BUSES["COLECO_CONTROLLER"] = true
+--BUSES["COLECO_CART"] = true
+--BUSES["COMPUCOLOR"] = true
+--BUSES["COMX35"] = true
+--BUSES["CPC"] = true
+--BUSES["CRVISION"] = true
+--BUSES["DMV"] = true
+--BUSES["ECBBUS"] = true
+--BUSES["ECONET"] = true
+--BUSES["EP64"] = true
+--BUSES["EPSON_SIO"] = true
+--BUSES["GAMEBOY"] = true
+BUSES["GAMEGEAR"] = true
+--BUSES["GBA"] = true
+BUSES["GENERIC"] = true
+--BUSES["IEEE488"] = true
+--BUSES["IMI7000"] = true
+--BUSES["INTV"] = true
+--BUSES["IQ151"] = true
+BUSES["ISA"] = true
+--BUSES["ISBX"] = true
+--BUSES["KC"] = true
+--BUSES["LPCI"] = true
+--BUSES["MACPDS"] = true
+BUSES["MIDI"] = true
+--BUSES["MEGADRIVE"] = true
+--BUSES["MSX_SLOT"] = true
+BUSES["NEOGEO"] = true
+BUSES["NEOGEO_CTRL"] = true
+--BUSES["NES"] = true
+BUSES["NSCSI"] = true
+--BUSES["NUBUS"] = true
+--BUSES["O2"] = true
+--BUSES["ORICEXT"] = true
+--BUSES["PCE"] = true
+--BUSES["PCE_CTRL"] = true
+BUSES["PC_JOY"] = true
+BUSES["PC_KBD"] = true
+--BUSES["PET"] = true
+--BUSES["PLUS4"] = true
+BUSES["PSX_CONTROLLER"] = true
+--BUSES["QL"] = true
+BUSES["RS232"] = true
+--BUSES["S100"] = true
+BUSES["SAT_CTRL"] = true
+--BUSES["SATURN"] = true
+BUSES["SCSI"] = true
+--BUSES["SCV"] = true
+BUSES["SEGA8"] = true
+BUSES["SG1000_EXP"] = true
+BUSES["SGIKBD"] = true
+BUSES["SMS_CTRL"] = true
+BUSES["SMS_EXP"] = true
+--BUSES["SNES"] = true
+--BUSES["SPC1000"] = true
+BUSES["SUNKBD"] = true
+--BUSES["TI99PEB"] = true
+--BUSES["TVC"] = true
+--BUSES["VBOY"] = true
+--BUSES["VC4000"] = true
+--BUSES["VCS"] = true
+--BUSES["VCS_CTRL"] = true
+BUSES["VECTREX"] = true
+--BUSES["VIC10"] = true
+--BUSES["VIC20"] = true
+--BUSES["VIDBRAIN"] = true
+--BUSES["VIP"] = true
+--BUSES["VME"] = true
+--BUSES["VSMILE"] = true
+--BUSES["VTECH_IOEXP"] = true
+--BUSES["VTECH_MEMEXP"] = true
+--BUSES["WANGPC"] = true
+--BUSES["WSWAN"] = true
+--BUSES["X68K"] = true
+--BUSES["Z88"] = true
+BUSES["ZORRO"] = true
+--BUSES["THOMSON"] = true
+
+
+--------------------------------------------------
+-- specify used file formats
+--------------------------------------------------
+
+FORMATS["APOLLO_DSK"] = true
+FORMATS["GUAB_DSK"] = true
+FORMATS["AMI_DSK"] = true
+FORMATS["SC3000_BIT"] = true
+FORMATS["WD177X_DSK"] = true
+FORMATS["NASLITE_DSK"] = true
+FORMATS["BASICDSK"] = true
+FORMATS["IBMXDF_DSK"] = true
+FORMATS["IPF_DSK"] = true
+FORMATS["TZX_CAS"] = true
+
+--------------------------------------------------
+-- this is the list of driver libraries that
+-- comprise MAME plus mamedriv.o which contains
+-- the list of drivers
+--------------------------------------------------
+
+function linkProjects_mame_arcade(_target, _subtarget)
+ links {
+ "acorn",
+ "adp",
+ "alba",
+ "alliedl",
+ "alpha",
+ "amiga",
+ "aristocr",
+ "ascii",
+ "atari",
+ "atlus",
+ "barcrest",
+ "bfm",
+ "bmc",
+ "capcom",
+ "ces",
+ "cinemat",
+ "cirsa",
+ "comad",
+ "cvs",
+ "dataeast",
+ "dgrm",
+ "dooyong",
+ "dynax",
+ "edevices",
+ "efo",
+ "eolith",
+ "excelent",
+ "exidy",
+ "f32",
+ "funworld",
+ "fuuki",
+ "gaelco",
+ "gameplan",
+ "gametron",
+ "gottlieb",
+ "ibmpc",
+ "igs",
+ "igt",
+ "irem",
+ "itech",
+ "jaleco",
+ "jpm",
+ "kaneko",
+ "kiwako",
+ "konami",
+ "matic",
+ "maygay",
+ "meadows",
+ "merit",
+ "metro",
+ "midcoin",
+ "midw8080",
+ "midway",
+ "mr",
+ "namco",
+ "nasco",
+ "neogeo",
+ "nichibut",
+ "nintendo",
+ "nix",
+ "nmk",
+ "omori",
+ "olympia",
+ "orca",
+ "pacific",
+ "pacman",
+ "pce",
+ "phoenix",
+ "playmark",
+ "promat",
+ "psikyo",
+ "ramtek",
+ "rare",
+ "sanritsu",
+ "sega",
+ "seibu",
+ "seta",
+ "sigma",
+ "snk",
+ "sony",
+ "stern",
+ "subsino",
+ "suna",
+ "sunelect",
+ "taito",
+ "tatsumi",
+ "tch",
+ "tecfri",
+ "technos",
+ "tehkan",
+ "terminal",
+ "thepit",
+ "toaplan",
+ "unico",
+ "univers",
+ "upl",
+ "valadon",
+ "venture",
+ "vsystem",
+ "wing",
+ "yunsung",
+ "zaccaria",
+ "misc",
+ "pinball",
+ "shared",
+ }
+end
+
+function createMAMEProjects(_target, _subtarget, _name)
+ project (_name)
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-" .. _target .."_" .. _subtarget .. "_" .._name))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+ includedirs {
+ ext_includedir("flac"),
+ ext_includedir("glm"),
+ ext_includedir("jpeg"),
+ ext_includedir("rapidjson"),
+ }
+
+end
+
+function createProjects_mame_arcade(_target, _subtarget)
+--------------------------------------------------
+-- the following files are general components and
+-- shared across a number of drivers
+--------------------------------------------------
+
+createMAMEProjects(_target, _subtarget, "shared")
+files {
+ MAME_DIR .. "src/mame/machine/bacta_datalogger.h",
+ MAME_DIR .. "src/mame/machine/bacta_datalogger.cpp",
+ MAME_DIR .. "src/mame/machine/nmk112.cpp",
+ MAME_DIR .. "src/mame/machine/nmk112.h",
+ MAME_DIR .. "src/mame/machine/pcshare.cpp",
+ MAME_DIR .. "src/mame/machine/pcshare.h",
+ MAME_DIR .. "src/mame/machine/segacrpt_device.cpp",
+ MAME_DIR .. "src/mame/machine/segacrpt_device.h",
+ MAME_DIR .. "src/mame/video/avgdvg.cpp",
+ MAME_DIR .. "src/mame/video/avgdvg.h",
+ MAME_DIR .. "src/mame/video/awpvid.cpp",
+ MAME_DIR .. "src/mame/video/awpvid.h",
+ MAME_DIR .. "src/mame/video/tmap038.cpp",
+ MAME_DIR .. "src/mame/video/tmap038.h",
+ MAME_DIR .. "src/mame/audio/dcs.cpp",
+ MAME_DIR .. "src/mame/audio/dcs.h",
+ MAME_DIR .. "src/mame/audio/decobsmt.cpp",
+ MAME_DIR .. "src/mame/audio/decobsmt.h",
+ MAME_DIR .. "src/mame/audio/efo_zsu.cpp",
+ MAME_DIR .. "src/mame/audio/efo_zsu.h",
+ MAME_DIR .. "src/mame/audio/rax.cpp",
+ MAME_DIR .. "src/mame/audio/rax.h",
+ MAME_DIR .. "src/mame/audio/segam1audio.cpp",
+ MAME_DIR .. "src/mame/audio/segam1audio.h",
+}
+
+--------------------------------------------------
+-- manufacturer-specific groupings for drivers
+--------------------------------------------------
+
+createMAMEProjects(_target, _subtarget, "acorn")
+files {
+ MAME_DIR .. "src/mame/drivers/ertictac.cpp",
+ MAME_DIR .. "src/mame/drivers/ssfindo.cpp",
+ MAME_DIR .. "src/mame/drivers/aristmk5.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "adp")
+files {
+ MAME_DIR .. "src/mame/drivers/adp.cpp",
+ MAME_DIR .. "src/mame/drivers/manohman.cpp",
+ MAME_DIR .. "src/mame/drivers/stellafr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "alba")
+files {
+ MAME_DIR .. "src/mame/drivers/albazc.cpp",
+ MAME_DIR .. "src/mame/drivers/albazg.cpp",
+ MAME_DIR .. "src/mame/drivers/rmhaihai.cpp",
+ MAME_DIR .. "src/mame/drivers/vsmjtria.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "alliedl")
+files {
+ MAME_DIR .. "src/mame/drivers/ace.cpp",
+ MAME_DIR .. "src/mame/drivers/aleisttl.cpp",
+ MAME_DIR .. "src/mame/drivers/clayshoo.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "alpha")
+files {
+ MAME_DIR .. "src/mame/drivers/alpha68k.cpp",
+ MAME_DIR .. "src/mame/includes/alpha68k.h",
+ MAME_DIR .. "src/mame/video/alpha68k.cpp",
+ MAME_DIR .. "src/mame/drivers/alpha68k_i.cpp",
+ MAME_DIR .. "src/mame/drivers/alpha68k_n.cpp",
+ MAME_DIR .. "src/mame/drivers/champbas.cpp",
+ MAME_DIR .. "src/mame/includes/champbas.h",
+ MAME_DIR .. "src/mame/video/champbas.cpp",
+ MAME_DIR .. "src/mame/drivers/equites.cpp",
+ MAME_DIR .. "src/mame/includes/equites.h",
+ MAME_DIR .. "src/mame/video/equites.cpp",
+ MAME_DIR .. "src/mame/drivers/meijinsn.cpp",
+ MAME_DIR .. "src/mame/drivers/shougi.cpp",
+ MAME_DIR .. "src/mame/audio/ad_sound.cpp",
+ MAME_DIR .. "src/mame/audio/ad_sound.h",
+ MAME_DIR .. "src/mame/machine/alpha8201.cpp",
+ MAME_DIR .. "src/mame/machine/alpha8201.h",
+ MAME_DIR .. "src/mame/video/snk68_spr.cpp",
+ MAME_DIR .. "src/mame/video/snk68_spr.h",
+ MAME_DIR .. "src/mame/video/alpha68k_palette.cpp",
+ MAME_DIR .. "src/mame/video/alpha68k_palette.h",
+}
+
+createMAMEProjects(_target, _subtarget, "amiga")
+files {
+ MAME_DIR .. "src/mame/drivers/alg.cpp",
+ MAME_DIR .. "src/mame/drivers/amiga.cpp",
+ MAME_DIR .. "src/mame/machine/amiga.cpp",
+ MAME_DIR .. "src/mame/video/amiga.cpp",
+ MAME_DIR .. "src/mame/video/amigaaga.cpp",
+ MAME_DIR .. "src/mame/video/amigaaga.h",
+ MAME_DIR .. "src/mame/drivers/arsystems.cpp",
+ MAME_DIR .. "src/mame/drivers/cubo.cpp",
+ MAME_DIR .. "src/mame/drivers/mquake.cpp",
+ MAME_DIR .. "src/mame/drivers/upscope.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "aristocr")
+files {
+ MAME_DIR .. "src/mame/drivers/aristmk4.cpp",
+ MAME_DIR .. "src/mame/drivers/aristmk6.cpp",
+ MAME_DIR .. "src/mame/drivers/caswin.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "ascii")
+files {
+ MAME_DIR .. "src/mame/drivers/big10.cpp",
+ MAME_DIR .. "src/mame/drivers/forte2.cpp",
+ MAME_DIR .. "src/mame/drivers/pengadvb.cpp",
+ MAME_DIR .. "src/mame/drivers/sangho.cpp",
+ MAME_DIR .. "src/mame/drivers/sfkick.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "atari")
+files {
+ MAME_DIR .. "src/mame/drivers/akkaarrh.cpp",
+ MAME_DIR .. "src/mame/drivers/arcadecl.cpp",
+ MAME_DIR .. "src/mame/includes/arcadecl.h",
+ MAME_DIR .. "src/mame/video/arcadecl.cpp",
+ MAME_DIR .. "src/mame/drivers/asteroid.cpp",
+ MAME_DIR .. "src/mame/includes/asteroid.h",
+ MAME_DIR .. "src/mame/machine/asteroid.cpp",
+ MAME_DIR .. "src/mame/audio/asteroid.cpp",
+ MAME_DIR .. "src/mame/audio/llander.cpp",
+ MAME_DIR .. "src/mame/drivers/atarifb.cpp",
+ MAME_DIR .. "src/mame/includes/atarifb.h",
+ MAME_DIR .. "src/mame/machine/atarifb.cpp",
+ MAME_DIR .. "src/mame/audio/atarifb.cpp",
+ MAME_DIR .. "src/mame/video/atarifb.cpp",
+ MAME_DIR .. "src/mame/drivers/atarig1.cpp",
+ MAME_DIR .. "src/mame/includes/atarig1.h",
+ MAME_DIR .. "src/mame/video/atarig1.cpp",
+ MAME_DIR .. "src/mame/drivers/atarig42.cpp",
+ MAME_DIR .. "src/mame/includes/atarig42.h",
+ MAME_DIR .. "src/mame/video/atarig42.cpp",
+ MAME_DIR .. "src/mame/drivers/atarigt.cpp",
+ MAME_DIR .. "src/mame/includes/atarigt.h",
+ MAME_DIR .. "src/mame/video/atarigt.cpp",
+ MAME_DIR .. "src/mame/drivers/atarigx2.cpp",
+ MAME_DIR .. "src/mame/includes/atarigx2.h",
+ MAME_DIR .. "src/mame/video/atarigx2.cpp",
+ MAME_DIR .. "src/mame/drivers/atarisy1.cpp",
+ MAME_DIR .. "src/mame/includes/atarisy1.h",
+ MAME_DIR .. "src/mame/video/atarisy1.cpp",
+ MAME_DIR .. "src/mame/drivers/atarisy2.cpp",
+ MAME_DIR .. "src/mame/includes/atarisy2.h",
+ MAME_DIR .. "src/mame/video/atarisy2.cpp",
+ MAME_DIR .. "src/mame/drivers/atarisy4.cpp",
+ MAME_DIR .. "src/mame/drivers/atarittl.cpp",
+ MAME_DIR .. "src/mame/machine/nl_gtrak10.cpp",
+ MAME_DIR .. "src/mame/machine/nl_gtrak10.h",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.h",
+ MAME_DIR .. "src/mame/machine/nl_tank.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tank.h",
+ MAME_DIR .. "src/mame/drivers/atetris.cpp",
+ MAME_DIR .. "src/mame/includes/atetris.h",
+ MAME_DIR .. "src/mame/video/atetris.cpp",
+ MAME_DIR .. "src/mame/drivers/avalnche.cpp",
+ MAME_DIR .. "src/mame/includes/avalnche.h",
+ MAME_DIR .. "src/mame/audio/avalnche.cpp",
+ MAME_DIR .. "src/mame/drivers/badlands.cpp",
+ MAME_DIR .. "src/mame/includes/badlands.h",
+ MAME_DIR .. "src/mame/machine/badlands.cpp",
+ MAME_DIR .. "src/mame/video/badlands.cpp",
+ MAME_DIR .. "src/mame/drivers/badlandsbl.cpp",
+ MAME_DIR .. "src/mame/drivers/bartop52.cpp",
+ MAME_DIR .. "src/mame/drivers/batman.cpp",
+ MAME_DIR .. "src/mame/includes/batman.h",
+ MAME_DIR .. "src/mame/video/batman.cpp",
+ MAME_DIR .. "src/mame/drivers/beathead.cpp",
+ MAME_DIR .. "src/mame/includes/beathead.h",
+ MAME_DIR .. "src/mame/video/beathead.cpp",
+ MAME_DIR .. "src/mame/drivers/blstroid.cpp",
+ MAME_DIR .. "src/mame/includes/blstroid.h",
+ MAME_DIR .. "src/mame/video/blstroid.cpp",
+ MAME_DIR .. "src/mame/drivers/boxer.cpp",
+ MAME_DIR .. "src/mame/drivers/bsktball.cpp",
+ MAME_DIR .. "src/mame/includes/bsktball.h",
+ MAME_DIR .. "src/mame/machine/bsktball.cpp",
+ MAME_DIR .. "src/mame/audio/bsktball.cpp",
+ MAME_DIR .. "src/mame/video/bsktball.cpp",
+ MAME_DIR .. "src/mame/drivers/bwidow.cpp",
+ MAME_DIR .. "src/mame/includes/bwidow.h",
+ MAME_DIR .. "src/mame/audio/bwidow.cpp",
+ MAME_DIR .. "src/mame/drivers/bzone.cpp",
+ MAME_DIR .. "src/mame/includes/bzone.h",
+ MAME_DIR .. "src/mame/audio/bzone.cpp",
+ MAME_DIR .. "src/mame/drivers/canyon.cpp",
+ MAME_DIR .. "src/mame/includes/canyon.h",
+ MAME_DIR .. "src/mame/audio/canyon.cpp",
+ MAME_DIR .. "src/mame/video/canyon.cpp",
+ MAME_DIR .. "src/mame/drivers/cball.cpp",
+ MAME_DIR .. "src/mame/drivers/ccastles.cpp",
+ MAME_DIR .. "src/mame/includes/ccastles.h",
+ MAME_DIR .. "src/mame/video/ccastles.cpp",
+ MAME_DIR .. "src/mame/drivers/centiped.cpp",
+ MAME_DIR .. "src/mame/includes/centiped.h",
+ MAME_DIR .. "src/mame/video/centiped.cpp",
+ MAME_DIR .. "src/mame/drivers/cloak.cpp",
+ MAME_DIR .. "src/mame/includes/cloak.h",
+ MAME_DIR .. "src/mame/video/cloak.cpp",
+ MAME_DIR .. "src/mame/drivers/cloud9.cpp",
+ MAME_DIR .. "src/mame/includes/cloud9.h",
+ MAME_DIR .. "src/mame/video/cloud9.cpp",
+ MAME_DIR .. "src/mame/drivers/cmmb.cpp",
+ MAME_DIR .. "src/mame/drivers/cops.cpp",
+ MAME_DIR .. "src/mame/drivers/copsnrob.cpp",
+ MAME_DIR .. "src/mame/includes/copsnrob.h",
+ MAME_DIR .. "src/mame/audio/copsnrob.cpp",
+ MAME_DIR .. "src/mame/video/copsnrob.cpp",
+ MAME_DIR .. "src/mame/drivers/cyberbal.cpp",
+ MAME_DIR .. "src/mame/includes/cyberbal.h",
+ MAME_DIR .. "src/mame/video/cyberbal.cpp",
+ MAME_DIR .. "src/mame/drivers/cybstorm.cpp",
+ MAME_DIR .. "src/mame/includes/cybstorm.h",
+ MAME_DIR .. "src/mame/video/cybstorm.cpp",
+ MAME_DIR .. "src/mame/audio/nl_destroyr.cpp",
+ MAME_DIR .. "src/mame/audio/nl_destroyr.h",
+ MAME_DIR .. "src/mame/drivers/destroyr.cpp",
+ MAME_DIR .. "src/mame/drivers/dragrace.cpp",
+ MAME_DIR .. "src/mame/includes/dragrace.h",
+ MAME_DIR .. "src/mame/audio/dragrace.cpp",
+ MAME_DIR .. "src/mame/video/dragrace.cpp",
+ MAME_DIR .. "src/mame/drivers/eprom.cpp",
+ MAME_DIR .. "src/mame/includes/eprom.h",
+ MAME_DIR .. "src/mame/video/eprom.cpp",
+ MAME_DIR .. "src/mame/drivers/firefox.cpp",
+ MAME_DIR .. "src/mame/drivers/firetrk.cpp",
+ MAME_DIR .. "src/mame/includes/firetrk.h",
+ MAME_DIR .. "src/mame/audio/firetrk.cpp",
+ MAME_DIR .. "src/mame/video/firetrk.cpp",
+ MAME_DIR .. "src/mame/audio/nl_flyball.cpp",
+ MAME_DIR .. "src/mame/audio/nl_flyball.h",
+ MAME_DIR .. "src/mame/drivers/flyball.cpp",
+ MAME_DIR .. "src/mame/drivers/foodf.cpp",
+ MAME_DIR .. "src/mame/includes/foodf.h",
+ MAME_DIR .. "src/mame/video/foodf.cpp",
+ MAME_DIR .. "src/mame/drivers/gauntlet.cpp",
+ MAME_DIR .. "src/mame/includes/gauntlet.h",
+ MAME_DIR .. "src/mame/video/gauntlet.cpp",
+ MAME_DIR .. "src/mame/drivers/harddriv.cpp",
+ MAME_DIR .. "src/mame/includes/harddriv.h",
+ MAME_DIR .. "src/mame/machine/harddriv.cpp",
+ MAME_DIR .. "src/mame/audio/harddriv.cpp",
+ MAME_DIR .. "src/mame/video/harddriv.cpp",
+ MAME_DIR .. "src/mame/drivers/irobot.cpp",
+ MAME_DIR .. "src/mame/includes/irobot.h",
+ MAME_DIR .. "src/mame/machine/irobot.cpp",
+ MAME_DIR .. "src/mame/video/irobot.cpp",
+ MAME_DIR .. "src/mame/drivers/jaguar.cpp",
+ MAME_DIR .. "src/mame/includes/jaguar.h",
+ MAME_DIR .. "src/mame/audio/jaguar.cpp",
+ MAME_DIR .. "src/mame/video/jag_blitter.cpp",
+ MAME_DIR .. "src/mame/video/jag_blitter.h",
+ MAME_DIR .. "src/mame/video/jaguar.cpp",
+ MAME_DIR .. "src/mame/video/jagblit.h",
+ MAME_DIR .. "src/mame/video/jagblit.hxx",
+ MAME_DIR .. "src/mame/video/jagobj.hxx",
+ MAME_DIR .. "src/mame/drivers/jedi.cpp",
+ MAME_DIR .. "src/mame/includes/jedi.h",
+ MAME_DIR .. "src/mame/audio/jedi.cpp",
+ MAME_DIR .. "src/mame/video/jedi.cpp",
+ MAME_DIR .. "src/mame/drivers/klax.cpp",
+ MAME_DIR .. "src/mame/includes/klax.h",
+ MAME_DIR .. "src/mame/video/klax.cpp",
+ MAME_DIR .. "src/mame/drivers/liberatr.cpp",
+ MAME_DIR .. "src/mame/includes/liberatr.h",
+ MAME_DIR .. "src/mame/video/liberatr.cpp",
+ MAME_DIR .. "src/mame/drivers/mediagx.cpp",
+ MAME_DIR .. "src/mame/drivers/metalmx.cpp",
+ MAME_DIR .. "src/mame/includes/metalmx.h",
+ MAME_DIR .. "src/mame/drivers/mgolf.cpp",
+ MAME_DIR .. "src/mame/drivers/mhavoc.cpp",
+ MAME_DIR .. "src/mame/includes/mhavoc.h",
+ MAME_DIR .. "src/mame/machine/mhavoc.cpp",
+ MAME_DIR .. "src/mame/drivers/missile.cpp",
+ MAME_DIR .. "src/mame/drivers/nitedrvr.cpp",
+ MAME_DIR .. "src/mame/includes/nitedrvr.h",
+ MAME_DIR .. "src/mame/machine/nitedrvr.cpp",
+ MAME_DIR .. "src/mame/audio/nitedrvr.cpp",
+ MAME_DIR .. "src/mame/video/nitedrvr.cpp",
+ MAME_DIR .. "src/mame/drivers/offtwall.cpp",
+ MAME_DIR .. "src/mame/includes/offtwall.h",
+ MAME_DIR .. "src/mame/video/offtwall.cpp",
+ MAME_DIR .. "src/mame/drivers/orbit.cpp",
+ MAME_DIR .. "src/mame/includes/orbit.h",
+ MAME_DIR .. "src/mame/audio/orbit.cpp",
+ MAME_DIR .. "src/mame/video/orbit.cpp",
+ MAME_DIR .. "src/mame/drivers/pong.cpp",
+ MAME_DIR .. "src/mame/machine/nl_pongf.cpp",
+ MAME_DIR .. "src/mame/machine/nl_pongf.h",
+ MAME_DIR .. "src/mame/machine/nl_pongdoubles.cpp",
+ MAME_DIR .. "src/mame/machine/nl_pongdoubles.h",
+ MAME_DIR .. "src/mame/machine/nl_breakout.cpp",
+ MAME_DIR .. "src/mame/machine/nl_breakout.h",
+ MAME_DIR .. "src/mame/machine/nl_rebound.cpp",
+ MAME_DIR .. "src/mame/machine/nl_rebound.h",
+ MAME_DIR .. "src/mame/drivers/poolshrk.cpp",
+ MAME_DIR .. "src/mame/includes/poolshrk.h",
+ MAME_DIR .. "src/mame/audio/poolshrk.cpp",
+ MAME_DIR .. "src/mame/video/poolshrk.cpp",
+ MAME_DIR .. "src/mame/drivers/quantum.cpp",
+ MAME_DIR .. "src/mame/drivers/quizshow.cpp",
+ MAME_DIR .. "src/mame/drivers/rampart.cpp",
+ MAME_DIR .. "src/mame/includes/rampart.h",
+ MAME_DIR .. "src/mame/video/rampart.cpp",
+ MAME_DIR .. "src/mame/drivers/relief.cpp",
+ MAME_DIR .. "src/mame/includes/relief.h",
+ MAME_DIR .. "src/mame/video/relief.cpp",
+ MAME_DIR .. "src/mame/drivers/runaway.cpp",
+ MAME_DIR .. "src/mame/drivers/sbrkout.cpp",
+ MAME_DIR .. "src/mame/drivers/shuuz.cpp",
+ MAME_DIR .. "src/mame/includes/shuuz.h",
+ MAME_DIR .. "src/mame/video/shuuz.cpp",
+ MAME_DIR .. "src/mame/drivers/skullxbo.cpp",
+ MAME_DIR .. "src/mame/includes/skullxbo.h",
+ MAME_DIR .. "src/mame/video/skullxbo.cpp",
+ MAME_DIR .. "src/mame/drivers/skydiver.cpp",
+ MAME_DIR .. "src/mame/includes/skydiver.h",
+ MAME_DIR .. "src/mame/audio/skydiver.cpp",
+ MAME_DIR .. "src/mame/video/skydiver.cpp",
+ MAME_DIR .. "src/mame/drivers/skyraid.cpp",
+ MAME_DIR .. "src/mame/includes/skyraid.h",
+ MAME_DIR .. "src/mame/audio/skyraid.cpp",
+ MAME_DIR .. "src/mame/video/skyraid.cpp",
+ MAME_DIR .. "src/mame/drivers/sprint2.cpp",
+ MAME_DIR .. "src/mame/includes/sprint2.h",
+ MAME_DIR .. "src/mame/audio/sprint2.cpp",
+ MAME_DIR .. "src/mame/video/sprint2.cpp",
+ MAME_DIR .. "src/mame/drivers/sprint4.cpp",
+ MAME_DIR .. "src/mame/includes/sprint4.h",
+ MAME_DIR .. "src/mame/video/sprint4.cpp",
+ MAME_DIR .. "src/mame/audio/sprint4.cpp",
+ MAME_DIR .. "src/mame/audio/sprint4.h",
+ MAME_DIR .. "src/mame/drivers/sprint8.cpp",
+ MAME_DIR .. "src/mame/includes/sprint8.h",
+ MAME_DIR .. "src/mame/audio/sprint8.cpp",
+ MAME_DIR .. "src/mame/video/sprint8.cpp",
+ MAME_DIR .. "src/mame/drivers/starshp1.cpp",
+ MAME_DIR .. "src/mame/includes/starshp1.h",
+ MAME_DIR .. "src/mame/audio/starshp1.cpp",
+ MAME_DIR .. "src/mame/video/starshp1.cpp",
+ MAME_DIR .. "src/mame/drivers/starwars.cpp",
+ MAME_DIR .. "src/mame/includes/starwars.h",
+ MAME_DIR .. "src/mame/machine/starwars.cpp",
+ MAME_DIR .. "src/mame/audio/starwars.cpp",
+ MAME_DIR .. "src/mame/drivers/subs.cpp",
+ MAME_DIR .. "src/mame/includes/subs.h",
+ MAME_DIR .. "src/mame/machine/subs.cpp",
+ MAME_DIR .. "src/mame/audio/subs.cpp",
+ MAME_DIR .. "src/mame/video/subs.cpp",
+ MAME_DIR .. "src/mame/drivers/tank8.cpp",
+ MAME_DIR .. "src/mame/includes/tank8.h",
+ MAME_DIR .. "src/mame/audio/tank8.cpp",
+ MAME_DIR .. "src/mame/video/tank8.cpp",
+ MAME_DIR .. "src/mame/drivers/tempest.cpp",
+ MAME_DIR .. "src/mame/drivers/thunderj.cpp",
+ MAME_DIR .. "src/mame/includes/thunderj.h",
+ MAME_DIR .. "src/mame/video/thunderj.cpp",
+ MAME_DIR .. "src/mame/drivers/tomcat.cpp",
+ MAME_DIR .. "src/mame/drivers/toobin.cpp",
+ MAME_DIR .. "src/mame/includes/toobin.h",
+ MAME_DIR .. "src/mame/video/toobin.cpp",
+ MAME_DIR .. "src/mame/drivers/tourtabl.cpp",
+ MAME_DIR .. "src/mame/video/tia.cpp",
+ MAME_DIR .. "src/mame/video/tia.h",
+ MAME_DIR .. "src/mame/drivers/triplhnt.cpp",
+ MAME_DIR .. "src/mame/includes/triplhnt.h",
+ MAME_DIR .. "src/mame/audio/triplhnt.cpp",
+ MAME_DIR .. "src/mame/video/triplhnt.cpp",
+ MAME_DIR .. "src/mame/drivers/tunhunt.cpp",
+ MAME_DIR .. "src/mame/includes/tunhunt.h",
+ MAME_DIR .. "src/mame/video/tunhunt.cpp",
+ MAME_DIR .. "src/mame/drivers/ultratnk.cpp",
+ MAME_DIR .. "src/mame/includes/ultratnk.h",
+ MAME_DIR .. "src/mame/video/ultratnk.cpp",
+ MAME_DIR .. "src/mame/drivers/videopin.cpp",
+ MAME_DIR .. "src/mame/includes/videopin.h",
+ MAME_DIR .. "src/mame/audio/videopin.cpp",
+ MAME_DIR .. "src/mame/video/videopin.cpp",
+ MAME_DIR .. "src/mame/drivers/vindictr.cpp",
+ MAME_DIR .. "src/mame/includes/vindictr.h",
+ MAME_DIR .. "src/mame/video/vindictr.cpp",
+ MAME_DIR .. "src/mame/drivers/wolfpack.cpp",
+ MAME_DIR .. "src/mame/includes/wolfpack.h",
+ MAME_DIR .. "src/mame/video/wolfpack.cpp",
+ MAME_DIR .. "src/mame/drivers/xybots.cpp",
+ MAME_DIR .. "src/mame/includes/xybots.h",
+ MAME_DIR .. "src/mame/video/xybots.cpp",
+ MAME_DIR .. "src/mame/machine/asic65.cpp",
+ MAME_DIR .. "src/mame/machine/asic65.h",
+ MAME_DIR .. "src/mame/machine/atarigen.cpp",
+ MAME_DIR .. "src/mame/machine/atarigen.h",
+ MAME_DIR .. "src/mame/machine/atariscom.cpp",
+ MAME_DIR .. "src/mame/machine/atariscom.h",
+ MAME_DIR .. "src/mame/machine/mathbox.cpp",
+ MAME_DIR .. "src/mame/machine/mathbox.h",
+ MAME_DIR .. "src/mame/machine/slapstic.cpp",
+ MAME_DIR .. "src/mame/machine/slapstic.h",
+ MAME_DIR .. "src/mame/machine/atarixga.cpp",
+ MAME_DIR .. "src/mame/machine/atarixga.h",
+ MAME_DIR .. "src/mame/audio/atarijsa.cpp",
+ MAME_DIR .. "src/mame/audio/atarijsa.h",
+ MAME_DIR .. "src/mame/audio/atarisac.cpp",
+ MAME_DIR .. "src/mame/audio/atarisac.h",
+ MAME_DIR .. "src/mame/audio/cage.cpp",
+ MAME_DIR .. "src/mame/audio/cage.h",
+ MAME_DIR .. "src/mame/audio/redbaron.cpp",
+ MAME_DIR .. "src/mame/audio/redbaron.h",
+ MAME_DIR .. "src/mame/video/atarimo.cpp",
+ MAME_DIR .. "src/mame/video/atarimo.h",
+ MAME_DIR .. "src/mame/video/atarirle.cpp",
+ MAME_DIR .. "src/mame/video/atarirle.h",
+ MAME_DIR .. "src/mame/video/atarivad.cpp",
+ MAME_DIR .. "src/mame/video/atarivad.h",
+}
+
+createMAMEProjects(_target, _subtarget, "atlus")
+files {
+ MAME_DIR .. "src/mame/drivers/ohmygod.cpp",
+ MAME_DIR .. "src/mame/includes/ohmygod.h",
+ MAME_DIR .. "src/mame/video/ohmygod.cpp",
+ MAME_DIR .. "src/mame/drivers/patapata.cpp",
+ MAME_DIR .. "src/mame/drivers/bowltry.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "barcrest")
+files {
+ MAME_DIR .. "src/mame/drivers/mpu2.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu3.cpp",
+ MAME_DIR .. "src/mame/machine/mpu4.cpp",
+ MAME_DIR .. "src/mame/includes/mpu4.h",
+ MAME_DIR .. "src/mame/drivers/mpu4.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4avan.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4bwb.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4concept.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4crystal.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4dealem.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4empire.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4mdm.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4misc.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4mod2sw.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4mod4yam.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4plasma.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4sw.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4union.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu4vid.cpp",
+ MAME_DIR .. "src/mame/includes/mpu5.h",
+ MAME_DIR .. "src/mame/drivers/mpu5.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu5sw.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "bfm")
+files {
+ MAME_DIR .. "src/mame/drivers/bfcobra.cpp",
+ MAME_DIR .. "src/mame/includes/bfm_ad5.h",
+ MAME_DIR .. "src/mame/drivers/bfm_ad5.cpp",
+ MAME_DIR .. "src/mame/drivers/bfm_ad5sw.cpp",
+ MAME_DIR .. "src/mame/drivers/bfm_sc1.cpp",
+ MAME_DIR .. "src/mame/drivers/bfm_sc2.cpp",
+ MAME_DIR .. "src/mame/includes/bfm_sc4.h",
+ MAME_DIR .. "src/mame/drivers/bfm_sc4.cpp",
+ MAME_DIR .. "src/mame/includes/bfm_sc5.h",
+ MAME_DIR .. "src/mame/drivers/bfm_sc5.cpp",
+ MAME_DIR .. "src/mame/drivers/bfm_sc5sw.cpp",
+ MAME_DIR .. "src/mame/drivers/bfm_swp.cpp",
+ MAME_DIR .. "src/mame/drivers/bfmsys83.cpp",
+ MAME_DIR .. "src/mame/drivers/bfmsys85.cpp",
+ MAME_DIR .. "src/mame/drivers/rastersp.cpp",
+ MAME_DIR .. "src/mame/machine/bfm_bd1.h",
+ MAME_DIR .. "src/mame/machine/bfm_bd1.cpp",
+ MAME_DIR .. "src/mame/machine/bfm_bda.h",
+ MAME_DIR .. "src/mame/machine/bfm_bda.cpp",
+ MAME_DIR .. "src/mame/machine/bfm_comn.h",
+ MAME_DIR .. "src/mame/machine/bfm_comn.cpp",
+ MAME_DIR .. "src/mame/machine/bfm_sc45_helper.h",
+ MAME_DIR .. "src/mame/machine/bfm_sc45_helper.cpp",
+ MAME_DIR .. "src/mame/machine/sec.h",
+ MAME_DIR .. "src/mame/machine/sec.cpp",
+ MAME_DIR .. "src/mame/video/bfm_adr2.h",
+ MAME_DIR .. "src/mame/video/bfm_adr2.cpp",
+ MAME_DIR .. "src/mame/video/bfm_dm01.h",
+ MAME_DIR .. "src/mame/video/bfm_dm01.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "bmc")
+files {
+ MAME_DIR .. "src/mame/drivers/bmcbowl.cpp",
+ MAME_DIR .. "src/mame/drivers/koftball.cpp",
+ MAME_DIR .. "src/mame/drivers/popobear.cpp",
+ MAME_DIR .. "src/mame/drivers/bmcpokr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "capcom")
+files {
+ MAME_DIR .. "src/mame/drivers/1942.cpp",
+ MAME_DIR .. "src/mame/includes/1942.h",
+ MAME_DIR .. "src/mame/video/1942.cpp",
+ MAME_DIR .. "src/mame/audio/nl_1942.cpp",
+ MAME_DIR .. "src/mame/audio/nl_1942.h",
+ MAME_DIR .. "src/mame/drivers/1943.cpp",
+ MAME_DIR .. "src/mame/includes/1943.h",
+ MAME_DIR .. "src/mame/video/1943.cpp",
+ MAME_DIR .. "src/mame/drivers/alien.cpp",
+ MAME_DIR .. "src/mame/drivers/bionicc.cpp",
+ MAME_DIR .. "src/mame/drivers/supduck.cpp",
+ MAME_DIR .. "src/mame/video/tigeroad_spr.cpp",
+ MAME_DIR .. "src/mame/video/tigeroad_spr.h",
+ MAME_DIR .. "src/mame/drivers/blktiger.cpp",
+ MAME_DIR .. "src/mame/includes/blktiger.h",
+ MAME_DIR .. "src/mame/video/blktiger.cpp",
+ MAME_DIR .. "src/mame/drivers/blktiger_ms.cpp",
+ MAME_DIR .. "src/mame/drivers/cbasebal.cpp",
+ MAME_DIR .. "src/mame/includes/cbasebal.h",
+ MAME_DIR .. "src/mame/video/cbasebal.cpp",
+ MAME_DIR .. "src/mame/drivers/commando.cpp",
+ MAME_DIR .. "src/mame/includes/commando.h",
+ MAME_DIR .. "src/mame/video/commando.cpp",
+ MAME_DIR .. "src/mame/drivers/cps1.cpp",
+ MAME_DIR .. "src/mame/includes/cps1.h",
+ MAME_DIR .. "src/mame/video/cps1.cpp",
+ MAME_DIR .. "src/mame/drivers/cps1bl_5205.cpp",
+ MAME_DIR .. "src/mame/drivers/cps1bl_pic.cpp",
+ MAME_DIR .. "src/mame/drivers/kenseim.cpp",
+ MAME_DIR .. "src/mame/drivers/cps2.cpp",
+ MAME_DIR .. "src/mame/machine/cps2crypt.cpp",
+ MAME_DIR .. "src/mame/machine/cps2crypt.h",
+ MAME_DIR .. "src/mame/drivers/cps3.cpp",
+ MAME_DIR .. "src/mame/includes/cps3.h",
+ MAME_DIR .. "src/mame/audio/cps3.cpp",
+ MAME_DIR .. "src/mame/audio/cps3.h",
+ MAME_DIR .. "src/mame/drivers/egghunt.cpp",
+ MAME_DIR .. "src/mame/drivers/exedexes.cpp",
+ MAME_DIR .. "src/mame/includes/exedexes.h",
+ MAME_DIR .. "src/mame/video/exedexes.cpp",
+ MAME_DIR .. "src/mame/drivers/fcrash.cpp",
+ MAME_DIR .. "src/mame/includes/fcrash.h",
+ MAME_DIR .. "src/mame/drivers/gng.cpp",
+ MAME_DIR .. "src/mame/includes/gng.h",
+ MAME_DIR .. "src/mame/video/gng.cpp",
+ MAME_DIR .. "src/mame/drivers/gunsmoke.cpp",
+ MAME_DIR .. "src/mame/includes/gunsmoke.h",
+ MAME_DIR .. "src/mame/video/gunsmoke.cpp",
+ MAME_DIR .. "src/mame/drivers/higemaru.cpp",
+ MAME_DIR .. "src/mame/includes/higemaru.h",
+ MAME_DIR .. "src/mame/video/higemaru.cpp",
+ MAME_DIR .. "src/mame/drivers/lastduel.cpp",
+ MAME_DIR .. "src/mame/includes/lastduel.h",
+ MAME_DIR .. "src/mame/video/lastduel.cpp",
+ MAME_DIR .. "src/mame/drivers/lwings.cpp",
+ MAME_DIR .. "src/mame/includes/lwings.h",
+ MAME_DIR .. "src/mame/video/lwings.cpp",
+ MAME_DIR .. "src/mame/drivers/mitchell.cpp",
+ MAME_DIR .. "src/mame/includes/mitchell.h",
+ MAME_DIR .. "src/mame/video/mitchell.cpp",
+ MAME_DIR .. "src/mame/drivers/psrockman.cpp",
+ MAME_DIR .. "src/mame/drivers/sf.cpp",
+ MAME_DIR .. "src/mame/drivers/sidearms.cpp",
+ MAME_DIR .. "src/mame/includes/sidearms.h",
+ MAME_DIR .. "src/mame/video/sidearms.cpp",
+ MAME_DIR .. "src/mame/drivers/sonson.cpp",
+ MAME_DIR .. "src/mame/includes/sonson.h",
+ MAME_DIR .. "src/mame/video/sonson.cpp",
+ MAME_DIR .. "src/mame/drivers/srumbler.cpp",
+ MAME_DIR .. "src/mame/includes/srumbler.h",
+ MAME_DIR .. "src/mame/video/srumbler.cpp",
+ MAME_DIR .. "src/mame/drivers/tigeroad.cpp",
+ MAME_DIR .. "src/mame/includes/tigeroad.h",
+ MAME_DIR .. "src/mame/video/tigeroad.cpp",
+ MAME_DIR .. "src/mame/machine/tigeroad.cpp",
+ MAME_DIR .. "src/mame/drivers/vulgus.cpp",
+ MAME_DIR .. "src/mame/includes/vulgus.h",
+ MAME_DIR .. "src/mame/video/vulgus.cpp",
+ MAME_DIR .. "src/mame/machine/kabuki.cpp",
+ MAME_DIR .. "src/mame/machine/kabuki.h",
+ MAME_DIR .. "src/mame/drivers/tvcapcom.cpp",
+ MAME_DIR .. "src/mame/drivers/instantm.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "ces")
+files {
+ MAME_DIR .. "src/mame/drivers/cesclass.cpp",
+ MAME_DIR .. "src/mame/drivers/galgames.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "cinemat")
+files {
+ MAME_DIR .. "src/mame/drivers/cinemat.cpp",
+ MAME_DIR .. "src/mame/includes/cinemat.h",
+ MAME_DIR .. "src/mame/audio/cinemat.cpp",
+ MAME_DIR .. "src/mame/audio/cinemat.h",
+ MAME_DIR .. "src/mame/video/cinemat.cpp",
+ MAME_DIR .. "src/mame/audio/nl_armora.cpp",
+ MAME_DIR .. "src/mame/audio/nl_armora.h",
+ MAME_DIR .. "src/mame/audio/nl_barrier.cpp",
+ MAME_DIR .. "src/mame/audio/nl_barrier.h",
+ MAME_DIR .. "src/mame/audio/nl_boxingb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_boxingb.h",
+ MAME_DIR .. "src/mame/audio/nl_cinemat_common.h",
+ MAME_DIR .. "src/mame/audio/nl_ripoff.cpp",
+ MAME_DIR .. "src/mame/audio/nl_ripoff.h",
+ MAME_DIR .. "src/mame/audio/nl_solarq.cpp",
+ MAME_DIR .. "src/mame/audio/nl_solarq.h",
+ MAME_DIR .. "src/mame/audio/nl_spacewar.cpp",
+ MAME_DIR .. "src/mame/audio/nl_spacewar.h",
+ MAME_DIR .. "src/mame/audio/nl_speedfrk.cpp",
+ MAME_DIR .. "src/mame/audio/nl_speedfrk.h",
+ MAME_DIR .. "src/mame/audio/nl_starcas.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starcas.h",
+ MAME_DIR .. "src/mame/audio/nl_starhawk.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starhawk.h",
+ MAME_DIR .. "src/mame/audio/nl_sundance.cpp",
+ MAME_DIR .. "src/mame/audio/nl_sundance.h",
+ MAME_DIR .. "src/mame/audio/nl_tailg.cpp",
+ MAME_DIR .. "src/mame/audio/nl_tailg.h",
+ MAME_DIR .. "src/mame/audio/nl_warrior.cpp",
+ MAME_DIR .. "src/mame/audio/nl_warrior.h",
+ MAME_DIR .. "src/mame/drivers/cchasm.cpp",
+ MAME_DIR .. "src/mame/drivers/dlair.cpp",
+ MAME_DIR .. "src/mame/drivers/dlair2.cpp",
+ MAME_DIR .. "src/mame/drivers/embargo.cpp",
+ MAME_DIR .. "src/mame/drivers/jack.cpp",
+ MAME_DIR .. "src/mame/includes/jack.h",
+ MAME_DIR .. "src/mame/video/jack.cpp",
+ MAME_DIR .. "src/mame/drivers/leland.cpp",
+ MAME_DIR .. "src/mame/includes/leland.h",
+ MAME_DIR .. "src/mame/machine/leland.cpp",
+ MAME_DIR .. "src/mame/audio/leland.cpp",
+ MAME_DIR .. "src/mame/audio/leland.h",
+ MAME_DIR .. "src/mame/video/leland.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "cirsa")
+files {
+ MAME_DIR .. "src/mame/drivers/cirsa820xxx.cpp",
+ MAME_DIR .. "src/mame/drivers/cirsa910510.cpp",
+ MAME_DIR .. "src/mame/drivers/miniguay.cpp",
+ MAME_DIR .. "src/mame/drivers/missbamby.cpp",
+ MAME_DIR .. "src/mame/drivers/neptunp2.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "comad")
+files {
+ MAME_DIR .. "src/mame/drivers/funybubl.cpp",
+ MAME_DIR .. "src/mame/includes/funybubl.h",
+ MAME_DIR .. "src/mame/video/funybubl.cpp",
+ MAME_DIR .. "src/mame/drivers/galspnbl.cpp",
+ MAME_DIR .. "src/mame/includes/galspnbl.h",
+ MAME_DIR .. "src/mame/video/galspnbl.cpp",
+ MAME_DIR .. "src/mame/drivers/zerozone.cpp",
+ MAME_DIR .. "src/mame/includes/zerozone.h",
+ MAME_DIR .. "src/mame/video/zerozone.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "cvs")
+files {
+ MAME_DIR .. "src/mame/drivers/cvs.cpp",
+ MAME_DIR .. "src/mame/includes/cvs.h",
+ MAME_DIR .. "src/mame/video/cvs.cpp",
+ MAME_DIR .. "src/mame/drivers/galaxia.cpp",
+ MAME_DIR .. "src/mame/includes/galaxia.h",
+ MAME_DIR .. "src/mame/video/galaxia.cpp",
+ MAME_DIR .. "src/mame/drivers/quasar.cpp",
+ MAME_DIR .. "src/mame/includes/quasar.h",
+ MAME_DIR .. "src/mame/video/quasar.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "dataeast")
+files {
+ MAME_DIR .. "src/mame/drivers/actfancr.cpp",
+ MAME_DIR .. "src/mame/includes/actfancr.h",
+ MAME_DIR .. "src/mame/video/actfancr.cpp",
+ MAME_DIR .. "src/mame/drivers/astrof.cpp",
+ MAME_DIR .. "src/mame/includes/astrof.h",
+ MAME_DIR .. "src/mame/audio/astrof.cpp",
+ MAME_DIR .. "src/mame/drivers/backfire.cpp",
+ MAME_DIR .. "src/mame/drivers/battlera.cpp",
+ MAME_DIR .. "src/mame/includes/battlera.h",
+ MAME_DIR .. "src/mame/drivers/boogwing.cpp",
+ MAME_DIR .. "src/mame/includes/boogwing.h",
+ MAME_DIR .. "src/mame/video/boogwing.cpp",
+ MAME_DIR .. "src/mame/drivers/brkthru.cpp",
+ MAME_DIR .. "src/mame/includes/brkthru.h",
+ MAME_DIR .. "src/mame/video/brkthru.cpp",
+ MAME_DIR .. "src/mame/drivers/btime.cpp",
+ MAME_DIR .. "src/mame/includes/btime.h",
+ MAME_DIR .. "src/mame/machine/btime.cpp",
+ MAME_DIR .. "src/mame/video/btime.cpp",
+ MAME_DIR .. "src/mame/drivers/bwing.cpp",
+ MAME_DIR .. "src/mame/includes/bwing.h",
+ MAME_DIR .. "src/mame/video/bwing.cpp",
+ MAME_DIR .. "src/mame/drivers/cbuster.cpp",
+ MAME_DIR .. "src/mame/includes/cbuster.h",
+ MAME_DIR .. "src/mame/video/cbuster.cpp",
+ MAME_DIR .. "src/mame/drivers/chanbara.cpp",
+ MAME_DIR .. "src/mame/drivers/cninja.cpp",
+ MAME_DIR .. "src/mame/includes/cninja.h",
+ MAME_DIR .. "src/mame/video/cninja.cpp",
+ MAME_DIR .. "src/mame/drivers/cntsteer.cpp",
+ MAME_DIR .. "src/mame/drivers/compgolf.cpp",
+ MAME_DIR .. "src/mame/includes/compgolf.h",
+ MAME_DIR .. "src/mame/video/compgolf.cpp",
+ MAME_DIR .. "src/mame/drivers/darkseal.cpp",
+ MAME_DIR .. "src/mame/includes/darkseal.h",
+ MAME_DIR .. "src/mame/video/darkseal.cpp",
+ MAME_DIR .. "src/mame/drivers/dassault.cpp",
+ MAME_DIR .. "src/mame/includes/dassault.h",
+ MAME_DIR .. "src/mame/video/dassault.cpp",
+ MAME_DIR .. "src/mame/drivers/dblewing.cpp",
+ MAME_DIR .. "src/mame/drivers/dec0.cpp",
+ MAME_DIR .. "src/mame/includes/dec0.h",
+ MAME_DIR .. "src/mame/machine/dec0.cpp",
+ MAME_DIR .. "src/mame/video/dec0.cpp",
+ MAME_DIR .. "src/mame/drivers/dec8.cpp",
+ MAME_DIR .. "src/mame/includes/dec8.h",
+ MAME_DIR .. "src/mame/video/dec8.cpp",
+ MAME_DIR .. "src/mame/machine/deco222.cpp",
+ MAME_DIR .. "src/mame/machine/deco222.h",
+ MAME_DIR .. "src/mame/machine/decocpu7.cpp",
+ MAME_DIR .. "src/mame/machine/decocpu7.h",
+ MAME_DIR .. "src/mame/machine/decocpu6.cpp",
+ MAME_DIR .. "src/mame/machine/decocpu6.h",
+ MAME_DIR .. "src/mame/drivers/deco_ld.cpp",
+ MAME_DIR .. "src/mame/drivers/deco_mlc.cpp",
+ MAME_DIR .. "src/mame/includes/deco_mlc.h",
+ MAME_DIR .. "src/mame/video/deco_mlc.cpp",
+ MAME_DIR .. "src/mame/drivers/deco156.cpp",
+ MAME_DIR .. "src/mame/machine/deco156.cpp",
+ MAME_DIR .. "src/mame/machine/deco156.h",
+ MAME_DIR .. "src/mame/drivers/deco32.cpp",
+ MAME_DIR .. "src/mame/includes/deco32.h",
+ MAME_DIR .. "src/mame/video/deco32.cpp",
+ MAME_DIR .. "src/mame/video/dvi.cpp",
+ MAME_DIR .. "src/mame/video/deco_ace.cpp",
+ MAME_DIR .. "src/mame/video/deco_ace.h",
+ MAME_DIR .. "src/mame/drivers/decocass.cpp",
+ MAME_DIR .. "src/mame/includes/decocass.h",
+ MAME_DIR .. "src/mame/machine/decocass.cpp",
+ MAME_DIR .. "src/mame/machine/decocass_tape.cpp",
+ MAME_DIR .. "src/mame/machine/decocass_tape.h",
+ MAME_DIR .. "src/mame/video/decocass.cpp",
+ MAME_DIR .. "src/mame/drivers/deshoros.cpp",
+ MAME_DIR .. "src/mame/drivers/dietgo.cpp",
+ MAME_DIR .. "src/mame/drivers/dreambal.cpp",
+ MAME_DIR .. "src/mame/drivers/exprraid.cpp",
+ MAME_DIR .. "src/mame/includes/exprraid.h",
+ MAME_DIR .. "src/mame/video/exprraid.cpp",
+ MAME_DIR .. "src/mame/drivers/ffantasy_ms.cpp",
+ MAME_DIR .. "src/mame/drivers/firetrap.cpp",
+ MAME_DIR .. "src/mame/includes/firetrap.h",
+ MAME_DIR .. "src/mame/video/firetrap.cpp",
+ MAME_DIR .. "src/mame/drivers/funkyjet.cpp",
+ MAME_DIR .. "src/mame/drivers/karnov.cpp",
+ MAME_DIR .. "src/mame/drivers/kchamp.cpp",
+ MAME_DIR .. "src/mame/includes/kchamp.h",
+ MAME_DIR .. "src/mame/video/kchamp.cpp",
+ MAME_DIR .. "src/mame/drivers/kingobox.cpp",
+ MAME_DIR .. "src/mame/includes/kingobox.h",
+ MAME_DIR .. "src/mame/video/kingobox.cpp",
+ MAME_DIR .. "src/mame/drivers/lemmings.cpp",
+ MAME_DIR .. "src/mame/includes/lemmings.h",
+ MAME_DIR .. "src/mame/video/lemmings.cpp",
+ MAME_DIR .. "src/mame/drivers/liberate.cpp",
+ MAME_DIR .. "src/mame/includes/liberate.h",
+ MAME_DIR .. "src/mame/video/liberate.cpp",
+ MAME_DIR .. "src/mame/drivers/madalien.cpp",
+ MAME_DIR .. "src/mame/includes/madalien.h",
+ MAME_DIR .. "src/mame/audio/madalien.cpp",
+ MAME_DIR .. "src/mame/video/madalien.cpp",
+ MAME_DIR .. "src/mame/drivers/madmotor.cpp",
+ MAME_DIR .. "src/mame/drivers/metlclsh.cpp",
+ MAME_DIR .. "src/mame/includes/metlclsh.h",
+ MAME_DIR .. "src/mame/video/metlclsh.cpp",
+ MAME_DIR .. "src/mame/drivers/mirage.cpp",
+ MAME_DIR .. "src/mame/drivers/pcktgal.cpp",
+ MAME_DIR .. "src/mame/includes/pcktgal.h",
+ MAME_DIR .. "src/mame/video/pcktgal.cpp",
+ MAME_DIR .. "src/mame/drivers/pktgaldx.cpp",
+ MAME_DIR .. "src/mame/includes/pktgaldx.h",
+ MAME_DIR .. "src/mame/video/pktgaldx.cpp",
+ MAME_DIR .. "src/mame/drivers/progolf.cpp",
+ MAME_DIR .. "src/mame/drivers/rohga.cpp",
+ MAME_DIR .. "src/mame/includes/rohga.h",
+ MAME_DIR .. "src/mame/video/rohga.cpp",
+ MAME_DIR .. "src/mame/drivers/shootout.cpp",
+ MAME_DIR .. "src/mame/includes/shootout.h",
+ MAME_DIR .. "src/mame/video/shootout.cpp",
+ MAME_DIR .. "src/mame/drivers/sidepckt.cpp",
+ MAME_DIR .. "src/mame/includes/sidepckt.h",
+ MAME_DIR .. "src/mame/video/sidepckt.cpp",
+ MAME_DIR .. "src/mame/drivers/simpl156.cpp",
+ MAME_DIR .. "src/mame/includes/simpl156.h",
+ MAME_DIR .. "src/mame/video/simpl156.cpp",
+ MAME_DIR .. "src/mame/drivers/sshangha.cpp",
+ MAME_DIR .. "src/mame/includes/sshangha.h",
+ MAME_DIR .. "src/mame/video/sshangha.cpp",
+ MAME_DIR .. "src/mame/drivers/stadhero.cpp",
+ MAME_DIR .. "src/mame/includes/stadhero.h",
+ MAME_DIR .. "src/mame/video/stadhero.cpp",
+ MAME_DIR .. "src/mame/drivers/supbtime.cpp",
+ MAME_DIR .. "src/mame/includes/supbtime.h",
+ MAME_DIR .. "src/mame/video/supbtime.cpp",
+ MAME_DIR .. "src/mame/drivers/tryout.cpp",
+ MAME_DIR .. "src/mame/includes/tryout.h",
+ MAME_DIR .. "src/mame/video/tryout.cpp",
+ MAME_DIR .. "src/mame/drivers/tumbleb.cpp",
+ MAME_DIR .. "src/mame/includes/tumbleb.h",
+ MAME_DIR .. "src/mame/video/tumbleb.cpp",
+ MAME_DIR .. "src/mame/drivers/vaportra.cpp",
+ MAME_DIR .. "src/mame/includes/vaportra.h",
+ MAME_DIR .. "src/mame/video/vaportra.cpp",
+ MAME_DIR .. "src/mame/machine/deco_irq.cpp",
+ MAME_DIR .. "src/mame/machine/deco_irq.h",
+ MAME_DIR .. "src/mame/machine/deco102.cpp",
+ MAME_DIR .. "src/mame/machine/deco102.h",
+ MAME_DIR .. "src/mame/machine/decocrpt.cpp",
+ MAME_DIR .. "src/mame/machine/decocrpt.h",
+ MAME_DIR .. "src/mame/machine/deco104.cpp",
+ MAME_DIR .. "src/mame/machine/deco104.h",
+ MAME_DIR .. "src/mame/machine/deco146.cpp",
+ MAME_DIR .. "src/mame/machine/deco146.h",
+ MAME_DIR .. "src/mame/video/decbac06.cpp",
+ MAME_DIR .. "src/mame/video/decbac06.h",
+ MAME_DIR .. "src/mame/video/decrmc3.cpp",
+ MAME_DIR .. "src/mame/video/decrmc3.h",
+ MAME_DIR .. "src/mame/video/deco16ic.cpp",
+ MAME_DIR .. "src/mame/video/deco16ic.h",
+ MAME_DIR .. "src/mame/video/decocomn.cpp",
+ MAME_DIR .. "src/mame/video/decocomn.h",
+ MAME_DIR .. "src/mame/video/decospr.cpp",
+ MAME_DIR .. "src/mame/video/decospr.h",
+ MAME_DIR .. "src/mame/video/decmxc06.cpp",
+ MAME_DIR .. "src/mame/video/decmxc06.h",
+ MAME_DIR .. "src/mame/video/deckarn.cpp",
+ MAME_DIR .. "src/mame/video/deckarn.h",
+}
+
+createMAMEProjects(_target, _subtarget, "dgrm")
+files {
+ MAME_DIR .. "src/mame/drivers/blackt96.cpp",
+ MAME_DIR .. "src/mame/drivers/pokechmp.cpp",
+ MAME_DIR .. "src/mame/includes/pokechmp.h",
+ MAME_DIR .. "src/mame/video/pokechmp.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "dooyong")
+files {
+ MAME_DIR .. "src/mame/drivers/dooyong.cpp",
+ MAME_DIR .. "src/mame/video/dooyong.cpp",
+ MAME_DIR .. "src/mame/video/dooyong.h",
+ MAME_DIR .. "src/mame/drivers/gundealr.cpp",
+ MAME_DIR .. "src/mame/includes/gundealr.h",
+ MAME_DIR .. "src/mame/video/gundealr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "dynax")
+files {
+ MAME_DIR .. "src/mame/drivers/ddenlovr.cpp",
+ MAME_DIR .. "src/mame/drivers/dynax.cpp",
+ MAME_DIR .. "src/mame/includes/dynax.h",
+ MAME_DIR .. "src/mame/video/dynax.cpp",
+ MAME_DIR .. "src/mame/drivers/hnayayoi.cpp",
+ MAME_DIR .. "src/mame/includes/hnayayoi.h",
+ MAME_DIR .. "src/mame/video/hnayayoi.cpp",
+ MAME_DIR .. "src/mame/drivers/realbrk.cpp",
+ MAME_DIR .. "src/mame/includes/realbrk.h",
+ MAME_DIR .. "src/mame/video/realbrk.cpp",
+ MAME_DIR .. "src/mame/drivers/royalmah.cpp",
+ MAME_DIR .. "src/mame/video/dynax_blitter_rev2.cpp",
+ MAME_DIR .. "src/mame/video/dynax_blitter_rev2.h",
+}
+
+createMAMEProjects(_target, _subtarget, "edevices")
+files {
+ MAME_DIR .. "src/mame/drivers/diverboy.cpp",
+ MAME_DIR .. "src/mame/drivers/fantland.cpp",
+ MAME_DIR .. "src/mame/includes/fantland.h",
+ MAME_DIR .. "src/mame/video/fantland.cpp",
+ MAME_DIR .. "src/mame/drivers/mwarr.cpp",
+ MAME_DIR .. "src/mame/drivers/stlforce.cpp",
+ MAME_DIR .. "src/mame/includes/stlforce.h",
+ MAME_DIR .. "src/mame/video/edevices.cpp",
+ MAME_DIR .. "src/mame/video/edevices.h",
+ MAME_DIR .. "src/mame/drivers/mugsmash.cpp",
+ MAME_DIR .. "src/mame/includes/mugsmash.h",
+ MAME_DIR .. "src/mame/video/mugsmash.cpp",
+ MAME_DIR .. "src/mame/drivers/ppmast93.cpp",
+ MAME_DIR .. "src/mame/drivers/pzletime.cpp",
+ MAME_DIR .. "src/mame/drivers/twins.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "efo")
+files {
+ MAME_DIR .. "src/mame/drivers/cedar_magnet.cpp",
+ MAME_DIR .. "src/mame/machine/cedar_magnet_plane.cpp",
+ MAME_DIR .. "src/mame/machine/cedar_magnet_sprite.cpp",
+ MAME_DIR .. "src/mame/machine/cedar_magnet_board.cpp",
+ MAME_DIR .. "src/mame/machine/cedar_magnet_flop.cpp",
+ MAME_DIR .. "src/mame/drivers/cidelsa.cpp",
+ MAME_DIR .. "src/mame/includes/cidelsa.h",
+ MAME_DIR .. "src/mame/video/cidelsa.cpp",
+ MAME_DIR .. "src/mame/drivers/nightmare.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "eolith")
+files {
+ MAME_DIR .. "src/mame/drivers/eolith.cpp",
+ MAME_DIR .. "src/mame/includes/eolith.h",
+ MAME_DIR .. "src/mame/video/eolith.cpp",
+ MAME_DIR .. "src/mame/drivers/eolith16.cpp",
+ MAME_DIR .. "src/mame/drivers/ghosteo.cpp",
+ MAME_DIR .. "src/mame/drivers/vegaeo.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "excelent")
+files {
+ MAME_DIR .. "src/mame/drivers/aquarium.cpp",
+ MAME_DIR .. "src/mame/includes/aquarium.h",
+ MAME_DIR .. "src/mame/video/aquarium.cpp",
+ MAME_DIR .. "src/mame/drivers/d9final.cpp",
+ MAME_DIR .. "src/mame/drivers/dblcrown.cpp",
+ MAME_DIR .. "src/mame/drivers/gcpinbal.cpp",
+ MAME_DIR .. "src/mame/includes/gcpinbal.h",
+ MAME_DIR .. "src/mame/video/gcpinbal.cpp",
+ MAME_DIR .. "src/mame/video/excellent_spr.cpp",
+ MAME_DIR .. "src/mame/video/excellent_spr.h",
+ MAME_DIR .. "src/mame/drivers/lastbank.cpp",
+ MAME_DIR .. "src/mame/drivers/witch.cpp",
+ MAME_DIR .. "src/mame/includes/witch.h",
+}
+
+createMAMEProjects(_target, _subtarget, "exidy")
+files {
+ MAME_DIR .. "src/mame/audio/nl_carpolo.h",
+ MAME_DIR .. "src/mame/audio/nl_carpolo.cpp",
+ MAME_DIR .. "src/mame/drivers/carpolo.cpp",
+ MAME_DIR .. "src/mame/includes/carpolo.h",
+ MAME_DIR .. "src/mame/machine/carpolo.cpp",
+ MAME_DIR .. "src/mame/video/carpolo.cpp",
+ MAME_DIR .. "src/mame/drivers/circus.cpp",
+ MAME_DIR .. "src/mame/includes/circus.h",
+ MAME_DIR .. "src/mame/audio/circus.cpp",
+ MAME_DIR .. "src/mame/video/circus.cpp",
+ MAME_DIR .. "src/mame/drivers/exidy.cpp",
+ MAME_DIR .. "src/mame/audio/exidy.cpp",
+ MAME_DIR .. "src/mame/audio/exidy.h",
+ MAME_DIR .. "src/mame/drivers/exidy440.cpp",
+ MAME_DIR .. "src/mame/includes/exidy440.h",
+ MAME_DIR .. "src/mame/audio/exidy440.cpp",
+ MAME_DIR .. "src/mame/audio/exidy440.h",
+ MAME_DIR .. "src/mame/video/exidy440.cpp",
+ MAME_DIR .. "src/mame/drivers/exidyttl.cpp",
+ MAME_DIR .. "src/mame/drivers/maxaflex.cpp",
+ MAME_DIR .. "src/mame/machine/atari400.cpp",
+ MAME_DIR .. "src/mame/includes/atari400.h",
+ MAME_DIR .. "src/mame/video/atari400.cpp",
+ MAME_DIR .. "src/mame/video/antic.cpp",
+ MAME_DIR .. "src/mame/video/antic.h",
+ MAME_DIR .. "src/mame/video/gtia.cpp",
+ MAME_DIR .. "src/mame/video/gtia.h",
+ MAME_DIR .. "src/mame/audio/nl_fireone.h",
+ MAME_DIR .. "src/mame/audio/nl_fireone.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starfire.h",
+ MAME_DIR .. "src/mame/audio/nl_starfire.cpp",
+ MAME_DIR .. "src/mame/drivers/starfire.cpp",
+ MAME_DIR .. "src/mame/includes/starfire.h",
+ MAME_DIR .. "src/mame/video/starfire.cpp",
+ MAME_DIR .. "src/mame/drivers/vertigo.cpp",
+ MAME_DIR .. "src/mame/includes/vertigo.h",
+ MAME_DIR .. "src/mame/machine/vertigo.cpp",
+ MAME_DIR .. "src/mame/video/vertigo.cpp",
+ MAME_DIR .. "src/mame/drivers/victory.cpp",
+ MAME_DIR .. "src/mame/includes/victory.h",
+ MAME_DIR .. "src/mame/video/victory.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "f32")
+files {
+ MAME_DIR .. "src/mame/drivers/crospang.cpp",
+ MAME_DIR .. "src/mame/includes/crospang.h",
+ MAME_DIR .. "src/mame/video/crospang.cpp",
+ MAME_DIR .. "src/mame/drivers/silvmil.cpp",
+ MAME_DIR .. "src/mame/drivers/f-32.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "funworld")
+files {
+ MAME_DIR .. "src/mame/drivers/4roses.cpp",
+ MAME_DIR .. "src/mame/drivers/funworld.cpp",
+ MAME_DIR .. "src/mame/includes/funworld.h",
+ MAME_DIR .. "src/mame/video/funworld.cpp",
+ MAME_DIR .. "src/mame/drivers/photoply.cpp",
+ MAME_DIR .. "src/mame/drivers/photoplys.cpp",
+ MAME_DIR .. "src/mame/drivers/photoplysx.cpp",
+ MAME_DIR .. "src/mame/drivers/snookr10.cpp",
+ MAME_DIR .. "src/mame/includes/snookr10.h",
+ MAME_DIR .. "src/mame/video/snookr10.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "fuuki")
+files {
+ MAME_DIR .. "src/mame/drivers/fuukifg2.cpp",
+ MAME_DIR .. "src/mame/includes/fuukifg2.h",
+ MAME_DIR .. "src/mame/video/fuukifg2.cpp",
+ MAME_DIR .. "src/mame/drivers/fuukifg3.cpp",
+ MAME_DIR .. "src/mame/includes/fuukifg3.h",
+ MAME_DIR .. "src/mame/video/fuukifg3.cpp",
+ MAME_DIR .. "src/mame/video/fuukifg.cpp",
+ MAME_DIR .. "src/mame/video/fuukifg.h",
+}
+
+createMAMEProjects(_target, _subtarget, "gaelco")
+files {
+ MAME_DIR .. "src/mame/drivers/atvtrack.cpp",
+ MAME_DIR .. "src/mame/drivers/gaelco.cpp",
+ MAME_DIR .. "src/mame/includes/gaelco.h",
+ MAME_DIR .. "src/mame/video/gaelco.cpp",
+ MAME_DIR .. "src/mame/machine/gaelcrpt.cpp",
+ MAME_DIR .. "src/mame/includes/gaelcrpt.h",
+ MAME_DIR .. "src/mame/drivers/gaelco2.cpp",
+ MAME_DIR .. "src/mame/includes/gaelco2.h",
+ MAME_DIR .. "src/mame/machine/gaelco2.cpp",
+ MAME_DIR .. "src/mame/video/gaelco2.cpp",
+ MAME_DIR .. "src/mame/drivers/gaelco3d.cpp",
+ MAME_DIR .. "src/mame/includes/gaelco3d.h",
+ MAME_DIR .. "src/mame/video/gaelco3d.cpp",
+ MAME_DIR .. "src/mame/machine/gaelco3d.cpp",
+ MAME_DIR .. "src/mame/machine/gaelco3d.h",
+ MAME_DIR .. "src/mame/drivers/gaelcof3.cpp",
+ MAME_DIR .. "src/mame/drivers/gaelcopc.cpp",
+ MAME_DIR .. "src/mame/drivers/goldart.cpp",
+ MAME_DIR .. "src/mame/drivers/glass.cpp",
+ MAME_DIR .. "src/mame/includes/glass.h",
+ MAME_DIR .. "src/mame/video/glass.cpp",
+ MAME_DIR .. "src/mame/drivers/mastboy.cpp",
+ MAME_DIR .. "src/mame/drivers/mastboyo.cpp",
+ MAME_DIR .. "src/mame/drivers/rollext.cpp",
+ MAME_DIR .. "src/mame/drivers/splash.cpp",
+ MAME_DIR .. "src/mame/includes/splash.h",
+ MAME_DIR .. "src/mame/drivers/splash_ms.cpp",
+ MAME_DIR .. "src/mame/video/splash.cpp",
+ MAME_DIR .. "src/mame/drivers/targeth.cpp",
+ MAME_DIR .. "src/mame/includes/targeth.h",
+ MAME_DIR .. "src/mame/video/targeth.cpp",
+ MAME_DIR .. "src/mame/drivers/thoop2.cpp",
+ MAME_DIR .. "src/mame/includes/thoop2.h",
+ MAME_DIR .. "src/mame/video/thoop2.cpp",
+ MAME_DIR .. "src/mame/drivers/wrally.cpp",
+ MAME_DIR .. "src/mame/includes/wrally.h",
+ MAME_DIR .. "src/mame/video/wrally.cpp",
+ MAME_DIR .. "src/mame/drivers/blmbycar.cpp",
+ MAME_DIR .. "src/mame/includes/blmbycar.h",
+ MAME_DIR .. "src/mame/video/blmbycar.cpp",
+ MAME_DIR .. "src/mame/video/gaelco_wrally_sprites.cpp",
+ MAME_DIR .. "src/mame/video/gaelco_wrally_sprites.h",
+ MAME_DIR .. "src/mame/drivers/xorworld.cpp",
+ MAME_DIR .. "src/mame/includes/xorworld.h",
+ MAME_DIR .. "src/mame/video/xorworld.cpp",
+ MAME_DIR .. "src/mame/machine/gaelco_ds5002fp.cpp",
+ MAME_DIR .. "src/mame/machine/gaelco_ds5002fp.h",
+ MAME_DIR .. "src/mame/drivers/bigkarnk_ms.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "gameplan")
+files {
+ MAME_DIR .. "src/mame/drivers/enigma2.cpp",
+ MAME_DIR .. "src/mame/drivers/gameplan.cpp",
+ MAME_DIR .. "src/mame/includes/gameplan.h",
+ MAME_DIR .. "src/mame/video/gameplan.cpp",
+ MAME_DIR .. "src/mame/drivers/toratora.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "gametron")
+files {
+ MAME_DIR .. "src/mame/drivers/gatron.cpp",
+ MAME_DIR .. "src/mame/includes/gatron.h",
+ MAME_DIR .. "src/mame/video/gatron.cpp",
+ MAME_DIR .. "src/mame/drivers/gotya.cpp",
+ MAME_DIR .. "src/mame/includes/gotya.h",
+ MAME_DIR .. "src/mame/audio/gotya.cpp",
+ MAME_DIR .. "src/mame/video/gotya.cpp",
+ MAME_DIR .. "src/mame/drivers/sbugger.cpp",
+ MAME_DIR .. "src/mame/includes/sbugger.h",
+ MAME_DIR .. "src/mame/video/sbugger.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "gottlieb")
+files {
+ MAME_DIR .. "src/mame/drivers/exterm.cpp",
+ MAME_DIR .. "src/mame/includes/exterm.h",
+ MAME_DIR .. "src/mame/video/exterm.cpp",
+ MAME_DIR .. "src/mame/drivers/gottlieb.cpp",
+ MAME_DIR .. "src/mame/includes/gottlieb.h",
+ MAME_DIR .. "src/mame/audio/gottlieb.cpp",
+ MAME_DIR .. "src/mame/audio/gottlieb.h",
+ MAME_DIR .. "src/mame/video/gottlieb.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "ibmpc")
+files {
+ MAME_DIR .. "src/mame/drivers/calchase.cpp",
+ MAME_DIR .. "src/mame/drivers/fruitpc.cpp",
+ MAME_DIR .. "src/mame/drivers/pangofun.cpp",
+ MAME_DIR .. "src/mame/drivers/pcat_dyn.cpp",
+ MAME_DIR .. "src/mame/drivers/pcat_nit.cpp",
+ MAME_DIR .. "src/mame/drivers/pcxt.cpp",
+ MAME_DIR .. "src/mame/drivers/quakeat.cpp",
+ MAME_DIR .. "src/mame/drivers/queen.cpp",
+ MAME_DIR .. "src/mame/drivers/igspc.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "igs")
+files {
+ MAME_DIR .. "src/mame/drivers/cabaret.cpp",
+ MAME_DIR .. "src/mame/drivers/dunhuang.cpp",
+ MAME_DIR .. "src/mame/drivers/goldstar.cpp",
+ MAME_DIR .. "src/mame/includes/goldstar.h",
+ MAME_DIR .. "src/mame/video/goldstar.cpp",
+ MAME_DIR .. "src/mame/drivers/funtech.cpp",
+ MAME_DIR .. "src/mame/drivers/jackie.cpp",
+ MAME_DIR .. "src/mame/drivers/igspoker.cpp",
+ MAME_DIR .. "src/mame/drivers/igs009.cpp",
+ MAME_DIR .. "src/mame/drivers/igs011.cpp",
+ MAME_DIR .. "src/mame/drivers/igs017.cpp",
+ MAME_DIR .. "src/mame/video/igs017_igs031.cpp",
+ MAME_DIR .. "src/mame/video/igs017_igs031.h",
+ MAME_DIR .. "src/mame/drivers/igs_fear.cpp",
+ MAME_DIR .. "src/mame/drivers/igs_m027.cpp",
+ MAME_DIR .. "src/mame/drivers/igs_m036.cpp",
+ MAME_DIR .. "src/mame/drivers/iqblock.cpp",
+ MAME_DIR .. "src/mame/includes/iqblock.h",
+ MAME_DIR .. "src/mame/video/iqblock.cpp",
+ MAME_DIR .. "src/mame/drivers/lordgun.cpp",
+ MAME_DIR .. "src/mame/includes/lordgun.h",
+ MAME_DIR .. "src/mame/video/lordgun.cpp",
+ MAME_DIR .. "src/mame/drivers/pgm.cpp",
+ MAME_DIR .. "src/mame/includes/pgm.h",
+ MAME_DIR .. "src/mame/video/pgm.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type1.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type1.h",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type2.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type2.h",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type3.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type3.h",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs012.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs012.h",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs022.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs022.h",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs028.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs028.h",
+ MAME_DIR .. "src/mame/machine/pgmprot_orlegend.cpp",
+ MAME_DIR .. "src/mame/machine/pgmprot_orlegend.h",
+ MAME_DIR .. "src/mame/drivers/pgm2.cpp",
+ MAME_DIR .. "src/mame/video/pgm2.cpp",
+ MAME_DIR .. "src/mame/includes/pgm2.h",
+ MAME_DIR .. "src/mame/machine/pgm2_memcard.cpp",
+ MAME_DIR .. "src/mame/machine/pgm2_memcard.h",
+ MAME_DIR .. "src/mame/drivers/pgm3.cpp",
+ MAME_DIR .. "src/mame/drivers/spoker.cpp",
+ MAME_DIR .. "src/mame/machine/igs036crypt.cpp",
+ MAME_DIR .. "src/mame/machine/igs036crypt.h",
+ MAME_DIR .. "src/mame/machine/pgmcrypt.cpp",
+ MAME_DIR .. "src/mame/machine/pgmcrypt.h",
+ MAME_DIR .. "src/mame/machine/igs025.cpp",
+ MAME_DIR .. "src/mame/machine/igs025.h",
+ MAME_DIR .. "src/mame/machine/igs022.cpp",
+ MAME_DIR .. "src/mame/machine/igs022.h",
+ MAME_DIR .. "src/mame/machine/igs028.cpp",
+ MAME_DIR .. "src/mame/machine/igs028.h",
+}
+
+createMAMEProjects(_target, _subtarget, "igt")
+files {
+ MAME_DIR .. "src/mame/drivers/drw80pkr.cpp",
+ MAME_DIR .. "src/mame/drivers/gkigt.cpp",
+ MAME_DIR .. "src/mame/drivers/peplus.cpp",
+ MAME_DIR .. "src/mame/drivers/splus.cpp",
+ MAME_DIR .. "src/mame/drivers/videopkr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "irem")
+files {
+ MAME_DIR .. "src/mame/drivers/m10.cpp",
+ MAME_DIR .. "src/mame/includes/m10.h",
+ MAME_DIR .. "src/mame/video/m10.cpp",
+ MAME_DIR .. "src/mame/drivers/m14.cpp",
+ MAME_DIR .. "src/mame/drivers/m52.cpp",
+ MAME_DIR .. "src/mame/includes/m52.h",
+ MAME_DIR .. "src/mame/video/m52.cpp",
+ MAME_DIR .. "src/mame/drivers/m57.cpp",
+ MAME_DIR .. "src/mame/includes/m57.h",
+ MAME_DIR .. "src/mame/video/m57.cpp",
+ MAME_DIR .. "src/mame/drivers/m58.cpp",
+ MAME_DIR .. "src/mame/includes/m58.h",
+ MAME_DIR .. "src/mame/video/m58.cpp",
+ MAME_DIR .. "src/mame/drivers/m62.cpp",
+ MAME_DIR .. "src/mame/includes/m62.h",
+ MAME_DIR .. "src/mame/video/m62.cpp",
+ MAME_DIR .. "src/mame/drivers/spartanxtec.cpp",
+ MAME_DIR .. "src/mame/drivers/m63.cpp",
+ MAME_DIR .. "src/mame/drivers/m72.cpp",
+ MAME_DIR .. "src/mame/includes/m72.h",
+ MAME_DIR .. "src/mame/audio/m72.cpp",
+ MAME_DIR .. "src/mame/audio/m72.h",
+ MAME_DIR .. "src/mame/video/m72.cpp",
+ MAME_DIR .. "src/mame/drivers/m90.cpp",
+ MAME_DIR .. "src/mame/includes/m90.h",
+ MAME_DIR .. "src/mame/video/m90.cpp",
+ MAME_DIR .. "src/mame/drivers/m92.cpp",
+ MAME_DIR .. "src/mame/includes/m92.h",
+ MAME_DIR .. "src/mame/video/m92.cpp",
+ MAME_DIR .. "src/mame/drivers/m107.cpp",
+ MAME_DIR .. "src/mame/includes/m107.h",
+ MAME_DIR .. "src/mame/video/m107.cpp",
+ MAME_DIR .. "src/mame/includes/iremipt.h",
+ MAME_DIR .. "src/mame/drivers/olibochu.cpp",
+ MAME_DIR .. "src/mame/drivers/redalert.cpp",
+ MAME_DIR .. "src/mame/includes/redalert.h",
+ MAME_DIR .. "src/mame/audio/redalert.cpp",
+ MAME_DIR .. "src/mame/audio/redalert.h",
+ MAME_DIR .. "src/mame/video/redalert.cpp",
+ MAME_DIR .. "src/mame/drivers/shisen.cpp",
+ MAME_DIR .. "src/mame/includes/shisen.h",
+ MAME_DIR .. "src/mame/video/shisen.cpp",
+ MAME_DIR .. "src/mame/drivers/travrusa.cpp",
+ MAME_DIR .. "src/mame/includes/travrusa.h",
+ MAME_DIR .. "src/mame/video/travrusa.cpp",
+ MAME_DIR .. "src/mame/drivers/vigilant.cpp",
+ MAME_DIR .. "src/mame/includes/vigilant.h",
+ MAME_DIR .. "src/mame/video/vigilant.cpp",
+ MAME_DIR .. "src/mame/machine/irem_cpu.cpp",
+ MAME_DIR .. "src/mame/machine/irem_cpu.h",
+ MAME_DIR .. "src/mame/audio/irem.cpp",
+ MAME_DIR .. "src/mame/audio/irem.h",
+ MAME_DIR .. "src/mame/audio/nl_kidniki.cpp",
+ MAME_DIR .. "src/mame/audio/nl_kidniki.h",
+}
+
+createMAMEProjects(_target, _subtarget, "itech")
+files {
+ MAME_DIR .. "src/mame/drivers/capbowl.cpp",
+ MAME_DIR .. "src/mame/includes/capbowl.h",
+ MAME_DIR .. "src/mame/video/capbowl.cpp",
+ MAME_DIR .. "src/mame/drivers/itech8.cpp",
+ MAME_DIR .. "src/mame/includes/itech8.h",
+ MAME_DIR .. "src/mame/machine/itech8.cpp",
+ MAME_DIR .. "src/mame/video/itech8.cpp",
+ MAME_DIR .. "src/mame/drivers/itech32.cpp",
+ MAME_DIR .. "src/mame/includes/itech32.h",
+ MAME_DIR .. "src/mame/video/itech32.cpp",
+ MAME_DIR .. "src/mame/drivers/iteagle.cpp",
+ MAME_DIR .. "src/mame/machine/iteagle_fpga.cpp",
+ MAME_DIR .. "src/mame/machine/iteagle_fpga.h",
+}
+
+createMAMEProjects(_target, _subtarget, "jaleco")
+files {
+ MAME_DIR .. "src/mame/drivers/aeroboto.cpp",
+ MAME_DIR .. "src/mame/includes/aeroboto.h",
+ MAME_DIR .. "src/mame/video/aeroboto.cpp",
+ MAME_DIR .. "src/mame/drivers/argus.cpp",
+ MAME_DIR .. "src/mame/includes/argus.h",
+ MAME_DIR .. "src/mame/video/argus.cpp",
+ MAME_DIR .. "src/mame/drivers/bestleag.cpp",
+ MAME_DIR .. "src/mame/drivers/bigstrkb.cpp",
+ MAME_DIR .. "src/mame/includes/bigstrkb.h",
+ MAME_DIR .. "src/mame/video/bigstrkb.cpp",
+ MAME_DIR .. "src/mame/drivers/blueprnt.cpp",
+ MAME_DIR .. "src/mame/includes/blueprnt.h",
+ MAME_DIR .. "src/mame/video/blueprnt.cpp",
+ MAME_DIR .. "src/mame/drivers/bnstars.cpp",
+ MAME_DIR .. "src/mame/drivers/cischeat.cpp",
+ MAME_DIR .. "src/mame/includes/cischeat.h",
+ MAME_DIR .. "src/mame/video/cischeat.cpp",
+ MAME_DIR .. "src/mame/drivers/citycon.cpp",
+ MAME_DIR .. "src/mame/includes/citycon.h",
+ MAME_DIR .. "src/mame/video/citycon.cpp",
+ MAME_DIR .. "src/mame/drivers/ddayjlc.cpp",
+ MAME_DIR .. "src/mame/drivers/exerion.cpp",
+ MAME_DIR .. "src/mame/includes/exerion.h",
+ MAME_DIR .. "src/mame/video/exerion.cpp",
+ MAME_DIR .. "src/mame/drivers/fcombat.cpp",
+ MAME_DIR .. "src/mame/includes/fcombat.h",
+ MAME_DIR .. "src/mame/video/fcombat.cpp",
+ MAME_DIR .. "src/mame/drivers/ginganin.cpp",
+ MAME_DIR .. "src/mame/includes/ginganin.h",
+ MAME_DIR .. "src/mame/video/ginganin.cpp",
+ MAME_DIR .. "src/mame/drivers/homerun.cpp",
+ MAME_DIR .. "src/mame/includes/homerun.h",
+ MAME_DIR .. "src/mame/video/homerun.cpp",
+ MAME_DIR .. "src/mame/drivers/megasys1.cpp",
+ MAME_DIR .. "src/mame/includes/megasys1.h",
+ MAME_DIR .. "src/mame/video/megasys1.cpp",
+ MAME_DIR .. "src/mame/drivers/momoko.cpp",
+ MAME_DIR .. "src/mame/includes/momoko.h",
+ MAME_DIR .. "src/mame/video/momoko.cpp",
+ MAME_DIR .. "src/mame/drivers/ms32.cpp",
+ MAME_DIR .. "src/mame/includes/ms32.h",
+ MAME_DIR .. "src/mame/video/ms32.cpp",
+ MAME_DIR .. "src/mame/drivers/psychic5.cpp",
+ MAME_DIR .. "src/mame/includes/psychic5.h",
+ MAME_DIR .. "src/mame/video/psychic5.cpp",
+ MAME_DIR .. "src/mame/drivers/pturn.cpp",
+ MAME_DIR .. "src/mame/drivers/skyfox.cpp",
+ MAME_DIR .. "src/mame/includes/skyfox.h",
+ MAME_DIR .. "src/mame/video/skyfox.cpp",
+ MAME_DIR .. "src/mame/drivers/tetrisp2.cpp",
+ MAME_DIR .. "src/mame/includes/tetrisp2.h",
+ MAME_DIR .. "src/mame/video/tetrisp2.cpp",
+ MAME_DIR .. "src/mame/machine/jalcrpt.cpp",
+ MAME_DIR .. "src/mame/machine/jalcrpt.h",
+ MAME_DIR .. "src/mame/video/jalblend.cpp",
+ MAME_DIR .. "src/mame/video/jalblend.h",
+ MAME_DIR .. "src/mame/video/ms1_tmap.cpp",
+ MAME_DIR .. "src/mame/video/ms1_tmap.h",
+ MAME_DIR .. "src/mame/video/ms32_sprite.cpp",
+ MAME_DIR .. "src/mame/video/ms32_sprite.h",
+ MAME_DIR .. "src/mame/machine/jaleco_ms32_sysctrl.cpp",
+ MAME_DIR .. "src/mame/machine/jaleco_ms32_sysctrl.h",
+}
+
+createMAMEProjects(_target, _subtarget, "jpm")
+files {
+ MAME_DIR .. "src/mame/drivers/guab.cpp",
+ MAME_DIR .. "src/mame/drivers/jpmsys5.cpp",
+ MAME_DIR .. "src/mame/includes/jpmsys5.h",
+ MAME_DIR .. "src/mame/drivers/jpmsys5sw.cpp",
+ MAME_DIR .. "src/mame/drivers/jpmmps.cpp",
+ MAME_DIR .. "src/mame/drivers/jpms80.cpp",
+ MAME_DIR .. "src/mame/drivers/jpmsru.cpp",
+ MAME_DIR .. "src/mame/drivers/jpmimpct.cpp",
+ MAME_DIR .. "src/mame/includes/jpmimpct.h",
+ MAME_DIR .. "src/mame/video/jpmimpct.cpp",
+ MAME_DIR .. "src/mame/drivers/jpmimpctsw.cpp",
+ MAME_DIR .. "src/mame/drivers/pluto5.cpp",
+ MAME_DIR .. "src/mame/drivers/jpmsys7.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "kaneko")
+files {
+ MAME_DIR .. "src/mame/drivers/airbustr.cpp",
+ MAME_DIR .. "src/mame/includes/airbustr.h",
+ MAME_DIR .. "src/mame/video/airbustr.cpp",
+ MAME_DIR .. "src/mame/drivers/djboy.cpp",
+ MAME_DIR .. "src/mame/includes/djboy.h",
+ MAME_DIR .. "src/mame/video/djboy.cpp",
+ MAME_DIR .. "src/mame/drivers/expro02.cpp",
+ MAME_DIR .. "src/mame/drivers/galpanic.cpp",
+ MAME_DIR .. "src/mame/drivers/galpanic_ms.cpp",
+ MAME_DIR .. "src/mame/includes/galpnipt.h",
+ MAME_DIR .. "src/mame/includes/galpanic.h",
+ MAME_DIR .. "src/mame/video/galpanic.cpp",
+ MAME_DIR .. "src/mame/drivers/galpani2.cpp",
+ MAME_DIR .. "src/mame/includes/galpani2.h",
+ MAME_DIR .. "src/mame/video/galpani2.cpp",
+ MAME_DIR .. "src/mame/drivers/galpani3.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_grap2.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_grap2.h",
+ MAME_DIR .. "src/mame/drivers/hvyunit.cpp",
+ MAME_DIR .. "src/mame/drivers/jchan.cpp",
+ MAME_DIR .. "src/mame/drivers/kaneko16.cpp",
+ MAME_DIR .. "src/mame/includes/kaneko16.h",
+ MAME_DIR .. "src/mame/video/kaneko16.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_tmap.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_tmap.h",
+ MAME_DIR .. "src/mame/video/kaneko_spr.cpp",
+ MAME_DIR .. "src/mame/video/kaneko_spr.h",
+ MAME_DIR .. "src/mame/machine/kaneko_hit.cpp",
+ MAME_DIR .. "src/mame/machine/kaneko_hit.h",
+ MAME_DIR .. "src/mame/machine/kaneko_calc3.cpp",
+ MAME_DIR .. "src/mame/machine/kaneko_calc3.h",
+ MAME_DIR .. "src/mame/machine/kaneko_toybox.cpp",
+ MAME_DIR .. "src/mame/machine/kaneko_toybox.h",
+ MAME_DIR .. "src/mame/drivers/sandscrp.cpp",
+ MAME_DIR .. "src/mame/drivers/suprnova.cpp",
+ MAME_DIR .. "src/mame/includes/suprnova.h",
+ MAME_DIR .. "src/mame/video/suprnova.cpp",
+ MAME_DIR .. "src/mame/video/sknsspr.cpp",
+ MAME_DIR .. "src/mame/video/sknsspr.h",
+}
+
+createMAMEProjects(_target, _subtarget, "kiwako")
+files {
+ MAME_DIR .. "src/mame/drivers/jongkyo.cpp",
+ MAME_DIR .. "src/mame/drivers/koikoi.cpp",
+ MAME_DIR .. "src/mame/drivers/mrjong.cpp",
+ MAME_DIR .. "src/mame/includes/mrjong.h",
+ MAME_DIR .. "src/mame/video/mrjong.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "konami")
+files {
+ MAME_DIR .. "src/mame/drivers/88games.cpp",
+ MAME_DIR .. "src/mame/includes/88games.h",
+ MAME_DIR .. "src/mame/video/88games.cpp",
+ MAME_DIR .. "src/mame/drivers/ajax.cpp",
+ MAME_DIR .. "src/mame/includes/ajax.h",
+ MAME_DIR .. "src/mame/machine/ajax.cpp",
+ MAME_DIR .. "src/mame/video/ajax.cpp",
+ MAME_DIR .. "src/mame/drivers/aliens.cpp",
+ MAME_DIR .. "src/mame/includes/aliens.h",
+ MAME_DIR .. "src/mame/video/aliens.cpp",
+ MAME_DIR .. "src/mame/drivers/asterix.cpp",
+ MAME_DIR .. "src/mame/includes/asterix.h",
+ MAME_DIR .. "src/mame/video/asterix.cpp",
+ MAME_DIR .. "src/mame/drivers/battlnts.cpp",
+ MAME_DIR .. "src/mame/includes/battlnts.h",
+ MAME_DIR .. "src/mame/video/battlnts.cpp",
+ MAME_DIR .. "src/mame/drivers/bishi.cpp",
+ MAME_DIR .. "src/mame/includes/bishi.h",
+ MAME_DIR .. "src/mame/video/bishi.cpp",
+ MAME_DIR .. "src/mame/drivers/bladestl.cpp",
+ MAME_DIR .. "src/mame/includes/bladestl.h",
+ MAME_DIR .. "src/mame/video/bladestl.cpp",
+ MAME_DIR .. "src/mame/drivers/blockhl.cpp",
+ MAME_DIR .. "src/mame/drivers/bottom9.cpp",
+ MAME_DIR .. "src/mame/includes/bottom9.h",
+ MAME_DIR .. "src/mame/video/bottom9.cpp",
+ MAME_DIR .. "src/mame/drivers/chqflag.cpp",
+ MAME_DIR .. "src/mame/includes/chqflag.h",
+ MAME_DIR .. "src/mame/video/chqflag.cpp",
+ MAME_DIR .. "src/mame/drivers/circusc.cpp",
+ MAME_DIR .. "src/mame/includes/circusc.h",
+ MAME_DIR .. "src/mame/video/circusc.cpp",
+ MAME_DIR .. "src/mame/drivers/cobra.cpp",
+ MAME_DIR .. "src/mame/drivers/combatsc.cpp",
+ MAME_DIR .. "src/mame/includes/combatsc.h",
+ MAME_DIR .. "src/mame/video/combatsc.cpp",
+ MAME_DIR .. "src/mame/drivers/contra.cpp",
+ MAME_DIR .. "src/mame/includes/contra.h",
+ MAME_DIR .. "src/mame/video/contra.cpp",
+ MAME_DIR .. "src/mame/drivers/crimfght.cpp",
+ MAME_DIR .. "src/mame/includes/crimfght.h",
+ MAME_DIR .. "src/mame/video/crimfght.cpp",
+ MAME_DIR .. "src/mame/drivers/dbz.cpp",
+ MAME_DIR .. "src/mame/includes/dbz.h",
+ MAME_DIR .. "src/mame/video/dbz.cpp",
+ MAME_DIR .. "src/mame/drivers/ddribble.cpp",
+ MAME_DIR .. "src/mame/includes/ddribble.h",
+ MAME_DIR .. "src/mame/video/ddribble.cpp",
+ MAME_DIR .. "src/mame/drivers/divebomb.cpp",
+ MAME_DIR .. "src/mame/includes/divebomb.h",
+ MAME_DIR .. "src/mame/video/divebomb.cpp",
+ MAME_DIR .. "src/mame/drivers/djmain.cpp",
+ MAME_DIR .. "src/mame/includes/djmain.h",
+ MAME_DIR .. "src/mame/video/djmain.cpp",
+ MAME_DIR .. "src/mame/drivers/fastfred.cpp",
+ MAME_DIR .. "src/mame/includes/fastfred.h",
+ MAME_DIR .. "src/mame/video/fastfred.cpp",
+ MAME_DIR .. "src/mame/drivers/fastlane.cpp",
+ MAME_DIR .. "src/mame/includes/fastlane.h",
+ MAME_DIR .. "src/mame/video/fastlane.cpp",
+ MAME_DIR .. "src/mame/drivers/finalizr.cpp",
+ MAME_DIR .. "src/mame/includes/finalizr.h",
+ MAME_DIR .. "src/mame/video/finalizr.cpp",
+ MAME_DIR .. "src/mame/drivers/firebeat.cpp",
+ MAME_DIR .. "src/mame/machine/midikbd.cpp",
+ MAME_DIR .. "src/mame/machine/midikbd.h",
+ MAME_DIR .. "src/mame/drivers/flkatck.cpp",
+ MAME_DIR .. "src/mame/includes/flkatck.h",
+ MAME_DIR .. "src/mame/video/flkatck.cpp",
+ MAME_DIR .. "src/mame/drivers/gberet.cpp",
+ MAME_DIR .. "src/mame/includes/gberet.h",
+ MAME_DIR .. "src/mame/video/gberet.cpp",
+ MAME_DIR .. "src/mame/drivers/giclassic.cpp",
+ MAME_DIR .. "src/mame/drivers/gijoe.cpp",
+ MAME_DIR .. "src/mame/includes/gijoe.h",
+ MAME_DIR .. "src/mame/video/gijoe.cpp",
+ MAME_DIR .. "src/mame/drivers/gradius3.cpp",
+ MAME_DIR .. "src/mame/includes/gradius3.h",
+ MAME_DIR .. "src/mame/video/gradius3.cpp",
+ MAME_DIR .. "src/mame/drivers/gticlub.cpp",
+ MAME_DIR .. "src/mame/drivers/gyruss.cpp",
+ MAME_DIR .. "src/mame/includes/gyruss.h",
+ MAME_DIR .. "src/mame/video/gyruss.cpp",
+ MAME_DIR .. "src/mame/drivers/hcastle.cpp",
+ MAME_DIR .. "src/mame/includes/hcastle.h",
+ MAME_DIR .. "src/mame/video/hcastle.cpp",
+ MAME_DIR .. "src/mame/drivers/hexion.cpp",
+ MAME_DIR .. "src/mame/includes/hexion.h",
+ MAME_DIR .. "src/mame/video/hexion.cpp",
+ MAME_DIR .. "src/mame/drivers/hornet.cpp",
+ MAME_DIR .. "src/mame/machine/konppc.cpp",
+ MAME_DIR .. "src/mame/machine/konppc.h",
+ MAME_DIR .. "src/mame/machine/konami_gn676_lan.cpp",
+ MAME_DIR .. "src/mame/machine/konami_gn676_lan.h",
+ MAME_DIR .. "src/mame/drivers/hyperspt.cpp",
+ MAME_DIR .. "src/mame/includes/hyperspt.h",
+ MAME_DIR .. "src/mame/audio/hyprolyb.cpp",
+ MAME_DIR .. "src/mame/audio/hyprolyb.h",
+ MAME_DIR .. "src/mame/video/hyperspt.cpp",
+ MAME_DIR .. "src/mame/drivers/ironhors.cpp",
+ MAME_DIR .. "src/mame/includes/ironhors.h",
+ MAME_DIR .. "src/mame/video/ironhors.cpp",
+ MAME_DIR .. "src/mame/drivers/jackal.cpp",
+ MAME_DIR .. "src/mame/includes/jackal.h",
+ MAME_DIR .. "src/mame/video/jackal.cpp",
+ MAME_DIR .. "src/mame/drivers/jailbrek.cpp",
+ MAME_DIR .. "src/mame/includes/jailbrek.h",
+ MAME_DIR .. "src/mame/video/jailbrek.cpp",
+ MAME_DIR .. "src/mame/drivers/junofrst.cpp",
+ MAME_DIR .. "src/mame/drivers/konamigq.cpp",
+ MAME_DIR .. "src/mame/drivers/konamigs.cpp",
+ MAME_DIR .. "src/mame/drivers/konamigv.cpp",
+ MAME_DIR .. "src/mame/drivers/konamigx.cpp",
+ MAME_DIR .. "src/mame/includes/konamigx.h",
+ MAME_DIR .. "src/mame/machine/konamigx.cpp",
+ MAME_DIR .. "src/mame/video/konamigx.cpp",
+ MAME_DIR .. "src/mame/drivers/konamim2.cpp",
+ MAME_DIR .. "src/mame/machine/3dom2.cpp",
+ MAME_DIR .. "src/mame/machine/3dom2.h",
+ MAME_DIR .. "src/mame/video/3dom2_te.cpp",
+ MAME_DIR .. "src/mame/video/3dom2_te.h",
+ MAME_DIR .. "src/mame/drivers/konblands.cpp",
+ MAME_DIR .. "src/mame/drivers/kongs470.cpp",
+ MAME_DIR .. "src/mame/drivers/konmedal.cpp",
+ MAME_DIR .. "src/mame/drivers/konmedal020.cpp",
+ MAME_DIR .. "src/mame/drivers/konmedal68k.cpp",
+ MAME_DIR .. "src/mame/drivers/kontest.cpp",
+ MAME_DIR .. "src/mame/drivers/konendev.cpp",
+ MAME_DIR .. "src/mame/drivers/kpontoon.cpp",
+ MAME_DIR .. "src/mame/drivers/kpython.cpp",
+ MAME_DIR .. "src/mame/drivers/ksys573.cpp",
+ MAME_DIR .. "src/mame/machine/k573cass.cpp",
+ MAME_DIR .. "src/mame/machine/k573cass.h",
+ MAME_DIR .. "src/mame/machine/k573dio.cpp",
+ MAME_DIR .. "src/mame/machine/k573dio.h",
+ MAME_DIR .. "src/mame/machine/k573fpga.cpp",
+ MAME_DIR .. "src/mame/machine/k573fpga.h",
+ MAME_DIR .. "src/mame/machine/k573kara.cpp",
+ MAME_DIR .. "src/mame/machine/k573kara.h",
+ MAME_DIR .. "src/mame/machine/k573mcr.cpp",
+ MAME_DIR .. "src/mame/machine/k573mcr.h",
+ MAME_DIR .. "src/mame/machine/k573msu.cpp",
+ MAME_DIR .. "src/mame/machine/k573msu.h",
+ MAME_DIR .. "src/mame/machine/k573npu.cpp",
+ MAME_DIR .. "src/mame/machine/k573npu.h",
+ MAME_DIR .. "src/mame/machine/k007452.cpp",
+ MAME_DIR .. "src/mame/machine/k007452.h",
+ MAME_DIR .. "src/mame/machine/zs01.cpp",
+ MAME_DIR .. "src/mame/machine/zs01.h",
+ MAME_DIR .. "src/mame/drivers/labyrunr.cpp",
+ MAME_DIR .. "src/mame/includes/labyrunr.h",
+ MAME_DIR .. "src/mame/video/labyrunr.cpp",
+ MAME_DIR .. "src/mame/drivers/lethal.cpp",
+ MAME_DIR .. "src/mame/includes/lethal.h",
+ MAME_DIR .. "src/mame/video/lethal.cpp",
+ MAME_DIR .. "src/mame/drivers/mainevt.cpp",
+ MAME_DIR .. "src/mame/includes/mainevt.h",
+ MAME_DIR .. "src/mame/video/mainevt.cpp",
+ MAME_DIR .. "src/mame/drivers/megazone.cpp",
+ MAME_DIR .. "src/mame/includes/megazone.h",
+ MAME_DIR .. "src/mame/video/megazone.cpp",
+ MAME_DIR .. "src/mame/drivers/mikie.cpp",
+ MAME_DIR .. "src/mame/includes/mikie.h",
+ MAME_DIR .. "src/mame/video/mikie.cpp",
+ MAME_DIR .. "src/mame/drivers/mogura.cpp",
+ MAME_DIR .. "src/mame/drivers/moo.cpp",
+ MAME_DIR .. "src/mame/includes/moo.h",
+ MAME_DIR .. "src/mame/video/moo.cpp",
+ MAME_DIR .. "src/mame/drivers/mystwarr.cpp",
+ MAME_DIR .. "src/mame/includes/mystwarr.h",
+ MAME_DIR .. "src/mame/video/mystwarr.cpp",
+ MAME_DIR .. "src/mame/drivers/nemesis.cpp",
+ MAME_DIR .. "src/mame/includes/nemesis.h",
+ MAME_DIR .. "src/mame/video/nemesis.cpp",
+ MAME_DIR .. "src/mame/drivers/nwk-tr.cpp",
+ MAME_DIR .. "src/mame/drivers/otomedius.cpp",
+ MAME_DIR .. "src/mame/drivers/overdriv.cpp",
+ MAME_DIR .. "src/mame/includes/overdriv.h",
+ MAME_DIR .. "src/mame/video/overdriv.cpp",
+ MAME_DIR .. "src/mame/drivers/pandoras.cpp",
+ MAME_DIR .. "src/mame/includes/pandoras.h",
+ MAME_DIR .. "src/mame/video/pandoras.cpp",
+ MAME_DIR .. "src/mame/drivers/parodius.cpp",
+ MAME_DIR .. "src/mame/includes/parodius.h",
+ MAME_DIR .. "src/mame/video/parodius.cpp",
+ MAME_DIR .. "src/mame/drivers/pingpong.cpp",
+ MAME_DIR .. "src/mame/includes/pingpong.h",
+ MAME_DIR .. "src/mame/video/pingpong.cpp",
+ MAME_DIR .. "src/mame/drivers/piratesh.cpp",
+ MAME_DIR .. "src/mame/drivers/plygonet.cpp",
+ MAME_DIR .. "src/mame/includes/plygonet.h",
+ MAME_DIR .. "src/mame/video/plygonet.cpp",
+ MAME_DIR .. "src/mame/drivers/pooyan.cpp",
+ MAME_DIR .. "src/mame/includes/pooyan.h",
+ MAME_DIR .. "src/mame/video/pooyan.cpp",
+ MAME_DIR .. "src/mame/drivers/qdrmfgp.cpp",
+ MAME_DIR .. "src/mame/includes/qdrmfgp.h",
+ MAME_DIR .. "src/mame/video/qdrmfgp.cpp",
+ MAME_DIR .. "src/mame/drivers/quickpick5.cpp",
+ MAME_DIR .. "src/mame/drivers/rockrage.cpp",
+ MAME_DIR .. "src/mame/includes/rockrage.h",
+ MAME_DIR .. "src/mame/video/rockrage.cpp",
+ MAME_DIR .. "src/mame/drivers/rocnrope.cpp",
+ MAME_DIR .. "src/mame/includes/rocnrope.h",
+ MAME_DIR .. "src/mame/video/rocnrope.cpp",
+ MAME_DIR .. "src/mame/drivers/rollerg.cpp",
+ MAME_DIR .. "src/mame/includes/rollerg.h",
+ MAME_DIR .. "src/mame/video/rollerg.cpp",
+ MAME_DIR .. "src/mame/drivers/rungun.cpp",
+ MAME_DIR .. "src/mame/includes/rungun.h",
+ MAME_DIR .. "src/mame/video/rungun.cpp",
+ MAME_DIR .. "src/mame/drivers/sbasketb.cpp",
+ MAME_DIR .. "src/mame/includes/sbasketb.h",
+ MAME_DIR .. "src/mame/video/sbasketb.cpp",
+ MAME_DIR .. "src/mame/drivers/scobra.cpp",
+ MAME_DIR .. "src/mame/drivers/scotrsht.cpp",
+ MAME_DIR .. "src/mame/includes/scotrsht.h",
+ MAME_DIR .. "src/mame/video/scotrsht.cpp",
+ MAME_DIR .. "src/mame/drivers/scramble.cpp",
+ MAME_DIR .. "src/mame/includes/scramble.h",
+ MAME_DIR .. "src/mame/machine/scramble.cpp",
+ MAME_DIR .. "src/mame/audio/scramble.cpp",
+ MAME_DIR .. "src/mame/drivers/shaolins.cpp",
+ MAME_DIR .. "src/mame/includes/shaolins.h",
+ MAME_DIR .. "src/mame/video/shaolins.cpp",
+ MAME_DIR .. "src/mame/drivers/simpsons.cpp",
+ MAME_DIR .. "src/mame/includes/simpsons.h",
+ MAME_DIR .. "src/mame/machine/simpsons.cpp",
+ MAME_DIR .. "src/mame/video/simpsons.cpp",
+ MAME_DIR .. "src/mame/drivers/spy.cpp",
+ MAME_DIR .. "src/mame/includes/spy.h",
+ MAME_DIR .. "src/mame/video/spy.cpp",
+ MAME_DIR .. "src/mame/drivers/surpratk.cpp",
+ MAME_DIR .. "src/mame/includes/surpratk.h",
+ MAME_DIR .. "src/mame/video/surpratk.cpp",
+ MAME_DIR .. "src/mame/drivers/tasman.cpp",
+ MAME_DIR .. "src/mame/drivers/tgtpanic.cpp",
+ MAME_DIR .. "src/mame/drivers/thunderx.cpp",
+ MAME_DIR .. "src/mame/includes/thunderx.h",
+ MAME_DIR .. "src/mame/video/thunderx.cpp",
+ MAME_DIR .. "src/mame/drivers/timeplt.cpp",
+ MAME_DIR .. "src/mame/includes/timeplt.h",
+ MAME_DIR .. "src/mame/audio/timeplt.cpp",
+ MAME_DIR .. "src/mame/audio/timeplt.h",
+ MAME_DIR .. "src/mame/video/timeplt.cpp",
+ MAME_DIR .. "src/mame/drivers/tmnt.cpp",
+ MAME_DIR .. "src/mame/includes/tmnt.h",
+ MAME_DIR .. "src/mame/video/tmnt.cpp",
+ MAME_DIR .. "src/mame/drivers/tp84.cpp",
+ MAME_DIR .. "src/mame/includes/tp84.h",
+ MAME_DIR .. "src/mame/video/tp84.cpp",
+ MAME_DIR .. "src/mame/drivers/trackfld.cpp",
+ MAME_DIR .. "src/mame/includes/trackfld.h",
+ MAME_DIR .. "src/mame/machine/konami1.cpp",
+ MAME_DIR .. "src/mame/machine/konami1.h",
+ MAME_DIR .. "src/mame/audio/trackfld.cpp",
+ MAME_DIR .. "src/mame/audio/trackfld.h",
+ MAME_DIR .. "src/mame/video/trackfld.cpp",
+ MAME_DIR .. "src/mame/drivers/tutankhm.cpp",
+ MAME_DIR .. "src/mame/includes/tutankhm.h",
+ MAME_DIR .. "src/mame/video/tutankhm.cpp",
+ MAME_DIR .. "src/mame/drivers/twin16.cpp",
+ MAME_DIR .. "src/mame/includes/twin16.h",
+ MAME_DIR .. "src/mame/video/twin16.cpp",
+ MAME_DIR .. "src/mame/drivers/twinkle.cpp",
+ MAME_DIR .. "src/mame/drivers/ultrsprt.cpp",
+ MAME_DIR .. "src/mame/drivers/ultraman.cpp",
+ MAME_DIR .. "src/mame/includes/ultraman.h",
+ MAME_DIR .. "src/mame/video/ultraman.cpp",
+ MAME_DIR .. "src/mame/drivers/vendetta.cpp",
+ MAME_DIR .. "src/mame/includes/vendetta.h",
+ MAME_DIR .. "src/mame/video/vendetta.cpp",
+ MAME_DIR .. "src/mame/drivers/viper.cpp",
+ MAME_DIR .. "src/mame/drivers/wecleman.cpp",
+ MAME_DIR .. "src/mame/includes/wecleman.h",
+ MAME_DIR .. "src/mame/video/wecleman.cpp",
+ MAME_DIR .. "src/mame/drivers/xexex.cpp",
+ MAME_DIR .. "src/mame/includes/xexex.h",
+ MAME_DIR .. "src/mame/video/xexex.cpp",
+ MAME_DIR .. "src/mame/drivers/xmen.cpp",
+ MAME_DIR .. "src/mame/includes/xmen.h",
+ MAME_DIR .. "src/mame/video/xmen.cpp",
+ MAME_DIR .. "src/mame/drivers/yiear.cpp",
+ MAME_DIR .. "src/mame/includes/yiear.h",
+ MAME_DIR .. "src/mame/video/yiear.cpp",
+ MAME_DIR .. "src/mame/drivers/zr107.cpp",
+ MAME_DIR .. "src/mame/includes/konamipt.h",
+ MAME_DIR .. "src/mame/video/konami_helper.cpp",
+ MAME_DIR .. "src/mame/video/konami_helper.h",
+ MAME_DIR .. "src/mame/video/k007121.cpp",
+ MAME_DIR .. "src/mame/video/k007121.h",
+ MAME_DIR .. "src/mame/video/k007342.cpp",
+ MAME_DIR .. "src/mame/video/k007342.h",
+ MAME_DIR .. "src/mame/video/k007420.cpp",
+ MAME_DIR .. "src/mame/video/k007420.h",
+ MAME_DIR .. "src/mame/video/k037122.cpp",
+ MAME_DIR .. "src/mame/video/k037122.h",
+ MAME_DIR .. "src/mame/video/k051316.cpp",
+ MAME_DIR .. "src/mame/video/k051316.h",
+ MAME_DIR .. "src/mame/video/k051733.cpp",
+ MAME_DIR .. "src/mame/video/k051733.h",
+ MAME_DIR .. "src/mame/video/k051960.cpp",
+ MAME_DIR .. "src/mame/video/k051960.h",
+ MAME_DIR .. "src/mame/video/k052109.cpp",
+ MAME_DIR .. "src/mame/video/k052109.h",
+ MAME_DIR .. "src/mame/video/k053250.cpp",
+ MAME_DIR .. "src/mame/video/k053250.h",
+ MAME_DIR .. "src/mame/video/k053250_ps.cpp",
+ MAME_DIR .. "src/mame/video/k053250_ps.h",
+ MAME_DIR .. "src/mame/video/k053251.cpp",
+ MAME_DIR .. "src/mame/video/k053251.h",
+ MAME_DIR .. "src/mame/video/k054156_k054157_k056832.cpp",
+ MAME_DIR .. "src/mame/video/k054156_k054157_k056832.h",
+ MAME_DIR .. "src/mame/video/k053244_k053245.cpp",
+ MAME_DIR .. "src/mame/video/k053244_k053245.h",
+ MAME_DIR .. "src/mame/video/k053246_k053247_k055673.cpp",
+ MAME_DIR .. "src/mame/video/k053246_k053247_k055673.h",
+ MAME_DIR .. "src/mame/video/k055555.cpp",
+ MAME_DIR .. "src/mame/video/k055555.h",
+ MAME_DIR .. "src/mame/video/k054000.cpp",
+ MAME_DIR .. "src/mame/video/k054000.h",
+ MAME_DIR .. "src/mame/video/k054338.cpp",
+ MAME_DIR .. "src/mame/video/k054338.h",
+ MAME_DIR .. "src/mame/video/k053936.cpp",
+ MAME_DIR .. "src/mame/video/k053936.h",
+ MAME_DIR .. "src/mame/video/k001006.cpp",
+ MAME_DIR .. "src/mame/video/k001006.h",
+ MAME_DIR .. "src/mame/video/k001005.cpp",
+ MAME_DIR .. "src/mame/video/k001005.h",
+ MAME_DIR .. "src/mame/video/k001604.cpp",
+ MAME_DIR .. "src/mame/video/k001604.h",
+ MAME_DIR .. "src/mame/video/k057714.cpp",
+ MAME_DIR .. "src/mame/video/k057714.h",
+}
+
+createMAMEProjects(_target, _subtarget, "matic")
+files {
+ MAME_DIR .. "src/mame/drivers/barata.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "maygay")
+files {
+ MAME_DIR .. "src/mame/includes/maygay1b.h",
+ MAME_DIR .. "src/mame/drivers/maygay1b.cpp",
+ MAME_DIR .. "src/mame/drivers/maygay1bsw.cpp",
+ MAME_DIR .. "src/mame/drivers/maygayv1.cpp",
+ MAME_DIR .. "src/mame/drivers/maygayep.cpp",
+ MAME_DIR .. "src/mame/drivers/maygayew.cpp",
+ MAME_DIR .. "src/mame/drivers/mmm.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "meadows")
+files {
+ MAME_DIR .. "src/mame/drivers/lazercmd.cpp",
+ MAME_DIR .. "src/mame/includes/lazercmd.h",
+ MAME_DIR .. "src/mame/video/lazercmd.cpp",
+ MAME_DIR .. "src/mame/drivers/meadwttl.cpp",
+ MAME_DIR .. "src/mame/drivers/meadows.cpp",
+ MAME_DIR .. "src/mame/includes/meadows.h",
+ MAME_DIR .. "src/mame/audio/meadows.cpp",
+ MAME_DIR .. "src/mame/video/meadows.cpp",
+ MAME_DIR .. "src/mame/drivers/warpsped.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "merit")
+files {
+ MAME_DIR .. "src/mame/drivers/mgames.cpp",
+ MAME_DIR .. "src/mame/drivers/merit.cpp",
+ MAME_DIR .. "src/mame/drivers/merit3xx.cpp",
+ MAME_DIR .. "src/mame/drivers/meritm.cpp",
+ MAME_DIR .. "src/mame/drivers/merits.cpp",
+ MAME_DIR .. "src/mame/drivers/meritsdx.cpp",
+ MAME_DIR .. "src/mame/drivers/mtouchxl.cpp",
+ MAME_DIR .. "src/mame/drivers/pubtimed.cpp",
+ MAME_DIR .. "src/mame/machine/at.h",
+ MAME_DIR .. "src/mame/machine/at.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "metro")
+files {
+ MAME_DIR .. "src/mame/drivers/hyprduel.cpp",
+ MAME_DIR .. "src/mame/drivers/metro.cpp",
+ MAME_DIR .. "src/mame/includes/metro.h",
+ MAME_DIR .. "src/mame/video/metro.cpp",
+ MAME_DIR .. "src/mame/drivers/rabbit.cpp",
+ MAME_DIR .. "src/mame/drivers/tmmjprd.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "midcoin")
+files {
+ MAME_DIR .. "src/mame/drivers/wallc.cpp",
+ MAME_DIR .. "src/mame/drivers/wink.cpp",
+ MAME_DIR .. "src/mame/drivers/24cdjuke.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "midw8080")
+files {
+ MAME_DIR .. "src/mame/drivers/8080bw.cpp",
+ MAME_DIR .. "src/mame/includes/8080bw.h",
+ MAME_DIR .. "src/mame/audio/8080bw.cpp",
+ MAME_DIR .. "src/mame/audio/8080bw.h",
+ MAME_DIR .. "src/mame/video/8080bw.cpp",
+ MAME_DIR .. "src/mame/drivers/m79amb.cpp",
+ MAME_DIR .. "src/mame/includes/m79amb.h",
+ MAME_DIR .. "src/mame/audio/m79amb.cpp",
+ MAME_DIR .. "src/mame/drivers/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/includes/mw8080bw.h",
+ MAME_DIR .. "src/mame/machine/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/audio/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/audio/mw8080bw.h",
+ MAME_DIR .. "src/mame/audio/nl_gunfight.cpp",
+ MAME_DIR .. "src/mame/audio/nl_gunfight.h",
+ MAME_DIR .. "src/mame/audio/nl_280zzzap.cpp",
+ MAME_DIR .. "src/mame/audio/nl_280zzzap.h",
+ MAME_DIR .. "src/mame/video/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/drivers/rotaryf.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "midway")
+files {
+ MAME_DIR .. "src/mame/drivers/astrocde.cpp",
+ MAME_DIR .. "src/mame/includes/astrocde.h",
+ MAME_DIR .. "src/mame/video/astrocde.cpp",
+ MAME_DIR .. "src/mame/drivers/atlantis.cpp",
+ MAME_DIR .. "src/mame/drivers/balsente.cpp",
+ MAME_DIR .. "src/mame/includes/balsente.h",
+ MAME_DIR .. "src/mame/machine/balsente.cpp",
+ MAME_DIR .. "src/mame/video/balsente.cpp",
+ MAME_DIR .. "src/mame/drivers/gridlee.cpp",
+ MAME_DIR .. "src/mame/includes/gridlee.h",
+ MAME_DIR .. "src/mame/audio/gridlee.cpp",
+ MAME_DIR .. "src/mame/video/gridlee.cpp",
+ MAME_DIR .. "src/mame/drivers/mcr.cpp",
+ MAME_DIR .. "src/mame/includes/mcr.h",
+ MAME_DIR .. "src/mame/machine/mcr.cpp",
+ MAME_DIR .. "src/mame/video/mcr.cpp",
+ MAME_DIR .. "src/mame/drivers/mcr3.cpp",
+ MAME_DIR .. "src/mame/includes/mcr3.h",
+ MAME_DIR .. "src/mame/video/mcr3.cpp",
+ MAME_DIR .. "src/mame/drivers/spyhuntertec.cpp",
+ MAME_DIR .. "src/mame/drivers/mcr68.cpp",
+ MAME_DIR .. "src/mame/includes/mcr68.h",
+ MAME_DIR .. "src/mame/machine/mcr68.cpp",
+ MAME_DIR .. "src/mame/video/mcr68.cpp",
+ MAME_DIR .. "src/mame/drivers/zwackery.cpp",
+ MAME_DIR .. "src/mame/drivers/midqslvr.cpp",
+ MAME_DIR .. "src/mame/drivers/midtunit.cpp",
+ MAME_DIR .. "src/mame/includes/midtunit.h",
+ MAME_DIR .. "src/mame/machine/midtunit.cpp",
+ MAME_DIR .. "src/mame/video/midtunit.cpp",
+ MAME_DIR .. "src/mame/drivers/midvunit.cpp",
+ MAME_DIR .. "src/mame/includes/midvunit.h",
+ MAME_DIR .. "src/mame/video/midvunit.cpp",
+ MAME_DIR .. "src/mame/drivers/midwunit.cpp",
+ MAME_DIR .. "src/mame/includes/midwunit.h",
+ MAME_DIR .. "src/mame/machine/midwunit.cpp",
+ MAME_DIR .. "src/mame/drivers/midxunit.cpp",
+ MAME_DIR .. "src/mame/includes/midxunit.h",
+ MAME_DIR .. "src/mame/machine/midxunit.cpp",
+ MAME_DIR .. "src/mame/drivers/midyunit.cpp",
+ MAME_DIR .. "src/mame/includes/midyunit.h",
+ MAME_DIR .. "src/mame/machine/midyunit.cpp",
+ MAME_DIR .. "src/mame/video/midyunit.cpp",
+ MAME_DIR .. "src/mame/drivers/midzeus.cpp",
+ MAME_DIR .. "src/mame/includes/midzeus.h",
+ MAME_DIR .. "src/mame/video/midzeus.cpp",
+ MAME_DIR .. "src/mame/drivers/mw18w.cpp",
+ MAME_DIR .. "src/mame/drivers/mwsub.cpp",
+ MAME_DIR .. "src/mame/drivers/omegrace.cpp",
+ MAME_DIR .. "src/mame/drivers/pinball2k.cpp",
+ MAME_DIR .. "src/mame/drivers/seattle.cpp",
+ MAME_DIR .. "src/mame/drivers/sspeedr.cpp",
+ MAME_DIR .. "src/mame/includes/sspeedr.h",
+ MAME_DIR .. "src/mame/audio/nl_sspeedr.cpp",
+ MAME_DIR .. "src/mame/audio/nl_sspeedr.h",
+ MAME_DIR .. "src/mame/video/sspeedr.cpp",
+ MAME_DIR .. "src/mame/drivers/starrider.cpp",
+ MAME_DIR .. "src/mame/drivers/tmaster.cpp",
+ MAME_DIR .. "src/mame/drivers/vegas.cpp",
+ MAME_DIR .. "src/mame/drivers/wmg.cpp",
+ MAME_DIR .. "src/mame/drivers/williams.cpp",
+ MAME_DIR .. "src/mame/includes/williams.h",
+ MAME_DIR .. "src/mame/machine/williams.cpp",
+ MAME_DIR .. "src/mame/audio/williams.cpp",
+ MAME_DIR .. "src/mame/audio/williams.h",
+ MAME_DIR .. "src/mame/video/williams.cpp",
+ MAME_DIR .. "src/mame/machine/midwayic.cpp",
+ MAME_DIR .. "src/mame/machine/midwayic.h",
+ MAME_DIR .. "src/mame/audio/midway.cpp",
+ MAME_DIR .. "src/mame/audio/midway.h",
+ MAME_DIR .. "src/mame/audio/csd.cpp",
+ MAME_DIR .. "src/mame/audio/csd.h",
+ MAME_DIR .. "src/mame/audio/sente6vb.cpp",
+ MAME_DIR .. "src/mame/audio/sente6vb.h",
+}
+
+createMAMEProjects(_target, _subtarget, "mr")
+files {
+ MAME_DIR .. "src/mame/drivers/dribling.cpp",
+ MAME_DIR .. "src/mame/includes/dribling.h",
+ MAME_DIR .. "src/mame/video/dribling.cpp",
+ MAME_DIR .. "src/mame/drivers/sshot.cpp",
+ MAME_DIR .. "src/mame/drivers/subhuntr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "namco")
+files {
+ MAME_DIR .. "src/mame/drivers/20pacgal.cpp",
+ MAME_DIR .. "src/mame/includes/20pacgal.h",
+ MAME_DIR .. "src/mame/video/20pacgal.cpp",
+ MAME_DIR .. "src/mame/drivers/30test.cpp",
+ MAME_DIR .. "src/mame/drivers/baraduke.cpp",
+ MAME_DIR .. "src/mame/includes/baraduke.h",
+ MAME_DIR .. "src/mame/video/baraduke.cpp",
+ MAME_DIR .. "src/mame/drivers/cgang.cpp",
+ MAME_DIR .. "src/mame/drivers/cswat.cpp",
+ MAME_DIR .. "src/mame/drivers/dambustr.cpp",
+ MAME_DIR .. "src/mame/drivers/dangbar.cpp",
+ MAME_DIR .. "src/mame/drivers/dkmb.cpp",
+ MAME_DIR .. "src/mame/drivers/gal3.cpp",
+ MAME_DIR .. "src/mame/drivers/galaga.cpp",
+ MAME_DIR .. "src/mame/includes/galaga.h",
+ MAME_DIR .. "src/mame/audio/galaga.cpp",
+ MAME_DIR .. "src/mame/video/galaga.cpp",
+ MAME_DIR .. "src/mame/video/bosco.cpp",
+ MAME_DIR .. "src/mame/includes/bosco.h",
+ MAME_DIR .. "src/mame/video/starfield_05xx.cpp",
+ MAME_DIR .. "src/mame/video/starfield_05xx.h",
+ MAME_DIR .. "src/mame/video/digdug.cpp",
+ MAME_DIR .. "src/mame/includes/digdug.h",
+ MAME_DIR .. "src/mame/machine/xevious.cpp",
+ MAME_DIR .. "src/mame/includes/xevious.h",
+ MAME_DIR .. "src/mame/video/xevious.cpp",
+ MAME_DIR .. "src/mame/drivers/galaxian.cpp",
+ MAME_DIR .. "src/mame/includes/galaxian.h",
+ MAME_DIR .. "src/mame/drivers/galaxian_rockclim.cpp",
+ MAME_DIR .. "src/mame/audio/galaxian.cpp",
+ MAME_DIR .. "src/mame/audio/galaxian.h",
+ MAME_DIR .. "src/mame/video/galaxian.cpp",
+ MAME_DIR .. "src/mame/audio/nl_konami.h",
+ MAME_DIR .. "src/mame/audio/nl_konami.cpp",
+ MAME_DIR .. "src/mame/drivers/galaxold.cpp",
+ MAME_DIR .. "src/mame/includes/galaxold.h",
+ MAME_DIR .. "src/mame/machine/galaxold.cpp",
+ MAME_DIR .. "src/mame/video/galaxold.cpp",
+ MAME_DIR .. "src/mame/drivers/gaplus.cpp",
+ MAME_DIR .. "src/mame/includes/gaplus.h",
+ MAME_DIR .. "src/mame/machine/gaplus.cpp",
+ MAME_DIR .. "src/mame/video/gaplus.cpp",
+ MAME_DIR .. "src/mame/drivers/kungfur.cpp",
+ MAME_DIR .. "src/mame/drivers/mappy.cpp",
+ MAME_DIR .. "src/mame/includes/mappy.h",
+ MAME_DIR .. "src/mame/video/mappy.cpp",
+ MAME_DIR .. "src/mame/drivers/namcofl.cpp",
+ MAME_DIR .. "src/mame/includes/namcofl.h",
+ MAME_DIR .. "src/mame/video/namcofl.cpp",
+ MAME_DIR .. "src/mame/drivers/namcona1.cpp",
+ MAME_DIR .. "src/mame/includes/namcona1.h",
+ MAME_DIR .. "src/mame/video/namcona1.cpp",
+ MAME_DIR .. "src/mame/drivers/namconb1.cpp",
+ MAME_DIR .. "src/mame/includes/namconb1.h",
+ MAME_DIR .. "src/mame/video/namconb1.cpp",
+ MAME_DIR .. "src/mame/drivers/namcond1.cpp",
+ MAME_DIR .. "src/mame/includes/namcond1.h",
+ MAME_DIR .. "src/mame/machine/namcond1.cpp",
+ MAME_DIR .. "src/mame/video/ygv608.cpp",
+ MAME_DIR .. "src/mame/video/ygv608.h",
+ MAME_DIR .. "src/mame/drivers/namcops2.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos1.cpp",
+ MAME_DIR .. "src/mame/includes/namcos1.h",
+ MAME_DIR .. "src/mame/machine/namcos1.cpp",
+ MAME_DIR .. "src/mame/video/namcos1.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos1b.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos10.cpp",
+ MAME_DIR .. "src/mame/machine/ns10crypt.cpp",
+ MAME_DIR .. "src/mame/machine/ns10crypt.h",
+ MAME_DIR .. "src/mame/drivers/namcos11.cpp",
+ MAME_DIR .. "src/mame/machine/ns11prot.cpp",
+ MAME_DIR .. "src/mame/machine/ns11prot.h",
+ MAME_DIR .. "src/mame/drivers/namcos12.cpp",
+ MAME_DIR .. "src/mame/machine/namco_settings.cpp",
+ MAME_DIR .. "src/mame/machine/namco_settings.h",
+ MAME_DIR .. "src/mame/drivers/namcos2.cpp",
+ MAME_DIR .. "src/mame/includes/namcos2.h",
+ MAME_DIR .. "src/mame/machine/namcos2.cpp",
+ MAME_DIR .. "src/mame/video/namcos2.cpp",
+ MAME_DIR .. "src/mame/video/namco_c45road.cpp",
+ MAME_DIR .. "src/mame/video/namco_c45road.h",
+ MAME_DIR .. "src/mame/video/namco_c169roz.cpp",
+ MAME_DIR .. "src/mame/video/namco_c169roz.h",
+ MAME_DIR .. "src/mame/video/namco_c355spr.cpp",
+ MAME_DIR .. "src/mame/video/namco_c355spr.h",
+ MAME_DIR .. "src/mame/video/namco_c123tmap.cpp",
+ MAME_DIR .. "src/mame/video/namco_c123tmap.h",
+ MAME_DIR .. "src/mame/video/namcos2_sprite.cpp",
+ MAME_DIR .. "src/mame/video/namcos2_sprite.h",
+ MAME_DIR .. "src/mame/video/namcos2_roz.cpp",
+ MAME_DIR .. "src/mame/video/namcos2_roz.h",
+ MAME_DIR .. "src/mame/drivers/namcos21.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos21_de.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos21_c67.cpp",
+ MAME_DIR .. "src/mame/video/namcos21_3d.cpp",
+ MAME_DIR .. "src/mame/video/namcos21_3d.h",
+ MAME_DIR .. "src/mame/machine/namcos21_dsp.cpp",
+ MAME_DIR .. "src/mame/machine/namcos21_dsp.h",
+ MAME_DIR .. "src/mame/machine/namcos21_dsp_c67.cpp",
+ MAME_DIR .. "src/mame/machine/namcos21_dsp_c67.h",
+ MAME_DIR .. "src/mame/machine/namco_c67.cpp",
+ MAME_DIR .. "src/mame/machine/namco_c67.h",
+ MAME_DIR .. "src/mame/drivers/namcos22.cpp",
+ MAME_DIR .. "src/mame/includes/namcos22.h",
+ MAME_DIR .. "src/mame/video/namcos22.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos23.cpp",
+ MAME_DIR .. "src/mame/drivers/namcos86.cpp",
+ MAME_DIR .. "src/mame/includes/namcos86.h",
+ MAME_DIR .. "src/mame/video/namcos86.cpp",
+ MAME_DIR .. "src/mame/drivers/pacland.cpp",
+ MAME_DIR .. "src/mame/includes/pacland.h",
+ MAME_DIR .. "src/mame/video/pacland.cpp",
+ MAME_DIR .. "src/mame/drivers/polepos.cpp",
+ MAME_DIR .. "src/mame/includes/polepos.h",
+ MAME_DIR .. "src/mame/audio/polepos.cpp",
+ MAME_DIR .. "src/mame/audio/polepos.h",
+ MAME_DIR .. "src/mame/video/polepos.cpp",
+ MAME_DIR .. "src/mame/drivers/rallyx.cpp",
+ MAME_DIR .. "src/mame/includes/rallyx.h",
+ MAME_DIR .. "src/mame/video/rallyx.cpp",
+ MAME_DIR .. "src/mame/drivers/shootaway2.cpp",
+ MAME_DIR .. "src/mame/drivers/skykid.cpp",
+ MAME_DIR .. "src/mame/includes/skykid.h",
+ MAME_DIR .. "src/mame/video/skykid.cpp",
+ MAME_DIR .. "src/mame/drivers/sweetland.cpp",
+ MAME_DIR .. "src/mame/audio/nl_tankbatt.h",
+ MAME_DIR .. "src/mame/audio/nl_tankbatt.cpp",
+ MAME_DIR .. "src/mame/drivers/tankbatt.cpp",
+ MAME_DIR .. "src/mame/includes/tankbatt.h",
+ MAME_DIR .. "src/mame/video/tankbatt.cpp",
+ MAME_DIR .. "src/mame/drivers/tceptor.cpp",
+ MAME_DIR .. "src/mame/includes/tceptor.h",
+ MAME_DIR .. "src/mame/video/tceptor.cpp",
+ MAME_DIR .. "src/mame/drivers/toypop.cpp",
+ MAME_DIR .. "src/mame/drivers/turrett.cpp",
+ MAME_DIR .. "src/mame/includes/turrett.h",
+ MAME_DIR .. "src/mame/audio/turrett.cpp",
+ MAME_DIR .. "src/mame/video/turrett.cpp",
+ MAME_DIR .. "src/mame/drivers/wacky_gator.cpp",
+ MAME_DIR .. "src/mame/drivers/warpwarp.cpp",
+ MAME_DIR .. "src/mame/includes/warpwarp.h",
+ MAME_DIR .. "src/mame/audio/geebee.cpp",
+ MAME_DIR .. "src/mame/audio/geebee.h",
+ MAME_DIR .. "src/mame/audio/warpwarp.cpp",
+ MAME_DIR .. "src/mame/audio/warpwarp.h",
+ MAME_DIR .. "src/mame/video/warpwarp.cpp",
+ MAME_DIR .. "src/mame/machine/c117.cpp",
+ MAME_DIR .. "src/mame/machine/c117.h",
+ MAME_DIR .. "src/mame/machine/namcoio.cpp",
+ MAME_DIR .. "src/mame/machine/namcoio.h",
+ MAME_DIR .. "src/mame/machine/namco06.cpp",
+ MAME_DIR .. "src/mame/machine/namco06.h",
+ MAME_DIR .. "src/mame/machine/namco50.cpp",
+ MAME_DIR .. "src/mame/machine/namco50.h",
+ MAME_DIR .. "src/mame/machine/namco51.cpp",
+ MAME_DIR .. "src/mame/machine/namco51.h",
+ MAME_DIR .. "src/mame/machine/namco53.cpp",
+ MAME_DIR .. "src/mame/machine/namco53.h",
+ MAME_DIR .. "src/mame/machine/namco62.cpp",
+ MAME_DIR .. "src/mame/machine/namco62.h",
+ MAME_DIR .. "src/mame/machine/namco65.cpp",
+ MAME_DIR .. "src/mame/machine/namco65.h",
+ MAME_DIR .. "src/mame/machine/namco68.cpp",
+ MAME_DIR .. "src/mame/machine/namco68.h",
+ MAME_DIR .. "src/mame/machine/namcomcu.cpp",
+ MAME_DIR .. "src/mame/machine/namcomcu.h",
+ MAME_DIR .. "src/mame/machine/namcoio_gearbox.cpp",
+ MAME_DIR .. "src/mame/machine/namcoio_gearbox.h",
+ MAME_DIR .. "src/mame/machine/namco_c148.cpp",
+ MAME_DIR .. "src/mame/machine/namco_c148.h",
+ MAME_DIR .. "src/mame/machine/namco_c139.cpp",
+ MAME_DIR .. "src/mame/machine/namco_c139.h",
+ MAME_DIR .. "src/mame/audio/namco52.cpp",
+ MAME_DIR .. "src/mame/audio/namco52.h",
+ MAME_DIR .. "src/mame/audio/namco54.cpp",
+ MAME_DIR .. "src/mame/audio/namco54.h",
+ MAME_DIR .. "src/mame/video/namco_c116.cpp",
+ MAME_DIR .. "src/mame/video/namco_c116.h",
+}
+
+createMAMEProjects(_target, _subtarget, "nasco")
+files {
+ MAME_DIR .. "src/mame/drivers/crgolf.cpp",
+ MAME_DIR .. "src/mame/includes/crgolf.h",
+ MAME_DIR .. "src/mame/video/crgolf.cpp",
+ MAME_DIR .. "src/mame/drivers/himesiki.cpp",
+ MAME_DIR .. "src/mame/includes/himesiki.h",
+ MAME_DIR .. "src/mame/video/himesiki.cpp",
+ MAME_DIR .. "src/mame/drivers/suprgolf.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "neogeo")
+files {
+ MAME_DIR .. "src/mame/drivers/neogeo.cpp",
+ MAME_DIR .. "src/mame/includes/neogeo.h",
+ MAME_DIR .. "src/mame/video/neogeo.cpp",
+ MAME_DIR .. "src/mame/drivers/neopcb.cpp",
+ MAME_DIR .. "src/mame/video/neogeo_spr.cpp",
+ MAME_DIR .. "src/mame/video/neogeo_spr.h",
+ MAME_DIR .. "src/mame/machine/ng_memcard.cpp",
+ MAME_DIR .. "src/mame/machine/ng_memcard.h",
+}
+
+createMAMEProjects(_target, _subtarget, "nichibut")
+files {
+ MAME_DIR .. "src/mame/drivers/armedf.cpp",
+ MAME_DIR .. "src/mame/includes/armedf.h",
+ MAME_DIR .. "src/mame/video/armedf.cpp",
+ MAME_DIR .. "src/mame/drivers/cclimber.cpp",
+ MAME_DIR .. "src/mame/includes/cclimber.h",
+ MAME_DIR .. "src/mame/machine/cclimber.cpp",
+ MAME_DIR .. "src/mame/audio/cclimber.cpp",
+ MAME_DIR .. "src/mame/audio/cclimber.h",
+ MAME_DIR .. "src/mame/video/cclimber.cpp",
+ MAME_DIR .. "src/mame/drivers/clshroad.cpp",
+ MAME_DIR .. "src/mame/includes/clshroad.h",
+ MAME_DIR .. "src/mame/video/clshroad.cpp",
+ MAME_DIR .. "src/mame/drivers/csplayh5.cpp",
+ MAME_DIR .. "src/mame/drivers/cop01.cpp",
+ MAME_DIR .. "src/mame/includes/cop01.h",
+ MAME_DIR .. "src/mame/video/cop01.cpp",
+ MAME_DIR .. "src/mame/drivers/dacholer.cpp",
+ MAME_DIR .. "src/mame/drivers/galivan.cpp",
+ MAME_DIR .. "src/mame/includes/galivan.h",
+ MAME_DIR .. "src/mame/video/galivan.cpp",
+ MAME_DIR .. "src/mame/drivers/gomoku.cpp",
+ MAME_DIR .. "src/mame/includes/gomoku.h",
+ MAME_DIR .. "src/mame/audio/gomoku.cpp",
+ MAME_DIR .. "src/mame/audio/gomoku.h",
+ MAME_DIR .. "src/mame/video/gomoku.cpp",
+ MAME_DIR .. "src/mame/drivers/hyhoo.cpp",
+ MAME_DIR .. "src/mame/includes/hyhoo.h",
+ MAME_DIR .. "src/mame/video/hyhoo.cpp",
+ MAME_DIR .. "src/mame/drivers/jangou.cpp",
+ MAME_DIR .. "src/mame/drivers/magmax.cpp",
+ MAME_DIR .. "src/mame/includes/magmax.h",
+ MAME_DIR .. "src/mame/video/magmax.cpp",
+ MAME_DIR .. "src/mame/drivers/nbmj8688.cpp",
+ MAME_DIR .. "src/mame/includes/nbmj8688.h",
+ MAME_DIR .. "src/mame/video/nbmj8688.cpp",
+ MAME_DIR .. "src/mame/drivers/nbmj8891.cpp",
+ MAME_DIR .. "src/mame/includes/nbmj8891.h",
+ MAME_DIR .. "src/mame/video/nbmj8891.cpp",
+ MAME_DIR .. "src/mame/drivers/nbmj8900.cpp",
+ MAME_DIR .. "src/mame/includes/nbmj8900.h",
+ MAME_DIR .. "src/mame/video/nbmj8900.cpp",
+ MAME_DIR .. "src/mame/drivers/nbmj8991.cpp",
+ MAME_DIR .. "src/mame/includes/nbmj8991.h",
+ MAME_DIR .. "src/mame/video/nbmj8991.cpp",
+ MAME_DIR .. "src/mame/drivers/nbmj9195.cpp",
+ MAME_DIR .. "src/mame/includes/nbmj9195.h",
+ MAME_DIR .. "src/mame/video/nbmj9195.cpp",
+ MAME_DIR .. "src/mame/drivers/nightgal.cpp",
+ MAME_DIR .. "src/mame/drivers/nichild.cpp",
+ MAME_DIR .. "src/mame/audio/nichisnd.cpp",
+ MAME_DIR .. "src/mame/audio/nichisnd.h",
+ MAME_DIR .. "src/mame/drivers/niyanpai.cpp",
+ MAME_DIR .. "src/mame/includes/niyanpai.h",
+ MAME_DIR .. "src/mame/video/niyanpai.cpp",
+ MAME_DIR .. "src/mame/drivers/pastelg.cpp",
+ MAME_DIR .. "src/mame/includes/pastelg.h",
+ MAME_DIR .. "src/mame/video/pastelg.cpp",
+ MAME_DIR .. "src/mame/drivers/seicross.cpp",
+ MAME_DIR .. "src/mame/includes/seicross.h",
+ MAME_DIR .. "src/mame/video/seicross.cpp",
+ MAME_DIR .. "src/mame/drivers/terracre.cpp",
+ MAME_DIR .. "src/mame/includes/terracre.h",
+ MAME_DIR .. "src/mame/video/terracre.cpp",
+ MAME_DIR .. "src/mame/drivers/tubep.cpp",
+ MAME_DIR .. "src/mame/includes/tubep.h",
+ MAME_DIR .. "src/mame/video/tubep.cpp",
+ MAME_DIR .. "src/mame/drivers/wiping.cpp",
+ MAME_DIR .. "src/mame/includes/wiping.h",
+ MAME_DIR .. "src/mame/audio/wiping.cpp",
+ MAME_DIR .. "src/mame/audio/wiping.h",
+ MAME_DIR .. "src/mame/video/wiping.cpp",
+ MAME_DIR .. "src/mame/machine/nb1412m2.cpp",
+ MAME_DIR .. "src/mame/machine/nb1412m2.h",
+ MAME_DIR .. "src/mame/machine/nb1413m3.cpp",
+ MAME_DIR .. "src/mame/machine/nb1413m3.h",
+ MAME_DIR .. "src/mame/machine/nb1414m4.cpp",
+ MAME_DIR .. "src/mame/machine/nb1414m4.h",
+}
+
+createMAMEProjects(_target, _subtarget, "nintendo")
+files {
+ MAME_DIR .. "src/mame/drivers/cham24.cpp",
+ MAME_DIR .. "src/mame/drivers/dkong.cpp",
+ MAME_DIR .. "src/mame/includes/dkong.h",
+ MAME_DIR .. "src/mame/audio/dkong.cpp",
+ MAME_DIR .. "src/mame/video/dkong.cpp",
+ MAME_DIR .. "src/mame/drivers/mario.cpp",
+ MAME_DIR .. "src/mame/includes/mario.h",
+ MAME_DIR .. "src/mame/audio/nl_mario.cpp",
+ MAME_DIR .. "src/mame/audio/nl_mario.h",
+ MAME_DIR .. "src/mame/audio/mario.cpp",
+ MAME_DIR .. "src/mame/video/mario.cpp",
+ MAME_DIR .. "src/mame/drivers/mmagic.cpp",
+ MAME_DIR .. "src/mame/drivers/multigam.cpp",
+ MAME_DIR .. "src/mame/drivers/n8080.cpp",
+ MAME_DIR .. "src/mame/includes/n8080.h",
+ MAME_DIR .. "src/mame/audio/n8080.cpp",
+ MAME_DIR .. "src/mame/video/n8080.cpp",
+ MAME_DIR .. "src/mame/drivers/nss.cpp",
+ MAME_DIR .. "src/mame/machine/snes.cpp",
+ MAME_DIR .. "src/mame/drivers/playch10.cpp",
+ MAME_DIR .. "src/mame/includes/playch10.h",
+ MAME_DIR .. "src/mame/machine/playch10.cpp",
+ MAME_DIR .. "src/mame/video/playch10.cpp",
+ MAME_DIR .. "src/mame/drivers/popeye.cpp",
+ MAME_DIR .. "src/mame/includes/popeye.h",
+ MAME_DIR .. "src/mame/video/popeye.cpp",
+ MAME_DIR .. "src/mame/audio/nl_popeye.cpp",
+ MAME_DIR .. "src/mame/audio/nl_popeye.h",
+ MAME_DIR .. "src/mame/drivers/punchout.cpp",
+ MAME_DIR .. "src/mame/includes/punchout.h",
+ MAME_DIR .. "src/mame/video/punchout.cpp",
+ MAME_DIR .. "src/mame/drivers/famibox.cpp",
+ MAME_DIR .. "src/mame/drivers/sfcbox.cpp",
+ MAME_DIR .. "src/mame/drivers/snesb51.cpp",
+ MAME_DIR .. "src/mame/drivers/snesb.cpp",
+ MAME_DIR .. "src/mame/drivers/spacefb.cpp",
+ MAME_DIR .. "src/mame/includes/spacefb.h",
+ MAME_DIR .. "src/mame/audio/spacefb.cpp",
+ MAME_DIR .. "src/mame/video/spacefb.cpp",
+ MAME_DIR .. "src/mame/drivers/vsnes.cpp",
+ MAME_DIR .. "src/mame/includes/vsnes.h",
+ MAME_DIR .. "src/mame/machine/vsnes.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "nix")
+files {
+ MAME_DIR .. "src/mame/drivers/fitfight.cpp",
+ MAME_DIR .. "src/mame/includes/fitfight.h",
+ MAME_DIR .. "src/mame/video/fitfight.cpp",
+ MAME_DIR .. "src/mame/drivers/pirates.cpp",
+ MAME_DIR .. "src/mame/includes/pirates.h",
+ MAME_DIR .. "src/mame/video/pirates.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "nmk")
+files {
+ MAME_DIR .. "src/mame/drivers/acommand.cpp",
+ MAME_DIR .. "src/mame/drivers/cultures.cpp",
+ MAME_DIR .. "src/mame/drivers/ddealer.cpp",
+ MAME_DIR .. "src/mame/drivers/jalmah.cpp",
+ MAME_DIR .. "src/mame/drivers/macrossp.cpp",
+ MAME_DIR .. "src/mame/includes/macrossp.h",
+ MAME_DIR .. "src/mame/video/macrossp.cpp",
+ MAME_DIR .. "src/mame/drivers/nmk16.cpp",
+ MAME_DIR .. "src/mame/includes/nmk16.h",
+ MAME_DIR .. "src/mame/machine/nmk004.cpp",
+ MAME_DIR .. "src/mame/machine/nmk004.h",
+ MAME_DIR .. "src/mame/video/nmk16.cpp",
+ MAME_DIR .. "src/mame/video/nmk16spr.cpp",
+ MAME_DIR .. "src/mame/video/nmk16spr.h",
+ MAME_DIR .. "src/mame/drivers/nmkmedal.cpp",
+ MAME_DIR .. "src/mame/drivers/powerins.cpp",
+ MAME_DIR .. "src/mame/includes/powerins.h",
+ MAME_DIR .. "src/mame/video/powerins.cpp",
+ MAME_DIR .. "src/mame/drivers/quizdna.cpp",
+ MAME_DIR .. "src/mame/includes/quizdna.h",
+ MAME_DIR .. "src/mame/video/quizdna.cpp",
+ MAME_DIR .. "src/mame/drivers/quizpani.cpp",
+ MAME_DIR .. "src/mame/includes/quizpani.h",
+ MAME_DIR .. "src/mame/video/quizpani.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "olympia")
+files {
+ MAME_DIR .. "src/mame/drivers/dday.cpp",
+ MAME_DIR .. "src/mame/includes/dday.h",
+ MAME_DIR .. "src/mame/video/dday.cpp",
+ MAME_DIR .. "src/mame/drivers/lbeach.cpp",
+ MAME_DIR .. "src/mame/drivers/monzagp.cpp",
+ MAME_DIR .. "src/mame/drivers/portrait.cpp",
+ MAME_DIR .. "src/mame/includes/portrait.h",
+ MAME_DIR .. "src/mame/video/portrait.cpp",
+ MAME_DIR .. "src/mame/drivers/vega.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "omori")
+files {
+ MAME_DIR .. "src/mame/drivers/battlex.cpp",
+ MAME_DIR .. "src/mame/includes/battlex.h",
+ MAME_DIR .. "src/mame/video/battlex.cpp",
+ MAME_DIR .. "src/mame/drivers/carjmbre.cpp",
+ MAME_DIR .. "src/mame/drivers/popper.cpp",
+ MAME_DIR .. "src/mame/drivers/spaceg.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "orca")
+files {
+ MAME_DIR .. "src/mame/drivers/espial.cpp",
+ MAME_DIR .. "src/mame/includes/espial.h",
+ MAME_DIR .. "src/mame/video/espial.cpp",
+ MAME_DIR .. "src/mame/drivers/funkybee.cpp",
+ MAME_DIR .. "src/mame/includes/funkybee.h",
+ MAME_DIR .. "src/mame/video/funkybee.cpp",
+ MAME_DIR .. "src/mame/drivers/marineb.cpp",
+ MAME_DIR .. "src/mame/includes/marineb.h",
+ MAME_DIR .. "src/mame/video/marineb.cpp",
+ MAME_DIR .. "src/mame/video/orca40c.cpp",
+ MAME_DIR .. "src/mame/video/orca40c.h",
+ MAME_DIR .. "src/mame/drivers/vastar.cpp",
+ MAME_DIR .. "src/mame/includes/vastar.h",
+ MAME_DIR .. "src/mame/video/vastar.cpp",
+ MAME_DIR .. "src/mame/drivers/zodiack.cpp",
+ MAME_DIR .. "src/mame/includes/zodiack.h",
+}
+
+createMAMEProjects(_target, _subtarget, "pacific")
+files {
+ MAME_DIR .. "src/mame/drivers/mrflea.cpp",
+ MAME_DIR .. "src/mame/includes/mrflea.h",
+ MAME_DIR .. "src/mame/video/mrflea.cpp",
+ MAME_DIR .. "src/mame/drivers/thief.cpp",
+ MAME_DIR .. "src/mame/includes/thief.h",
+ MAME_DIR .. "src/mame/video/thief.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "pacman")
+files {
+ MAME_DIR .. "src/mame/drivers/jrpacman.cpp",
+ MAME_DIR .. "src/mame/drivers/pacman.cpp",
+ MAME_DIR .. "src/mame/includes/pacman.h",
+ MAME_DIR .. "src/mame/machine/pacman.cpp",
+ MAME_DIR .. "src/mame/video/pacman.cpp",
+ MAME_DIR .. "src/mame/machine/jumpshot.cpp",
+ MAME_DIR .. "src/mame/machine/jumpshot.h",
+ MAME_DIR .. "src/mame/machine/pacplus.cpp",
+ MAME_DIR .. "src/mame/machine/pacplus.h",
+ MAME_DIR .. "src/mame/drivers/pengo.cpp",
+ MAME_DIR .. "src/mame/drivers/schick.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "pce")
+files {
+ MAME_DIR .. "src/mame/drivers/ggconnie.cpp",
+ MAME_DIR .. "src/mame/drivers/paranoia.cpp",
+ MAME_DIR .. "src/mame/drivers/tourvis.cpp",
+ MAME_DIR .. "src/mame/drivers/uapce.cpp",
+ MAME_DIR .. "src/mame/machine/pcecommn.cpp",
+ MAME_DIR .. "src/mame/machine/pcecommn.h",
+}
+
+createMAMEProjects(_target, _subtarget, "phoenix")
+files {
+ MAME_DIR .. "src/mame/drivers/naughtyb.cpp",
+ MAME_DIR .. "src/mame/includes/naughtyb.h",
+ MAME_DIR .. "src/mame/video/naughtyb.cpp",
+ MAME_DIR .. "src/mame/drivers/phoenix.cpp",
+ MAME_DIR .. "src/mame/includes/phoenix.h",
+ MAME_DIR .. "src/mame/audio/phoenix.cpp",
+ MAME_DIR .. "src/mame/audio/phoenix.h",
+ MAME_DIR .. "src/mame/video/phoenix.cpp",
+ MAME_DIR .. "src/mame/drivers/safarir.cpp",
+ MAME_DIR .. "src/mame/audio/pleiads.cpp",
+ MAME_DIR .. "src/mame/audio/pleiads.h",
+}
+
+createMAMEProjects(_target, _subtarget, "playmark")
+files {
+ MAME_DIR .. "src/mame/drivers/drtomy.cpp",
+ MAME_DIR .. "src/mame/drivers/playmark.cpp",
+ MAME_DIR .. "src/mame/includes/playmark.h",
+ MAME_DIR .. "src/mame/video/playmark.cpp",
+ MAME_DIR .. "src/mame/drivers/powerbal.cpp",
+ MAME_DIR .. "src/mame/drivers/sderby.cpp",
+ MAME_DIR .. "src/mame/includes/sderby.h",
+ MAME_DIR .. "src/mame/video/sderby.cpp",
+ MAME_DIR .. "src/mame/drivers/sslam.cpp",
+ MAME_DIR .. "src/mame/includes/sslam.h",
+ MAME_DIR .. "src/mame/video/sslam.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "promat")
+files {
+ MAME_DIR .. "src/mame/drivers/1945kiii.cpp",
+ MAME_DIR .. "src/mame/drivers/3x3puzzl.cpp",
+ MAME_DIR .. "src/mame/drivers/gstream.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "psikyo")
+files {
+ MAME_DIR .. "src/mame/drivers/psikyo.cpp",
+ MAME_DIR .. "src/mame/includes/psikyo.h",
+ MAME_DIR .. "src/mame/video/psikyo.cpp",
+ MAME_DIR .. "src/mame/drivers/psikyo4.cpp",
+ MAME_DIR .. "src/mame/includes/psikyo4.h",
+ MAME_DIR .. "src/mame/video/psikyo4.cpp",
+ MAME_DIR .. "src/mame/drivers/psikyosh.cpp",
+ MAME_DIR .. "src/mame/includes/psikyosh.h",
+ MAME_DIR .. "src/mame/video/psikyosh.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "ramtek")
+files {
+ MAME_DIR .. "src/mame/drivers/hitme.cpp",
+ MAME_DIR .. "src/mame/includes/hitme.h",
+ MAME_DIR .. "src/mame/audio/hitme.cpp",
+ MAME_DIR .. "src/mame/drivers/ramtek.cpp",
+ MAME_DIR .. "src/mame/drivers/starcrus.cpp",
+ MAME_DIR .. "src/mame/includes/starcrus.h",
+ MAME_DIR .. "src/mame/video/starcrus.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starcrus.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starcrus.h",
+}
+
+createMAMEProjects(_target, _subtarget, "rare")
+files {
+ MAME_DIR .. "src/mame/drivers/btoads.cpp",
+ MAME_DIR .. "src/mame/includes/btoads.h",
+ MAME_DIR .. "src/mame/video/btoads.cpp",
+ MAME_DIR .. "src/mame/drivers/kinst.cpp",
+ MAME_DIR .. "src/mame/drivers/xtheball.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "sanritsu")
+files {
+ MAME_DIR .. "src/mame/drivers/appoooh.cpp",
+ MAME_DIR .. "src/mame/includes/appoooh.h",
+ MAME_DIR .. "src/mame/video/appoooh.cpp",
+ MAME_DIR .. "src/mame/drivers/bankp.cpp",
+ MAME_DIR .. "src/mame/includes/bankp.h",
+ MAME_DIR .. "src/mame/video/bankp.cpp",
+ MAME_DIR .. "src/mame/drivers/chinsan.cpp",
+ MAME_DIR .. "src/mame/drivers/drmicro.cpp",
+ MAME_DIR .. "src/mame/includes/drmicro.h",
+ MAME_DIR .. "src/mame/video/drmicro.cpp",
+ MAME_DIR .. "src/mame/drivers/jantotsu.cpp",
+ MAME_DIR .. "src/mame/drivers/mermaid.cpp",
+ MAME_DIR .. "src/mame/includes/mermaid.h",
+ MAME_DIR .. "src/mame/video/mermaid.cpp",
+ MAME_DIR .. "src/mame/drivers/mjkjidai.cpp",
+ MAME_DIR .. "src/mame/includes/mjkjidai.h",
+ MAME_DIR .. "src/mame/video/mjkjidai.cpp",
+ MAME_DIR .. "src/mame/drivers/ron.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "sega")
+files {
+ MAME_DIR .. "src/mame/drivers/angelkds.cpp",
+ MAME_DIR .. "src/mame/includes/angelkds.h",
+ MAME_DIR .. "src/mame/video/angelkds.cpp",
+ MAME_DIR .. "src/mame/drivers/bingoc.cpp",
+ MAME_DIR .. "src/mame/drivers/blockade.cpp",
+ MAME_DIR .. "src/mame/drivers/calorie.cpp",
+ MAME_DIR .. "src/mame/drivers/chihiro.cpp",
+ MAME_DIR .. "src/mame/includes/xbox_nv2a.h",
+ MAME_DIR .. "src/mame/video/xbox_nv2a.cpp",
+ MAME_DIR .. "src/mame/drivers/coolridr.cpp",
+ MAME_DIR .. "src/mame/drivers/deniam.cpp",
+ MAME_DIR .. "src/mame/includes/deniam.h",
+ MAME_DIR .. "src/mame/video/deniam.cpp",
+ MAME_DIR .. "src/mame/drivers/dotrikun.cpp",
+ MAME_DIR .. "src/mame/drivers/fwheel.cpp",
+ MAME_DIR .. "src/mame/drivers/gpworld.cpp",
+ MAME_DIR .. "src/mame/drivers/hikaru.cpp",
+ MAME_DIR .. "src/mame/drivers/hshavoc.cpp",
+ MAME_DIR .. "src/mame/drivers/kopunch.cpp",
+ MAME_DIR .. "src/mame/includes/kopunch.h",
+ MAME_DIR .. "src/mame/video/kopunch.cpp",
+ MAME_DIR .. "src/mame/drivers/lindbergh.cpp",
+ MAME_DIR .. "src/mame/drivers/sderby2.cpp",
+ MAME_DIR .. "src/mame/machine/segabb.cpp",
+ MAME_DIR .. "src/mame/machine/segabb.h",
+ MAME_DIR .. "src/mame/machine/megadriv.cpp",
+ MAME_DIR .. "src/mame/includes/megadriv.h",
+ MAME_DIR .. "src/mame/drivers/megadriv_acbl.cpp",
+ MAME_DIR .. "src/mame/includes/megadriv_acbl.h",
+ MAME_DIR .. "src/mame/drivers/megaplay.cpp",
+ MAME_DIR .. "src/mame/drivers/megatech.cpp",
+ MAME_DIR .. "src/mame/drivers/calcune.cpp",
+ MAME_DIR .. "src/mame/drivers/model1.cpp",
+ MAME_DIR .. "src/mame/includes/model1.h",
+ MAME_DIR .. "src/mame/machine/model1.cpp",
+ MAME_DIR .. "src/mame/video/model1.cpp",
+ MAME_DIR .. "src/mame/machine/s32comm.cpp",
+ MAME_DIR .. "src/mame/machine/s32comm.h",
+ MAME_DIR .. "src/mame/machine/m1comm.cpp",
+ MAME_DIR .. "src/mame/machine/m1comm.h",
+ MAME_DIR .. "src/mame/machine/m2comm.cpp",
+ MAME_DIR .. "src/mame/machine/m2comm.h",
+ MAME_DIR .. "src/mame/audio/dsbz80.cpp",
+ MAME_DIR .. "src/mame/audio/dsbz80.h",
+ MAME_DIR .. "src/mame/drivers/model2.cpp",
+ MAME_DIR .. "src/mame/machine/model2.cpp",
+ MAME_DIR .. "src/mame/includes/model2.h",
+ MAME_DIR .. "src/mame/video/model2rd.hxx",
+ MAME_DIR .. "src/mame/video/model2.cpp",
+ MAME_DIR .. "src/mame/drivers/model3.cpp",
+ MAME_DIR .. "src/mame/includes/model3.h",
+ MAME_DIR .. "src/mame/video/model3.cpp",
+ MAME_DIR .. "src/mame/machine/model3.cpp",
+ MAME_DIR .. "src/mame/drivers/monacogp.cpp",
+ MAME_DIR .. "src/mame/drivers/naomi.cpp",
+ MAME_DIR .. "src/mame/includes/naomi.h",
+ MAME_DIR .. "src/mame/includes/dc.h",
+ MAME_DIR .. "src/mame/drivers/segasp.cpp",
+ MAME_DIR .. "src/mame/includes/segasp.h",
+ MAME_DIR .. "src/mame/machine/dc.cpp",
+ MAME_DIR .. "src/mame/drivers/y2.cpp",
+ MAME_DIR .. "src/mame/video/powervr2.cpp",
+ MAME_DIR .. "src/mame/video/powervr2.h",
+ MAME_DIR .. "src/mame/machine/gunsense.cpp",
+ MAME_DIR .. "src/mame/machine/gunsense.h",
+ MAME_DIR .. "src/mame/machine/naomi.cpp",
+ MAME_DIR .. "src/mame/machine/naomig1.cpp",
+ MAME_DIR .. "src/mame/machine/naomig1.h",
+ MAME_DIR .. "src/mame/machine/naomibd.cpp",
+ MAME_DIR .. "src/mame/machine/naomibd.h",
+ MAME_DIR .. "src/mame/machine/naomirom.cpp",
+ MAME_DIR .. "src/mame/machine/naomirom.h",
+ MAME_DIR .. "src/mame/machine/naomigd.cpp",
+ MAME_DIR .. "src/mame/machine/naomigd.h",
+ MAME_DIR .. "src/mame/machine/naomim1.cpp",
+ MAME_DIR .. "src/mame/machine/naomim1.h",
+ MAME_DIR .. "src/mame/machine/naomim2.cpp",
+ MAME_DIR .. "src/mame/machine/naomim2.h",
+ MAME_DIR .. "src/mame/machine/naomim4.cpp",
+ MAME_DIR .. "src/mame/machine/naomim4.h",
+ MAME_DIR .. "src/mame/machine/gdrom.cpp",
+ MAME_DIR .. "src/mame/machine/gdrom.h",
+ MAME_DIR .. "src/mame/machine/m3comm.cpp",
+ MAME_DIR .. "src/mame/machine/m3comm.h",
+ MAME_DIR .. "src/mame/machine/315-5881_crypt.cpp",
+ MAME_DIR .. "src/mame/machine/315-5881_crypt.h",
+ MAME_DIR .. "src/mame/machine/315-6154.cpp",
+ MAME_DIR .. "src/mame/machine/315-6154.h",
+ MAME_DIR .. "src/mame/machine/awboard.cpp",
+ MAME_DIR .. "src/mame/machine/awboard.h",
+ MAME_DIR .. "src/mame/machine/mie.cpp",
+ MAME_DIR .. "src/mame/machine/mie.h",
+ MAME_DIR .. "src/mame/machine/maple-dc.cpp",
+ MAME_DIR .. "src/mame/machine/maple-dc.h",
+ MAME_DIR .. "src/mame/machine/mapledev.cpp",
+ MAME_DIR .. "src/mame/machine/mapledev.h",
+ MAME_DIR .. "src/mame/machine/dc-ctrl.cpp",
+ MAME_DIR .. "src/mame/machine/dc-ctrl.h",
+ MAME_DIR .. "src/mame/machine/jvs13551.cpp",
+ MAME_DIR .. "src/mame/machine/jvs13551.h",
+ MAME_DIR .. "src/mame/machine/segashiobd.cpp",
+ MAME_DIR .. "src/mame/machine/segashiobd.h",
+ MAME_DIR .. "src/mame/drivers/triforce.cpp",
+ MAME_DIR .. "src/mame/drivers/puckpkmn.cpp",
+ MAME_DIR .. "src/mame/drivers/segac2.cpp",
+ MAME_DIR .. "src/mame/drivers/segae.cpp",
+ MAME_DIR .. "src/mame/drivers/sms.cpp",
+ MAME_DIR .. "src/mame/includes/sms.h",
+ MAME_DIR .. "src/mame/machine/sms.cpp",
+ MAME_DIR .. "src/mame/drivers/sms_bootleg.cpp",
+ MAME_DIR .. "src/mame/drivers/shtzone.cpp",
+ MAME_DIR .. "src/mame/drivers/segacoin.cpp",
+ MAME_DIR .. "src/mame/drivers/segag80r.cpp",
+ MAME_DIR .. "src/mame/includes/segag80r.h",
+ MAME_DIR .. "src/mame/machine/segag80.cpp",
+ MAME_DIR .. "src/mame/machine/segag80.h",
+ MAME_DIR .. "src/mame/audio/segag80r.cpp",
+ MAME_DIR .. "src/mame/audio/segag80r.h",
+ MAME_DIR .. "src/mame/video/segag80r.cpp",
+ MAME_DIR .. "src/mame/drivers/segag80v.cpp",
+ MAME_DIR .. "src/mame/includes/segag80v.h",
+ MAME_DIR .. "src/mame/audio/segag80.cpp",
+ MAME_DIR .. "src/mame/audio/segag80.h",
+ MAME_DIR .. "src/mame/audio/nl_astrob.cpp",
+ MAME_DIR .. "src/mame/audio/nl_astrob.h",
+ MAME_DIR .. "src/mame/audio/nl_elim.cpp",
+ MAME_DIR .. "src/mame/audio/nl_elim.h",
+ MAME_DIR .. "src/mame/audio/nl_spacfury.cpp",
+ MAME_DIR .. "src/mame/audio/nl_spacfury.h",
+ MAME_DIR .. "src/mame/video/segag80v.cpp",
+ MAME_DIR .. "src/mame/drivers/segahang.cpp",
+ MAME_DIR .. "src/mame/includes/segahang.h",
+ MAME_DIR .. "src/mame/video/segahang.cpp",
+ MAME_DIR .. "src/mame/drivers/segajw.cpp",
+ MAME_DIR .. "src/mame/drivers/segald.cpp",
+ MAME_DIR .. "src/mame/drivers/segaorun.cpp",
+ MAME_DIR .. "src/mame/includes/segaorun.h",
+ MAME_DIR .. "src/mame/video/segaorun.cpp",
+ MAME_DIR .. "src/mame/drivers/segas16a.cpp",
+ MAME_DIR .. "src/mame/includes/segas16a.h",
+ MAME_DIR .. "src/mame/video/segas16a.cpp",
+ MAME_DIR .. "src/mame/drivers/segas16b.cpp",
+ MAME_DIR .. "src/mame/includes/segas16b.h",
+ MAME_DIR .. "src/mame/video/segas16b.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segas16b.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segas16b.h",
+ MAME_DIR .. "src/mame/drivers/segas18.cpp",
+ MAME_DIR .. "src/mame/includes/segas18.h",
+ MAME_DIR .. "src/mame/video/segas18.cpp",
+ MAME_DIR .. "src/mame/drivers/segas18_astormbl.cpp",
+ MAME_DIR .. "src/mame/drivers/segas24.cpp",
+ MAME_DIR .. "src/mame/includes/segas24.h",
+ MAME_DIR .. "src/mame/video/segas24.cpp",
+ MAME_DIR .. "src/mame/drivers/segam1.cpp",
+ MAME_DIR .. "src/mame/drivers/segas32.cpp",
+ MAME_DIR .. "src/mame/includes/segas32.h",
+ MAME_DIR .. "src/mame/machine/segas32.cpp",
+ MAME_DIR .. "src/mame/video/segas32.cpp",
+ MAME_DIR .. "src/mame/drivers/segattl.cpp",
+ MAME_DIR .. "src/mame/drivers/segaufo.cpp",
+ MAME_DIR .. "src/mame/drivers/segaxbd.cpp",
+ MAME_DIR .. "src/mame/includes/segaxbd.h",
+ MAME_DIR .. "src/mame/video/segaxbd.cpp",
+ MAME_DIR .. "src/mame/drivers/segaybd.cpp",
+ MAME_DIR .. "src/mame/includes/segaybd.h",
+ MAME_DIR .. "src/mame/video/segaybd.cpp",
+ MAME_DIR .. "src/mame/includes/segaipt.h",
+ MAME_DIR .. "src/mame/drivers/sg1000a.cpp",
+ MAME_DIR .. "src/mame/drivers/speedbsk.cpp",
+ MAME_DIR .. "src/mame/drivers/stactics.cpp",
+ MAME_DIR .. "src/mame/includes/stactics.h",
+ MAME_DIR .. "src/mame/video/stactics.cpp",
+ MAME_DIR .. "src/mame/drivers/stv.cpp",
+ MAME_DIR .. "src/mame/includes/saturn.h",
+ MAME_DIR .. "src/mame/drivers/saturn.cpp",
+ MAME_DIR .. "src/mame/machine/saturn.cpp",
+ MAME_DIR .. "src/mame/machine/saturn_cdb.cpp",
+ MAME_DIR .. "src/mame/machine/saturn_cdb.h",
+ MAME_DIR .. "src/mame/includes/stv.h",
+ MAME_DIR .. "src/mame/machine/315-5838_317-0229_comp.cpp",
+ MAME_DIR .. "src/mame/machine/315-5838_317-0229_comp.h",
+ MAME_DIR .. "src/mame/drivers/suprloco.cpp",
+ MAME_DIR .. "src/mame/includes/suprloco.h",
+ MAME_DIR .. "src/mame/video/suprloco.cpp",
+ MAME_DIR .. "src/mame/drivers/system1.cpp",
+ MAME_DIR .. "src/mame/includes/system1.h",
+ MAME_DIR .. "src/mame/machine/segacrp2_device.cpp",
+ MAME_DIR .. "src/mame/machine/segacrp2_device.h",
+ MAME_DIR .. "src/mame/video/system1.cpp",
+ MAME_DIR .. "src/mame/drivers/system16.cpp",
+ MAME_DIR .. "src/mame/includes/system16.h",
+ MAME_DIR .. "src/mame/video/system16.cpp",
+ MAME_DIR .. "src/mame/drivers/timetrv.cpp",
+ MAME_DIR .. "src/mame/drivers/turbo.cpp",
+ MAME_DIR .. "src/mame/includes/turbo.h",
+ MAME_DIR .. "src/mame/audio/turbo.cpp",
+ MAME_DIR .. "src/mame/video/turbo.cpp",
+ MAME_DIR .. "src/mame/drivers/vicdual.cpp",
+ MAME_DIR .. "src/mame/includes/vicdual.h",
+ MAME_DIR .. "src/mame/audio/vicdual.cpp",
+ MAME_DIR .. "src/mame/audio/vicdual.h",
+ MAME_DIR .. "src/mame/audio/nl_brdrline.cpp",
+ MAME_DIR .. "src/mame/audio/nl_brdrline.h",
+ MAME_DIR .. "src/mame/audio/nl_frogs.cpp",
+ MAME_DIR .. "src/mame/audio/nl_frogs.h",
+ MAME_DIR .. "src/mame/audio/vicdual-97271p.cpp",
+ MAME_DIR .. "src/mame/audio/vicdual-97271p.h",
+ MAME_DIR .. "src/mame/video/vicdual.cpp",
+ MAME_DIR .. "src/mame/video/vicdual-97269pb.cpp",
+ MAME_DIR .. "src/mame/video/vicdual-97269pb.h",
+ MAME_DIR .. "src/mame/audio/carnival.cpp",
+ MAME_DIR .. "src/mame/audio/depthch.cpp",
+ MAME_DIR .. "src/mame/audio/invinco.cpp",
+ MAME_DIR .. "src/mame/audio/pulsar.cpp",
+ MAME_DIR .. "src/mame/drivers/zaxxon.cpp",
+ MAME_DIR .. "src/mame/includes/zaxxon.h",
+ MAME_DIR .. "src/mame/audio/zaxxon.cpp",
+ MAME_DIR .. "src/mame/video/zaxxon.cpp",
+ MAME_DIR .. "src/mame/machine/315_5195.cpp",
+ MAME_DIR .. "src/mame/machine/315_5195.h",
+ MAME_DIR .. "src/mame/machine/315_5296.cpp",
+ MAME_DIR .. "src/mame/machine/315_5296.h",
+ MAME_DIR .. "src/mame/machine/315_5338a.cpp",
+ MAME_DIR .. "src/mame/machine/315_5338a.h",
+ MAME_DIR .. "src/mame/machine/315_5649.cpp",
+ MAME_DIR .. "src/mame/machine/315_5649.h",
+ MAME_DIR .. "src/mame/machine/bingoct.cpp",
+ MAME_DIR .. "src/mame/machine/bingoct.h",
+ MAME_DIR .. "src/mame/machine/model1io.cpp",
+ MAME_DIR .. "src/mame/machine/model1io.h",
+ MAME_DIR .. "src/mame/machine/model1io2.cpp",
+ MAME_DIR .. "src/mame/machine/model1io2.h",
+ MAME_DIR .. "src/mame/machine/fd1089.cpp",
+ MAME_DIR .. "src/mame/machine/fd1089.h",
+ MAME_DIR .. "src/mame/machine/fd1094.cpp",
+ MAME_DIR .. "src/mame/machine/fd1094.h",
+ MAME_DIR .. "src/mame/machine/mc8123.cpp",
+ MAME_DIR .. "src/mame/machine/mc8123.h",
+ MAME_DIR .. "src/mame/machine/segaic16.cpp",
+ MAME_DIR .. "src/mame/machine/segaic16.h",
+ MAME_DIR .. "src/mame/machine/segabill.cpp",
+ MAME_DIR .. "src/mame/machine/segabill.h",
+ MAME_DIR .. "src/mame/audio/segaspeech.cpp",
+ MAME_DIR .. "src/mame/audio/segaspeech.h",
+ MAME_DIR .. "src/mame/audio/segausb.cpp",
+ MAME_DIR .. "src/mame/audio/segausb.h",
+ MAME_DIR .. "src/mame/audio/nl_segausb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segausb.h",
+ MAME_DIR .. "src/mame/audio/nl_segaspeech.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segaspeech.h",
+ MAME_DIR .. "src/mame/video/segaic16.cpp",
+ MAME_DIR .. "src/mame/video/segaic16.h",
+ MAME_DIR .. "src/mame/video/segaic16_road.cpp",
+ MAME_DIR .. "src/mame/video/segaic16_road.h",
+ MAME_DIR .. "src/mame/video/sega16sp.cpp",
+ MAME_DIR .. "src/mame/video/sega16sp.h",
+ MAME_DIR .. "src/mame/video/segaic24.cpp",
+ MAME_DIR .. "src/mame/video/segaic24.h",
+ MAME_DIR .. "src/mame/machine/xbox.cpp",
+ MAME_DIR .. "src/mame/machine/xbox_usb.cpp",
+ MAME_DIR .. "src/mame/machine/xbox_pci.cpp",
+ MAME_DIR .. "src/mame/drivers/flashbeats.cpp",
+ MAME_DIR .. "src/mame/drivers/segaatom.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "seibu")
+files {
+ MAME_DIR .. "src/mame/drivers/airraid.cpp",
+ MAME_DIR .. "src/mame/drivers/banprestoms.cpp",
+ MAME_DIR .. "src/mame/drivers/bloodbro.cpp",
+ MAME_DIR .. "src/mame/includes/bloodbro.h",
+ MAME_DIR .. "src/mame/video/bloodbro.cpp",
+ MAME_DIR .. "src/mame/drivers/bloodbro_ms.cpp",
+ MAME_DIR .. "src/mame/drivers/cabal.cpp",
+ MAME_DIR .. "src/mame/includes/cabal.h",
+ MAME_DIR .. "src/mame/video/cabal.cpp",
+ MAME_DIR .. "src/mame/drivers/darkmist.cpp",
+ MAME_DIR .. "src/mame/includes/darkmist.h",
+ MAME_DIR .. "src/mame/video/darkmist.cpp",
+ MAME_DIR .. "src/mame/drivers/dcon.cpp",
+ MAME_DIR .. "src/mame/includes/dcon.h",
+ MAME_DIR .. "src/mame/video/dcon.cpp",
+ MAME_DIR .. "src/mame/drivers/deadang.cpp",
+ MAME_DIR .. "src/mame/includes/deadang.h",
+ MAME_DIR .. "src/mame/video/deadang.cpp",
+ MAME_DIR .. "src/mame/drivers/dynduke.cpp",
+ MAME_DIR .. "src/mame/includes/dynduke.h",
+ MAME_DIR .. "src/mame/video/dynduke.cpp",
+ MAME_DIR .. "src/mame/drivers/feversoc.cpp",
+ MAME_DIR .. "src/mame/drivers/goal92.cpp",
+ MAME_DIR .. "src/mame/includes/goal92.h",
+ MAME_DIR .. "src/mame/video/goal92.cpp",
+ MAME_DIR .. "src/mame/drivers/goodejan.cpp",
+ MAME_DIR .. "src/mame/drivers/kncljoe.cpp",
+ MAME_DIR .. "src/mame/includes/kncljoe.h",
+ MAME_DIR .. "src/mame/video/kncljoe.cpp",
+ MAME_DIR .. "src/mame/drivers/legionna.cpp",
+ MAME_DIR .. "src/mame/includes/legionna.h",
+ MAME_DIR .. "src/mame/video/legionna.cpp",
+ MAME_DIR .. "src/mame/drivers/seicupbl.cpp",
+ MAME_DIR .. "src/mame/drivers/metlfrzr.cpp",
+ MAME_DIR .. "src/mame/drivers/mustache.cpp",
+ MAME_DIR .. "src/mame/includes/mustache.h",
+ MAME_DIR .. "src/mame/video/mustache.cpp",
+ MAME_DIR .. "src/mame/drivers/panicr.cpp",
+ MAME_DIR .. "src/mame/drivers/raiden.cpp",
+ MAME_DIR .. "src/mame/includes/raiden.h",
+ MAME_DIR .. "src/mame/video/raiden.cpp",
+ MAME_DIR .. "src/mame/drivers/raiden_ms.cpp",
+ MAME_DIR .. "src/mame/drivers/raiden2.cpp",
+ MAME_DIR .. "src/mame/includes/raiden2.h",
+ MAME_DIR .. "src/mame/video/raiden2.cpp",
+ MAME_DIR .. "src/mame/machine/r2crypt.cpp",
+ MAME_DIR .. "src/mame/machine/r2crypt.h",
+ MAME_DIR .. "src/mame/machine/seibucop.cpp",
+ MAME_DIR .. "src/mame/machine/seibucop_dma.hxx",
+ MAME_DIR .. "src/mame/machine/seibucop_cmd.hxx",
+ MAME_DIR .. "src/mame/machine/seibucop.h",
+ MAME_DIR .. "src/mame/drivers/r2dx_v33.cpp",
+ MAME_DIR .. "src/mame/drivers/seibuspi.cpp",
+ MAME_DIR .. "src/mame/includes/seibuspi.h",
+ MAME_DIR .. "src/mame/video/seibuspi.cpp",
+ MAME_DIR .. "src/mame/drivers/seibucats.cpp",
+ MAME_DIR .. "src/mame/drivers/sengokmj.cpp",
+ MAME_DIR .. "src/mame/drivers/stfight.cpp",
+ MAME_DIR .. "src/mame/video/stfight_dev.cpp",
+ MAME_DIR .. "src/mame/video/stfight_dev.h",
+ MAME_DIR .. "src/mame/video/airraid_dev.cpp",
+ MAME_DIR .. "src/mame/video/airraid_dev.h",
+ MAME_DIR .. "src/mame/includes/stfight.h",
+ MAME_DIR .. "src/mame/machine/stfight.cpp",
+ MAME_DIR .. "src/mame/drivers/toki.cpp",
+ MAME_DIR .. "src/mame/includes/toki.h",
+ MAME_DIR .. "src/mame/drivers/toki_ms.cpp",
+ MAME_DIR .. "src/mame/video/toki.cpp",
+ MAME_DIR .. "src/mame/drivers/wiz.cpp",
+ MAME_DIR .. "src/mame/includes/wiz.h",
+ MAME_DIR .. "src/mame/video/wiz.cpp",
+ MAME_DIR .. "src/mame/machine/seicopbl.cpp",
+ MAME_DIR .. "src/mame/machine/seicopbl.h",
+ MAME_DIR .. "src/mame/machine/seibuspi.cpp",
+ MAME_DIR .. "src/mame/machine/seibuspi.h",
+ MAME_DIR .. "src/mame/audio/seibu.cpp",
+ MAME_DIR .. "src/mame/audio/seibu.h",
+ MAME_DIR .. "src/mame/audio/t5182.cpp",
+ MAME_DIR .. "src/mame/audio/t5182.h",
+ MAME_DIR .. "src/mame/video/seibu_crtc.cpp",
+ MAME_DIR .. "src/mame/video/seibu_crtc.h",
+}
+
+createMAMEProjects(_target, _subtarget, "seta")
+files {
+ MAME_DIR .. "src/mame/drivers/aleck64.cpp",
+ MAME_DIR .. "src/mame/machine/n64.cpp",
+ MAME_DIR .. "src/mame/video/n64.cpp",
+ MAME_DIR .. "src/mame/video/n64types.h",
+ MAME_DIR .. "src/mame/video/rdpfiltr.hxx",
+ MAME_DIR .. "src/mame/video/n64.h",
+ MAME_DIR .. "src/mame/video/rdpblend.cpp",
+ MAME_DIR .. "src/mame/video/rdpblend.h",
+ MAME_DIR .. "src/mame/video/rdptpipe.cpp",
+ MAME_DIR .. "src/mame/video/rdptpipe.h",
+ MAME_DIR .. "src/mame/video/pin64.cpp",
+ MAME_DIR .. "src/mame/video/pin64.h",
+ MAME_DIR .. "src/mame/drivers/hanaawas.cpp",
+ MAME_DIR .. "src/mame/drivers/jclub2.cpp",
+ MAME_DIR .. "src/mame/drivers/macs.cpp",
+ MAME_DIR .. "src/mame/drivers/seta.cpp",
+ MAME_DIR .. "src/mame/includes/seta.h",
+ MAME_DIR .. "src/mame/video/seta.cpp",
+ MAME_DIR .. "src/mame/drivers/seta2.cpp",
+ MAME_DIR .. "src/mame/includes/seta2.h",
+ MAME_DIR .. "src/mame/video/seta2.cpp",
+ MAME_DIR .. "src/mame/drivers/speedatk.cpp",
+ MAME_DIR .. "src/mame/includes/speedatk.h",
+ MAME_DIR .. "src/mame/video/speedatk.cpp",
+ MAME_DIR .. "src/mame/drivers/speglsht.cpp",
+ MAME_DIR .. "src/mame/drivers/srmp2.cpp",
+ MAME_DIR .. "src/mame/includes/srmp2.h",
+ MAME_DIR .. "src/mame/video/srmp2.cpp",
+ MAME_DIR .. "src/mame/drivers/srmp5.cpp",
+ MAME_DIR .. "src/mame/drivers/srmp6.cpp",
+ MAME_DIR .. "src/mame/drivers/ssv.cpp",
+ MAME_DIR .. "src/mame/includes/ssv.h",
+ MAME_DIR .. "src/mame/video/ssv.cpp",
+ MAME_DIR .. "src/mame/video/st0020.cpp",
+ MAME_DIR .. "src/mame/video/st0020.h",
+ MAME_DIR .. "src/mame/machine/st0016.cpp",
+ MAME_DIR .. "src/mame/machine/st0016.h",
+ MAME_DIR .. "src/mame/drivers/simple_st0016.cpp",
+ MAME_DIR .. "src/mame/video/seta001.cpp",
+ MAME_DIR .. "src/mame/video/seta001.h",
+ MAME_DIR .. "src/mame/video/x1_012.cpp",
+ MAME_DIR .. "src/mame/video/x1_012.h",
+ MAME_DIR .. "src/mame/drivers/thedealr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "sigma")
+files {
+ MAME_DIR .. "src/mame/drivers/nyny.cpp",
+ MAME_DIR .. "src/mame/drivers/r2dtank.cpp",
+ MAME_DIR .. "src/mame/drivers/sigma21.cpp",
+ MAME_DIR .. "src/mame/drivers/sigmab31.cpp",
+ MAME_DIR .. "src/mame/drivers/sigmab52.cpp",
+ MAME_DIR .. "src/mame/drivers/sigmab98.cpp",
+ MAME_DIR .. "src/mame/drivers/spiders.cpp",
+ MAME_DIR .. "src/mame/includes/spiders.h",
+ MAME_DIR .. "src/mame/audio/spiders.cpp",
+ MAME_DIR .. "src/mame/drivers/sub.cpp",
+ MAME_DIR .. "src/mame/includes/sub.h",
+ MAME_DIR .. "src/mame/video/sub.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "snk")
+files {
+ MAME_DIR .. "src/mame/drivers/bbusters.cpp",
+ MAME_DIR .. "src/mame/drivers/mechatt.cpp",
+ MAME_DIR .. "src/mame/video/snk_bbusters_spr.cpp",
+ MAME_DIR .. "src/mame/video/snk_bbusters_spr.h",
+ MAME_DIR .. "src/mame/drivers/dmndrby.cpp",
+ MAME_DIR .. "src/mame/drivers/hng64.cpp",
+ MAME_DIR .. "src/mame/includes/hng64.h",
+ MAME_DIR .. "src/mame/video/hng64.cpp",
+ MAME_DIR .. "src/mame/audio/hng64.cpp",
+ MAME_DIR .. "src/mame/machine/hng64_net.cpp",
+ MAME_DIR .. "src/mame/video/hng64_3d.hxx",
+ MAME_DIR .. "src/mame/video/hng64_sprite.hxx",
+ MAME_DIR .. "src/mame/drivers/lasso.cpp",
+ MAME_DIR .. "src/mame/includes/lasso.h",
+ MAME_DIR .. "src/mame/video/lasso.cpp",
+ MAME_DIR .. "src/mame/drivers/mainsnk.cpp",
+ MAME_DIR .. "src/mame/includes/mainsnk.h",
+ MAME_DIR .. "src/mame/video/mainsnk.cpp",
+ MAME_DIR .. "src/mame/drivers/munchmo.cpp",
+ MAME_DIR .. "src/mame/includes/munchmo.h",
+ MAME_DIR .. "src/mame/video/munchmo.cpp",
+ MAME_DIR .. "src/mame/drivers/prehisle.cpp",
+ MAME_DIR .. "src/mame/includes/prehisle.h",
+ MAME_DIR .. "src/mame/video/prehisle.cpp",
+ MAME_DIR .. "src/mame/drivers/snk6502.cpp",
+ MAME_DIR .. "src/mame/includes/snk6502.h",
+ MAME_DIR .. "src/mame/audio/snk6502.cpp",
+ MAME_DIR .. "src/mame/audio/snk6502.h",
+ MAME_DIR .. "src/mame/video/snk6502.cpp",
+ MAME_DIR .. "src/mame/drivers/snk.cpp",
+ MAME_DIR .. "src/mame/includes/snk.h",
+ MAME_DIR .. "src/mame/video/snk.cpp",
+ MAME_DIR .. "src/mame/drivers/snk68.cpp",
+ MAME_DIR .. "src/mame/includes/snk68.h",
+ MAME_DIR .. "src/mame/video/snk68.cpp",
+ MAME_DIR .. "src/mame/video/snk68_spr.cpp",
+ MAME_DIR .. "src/mame/video/snk68_spr.h",
+ MAME_DIR .. "src/mame/video/alpha68k_palette.cpp",
+ MAME_DIR .. "src/mame/video/alpha68k_palette.h",
+}
+
+createMAMEProjects(_target, _subtarget, "sony")
+files {
+ MAME_DIR .. "src/mame/drivers/zn.cpp",
+ MAME_DIR .. "src/mame/includes/zn.h",
+ MAME_DIR .. "src/mame/machine/znmcu.cpp",
+ MAME_DIR .. "src/mame/machine/znmcu.h",
+ MAME_DIR .. "src/mame/machine/cat702.cpp",
+ MAME_DIR .. "src/mame/machine/cat702.h",
+}
+
+createMAMEProjects(_target, _subtarget, "stern")
+files {
+ MAME_DIR .. "src/mame/drivers/astinvad.cpp",
+ MAME_DIR .. "src/mame/drivers/berzerk.cpp",
+ MAME_DIR .. "src/mame/drivers/cliffhgr.cpp",
+ MAME_DIR .. "src/mame/audio/cliffhgr.cpp",
+ MAME_DIR .. "src/mame/audio/cliffhgr.h",
+ MAME_DIR .. "src/mame/drivers/mazerbla.cpp",
+ MAME_DIR .. "src/mame/drivers/supdrapo.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "subsino")
+files {
+ MAME_DIR .. "src/mame/drivers/lastfght.cpp",
+ MAME_DIR .. "src/mame/drivers/subsino.cpp",
+ MAME_DIR .. "src/mame/drivers/subsino2.cpp",
+ MAME_DIR .. "src/mame/machine/subsino.cpp",
+ MAME_DIR .. "src/mame/machine/subsino.h",
+}
+
+createMAMEProjects(_target, _subtarget, "suna")
+files {
+ MAME_DIR .. "src/mame/drivers/go2000.cpp",
+ MAME_DIR .. "src/mame/drivers/goindol.cpp",
+ MAME_DIR .. "src/mame/includes/goindol.h",
+ MAME_DIR .. "src/mame/video/goindol.cpp",
+ MAME_DIR .. "src/mame/drivers/suna8.cpp",
+ MAME_DIR .. "src/mame/includes/suna8.h",
+ MAME_DIR .. "src/mame/audio/suna8.cpp",
+ MAME_DIR .. "src/mame/video/suna8.cpp",
+ MAME_DIR .. "src/mame/drivers/suna16.cpp",
+ MAME_DIR .. "src/mame/includes/suna16.h",
+ MAME_DIR .. "src/mame/video/suna16.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "sunelect")
+files {
+ MAME_DIR .. "src/mame/drivers/arabian.cpp",
+ MAME_DIR .. "src/mame/includes/arabian.h",
+ MAME_DIR .. "src/mame/video/arabian.cpp",
+ MAME_DIR .. "src/mame/drivers/blockch.cpp",
+ MAME_DIR .. "src/mame/drivers/dai3wksi.cpp",
+ MAME_DIR .. "src/mame/drivers/ikki.cpp",
+ MAME_DIR .. "src/mame/includes/ikki.h",
+ MAME_DIR .. "src/mame/video/ikki.cpp",
+ MAME_DIR .. "src/mame/drivers/kangaroo.cpp",
+ MAME_DIR .. "src/mame/includes/kangaroo.h",
+ MAME_DIR .. "src/mame/video/kangaroo.cpp",
+ MAME_DIR .. "src/mame/drivers/markham.cpp",
+ MAME_DIR .. "src/mame/includes/markham.h",
+ MAME_DIR .. "src/mame/video/markham.cpp",
+ MAME_DIR .. "src/mame/drivers/route16.cpp",
+ MAME_DIR .. "src/mame/includes/route16.h",
+ MAME_DIR .. "src/mame/video/route16.cpp",
+ MAME_DIR .. "src/mame/drivers/shanghai.cpp",
+ MAME_DIR .. "src/mame/drivers/shangha3.cpp",
+ MAME_DIR .. "src/mame/includes/shangha3.h",
+ MAME_DIR .. "src/mame/video/shangha3.cpp",
+ MAME_DIR .. "src/mame/drivers/tonton.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "taito")
+files {
+ MAME_DIR .. "src/mame/drivers/2mindril.cpp",
+ MAME_DIR .. "src/mame/drivers/40love.cpp",
+ MAME_DIR .. "src/mame/includes/40love.h",
+ MAME_DIR .. "src/mame/video/40love.cpp",
+ MAME_DIR .. "src/mame/drivers/arkanoid.cpp",
+ MAME_DIR .. "src/mame/includes/arkanoid.h",
+ MAME_DIR .. "src/mame/machine/arkanoid.cpp",
+ MAME_DIR .. "src/mame/video/arkanoid.cpp",
+ MAME_DIR .. "src/mame/drivers/ashnojoe.cpp",
+ MAME_DIR .. "src/mame/includes/ashnojoe.h",
+ MAME_DIR .. "src/mame/video/ashnojoe.cpp",
+ MAME_DIR .. "src/mame/drivers/asuka.cpp",
+ MAME_DIR .. "src/mame/drivers/bigevglf.cpp",
+ MAME_DIR .. "src/mame/includes/bigevglf.h",
+ MAME_DIR .. "src/mame/video/bigevglf.cpp",
+ MAME_DIR .. "src/mame/drivers/bingowav.cpp",
+ MAME_DIR .. "src/mame/drivers/bking.cpp",
+ MAME_DIR .. "src/mame/includes/bking.h",
+ MAME_DIR .. "src/mame/video/bking.cpp",
+ MAME_DIR .. "src/mame/drivers/bublbobl.cpp",
+ MAME_DIR .. "src/mame/includes/bublbobl.h",
+ MAME_DIR .. "src/mame/machine/bublbobl.cpp",
+ MAME_DIR .. "src/mame/video/bublbobl.cpp",
+ MAME_DIR .. "src/mame/drivers/buggychl.cpp",
+ MAME_DIR .. "src/mame/includes/buggychl.h",
+ MAME_DIR .. "src/mame/machine/taito68705interface.cpp",
+ MAME_DIR .. "src/mame/machine/taito68705interface.h",
+ MAME_DIR .. "src/mame/machine/taitosjsec.cpp",
+ MAME_DIR .. "src/mame/machine/taitosjsec.h",
+ MAME_DIR .. "src/mame/video/buggychl.cpp",
+ MAME_DIR .. "src/mame/drivers/capr1.cpp",
+ MAME_DIR .. "src/mame/drivers/caprcyc.cpp",
+ MAME_DIR .. "src/mame/drivers/cchance.cpp",
+ MAME_DIR .. "src/mame/drivers/chaknpop.cpp",
+ MAME_DIR .. "src/mame/includes/chaknpop.h",
+ MAME_DIR .. "src/mame/video/chaknpop.cpp",
+ MAME_DIR .. "src/mame/drivers/champbwl.cpp",
+ MAME_DIR .. "src/mame/drivers/changela.cpp",
+ MAME_DIR .. "src/mame/includes/changela.h",
+ MAME_DIR .. "src/mame/video/changela.cpp",
+ MAME_DIR .. "src/mame/drivers/cpzodiac.cpp",
+ MAME_DIR .. "src/mame/drivers/crbaloon.cpp",
+ MAME_DIR .. "src/mame/includes/crbaloon.h",
+ MAME_DIR .. "src/mame/video/crbaloon.cpp",
+ MAME_DIR .. "src/mame/audio/crbaloon.cpp",
+ MAME_DIR .. "src/mame/drivers/cyclemb.cpp",
+ MAME_DIR .. "src/mame/drivers/darius.cpp",
+ MAME_DIR .. "src/mame/includes/darius.h",
+ MAME_DIR .. "src/mame/video/darius.cpp",
+ MAME_DIR .. "src/mame/drivers/dinoking.cpp",
+ MAME_DIR .. "src/mame/drivers/exzisus.cpp",
+ MAME_DIR .. "src/mame/includes/exzisus.h",
+ MAME_DIR .. "src/mame/video/exzisus.cpp",
+ MAME_DIR .. "src/mame/drivers/fgoal.cpp",
+ MAME_DIR .. "src/mame/includes/fgoal.h",
+ MAME_DIR .. "src/mame/video/fgoal.cpp",
+ MAME_DIR .. "src/mame/drivers/flstory.cpp",
+ MAME_DIR .. "src/mame/includes/flstory.h",
+ MAME_DIR .. "src/mame/video/flstory.cpp",
+ MAME_DIR .. "src/mame/drivers/galastrm.cpp",
+ MAME_DIR .. "src/mame/includes/galastrm.h",
+ MAME_DIR .. "src/mame/video/galastrm.cpp",
+ MAME_DIR .. "src/mame/drivers/gladiatr.cpp",
+ MAME_DIR .. "src/mame/includes/gladiatr.h",
+ MAME_DIR .. "src/mame/video/gladiatr.cpp",
+ MAME_DIR .. "src/mame/drivers/gokidetor.cpp",
+ MAME_DIR .. "src/mame/drivers/grchamp.cpp",
+ MAME_DIR .. "src/mame/includes/grchamp.h",
+ MAME_DIR .. "src/mame/audio/grchamp.cpp",
+ MAME_DIR .. "src/mame/video/grchamp.cpp",
+ MAME_DIR .. "src/mame/drivers/groundfx.cpp",
+ MAME_DIR .. "src/mame/includes/groundfx.h",
+ MAME_DIR .. "src/mame/video/groundfx.cpp",
+ MAME_DIR .. "src/mame/drivers/gsword.cpp",
+ MAME_DIR .. "src/mame/includes/gsword.h",
+ MAME_DIR .. "src/mame/machine/tait8741.cpp",
+ MAME_DIR .. "src/mame/machine/tait8741.h",
+ MAME_DIR .. "src/mame/video/gsword.cpp",
+ MAME_DIR .. "src/mame/drivers/gunbustr.cpp",
+ MAME_DIR .. "src/mame/includes/gunbustr.h",
+ MAME_DIR .. "src/mame/video/gunbustr.cpp",
+ MAME_DIR .. "src/mame/drivers/halleys.cpp",
+ MAME_DIR .. "src/mame/drivers/heromem.cpp",
+ MAME_DIR .. "src/mame/drivers/invqix.cpp",
+ MAME_DIR .. "src/mame/drivers/jollyjgr.cpp",
+ MAME_DIR .. "src/mame/drivers/ksayakyu.cpp",
+ MAME_DIR .. "src/mame/includes/ksayakyu.h",
+ MAME_DIR .. "src/mame/video/ksayakyu.cpp",
+ MAME_DIR .. "src/mame/drivers/lgp.cpp",
+ MAME_DIR .. "src/mame/drivers/lkage.cpp",
+ MAME_DIR .. "src/mame/includes/lkage.h",
+ MAME_DIR .. "src/mame/video/lkage.cpp",
+ MAME_DIR .. "src/mame/drivers/lsasquad.cpp",
+ MAME_DIR .. "src/mame/includes/lsasquad.h",
+ MAME_DIR .. "src/mame/machine/lsasquad.cpp",
+ MAME_DIR .. "src/mame/video/lsasquad.cpp",
+ MAME_DIR .. "src/mame/drivers/marinedt.cpp",
+ MAME_DIR .. "src/mame/drivers/kikikai.cpp",
+ MAME_DIR .. "src/mame/includes/kikikai.h",
+ MAME_DIR .. "src/mame/machine/kikikai.cpp",
+ MAME_DIR .. "src/mame/video/kikikai.cpp",
+ MAME_DIR .. "src/mame/drivers/minivadr.cpp",
+ MAME_DIR .. "src/mame/drivers/missb2.cpp",
+ MAME_DIR .. "src/mame/drivers/mlanding.cpp",
+ MAME_DIR .. "src/mame/drivers/msisaac.cpp",
+ MAME_DIR .. "src/mame/includes/msisaac.h",
+ MAME_DIR .. "src/mame/video/msisaac.cpp",
+ MAME_DIR .. "src/mame/drivers/ninjaw.cpp",
+ MAME_DIR .. "src/mame/includes/ninjaw.h",
+ MAME_DIR .. "src/mame/video/ninjaw.cpp",
+ MAME_DIR .. "src/mame/drivers/nycaptor.cpp",
+ MAME_DIR .. "src/mame/includes/nycaptor.h",
+ MAME_DIR .. "src/mame/video/nycaptor.cpp",
+ MAME_DIR .. "src/mame/drivers/opwolf.cpp",
+ MAME_DIR .. "src/mame/drivers/othunder.cpp",
+ MAME_DIR .. "src/mame/includes/othunder.h",
+ MAME_DIR .. "src/mame/video/othunder.cpp",
+ MAME_DIR .. "src/mame/drivers/pitnrun.cpp",
+ MAME_DIR .. "src/mame/includes/pitnrun.h",
+ MAME_DIR .. "src/mame/machine/pitnrun.cpp",
+ MAME_DIR .. "src/mame/video/pitnrun.cpp",
+ MAME_DIR .. "src/mame/drivers/qix.cpp",
+ MAME_DIR .. "src/mame/includes/qix.h",
+ MAME_DIR .. "src/mame/machine/qix.cpp",
+ MAME_DIR .. "src/mame/audio/qix.cpp",
+ MAME_DIR .. "src/mame/video/qix.cpp",
+ MAME_DIR .. "src/mame/drivers/rbisland.cpp",
+ MAME_DIR .. "src/mame/includes/rbisland.h",
+ MAME_DIR .. "src/mame/video/rbisland.cpp",
+ MAME_DIR .. "src/mame/drivers/rastan.cpp",
+ MAME_DIR .. "src/mame/includes/rastan.h",
+ MAME_DIR .. "src/mame/video/rastan.cpp",
+ MAME_DIR .. "src/mame/drivers/retofinv.cpp",
+ MAME_DIR .. "src/mame/includes/retofinv.h",
+ MAME_DIR .. "src/mame/video/retofinv.cpp",
+ MAME_DIR .. "src/mame/drivers/rollrace.cpp",
+ MAME_DIR .. "src/mame/includes/rollrace.h",
+ MAME_DIR .. "src/mame/video/rollrace.cpp",
+ MAME_DIR .. "src/mame/drivers/sbmjb.cpp",
+ MAME_DIR .. "src/mame/drivers/sbowling.cpp",
+ MAME_DIR .. "src/mame/drivers/scyclone.cpp",
+ MAME_DIR .. "src/mame/drivers/slapshot.cpp",
+ MAME_DIR .. "src/mame/includes/slapshot.h",
+ MAME_DIR .. "src/mame/video/slapshot.cpp",
+ MAME_DIR .. "src/mame/drivers/spdheat.cpp",
+ MAME_DIR .. "src/mame/includes/spdheat.h",
+ MAME_DIR .. "src/mame/drivers/ssrj.cpp",
+ MAME_DIR .. "src/mame/includes/ssrj.h",
+ MAME_DIR .. "src/mame/video/ssrj.cpp",
+ MAME_DIR .. "src/mame/drivers/superchs.cpp",
+ MAME_DIR .. "src/mame/includes/superchs.h",
+ MAME_DIR .. "src/mame/video/superchs.cpp",
+ MAME_DIR .. "src/mame/drivers/superqix.cpp",
+ MAME_DIR .. "src/mame/includes/superqix.h",
+ MAME_DIR .. "src/mame/video/superqix.cpp",
+ MAME_DIR .. "src/mame/drivers/taito_b.cpp",
+ MAME_DIR .. "src/mame/includes/taito_b.h",
+ MAME_DIR .. "src/mame/video/taito_b.cpp",
+ MAME_DIR .. "src/mame/includes/taitoipt.h",
+ MAME_DIR .. "src/mame/drivers/taito_f2.cpp",
+ MAME_DIR .. "src/mame/includes/taito_f2.h",
+ MAME_DIR .. "src/mame/video/taito_f2.cpp",
+ MAME_DIR .. "src/mame/drivers/taito_f3.cpp",
+ MAME_DIR .. "src/mame/includes/taito_f3.h",
+ MAME_DIR .. "src/mame/video/taito_f3.cpp",
+ MAME_DIR .. "src/mame/audio/taito_en.cpp",
+ MAME_DIR .. "src/mame/audio/taito_en.h",
+ MAME_DIR .. "src/mame/drivers/taito_h.cpp",
+ MAME_DIR .. "src/mame/includes/taito_h.h",
+ MAME_DIR .. "src/mame/video/taito_h.cpp",
+ MAME_DIR .. "src/mame/drivers/taito_l.cpp",
+ MAME_DIR .. "src/mame/includes/taito_l.h",
+ MAME_DIR .. "src/mame/video/taito_l.cpp",
+ MAME_DIR .. "src/mame/drivers/taito_x.cpp",
+ MAME_DIR .. "src/mame/includes/taito_x.h",
+ MAME_DIR .. "src/mame/machine/taitocchip.cpp",
+ MAME_DIR .. "src/mame/machine/taitocchip.h",
+ MAME_DIR .. "src/mame/drivers/taito_z.cpp",
+ MAME_DIR .. "src/mame/includes/taito_z.h",
+ MAME_DIR .. "src/mame/video/taito_z.cpp",
+ MAME_DIR .. "src/mame/drivers/taito_o.cpp",
+ MAME_DIR .. "src/mame/includes/taito_o.h",
+ MAME_DIR .. "src/mame/video/taito_o.cpp",
+ MAME_DIR .. "src/mame/drivers/taitoair.cpp",
+ MAME_DIR .. "src/mame/includes/taitoair.h",
+ MAME_DIR .. "src/mame/video/taitoair.cpp",
+ MAME_DIR .. "src/mame/drivers/taitogn.cpp",
+ MAME_DIR .. "src/mame/drivers/taitojc.cpp",
+ MAME_DIR .. "src/mame/includes/taitojc.h",
+ MAME_DIR .. "src/mame/video/taitojc.cpp",
+ MAME_DIR .. "src/mame/drivers/taitopjc.cpp",
+ MAME_DIR .. "src/mame/drivers/taitosj.cpp",
+ MAME_DIR .. "src/mame/includes/taitosj.h",
+ MAME_DIR .. "src/mame/machine/taitosj.cpp",
+ MAME_DIR .. "src/mame/video/taitosj.cpp",
+ MAME_DIR .. "src/mame/drivers/taitottl.cpp",
+ MAME_DIR .. "src/mame/drivers/taitotz.cpp",
+ MAME_DIR .. "src/mame/drivers/taitotx.cpp",
+ MAME_DIR .. "src/mame/drivers/taitowlf.cpp",
+ MAME_DIR .. "src/mame/drivers/tnzs.cpp",
+ MAME_DIR .. "src/mame/includes/tnzs.h",
+ MAME_DIR .. "src/mame/machine/tnzs.cpp",
+ MAME_DIR .. "src/mame/video/tnzs.cpp",
+ MAME_DIR .. "src/mame/drivers/topspeed.cpp",
+ MAME_DIR .. "src/mame/includes/topspeed.h",
+ MAME_DIR .. "src/mame/video/topspeed.cpp",
+ MAME_DIR .. "src/mame/drivers/tsamurai.cpp",
+ MAME_DIR .. "src/mame/includes/tsamurai.h",
+ MAME_DIR .. "src/mame/video/tsamurai.cpp",
+ MAME_DIR .. "src/mame/drivers/undrfire.cpp",
+ MAME_DIR .. "src/mame/includes/undrfire.h",
+ MAME_DIR .. "src/mame/video/undrfire.cpp",
+ MAME_DIR .. "src/mame/drivers/volfied.cpp",
+ MAME_DIR .. "src/mame/includes/volfied.h",
+ MAME_DIR .. "src/mame/video/volfied.cpp",
+ MAME_DIR .. "src/mame/drivers/warriorb.cpp",
+ MAME_DIR .. "src/mame/includes/warriorb.h",
+ MAME_DIR .. "src/mame/video/warriorb.cpp",
+ MAME_DIR .. "src/mame/drivers/wgp.cpp",
+ MAME_DIR .. "src/mame/includes/wgp.h",
+ MAME_DIR .. "src/mame/video/wgp.cpp",
+ MAME_DIR .. "src/mame/drivers/wyvernf0.cpp",
+ MAME_DIR .. "src/mame/audio/taitosnd.cpp",
+ MAME_DIR .. "src/mame/audio/taitosnd.h",
+ MAME_DIR .. "src/mame/audio/taito_zm.cpp",
+ MAME_DIR .. "src/mame/audio/taito_zm.h",
+ MAME_DIR .. "src/mame/machine/taitoio.cpp",
+ MAME_DIR .. "src/mame/machine/taitoio.h",
+ MAME_DIR .. "src/mame/machine/taitoio_yoke.cpp",
+ MAME_DIR .. "src/mame/machine/taitoio_yoke.h",
+ MAME_DIR .. "src/mame/video/taito_helper.cpp",
+ MAME_DIR .. "src/mame/video/taito_helper.h",
+ MAME_DIR .. "src/mame/video/pc080sn.cpp",
+ MAME_DIR .. "src/mame/video/pc080sn.h",
+ MAME_DIR .. "src/mame/video/pc090oj.cpp",
+ MAME_DIR .. "src/mame/video/pc090oj.h",
+ MAME_DIR .. "src/mame/video/tc0080vco.cpp",
+ MAME_DIR .. "src/mame/video/tc0080vco.h",
+ MAME_DIR .. "src/mame/video/tc0100scn.cpp",
+ MAME_DIR .. "src/mame/video/tc0100scn.h",
+ MAME_DIR .. "src/mame/video/tc0150rod.cpp",
+ MAME_DIR .. "src/mame/video/tc0150rod.h",
+ MAME_DIR .. "src/mame/video/tc0280grd.cpp",
+ MAME_DIR .. "src/mame/video/tc0280grd.h",
+ MAME_DIR .. "src/mame/video/tc0360pri.cpp",
+ MAME_DIR .. "src/mame/video/tc0360pri.h",
+ MAME_DIR .. "src/mame/video/tc0480scp.cpp",
+ MAME_DIR .. "src/mame/video/tc0480scp.h",
+ MAME_DIR .. "src/mame/video/tc0110pcr.cpp",
+ MAME_DIR .. "src/mame/video/tc0110pcr.h",
+ MAME_DIR .. "src/mame/video/tc0180vcu.cpp",
+ MAME_DIR .. "src/mame/video/tc0180vcu.h",
+ MAME_DIR .. "src/mame/video/tc0780fpa.cpp",
+ MAME_DIR .. "src/mame/video/tc0780fpa.h",
+}
+
+createMAMEProjects(_target, _subtarget, "tatsumi")
+files {
+ MAME_DIR .. "src/mame/drivers/kingdrby.cpp",
+ MAME_DIR .. "src/mame/drivers/lockon.cpp",
+ MAME_DIR .. "src/mame/includes/lockon.h",
+ MAME_DIR .. "src/mame/video/lockon.cpp",
+ MAME_DIR .. "src/mame/drivers/tatsumi.cpp",
+ MAME_DIR .. "src/mame/includes/tatsumi.h",
+ MAME_DIR .. "src/mame/machine/tatsumi.cpp",
+ MAME_DIR .. "src/mame/video/tatsumi.cpp",
+ MAME_DIR .. "src/mame/drivers/tx1.cpp",
+ MAME_DIR .. "src/mame/includes/tx1.h",
+ MAME_DIR .. "src/mame/machine/tx1.cpp",
+ MAME_DIR .. "src/mame/audio/tx1.cpp",
+ MAME_DIR .. "src/mame/audio/tx1.h",
+ MAME_DIR .. "src/mame/video/tx1.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "tch")
+files {
+ MAME_DIR .. "src/mame/drivers/kickgoal.cpp",
+ MAME_DIR .. "src/mame/includes/kickgoal.h",
+ MAME_DIR .. "src/mame/video/kickgoal.cpp",
+ MAME_DIR .. "src/mame/drivers/littlerb.cpp",
+ MAME_DIR .. "src/mame/drivers/rltennis.cpp",
+ MAME_DIR .. "src/mame/includes/rltennis.h",
+ MAME_DIR .. "src/mame/video/rltennis.cpp",
+ MAME_DIR .. "src/mame/drivers/speedspn.cpp",
+ MAME_DIR .. "src/mame/includes/speedspn.h",
+ MAME_DIR .. "src/mame/video/speedspn.cpp",
+ MAME_DIR .. "src/mame/drivers/wheelfir.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "tecfri")
+files {
+ MAME_DIR .. "src/mame/drivers/ambush.cpp",
+ MAME_DIR .. "src/mame/drivers/holeland.cpp",
+ MAME_DIR .. "src/mame/includes/holeland.h",
+ MAME_DIR .. "src/mame/video/holeland.cpp",
+ MAME_DIR .. "src/mame/drivers/sauro.cpp",
+ MAME_DIR .. "src/mame/includes/sauro.h",
+ MAME_DIR .. "src/mame/video/sauro.cpp",
+ MAME_DIR .. "src/mame/drivers/speedbal.cpp",
+ MAME_DIR .. "src/mame/includes/speedbal.h",
+ MAME_DIR .. "src/mame/video/speedbal.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "technos")
+files {
+ MAME_DIR .. "src/mame/drivers/battlane.cpp",
+ MAME_DIR .. "src/mame/includes/battlane.h",
+ MAME_DIR .. "src/mame/video/battlane.cpp",
+ MAME_DIR .. "src/mame/drivers/blockout.cpp",
+ MAME_DIR .. "src/mame/includes/blockout.h",
+ MAME_DIR .. "src/mame/video/blockout.cpp",
+ MAME_DIR .. "src/mame/drivers/bogeyman.cpp",
+ MAME_DIR .. "src/mame/includes/bogeyman.h",
+ MAME_DIR .. "src/mame/video/bogeyman.cpp",
+ MAME_DIR .. "src/mame/drivers/chinagat.cpp",
+ MAME_DIR .. "src/mame/drivers/ddragon.cpp",
+ MAME_DIR .. "src/mame/includes/ddragon.h",
+ MAME_DIR .. "src/mame/video/ddragon.cpp",
+ MAME_DIR .. "src/mame/drivers/ddragon3.cpp",
+ MAME_DIR .. "src/mame/includes/ddragon3.h",
+ MAME_DIR .. "src/mame/video/ddragon3.cpp",
+ MAME_DIR .. "src/mame/drivers/dogfgt.cpp",
+ MAME_DIR .. "src/mame/includes/dogfgt.h",
+ MAME_DIR .. "src/mame/video/dogfgt.cpp",
+ MAME_DIR .. "src/mame/drivers/matmania.cpp",
+ MAME_DIR .. "src/mame/includes/matmania.h",
+ MAME_DIR .. "src/mame/video/matmania.cpp",
+ MAME_DIR .. "src/mame/drivers/mystston.cpp",
+ MAME_DIR .. "src/mame/includes/mystston.h",
+ MAME_DIR .. "src/mame/video/mystston.cpp",
+ MAME_DIR .. "src/mame/drivers/renegade.cpp",
+ MAME_DIR .. "src/mame/includes/renegade.h",
+ MAME_DIR .. "src/mame/video/renegade.cpp",
+ MAME_DIR .. "src/mame/drivers/scregg.cpp",
+ MAME_DIR .. "src/mame/drivers/shadfrce.cpp",
+ MAME_DIR .. "src/mame/includes/shadfrce.h",
+ MAME_DIR .. "src/mame/video/shadfrce.cpp",
+ MAME_DIR .. "src/mame/drivers/spdodgeb.cpp",
+ MAME_DIR .. "src/mame/includes/spdodgeb.h",
+ MAME_DIR .. "src/mame/video/spdodgeb.cpp",
+ MAME_DIR .. "src/mame/drivers/ssozumo.cpp",
+ MAME_DIR .. "src/mame/includes/ssozumo.h",
+ MAME_DIR .. "src/mame/video/ssozumo.cpp",
+ MAME_DIR .. "src/mame/drivers/tagteam.cpp",
+ MAME_DIR .. "src/mame/includes/tagteam.h",
+ MAME_DIR .. "src/mame/video/tagteam.cpp",
+ MAME_DIR .. "src/mame/drivers/vball.cpp",
+ MAME_DIR .. "src/mame/includes/vball.h",
+ MAME_DIR .. "src/mame/video/vball.cpp",
+ MAME_DIR .. "src/mame/drivers/wwfsstar.cpp",
+ MAME_DIR .. "src/mame/includes/wwfsstar.h",
+ MAME_DIR .. "src/mame/video/wwfsstar.cpp",
+ MAME_DIR .. "src/mame/drivers/xain.cpp",
+ MAME_DIR .. "src/mame/includes/xain.h",
+ MAME_DIR .. "src/mame/video/xain.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "tehkan")
+files {
+ MAME_DIR .. "src/mame/video/tecmo_spr.cpp",
+ MAME_DIR .. "src/mame/video/tecmo_spr.h",
+ MAME_DIR .. "src/mame/video/tecmo_mix.cpp",
+ MAME_DIR .. "src/mame/video/tecmo_mix.h",
+ MAME_DIR .. "src/mame/drivers/bombjack.cpp",
+ MAME_DIR .. "src/mame/includes/bombjack.h",
+ MAME_DIR .. "src/mame/video/bombjack.cpp",
+ MAME_DIR .. "src/mame/drivers/gaiden.cpp",
+ MAME_DIR .. "src/mame/includes/gaiden.h",
+ MAME_DIR .. "src/mame/video/gaiden.cpp",
+ MAME_DIR .. "src/mame/drivers/lvcards.cpp",
+ MAME_DIR .. "src/mame/includes/lvcards.h",
+ MAME_DIR .. "src/mame/video/lvcards.cpp",
+ MAME_DIR .. "src/mame/drivers/pbaction.cpp",
+ MAME_DIR .. "src/mame/includes/pbaction.h",
+ MAME_DIR .. "src/mame/video/pbaction.cpp",
+ MAME_DIR .. "src/mame/drivers/senjyo.cpp",
+ MAME_DIR .. "src/mame/includes/senjyo.h",
+ MAME_DIR .. "src/mame/audio/senjyo.cpp",
+ MAME_DIR .. "src/mame/video/senjyo.cpp",
+ MAME_DIR .. "src/mame/drivers/solomon.cpp",
+ MAME_DIR .. "src/mame/includes/solomon.h",
+ MAME_DIR .. "src/mame/video/solomon.cpp",
+ MAME_DIR .. "src/mame/drivers/spbactn.cpp",
+ MAME_DIR .. "src/mame/includes/spbactn.h",
+ MAME_DIR .. "src/mame/video/spbactn.cpp",
+ MAME_DIR .. "src/mame/drivers/tbowl.cpp",
+ MAME_DIR .. "src/mame/includes/tbowl.h",
+ MAME_DIR .. "src/mame/video/tbowl.cpp",
+ MAME_DIR .. "src/mame/drivers/tecmo.cpp",
+ MAME_DIR .. "src/mame/includes/tecmo.h",
+ MAME_DIR .. "src/mame/video/tecmo.cpp",
+ MAME_DIR .. "src/mame/drivers/tecmo16.cpp",
+ MAME_DIR .. "src/mame/includes/tecmo16.h",
+ MAME_DIR .. "src/mame/video/tecmo16.cpp",
+ MAME_DIR .. "src/mame/drivers/tecmosys.cpp",
+ MAME_DIR .. "src/mame/includes/tecmosys.h",
+ MAME_DIR .. "src/mame/machine/tecmosys.cpp",
+ MAME_DIR .. "src/mame/video/tecmosys.cpp",
+ MAME_DIR .. "src/mame/drivers/tehkanwc.cpp",
+ MAME_DIR .. "src/mame/includes/tehkanwc.h",
+ MAME_DIR .. "src/mame/video/tehkanwc.cpp",
+ MAME_DIR .. "src/mame/drivers/wc90.cpp",
+ MAME_DIR .. "src/mame/includes/wc90.h",
+ MAME_DIR .. "src/mame/video/wc90.cpp",
+ MAME_DIR .. "src/mame/drivers/wc90b.cpp",
+ MAME_DIR .. "src/mame/includes/wc90b.h",
+ MAME_DIR .. "src/mame/video/wc90b.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "terminal")
+files {
+ MAME_DIR .. "src/mame/drivers/istrebiteli.cpp",
+ MAME_DIR .. "src/mame/drivers/tiamc1.cpp",
+ MAME_DIR .. "src/mame/includes/tiamc1.h",
+ MAME_DIR .. "src/mame/video/tiamc1.cpp",
+ MAME_DIR .. "src/mame/audio/tiamc1.cpp",
+ MAME_DIR .. "src/mame/audio/tiamc1.h",
+}
+
+createMAMEProjects(_target, _subtarget, "thepit")
+files {
+ MAME_DIR .. "src/mame/drivers/thepit.cpp",
+ MAME_DIR .. "src/mame/includes/thepit.h",
+ MAME_DIR .. "src/mame/video/thepit.cpp",
+ MAME_DIR .. "src/mame/drivers/timelimt.cpp",
+ MAME_DIR .. "src/mame/includes/timelimt.h",
+ MAME_DIR .. "src/mame/video/timelimt.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "toaplan")
+files {
+ MAME_DIR .. "src/mame/drivers/mjsister.cpp",
+ MAME_DIR .. "src/mame/drivers/slapfght.cpp",
+ MAME_DIR .. "src/mame/includes/slapfght.h",
+ MAME_DIR .. "src/mame/machine/slapfght.cpp",
+ MAME_DIR .. "src/mame/video/slapfght.cpp",
+ MAME_DIR .. "src/mame/drivers/snowbros.cpp",
+ MAME_DIR .. "src/mame/includes/snowbros.h",
+ MAME_DIR .. "src/mame/video/snowbros.cpp",
+ MAME_DIR .. "src/mame/video/kan_pand.cpp",
+ MAME_DIR .. "src/mame/video/kan_pand.h",
+ MAME_DIR .. "src/mame/drivers/toaplan1.cpp",
+ MAME_DIR .. "src/mame/includes/toaplan1.h",
+ MAME_DIR .. "src/mame/machine/toaplan1.cpp",
+ MAME_DIR .. "src/mame/video/toaplan1.cpp",
+ MAME_DIR .. "src/mame/includes/toaplipt.h",
+ MAME_DIR .. "src/mame/drivers/toaplan2.cpp",
+ MAME_DIR .. "src/mame/includes/toaplan2.h",
+ MAME_DIR .. "src/mame/video/toaplan2.cpp",
+ MAME_DIR .. "src/mame/video/gp9001.cpp",
+ MAME_DIR .. "src/mame/video/gp9001.h",
+ MAME_DIR .. "src/mame/drivers/twincobr.cpp",
+ MAME_DIR .. "src/mame/includes/twincobr.h",
+ MAME_DIR .. "src/mame/machine/twincobr.cpp",
+ MAME_DIR .. "src/mame/video/twincobr.cpp",
+ MAME_DIR .. "src/mame/drivers/wardner.cpp",
+ MAME_DIR .. "src/mame/video/toaplan_scu.cpp",
+ MAME_DIR .. "src/mame/video/toaplan_scu.h",
+}
+
+createMAMEProjects(_target, _subtarget, "unico")
+files {
+ MAME_DIR .. "src/mame/drivers/drgnmst.cpp",
+ MAME_DIR .. "src/mame/includes/drgnmst.h",
+ MAME_DIR .. "src/mame/video/drgnmst.cpp",
+ MAME_DIR .. "src/mame/drivers/silkroad.cpp",
+ MAME_DIR .. "src/mame/includes/silkroad.h",
+ MAME_DIR .. "src/mame/video/silkroad.cpp",
+ MAME_DIR .. "src/mame/drivers/unianapc.cpp",
+ MAME_DIR .. "src/mame/drivers/unico.cpp",
+ MAME_DIR .. "src/mame/includes/unico.h",
+ MAME_DIR .. "src/mame/video/unico.cpp",
+ MAME_DIR .. "src/mame/drivers/goori.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "univers")
+files {
+ MAME_DIR .. "src/mame/audio/cheekyms.cpp",
+ MAME_DIR .. "src/mame/audio/cheekyms.h",
+ MAME_DIR .. "src/mame/audio/nl_cheekyms.cpp",
+ MAME_DIR .. "src/mame/audio/nl_cheekyms.h",
+ MAME_DIR .. "src/mame/drivers/cheekyms.cpp",
+ MAME_DIR .. "src/mame/includes/cheekyms.h",
+ MAME_DIR .. "src/mame/video/cheekyms.cpp",
+ MAME_DIR .. "src/mame/drivers/cosmic.cpp",
+ MAME_DIR .. "src/mame/includes/cosmic.h",
+ MAME_DIR .. "src/mame/video/cosmic.cpp",
+ MAME_DIR .. "src/mame/drivers/cosmicg.cpp",
+ MAME_DIR .. "src/mame/drivers/docastle.cpp",
+ MAME_DIR .. "src/mame/includes/docastle.h",
+ MAME_DIR .. "src/mame/machine/docastle.cpp",
+ MAME_DIR .. "src/mame/video/docastle.cpp",
+ MAME_DIR .. "src/mame/drivers/getaway.cpp",
+ MAME_DIR .. "src/mame/drivers/ladybug.cpp",
+ MAME_DIR .. "src/mame/includes/ladybug.h",
+ MAME_DIR .. "src/mame/video/ladybug.cpp",
+ MAME_DIR .. "src/mame/video/ladybug.h",
+ MAME_DIR .. "src/mame/drivers/mrdo.cpp",
+ MAME_DIR .. "src/mame/includes/mrdo.h",
+ MAME_DIR .. "src/mame/video/mrdo.cpp",
+ MAME_DIR .. "src/mame/drivers/redclash.cpp",
+ MAME_DIR .. "src/mame/includes/redclash.h",
+ MAME_DIR .. "src/mame/video/redclash.cpp",
+ MAME_DIR .. "src/mame/drivers/superdq.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "upl")
+files {
+ MAME_DIR .. "src/mame/drivers/mouser.cpp",
+ MAME_DIR .. "src/mame/includes/mouser.h",
+ MAME_DIR .. "src/mame/video/mouser.cpp",
+ MAME_DIR .. "src/mame/drivers/ninjakd2.cpp",
+ MAME_DIR .. "src/mame/includes/ninjakd2.h",
+ MAME_DIR .. "src/mame/video/ninjakd2.cpp",
+ MAME_DIR .. "src/mame/drivers/nova2001.cpp",
+ MAME_DIR .. "src/mame/includes/nova2001.h",
+ MAME_DIR .. "src/mame/video/nova2001.cpp",
+ MAME_DIR .. "src/mame/drivers/xxmissio.cpp",
+ MAME_DIR .. "src/mame/includes/xxmissio.h",
+ MAME_DIR .. "src/mame/video/xxmissio.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "valadon")
+files {
+ MAME_DIR .. "src/mame/drivers/bagman.cpp",
+ MAME_DIR .. "src/mame/includes/bagman.h",
+ MAME_DIR .. "src/mame/machine/bagman.cpp",
+ MAME_DIR .. "src/mame/video/bagman.cpp",
+ MAME_DIR .. "src/mame/drivers/tankbust.cpp",
+ MAME_DIR .. "src/mame/includes/tankbust.h",
+ MAME_DIR .. "src/mame/video/tankbust.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "venture")
+files {
+ MAME_DIR .. "src/mame/drivers/looping.cpp",
+ MAME_DIR .. "src/mame/drivers/spcforce.cpp",
+ MAME_DIR .. "src/mame/includes/spcforce.h",
+ MAME_DIR .. "src/mame/video/spcforce.cpp",
+ MAME_DIR .. "src/mame/drivers/suprridr.cpp",
+ MAME_DIR .. "src/mame/includes/suprridr.h",
+ MAME_DIR .. "src/mame/video/suprridr.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "vsystem")
+files {
+ MAME_DIR .. "src/mame/machine/vs9209.cpp",
+ MAME_DIR .. "src/mame/machine/vs9209.h",
+ MAME_DIR .. "src/mame/video/vsystem_gga.cpp",
+ MAME_DIR .. "src/mame/video/vsystem_gga.h",
+ MAME_DIR .. "src/mame/video/vsystem_spr.cpp",
+ MAME_DIR .. "src/mame/video/vsystem_spr.h",
+ MAME_DIR .. "src/mame/video/vsystem_spr2.cpp",
+ MAME_DIR .. "src/mame/video/vsystem_spr2.h",
+ MAME_DIR .. "src/mame/drivers/aerofgt.cpp",
+ MAME_DIR .. "src/mame/includes/aerofgt.h",
+ MAME_DIR .. "src/mame/video/aerofgt.cpp",
+ MAME_DIR .. "src/mame/drivers/crshrace.cpp",
+ MAME_DIR .. "src/mame/includes/crshrace.h",
+ MAME_DIR .. "src/mame/video/crshrace.cpp",
+ MAME_DIR .. "src/mame/drivers/f1gp.cpp",
+ MAME_DIR .. "src/mame/includes/f1gp.h",
+ MAME_DIR .. "src/mame/video/f1gp.cpp",
+ MAME_DIR .. "src/mame/drivers/fromance.cpp",
+ MAME_DIR .. "src/mame/includes/fromance.h",
+ MAME_DIR .. "src/mame/video/fromance.cpp",
+ MAME_DIR .. "src/mame/drivers/fromanc2.cpp",
+ MAME_DIR .. "src/mame/includes/fromanc2.h",
+ MAME_DIR .. "src/mame/video/fromanc2.cpp",
+ MAME_DIR .. "src/mame/drivers/gstriker.cpp",
+ MAME_DIR .. "src/mame/includes/gstriker.h",
+ MAME_DIR .. "src/mame/video/gstriker.cpp",
+ MAME_DIR .. "src/mame/video/mb60553.cpp",
+ MAME_DIR .. "src/mame/video/mb60553.h",
+ MAME_DIR .. "src/mame/video/vs920a.cpp",
+ MAME_DIR .. "src/mame/video/vs920a.h",
+ MAME_DIR .. "src/mame/drivers/inufuku.cpp",
+ MAME_DIR .. "src/mame/drivers/ojankohs.cpp",
+ MAME_DIR .. "src/mame/includes/ojankohs.h",
+ MAME_DIR .. "src/mame/video/ojankohs.cpp",
+ MAME_DIR .. "src/mame/drivers/pipedrm.cpp",
+ MAME_DIR .. "src/mame/drivers/rpunch.cpp",
+ MAME_DIR .. "src/mame/includes/rpunch.h",
+ MAME_DIR .. "src/mame/video/rpunch.cpp",
+ MAME_DIR .. "src/mame/drivers/suprslam.cpp",
+ MAME_DIR .. "src/mame/includes/suprslam.h",
+ MAME_DIR .. "src/mame/video/suprslam.cpp",
+ MAME_DIR .. "src/mame/drivers/tail2nos.cpp",
+ MAME_DIR .. "src/mame/includes/tail2nos.h",
+ MAME_DIR .. "src/mame/video/tail2nos.cpp",
+ MAME_DIR .. "src/mame/drivers/taotaido.cpp",
+ MAME_DIR .. "src/mame/includes/taotaido.h",
+ MAME_DIR .. "src/mame/video/taotaido.cpp",
+ MAME_DIR .. "src/mame/drivers/welltris.cpp",
+ MAME_DIR .. "src/mame/includes/welltris.h",
+ MAME_DIR .. "src/mame/video/welltris.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "wing")
+files {
+ MAME_DIR .. "src/mame/drivers/lucky37.cpp",
+ MAME_DIR .. "src/mame/drivers/lucky74.cpp",
+ MAME_DIR .. "src/mame/includes/lucky74.h",
+ MAME_DIR .. "src/mame/video/lucky74.cpp",
+ MAME_DIR .. "src/mame/drivers/luckgrln.cpp",
+ MAME_DIR .. "src/mame/drivers/pinkiri8.cpp",
+ MAME_DIR .. "src/mame/drivers/slotcarn.cpp",
+ MAME_DIR .. "src/mame/drivers/superwng.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "yunsung")
+files {
+ MAME_DIR .. "src/mame/drivers/nmg5.cpp",
+ MAME_DIR .. "src/mame/drivers/paradise.cpp",
+ MAME_DIR .. "src/mame/includes/paradise.h",
+ MAME_DIR .. "src/mame/video/paradise.cpp",
+ MAME_DIR .. "src/mame/drivers/yunsung8.cpp",
+ MAME_DIR .. "src/mame/includes/yunsung8.h",
+ MAME_DIR .. "src/mame/video/yunsung8.cpp",
+ MAME_DIR .. "src/mame/drivers/yunsun16.cpp",
+ MAME_DIR .. "src/mame/includes/yunsun16.h",
+ MAME_DIR .. "src/mame/video/yunsun16.cpp",
+}
+
+createMAMEProjects(_target, _subtarget, "zaccaria")
+files {
+ MAME_DIR .. "src/mame/audio/nl_zac1b11142.cpp",
+ MAME_DIR .. "src/mame/audio/nl_zac1b11142.h",
+ MAME_DIR .. "src/mame/audio/zaccaria.cpp",
+ MAME_DIR .. "src/mame/audio/zaccaria.h",
+ MAME_DIR .. "src/mame/drivers/laserbat.cpp",
+ MAME_DIR .. "src/mame/includes/laserbat.h",
+ MAME_DIR .. "src/mame/video/laserbat.cpp",
+ MAME_DIR .. "src/mame/audio/laserbat.cpp",
+ MAME_DIR .. "src/mame/drivers/seabattl.cpp",
+ MAME_DIR .. "src/mame/drivers/zac2650.cpp",
+ MAME_DIR .. "src/mame/includes/zac2650.h",
+ MAME_DIR .. "src/mame/video/zac2650.cpp",
+ MAME_DIR .. "src/mame/drivers/zaccaria.cpp",
+ MAME_DIR .. "src/mame/includes/zaccaria.h",
+ MAME_DIR .. "src/mame/video/zaccaria.cpp",
+}
+
+--------------------------------------------------
+-- pinball drivers
+--------------------------------------------------
+
+createMAMEProjects(_target, _subtarget, "pinball")
+files {
+ MAME_DIR .. "src/mame/drivers/allied.cpp",
+ MAME_DIR .. "src/mame/drivers/alvg.cpp",
+ MAME_DIR .. "src/mame/drivers/atari_s1.cpp",
+ MAME_DIR .. "src/mame/drivers/atari_s2.cpp",
+ MAME_DIR .. "src/mame/drivers/barni.cpp",
+ MAME_DIR .. "src/mame/drivers/bingo.cpp",
+ MAME_DIR .. "src/mame/drivers/by17.cpp",
+ MAME_DIR .. "src/mame/drivers/by35.cpp",
+ MAME_DIR .. "src/mame/drivers/by6803.cpp",
+ MAME_DIR .. "src/mame/drivers/by68701.cpp",
+ MAME_DIR .. "src/mame/drivers/byvid.cpp",
+ MAME_DIR .. "src/mame/drivers/capcom.cpp",
+ MAME_DIR .. "src/mame/drivers/de_2.cpp",
+ MAME_DIR .. "src/mame/drivers/de_3.cpp",
+ MAME_DIR .. "src/mame/machine/decopincpu.cpp",
+ MAME_DIR .. "src/mame/machine/decopincpu.h",
+ MAME_DIR .. "src/mame/video/decodmd1.cpp",
+ MAME_DIR .. "src/mame/video/decodmd1.h",
+ MAME_DIR .. "src/mame/video/decodmd2.cpp",
+ MAME_DIR .. "src/mame/video/decodmd2.h",
+ MAME_DIR .. "src/mame/video/decodmd3.cpp",
+ MAME_DIR .. "src/mame/video/decodmd3.h",
+ MAME_DIR .. "src/mame/drivers/de_3b.cpp",
+ MAME_DIR .. "src/mame/drivers/flicker.cpp",
+ MAME_DIR .. "src/mame/drivers/g627.cpp",
+ MAME_DIR .. "src/mame/drivers/gp_1.cpp",
+ MAME_DIR .. "src/mame/machine/genpin.cpp",
+ MAME_DIR .. "src/mame/machine/genpin.h",
+ MAME_DIR .. "src/mame/drivers/gp_2.cpp",
+ MAME_DIR .. "src/mame/drivers/gts1.cpp",
+ MAME_DIR .. "src/mame/drivers/gts3.cpp",
+ MAME_DIR .. "src/mame/drivers/gts3a.cpp",
+ MAME_DIR .. "src/mame/drivers/gts80.cpp",
+ MAME_DIR .. "src/mame/drivers/gts80a.cpp",
+ MAME_DIR .. "src/mame/drivers/gts80b.cpp",
+ MAME_DIR .. "src/mame/drivers/hankin.cpp",
+ MAME_DIR .. "src/mame/drivers/icecold.cpp",
+ MAME_DIR .. "src/mame/drivers/idsa.cpp",
+ MAME_DIR .. "src/mame/drivers/inder.cpp",
+ MAME_DIR .. "src/mame/drivers/inderp.cpp",
+ MAME_DIR .. "src/mame/drivers/jeutel.cpp",
+ MAME_DIR .. "src/mame/drivers/joctronic.cpp",
+ MAME_DIR .. "src/mame/drivers/jp.cpp",
+ MAME_DIR .. "src/mame/drivers/jvh.cpp",
+ MAME_DIR .. "src/mame/drivers/kissproto.cpp",
+ MAME_DIR .. "src/mame/drivers/lckydraw.cpp",
+ MAME_DIR .. "src/mame/drivers/ltd.cpp",
+ MAME_DIR .. "src/mame/drivers/macp.cpp",
+ MAME_DIR .. "src/mame/drivers/micropin.cpp",
+ MAME_DIR .. "src/mame/drivers/missamer.cpp",
+ MAME_DIR .. "src/mame/drivers/mephistp.cpp",
+ MAME_DIR .. "src/mame/drivers/mrgame.cpp",
+ MAME_DIR .. "src/mame/drivers/nsm.cpp",
+ MAME_DIR .. "src/mame/drivers/peyper.cpp",
+ MAME_DIR .. "src/mame/drivers/play_1.cpp",
+ MAME_DIR .. "src/mame/drivers/play_2.cpp",
+ MAME_DIR .. "src/mame/drivers/play_3.cpp",
+ MAME_DIR .. "src/mame/drivers/recel.cpp",
+ MAME_DIR .. "src/mame/drivers/rowamet.cpp",
+ MAME_DIR .. "src/mame/drivers/s11.cpp",
+ MAME_DIR .. "src/mame/includes/s11.h",
+ MAME_DIR .. "src/mame/drivers/s11a.cpp",
+ MAME_DIR .. "src/mame/includes/s11a.h",
+ MAME_DIR .. "src/mame/drivers/s11b.cpp",
+ MAME_DIR .. "src/mame/includes/s11b.h",
+ MAME_DIR .. "src/mame/drivers/s11c.cpp",
+ MAME_DIR .. "src/mame/includes/s11c.h",
+ MAME_DIR .. "src/mame/audio/pinsnd88.cpp",
+ MAME_DIR .. "src/mame/audio/pinsnd88.h",
+ MAME_DIR .. "src/mame/audio/s11c_bg.cpp",
+ MAME_DIR .. "src/mame/audio/s11c_bg.h",
+ MAME_DIR .. "src/mame/drivers/s3.cpp",
+ MAME_DIR .. "src/mame/drivers/s4.cpp",
+ MAME_DIR .. "src/mame/drivers/s6.cpp",
+ MAME_DIR .. "src/mame/drivers/s6a.cpp",
+ MAME_DIR .. "src/mame/drivers/s7.cpp",
+ MAME_DIR .. "src/mame/drivers/s8.cpp",
+ MAME_DIR .. "src/mame/drivers/s8a.cpp",
+ MAME_DIR .. "src/mame/drivers/s9.cpp",
+ MAME_DIR .. "src/mame/drivers/sam.cpp",
+ MAME_DIR .. "src/mame/drivers/sleic.cpp",
+ MAME_DIR .. "src/mame/drivers/spectra.cpp",
+ MAME_DIR .. "src/mame/drivers/spinb.cpp",
+ MAME_DIR .. "src/mame/drivers/spirit76.cpp",
+ MAME_DIR .. "src/mame/drivers/st_mp100.cpp",
+ MAME_DIR .. "src/mame/drivers/st_mp200.cpp",
+ MAME_DIR .. "src/mame/drivers/stargame.cpp",
+ MAME_DIR .. "src/mame/drivers/supstarf.cpp",
+ MAME_DIR .. "src/mame/drivers/taito.cpp",
+ MAME_DIR .. "src/mame/drivers/techno.cpp",
+ MAME_DIR .. "src/mame/drivers/vd.cpp",
+ MAME_DIR .. "src/mame/drivers/whitestar.cpp",
+ MAME_DIR .. "src/mame/drivers/white_mod.cpp",
+ MAME_DIR .. "src/mame/drivers/wico.cpp",
+ MAME_DIR .. "src/mame/drivers/wpc_95.cpp",
+ MAME_DIR .. "src/mame/drivers/wpc_an.cpp",
+ MAME_DIR .. "src/mame/drivers/wpc_dcs.cpp",
+ MAME_DIR .. "src/mame/drivers/wpc_dot.cpp",
+ MAME_DIR .. "src/mame/includes/wpc_dot.h",
+ MAME_DIR .. "src/mame/drivers/wpc_flip1.cpp",
+ MAME_DIR .. "src/mame/includes/wpc_flip1.h",
+ MAME_DIR .. "src/mame/drivers/wpc_flip2.cpp",
+ MAME_DIR .. "src/mame/includes/wpc_flip2.h",
+ MAME_DIR .. "src/mame/drivers/wpc_s.cpp",
+ MAME_DIR .. "src/mame/machine/wpc.cpp",
+ MAME_DIR .. "src/mame/machine/wpc.h",
+ MAME_DIR .. "src/mame/audio/bally.cpp",
+ MAME_DIR .. "src/mame/audio/wpcsnd.cpp",
+ MAME_DIR .. "src/mame/audio/wpcsnd.h",
+ MAME_DIR .. "src/mame/video/wpc_dmd.cpp",
+ MAME_DIR .. "src/mame/video/wpc_dmd.h",
+ MAME_DIR .. "src/mame/machine/wpc_pic.cpp",
+ MAME_DIR .. "src/mame/machine/wpc_pic.h",
+ MAME_DIR .. "src/mame/machine/wpc_lamp.cpp",
+ MAME_DIR .. "src/mame/machine/wpc_lamp.h",
+ MAME_DIR .. "src/mame/machine/wpc_out.cpp",
+ MAME_DIR .. "src/mame/machine/wpc_out.h",
+ MAME_DIR .. "src/mame/machine/wpc_shift.cpp",
+ MAME_DIR .. "src/mame/machine/wpc_shift.h",
+ MAME_DIR .. "src/mame/drivers/zac_1.cpp",
+ MAME_DIR .. "src/mame/drivers/zac_2.cpp",
+ MAME_DIR .. "src/mame/drivers/zac_proto.cpp",
+ MAME_DIR .. "src/mame/drivers/zpinball.cpp",
+}
+
+--------------------------------------------------
+-- remaining drivers
+--------------------------------------------------
+
+createMAMEProjects(_target, _subtarget, "misc")
+files {
+ MAME_DIR .. "src/mame/drivers/39in1.cpp",
+ MAME_DIR .. "src/mame/drivers/3do.cpp",
+ MAME_DIR .. "src/mame/includes/3do.h",
+ MAME_DIR .. "src/mame/machine/3do.cpp",
+ MAME_DIR .. "src/mame/drivers/4enraya.cpp",
+ MAME_DIR .. "src/mame/includes/4enraya.h",
+ MAME_DIR .. "src/mame/video/4enraya.cpp",
+ MAME_DIR .. "src/mame/drivers/4enlinea.cpp",
+ MAME_DIR .. "src/mame/drivers/5clown.cpp",
+ MAME_DIR .. "src/mame/drivers/a1supply.cpp",
+ MAME_DIR .. "src/mame/drivers/acefruit.cpp",
+ MAME_DIR .. "src/mame/drivers/aces1.cpp",
+ MAME_DIR .. "src/mame/drivers/acesp.cpp",
+ MAME_DIR .. "src/mame/machine/ace_sp_reelctrl.cpp",
+ MAME_DIR .. "src/mame/machine/ace_sp_reelctrl.h",
+ MAME_DIR .. "src/mame/drivers/age_candy.cpp",
+ MAME_DIR .. "src/mame/drivers/alinvade.cpp",
+ MAME_DIR .. "src/mame/drivers/amaticmg.cpp",
+ MAME_DIR .. "src/mame/drivers/amerihok.cpp",
+ MAME_DIR .. "src/mame/drivers/ampoker2.cpp",
+ MAME_DIR .. "src/mame/includes/ampoker2.h",
+ MAME_DIR .. "src/mame/video/ampoker2.cpp",
+ MAME_DIR .. "src/mame/drivers/amspdwy.cpp",
+ MAME_DIR .. "src/mame/includes/amspdwy.h",
+ MAME_DIR .. "src/mame/video/amspdwy.cpp",
+ MAME_DIR .. "src/mame/drivers/amusco.cpp",
+ MAME_DIR .. "src/mame/drivers/anes.cpp",
+ MAME_DIR .. "src/mame/drivers/arachnid.cpp",
+ MAME_DIR .. "src/mame/drivers/artmagic.cpp",
+ MAME_DIR .. "src/mame/includes/artmagic.h",
+ MAME_DIR .. "src/mame/video/artmagic.cpp",
+ MAME_DIR .. "src/mame/drivers/astrafr.cpp",
+ MAME_DIR .. "src/mame/drivers/astrcorp.cpp",
+ MAME_DIR .. "src/mame/drivers/astropc.cpp",
+ MAME_DIR .. "src/mame/drivers/atronic.cpp",
+ MAME_DIR .. "src/mame/drivers/attckufo.cpp",
+ MAME_DIR .. "src/mame/drivers/avt.cpp",
+ MAME_DIR .. "src/mame/drivers/aztarac.cpp",
+ MAME_DIR .. "src/mame/includes/aztarac.h",
+ MAME_DIR .. "src/mame/audio/aztarac.cpp",
+ MAME_DIR .. "src/mame/video/aztarac.cpp",
+ MAME_DIR .. "src/mame/drivers/bailey.cpp",
+ MAME_DIR .. "src/mame/drivers/beaminv.cpp",
+ MAME_DIR .. "src/mame/drivers/beezer.cpp",
+ MAME_DIR .. "src/mame/drivers/belatra.cpp",
+ MAME_DIR .. "src/mame/drivers/bgt.cpp",
+ MAME_DIR .. "src/mame/drivers/bingoman.cpp",
+ MAME_DIR .. "src/mame/drivers/bingor.cpp",
+ MAME_DIR .. "src/mame/drivers/blitz68k.cpp",
+ MAME_DIR .. "src/mame/drivers/blocktax.cpp",
+ MAME_DIR .. "src/mame/drivers/buster.cpp",
+ MAME_DIR .. "src/mame/drivers/calomega.cpp",
+ MAME_DIR .. "src/mame/includes/calomega.h",
+ MAME_DIR .. "src/mame/video/calomega.cpp",
+ MAME_DIR .. "src/mame/drivers/cardline.cpp",
+ MAME_DIR .. "src/mame/drivers/carrera.cpp",
+ MAME_DIR .. "src/mame/drivers/castle.cpp",
+ MAME_DIR .. "src/mame/drivers/cave.cpp",
+ MAME_DIR .. "src/mame/includes/cave.h",
+ MAME_DIR .. "src/mame/video/cave.cpp",
+ MAME_DIR .. "src/mame/drivers/cavepc.cpp",
+ MAME_DIR .. "src/mame/drivers/cv1k.cpp",
+ MAME_DIR .. "src/mame/drivers/cb2001.cpp",
+ MAME_DIR .. "src/mame/drivers/cdi.cpp",
+ MAME_DIR .. "src/mame/includes/cdi.h",
+ MAME_DIR .. "src/mame/video/mcd212.cpp",
+ MAME_DIR .. "src/mame/video/mcd212.h",
+ MAME_DIR .. "src/mame/machine/cdislavehle.cpp",
+ MAME_DIR .. "src/mame/machine/cdislavehle.h",
+ MAME_DIR .. "src/mame/machine/cdicdic.cpp",
+ MAME_DIR .. "src/mame/machine/cdicdic.h",
+ MAME_DIR .. "src/mame/drivers/chameleonrx1.cpp",
+ MAME_DIR .. "src/mame/drivers/chance32.cpp",
+ MAME_DIR .. "src/mame/drivers/changyu.cpp",
+ MAME_DIR .. "src/mame/drivers/chexx.cpp",
+ MAME_DIR .. "src/mame/drivers/chicago.cpp",
+ MAME_DIR .. "src/mame/drivers/chsuper.cpp",
+ MAME_DIR .. "src/mame/drivers/clowndwn.cpp",
+ MAME_DIR .. "src/mame/drivers/clpoker.cpp",
+ MAME_DIR .. "src/mame/drivers/cocoloco.cpp",
+ MAME_DIR .. "src/mame/audio/nl_cocoloco.h",
+ MAME_DIR .. "src/mame/audio/nl_cocoloco.cpp",
+ MAME_DIR .. "src/mame/drivers/coinmstr.cpp",
+ MAME_DIR .. "src/mame/drivers/coinmvga.cpp",
+ MAME_DIR .. "src/mame/drivers/cointek.cpp",
+ MAME_DIR .. "src/mame/drivers/comebaby.cpp",
+ MAME_DIR .. "src/mame/drivers/cowtipping.cpp",
+ MAME_DIR .. "src/mame/drivers/crazybal.cpp",
+ MAME_DIR .. "src/mame/drivers/cromptons.cpp",
+ MAME_DIR .. "src/mame/drivers/cupidon.cpp",
+ MAME_DIR .. "src/mame/drivers/bntyhunt.cpp",
+ MAME_DIR .. "src/mame/drivers/coolpool.cpp",
+ MAME_DIR .. "src/mame/includes/coolpool.h",
+ MAME_DIR .. "src/mame/drivers/megaphx.cpp",
+ MAME_DIR .. "src/mame/machine/inder_sb.cpp",
+ MAME_DIR .. "src/mame/machine/inder_sb.h",
+ MAME_DIR .. "src/mame/machine/inder_vid.cpp",
+ MAME_DIR .. "src/mame/machine/inder_vid.h",
+ MAME_DIR .. "src/mame/drivers/corona.cpp",
+ MAME_DIR .. "src/mame/drivers/cwheel.cpp",
+ MAME_DIR .. "src/mame/drivers/crystal.cpp",
+ MAME_DIR .. "src/mame/drivers/ddz.cpp",
+ MAME_DIR .. "src/mame/drivers/menghong.cpp",
+ MAME_DIR .. "src/mame/drivers/trivrus.cpp",
+ MAME_DIR .. "src/mame/drivers/crospuzl.cpp",
+ MAME_DIR .. "src/mame/drivers/psattack.cpp",
+ MAME_DIR .. "src/mame/drivers/v0bowl.cpp",
+ MAME_DIR .. "src/mame/drivers/cubeqst.cpp",
+ MAME_DIR .. "src/mame/drivers/cybertnk.cpp",
+ MAME_DIR .. "src/mame/drivers/daryde.cpp",
+ MAME_DIR .. "src/mame/drivers/dcheese.cpp",
+ MAME_DIR .. "src/mame/includes/dcheese.h",
+ MAME_DIR .. "src/mame/video/dcheese.cpp",
+ MAME_DIR .. "src/mame/drivers/dfruit.cpp",
+ MAME_DIR .. "src/mame/drivers/dgpix.cpp",
+ MAME_DIR .. "src/mame/drivers/diamondking.cpp",
+ MAME_DIR .. "src/mame/drivers/discoboy.cpp",
+ MAME_DIR .. "src/mame/drivers/dominob.cpp",
+ MAME_DIR .. "src/mame/drivers/dorachan.cpp",
+ MAME_DIR .. "src/mame/drivers/drdmania.cpp",
+ MAME_DIR .. "src/mame/drivers/dreamwld.cpp",
+ MAME_DIR .. "src/mame/drivers/dwarfd.cpp",
+ MAME_DIR .. "src/mame/drivers/dynadice.cpp",
+ MAME_DIR .. "src/mame/drivers/dynamoah.cpp",
+ MAME_DIR .. "src/mame/drivers/ecoinfr.cpp",
+ MAME_DIR .. "src/mame/drivers/ecoinf1.cpp",
+ MAME_DIR .. "src/mame/drivers/ecoinf2.cpp",
+ MAME_DIR .. "src/mame/drivers/ecoinf3.cpp",
+ MAME_DIR .. "src/mame/includes/efdt.h",
+ MAME_DIR .. "src/mame/drivers/efdt.cpp",
+ MAME_DIR .. "src/mame/drivers/electra.cpp",
+ MAME_DIR .. "src/mame/drivers/epos.cpp",
+ MAME_DIR .. "src/mame/includes/epos.h",
+ MAME_DIR .. "src/mame/video/epos.cpp",
+ MAME_DIR .. "src/mame/drivers/esd16.cpp",
+ MAME_DIR .. "src/mame/includes/esd16.h",
+ MAME_DIR .. "src/mame/video/esd16.cpp",
+ MAME_DIR .. "src/mame/drivers/esh.cpp",
+ MAME_DIR .. "src/mame/drivers/esripsys.cpp",
+ MAME_DIR .. "src/mame/includes/esripsys.h",
+ MAME_DIR .. "src/mame/video/esripsys.cpp",
+ MAME_DIR .. "src/mame/drivers/ettrivia.cpp",
+ MAME_DIR .. "src/mame/drivers/extrema.cpp",
+ MAME_DIR .. "src/mame/drivers/ez2d.cpp",
+ MAME_DIR .. "src/mame/drivers/fastinvaders.cpp",
+ MAME_DIR .. "src/mame/drivers/fireball.cpp",
+ MAME_DIR .. "src/mame/drivers/flipjack.cpp",
+ MAME_DIR .. "src/mame/drivers/flower.cpp",
+ MAME_DIR .. "src/mame/audio/flower.cpp",
+ MAME_DIR .. "src/mame/drivers/fortecar.cpp",
+ MAME_DIR .. "src/mame/drivers/fresh.cpp",
+ MAME_DIR .. "src/mame/drivers/freekick.cpp",
+ MAME_DIR .. "src/mame/includes/freekick.h",
+ MAME_DIR .. "src/mame/video/freekick.cpp",
+ MAME_DIR .. "src/mame/drivers/freeway.cpp",
+ MAME_DIR .. "src/mame/drivers/fungames.cpp",
+ MAME_DIR .. "src/mame/drivers/funkball.cpp",
+ MAME_DIR .. "src/mame/drivers/gambl186.cpp",
+ MAME_DIR .. "src/mame/drivers/galaxi.cpp",
+ MAME_DIR .. "src/mame/drivers/galgame.cpp",
+ MAME_DIR .. "src/mame/drivers/gamecstl.cpp",
+ MAME_DIR .. "src/mame/drivers/gamemasters.cpp",
+ MAME_DIR .. "src/mame/drivers/gammagic.cpp",
+ MAME_DIR .. "src/mame/drivers/gamtor.cpp",
+ MAME_DIR .. "src/mame/drivers/gei.cpp",
+ MAME_DIR .. "src/mame/drivers/gfamily.cpp",
+ MAME_DIR .. "src/mame/drivers/globalfr.cpp",
+ MAME_DIR .. "src/mame/drivers/globalvr.cpp",
+ MAME_DIR .. "src/mame/drivers/gluck2.cpp",
+ MAME_DIR .. "src/mame/drivers/goldngam.cpp",
+ MAME_DIR .. "src/mame/drivers/goldnpkr.cpp",
+ MAME_DIR .. "src/mame/drivers/good.cpp",
+ MAME_DIR .. "src/mame/drivers/gotcha.cpp",
+ MAME_DIR .. "src/mame/includes/gotcha.h",
+ MAME_DIR .. "src/mame/video/gotcha.cpp",
+ MAME_DIR .. "src/mame/drivers/gsspade.cpp",
+ MAME_DIR .. "src/mame/drivers/gumbo.cpp",
+ MAME_DIR .. "src/mame/includes/gumbo.h",
+ MAME_DIR .. "src/mame/video/gumbo.cpp",
+ MAME_DIR .. "src/mame/drivers/gunpey.cpp",
+ MAME_DIR .. "src/mame/drivers/hapyfish.cpp",
+ MAME_DIR .. "src/mame/drivers/hideseek.cpp",
+ MAME_DIR .. "src/mame/drivers/hazelgr.cpp",
+ MAME_DIR .. "src/mame/drivers/headonb.cpp",
+ MAME_DIR .. "src/mame/drivers/highvdeo.cpp",
+ MAME_DIR .. "src/mame/drivers/hitpoker.cpp",
+ MAME_DIR .. "src/mame/drivers/hobbyplay.cpp",
+ MAME_DIR .. "src/mame/drivers/homedata.cpp",
+ MAME_DIR .. "src/mame/includes/homedata.h",
+ MAME_DIR .. "src/mame/video/homedata.cpp",
+ MAME_DIR .. "src/mame/drivers/hotblock.cpp",
+ MAME_DIR .. "src/mame/drivers/hotstuff.cpp",
+ MAME_DIR .. "src/mame/drivers/ichiban.cpp",
+ MAME_DIR .. "src/mame/drivers/imolagp.cpp",
+ MAME_DIR .. "src/mame/drivers/intrscti.cpp",
+ MAME_DIR .. "src/mame/drivers/island.cpp",
+ MAME_DIR .. "src/mame/drivers/istellar.cpp",
+ MAME_DIR .. "src/mame/drivers/itgambl2.cpp",
+ MAME_DIR .. "src/mame/drivers/itgambl3.cpp",
+ MAME_DIR .. "src/mame/drivers/itgamble.cpp",
+ MAME_DIR .. "src/mame/drivers/jackpool.cpp",
+ MAME_DIR .. "src/mame/drivers/jackpot.cpp",
+ MAME_DIR .. "src/mame/drivers/jankenmn.cpp",
+ MAME_DIR .. "src/mame/drivers/jokrwild.cpp",
+ MAME_DIR .. "src/mame/drivers/joystand.cpp",
+ MAME_DIR .. "src/mame/drivers/jubilee.cpp",
+ MAME_DIR .. "src/mame/drivers/jungleyo.cpp",
+ MAME_DIR .. "src/mame/drivers/kas89.cpp",
+ MAME_DIR .. "src/mame/drivers/kingpin.cpp",
+ MAME_DIR .. "src/mame/drivers/kurukuru.cpp",
+ MAME_DIR .. "src/mame/drivers/kyugo.cpp",
+ MAME_DIR .. "src/mame/includes/kyugo.h",
+ MAME_DIR .. "src/mame/video/kyugo.cpp",
+ MAME_DIR .. "src/mame/drivers/ladyfrog.cpp",
+ MAME_DIR .. "src/mame/includes/ladyfrog.h",
+ MAME_DIR .. "src/mame/video/ladyfrog.cpp",
+ MAME_DIR .. "src/mame/drivers/laserbas.cpp",
+ MAME_DIR .. "src/mame/drivers/laz_aftrshok.cpp",
+ MAME_DIR .. "src/mame/drivers/laz_ribrac.cpp",
+ MAME_DIR .. "src/mame/drivers/lethalj.cpp",
+ MAME_DIR .. "src/mame/includes/lethalj.h",
+ MAME_DIR .. "src/mame/video/lethalj.cpp",
+ MAME_DIR .. "src/mame/drivers/limenko.cpp",
+ MAME_DIR .. "src/mame/drivers/ltcasino.cpp",
+ MAME_DIR .. "src/mame/drivers/luckybal.cpp",
+ MAME_DIR .. "src/mame/drivers/magic10.cpp",
+ MAME_DIR .. "src/mame/drivers/magicard.cpp",
+ MAME_DIR .. "src/mame/drivers/magicfly.cpp",
+ MAME_DIR .. "src/mame/drivers/magictg.cpp",
+ MAME_DIR .. "src/mame/drivers/magreel.cpp",
+ MAME_DIR .. "src/mame/drivers/magtouch.cpp",
+ MAME_DIR .. "src/mame/drivers/majorpkr.cpp",
+ MAME_DIR .. "src/mame/drivers/malzak.cpp",
+ MAME_DIR .. "src/mame/includes/malzak.h",
+ MAME_DIR .. "src/mame/video/malzak.cpp",
+ MAME_DIR .. "src/mame/drivers/marywu.cpp",
+ MAME_DIR .. "src/mame/drivers/matrix.cpp",
+ MAME_DIR .. "src/mame/drivers/mcatadv.cpp",
+ MAME_DIR .. "src/mame/includes/mcatadv.h",
+ MAME_DIR .. "src/mame/video/mcatadv.cpp",
+ MAME_DIR .. "src/mame/drivers/mgavegas.cpp",
+ MAME_DIR .. "src/mame/drivers/meyc8080.cpp",
+ MAME_DIR .. "src/mame/drivers/meyc8088.cpp",
+ MAME_DIR .. "src/mame/drivers/micro3d.cpp",
+ MAME_DIR .. "src/mame/includes/micro3d.h",
+ MAME_DIR .. "src/mame/machine/micro3d.cpp",
+ MAME_DIR .. "src/mame/video/micro3d.cpp",
+ MAME_DIR .. "src/mame/audio/micro3d.cpp",
+ MAME_DIR .. "src/mame/audio/micro3d.h",
+ MAME_DIR .. "src/mame/drivers/microdar.cpp",
+ MAME_DIR .. "src/mame/drivers/midas.cpp",
+ MAME_DIR .. "src/mame/drivers/mil4000.cpp",
+ MAME_DIR .. "src/mame/drivers/miniboy7.cpp",
+ MAME_DIR .. "src/mame/drivers/minivideo.cpp",
+ MAME_DIR .. "src/mame/drivers/mirax.cpp",
+ MAME_DIR .. "src/mame/drivers/mjsenpu.cpp",
+ MAME_DIR .. "src/mame/drivers/mole.cpp",
+ MAME_DIR .. "src/mame/drivers/mosaic.cpp",
+ MAME_DIR .. "src/mame/includes/mosaic.h",
+ MAME_DIR .. "src/mame/video/mosaic.cpp",
+ MAME_DIR .. "src/mame/drivers/mpu12wbk.cpp",
+ MAME_DIR .. "src/mame/drivers/multfish.cpp",
+ MAME_DIR .. "src/mame/includes/multfish.h",
+ MAME_DIR .. "src/mame/drivers/multfish_boot.cpp",
+ MAME_DIR .. "src/mame/drivers/murogem.cpp",
+ MAME_DIR .. "src/mame/drivers/murogmbl.cpp",
+ MAME_DIR .. "src/mame/drivers/neoprint.cpp",
+ MAME_DIR .. "src/mame/drivers/news.cpp",
+ MAME_DIR .. "src/mame/includes/news.h",
+ MAME_DIR .. "src/mame/video/news.cpp",
+ MAME_DIR .. "src/mame/drivers/nexus3d.cpp",
+ MAME_DIR .. "src/mame/drivers/nibble.cpp",
+ MAME_DIR .. "src/mame/drivers/norautp.cpp",
+ MAME_DIR .. "src/mame/includes/norautp.h",
+ MAME_DIR .. "src/mame/audio/norautp.cpp",
+ MAME_DIR .. "src/mame/drivers/notechan.cpp",
+ MAME_DIR .. "src/mame/drivers/nsg6809.cpp",
+ MAME_DIR .. "src/mame/drivers/nsmpoker.cpp",
+ MAME_DIR .. "src/mame/drivers/odyssey.cpp",
+ MAME_DIR .. "src/mame/drivers/oneshot.cpp",
+ MAME_DIR .. "src/mame/includes/oneshot.h",
+ MAME_DIR .. "src/mame/video/oneshot.cpp",
+ MAME_DIR .. "src/mame/drivers/onetwo.cpp",
+ MAME_DIR .. "src/mame/drivers/opercoin.cpp",
+ MAME_DIR .. "src/mame/drivers/othello.cpp",
+ MAME_DIR .. "src/mame/drivers/pachifev.cpp",
+ MAME_DIR .. "src/mame/drivers/pasha2.cpp",
+ MAME_DIR .. "src/mame/drivers/pass.cpp",
+ MAME_DIR .. "src/mame/includes/pass.h",
+ MAME_DIR .. "src/mame/video/pass.cpp",
+ MAME_DIR .. "src/mame/drivers/photon.cpp",
+ MAME_DIR .. "src/mame/drivers/piggypas.cpp",
+ MAME_DIR .. "src/mame/video/pk8000.cpp",
+ MAME_DIR .. "src/mame/drivers/photon2.cpp",
+ MAME_DIR .. "src/mame/drivers/pipeline.cpp",
+ MAME_DIR .. "src/mame/drivers/pkscram.cpp",
+ MAME_DIR .. "src/mame/drivers/playcenter.cpp",
+ MAME_DIR .. "src/mame/drivers/plsonic4.cpp",
+ MAME_DIR .. "src/mame/drivers/pntnpuzl.cpp",
+ MAME_DIR .. "src/mame/drivers/policetr.cpp",
+ MAME_DIR .. "src/mame/includes/policetr.h",
+ MAME_DIR .. "src/mame/video/policetr.cpp",
+ MAME_DIR .. "src/mame/drivers/polyplay.cpp",
+ MAME_DIR .. "src/mame/includes/polyplay.h",
+ MAME_DIR .. "src/mame/audio/polyplay.cpp",
+ MAME_DIR .. "src/mame/video/polyplay.cpp",
+ MAME_DIR .. "src/mame/drivers/poker72.cpp",
+ MAME_DIR .. "src/mame/drivers/pokerout.cpp",
+ MAME_DIR .. "src/mame/drivers/potgoldu.cpp",
+ MAME_DIR .. "src/mame/drivers/proconn.cpp",
+ MAME_DIR .. "src/mame/drivers/pse.cpp",
+ MAME_DIR .. "src/mame/drivers/quizo.cpp",
+ MAME_DIR .. "src/mame/drivers/quizpun2.cpp",
+ MAME_DIR .. "src/mame/drivers/radikaldarts.cpp",
+ MAME_DIR .. "src/mame/drivers/rbmk.cpp",
+ MAME_DIR .. "src/mame/drivers/rcorsair.cpp",
+ MAME_DIR .. "src/mame/drivers/re900.cpp",
+ MAME_DIR .. "src/mame/drivers/rf51w14cg.cpp",
+ MAME_DIR .. "src/mame/drivers/rfslots8085.cpp",
+ MAME_DIR .. "src/mame/drivers/rfslotsmcs48.cpp",
+ MAME_DIR .. "src/mame/drivers/rfslotspcpent.cpp",
+ MAME_DIR .. "src/mame/drivers/rgum.cpp",
+ MAME_DIR .. "src/mame/drivers/roul.cpp",
+ MAME_DIR .. "src/mame/drivers/rulechan.cpp",
+ MAME_DIR .. "src/mame/drivers/savquest.cpp",
+ MAME_DIR .. "src/mame/drivers/sanremo.cpp",
+ MAME_DIR .. "src/mame/drivers/sanremmg.cpp",
+ MAME_DIR .. "src/mame/drivers/schexx4gen.cpp",
+ MAME_DIR .. "src/mame/drivers/scm_500.cpp",
+ MAME_DIR .. "src/mame/drivers/sealy.cpp",
+ MAME_DIR .. "src/mame/drivers/sealy_fr.cpp",
+ MAME_DIR .. "src/mame/drivers/sfbonus.cpp",
+ MAME_DIR .. "src/mame/drivers/shangkid.cpp",
+ MAME_DIR .. "src/mame/includes/shangkid.h",
+ MAME_DIR .. "src/mame/video/shangkid.cpp",
+ MAME_DIR .. "src/mame/drivers/silverball.cpp",
+ MAME_DIR .. "src/mame/drivers/skeetsht.cpp",
+ MAME_DIR .. "src/mame/drivers/skimaxx.cpp",
+ MAME_DIR .. "src/mame/drivers/skopro.cpp",
+ MAME_DIR .. "src/mame/drivers/skyarmy.cpp",
+ MAME_DIR .. "src/mame/drivers/skylncr.cpp",
+ MAME_DIR .. "src/mame/drivers/sliver.cpp",
+ MAME_DIR .. "src/mame/drivers/smotor.cpp",
+ MAME_DIR .. "src/mame/drivers/smsmcorp.cpp",
+ MAME_DIR .. "src/mame/drivers/sothello.cpp",
+ MAME_DIR .. "src/mame/drivers/special_gambl.cpp",
+ MAME_DIR .. "src/mame/audio/special.cpp",
+ MAME_DIR .. "src/mame/audio/special.h",
+ MAME_DIR .. "src/mame/drivers/spool99.cpp",
+ MAME_DIR .. "src/mame/drivers/sprcros2.cpp",
+ MAME_DIR .. "src/mame/drivers/ssingles.cpp",
+ MAME_DIR .. "src/mame/drivers/sstrangr.cpp",
+ MAME_DIR .. "src/mame/drivers/startouch.cpp",
+ MAME_DIR .. "src/mame/drivers/statriv2.cpp",
+ MAME_DIR .. "src/mame/drivers/strkzn.cpp",
+ MAME_DIR .. "src/mame/drivers/stuntair.cpp",
+ MAME_DIR .. "src/mame/drivers/su2000.cpp",
+ MAME_DIR .. "src/mame/drivers/summit.cpp",
+ MAME_DIR .. "src/mame/drivers/sumt8035.cpp",
+ MAME_DIR .. "src/mame/drivers/supercrd.cpp",
+ MAME_DIR .. "src/mame/drivers/supertnk.cpp",
+ MAME_DIR .. "src/mame/drivers/tapatune.cpp",
+ MAME_DIR .. "src/mame/drivers/tattack.cpp",
+ MAME_DIR .. "src/mame/drivers/taxidriv.cpp",
+ MAME_DIR .. "src/mame/drivers/teamjocs.cpp",
+ MAME_DIR .. "src/mame/drivers/tecnodar.cpp",
+ MAME_DIR .. "src/mame/drivers/thayers.cpp",
+ MAME_DIR .. "src/mame/drivers/thedeep.cpp",
+ MAME_DIR .. "src/mame/includes/thedeep.h",
+ MAME_DIR .. "src/mame/video/thedeep.cpp",
+ MAME_DIR .. "src/mame/drivers/tickee.cpp",
+ MAME_DIR .. "src/mame/drivers/tmspoker.cpp",
+ MAME_DIR .. "src/mame/drivers/triviaquiz.cpp",
+ MAME_DIR .. "src/mame/drivers/truco.cpp",
+ MAME_DIR .. "src/mame/includes/truco.h",
+ MAME_DIR .. "src/mame/video/truco.cpp",
+ MAME_DIR .. "src/mame/drivers/trucocl.cpp",
+ MAME_DIR .. "src/mame/includes/trucocl.h",
+ MAME_DIR .. "src/mame/video/trucocl.cpp",
+ MAME_DIR .. "src/mame/drivers/trvmadns.cpp",
+ MAME_DIR .. "src/mame/drivers/trvquest.cpp",
+ MAME_DIR .. "src/mame/drivers/ttchamp.cpp",
+ MAME_DIR .. "src/mame/drivers/tugboat.cpp",
+ MAME_DIR .. "src/mame/drivers/tvg01.cpp",
+ MAME_DIR .. "src/mame/drivers/twinbskt.cpp",
+ MAME_DIR .. "src/mame/drivers/ice_bozopail.cpp",
+ MAME_DIR .. "src/mame/drivers/ice_hhhippos.cpp",
+ MAME_DIR .. "src/mame/drivers/ice_tbd.cpp",
+ MAME_DIR .. "src/mame/drivers/umipoker.cpp",
+ MAME_DIR .. "src/mame/drivers/unkhorse.cpp",
+ MAME_DIR .. "src/mame/drivers/unkpoker.cpp",
+ MAME_DIR .. "src/mame/drivers/usbilliards.cpp",
+ MAME_DIR .. "src/mame/drivers/usgames.cpp",
+ MAME_DIR .. "src/mame/includes/usgames.h",
+ MAME_DIR .. "src/mame/video/usgames.cpp",
+ MAME_DIR .. "src/mame/drivers/vamphalf.cpp",
+ MAME_DIR .. "src/mame/drivers/vcombat.cpp",
+ MAME_DIR .. "src/mame/drivers/vectrex.cpp",
+ MAME_DIR .. "src/mame/includes/vectrex.h",
+ MAME_DIR .. "src/mame/video/vectrex.cpp",
+ MAME_DIR .. "src/mame/machine/vectrex.cpp",
+ MAME_DIR .. "src/mame/drivers/video21.cpp",
+ MAME_DIR .. "src/mame/drivers/videosaa.cpp",
+ MAME_DIR .. "src/mame/drivers/vlc.cpp",
+ MAME_DIR .. "src/mame/drivers/vlc34010.cpp",
+ MAME_DIR .. "src/mame/drivers/voyager.cpp",
+ MAME_DIR .. "src/mame/drivers/vp101.cpp",
+ MAME_DIR .. "src/mame/drivers/vpoker.cpp",
+ MAME_DIR .. "src/mame/drivers/vroulet.cpp",
+ MAME_DIR .. "src/mame/drivers/wildpkr.cpp",
+ MAME_DIR .. "src/mame/drivers/winbingo.cpp",
+ MAME_DIR .. "src/mame/drivers/wms.cpp",
+ MAME_DIR .. "src/mame/drivers/xtom3d.cpp",
+ MAME_DIR .. "src/mame/drivers/xyonix.cpp",
+ MAME_DIR .. "src/mame/drivers/yuvomz80.cpp",
+}
+end
diff --git a/docs/release/scripts/target/mame/ci.lua b/docs/release/scripts/target/mame/ci.lua
new file mode 100644
index 00000000000..20f8fad7cf6
--- /dev/null
+++ b/docs/release/scripts/target/mame/ci.lua
@@ -0,0 +1,192 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- ci.lua
+--
+-- Small driver-specific example makefile for use in CI
+-- Use make SUBTARGET=ci to build
+--
+---------------------------------------------------------------------------
+
+
+--------------------------------------------------
+-- Specify all the CPU cores necessary for the
+-- drivers referenced in ci.lst.
+--------------------------------------------------
+
+CPUS["Z80"] = true
+CPUS["M6502"] = true
+CPUS["MCS48"] = true
+CPUS["MCS51"] = true
+CPUS["M6800"] = true
+CPUS["M6805"] = true
+CPUS["M6809"] = true
+CPUS["M680X0"] = true
+CPUS["TMS9900"] = true
+CPUS["COP400"] = true
+CPUS["MIPS3"] = true
+CPUS["ADSP21XX"] = true
+CPUS["FR"] = true
+
+--------------------------------------------------
+-- Specify all the sound cores necessary for the
+-- drivers referenced in ci.lst.
+--------------------------------------------------
+
+SOUNDS["SAMPLES"] = true
+SOUNDS["DAC"] = true
+SOUNDS["DISCRETE"] = true
+SOUNDS["AY8910"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["ASTROCADE"] = true
+SOUNDS["TMS5220"] = true
+SOUNDS["OKIM6295"] = true
+SOUNDS["HC55516"] = true
+SOUNDS["YM3812"] = true
+SOUNDS["CEM3394"] = true
+SOUNDS["VOTRAX"] = true
+SOUNDS["DMADAC"] = true
+SOUNDS["CDDA"] = true
+SOUNDS["POKEY"] = true
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+VIDEOS["PS2GIF"] = true
+VIDEOS["PS2GS"] = true
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["6821PIA"] = true
+MACHINES["ADC0808"] = true
+MACHINES["TTL74148"] = true
+MACHINES["TTL74153"] = true
+MACHINES["TTL74157"] = true
+MACHINES["TTL7474"] = true
+MACHINES["TTL74259"] = true
+MACHINES["RIOT6532"] = true
+MACHINES["PIT8253"] = true
+MACHINES["Z80CTC"] = true
+MACHINES["Z80PIO"] = true
+MACHINES["68681"] = true
+MACHINES["BANKDEV"] = true
+MACHINES["GEN_LATCH"] = true
+MACHINES["INPUT_MERGER"] = true
+MACHINES["OUTPUT_LATCH"] = true
+MACHINES["TICKET"] = true
+MACHINES["WATCHDOG"] = true
+MACHINES["Z80DAISY"] = true
+MACHINES["NETLIST"] = true
+MACHINES["IDECTRL"] = true
+MACHINES["PS2INTC"] = true
+MACHINES["ER2055"] = true
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+
+BUSES["CENTRONICS"] = true
+BUSES["ATA"] = true
+
+--------------------------------------------------
+-- This is the list of files that are necessary
+-- for building all of the drivers referenced
+-- in ci.lst
+--------------------------------------------------
+
+function createProjects_mame_ci(_target, _subtarget)
+ project ("mame_ci")
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-mame-ci"))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+
+files{
+ MAME_DIR .. "src/mame/audio/nl_carpolo.cpp",
+ MAME_DIR .. "src/mame/audio/nl_carpolo.h",
+ MAME_DIR .. "src/mame/drivers/carpolo.cpp",
+ MAME_DIR .. "src/mame/includes/carpolo.h",
+ MAME_DIR .. "src/mame/machine/carpolo.cpp",
+ MAME_DIR .. "src/mame/video/carpolo.cpp",
+ MAME_DIR .. "src/mame/drivers/circus.cpp",
+ MAME_DIR .. "src/mame/includes/circus.h",
+ MAME_DIR .. "src/mame/audio/circus.cpp",
+ MAME_DIR .. "src/mame/video/circus.cpp",
+ MAME_DIR .. "src/mame/drivers/exidy.cpp",
+ MAME_DIR .. "src/mame/includes/exidy.h",
+ MAME_DIR .. "src/mame/audio/exidy.cpp",
+ MAME_DIR .. "src/mame/audio/exidy.h",
+ MAME_DIR .. "src/mame/video/exidy.cpp",
+ MAME_DIR .. "src/mame/audio/exidy440.cpp",
+ MAME_DIR .. "src/mame/audio/exidy440.h",
+ MAME_DIR .. "src/mame/drivers/starfire.cpp",
+ MAME_DIR .. "src/mame/audio/nl_fireone.cpp",
+ MAME_DIR .. "src/mame/audio/nl_fireone.h",
+ MAME_DIR .. "src/mame/audio/nl_starfire.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starfire.h",
+ MAME_DIR .. "src/mame/includes/starfire.h",
+ MAME_DIR .. "src/mame/video/starfire.cpp",
+ MAME_DIR .. "src/mame/drivers/vertigo.cpp",
+ MAME_DIR .. "src/mame/includes/vertigo.h",
+ MAME_DIR .. "src/mame/machine/vertigo.cpp",
+ MAME_DIR .. "src/mame/video/vertigo.cpp",
+ MAME_DIR .. "src/mame/drivers/victory.cpp",
+ MAME_DIR .. "src/mame/includes/victory.h",
+ MAME_DIR .. "src/mame/video/victory.cpp",
+ MAME_DIR .. "src/mame/drivers/astrocde.cpp",
+ MAME_DIR .. "src/mame/includes/astrocde.h",
+ MAME_DIR .. "src/mame/video/astrocde.cpp",
+ MAME_DIR .. "src/mame/drivers/gridlee.cpp",
+ MAME_DIR .. "src/mame/includes/gridlee.h",
+ MAME_DIR .. "src/mame/audio/gridlee.cpp",
+ MAME_DIR .. "src/mame/video/gridlee.cpp",
+ MAME_DIR .. "src/mame/drivers/williams.cpp",
+ MAME_DIR .. "src/mame/includes/williams.h",
+ MAME_DIR .. "src/mame/machine/williams.cpp",
+ MAME_DIR .. "src/mame/audio/williams.cpp",
+ MAME_DIR .. "src/mame/audio/williams.h",
+ MAME_DIR .. "src/mame/video/williams.cpp",
+ MAME_DIR .. "src/mame/audio/s11c_bg.cpp",
+ MAME_DIR .. "src/mame/audio/s11c_bg.h",
+ MAME_DIR .. "src/mame/drivers/gaelco.cpp",
+ MAME_DIR .. "src/mame/includes/gaelco.h",
+ MAME_DIR .. "src/mame/video/gaelco.cpp",
+ MAME_DIR .. "src/mame/machine/gaelcrpt.cpp",
+ MAME_DIR .. "src/mame/drivers/wrally.cpp",
+ MAME_DIR .. "src/mame/includes/wrally.h",
+ MAME_DIR .. "src/mame/video/wrally.cpp",
+ MAME_DIR .. "src/mame/video/gaelco_wrally_sprites.cpp",
+ MAME_DIR .. "src/mame/video/gaelco_wrally_sprites.h",
+ MAME_DIR .. "src/mame/machine/gaelco_ds5002fp.cpp",
+ MAME_DIR .. "src/mame/machine/gaelco_ds5002fp.h",
+ MAME_DIR .. "src/mame/drivers/looping.cpp",
+ MAME_DIR .. "src/mame/drivers/supertnk.cpp",
+ MAME_DIR .. "src/mame/drivers/kinst.cpp",
+ MAME_DIR .. "src/mame/audio/dcs.cpp",
+ MAME_DIR .. "src/mame/audio/dcs.h",
+ MAME_DIR .. "src/mame/drivers/akkaarrh.cpp",
+}
+end
+
+function linkProjects_mame_ci(_target, _subtarget)
+ links {
+ "mame_ci",
+ }
+end
diff --git a/docs/release/scripts/target/mame/dummy.lua b/docs/release/scripts/target/mame/dummy.lua
new file mode 100644
index 00000000000..b939c1eb0ad
--- /dev/null
+++ b/docs/release/scripts/target/mame/dummy.lua
@@ -0,0 +1,46 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- dummy.lua
+--
+-- Dummy target makefile
+--
+---------------------------------------------------------------------------
+
+dofile("arcade.lua")
+dofile("mess.lua")
+
+function createProjects_mame_dummy(_target, _subtarget)
+ project ("mame_dummy")
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-mame_dummy"))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+
+files{
+ MAME_DIR .. "src/mame/drivers/coleco.cpp",
+ MAME_DIR .. "src/mame/includes/coleco.h",
+ MAME_DIR .. "src/mame/machine/coleco.cpp",
+ MAME_DIR .. "src/mame/machine/coleco.h",
+}
+end
+
+function linkProjects_mame_dummy(_target, _subtarget)
+ links {
+ "mame_dummy",
+ }
+end
diff --git a/docs/release/scripts/target/mame/mame.lua b/docs/release/scripts/target/mame/mame.lua
new file mode 100644
index 00000000000..d58bfab4595
--- /dev/null
+++ b/docs/release/scripts/target/mame/mame.lua
@@ -0,0 +1,26 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- mame.lua
+--
+-- MAME target makefile
+--
+---------------------------------------------------------------------------
+
+dofile("arcade.lua")
+dofile("mess.lua")
+dofile("virtual.lua")
+
+function createProjects_mame_mame(_target, _subtarget)
+ createProjects_mame_arcade(_target, _subtarget)
+ createProjects_mame_mess(_target, _subtarget)
+ createProjects_mame_virtual(_target, _subtarget)
+end
+
+function linkProjects_mame_mame(_target, _subtarget)
+ linkProjects_mame_arcade(_target, _subtarget)
+ linkProjects_mame_mess(_target, _subtarget)
+ linkProjects_mame_virtual(_target, _subtarget)
+end
diff --git a/docs/release/scripts/target/mame/mess.lua b/docs/release/scripts/target/mame/mess.lua
new file mode 100644
index 00000000000..580e9460a3f
--- /dev/null
+++ b/docs/release/scripts/target/mame/mess.lua
@@ -0,0 +1,4761 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- mess.lua
+--
+-- MESS target makefile
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- specify available CPU cores
+--------------------------------------------------
+
+CPUS["Z80"] = true
+--CPUS["KC80"] = true
+CPUS["Z180"] = true
+CPUS["I8085"] = true
+CPUS["I8089"] = true
+CPUS["M6502"] = true
+CPUS["ST2XXX"] = true
+CPUS["XAVIX"] = true
+CPUS["XAVIX2000"] = true
+CPUS["H6280"] = true
+CPUS["I86"] = true
+CPUS["I386"] = true
+CPUS["NEC"] = true
+CPUS["V30MZ"] = true
+CPUS["V60"] = true
+CPUS["MCS48"] = true
+CPUS["MCS51"] = true
+CPUS["MCS96"] = true
+CPUS["M6800"] = true
+CPUS["M6805"] = true
+CPUS["HD6309"] = true
+CPUS["M6809"] = true
+CPUS["KONAMI"] = true
+CPUS["M680X0"] = true
+CPUS["T11"] = true
+CPUS["S2650"] = true
+CPUS["TMS340X0"] = true
+CPUS["TMS9900"] = true
+CPUS["TMS9995"] = true
+CPUS["TMS9900L"] = true
+CPUS["Z8000"] = true
+CPUS["Z8001"] = true
+CPUS["TMS32010"] = true
+CPUS["TMS32025"] = true
+CPUS["TMS32031"] = true
+CPUS["TMS32051"] = true
+CPUS["TMS32082"] = true
+CPUS["TMS57002"] = true
+CPUS["CCPU"] = true
+CPUS["ADSP21XX"] = true
+CPUS["ASAP"] = true
+CPUS["AM29000"] = true
+CPUS["UPD7810"] = true
+CPUS["ARM"] = true
+CPUS["ARM7"] = true
+CPUS["JAGUAR"] = true
+CPUS["CUBEQCPU"] = true
+CPUS["ESRIP"] = true
+CPUS["MIPS1"] = true
+CPUS["MIPS3"] = true
+CPUS["PSX"] = true
+CPUS["SH"] = true
+CPUS["DSP16"] = true
+CPUS["DSP32C"] = true
+CPUS["PIC16C5X"] = true
+CPUS["PIC16C62X"] = true
+CPUS["PIC17"] = true
+CPUS["G65816"] = true
+CPUS["SPC700"] = true
+CPUS["E1"] = true
+CPUS["I860"] = true
+CPUS["I960"] = true
+CPUS["H16"] = true
+CPUS["H8"] = true
+CPUS["H8500"] = true
+CPUS["V810"] = true
+CPUS["M37710"] = true
+CPUS["POWERPC"] = true
+CPUS["SE3208"] = true
+CPUS["MC68HC11"] = true
+CPUS["ADSP21062"] = true
+CPUS["DSP56156"] = true
+CPUS["RSP"] = true
+CPUS["COP400"] = true
+CPUS["TLCS90"] = true
+CPUS["TLCS900"] = true
+CPUS["MB88XX"] = true
+CPUS["MB86233"] = true
+CPUS["MB86235"] = true
+CPUS["SSP1601"] = true
+CPUS["APEXC"] = true
+CPUS["CP1610"] = true
+CPUS["F8"] = true
+CPUS["LH5801"] = true
+CPUS["PATINHOFEIO"] = true
+CPUS["PDP1"] = true
+CPUS["PDP8"] = true
+CPUS["TX0"] = true
+CPUS["SATURN"] = true
+CPUS["SC61860"] = true
+CPUS["LR35902"] = true
+CPUS["TMS7000"] = true
+CPUS["SM8500"] = true
+CPUS["MINX"] = true
+CPUS["SSEM"] = true
+CPUS["DIABLO"] = true
+CPUS["AVR8"] = true
+CPUS["TMS1000"] = true
+CPUS["MCS40"] = true
+CPUS["SUPERFX"] = true
+CPUS["Z8"] = true
+CPUS["I8008"] = true
+CPUS["SCMP"] = true
+CPUS["MN1880"] = true
+--CPUS["MN10200"] = true
+CPUS["COSMAC"] = true
+CPUS["UNSP"] = true
+CPUS["HCD62121"] = true
+CPUS["PPS4"] = true
+CPUS["PPS41"] = true
+CPUS["UPD7725"] = true
+CPUS["HD61700"] = true
+CPUS["LC8670"] = true
+CPUS["SCORE"] = true
+CPUS["ES5510"] = true
+CPUS["SCUDSP"] = true
+CPUS["IE15"] = true
+CPUS["8X300"] = true
+CPUS["ALTO2"] = true
+--CPUS["W65816"] = true
+CPUS["ARC"] = true
+CPUS["ARCOMPACT"] = true
+CPUS["AMIS2000"] = true
+CPUS["UCOM4"] = true
+CPUS["HMCS40"] = true
+CPUS["E0C6200"] = true
+CPUS["MELPS4"] = true
+CPUS["HPHYBRID"] = true
+CPUS["SM510"] = true
+CPUS["SPARC"] = true
+CPUS["NANOPROCESSOR"] = true
+CPUS["CLIPPER"] = true
+CPUS["CAPRICORN"] = true
+CPUS["ALPHA"] = true
+CPUS["NS32000"] = true
+--CPUS["DSPP"] = true
+CPUS["HPC"] = true
+CPUS["MEG"] = true
+CPUS["DSPV"] = true
+CPUS["RII"] = true
+CPUS["BCP"] = true
+CPUS["F2MC16"] = true
+CPUS["CR16B"] = true
+CPUS["FR"] = true
+CPUS["DSP56000"] = true
+CPUS["VT50"] = true
+CPUS["VT61"] = true
+CPUS["PACE"] = true
+CPUS["WE32000"] = true
+CPUS["RX01"] = true
+CPUS["GTRON"] = true
+CPUS["M88000"] = true
+CPUS["XAVIX2"] = true
+CPUS["UPD78K"] = true
+CPUS["ROMP"] = true
+CPUS["COPS1"] = true
+CPUS["MK1"] = true
+
+--------------------------------------------------
+-- specify available sound cores; some of these are
+-- only for MAME and so aren't included
+--------------------------------------------------
+
+--SOUNDS["SAMPLES"] = true
+SOUNDS["DAC"] = true
+SOUNDS["DMADAC"] = true
+SOUNDS["SPEAKER"] = true
+SOUNDS["BEEP"] = true
+SOUNDS["DISCRETE"] = true
+SOUNDS["AY8910"] = true
+SOUNDS["YM2154"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["YM2414"] = true
+SOUNDS["YM3806"] = true
+SOUNDS["YM2203"] = true
+SOUNDS["YM2413"] = true
+SOUNDS["YM2608"] = true
+SOUNDS["YM2610"] = true
+SOUNDS["YM2610B"] = true
+SOUNDS["YM2612"] = true
+--SOUNDS["YM3438"] = true
+SOUNDS["YM3812"] = true
+SOUNDS["YM3526"] = true
+SOUNDS["Y8950"] = true
+SOUNDS["YMF262"] = true
+SOUNDS["YMF271"] = true
+SOUNDS["YMF278B"] = true
+SOUNDS["YMZ280B"] = true
+SOUNDS["SN76477"] = true
+SOUNDS["SN76496"] = true
+SOUNDS["POKEY"] = true
+SOUNDS["TIA"] = true
+SOUNDS["NES_APU"] = true
+SOUNDS["PAULA_8364"] = true
+SOUNDS["ASTROCADE"] = true
+--SOUNDS["NAMCO"] = true
+--SOUNDS["NAMCO_15XX"] = true
+--SOUNDS["NAMCO_CUS30"] = true
+--SOUNDS["NAMCO_52XX"] = true
+--SOUNDS["NAMCO_63701X"] = true
+SOUNDS["NAMCO_163"] = true
+SOUNDS["T6W28"] = true
+--SOUNDS["SNKWAVE"] = true
+--SOUNDS["C140"] = true
+--SOUNDS["C352"] = true
+--SOUNDS["TMS36XX"] = true
+--SOUNDS["TMS3615"] = true
+SOUNDS["TMS5110"] = true
+SOUNDS["TMS5220"] = true
+SOUNDS["VLM5030"] = true
+--SOUNDS["ADPCM"] = true
+SOUNDS["MSM5205"] = true
+--SOUNDS["MSM5232"] = true
+SOUNDS["OKIM6258"] = true
+SOUNDS["OKIM6295"] = true
+--SOUNDS["OKIM6376"] = true
+--SOUNDS["OKIM9810"] = true
+SOUNDS["UPD7752"] = true
+SOUNDS["UPD7759"] = true
+SOUNDS["HC55516"] = true
+--SOUNDS["TC8830F"] = true
+--SOUNDS["K005289"] = true
+--SOUNDS["K007232"] = true
+SOUNDS["K051649"] = true
+--SOUNDS["K053260"] = true
+--SOUNDS["K054539"] = true
+--SOUNDS["K056800"] = true
+--SOUNDS["SEGAPCM"] = true
+SOUNDS["MULTIPCM"] = true
+SOUNDS["SCSP"] = true
+SOUNDS["AICA"] = true
+SOUNDS["RF5C68"] = true
+--SOUNDS["RF5C400"] = true
+--SOUNDS["CEM3394"] = true
+SOUNDS["QSOUND"] = true
+--SOUNDS["QS1000"] = true
+SOUNDS["SAA1099"] = true
+--SOUNDS["IREMGA20"] = true
+SOUNDS["ES5503"] = true
+SOUNDS["ES5505"] = true
+SOUNDS["ES5506"] = true
+--SOUNDS["BSMT2000"] = true
+--SOUNDS["GAELCO_CG1V"] = true
+--SOUNDS["GAELCO_GAE1"] = true
+SOUNDS["HUC6230"] = true
+SOUNDS["C6280"] = true
+SOUNDS["SP0250"] = true
+SOUNDS["SPU"] = true
+SOUNDS["CDDA"] = true
+--SOUNDS["ICS2115"] = true
+--SOUNDS["I5000_SND"] = true
+--SOUNDS["ST0016"] = true
+--SOUNDS["SETAPCM"] = true
+--SOUNDS["X1_010"] = true
+--SOUNDS["VRENDER0"] = true
+SOUNDS["VOTRAX"] = true
+--SOUNDS["ES8712"] = true
+SOUNDS["CDP1869"] = true
+SOUNDS["S14001A"] = true
+SOUNDS["WAVE"] = true
+SOUNDS["SID6581"] = true
+SOUNDS["SID8580"] = true
+SOUNDS["SP0256"] = true
+--SOUNDS["DIGITALKER"] = true
+SOUNDS["CDP1863"] = true
+SOUNDS["CDP1864"] = true
+--SOUNDS["ZSG2"] = true
+SOUNDS["MOS656X"] = true
+SOUNDS["ASC"] = true
+--SOUNDS["MAS3507D"] = true
+SOUNDS["SOCRATES"] = true
+SOUNDS["TMC0285"] = true
+SOUNDS["TMS5200"] = true
+SOUNDS["CD2801"] = true
+SOUNDS["CD2802"] = true
+--SOUNDS["M58817"] = true
+SOUNDS["TMC0281"] = true
+SOUNDS["TMS5100"] = true
+SOUNDS["TMS5110A"] = true
+SOUNDS["LMC1992"] = true
+SOUNDS["AWACS"] = true
+--SOUNDS["YMZ770"] = true
+--SOUNDS["MPEG_AUDIO"] = true
+SOUNDS["T6721A"] = true
+SOUNDS["MOS7360"] = true
+SOUNDS["ESQPUMP"] = true
+SOUNDS["VRC6"] = true
+--SOUNDS["SB0400"] = true
+--SOUNDS["AC97"] = true
+--SOUNDS["ES1373"] = true
+SOUNDS["L7A1045"] = true
+--SOUNDS["AD1848"] = true
+SOUNDS["UPD1771"] = true
+SOUNDS["GB_SOUND"] = true
+SOUNDS["PCD3311"] = true
+SOUNDS["MEA8000"] = true
+--SOUNDS["DAC76"] = true
+--SOUNDS["MM5837"] = true
+SOUNDS["DAVE"] = true
+--SOUNDS["LC7535"] = true
+SOUNDS["UPD934G"] = true
+SOUNDS["IOPSPU"] = true
+SOUNDS["SWP00"] = true
+SOUNDS["SWP20"] = true
+SOUNDS["SWP30"] = true
+--SOUNDS["XT446"] = true
+SOUNDS["S_DSP"] = true
+SOUNDS["ROLANDPCM"] = true
+--SOUNDS["TT5665"] = true
+SOUNDS["RP2C33_SOUND"] = true
+SOUNDS["UDA1344"] = true
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+VIDEOS["SEGA315_5124"] = true
+VIDEOS["SEGA315_5313"] = true
+VIDEOS["AM8052"] = true
+--VIDEOS["BUFSPRITE"] = true
+VIDEOS["BT45X"] = true
+VIDEOS["BT459"] = true
+VIDEOS["BT47X"] = true
+VIDEOS["CATSEYE"] = true
+VIDEOS["CDP1861"] = true
+VIDEOS["CDP1862"] = true
+--VIDEOS["CESBLIT"] = true
+VIDEOS["CRT9007"] = true
+VIDEOS["CRT9021"] = true
+VIDEOS["CRT9028"] = true
+VIDEOS["CRT9212"] = true
+VIDEOS["CRTC_EGA"] = true
+VIDEOS["DL1416"] = true
+VIDEOS["DM9368"] = true
+VIDEOS["DP8350"] = true
+VIDEOS["EF9340_1"] = true
+VIDEOS["EF9345"] = true
+VIDEOS["EF9364"] = true
+VIDEOS["EF9365"] = true
+--VIDEOS["EF9369"] = true
+VIDEOS["FIXFREQ"] = true
+VIDEOS["GF4500"] = true
+--VIDEOS["EPIC12"] = true
+VIDEOS["NT7534"] = true
+VIDEOS["HD44102"] = true
+VIDEOS["HD44352"] = true
+VIDEOS["HD44780"] = true
+VIDEOS["HD61202"] = true
+VIDEOS["HD61603"] = true
+VIDEOS["HD61830"] = true
+VIDEOS["HD63484"] = true
+VIDEOS["HD66421"] = true
+VIDEOS["HLCD0438"] = true
+VIDEOS["HLCD0488"] = true
+VIDEOS["HLCD0515"] = true
+VIDEOS["HLCD0538"] = true
+VIDEOS["HP1LL3"] = true
+VIDEOS["HUC6202"] = true
+VIDEOS["HUC6260"] = true
+VIDEOS["HUC6261"] = true
+VIDEOS["HUC6270"] = true
+VIDEOS["HUC6271"] = true
+VIDEOS["HUC6272"] = true
+VIDEOS["I8244"] = true
+VIDEOS["I82730"] = true
+VIDEOS["I8275"] = true
+VIDEOS["IMS_CVC"] = true
+VIDEOS["LC7582"] = true
+VIDEOS["LC7985"] = true
+--VIDEOS["M50458"] = true
+--VIDEOS["MB90082"] = true
+--VIDEOS["MB_VCU"] = true
+VIDEOS["MC6845"] = true
+VIDEOS["MC6847"] = true
+VIDEOS["MD4330B"] = true
+VIDEOS["MM5445"] = true
+VIDEOS["MSM6222B"] = true
+VIDEOS["MSM6255"] = true
+VIDEOS["MOS6566"] = true
+VIDEOS["PC_VGA"] = true
+VIDEOS["PCD8544"] = true
+VIDEOS["PCF2100"] = true
+--VIDEOS["POLY"] = true
+VIDEOS["PSX"] = true
+VIDEOS["RAMDAC"] = true
+VIDEOS["S2636"] = true
+VIDEOS["SAA5050"] = true
+VIDEOS["SAA5240"] = true
+VIDEOS["PWM_DISPLAY"] = true
+VIDEOS["SDA5708"] = true
+VIDEOS["SED1200"] = true
+VIDEOS["SED1330"] = true
+VIDEOS["SED1356"] = true
+VIDEOS["SED1500"] = true
+VIDEOS["SED1520"] = true
+VIDEOS["SNES_PPU"] = true
+VIDEOS["STVVDP"] = true
+VIDEOS["T6963C"] = true
+VIDEOS["T6A04"] = true
+VIDEOS["TEA1002"] = true
+--VIDEOS["TLC34076"] = true
+--VIDEOS["TMS34061"] = true
+VIDEOS["TMS3556"] = true
+VIDEOS["TMS9927"] = true
+VIDEOS["TMS9928A"] = true
+VIDEOS["TOPCAT"] = true
+VIDEOS["NEREID"] = true
+VIDEOS["UPD3301"] = true
+VIDEOS["UPD7220"] = true
+VIDEOS["UPD7227"] = true
+VIDEOS["V9938"] = true
+VIDEOS["VIC4567"] = true
+VIDEOS["VIRGE_PCI"] = true
+--VIDEOS["VOODOO"] = true
+VIDEOS["SCN2674"] = true
+VIDEOS["GB_LCD"] = true
+VIDEOS["GBA_LCD"] = true
+VIDEOS["MGA2064W"] = true
+VIDEOS["PPU2C0X"] = true
+VIDEOS["DP8510"] = true
+VIDEOS["MB88303"] = true
+VIDEOS["PS2GS"] = true
+VIDEOS["PS2GIF"] = true
+VIDEOS["DECSFB"] = true
+VIDEOS["BT431"] = true
+--VIDEOS["VRENDER0"] = true
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["AKIKO"] = true
+MACHINES["ALPHA_8921"] = true
+MACHINES["AM2901B"] = true
+MACHINES["AUTOCONFIG"] = true
+MACHINES["BUSMOUSE"] = true
+MACHINES["CR511B"] = true
+MACHINES["DMAC"] = true
+MACHINES["GAYLE"] = true
+MACHINES["6522VIA"] = true
+MACHINES["6821PIA"] = true
+MACHINES["6840PTM"] = true
+MACHINES["MPCC68561"] = true
+MACHINES["68681"] = true
+MACHINES["7200FIFO"] = true
+MACHINES["8530SCC"] = true
+MACHINES["ACIA6850"] = true
+MACHINES["ACORN_IOC"] = true
+MACHINES["ACORN_MEMC"] = true
+MACHINES["ACORN_VIDC"] = true
+MACHINES["ADC0804"] = true
+MACHINES["ADC0808"] = true
+MACHINES["ADC083X"] = true
+MACHINES["ADC1038"] = true
+MACHINES["ADC1213X"] = true
+MACHINES["AICARTC"] = true
+MACHINES["AM25S55X"] = true
+MACHINES["AM2847"] = true
+MACHINES["AM2910"] = true
+MACHINES["AM53CF96"] = true
+MACHINES["AM79C30"] = true
+MACHINES["AM79C90"] = true
+MACHINES["AM9513"] = true
+MACHINES["AM9517A"] = true
+MACHINES["AM9519"] = true
+MACHINES["AMIGAFDC"] = true
+MACHINES["APPLEPIC"] = true
+MACHINES["ARM_IOMD"] = true
+MACHINES["AT_KEYBC"] = true
+MACHINES["AT28C16"] = true
+MACHINES["AT28C64B"] = true
+MACHINES["AT29X"] = true
+MACHINES["AT45DBXX"] = true
+MACHINES["ATAFLASH"] = true
+MACHINES["AY31015"] = true
+MACHINES["BANKDEV"] = true
+MACHINES["BIM68153"] = true
+MACHINES["BQ4847"] = true
+MACHINES["BQ4852"] = true
+MACHINES["CDP1852"] = true
+MACHINES["CDP1871"] = true
+MACHINES["CDP1879"] = true
+--MACHINES["CDU76S"] = true
+MACHINES["CH376"] = true
+MACHINES["CHESSMACHINE"] = true
+MACHINES["CMOS40105"] = true
+MACHINES["COM52C50"] = true
+MACHINES["COM8116"] = true
+MACHINES["COP452"] = true
+MACHINES["CR589"] = true
+MACHINES["CS4031"] = true
+MACHINES["CS8221"] = true
+MACHINES["CS8900A"] = true
+MACHINES["CXD1095"] = true
+MACHINES["DP8390"] = true
+MACHINES["DP83932C"] = true
+MACHINES["DP8573"] = true
+--MACHINES["DS1204"] = true
+MACHINES["DS1302"] = true
+MACHINES["DS1315"] = true
+MACHINES["DS1386"] = true
+MACHINES["DS17X85"] = true
+MACHINES["DS2401"] = true
+MACHINES["DS2404"] = true
+MACHINES["DS6417"] = true
+MACHINES["DS75160A"] = true
+MACHINES["DS75161A"] = true
+MACHINES["DS8874"] = true
+MACHINES["E0516"] = true
+MACHINES["E05A03"] = true
+MACHINES["E05A30"] = true
+MACHINES["EEPROMDEV"] = true
+MACHINES["ER1400"] = true
+MACHINES["ER2055"] = true
+MACHINES["EXORTERM"] = true
+MACHINES["F3853"] = true
+MACHINES["F4702"] = true
+MACHINES["GT913"] = true
+MACHINES["HD63450"] = true
+MACHINES["HD64610"] = true
+MACHINES["HP_DC100_TAPE"] = true
+MACHINES["HP_TACO"] = true
+MACHINES["1MA6"] = true
+MACHINES["1MB5"] = true
+MACHINES["I2CMEM"] = true
+MACHINES["I3001"] = true
+MACHINES["I3002"] = true
+MACHINES["I7220"] = true
+MACHINES["I80130"] = true
+MACHINES["I8087"] = true
+MACHINES["I8155"] = true
+MACHINES["I8212"] = true
+MACHINES["I8214"] = true
+MACHINES["I82355"] = true
+MACHINES["I8243"] = true
+MACHINES["I8251"] = true
+MACHINES["I8255"] = true
+MACHINES["I8257"] = true
+MACHINES["I8271"] = true
+MACHINES["I8279"] = true
+MACHINES["I8291A"] = true
+MACHINES["I8355"] = true
+--MACHINES["IBM21S850"] = true
+MACHINES["ICM7170"] = true
+MACHINES["IDECTRL"] = true
+MACHINES["IE15"] = true
+MACHINES["IM6402"] = true
+MACHINES["INS8154"] = true
+MACHINES["INS8250"] = true
+MACHINES["INTELFLASH"] = true
+MACHINES["JVS"] = true
+MACHINES["K033906"] = true
+MACHINES["K053252"] = true
+MACHINES["K056230"] = true
+MACHINES["KB3600"] = true
+MACHINES["KBDC8042"] = true
+MACHINES["KR2376"] = true
+MACHINES["LATCH8"] = true
+MACHINES["LC89510"] = true
+MACHINES["LDPR8210"] = true
+MACHINES["LDSTUB"] = true
+MACHINES["LDV1000"] = true
+MACHINES["LDVP931"] = true
+MACHINES["LH5810"] = true
+MACHINES["LINFLASH"] = true
+MACHINES["LOCOMO"] = true
+MACHINES["LPCI"] = true
+MACHINES["LSI53C810"] = true
+MACHINES["M3002"] = true
+MACHINES["M68307"] = true
+MACHINES["M68340"] = true
+MACHINES["M950X0"] = true
+MACHINES["M68SFDC"] = true
+MACHINES["M6M80011AP"] = true
+MACHINES["MB14241"] = true
+MACHINES["MB3773"] = true
+MACHINES["MB8421"] = true
+MACHINES["MB87030"] = true
+MACHINES["MB87078"] = true
+MACHINES["MB8795"] = true
+MACHINES["MB89352"] = true
+MACHINES["MB89371"] = true
+MACHINES["MC14411"] = true
+MACHINES["MC146818"] = true
+MACHINES["MC6843"] = true
+MACHINES["MC6844"] = true
+MACHINES["MC6846"] = true
+MACHINES["MC6852"] = true
+MACHINES["MC6854"] = true
+MACHINES["MC68328"] = true
+MACHINES["MC68901"] = true
+MACHINES["MCCS1850"] = true
+MACHINES["MCF5206E"] = true
+MACHINES["MICROTOUCH"] = true
+MACHINES["MIOT6530"] = true
+MACHINES["MM5307"] = true
+MACHINES["MM58167"] = true
+MACHINES["MM58174"] = true
+MACHINES["MM58274C"] = true
+MACHINES["MM74C922"] = true
+MACHINES["MM5740"] = true
+MACHINES["MOS6526"] = true
+MACHINES["MOS6529"] = true
+MACHINES["MOS6551"] = true
+MACHINES["MOS6702"] = true
+MACHINES["MOS8706"] = true
+MACHINES["MOS8722"] = true
+MACHINES["MOS8726"] = true
+MACHINES["MPU401"] = true
+MACHINES["MSM5832"] = true
+MACHINES["MSM58321"] = true
+MACHINES["MSM6242"] = true
+--MACHINES["MSM6253"] = true
+MACHINES["MYB3K_KEYBOARD"] = true
+MACHINES["NCR5380"] = true
+MACHINES["NCR5385"] = true
+MACHINES["NCR5390"] = true
+MACHINES["NCR539x"] = true
+MACHINES["NCR53C7XX"] = true
+MACHINES["NETLIST"] = true
+MACHINES["NMC9306"] = true
+MACHINES["NSC810"] = true
+MACHINES["NSCSI"] = true
+MACHINES["OMTI5100"] = true
+MACHINES["OUTPUT_LATCH"] = true
+MACHINES["PC_FDC"] = true
+MACHINES["PC_LPT"] = true
+MACHINES["PCCARD"] = true
+MACHINES["PCF8573"] = true
+MACHINES["PCF8583"] = true
+--MACHINES["PCF8584"] = true
+MACHINES["PCF8593"] = true
+MACHINES["PCI"] = true
+MACHINES["PCKEYBRD"] = true
+MACHINES["PDC"] = true
+MACHINES["PHI"] = true
+MACHINES["PIC8259"] = true
+MACHINES["PIT68230"] = true
+MACHINES["PIT8253"] = true
+MACHINES["PLA"] = true
+--MACHINES["PROFILE"] = true
+MACHINES["PROM82S129"] = true
+MACHINES["PXA255"] = true
+MACHINES["R64H156"] = true
+MACHINES["RF5C296"] = true
+MACHINES["RIOT6532"] = true
+MACHINES["RIPPLE_COUNTER"] = true
+MACHINES["ROC10937"] = true
+MACHINES["RP5C01"] = true
+MACHINES["RP5C15"] = true
+MACHINES["RP5H01"] = true
+MACHINES["RSTBUF"] = true
+MACHINES["RTC4543"] = true
+MACHINES["RTC65271"] = true
+MACHINES["RTC9701"] = true
+MACHINES["S_SMP"] = true
+--MACHINES["S2636"] = true
+MACHINES["S3520CF"] = true
+MACHINES["S3C24XX"] = true
+MACHINES["S3C44B0"] = true
+MACHINES["SA1110"] = true
+MACHINES["SA1111"] = true
+MACHINES["SAA1043"] = true
+MACHINES["SATURN"] = true
+MACHINES["SCC68070"] = true
+--MACHINES["SCSI"] = true
+MACHINES["SCC2698B"] = true
+MACHINES["SCN_PCI"] = true
+MACHINES["SCOOP"] = true
+MACHINES["SCUDSP"] = true
+MACHINES["SECFLASH"] = true
+MACHINES["SEIBU_COP"] = true
+MACHINES["SENSORBOARD"] = true
+--MACHINES["SERFLASH"] = true
+MACHINES["SMC91C9X"] = true
+MACHINES["SMIOC"] = true
+MACHINES["SEGA_SCU"] = true
+MACHINES["SMPC"] = true
+MACHINES["SPG2XX"] = true
+MACHINES["SPG290"] = true
+MACHINES["SPISDCARD"] = true
+MACHINES["STVCD"] = true
+MACHINES["SUN4C_MMU"] = true
+MACHINES["SWTPC8212"] = true
+MACHINES["TASC_SB30"] = true
+MACHINES["TC0091LVC"] = true
+MACHINES["TDC1008"] = true
+--MACHINES["TE7750"] = true
+MACHINES["TIMEKPR"] = true
+MACHINES["TMC0430"] = true
+MACHINES["TMC0999"] = true
+MACHINES["TMC208K"] = true
+MACHINES["TMP68301"] = true
+MACHINES["TMS5501"] = true
+MACHINES["TMS6100"] = true
+MACHINES["TMS9901"] = true
+MACHINES["TMS9902"] = true
+MACHINES["TMS9914"] = true
+MACHINES["TPI6525"] = true
+MACHINES["TTL7400"] = true
+MACHINES["TTL7404"] = true
+--MACHINES["TSB12LV01A"] = true
+MACHINES["TTL74123"] = true
+MACHINES["TTL74145"] = true
+MACHINES["TTL74148"] = true
+MACHINES["TTL74153"] = true
+MACHINES["TTL74157"] = true
+MACHINES["TTL74161"] = true
+MACHINES["TTL74164"] = true
+MACHINES["TTL74175"] = true
+MACHINES["TTL74181"] = true
+MACHINES["TTL74259"] = true
+MACHINES["TTL74381"] = true
+MACHINES["TTL74543"] = true
+MACHINES["TTL7474"] = true
+MACHINES["TUBE"] = true
+MACHINES["UCB1200"] = true
+MACHINES["UPD1990A"] = true
+MACHINES["UPD4991A"] = true
+--MACHINES["UPD4992"] = true
+MACHINES["UPD4701"] = true
+MACHINES["UPD7001"] = true
+MACHINES["UPD7002"] = true
+MACHINES["UPD7004"] = true
+MACHINES["UPD71071"] = true
+MACHINES["UPD765"] = true
+MACHINES["FDC_PLL"] = true
+MACHINES["V3021"] = true
+MACHINES["VIC_PL192"] = true
+MACHINES["WD_FDC"] = true
+MACHINES["WD1000"] = true
+MACHINES["WD1010"] = true
+MACHINES["WD11C00_17"] = true
+MACHINES["WD2010"] = true
+MACHINES["WD33C9X"] = true
+MACHINES["WD7600"] = true
+MACHINES["X2201"] = true
+MACHINES["X2212"] = true
+MACHINES["X76F041"] = true
+MACHINES["X76F100"] = true
+MACHINES["YM2148"] = true
+MACHINES["YM3802"] = true
+MACHINES["Z80CTC"] = true
+MACHINES["Z80SIO"] = true
+MACHINES["Z80SCC"] = true
+MACHINES["Z80DMA"] = true
+MACHINES["Z80PIO"] = true
+MACHINES["Z80STI"] = true
+MACHINES["Z8536"] = true
+MACHINES["SMC92X4"] = true
+MACHINES["HDC9234"] = true
+MACHINES["TI99_HD"] = true
+MACHINES["STRATA"] = true
+MACHINES["STEPPERS"] = true
+MACHINES["CORVUSHD"] = true
+MACHINES["WOZFDC"] = true
+MACHINES["APPLE_FDINTF"] = true
+MACHINES["IWM"] = true
+MACHINES["SWIM1"] = true
+MACHINES["SWIM2"] = true
+MACHINES["SWIM3"] = true
+MACHINES["MAC_VIDEO_SONORA"] = true
+MACHINES["DIABLO_HD"] = true
+MACHINES["TMS1024"] = true
+MACHINES["NSC810"] = true
+MACHINES["VT82C496"] = true
+MACHINES["FDC37C93X"] = true
+MACHINES["GENPC"] = true
+MACHINES["GEN_LATCH"] = true
+MACHINES["WATCHDOG"] = true
+MACHINES["SMARTMEDIA"] = true
+MACHINES["APPLE_DRIVE"] = true
+MACHINES["APPLE_FDC"] = true
+MACHINES["SONY_DRIVE"] = true
+MACHINES["SCNXX562"] = true
+MACHINES["FGA002"] = true
+MACHINES["I82586"] = true
+MACHINES["INPUT_MERGER"] = true
+-- MACHINES["K054321"] = true
+MACHINES["ADC0844"] = true
+MACHINES["28FXXX"] = true
+-- MACHINES["GEN_FIFO"] = true
+MACHINES["Z80DAISY"] = true
+MACHINES["PS2DMAC"] = true
+MACHINES["PS2INTC"] = true
+MACHINES["PS2MC"] = true
+MACHINES["PS2PAD"] = true
+MACHINES["PS2SIF"] = true
+MACHINES["PS2TIMER"] = true
+MACHINES["IOPCDVD"] = true
+MACHINES["IOPDMA"] = true
+MACHINES["IOPINTC"] = true
+MACHINES["IOPSIO2"] = true
+MACHINES["IOPTIMER"] = true
+MACHINES["Z8038"] = true
+MACHINES["AIC565"] = true
+MACHINES["AIC580"] = true
+MACHINES["AIC6250"] = true
+MACHINES["DC7085"] = true
+MACHINES["I82357"] = true
+MACHINES["XC1700E"] = true
+MACHINES["EDLC"] = true
+MACHINES["WTL3132"] = true
+MACHINES["CXD1185"] = true
+MACHINES["BL_HANDHELDS_MENUCONTROL"] = true
+MACHINES["NS32081"] = true
+MACHINES["NS32202"] = true
+MACHINES["NS32082"] = true
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+
+BUSES["A1BUS"] = true
+BUSES["A2BUS"] = true
+BUSES["A2GAMEIO"] = true
+BUSES["A7800"] = true
+BUSES["A800"] = true
+BUSES["ABCBUS"] = true
+BUSES["ABCKB"] = true
+BUSES["ACORN"] = true
+BUSES["ADAM"] = true
+BUSES["ADAMNET"] = true
+BUSES["ADB"] = true
+BUSES["AMIGA_KEYBOARD"] = true
+BUSES["APF"] = true
+BUSES["APRICOT_EXPANSION"] = true
+BUSES["APRICOT_KEYBOARD"] = true
+BUSES["APRICOT_VIDEO"] = true
+BUSES["AQUARIUS"] = true
+BUSES["ARCADIA"] = true
+BUSES["ASTROCADE"] = true
+BUSES["ATA"] = true
+BUSES["BBC_1MHZBUS"] = true
+BUSES["BBC_ANALOGUE"] = true
+BUSES["BBC_CART"] = true
+BUSES["BBC_EXP"] = true
+BUSES["BBC_FDC"] = true
+BUSES["BBC_INTERNAL"] = true
+BUSES["BBC_JOYPORT"] = true
+BUSES["BBC_MODEM"] = true
+BUSES["BBC_ROM"] = true
+BUSES["BBC_TUBE"] = true
+BUSES["BBC_USERPORT"] = true
+BUSES["BML3"] = true
+BUSES["BW2"] = true
+BUSES["C64"] = true
+BUSES["CBM2"] = true
+BUSES["CBMIEC"] = true
+BUSES["CBUS"] = true
+BUSES["CENTRONICS"] = true
+BUSES["CGENIE_EXPANSION"] = true
+BUSES["CGENIE_PARALLEL"] = true
+BUSES["CHANNELF"] = true
+BUSES["COCO"] = true
+BUSES["COLECO_CART"] = true
+BUSES["COLECO_CONTROLLER"] = true
+BUSES["COMPIS_GRAPHICS"] = true
+BUSES["COMPUCOLOR"] = true
+BUSES["COMX35"] = true
+BUSES["CPC"] = true
+BUSES["CRVISION"] = true
+BUSES["DMV"] = true
+BUSES["ECBBUS"] = true
+BUSES["ECONET"] = true
+BUSES["EINSTEIN_USERPORT"] = true
+BUSES["EKARA"] = true
+BUSES["ELECTRON_CART"] = true
+BUSES["ELECTRON"] = true
+BUSES["EP64"] = true
+BUSES["EPSON_SIO"] = true
+BUSES["FMT_SCSI"] = true
+BUSES["GAMATE"] = true
+BUSES["GAMEBOY"] = true
+BUSES["GAMEGEAR"] = true
+BUSES["GBA"] = true
+BUSES["GENERIC"] = true
+BUSES["GIO64"] = true
+BUSES["HEXBUS"] = true
+BUSES["HP_IPC_IO"] = true
+BUSES["HP80_IO"] = true
+BUSES["HP9845_IO"] = true
+BUSES["HPDIO"] = true
+BUSES["HPHIL"] = true
+BUSES["IEEE488"] = true
+BUSES["IMI7000"] = true
+BUSES["INTELLEC4"] = true
+BUSES["INTERPRO_KEYBOARD"] = true
+BUSES["INTERPRO_MOUSE"] = true
+BUSES["INTERPRO_SR"] = true
+BUSES["INTV_CTRL"] = true
+BUSES["INTV"] = true
+BUSES["IQ151"] = true
+BUSES["ISA"] = true
+BUSES["ISBX"] = true
+BUSES["JAKKS_GAMEKEY"] = true
+BUSES["KC"] = true
+BUSES["LPCI"] = true
+BUSES["M5"] = true
+BUSES["MACKBD"] = true
+BUSES["MACPDS"] = true
+BUSES["MC10"] = true
+BUSES["MEGADRIVE"] = true
+BUSES["MIDI"] = true
+BUSES["MSX_SLOT"] = true
+BUSES["MTX"] = true
+BUSES["MULTIBUS"] = true
+BUSES["NASBUS"] = true
+BUSES["NEOGEO_CTRL"] = true
+BUSES["NEOGEO"] = true
+BUSES["NES_CTRL"] = true
+BUSES["NES"] = true
+BUSES["NEWBRAIN"] = true
+BUSES["NSCSI"] = true
+BUSES["NUBUS"] = true
+BUSES["O2"] = true
+BUSES["ORICEXT"] = true
+BUSES["P2000"] = true
+BUSES["PASOPIA"] = true
+BUSES["PC_JOY"] = true
+BUSES["PC_KBD"] = true
+BUSES["PC1512"] = true
+BUSES["PCE"] = true
+BUSES["PCE_CTRL"] = true
+BUSES["PET"] = true
+BUSES["PLUS4"] = true
+BUSES["POFO"] = true
+BUSES["PSI_KEYBOARD"] = true
+BUSES["PSX_CONTROLLER"] = true
+BUSES["PSX_PARALLEL"] = true
+BUSES["QBUS"] = true
+BUSES["QL"] = true
+BUSES["RS232"] = true
+BUSES["RTPC_KBD"] = true
+BUSES["S100"] = true
+BUSES["SAITEK_OSA"] = true
+BUSES["SAMCOUPE_DRIVE_PORT"] = true
+BUSES["SAMCOUPE_EXPANSION"] = true
+BUSES["SAMCOUPE_MOUSE_PORT"] = true
+BUSES["SAT_CTRL"] = true
+BUSES["SATURN"] = true
+BUSES["SBUS"] = true
+BUSES["SCSI"] = true
+BUSES["SCV"] = true
+BUSES["SDK85"] = true
+BUSES["SEGA8"] = true
+BUSES["SG1000_EXP"] = true
+BUSES["SGIKBD"] = true
+BUSES["SMS_CTRL"] = true
+BUSES["SMS_EXP"] = true
+BUSES["SNES_CTRL"] = true
+BUSES["SNES"] = true
+BUSES["SPC1000"] = true
+BUSES["SPECTRUM"] = true
+BUSES["SS50"] = true
+BUSES["SUNKBD"] = true
+BUSES["SUNMOUSE"] = true
+BUSES["SVI_EXPANDER"] = true
+BUSES["SVI_SLOT"] = true
+BUSES["TANBUS"] = true
+BUSES["TATUNG_PIPE"] = true
+BUSES["THOMSON"] = true
+BUSES["TI8X"] = true
+BUSES["TI99"] = true
+BUSES["TI99X"] = true
+BUSES["TIKI100"] = true
+BUSES["TMC600"] = true
+BUSES["TVC"] = true
+BUSES["UTS_KBD"] = true
+BUSES["VBOY"] = true
+BUSES["VC4000"] = true
+BUSES["VCS"] = true
+BUSES["VCS_CTRL"] = true
+BUSES["VECTREX"] = true
+BUSES["VIC10"] = true
+BUSES["VIC20"] = true
+BUSES["VIDBRAIN"] = true
+BUSES["VIP"] = true
+BUSES["VME"] = true
+BUSES["VSMILE"] = true
+BUSES["VTECH_IOEXP"] = true
+BUSES["VTECH_MEMEXP"] = true
+BUSES["WANGPC"] = true
+BUSES["WSWAN"] = true
+BUSES["X68K"] = true
+BUSES["Z29_KBD"] = true
+BUSES["Z88"] = true
+BUSES["ZORRO"] = true
+
+--------------------------------------------------
+-- specify used file formats
+--------------------------------------------------
+
+FORMATS["2D_DSK"] = true
+FORMATS["A26_CAS"] = true
+FORMATS["A5105_DSK"] = true
+FORMATS["ABC800_DSK"] = true
+FORMATS["ABCFD2_DSK"] = true
+FORMATS["ACE_TAP"] = true
+FORMATS["ACORN_DSK"] = true
+FORMATS["ADAM_CAS"] = true
+FORMATS["ADAM_DSK"] = true
+FORMATS["AFS_DSK"] = true
+FORMATS["AGAT840K_HLE_DSK"] = true
+FORMATS["AIM_DSK"] = true
+FORMATS["AMI_DSK"] = true
+FORMATS["AP2_DSK"] = true
+FORMATS["APD_DSK"] = true
+FORMATS["APF_APT"] = true
+FORMATS["APOLLO_DSK"] = true
+FORMATS["APPLIX_DSK"] = true
+FORMATS["APRIDISK"] = true
+FORMATS["AP_DSK35"] = true
+FORMATS["AQUARIUS_CAQ"] = true
+FORMATS["ASST128_DSK"] = true
+FORMATS["ASTROCADE_WAV"] = true
+FORMATS["ATARI_DSK"] = true
+FORMATS["ATOM_DSK"] = true
+FORMATS["ATOM_TAP"] = true
+FORMATS["BASICDSK"] = true
+FORMATS["BW12_DSK"] = true
+FORMATS["BW2_DSK"] = true
+FORMATS["C3040_DSK"] = true
+FORMATS["C4040_DSK"] = true
+FORMATS["C8280_DSK"] = true
+FORMATS["CAMPLYNX_CAS"] = true
+FORMATS["CAMPLYNX_DSK"] = true
+FORMATS["CBM_CRT"] = true
+FORMATS["CBM_TAP"] = true
+FORMATS["CCVF_DSK"] = true
+FORMATS["CD90_640_DSK"] = true
+FORMATS["CGENIE_DSK"] = true
+FORMATS["CGEN_CAS"] = true
+FORMATS["COCO_CAS"] = true
+FORMATS["COMX35_DSK"] = true
+FORMATS["CONCEPT_DSK"] = true
+FORMATS["COUPEDSK"] = true
+FORMATS["CPIS_DSK"] = true
+FORMATS["CSW_CAS"] = true
+FORMATS["D64_DSK"] = true
+FORMATS["D71_DSK"] = true
+FORMATS["D80_DSK"] = true
+FORMATS["D81_DSK"] = true
+FORMATS["D82_DSK"] = true
+FORMATS["DCP_DSK"] = true
+FORMATS["DIM_DSK"] = true
+FORMATS["DIP_DSK"] = true
+FORMATS["DMK_DSK"] = true
+FORMATS["DS9_DSK"] = true
+FORMATS["SDF_DSK"] = true
+FORMATS["EP64_DSK"] = true
+FORMATS["DMV_DSK"] = true
+FORMATS["ESQ16_DSK"] = true
+FORMATS["ESQ8_DSK"] = true
+FORMATS["EXCALI64_DSK"] = true
+FORMATS["FC100_CAS"] = true
+FORMATS["FDD_DSK"] = true
+FORMATS["FL1_DSK"] = true
+FORMATS["FLEX_DSK"] = true
+FORMATS["FM7_CAS"] = true
+FORMATS["FMSX_CAS"] = true
+FORMATS["FMTOWNS_DSK"] = true
+FORMATS["FSD_DSK"] = true
+FORMATS["G64_DSK"] = true
+FORMATS["GTP_CAS"] = true
+FORMATS["H8_CAS"] = true
+FORMATS["HECTOR_MINIDISC"] = true
+FORMATS["HECT_DSK"] = true
+FORMATS["HECT_TAP"] = true
+FORMATS["HPI_DSK"] = true
+FORMATS["HP_IPC_DSK"] = true
+FORMATS["HTI_TAP"] = true
+FORMATS["IBMXDF_DSK"] = true
+FORMATS["IMG_DSK"] = true
+FORMATS["IPF_DSK"] = true
+FORMATS["IQ151_DSK"] = true
+FORMATS["ITT3030_DSK"] = true
+FORMATS["JFD_DSK"] = true
+FORMATS["JUKU_DSK"] = true
+FORMATS["JVC_DSK"] = true
+FORMATS["KAYPRO_DSK"] = true
+FORMATS["KC85_DSK"] = true
+FORMATS["KC_CAS"] = true
+FORMATS["KIM1_CAS"] = true
+FORMATS["LVIV_LVT"] = true
+FORMATS["M20_DSK"] = true
+FORMATS["M5_DSK"] = true
+FORMATS["MBEE_CAS"] = true
+FORMATS["MDOS_DSK"] = true
+FORMATS["MFM_HD"] = true
+FORMATS["MM_DSK"] = true
+FORMATS["MS0515_DSK"] = true
+FORMATS["MSX_DSK"] = true
+FORMATS["MTX_DSK"] = true
+FORMATS["MZ_CAS"] = true
+FORMATS["NANOS_DSK"] = true
+FORMATS["NASCOM_DSK"] = true
+FORMATS["NASLITE_DSK"] = true
+FORMATS["NES_DSK"] = true
+FORMATS["NFD_DSK"] = true
+FORMATS["OPD_DSK"] = true
+FORMATS["ORAO_CAS"] = true
+FORMATS["ORIC_DSK"] = true
+FORMATS["ORIC_TAP"] = true
+FORMATS["OS9_DSK"] = true
+FORMATS["P2000T_CAS"] = true
+FORMATS["P6001_CAS"] = true
+FORMATS["PASTI_DSK"] = true
+FORMATS["PC98FDI_DSK"] = true
+FORMATS["PC98_DSK"] = true
+FORMATS["PHC25_CAS"] = true
+FORMATS["PK8020_DSK"] = true
+FORMATS["PMD_CAS"] = true
+FORMATS["POLY_DSK"] = true
+FORMATS["PPG_DSK"] = true
+FORMATS["PRIMOPTP"] = true
+FORMATS["PYLDIN_DSK"] = true
+FORMATS["QL_DSK"] = true
+FORMATS["RC759_DSK"] = true
+FORMATS["RK_CAS"] = true
+FORMATS["RX50_DSK"] = true
+FORMATS["SC3000_BIT"] = true
+FORMATS["SDD_DSK"] = true
+FORMATS["SF7000_DSK"] = true
+FORMATS["SMX_DSK"] = true
+FORMATS["SOL_CAS"] = true
+FORMATS["SORC_CAS"] = true
+FORMATS["SORC_DSK"] = true
+FORMATS["SORD_CAS"] = true
+FORMATS["SPC1000_CAS"] = true
+FORMATS["ST_DSK"] = true
+FORMATS["SVI_CAS"] = true
+FORMATS["SVI_DSK"] = true
+FORMATS["SWD_DSK"] = true
+FORMATS["TANDY2K_DSK"] = true
+FORMATS["THOM_CAS"] = true
+FORMATS["THOM_DSK"] = true
+FORMATS["TI99_DSK"] = true
+FORMATS["TIKI100_DSK"] = true
+FORMATS["TRD_DSK"] = true
+FORMATS["TRS80_DSK"] = true
+FORMATS["TRS_CAS"] = true
+FORMATS["TVC_CAS"] = true
+FORMATS["TVC_DSK"] = true
+FORMATS["TZX_CAS"] = true
+FORMATS["UEF_CAS"] = true
+FORMATS["UNIFLEX_DSK"] = true
+FORMATS["VDK_DSK"] = true
+FORMATS["VECTOR06_DSK"] = true
+FORMATS["VG5K_CAS"] = true
+FORMATS["VICTOR9K_DSK"] = true
+FORMATS["VT_CAS"] = true
+FORMATS["VT_DSK"] = true
+FORMATS["FS_VTECH"] = true
+FORMATS["WD177X_DSK"] = true
+FORMATS["X07_CAS"] = true
+FORMATS["X1_TAP"] = true
+FORMATS["XDF_DSK"] = true
+FORMATS["ZX81_P"] = true
+FORMATS["FS_PRODOS"] = true
+FORMATS["FS_ORIC_JASMIN"] = true
+
+--------------------------------------------------
+-- this is the list of driver libraries that
+-- comprise MESS plus messdriv.*", which contains
+-- the list of drivers
+--------------------------------------------------
+function linkProjects_mame_mess(_target, _subtarget)
+ links {
+ "access",
+ "aci",
+ "acorn",
+ "act",
+ "adc",
+ "agat",
+ "akai",
+ "alesis",
+ "altos",
+ "ami",
+ "amirix",
+ "amiga",
+ "ampro",
+ "amstrad",
+ "apf",
+ "apollo",
+ "apple",
+ "applied",
+ "arcadia",
+ "ascii",
+ "at",
+ "atari",
+ "att",
+ "ave",
+ "aviion",
+ "bally",
+ "bandai",
+ "banctec",
+ "be",
+ "beehive",
+ "bitcorp",
+ "bnpo",
+ "bondwell",
+ "booth",
+ "camputers",
+ "canon",
+ "cantab",
+ "casio",
+ "cbm",
+ "cccp",
+ "cce",
+ "ccs",
+ "ceres",
+ "chessking",
+ "chromatics",
+ "chrysler",
+ "citoh",
+ "coleco",
+ "compugraphic",
+ "conic",
+ "consumenta",
+ "cromemco",
+ "comx",
+ "concept",
+ "conitec",
+ "cxg",
+ "cybiko",
+ "dai",
+ "dcs",
+ "ddr",
+ "dec",
+ "dicksmth",
+ "dms",
+ "dragon",
+ "drc",
+ "dulmont",
+ "eaca",
+ "einis",
+ "elektor",
+ "elektrka",
+ "elektron",
+ "emusys",
+ "ensoniq",
+ "enterprise",
+ "entex",
+ "epoch",
+ "epson",
+ "ericsson",
+ "exidy",
+ "exorterm",
+ "fairch",
+ "fairlight",
+ "fidelity",
+ "force",
+ "francedr",
+ "fujitsu",
+ "funtech",
+ "galaxy",
+ "gamepark",
+ "gi",
+ "gridcomp",
+ "grundy",
+ "h01x",
+ "hartung",
+ "heathkit",
+ "hec2hrp",
+ "hegener",
+ "heurikon",
+ "hitachi",
+ "homebrew",
+ "homelab",
+ "hp",
+ "husky",
+ "ibm6580",
+ "ie15",
+ "imp",
+ "informer",
+ "intel",
+ "interpro",
+ "interton",
+ "intv",
+ "isc",
+ "jazz",
+ "kawai",
+ "kaypro",
+ "koei",
+ "kontron",
+ "korg",
+ "kurzweil",
+ "kyber",
+ "kyocera",
+ "leapfrog",
+ "learsiegler",
+ "lsi",
+ "luxor",
+ "magnavox",
+ "makerbot",
+ "matsushi",
+ "mattel",
+ "mb",
+ "mchester",
+ "memotech",
+ "mera",
+ "mg1",
+ "mgu",
+ "microkey",
+ "microsoft",
+ "microterm",
+ "mips",
+ "mit",
+ "mits",
+ "mitsubishi",
+ "mizar",
+ "morrow",
+ "mos",
+ "motorola",
+ "multitch",
+ "mupid",
+ "nakajima",
+ "nascom",
+ "natsemi",
+ "ncd",
+ "ne",
+ "nec",
+ "netronic",
+ "next",
+ "nintendo",
+ "nokia",
+ "northstar",
+ "novag",
+ "novation",
+ "olivetti",
+ "olympia",
+ "omnibyte",
+ "omron",
+ "openuni",
+ "orion",
+ "osborne",
+ "osi",
+ "palm",
+ "parker",
+ "pc",
+ "pdp1",
+ "pel",
+ "philips",
+ "pitronic",
+ "poly",
+ "poly88",
+ "psion",
+ "quantel",
+ "qume",
+ "radio",
+ "rca",
+ "regnecentralen",
+ "ritam",
+ "rm",
+ "robotron",
+ "rockwell",
+ "roland",
+ "rolm",
+ "rtpc",
+ "sage",
+ "saitek",
+ "samcoupe",
+ "samsung",
+ "sanyo",
+ "saturn",
+ "segacons",
+ "sequential",
+ "sgi",
+ "sharp",
+ "siemens",
+ "sinclair",
+ "skeleton",
+ "slicer",
+ "snk",
+ "sony",
+ "sony_news",
+ "sord",
+ "special",
+ "stm",
+ "sun",
+ "svi",
+ "svision",
+ "swtpc",
+ "synertek",
+ "ta",
+ "tab",
+ "tandberg",
+ "tangerin",
+ "tasc",
+ "tatung",
+ "teamconc",
+ "tectoy",
+ "tektroni",
+ "telenova",
+ "telercas",
+ "televideo",
+ "tesla",
+ "thomson",
+ "ti",
+ "tiger",
+ "tigertel",
+ "tiki",
+ "tomy",
+ "toshiba",
+ "trainer",
+ "trs",
+ "tvgames",
+ "ultimachine",
+ "ultratec",
+ "unicard",
+ "unisonic",
+ "unisys",
+ "usp",
+ "veb",
+ "verifone",
+ "vidbrain",
+ "videoton",
+ "visual",
+ "votrax",
+ "vtech",
+ "wang",
+ "wavemate",
+ "wyse",
+ "westinghouse",
+ "xerox",
+ "xussrpc",
+ "yamaha",
+ "zenith",
+ "zpa",
+ "zvt",
+ "messshared",
+ }
+ if (_subtarget=="mess") then
+ links {
+ "mameshared",
+ }
+ end
+end
+
+function createMESSProjects(_target, _subtarget, _name)
+ project (_name)
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-" .. _target .."_" .. _subtarget .. "_" .._name))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+
+ includedirs {
+ ext_includedir("zlib")
+ }
+end
+
+function createProjects_mame_mess(_target, _subtarget)
+--------------------------------------------------
+-- the following files are MAME components and
+-- shared across a number of drivers
+--
+-- aa310.c (MESS), aristmk5.c, ertictac.c (MAME)
+-- amiga.c (MESS), alg.c, arcadia.c, cubo.c, mquake.c, upscope.c (MAME)
+-- a2600.c (MESS), tourtabl.c (MAME)
+-- atari400.c (MESS), bartop52.c, maxaflex.c (MAME)
+-- jaguar.c (MAME)
+-- astrocde.c (MAME+MESS), g627.c
+-- cps1.c (MAME + MESS), cbaseball.c, mitchell.c (MAME)
+-- pk8000.c (MESS), photon.c (MAME)
+-- nes.c (MESS), cham23.c, famibox.c, multigam.c, playch10.c, vsnes.c (MAME)
+-- snes.c (MESS), nss.c, sfcbox.c, snesb.c (MAME)
+-- n64.c (MESS), aleck64.c (MAME)
+-- megadriv.c, segapico.c (MESS), hshavoc.c, megadrvb.c, megaplay.c, megatech.c, puckpkmn.c, segac2.c, segas18.c (MAME)
+-- dccons.c (MESS), naomi.c (MAME)
+-- neogeocd.c (MESS), midas.c, neogeo.c, neoprint.c (MAME)
+-- cdi.c (MESS + MAME)
+-- 3do.c (MESS + MAME), konamim2.c (MAME)
+-- vectrex.c (MESS + MAME)
+-- cps1.c (MESS + MAME)
+--------------------------------------------------
+if (_subtarget=="mess") then
+createMESSProjects(_target, _subtarget, "mameshared")
+files {
+ MAME_DIR .. "src/mame/machine/amiga.cpp",
+ MAME_DIR .. "src/mame/video/amiga.cpp",
+ MAME_DIR .. "src/mame/video/amigaaga.cpp",
+ MAME_DIR .. "src/mame/video/amigaaga.h",
+ MAME_DIR .. "src/mame/video/tia.cpp",
+ MAME_DIR .. "src/mame/video/tia.h",
+ MAME_DIR .. "src/mame/machine/atari400.cpp",
+ MAME_DIR .. "src/mame/video/atari400.cpp",
+ MAME_DIR .. "src/mame/includes/atari400.h",
+ MAME_DIR .. "src/mame/video/antic.cpp",
+ MAME_DIR .. "src/mame/video/antic.h",
+ MAME_DIR .. "src/mame/video/gtia.cpp",
+ MAME_DIR .. "src/mame/video/gtia.h",
+ MAME_DIR .. "src/mame/drivers/jaguar.cpp",
+ MAME_DIR .. "src/mame/includes/jaguar.h",
+ MAME_DIR .. "src/mame/video/jag_blitter.cpp",
+ MAME_DIR .. "src/mame/video/jag_blitter.h",
+ MAME_DIR .. "src/mame/audio/jaguar.cpp",
+ MAME_DIR .. "src/mame/video/jaguar.cpp",
+ MAME_DIR .. "src/mame/video/jagblit.h",
+ MAME_DIR .. "src/mame/video/jagblit.hxx",
+ MAME_DIR .. "src/mame/video/jagobj.hxx",
+ MAME_DIR .. "src/mame/drivers/astrocde.cpp",
+ MAME_DIR .. "src/mame/includes/astrocde.h",
+ MAME_DIR .. "src/mame/video/astrocde.cpp",
+ MAME_DIR .. "src/mame/machine/kabuki.cpp",
+ MAME_DIR .. "src/mame/machine/kabuki.h",
+ MAME_DIR .. "src/mame/video/pk8000.cpp",
+ MAME_DIR .. "src/mame/machine/snes.cpp",
+ MAME_DIR .. "src/mame/machine/n64.cpp",
+ MAME_DIR .. "src/mame/video/n64.cpp",
+ MAME_DIR .. "src/mame/video/n64types.h",
+ MAME_DIR .. "src/mame/video/rdpfiltr.hxx",
+ MAME_DIR .. "src/mame/video/n64.h",
+ MAME_DIR .. "src/mame/video/rdpblend.cpp",
+ MAME_DIR .. "src/mame/video/rdpblend.h",
+ MAME_DIR .. "src/mame/video/rdptpipe.cpp",
+ MAME_DIR .. "src/mame/video/rdptpipe.h",
+ MAME_DIR .. "src/mame/video/pin64.cpp",
+ MAME_DIR .. "src/mame/video/pin64.h",
+ MAME_DIR .. "src/mame/machine/megadriv.cpp",
+ MAME_DIR .. "src/mame/drivers/naomi.cpp",
+ MAME_DIR .. "src/mame/includes/naomi.h",
+ MAME_DIR .. "src/mame/includes/dc.h",
+ MAME_DIR .. "src/mame/machine/awboard.cpp",
+ MAME_DIR .. "src/mame/machine/awboard.h",
+ MAME_DIR .. "src/mame/machine/dc.cpp",
+ MAME_DIR .. "src/mame/machine/dc-ctrl.cpp",
+ MAME_DIR .. "src/mame/machine/dc-ctrl.h",
+ MAME_DIR .. "src/mame/machine/jvs13551.cpp",
+ MAME_DIR .. "src/mame/machine/jvs13551.h",
+ MAME_DIR .. "src/mame/machine/maple-dc.cpp",
+ MAME_DIR .. "src/mame/machine/maple-dc.h",
+ MAME_DIR .. "src/mame/machine/mapledev.cpp",
+ MAME_DIR .. "src/mame/machine/mapledev.h",
+ MAME_DIR .. "src/mame/machine/mie.cpp",
+ MAME_DIR .. "src/mame/machine/mie.h",
+ MAME_DIR .. "src/mame/machine/naomi.cpp",
+ MAME_DIR .. "src/mame/machine/naomibd.cpp",
+ MAME_DIR .. "src/mame/machine/naomibd.h",
+ MAME_DIR .. "src/mame/machine/naomig1.cpp",
+ MAME_DIR .. "src/mame/machine/naomig1.h",
+ MAME_DIR .. "src/mame/machine/naomigd.cpp",
+ MAME_DIR .. "src/mame/machine/naomigd.h",
+ MAME_DIR .. "src/mame/machine/naomim1.cpp",
+ MAME_DIR .. "src/mame/machine/naomim1.h",
+ MAME_DIR .. "src/mame/machine/naomim2.cpp",
+ MAME_DIR .. "src/mame/machine/naomim2.h",
+ MAME_DIR .. "src/mame/machine/naomim4.cpp",
+ MAME_DIR .. "src/mame/machine/naomim4.h",
+ MAME_DIR .. "src/mame/machine/naomirom.cpp",
+ MAME_DIR .. "src/mame/machine/naomirom.h",
+ MAME_DIR .. "src/mame/machine/315-5881_crypt.cpp",
+ MAME_DIR .. "src/mame/machine/315-5881_crypt.h",
+ MAME_DIR .. "src/mame/machine/315-6154.cpp",
+ MAME_DIR .. "src/mame/machine/315-6154.h",
+ MAME_DIR .. "src/mame/machine/segashiobd.cpp",
+ MAME_DIR .. "src/mame/machine/segashiobd.h",
+ MAME_DIR .. "src/mame/video/powervr2.cpp",
+ MAME_DIR .. "src/mame/video/powervr2.h",
+ MAME_DIR .. "src/mame/drivers/neogeo.cpp",
+ MAME_DIR .. "src/mame/includes/neogeo.h",
+ MAME_DIR .. "src/mame/machine/ng_memcard.cpp",
+ MAME_DIR .. "src/mame/machine/ng_memcard.h",
+ MAME_DIR .. "src/mame/video/neogeo.cpp",
+ MAME_DIR .. "src/mame/video/neogeo_spr.cpp",
+ MAME_DIR .. "src/mame/video/neogeo_spr.h",
+ MAME_DIR .. "src/mame/drivers/cdi.cpp",
+ MAME_DIR .. "src/mame/includes/cdi.h",
+ MAME_DIR .. "src/mame/machine/cdicdic.cpp",
+ MAME_DIR .. "src/mame/machine/cdicdic.h",
+ MAME_DIR .. "src/mame/machine/cdislavehle.cpp",
+ MAME_DIR .. "src/mame/machine/cdislavehle.h",
+ MAME_DIR .. "src/mame/video/mcd212.cpp",
+ MAME_DIR .. "src/mame/video/mcd212.h",
+ MAME_DIR .. "src/mame/drivers/3do.cpp",
+ MAME_DIR .. "src/mame/includes/3do.h",
+ MAME_DIR .. "src/mame/machine/3do.cpp",
+ MAME_DIR .. "src/mame/drivers/konamim2.cpp",
+ MAME_DIR .. "src/mame/drivers/vectrex.cpp",
+ MAME_DIR .. "src/mame/includes/vectrex.h",
+ MAME_DIR .. "src/mame/machine/vectrex.cpp",
+ MAME_DIR .. "src/mame/video/vectrex.cpp",
+ MAME_DIR .. "src/mame/drivers/cps1.cpp",
+ MAME_DIR .. "src/mame/includes/cps1.h",
+ MAME_DIR .. "src/mame/video/cps1.cpp",
+ MAME_DIR .. "src/mame/drivers/fcrash.cpp",
+ MAME_DIR .. "src/mame/video/xbox_nv2a.cpp",
+ MAME_DIR .. "src/mame/machine/xbox.cpp",
+ MAME_DIR .. "src/mame/machine/xbox_usb.cpp",
+ MAME_DIR .. "src/mame/machine/xbox_pci.cpp",
+ MAME_DIR .. "src/mame/includes/saturn.h",
+ MAME_DIR .. "src/mame/drivers/saturn.cpp",
+ MAME_DIR .. "src/mame/machine/saturn.cpp",
+ MAME_DIR .. "src/mame/machine/saturn_cdb.cpp",
+ MAME_DIR .. "src/mame/machine/saturn_cdb.h",
+}
+end
+--------------------------------------------------
+-- the following files are general components and
+-- shared across a number of drivers
+--------------------------------------------------
+createMESSProjects(_target, _subtarget, "messshared")
+files {
+ MAME_DIR .. "src/mame/machine/teleprinter.cpp",
+ MAME_DIR .. "src/mame/machine/teleprinter.h",
+ MAME_DIR .. "src/mame/machine/z80bin.cpp",
+ MAME_DIR .. "src/mame/machine/z80bin.h",
+}
+--------------------------------------------------
+-- manufacturer-specific groupings for drivers
+--------------------------------------------------
+
+createMESSProjects(_target, _subtarget, "access")
+files {
+ MAME_DIR .. "src/mame/drivers/acvirus.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "aci")
+files {
+ MAME_DIR .. "src/mame/drivers/aci_boris.cpp",
+ MAME_DIR .. "src/mame/drivers/aci_borisdpl.cpp",
+ MAME_DIR .. "src/mame/drivers/aci_ggm.cpp",
+ MAME_DIR .. "src/mame/drivers/aci_prodigy.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "acorn")
+files {
+ MAME_DIR .. "src/mame/drivers/aa310.cpp",
+ MAME_DIR .. "src/mame/machine/archimedes_keyb.cpp",
+ MAME_DIR .. "src/mame/machine/archimedes_keyb.h",
+ MAME_DIR .. "src/mame/drivers/accomm.cpp",
+ MAME_DIR .. "src/mame/drivers/acrnsys1.cpp",
+ MAME_DIR .. "src/mame/drivers/acrnsys.cpp",
+ MAME_DIR .. "src/mame/drivers/atom.cpp",
+ MAME_DIR .. "src/mame/includes/atom.h",
+ MAME_DIR .. "src/mame/drivers/bbc.cpp",
+ MAME_DIR .. "src/mame/includes/bbc.h",
+ MAME_DIR .. "src/mame/machine/bbc.cpp",
+ MAME_DIR .. "src/mame/video/bbc.cpp",
+ MAME_DIR .. "src/mame/drivers/cms.cpp",
+ MAME_DIR .. "src/mame/drivers/electron.cpp",
+ MAME_DIR .. "src/mame/includes/electron.h",
+ MAME_DIR .. "src/mame/machine/electron.cpp",
+ MAME_DIR .. "src/mame/video/electron.cpp",
+ MAME_DIR .. "src/mame/drivers/riscpc.cpp",
+ MAME_DIR .. "src/mame/drivers/z88.cpp",
+ MAME_DIR .. "src/mame/includes/z88.h",
+ MAME_DIR .. "src/mame/machine/upd65031.cpp",
+ MAME_DIR .. "src/mame/machine/upd65031.h",
+ MAME_DIR .. "src/mame/video/z88.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "act")
+files {
+ MAME_DIR .. "src/mame/drivers/apricot.cpp",
+ MAME_DIR .. "src/mame/drivers/apricotf.cpp",
+ MAME_DIR .. "src/mame/drivers/apricotp.cpp",
+ MAME_DIR .. "src/mame/drivers/apxen.cpp",
+ MAME_DIR .. "src/mame/machine/apricotkb.cpp",
+ MAME_DIR .. "src/mame/machine/apricotkb.h",
+ MAME_DIR .. "src/mame/drivers/victor9k.cpp",
+ MAME_DIR .. "src/mame/machine/victor9k_kb.cpp",
+ MAME_DIR .. "src/mame/machine/victor9k_kb.h",
+ MAME_DIR .. "src/mame/machine/victor9k_fdc.cpp",
+ MAME_DIR .. "src/mame/machine/victor9k_fdc.h",
+}
+
+createMESSProjects(_target, _subtarget, "adc")
+files {
+ MAME_DIR .. "src/mame/drivers/super6.cpp",
+ MAME_DIR .. "src/mame/includes/super6.h",
+ MAME_DIR .. "src/mame/drivers/superslave.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "agat")
+files {
+ MAME_DIR .. "src/mame/drivers/agat.cpp",
+ MAME_DIR .. "src/mame/machine/agatkeyb.cpp",
+ MAME_DIR .. "src/mame/machine/agatkeyb.h",
+ MAME_DIR .. "src/mame/video/agat7.cpp",
+ MAME_DIR .. "src/mame/video/agat7.h",
+ MAME_DIR .. "src/mame/video/agat9.cpp",
+ MAME_DIR .. "src/mame/video/agat9.h",
+}
+
+createMESSProjects(_target, _subtarget, "akai")
+files {
+ MAME_DIR .. "src/mame/drivers/akaiax80.cpp",
+ MAME_DIR .. "src/mame/drivers/akaivx600.cpp",
+ MAME_DIR .. "src/mame/drivers/mpc3000.cpp",
+ MAME_DIR .. "src/mame/drivers/mpc60.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "alesis")
+files {
+ MAME_DIR .. "src/mame/drivers/alesis.cpp",
+ MAME_DIR .. "src/mame/includes/alesis.h",
+ MAME_DIR .. "src/mame/audio/alesis.cpp",
+ MAME_DIR .. "src/mame/video/alesis.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "altos")
+files {
+ MAME_DIR .. "src/mame/drivers/altos2.cpp",
+ MAME_DIR .. "src/mame/drivers/altos5.cpp",
+ MAME_DIR .. "src/mame/drivers/altos486.cpp",
+ MAME_DIR .. "src/mame/drivers/altos8600.cpp",
+ MAME_DIR .. "src/mame/machine/acs8600_ics.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ami")
+files {
+ MAME_DIR .. "src/mame/drivers/hh_amis2k.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "amirix")
+files {
+ MAME_DIR .. "src/mame/drivers/wxstar4000.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "amiga")
+files {
+ MAME_DIR .. "src/mame/drivers/amiga.cpp",
+ MAME_DIR .. "src/mame/includes/amiga.h",
+}
+
+createMESSProjects(_target, _subtarget, "ampro")
+files {
+ MAME_DIR .. "src/mame/drivers/ampro.cpp",
+ MAME_DIR .. "src/mame/drivers/lb186.cpp",
+ MAME_DIR .. "src/mame/drivers/lbpc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "amstrad")
+files {
+ MAME_DIR .. "src/mame/drivers/amstrad.cpp",
+ MAME_DIR .. "src/mame/includes/amstrad.h",
+ MAME_DIR .. "src/mame/machine/amstrad.cpp",
+ MAME_DIR .. "src/mame/drivers/amstr_pc.cpp",
+ MAME_DIR .. "src/mame/drivers/nc.cpp",
+ MAME_DIR .. "src/mame/includes/nc.h",
+ MAME_DIR .. "src/mame/machine/nc.cpp",
+ MAME_DIR .. "src/mame/video/nc.cpp",
+ MAME_DIR .. "src/mame/drivers/pc1512.cpp",
+ MAME_DIR .. "src/mame/includes/pc1512.h",
+ MAME_DIR .. "src/mame/machine/pc1512kb.cpp",
+ MAME_DIR .. "src/mame/machine/pc1512kb.h",
+ MAME_DIR .. "src/mame/video/ams40041.cpp",
+ MAME_DIR .. "src/mame/video/ams40041.h",
+ MAME_DIR .. "src/mame/drivers/pcw.cpp",
+ MAME_DIR .. "src/mame/includes/pcw.h",
+ MAME_DIR .. "src/mame/video/pcw.cpp",
+ MAME_DIR .. "src/mame/drivers/pcw16.cpp",
+ MAME_DIR .. "src/mame/includes/pcw16.h",
+ MAME_DIR .. "src/mame/video/pcw16.cpp",
+ MAME_DIR .. "src/mame/drivers/pda600.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "apf")
+files {
+ MAME_DIR .. "src/mame/drivers/apf.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "apollo")
+files {
+ MAME_DIR .. "src/mame/drivers/apollo.cpp",
+ MAME_DIR .. "src/mame/includes/apollo.h",
+ MAME_DIR .. "src/mame/machine/apollo.cpp",
+ MAME_DIR .. "src/mame/machine/apollo_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/apollo_kbd.h",
+ MAME_DIR .. "src/mame/video/apollo.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "apple")
+files {
+ MAME_DIR .. "src/mame/drivers/apple1.cpp",
+ MAME_DIR .. "src/mame/drivers/apple2.cpp",
+ MAME_DIR .. "src/mame/drivers/apple2e.cpp",
+ MAME_DIR .. "src/mame/includes/apple2e.h",
+ MAME_DIR .. "src/mame/video/apple2.cpp",
+ MAME_DIR .. "src/mame/video/apple2.h",
+ MAME_DIR .. "src/mame/drivers/tk2000.cpp",
+ MAME_DIR .. "src/mame/drivers/apple2gs.cpp",
+ MAME_DIR .. "src/mame/machine/apple2common.cpp",
+ MAME_DIR .. "src/mame/machine/apple2common.h",
+ MAME_DIR .. "src/mame/drivers/apple3.cpp",
+ MAME_DIR .. "src/mame/includes/apple3.h",
+ MAME_DIR .. "src/mame/machine/apple3.cpp",
+ MAME_DIR .. "src/mame/video/apple3.cpp",
+ MAME_DIR .. "src/mame/drivers/lisa.cpp",
+ MAME_DIR .. "src/mame/includes/lisa.h",
+ MAME_DIR .. "src/mame/machine/lisa.cpp",
+ MAME_DIR .. "src/mame/drivers/lwriter.cpp",
+ MAME_DIR .. "src/mame/drivers/mac128.cpp",
+ MAME_DIR .. "src/mame/drivers/macquadra700.cpp",
+ MAME_DIR .. "src/mame/drivers/macpdm.cpp",
+ MAME_DIR .. "src/mame/drivers/macprtb.cpp",
+ MAME_DIR .. "src/mame/drivers/macpwrbk030.cpp",
+ MAME_DIR .. "src/mame/drivers/mac.cpp",
+ MAME_DIR .. "src/mame/includes/mac.h",
+ MAME_DIR .. "src/mame/machine/egret.cpp",
+ MAME_DIR .. "src/mame/machine/egret.h",
+ MAME_DIR .. "src/mame/machine/mac.cpp",
+ MAME_DIR .. "src/mame/machine/macadb.cpp",
+ MAME_DIR .. "src/mame/machine/macadb.h",
+ MAME_DIR .. "src/mame/machine/macrtc.cpp",
+ MAME_DIR .. "src/mame/machine/macrtc.h",
+ MAME_DIR .. "src/mame/machine/swim.cpp",
+ MAME_DIR .. "src/mame/machine/swim.h",
+ MAME_DIR .. "src/mame/video/mac.cpp",
+ MAME_DIR .. "src/mame/drivers/macpci.cpp",
+ MAME_DIR .. "src/mame/includes/macpci.h",
+ MAME_DIR .. "src/mame/machine/macpci.cpp",
+ MAME_DIR .. "src/mame/machine/cuda.cpp",
+ MAME_DIR .. "src/mame/machine/cuda.h",
+ MAME_DIR .. "src/mame/machine/macscsi.cpp",
+ MAME_DIR .. "src/mame/machine/macscsi.h",
+ MAME_DIR .. "src/mame/drivers/iphone2g.cpp",
+ MAME_DIR .. "src/mame/drivers/superga2.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "applied")
+files {
+ MAME_DIR .. "src/mame/drivers/mbee.cpp",
+ MAME_DIR .. "src/mame/includes/mbee.h",
+ MAME_DIR .. "src/mame/machine/mbee.cpp",
+ MAME_DIR .. "src/mame/video/mbee.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "arcadia")
+files {
+ MAME_DIR .. "src/mame/drivers/arcadia.cpp",
+ MAME_DIR .. "src/mame/includes/arcadia.h",
+ MAME_DIR .. "src/mame/audio/arcadia.cpp",
+ MAME_DIR .. "src/mame/audio/arcadia.h",
+ MAME_DIR .. "src/mame/video/arcadia.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ascii")
+files {
+ MAME_DIR .. "src/mame/drivers/msx.cpp",
+ MAME_DIR .. "src/mame/includes/msx.h",
+ MAME_DIR .. "src/mame/machine/msx.cpp",
+ MAME_DIR .. "src/mame/machine/msx_matsushita.cpp",
+ MAME_DIR .. "src/mame/machine/msx_matsushita.h",
+ MAME_DIR .. "src/mame/machine/msx_s1985.cpp",
+ MAME_DIR .. "src/mame/machine/msx_s1985.h",
+ MAME_DIR .. "src/mame/machine/msx_switched.h",
+ MAME_DIR .. "src/mame/machine/msx_systemflags.cpp",
+ MAME_DIR .. "src/mame/machine/msx_systemflags.h",
+}
+
+createMESSProjects(_target, _subtarget, "at")
+files {
+ MAME_DIR .. "src/mame/drivers/at.cpp",
+ MAME_DIR .. "src/mame/drivers/atpci.cpp",
+ MAME_DIR .. "src/mame/drivers/ps2.cpp",
+ MAME_DIR .. "src/mame/machine/at.h",
+ MAME_DIR .. "src/mame/machine/at.cpp",
+ MAME_DIR .. "src/mame/drivers/ct486.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "atari")
+files {
+ MAME_DIR .. "src/mame/includes/a2600.h",
+ MAME_DIR .. "src/mame/drivers/a2600.cpp",
+ MAME_DIR .. "src/mame/drivers/a7800.cpp",
+ MAME_DIR .. "src/mame/video/maria.cpp",
+ MAME_DIR .. "src/mame/video/maria.h",
+ MAME_DIR .. "src/mame/drivers/atari400.cpp",
+ MAME_DIR .. "src/mame/machine/atarifdc.cpp",
+ MAME_DIR .. "src/mame/machine/atarifdc.h",
+ MAME_DIR .. "src/mame/drivers/atarist.cpp",
+ MAME_DIR .. "src/mame/includes/atarist.h",
+ MAME_DIR .. "src/mame/video/atarist.cpp",
+ MAME_DIR .. "src/mame/video/atarist.h",
+ MAME_DIR .. "src/mame/drivers/lynx.cpp",
+ MAME_DIR .. "src/mame/includes/lynx.h",
+ MAME_DIR .. "src/mame/audio/lynx.cpp",
+ MAME_DIR .. "src/mame/audio/lynx.h",
+ MAME_DIR .. "src/mame/machine/lynx.cpp",
+ MAME_DIR .. "src/mame/drivers/pofo.cpp",
+ MAME_DIR .. "src/mame/machine/pofo_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/pofo_kbd.h",
+ MAME_DIR .. "src/mame/drivers/tvboy.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "att")
+files {
+ MAME_DIR .. "src/mame/drivers/att3b2.cpp",
+ MAME_DIR .. "src/mame/drivers/att4425.cpp",
+ MAME_DIR .. "src/mame/drivers/att610.cpp",
+ MAME_DIR .. "src/mame/drivers/att630.cpp",
+ MAME_DIR .. "src/mame/drivers/unixpc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ave")
+files {
+ MAME_DIR .. "src/mame/drivers/ave_arb.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "aviion")
+files {
+ MAME_DIR .. "src/mame/drivers/aviion88k.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "bally")
+files {
+ MAME_DIR .. "src/mame/drivers/astrohome.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "banctec")
+files {
+ MAME_DIR .. "src/mame/drivers/banctec.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "bandai")
+files {
+ MAME_DIR .. "src/mame/drivers/sv8000.cpp",
+ MAME_DIR .. "src/mame/drivers/rx78.cpp",
+ MAME_DIR .. "src/mame/drivers/tamag1.cpp",
+ MAME_DIR .. "src/mame/drivers/wswan.cpp",
+ MAME_DIR .. "src/mame/audio/wswan.cpp",
+ MAME_DIR .. "src/mame/audio/wswan.h",
+ MAME_DIR .. "src/mame/video/wswan.cpp",
+ MAME_DIR .. "src/mame/video/wswan.h",
+ MAME_DIR .. "src/mame/drivers/bandai_design_master.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "be")
+files {
+ MAME_DIR .. "src/mame/drivers/bebox.cpp",
+ MAME_DIR .. "src/mame/includes/bebox.h",
+ MAME_DIR .. "src/mame/machine/bebox.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "beehive")
+files {
+ MAME_DIR .. "src/mame/drivers/microb.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "bitcorp")
+files {
+ MAME_DIR .. "src/mame/drivers/gamate.cpp",
+ MAME_DIR .. "src/mame/video/gamate.cpp",
+ MAME_DIR .. "src/mame/video/gamate.h",
+}
+
+createMESSProjects(_target, _subtarget, "bnpo")
+files {
+ MAME_DIR .. "src/mame/drivers/b2m.cpp",
+ MAME_DIR .. "src/mame/includes/b2m.h",
+ MAME_DIR .. "src/mame/machine/b2m.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "bondwell")
+files {
+ MAME_DIR .. "src/mame/drivers/bw12.cpp",
+ MAME_DIR .. "src/mame/includes/bw12.h",
+ MAME_DIR .. "src/mame/drivers/bw2.cpp",
+ MAME_DIR .. "src/mame/includes/bw2.h",
+}
+
+createMESSProjects(_target, _subtarget, "booth")
+files {
+ MAME_DIR .. "src/mame/drivers/apexc.cpp",
+ MAME_DIR .. "src/mame/includes/apexc.h",
+ MAME_DIR .. "src/mame/machine/apexc.h",
+ MAME_DIR .. "src/mame/machine/apexc.cpp",
+ MAME_DIR .. "src/mame/video/apexc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "camputers")
+files {
+ MAME_DIR .. "src/mame/drivers/camplynx.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "canon")
+files {
+ MAME_DIR .. "src/mame/drivers/cat.cpp",
+ MAME_DIR .. "src/mame/drivers/x07.cpp",
+ MAME_DIR .. "src/mame/includes/x07.h",
+ MAME_DIR .. "src/mame/drivers/canon_s80.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "cantab")
+files {
+ MAME_DIR .. "src/mame/drivers/jupace.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "casio")
+files {
+ MAME_DIR .. "src/mame/drivers/casloopy.cpp",
+ MAME_DIR .. "src/mame/drivers/cfx9850.cpp",
+ MAME_DIR .. "src/mame/drivers/cz101.cpp",
+ MAME_DIR .. "src/mame/drivers/fp200.cpp",
+ MAME_DIR .. "src/mame/drivers/fp1100.cpp",
+ MAME_DIR .. "src/mame/drivers/fp6000.cpp",
+ MAME_DIR .. "src/mame/machine/fp6000_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/fp6000_kbd.h",
+ MAME_DIR .. "src/mame/drivers/ctk551.cpp",
+ MAME_DIR .. "src/mame/drivers/ht6000.cpp",
+ MAME_DIR .. "src/mame/drivers/pb1000.cpp",
+ MAME_DIR .. "src/mame/drivers/pv1000.cpp",
+ MAME_DIR .. "src/mame/drivers/pv2000.cpp",
+ MAME_DIR .. "src/mame/drivers/sk1.cpp",
+ MAME_DIR .. "src/mame/drivers/sx1000.cpp",
+ MAME_DIR .. "src/mame/drivers/rz1.cpp",
+ MAME_DIR .. "src/mame/drivers/casio_rompack.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "cbm")
+files {
+ MAME_DIR .. "src/mame/drivers/c128.cpp",
+ MAME_DIR .. "src/mame/drivers/c64.cpp",
+ MAME_DIR .. "src/mame/drivers/c64dtv.cpp",
+ MAME_DIR .. "src/mame/drivers/c65.cpp",
+ MAME_DIR .. "src/mame/includes/c65.h",
+ MAME_DIR .. "src/mame/drivers/c900.cpp",
+ MAME_DIR .. "src/mame/drivers/cbm2.cpp",
+ MAME_DIR .. "src/mame/drivers/chessmate.cpp",
+ MAME_DIR .. "src/mame/drivers/clcd.cpp",
+ MAME_DIR .. "src/mame/drivers/pet.cpp",
+ MAME_DIR .. "src/mame/drivers/plus4.cpp",
+ MAME_DIR .. "src/mame/drivers/vic10.cpp",
+ MAME_DIR .. "src/mame/drivers/vic20.cpp",
+ MAME_DIR .. "src/mame/machine/cbm_snqk.cpp",
+ MAME_DIR .. "src/mame/machine/cbm_snqk.h",
+ MAME_DIR .. "src/mame/drivers/mps1230.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "cccp")
+files {
+ MAME_DIR .. "src/mame/drivers/argo.cpp",
+ MAME_DIR .. "src/mame/drivers/cm1800.cpp",
+ MAME_DIR .. "src/mame/drivers/debut.cpp",
+ MAME_DIR .. "src/mame/drivers/intellect02.cpp",
+ MAME_DIR .. "src/mame/drivers/lviv.cpp",
+ MAME_DIR .. "src/mame/includes/lviv.h",
+ MAME_DIR .. "src/mame/machine/lviv.cpp",
+ MAME_DIR .. "src/mame/video/lviv.cpp",
+ MAME_DIR .. "src/mame/drivers/mikro80.cpp",
+ MAME_DIR .. "src/mame/includes/mikro80.h",
+ MAME_DIR .. "src/mame/machine/mikro80.cpp",
+ MAME_DIR .. "src/mame/drivers/okean240.cpp",
+ MAME_DIR .. "src/mame/drivers/pk8000.cpp",
+ MAME_DIR .. "src/mame/includes/pk8000.h",
+ MAME_DIR .. "src/mame/drivers/pk8020.cpp",
+ MAME_DIR .. "src/mame/includes/pk8020.h",
+ MAME_DIR .. "src/mame/machine/pk8020.cpp",
+ MAME_DIR .. "src/mame/video/pk8020.cpp",
+ MAME_DIR .. "src/mame/drivers/pyl601.cpp",
+ MAME_DIR .. "src/mame/drivers/sm1800.cpp",
+ MAME_DIR .. "src/mame/drivers/sm7238.cpp",
+ MAME_DIR .. "src/mame/machine/km035.cpp",
+ MAME_DIR .. "src/mame/machine/km035.h",
+ MAME_DIR .. "src/mame/drivers/uknc.cpp",
+ MAME_DIR .. "src/mame/drivers/unior.cpp",
+ MAME_DIR .. "src/mame/drivers/ut88.cpp",
+ MAME_DIR .. "src/mame/includes/ut88.h",
+ MAME_DIR .. "src/mame/machine/ut88.cpp",
+ MAME_DIR .. "src/mame/drivers/vector06.cpp",
+ MAME_DIR .. "src/mame/includes/vector06.h",
+ MAME_DIR .. "src/mame/machine/vector06.cpp",
+ MAME_DIR .. "src/mame/video/vector06.cpp",
+ MAME_DIR .. "src/mame/drivers/vta2000.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "cce")
+files {
+ MAME_DIR .. "src/mame/drivers/mc1000.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ccs")
+files {
+ MAME_DIR .. "src/mame/drivers/ccs2810.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ceres")
+files {
+ MAME_DIR .. "src/mame/drivers/ceres.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "chessking")
+files {
+ MAME_DIR .. "src/mame/drivers/cking_master.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "chromatics")
+files {
+ MAME_DIR .. "src/mame/drivers/cgc7900.cpp",
+ MAME_DIR .. "src/mame/includes/cgc7900.h",
+ MAME_DIR .. "src/mame/video/cgc7900.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "chrysler")
+files {
+ MAME_DIR .. "src/mame/drivers/eva.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "citoh")
+files {
+ MAME_DIR .. "src/mame/drivers/cit101.cpp",
+ MAME_DIR .. "src/mame/machine/cit101_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/cit101_kbd.h",
+ MAME_DIR .. "src/mame/drivers/cit101xl.cpp",
+ MAME_DIR .. "src/mame/drivers/cit220.cpp",
+ MAME_DIR .. "src/mame/machine/cit220_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/cit220_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "coleco")
+files {
+ MAME_DIR .. "src/mame/drivers/adam.cpp",
+ MAME_DIR .. "src/mame/includes/adam.h",
+ MAME_DIR .. "src/mame/drivers/coleco.cpp",
+ MAME_DIR .. "src/mame/includes/coleco.h",
+ MAME_DIR .. "src/mame/machine/coleco.cpp",
+ MAME_DIR .. "src/mame/machine/coleco.h",
+ MAME_DIR .. "src/mame/drivers/wrinkles.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "compugraphic")
+files {
+ MAME_DIR .. "src/mame/drivers/pwrview.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "conic")
+files {
+ MAME_DIR .. "src/mame/drivers/conic_cchess2.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "consumenta")
+files {
+ MAME_DIR .. "src/mame/drivers/conchess.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "cromemco")
+files {
+ MAME_DIR .. "src/mame/drivers/c10.cpp",
+ MAME_DIR .. "src/mame/drivers/mcb216.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "comx")
+files {
+ MAME_DIR .. "src/mame/drivers/comx35.cpp",
+ MAME_DIR .. "src/mame/includes/comx35.h",
+ MAME_DIR .. "src/mame/video/comx35.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "concept")
+files {
+ MAME_DIR .. "src/mame/drivers/concept.cpp",
+ MAME_DIR .. "src/mame/includes/concept.h",
+ MAME_DIR .. "src/mame/machine/concept.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "conitec")
+files {
+ MAME_DIR .. "src/mame/drivers/prof180x.cpp",
+ MAME_DIR .. "src/mame/includes/prof180x.h",
+ MAME_DIR .. "src/mame/drivers/prof80.cpp",
+ MAME_DIR .. "src/mame/includes/prof80.h",
+ MAME_DIR .. "src/mame/machine/prof80mmu.cpp",
+ MAME_DIR .. "src/mame/machine/prof80mmu.h",
+}
+
+createMESSProjects(_target, _subtarget, "cxg")
+files {
+ MAME_DIR .. "src/mame/drivers/cxg_ch2001.cpp",
+ MAME_DIR .. "src/mame/drivers/cxg_dominator.cpp",
+ MAME_DIR .. "src/mame/drivers/cxg_scptchess.cpp",
+ MAME_DIR .. "src/mame/drivers/cxg_sphinx40.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "cybiko")
+files {
+ MAME_DIR .. "src/mame/drivers/cybiko.cpp",
+ MAME_DIR .. "src/mame/includes/cybiko.h",
+ MAME_DIR .. "src/mame/machine/cybiko.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "dai")
+files {
+ MAME_DIR .. "src/mame/drivers/dai.cpp",
+ MAME_DIR .. "src/mame/includes/dai.h",
+ MAME_DIR .. "src/mame/audio/dai_snd.cpp",
+ MAME_DIR .. "src/mame/audio/dai_snd.h",
+ MAME_DIR .. "src/mame/machine/dai.cpp",
+ MAME_DIR .. "src/mame/video/dai.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "dcs")
+files {
+ MAME_DIR .. "src/mame/drivers/compuchess.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ddr")
+files {
+ MAME_DIR .. "src/mame/drivers/ac1.cpp",
+ MAME_DIR .. "src/mame/drivers/bcs3.cpp",
+ MAME_DIR .. "src/mame/drivers/c80.cpp",
+ MAME_DIR .. "src/mame/includes/c80.h",
+ MAME_DIR .. "src/mame/drivers/huebler.cpp",
+ MAME_DIR .. "src/mame/includes/huebler.h",
+ MAME_DIR .. "src/mame/drivers/jtc.cpp",
+ MAME_DIR .. "src/mame/drivers/kramermc.cpp",
+ MAME_DIR .. "src/mame/drivers/llc1.cpp",
+ MAME_DIR .. "src/mame/drivers/llc2.cpp",
+ MAME_DIR .. "src/mame/drivers/nanos.cpp",
+ MAME_DIR .. "src/mame/drivers/pcm.cpp",
+ MAME_DIR .. "src/mame/drivers/vcs80.cpp",
+ MAME_DIR .. "src/mame/machine/k7659kb.cpp",
+ MAME_DIR .. "src/mame/machine/k7659kb.h",
+}
+
+createMESSProjects(_target, _subtarget, "dec")
+files {
+ MAME_DIR .. "src/mame/drivers/dct11em.cpp",
+ MAME_DIR .. "src/mame/drivers/decmate2.cpp",
+ MAME_DIR .. "src/mame/drivers/decstation.cpp",
+ MAME_DIR .. "src/mame/machine/decioga.cpp",
+ MAME_DIR .. "src/mame/machine/decioga.h",
+ MAME_DIR .. "src/mame/drivers/dectalk.cpp",
+ MAME_DIR .. "src/mame/drivers/decwritr.cpp",
+ MAME_DIR .. "src/mame/machine/dc305.cpp",
+ MAME_DIR .. "src/mame/machine/dc305.h",
+ MAME_DIR .. "src/mame/drivers/jensen.cpp",
+ MAME_DIR .. "src/mame/drivers/pdp11.cpp",
+ MAME_DIR .. "src/mame/drivers/vax11.cpp",
+ MAME_DIR .. "src/mame/drivers/rainbow.cpp",
+ MAME_DIR .. "src/mame/drivers/vk100.cpp",
+ MAME_DIR .. "src/mame/drivers/vt52.cpp",
+ MAME_DIR .. "src/mame/drivers/vt62.cpp",
+ MAME_DIR .. "src/mame/drivers/vt100.cpp",
+ MAME_DIR .. "src/mame/drivers/vt220.cpp",
+ MAME_DIR .. "src/mame/drivers/vt240.cpp",
+ MAME_DIR .. "src/mame/drivers/vt320.cpp",
+ MAME_DIR .. "src/mame/drivers/vt520.cpp",
+ MAME_DIR .. "src/mame/machine/dec_lk201.cpp",
+ MAME_DIR .. "src/mame/machine/dec_lk201.h",
+ MAME_DIR .. "src/mame/machine/rx01.cpp",
+ MAME_DIR .. "src/mame/machine/rx01.h",
+ MAME_DIR .. "src/mame/machine/vt100_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/vt100_kbd.h",
+ MAME_DIR .. "src/mame/video/vtvideo.cpp",
+ MAME_DIR .. "src/mame/video/vtvideo.h",
+}
+
+createMESSProjects(_target, _subtarget, "dicksmth")
+files {
+ MAME_DIR .. "src/mame/drivers/super80.cpp",
+ MAME_DIR .. "src/mame/includes/super80.h",
+ MAME_DIR .. "src/mame/machine/super80.cpp",
+ MAME_DIR .. "src/mame/video/super80.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "dms")
+files {
+ MAME_DIR .. "src/mame/drivers/dms5000.cpp",
+ MAME_DIR .. "src/mame/drivers/dms86.cpp",
+ MAME_DIR .. "src/mame/drivers/zsbc3.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "dragon")
+files {
+ MAME_DIR .. "src/mame/drivers/dgn_beta.cpp",
+ MAME_DIR .. "src/mame/includes/dgn_beta.h",
+ MAME_DIR .. "src/mame/machine/dgn_beta.cpp",
+ MAME_DIR .. "src/mame/video/dgn_beta.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "drc")
+files {
+ MAME_DIR .. "src/mame/drivers/zrt80.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "dulmont")
+files {
+ MAME_DIR .. "src/mame/drivers/magnum.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "eaca")
+files {
+ MAME_DIR .. "src/mame/drivers/cgenie.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "einis")
+files {
+ MAME_DIR .. "src/mame/drivers/pecom.cpp",
+ MAME_DIR .. "src/mame/includes/pecom.h",
+ MAME_DIR .. "src/mame/machine/pecom.cpp",
+ MAME_DIR .. "src/mame/video/pecom.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "elektrka")
+files {
+ MAME_DIR .. "src/mame/drivers/bk.cpp",
+ MAME_DIR .. "src/mame/includes/bk.h",
+ MAME_DIR .. "src/mame/machine/bk.cpp",
+ MAME_DIR .. "src/mame/drivers/dvk_kcgd.cpp",
+ MAME_DIR .. "src/mame/drivers/dvk_ksm.cpp",
+ MAME_DIR .. "src/mame/machine/ms7004.cpp",
+ MAME_DIR .. "src/mame/machine/ms7004.h",
+ MAME_DIR .. "src/mame/drivers/mk85.cpp",
+ MAME_DIR .. "src/mame/drivers/mk90.cpp",
+ MAME_DIR .. "src/mame/drivers/ms6102.cpp",
+ MAME_DIR .. "src/mame/machine/kr1601rr1.cpp",
+ MAME_DIR .. "src/mame/machine/kr1601rr1.h",
+}
+
+createMESSProjects(_target, _subtarget, "elektor")
+files {
+ MAME_DIR .. "src/mame/drivers/avrmax.cpp",
+ MAME_DIR .. "src/mame/drivers/ec65.cpp",
+ MAME_DIR .. "src/mame/drivers/elekscmp.cpp",
+ MAME_DIR .. "src/mame/drivers/junior.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "elektron")
+files {
+ MAME_DIR .. "src/mame/drivers/elektronmono.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "emusys")
+files {
+ MAME_DIR .. "src/mame/drivers/emax.cpp",
+ MAME_DIR .. "src/mame/drivers/emu2.cpp",
+ MAME_DIR .. "src/mame/drivers/emu3.cpp",
+ MAME_DIR .. "src/mame/drivers/emu68k.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ensoniq")
+files {
+ MAME_DIR .. "src/mame/drivers/esq1.cpp",
+ MAME_DIR .. "src/mame/drivers/esq5505.cpp",
+ MAME_DIR .. "src/mame/drivers/esqasr.cpp",
+ MAME_DIR .. "src/mame/drivers/esqkt.cpp",
+ MAME_DIR .. "src/mame/drivers/esqmr.cpp",
+ MAME_DIR .. "src/mame/drivers/enmirage.cpp",
+ MAME_DIR .. "src/mame/machine/esqpanel.cpp",
+ MAME_DIR .. "src/mame/machine/esqpanel.h",
+ MAME_DIR .. "src/mame/machine/esqvfd.cpp",
+ MAME_DIR .. "src/mame/machine/esqvfd.h",
+ MAME_DIR .. "src/mame/machine/esqlcd.cpp",
+ MAME_DIR .. "src/mame/machine/esqlcd.h",
+}
+
+createMESSProjects(_target, _subtarget, "enterprise")
+files {
+ MAME_DIR .. "src/mame/drivers/ep64.cpp",
+ MAME_DIR .. "src/mame/video/nick.cpp",
+ MAME_DIR .. "src/mame/video/nick.h",
+}
+
+createMESSProjects(_target, _subtarget, "entex")
+files {
+ MAME_DIR .. "src/mame/drivers/advision.cpp",
+ MAME_DIR .. "src/mame/includes/advision.h",
+ MAME_DIR .. "src/mame/machine/advision.cpp",
+ MAME_DIR .. "src/mame/video/advision.cpp",
+ MAME_DIR .. "src/mame/drivers/sag.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "epoch")
+files {
+ MAME_DIR .. "src/mame/drivers/gamepock.cpp",
+ MAME_DIR .. "src/mame/includes/gamepock.h",
+ MAME_DIR .. "src/mame/machine/gamepock.cpp",
+ MAME_DIR .. "src/mame/drivers/scv.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "epson")
+files {
+ MAME_DIR .. "src/mame/drivers/hx20.cpp",
+ MAME_DIR .. "src/mame/includes/hx20.h",
+ MAME_DIR .. "src/mame/drivers/px4.cpp",
+ MAME_DIR .. "src/mame/drivers/px8.cpp",
+ MAME_DIR .. "src/mame/includes/px8.h",
+ MAME_DIR .. "src/mame/drivers/qx10.cpp",
+ MAME_DIR .. "src/mame/machine/qx10kbd.cpp",
+ MAME_DIR .. "src/mame/machine/qx10kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "ericsson")
+files {
+ MAME_DIR .. "src/mame/drivers/e9161.cpp",
+ MAME_DIR .. "src/mame/drivers/eispc.cpp",
+ MAME_DIR .. "src/mame/machine/eispc_kb.cpp",
+ MAME_DIR .. "src/mame/machine/eispc_kb.h",
+}
+
+createMESSProjects(_target, _subtarget, "exidy")
+files {
+ MAME_DIR .. "src/mame/machine/sorcerer.cpp",
+ MAME_DIR .. "src/mame/drivers/sorcerer.cpp",
+ MAME_DIR .. "src/mame/includes/sorcerer.h",
+ MAME_DIR .. "src/mame/machine/micropolis.cpp",
+ MAME_DIR .. "src/mame/machine/micropolis.h",
+}
+
+createMESSProjects(_target, _subtarget, "exorterm")
+files {
+ MAME_DIR .. "src/mame/drivers/exorterm.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "fairch")
+files {
+ MAME_DIR .. "src/mame/drivers/channelf.cpp",
+ MAME_DIR .. "src/mame/includes/channelf.h",
+ MAME_DIR .. "src/mame/audio/channelf.cpp",
+ MAME_DIR .. "src/mame/audio/channelf.h",
+ MAME_DIR .. "src/mame/video/channelf.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "fairlight")
+files {
+ MAME_DIR .. "src/mame/drivers/cmi.cpp",
+ MAME_DIR .. "src/mame/audio/cmi01a.cpp",
+ MAME_DIR .. "src/mame/audio/cmi01a.h",
+ MAME_DIR .. "src/mame/machine/cmi_ankbd.cpp",
+ MAME_DIR .. "src/mame/machine/cmi_ankbd.h",
+ MAME_DIR .. "src/mame/machine/cmi_mkbd.cpp",
+ MAME_DIR .. "src/mame/machine/cmi_mkbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "fidelity")
+files {
+ MAME_DIR .. "src/mame/machine/fidel_clockdiv.cpp",
+ MAME_DIR .. "src/mame/machine/fidel_clockdiv.h",
+ MAME_DIR .. "src/mame/drivers/fidel_as12.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_card.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_cc1.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_cc10.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_cc7.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_checkc2.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_chesster.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_csc.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_dames.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_desdis.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_eag68k.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_eldorado.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_elite.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_excel.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_msc.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_phantom.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_sc12.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_sc6.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_sc8.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_sc9.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_vcc.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_vsc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "force")
+files {
+ MAME_DIR .. "src/mame/drivers/miniforce.cpp",
+ MAME_DIR .. "src/mame/drivers/fccpu20.cpp",
+ MAME_DIR .. "src/mame/drivers/fccpu30.cpp",
+ MAME_DIR .. "src/mame/drivers/force68k.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "francedr")
+files {
+ MAME_DIR .. "src/mame/drivers/regence.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "fujitsu")
+files {
+ MAME_DIR .. "src/mame/drivers/fmtowns.cpp",
+ MAME_DIR .. "src/mame/includes/fmtowns.h",
+ MAME_DIR .. "src/mame/video/fmtowns.cpp",
+ MAME_DIR .. "src/mame/machine/fm_scsi.cpp",
+ MAME_DIR .. "src/mame/machine/fm_scsi.h",
+ MAME_DIR .. "src/mame/machine/fmt_icmem.cpp",
+ MAME_DIR .. "src/mame/machine/fmt_icmem.h",
+ MAME_DIR .. "src/mame/drivers/fm7.cpp",
+ MAME_DIR .. "src/mame/includes/fm7.h",
+ MAME_DIR .. "src/mame/video/fm7.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "funtech")
+files {
+ MAME_DIR .. "src/mame/drivers/supracan.cpp",
+ MAME_DIR .. "src/mame/audio/acan.cpp",
+ MAME_DIR .. "src/mame/audio/acan.h",
+}
+
+createMESSProjects(_target, _subtarget, "galaxy")
+files {
+ MAME_DIR .. "src/mame/drivers/galaxy.cpp",
+ MAME_DIR .. "src/mame/includes/galaxy.h",
+ MAME_DIR .. "src/mame/machine/galaxy.cpp",
+ MAME_DIR .. "src/mame/video/galaxy.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "gamepark")
+files {
+ MAME_DIR .. "src/mame/drivers/gp2x.cpp",
+ MAME_DIR .. "src/mame/drivers/gp32.cpp",
+ MAME_DIR .. "src/mame/includes/gp32.h",
+}
+
+createMESSProjects(_target, _subtarget, "gi")
+files {
+ MAME_DIR .. "src/mame/drivers/hh_pic16.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "gridcomp")
+files {
+ MAME_DIR .. "src/mame/drivers/gridcomp.cpp",
+ MAME_DIR .. "src/mame/machine/gridkeyb.cpp",
+ MAME_DIR .. "src/mame/machine/gridkeyb.h",
+}
+
+createMESSProjects(_target, _subtarget, "grundy")
+files {
+ MAME_DIR .. "src/mame/drivers/newbrain.cpp",
+ MAME_DIR .. "src/mame/includes/newbrain.h",
+ MAME_DIR .. "src/mame/video/newbrain.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "h01x")
+files {
+ MAME_DIR .. "src/mame/drivers/h01x.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "hartung")
+files {
+ MAME_DIR .. "src/mame/drivers/gmaster.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "heathkit")
+files {
+ MAME_DIR .. "src/mame/drivers/et3400.cpp",
+ MAME_DIR .. "src/mame/drivers/h8.cpp",
+ MAME_DIR .. "src/mame/drivers/h19.cpp",
+ MAME_DIR .. "src/mame/drivers/h89.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "hegener")
+files {
+ MAME_DIR .. "src/mame/drivers/mephisto_academy.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_amsterdam.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_berlin.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_brikett.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_glasgow.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_milano.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_mm1.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_mm2.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_modena.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_modular.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_modular_tm.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_mondial.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_mondial2.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_mondial68k.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_montec.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_polgar.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp",
+ MAME_DIR .. "src/mame/drivers/mephisto_smondial.cpp",
+ MAME_DIR .. "src/mame/machine/mmboard.cpp",
+ MAME_DIR .. "src/mame/machine/mmboard.h",
+ MAME_DIR .. "src/mame/video/mmdisplay1.cpp",
+ MAME_DIR .. "src/mame/video/mmdisplay1.h",
+ MAME_DIR .. "src/mame/video/mmdisplay2.cpp",
+ MAME_DIR .. "src/mame/video/mmdisplay2.h",
+}
+
+createMESSProjects(_target, _subtarget, "hitachi")
+files {
+ MAME_DIR .. "src/mame/drivers/b16.cpp",
+ MAME_DIR .. "src/mame/drivers/bmjr.cpp",
+ MAME_DIR .. "src/mame/drivers/bml3.cpp",
+ MAME_DIR .. "src/mame/drivers/hh_hmcs40.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "homebrew")
+files {
+ MAME_DIR .. "src/mame/drivers/4004clk.cpp",
+ MAME_DIR .. "src/mame/drivers/68ksbc.cpp",
+ MAME_DIR .. "src/mame/drivers/lft_chiptune.cpp",
+ MAME_DIR .. "src/mame/drivers/lft_craft.cpp",
+ MAME_DIR .. "src/mame/drivers/lft_phasor.cpp",
+ MAME_DIR .. "src/mame/drivers/dcebridge.cpp",
+ MAME_DIR .. "src/mame/drivers/homez80.cpp",
+ MAME_DIR .. "src/mame/drivers/mk1forth.cpp",
+ MAME_DIR .. "src/mame/drivers/p112.cpp",
+ MAME_DIR .. "src/mame/drivers/phunsy.cpp",
+ MAME_DIR .. "src/mame/drivers/pimps.cpp",
+ MAME_DIR .. "src/mame/drivers/ravens.cpp",
+ MAME_DIR .. "src/mame/drivers/sbc6510.cpp",
+ MAME_DIR .. "src/mame/drivers/sitcom.cpp",
+ MAME_DIR .. "src/mame/drivers/slc1.cpp",
+ MAME_DIR .. "src/mame/drivers/test_t400.cpp",
+ MAME_DIR .. "src/mame/drivers/uzebox.cpp",
+ MAME_DIR .. "src/mame/drivers/z80dev.cpp",
+ MAME_DIR .. "src/mame/drivers/zexall.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "homelab")
+files {
+ MAME_DIR .. "src/mame/drivers/braiplus.cpp",
+ MAME_DIR .. "src/mame/drivers/homelab.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "hp")
+files {
+ MAME_DIR .. "src/mame/drivers/hp16500.cpp",
+ MAME_DIR .. "src/mame/drivers/hp48.cpp",
+ MAME_DIR .. "src/mame/includes/hp48.h",
+ MAME_DIR .. "src/mame/machine/hp48.cpp",
+ MAME_DIR .. "src/mame/machine/hp48_port.cpp",
+ MAME_DIR .. "src/mame/machine/hp48_port.h",
+ MAME_DIR .. "src/mame/machine/hp80_optrom.cpp",
+ MAME_DIR .. "src/mame/machine/hp80_optrom.h",
+ MAME_DIR .. "src/mame/machine/hp9825_optrom.cpp",
+ MAME_DIR .. "src/mame/machine/hp9825_optrom.h",
+ MAME_DIR .. "src/mame/machine/hp9825_tape.cpp",
+ MAME_DIR .. "src/mame/machine/hp9825_tape.h",
+ MAME_DIR .. "src/mame/machine/hp9845_optrom.cpp",
+ MAME_DIR .. "src/mame/machine/hp9845_optrom.h",
+ MAME_DIR .. "src/mame/machine/hp9845_printer.cpp",
+ MAME_DIR .. "src/mame/machine/hp9845_printer.h",
+ MAME_DIR .. "src/mame/machine/hp98x5_io_sys.cpp",
+ MAME_DIR .. "src/mame/machine/hp98x5_io_sys.h",
+ MAME_DIR .. "src/mame/machine/hp_ipc_optrom.cpp",
+ MAME_DIR .. "src/mame/machine/hp_ipc_optrom.h",
+ MAME_DIR .. "src/mame/video/hp48.cpp",
+ MAME_DIR .. "src/mame/drivers/hp49gp.cpp",
+ MAME_DIR .. "src/mame/drivers/hp9845.cpp",
+ MAME_DIR .. "src/mame/drivers/hp9k.cpp",
+ MAME_DIR .. "src/mame/drivers/hp9k_3xx.cpp",
+ MAME_DIR .. "src/mame/drivers/hp64k.cpp",
+ MAME_DIR .. "src/mame/drivers/hp_ipc.cpp",
+ MAME_DIR .. "src/mame/drivers/hp80.cpp",
+ MAME_DIR .. "src/mame/drivers/hp2100.cpp",
+ MAME_DIR .. "src/mame/drivers/hp2620.cpp",
+ MAME_DIR .. "src/mame/drivers/hp700.cpp",
+ MAME_DIR .. "src/mame/machine/hp2640_tape.cpp",
+ MAME_DIR .. "src/mame/machine/hp2640_tape.h",
+ MAME_DIR .. "src/mame/drivers/hp2640.cpp",
+ MAME_DIR .. "src/mame/drivers/hp95lx.cpp",
+ MAME_DIR .. "src/mame/drivers/hp9825.cpp",
+ MAME_DIR .. "src/mame/drivers/jornada.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "hec2hrp")
+files {
+ MAME_DIR .. "src/mame/drivers/hec2hrp.cpp",
+ MAME_DIR .. "src/mame/includes/hec2hrp.h",
+ MAME_DIR .. "src/mame/machine/hec2hrp.cpp",
+ MAME_DIR .. "src/mame/video/hec2hrp.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "heurikon")
+files {
+ MAME_DIR .. "src/mame/drivers/hk68v10.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "husky")
+files {
+ MAME_DIR .. "src/mame/drivers/hawk.cpp",
+ MAME_DIR .. "src/mame/drivers/hunter2.cpp",
+ MAME_DIR .. "src/mame/drivers/hunter16.cpp",
+ MAME_DIR .. "src/mame/drivers/husky.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ibm6580")
+files {
+ MAME_DIR .. "src/mame/drivers/ibm6580.cpp",
+ MAME_DIR .. "src/mame/machine/ibm6580_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/ibm6580_kbd.h",
+ MAME_DIR .. "src/mame/machine/ibm6580_fdc.cpp",
+ MAME_DIR .. "src/mame/machine/ibm6580_fdc.h",
+}
+
+createMESSProjects(_target, _subtarget, "ie15")
+files {
+ MAME_DIR .. "src/mame/drivers/ie15.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "informer")
+files {
+ MAME_DIR .. "src/mame/drivers/informer_207_100.cpp",
+ MAME_DIR .. "src/mame/drivers/informer_207_376.cpp",
+ MAME_DIR .. "src/mame/drivers/informer_213.cpp",
+ MAME_DIR .. "src/mame/machine/informer_207_376_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/informer_207_376_kbd.h",
+ MAME_DIR .. "src/mame/machine/informer_213_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/informer_213_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "intel")
+files {
+ MAME_DIR .. "src/mame/drivers/basic52.cpp",
+ MAME_DIR .. "src/mame/drivers/imds2.cpp",
+ MAME_DIR .. "src/mame/drivers/intellec4.cpp",
+ MAME_DIR .. "src/mame/drivers/intellec8.cpp",
+ MAME_DIR .. "src/mame/drivers/ipc.cpp",
+ MAME_DIR .. "src/mame/drivers/ipds.cpp",
+ MAME_DIR .. "src/mame/drivers/isbc.cpp",
+ MAME_DIR .. "src/mame/drivers/isbc8010.cpp",
+ MAME_DIR .. "src/mame/drivers/isbc8030.cpp",
+ MAME_DIR .. "src/mame/machine/imm6_76.cpp",
+ MAME_DIR .. "src/mame/machine/imm6_76.h",
+ MAME_DIR .. "src/mame/machine/isbc_215g.cpp",
+ MAME_DIR .. "src/mame/machine/isbc_215g.h",
+ MAME_DIR .. "src/mame/machine/isbc_208.cpp",
+ MAME_DIR .. "src/mame/machine/isbc_208.h",
+ MAME_DIR .. "src/mame/drivers/rex6000.cpp",
+ MAME_DIR .. "src/mame/drivers/sdk51.cpp",
+ MAME_DIR .. "src/mame/drivers/sdk80.cpp",
+ MAME_DIR .. "src/mame/drivers/sdk85.cpp",
+ MAME_DIR .. "src/mame/drivers/sdk86.cpp",
+ MAME_DIR .. "src/mame/machine/imds2ioc.cpp",
+ MAME_DIR .. "src/mame/machine/imds2ioc.h",
+}
+
+createMESSProjects(_target, _subtarget, "imp")
+files {
+ MAME_DIR .. "src/mame/drivers/tim011.cpp",
+ MAME_DIR .. "src/mame/drivers/tim100.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "interpro")
+files {
+ MAME_DIR .. "src/mame/drivers/interpro.cpp",
+ MAME_DIR .. "src/mame/machine/cammu.h",
+ MAME_DIR .. "src/mame/machine/cammu.cpp",
+ MAME_DIR .. "src/mame/machine/interpro_ioga.h",
+ MAME_DIR .. "src/mame/machine/interpro_ioga.cpp",
+ MAME_DIR .. "src/mame/machine/interpro_mcga.h",
+ MAME_DIR .. "src/mame/machine/interpro_mcga.cpp",
+ MAME_DIR .. "src/mame/machine/interpro_sga.h",
+ MAME_DIR .. "src/mame/machine/interpro_sga.cpp",
+ MAME_DIR .. "src/mame/machine/interpro_arbga.h",
+ MAME_DIR .. "src/mame/machine/interpro_arbga.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "interton")
+files {
+ MAME_DIR .. "src/mame/drivers/vc4000.cpp",
+ MAME_DIR .. "src/mame/includes/vc4000.h",
+ MAME_DIR .. "src/mame/audio/vc4000.cpp",
+ MAME_DIR .. "src/mame/audio/vc4000.h",
+ MAME_DIR .. "src/mame/video/vc4000.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "intv")
+files {
+ MAME_DIR .. "src/mame/drivers/intv.cpp",
+ MAME_DIR .. "src/mame/includes/intv.h",
+ MAME_DIR .. "src/mame/machine/intv.cpp",
+ MAME_DIR .. "src/mame/video/intv.cpp",
+ MAME_DIR .. "src/mame/video/stic.cpp",
+ MAME_DIR .. "src/mame/video/stic.h",
+}
+
+createMESSProjects(_target, _subtarget, "isc")
+files {
+ MAME_DIR .. "src/mame/drivers/compucolor.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "jazz")
+files {
+ MAME_DIR .. "src/mame/drivers/jazz.cpp",
+ MAME_DIR .. "src/mame/machine/mct_adr.cpp",
+ MAME_DIR .. "src/mame/machine/mct_adr.h",
+}
+
+createMESSProjects(_target, _subtarget, "kawai")
+files {
+ MAME_DIR .. "src/mame/drivers/kawai_k1.cpp",
+ MAME_DIR .. "src/mame/drivers/kawai_k4.cpp",
+ MAME_DIR .. "src/mame/drivers/kawai_k5.cpp",
+ MAME_DIR .. "src/mame/drivers/kawai_ksp10.cpp",
+ MAME_DIR .. "src/mame/drivers/kawai_r100.cpp",
+ MAME_DIR .. "src/mame/drivers/kawai_sx240.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "kaypro")
+files {
+ MAME_DIR .. "src/mame/drivers/kaypro.cpp",
+ MAME_DIR .. "src/mame/includes/kaypro.h",
+ MAME_DIR .. "src/mame/machine/kaypro.cpp",
+ MAME_DIR .. "src/mame/machine/kay_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/kay_kbd.h",
+ MAME_DIR .. "src/mame/video/kaypro.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "koei")
+files {
+ MAME_DIR .. "src/mame/drivers/pasogo.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "kontron")
+files {
+ MAME_DIR .. "src/mame/drivers/kdt6.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "korg")
+files {
+ MAME_DIR .. "src/mame/drivers/korgds8.cpp",
+ MAME_DIR .. "src/mame/drivers/korgdss1.cpp",
+ MAME_DIR .. "src/mame/drivers/korgdvp1.cpp",
+ MAME_DIR .. "src/mame/drivers/korgdw8k.cpp",
+ MAME_DIR .. "src/mame/drivers/korgm1.cpp",
+ MAME_DIR .. "src/mame/drivers/korgws.cpp",
+ MAME_DIR .. "src/mame/drivers/korgz3.cpp",
+ MAME_DIR .. "src/mame/drivers/microkorg.cpp",
+ MAME_DIR .. "src/mame/drivers/poly800.cpp",
+ MAME_DIR .. "src/mame/drivers/polysix.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "kurzweil")
+files {
+ MAME_DIR .. "src/mame/drivers/krz2000.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "kyber")
+files {
+ MAME_DIR .. "src/mame/drivers/kminus.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "kyocera")
+files {
+ MAME_DIR .. "src/mame/drivers/kyocera.cpp",
+ MAME_DIR .. "src/mame/includes/kyocera.h",
+ MAME_DIR .. "src/mame/video/kyocera.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "leapfrog")
+files {
+ MAME_DIR .. "src/mame/drivers/leapster.cpp",
+ MAME_DIR .. "src/mame/drivers/leapfrog_leappad.cpp",
+ MAME_DIR .. "src/mame/drivers/leapfrog_leapster_explorer.cpp",
+ MAME_DIR .. "src/mame/drivers/leapfrog_iquest.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "learsiegler")
+files {
+ MAME_DIR .. "src/mame/drivers/adm11.cpp",
+ MAME_DIR .. "src/mame/drivers/adm23.cpp",
+ MAME_DIR .. "src/mame/drivers/adm31.cpp",
+ MAME_DIR .. "src/mame/drivers/adm36.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "lsi")
+files {
+ MAME_DIR .. "src/mame/drivers/m3.cpp",
+ MAME_DIR .. "src/mame/drivers/octopus.cpp",
+ MAME_DIR .. "src/mame/machine/octo_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/octo_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "luxor")
+files {
+ MAME_DIR .. "src/mame/drivers/abc80.cpp",
+ MAME_DIR .. "src/mame/includes/abc80.h",
+ MAME_DIR .. "src/mame/machine/abc80kb.cpp",
+ MAME_DIR .. "src/mame/machine/abc80kb.h",
+ MAME_DIR .. "src/mame/video/abc80.cpp",
+ MAME_DIR .. "src/mame/drivers/abc80x.cpp",
+ MAME_DIR .. "src/mame/includes/abc80x.h",
+ MAME_DIR .. "src/mame/video/abc800.cpp",
+ MAME_DIR .. "src/mame/video/abc802.cpp",
+ MAME_DIR .. "src/mame/video/abc806.cpp",
+ MAME_DIR .. "src/mame/drivers/abc1600.cpp",
+ MAME_DIR .. "src/mame/includes/abc1600.h",
+ MAME_DIR .. "src/mame/machine/abc1600mac.cpp",
+ MAME_DIR .. "src/mame/machine/abc1600mac.h",
+ MAME_DIR .. "src/mame/video/abc1600.cpp",
+ MAME_DIR .. "src/mame/video/abc1600.h",
+}
+
+createMESSProjects(_target, _subtarget, "magnavox")
+files {
+ MAME_DIR .. "src/mame/drivers/odyssey2.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "makerbot")
+files {
+ MAME_DIR .. "src/mame/drivers/replicator.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mattel")
+files {
+ MAME_DIR .. "src/mame/drivers/aquarius.cpp",
+ MAME_DIR .. "src/mame/includes/aquarius.h",
+ MAME_DIR .. "src/mame/video/aquarius.cpp",
+ MAME_DIR .. "src/mame/drivers/juicebox.cpp",
+ MAME_DIR .. "src/mame/drivers/mattelchess.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "matsushi")
+files {
+ MAME_DIR .. "src/mame/drivers/jr100.cpp",
+ MAME_DIR .. "src/mame/drivers/jr200.cpp",
+ MAME_DIR .. "src/mame/drivers/myb3k.cpp",
+ MAME_DIR .. "src/mame/drivers/duet16.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mb")
+files {
+ MAME_DIR .. "src/mame/drivers/microvsn.cpp",
+ MAME_DIR .. "src/mame/drivers/milton6805.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mchester")
+files {
+ MAME_DIR .. "src/mame/drivers/ssem.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "memotech")
+files {
+ MAME_DIR .. "src/mame/drivers/mtx.cpp",
+ MAME_DIR .. "src/mame/includes/mtx.h",
+ MAME_DIR .. "src/mame/machine/mtx.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mera")
+files {
+ MAME_DIR .. "src/mame/drivers/ec7915.cpp",
+ MAME_DIR .. "src/mame/drivers/konin.cpp",
+ MAME_DIR .. "src/mame/drivers/m79152pc.cpp",
+ MAME_DIR .. "src/mame/drivers/meritum.cpp",
+ MAME_DIR .. "src/mame/drivers/vdm7932x.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mg1")
+files {
+ MAME_DIR .. "src/mame/drivers/mg1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mgu")
+files {
+ MAME_DIR .. "src/mame/drivers/irisha.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "microkey")
+files {
+ MAME_DIR .. "src/mame/drivers/primo.cpp",
+ MAME_DIR .. "src/mame/includes/primo.h",
+ MAME_DIR .. "src/mame/machine/primo.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "microsoft")
+files {
+ MAME_DIR .. "src/mame/drivers/xbox.cpp",
+ MAME_DIR .. "src/mame/includes/xbox.h",
+ MAME_DIR .. "src/mame/includes/xbox_usb.h",
+ MAME_DIR .. "src/mame/includes/xbox_pci.h",
+}
+
+createMESSProjects(_target, _subtarget, "microterm")
+files {
+ MAME_DIR .. "src/mame/drivers/ergo201.cpp",
+ MAME_DIR .. "src/mame/drivers/microterm_f8.cpp",
+ MAME_DIR .. "src/mame/drivers/mt420.cpp",
+ MAME_DIR .. "src/mame/drivers/mt5510.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mips")
+files {
+ MAME_DIR .. "src/mame/drivers/mips.cpp",
+ MAME_DIR .. "src/mame/machine/mips_rambo.h",
+ MAME_DIR .. "src/mame/machine/mips_rambo.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mit")
+files {
+ MAME_DIR .. "src/mame/drivers/tx0.cpp",
+ MAME_DIR .. "src/mame/includes/tx0.h",
+ MAME_DIR .. "src/mame/video/crt.cpp",
+ MAME_DIR .. "src/mame/video/crt.h",
+ MAME_DIR .. "src/mame/video/tx0.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mits")
+files {
+ MAME_DIR .. "src/mame/drivers/altair.cpp",
+ MAME_DIR .. "src/mame/drivers/mits680b.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mitsubishi")
+files {
+ MAME_DIR .. "src/mame/drivers/hh_melps4.cpp",
+ MAME_DIR .. "src/mame/drivers/multi8.cpp",
+ MAME_DIR .. "src/mame/drivers/multi16.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mizar")
+files {
+ MAME_DIR .. "src/mame/drivers/mzr8105.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "morrow")
+files {
+ MAME_DIR .. "src/mame/drivers/microdec.cpp",
+ MAME_DIR .. "src/mame/drivers/mpz80.cpp",
+ MAME_DIR .. "src/mame/includes/mpz80.h",
+ MAME_DIR .. "src/mame/drivers/tricep.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "mos")
+files {
+ MAME_DIR .. "src/mame/drivers/kim1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "motorola")
+files {
+ MAME_DIR .. "src/mame/drivers/exorciser.cpp",
+ MAME_DIR .. "src/mame/drivers/m6805evs.cpp",
+ MAME_DIR .. "src/mame/drivers/m68705prg.cpp",
+ MAME_DIR .. "src/mame/drivers/mekd1.cpp",
+ MAME_DIR .. "src/mame/drivers/mekd2.cpp",
+ MAME_DIR .. "src/mame/drivers/mekd3.cpp",
+ MAME_DIR .. "src/mame/drivers/mekd4.cpp",
+ MAME_DIR .. "src/mame/drivers/mekd5.cpp",
+ MAME_DIR .. "src/mame/drivers/mvme147.cpp",
+ MAME_DIR .. "src/mame/drivers/mvme162.cpp",
+ MAME_DIR .. "src/mame/drivers/uchroma68.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "multitch")
+files {
+ MAME_DIR .. "src/mame/drivers/mkit09.cpp",
+ MAME_DIR .. "src/mame/drivers/mpf1.cpp",
+ MAME_DIR .. "src/mame/includes/mpf1.h",
+}
+
+createMESSProjects(_target, _subtarget, "mupid")
+files {
+ MAME_DIR .. "src/mame/drivers/mdisk.cpp",
+ MAME_DIR .. "src/mame/drivers/mupid2.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "nakajima")
+files {
+ MAME_DIR .. "src/mame/drivers/nakajies.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "nascom")
+files {
+ MAME_DIR .. "src/mame/drivers/nascom1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "natsemi")
+files {
+ MAME_DIR .. "src/mame/drivers/hh_cop400.cpp",
+ MAME_DIR .. "src/mame/drivers/hh_cops1.cpp",
+ MAME_DIR .. "src/mame/drivers/ns5652.cpp",
+ MAME_DIR .. "src/mame/drivers/ns32kdb.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ncd")
+files {
+ MAME_DIR .. "src/mame/drivers/ncd68k.cpp",
+ MAME_DIR .. "src/mame/drivers/ncd88k.cpp",
+ MAME_DIR .. "src/mame/drivers/ncdmips.cpp",
+ MAME_DIR .. "src/mame/drivers/ncdppc.cpp",
+ MAME_DIR .. "src/mame/machine/bert.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ne")
+files {
+ MAME_DIR .. "src/mame/drivers/z80ne.cpp",
+ MAME_DIR .. "src/mame/includes/z80ne.h",
+ MAME_DIR .. "src/mame/machine/z80ne.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "nec")
+files {
+ MAME_DIR .. "src/mame/drivers/apc.cpp",
+ MAME_DIR .. "src/mame/drivers/ews4800.cpp",
+ MAME_DIR .. "src/mame/drivers/hh_ucom4.cpp",
+ MAME_DIR .. "src/mame/drivers/pce.cpp",
+ MAME_DIR .. "src/mame/includes/pce.h",
+ MAME_DIR .. "src/mame/machine/pce.cpp",
+ MAME_DIR .. "src/mame/machine/pce_cd.cpp",
+ MAME_DIR .. "src/mame/machine/pce_cd.h",
+ MAME_DIR .. "src/mame/drivers/pcfx.cpp",
+ MAME_DIR .. "src/mame/drivers/pc6001.cpp",
+ MAME_DIR .. "src/mame/includes/pc6001.h",
+ MAME_DIR .. "src/mame/video/pc6001.cpp",
+ MAME_DIR .. "src/mame/drivers/pc8401a.cpp",
+ MAME_DIR .. "src/mame/includes/pc8401a.h",
+ MAME_DIR .. "src/mame/video/pc8401a.cpp",
+ MAME_DIR .. "src/mame/machine/pc80s31k.cpp",
+ MAME_DIR .. "src/mame/machine/pc80s31k.h",
+ MAME_DIR .. "src/mame/drivers/pc8001.cpp",
+ MAME_DIR .. "src/mame/includes/pc8001.h",
+ MAME_DIR .. "src/mame/drivers/pc8801.cpp",
+ MAME_DIR .. "src/mame/includes/pc8801.h",
+ MAME_DIR .. "src/mame/drivers/pc88va.cpp",
+ MAME_DIR .. "src/mame/includes/pc88va.h",
+ MAME_DIR .. "src/mame/drivers/pc100.cpp",
+ MAME_DIR .. "src/mame/drivers/pc9801.cpp",
+ MAME_DIR .. "src/mame/includes/pc9801.h",
+ MAME_DIR .. "src/mame/video/pc9801.cpp",
+ MAME_DIR .. "src/mame/machine/pc9801_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/pc9801_kbd.h",
+ MAME_DIR .. "src/mame/machine/pc9801_cd.cpp",
+ MAME_DIR .. "src/mame/machine/pc9801_cd.h",
+ MAME_DIR .. "src/mame/machine/pc9801_memsw.cpp",
+ MAME_DIR .. "src/mame/machine/pc9801_memsw.h",
+ MAME_DIR .. "src/mame/drivers/pc98ha.cpp",
+ MAME_DIR .. "src/mame/includes/pc98ha.h",
+ MAME_DIR .. "src/mame/drivers/pc9801_epson.cpp",
+ MAME_DIR .. "src/mame/includes/pc9801_epson.h",
+ MAME_DIR .. "src/mame/drivers/pc9821.cpp",
+ MAME_DIR .. "src/mame/includes/pc9821.h",
+ MAME_DIR .. "src/mame/drivers/tk80bs.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "netronic")
+files {
+ MAME_DIR .. "src/mame/drivers/elf.cpp",
+ MAME_DIR .. "src/mame/includes/elf.h",
+ MAME_DIR .. "src/mame/drivers/exp85.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "next")
+files {
+ MAME_DIR .. "src/mame/drivers/next.cpp",
+ MAME_DIR .. "src/mame/includes/next.h",
+ MAME_DIR .. "src/mame/machine/nextkbd.cpp",
+ MAME_DIR .. "src/mame/machine/nextkbd.h",
+ MAME_DIR .. "src/mame/machine/nextmo.cpp",
+ MAME_DIR .. "src/mame/machine/nextmo.h",
+}
+
+createMESSProjects(_target, _subtarget, "nintendo")
+files {
+ MAME_DIR .. "src/mame/drivers/gb.cpp",
+ MAME_DIR .. "src/mame/includes/gb.h",
+ MAME_DIR .. "src/mame/machine/gb.cpp",
+ MAME_DIR .. "src/mame/drivers/gba.cpp",
+ MAME_DIR .. "src/mame/includes/gba.h",
+ MAME_DIR .. "src/mame/drivers/n64.cpp",
+ MAME_DIR .. "src/mame/includes/n64.h",
+ MAME_DIR .. "src/mame/drivers/nds.cpp",
+ MAME_DIR .. "src/mame/includes/nds.h",
+ MAME_DIR .. "src/mame/drivers/nes.cpp",
+ MAME_DIR .. "src/mame/includes/nes.h",
+ MAME_DIR .. "src/mame/machine/nes.cpp",
+ MAME_DIR .. "src/mame/video/nes.cpp",
+ MAME_DIR .. "src/mame/drivers/nes_vt02_vt03.cpp",
+ MAME_DIR .. "src/mame/drivers/nes_vt09.cpp",
+ MAME_DIR .. "src/mame/drivers/nes_vt32.cpp",
+ MAME_DIR .. "src/mame/drivers/nes_vt369_vtunknown.cpp",
+ MAME_DIR .. "src/mame/machine/nes_vt_soc.cpp",
+ MAME_DIR .. "src/mame/machine/nes_vt_soc.h",
+ MAME_DIR .. "src/mame/machine/nes_vt09_soc.cpp",
+ MAME_DIR .. "src/mame/machine/nes_vt09_soc.h",
+ MAME_DIR .. "src/mame/machine/nes_vt32_soc.cpp",
+ MAME_DIR .. "src/mame/machine/nes_vt32_soc.h",
+ MAME_DIR .. "src/mame/machine/nes_vt369_vtunknown_soc.cpp",
+ MAME_DIR .. "src/mame/machine/nes_vt369_vtunknown_soc.h",
+ MAME_DIR .. "src/mame/drivers/nes_sh6578.cpp",
+ MAME_DIR .. "src/mame/drivers/nes_clone.cpp",
+ MAME_DIR .. "src/mame/drivers/pokemini.cpp",
+ MAME_DIR .. "src/mame/drivers/snes.cpp",
+ MAME_DIR .. "src/mame/includes/snes.h",
+ MAME_DIR .. "src/mame/machine/snescx4.cpp",
+ MAME_DIR .. "src/mame/machine/snescx4.h",
+ MAME_DIR .. "src/mame/machine/cx4data.hxx",
+ MAME_DIR .. "src/mame/machine/cx4fn.hxx",
+ MAME_DIR .. "src/mame/machine/cx4oam.hxx",
+ MAME_DIR .. "src/mame/machine/cx4ops.hxx",
+ MAME_DIR .. "src/mame/drivers/vboy.cpp",
+ MAME_DIR .. "src/mame/audio/vboy.cpp",
+ MAME_DIR .. "src/mame/audio/vboy.h",
+ MAME_DIR .. "src/mame/drivers/gamecube.cpp",
+ MAME_DIR .. "src/mame/machine/m6502_vtscr.cpp",
+ MAME_DIR .. "src/mame/machine/m6502_vtscr.h",
+ MAME_DIR .. "src/mame/machine/m6502_swap_op_d5_d6.cpp",
+ MAME_DIR .. "src/mame/machine/m6502_swap_op_d5_d6.h",
+ MAME_DIR .. "src/mame/machine/m6502_swap_op_d2_d7.cpp",
+ MAME_DIR .. "src/mame/machine/m6502_swap_op_d2_d7.h",
+ MAME_DIR .. "src/mame/drivers/vt1682.cpp",
+ MAME_DIR .. "src/mame/machine/vt1682_io.h",
+ MAME_DIR .. "src/mame/machine/vt1682_io.cpp",
+ MAME_DIR .. "src/mame/machine/vt1682_uio.h",
+ MAME_DIR .. "src/mame/machine/vt1682_uio.cpp",
+ MAME_DIR .. "src/mame/machine/vt1682_alu.h",
+ MAME_DIR .. "src/mame/machine/vt1682_alu.cpp",
+ MAME_DIR .. "src/mame/machine/vt1682_timer.h",
+ MAME_DIR .. "src/mame/machine/vt1682_timer.cpp",
+ MAME_DIR .. "src/mame/drivers/vt_unknown.cpp",
+ MAME_DIR .. "src/mame/drivers/compmahj.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "nokia")
+files {
+ MAME_DIR .. "src/mame/drivers/dbox.cpp",
+ MAME_DIR .. "src/mame/drivers/mikromik.cpp",
+ MAME_DIR .. "src/mame/includes/mikromik.h",
+ MAME_DIR .. "src/mame/machine/mm1kb.cpp",
+ MAME_DIR .. "src/mame/machine/mm1kb.h",
+ MAME_DIR .. "src/mame/video/mikromik.cpp",
+ MAME_DIR .. "src/mame/drivers/nokia_3310.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "northstar")
+files {
+ MAME_DIR .. "src/mame/drivers/horizon.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "novag")
+files {
+ MAME_DIR .. "src/mame/drivers/novag_cexpert.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_cforte.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_const.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_diablo.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_micro.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_micro2.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_savant.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_sexpert.cpp",
+ MAME_DIR .. "src/mame/drivers/novag_snova.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "novation")
+files {
+ MAME_DIR .. "src/mame/drivers/basssta.cpp",
+ MAME_DIR .. "src/mame/drivers/drumsta.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "olivetti")
+files {
+ MAME_DIR .. "src/mame/drivers/m20.cpp",
+ MAME_DIR .. "src/mame/machine/m20_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/m20_kbd.h",
+ MAME_DIR .. "src/mame/machine/m20_8086.cpp",
+ MAME_DIR .. "src/mame/machine/m20_8086.h",
+ MAME_DIR .. "src/mame/drivers/m24.cpp",
+ MAME_DIR .. "src/mame/machine/m24_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/m24_kbd.h",
+ MAME_DIR .. "src/mame/machine/m24_z8000.cpp",
+ MAME_DIR .. "src/mame/machine/m24_z8000.h",
+ MAME_DIR .. "src/mame/drivers/olivpc1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "olympia")
+files {
+ MAME_DIR .. "src/mame/drivers/olyboss.cpp",
+ MAME_DIR .. "src/mame/drivers/olytext.cpp",
+ MAME_DIR .. "src/mame/drivers/peoplepc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "omnibyte")
+files {
+ MAME_DIR .. "src/mame/drivers/msbc1.cpp",
+ MAME_DIR .. "src/mame/drivers/ob68k1a.cpp",
+ MAME_DIR .. "src/mame/includes/ob68k1a.h",
+}
+
+createMESSProjects(_target, _subtarget, "omron")
+files {
+ MAME_DIR .. "src/mame/drivers/luna_68k.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "openuni")
+files {
+ MAME_DIR .. "src/mame/drivers/hektor.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "orion")
+files {
+ MAME_DIR .. "src/mame/drivers/orion.cpp",
+ MAME_DIR .. "src/mame/includes/orion.h",
+ MAME_DIR .. "src/mame/machine/orion.cpp",
+ MAME_DIR .. "src/mame/video/orion.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "osborne")
+files {
+ MAME_DIR .. "src/mame/drivers/osborne1.cpp",
+ MAME_DIR .. "src/mame/includes/osborne1.h",
+ MAME_DIR .. "src/mame/machine/osborne1.cpp",
+ MAME_DIR .. "src/mame/drivers/osbexec.cpp",
+ MAME_DIR .. "src/mame/drivers/vixen.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "osi")
+files {
+ MAME_DIR .. "src/mame/drivers/osi.cpp",
+ MAME_DIR .. "src/mame/includes/osi.h",
+ MAME_DIR .. "src/mame/video/osi.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "palm")
+files {
+ MAME_DIR .. "src/mame/drivers/palm.cpp",
+ MAME_DIR .. "src/mame/drivers/palm_dbg.hxx",
+ MAME_DIR .. "src/mame/drivers/palmz22.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "parker")
+files {
+ MAME_DIR .. "src/mame/drivers/talkingbb.cpp",
+ MAME_DIR .. "src/mame/drivers/talkingfb.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "pitronic")
+files {
+ MAME_DIR .. "src/mame/drivers/beta.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "pc")
+files {
+ MAME_DIR .. "src/mame/drivers/asst128.cpp",
+ MAME_DIR .. "src/mame/drivers/europc.cpp",
+ MAME_DIR .. "src/mame/drivers/genpc.cpp",
+ MAME_DIR .. "src/mame/drivers/ibmpc.cpp",
+ MAME_DIR .. "src/mame/drivers/ibmpcjr.cpp",
+ MAME_DIR .. "src/mame/drivers/nforcepc.cpp",
+ MAME_DIR .. "src/mame/drivers/pc.cpp",
+ MAME_DIR .. "src/mame/drivers/pcipc.cpp",
+ MAME_DIR .. "src/mame/drivers/tandy1t.cpp",
+ MAME_DIR .. "src/mame/drivers/tosh1000.cpp",
+ MAME_DIR .. "src/mame/machine/tosh1000_bram.cpp",
+ MAME_DIR .. "src/mame/machine/tosh1000_bram.h",
+ MAME_DIR .. "src/mame/drivers/compc.cpp",
+ MAME_DIR .. "src/mame/video/pc_t1t.cpp",
+ MAME_DIR .. "src/mame/video/pc_t1t.h",
+}
+
+createMESSProjects(_target, _subtarget, "pdp1")
+files {
+ MAME_DIR .. "src/mame/drivers/pdp1.cpp",
+ MAME_DIR .. "src/mame/includes/pdp1.h",
+ MAME_DIR .. "src/mame/video/pdp1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "pel")
+files {
+ MAME_DIR .. "src/mame/drivers/galeb.cpp",
+ MAME_DIR .. "src/mame/drivers/orao.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "philips")
+files {
+ MAME_DIR .. "src/mame/drivers/p2000t.cpp",
+ MAME_DIR .. "src/mame/includes/p2000t.h",
+ MAME_DIR .. "src/mame/machine/p2000t.cpp",
+ MAME_DIR .. "src/mame/machine/p2000t_mdcr.cpp",
+ MAME_DIR .. "src/mame/video/p2000t.cpp",
+ MAME_DIR .. "src/mame/drivers/vg5k.cpp",
+ MAME_DIR .. "src/mame/drivers/yes.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "poly")
+files {
+ MAME_DIR .. "src/mame/drivers/poly.cpp",
+ MAME_DIR .. "src/mame/includes/poly.h",
+ MAME_DIR .. "src/mame/machine/poly.cpp",
+ MAME_DIR .. "src/mame/drivers/proteus.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "poly88")
+files {
+ MAME_DIR .. "src/mame/drivers/poly88.cpp",
+ MAME_DIR .. "src/mame/includes/poly88.h",
+ MAME_DIR .. "src/mame/machine/poly88.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "psion")
+files {
+ MAME_DIR .. "src/mame/drivers/psion.cpp",
+ MAME_DIR .. "src/mame/includes/psion.h",
+ MAME_DIR .. "src/mame/drivers/psion5.cpp",
+ MAME_DIR .. "src/mame/includes/psion5.h",
+ MAME_DIR .. "src/mame/machine/etna.cpp",
+ MAME_DIR .. "src/mame/machine/etna.h",
+ MAME_DIR .. "src/mame/machine/psion_pack.cpp",
+ MAME_DIR .. "src/mame/machine/psion_pack.h",
+}
+
+createMESSProjects(_target, _subtarget, "quantel")
+files {
+ MAME_DIR .. "src/mame/drivers/dpb7000.cpp",
+ MAME_DIR .. "src/mame/drivers/harriet.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "qume")
+files {
+ MAME_DIR .. "src/mame/drivers/qvt70.cpp",
+ MAME_DIR .. "src/mame/drivers/qvt102.cpp",
+ MAME_DIR .. "src/mame/drivers/qvt103.cpp",
+ MAME_DIR .. "src/mame/drivers/qvt190.cpp",
+ MAME_DIR .. "src/mame/drivers/qvt201.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "radio")
+files {
+ MAME_DIR .. "src/mame/drivers/apogee.cpp",
+ MAME_DIR .. "src/mame/drivers/mikrosha.cpp",
+ MAME_DIR .. "src/mame/drivers/partner.cpp",
+ MAME_DIR .. "src/mame/includes/partner.h",
+ MAME_DIR .. "src/mame/machine/partner.cpp",
+ MAME_DIR .. "src/mame/drivers/radio86.cpp",
+ MAME_DIR .. "src/mame/includes/radio86.h",
+ MAME_DIR .. "src/mame/machine/radio86.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "rca")
+files {
+ MAME_DIR .. "src/mame/drivers/microkit.cpp",
+ MAME_DIR .. "src/mame/drivers/studio2.cpp",
+ MAME_DIR .. "src/mame/drivers/vip.cpp",
+ MAME_DIR .. "src/mame/includes/vip.h",
+}
+
+createMESSProjects(_target, _subtarget, "regnecentralen")
+files {
+ MAME_DIR .. "src/mame/drivers/rc702.cpp",
+ MAME_DIR .. "src/mame/drivers/rc759.cpp",
+ MAME_DIR .. "src/mame/machine/rc759_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/rc759_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "ritam")
+files {
+ MAME_DIR .. "src/mame/drivers/monty.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "rm")
+files {
+ MAME_DIR .. "src/mame/drivers/rm380z.cpp",
+ MAME_DIR .. "src/mame/includes/rm380z.h",
+ MAME_DIR .. "src/mame/machine/rm380z.cpp",
+ MAME_DIR .. "src/mame/video/rm380z.cpp",
+ MAME_DIR .. "src/mame/drivers/rmnimbus.cpp",
+ MAME_DIR .. "src/mame/includes/rmnimbus.h",
+ MAME_DIR .. "src/mame/machine/rmnimbus.cpp",
+ MAME_DIR .. "src/mame/video/rmnimbus.cpp",
+ MAME_DIR .. "src/mame/machine/rmnkbd.cpp",
+ MAME_DIR .. "src/mame/machine/rmnkbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "robotron")
+files {
+ MAME_DIR .. "src/mame/drivers/a5105.cpp",
+ MAME_DIR .. "src/mame/drivers/a51xx.cpp",
+ MAME_DIR .. "src/mame/drivers/a7150.cpp",
+ MAME_DIR .. "src/mame/drivers/k1003.cpp",
+ MAME_DIR .. "src/mame/drivers/k8915.cpp",
+ MAME_DIR .. "src/mame/drivers/rt1715.cpp",
+ MAME_DIR .. "src/mame/drivers/z1013.cpp",
+ MAME_DIR .. "src/mame/drivers/z9001.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "roland")
+files {
+ MAME_DIR .. "src/mame/drivers/alphajuno.cpp",
+ MAME_DIR .. "src/mame/drivers/boss_se70.cpp",
+ MAME_DIR .. "src/mame/drivers/boss_sx700.cpp",
+ MAME_DIR .. "src/mame/drivers/juno106.cpp",
+ MAME_DIR .. "src/mame/drivers/juno6.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_cm32p.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_d10.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_d50.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_jd800.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_jv80.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_jx3p.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_jx8p.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_mc50.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_mt32.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_pr100.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_r8.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_ra30.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_s10.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_s50.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_sc55.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_sc88.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_tb303.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_tr505.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_tr606.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_tr707.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_tr909.cpp",
+ MAME_DIR .. "src/mame/drivers/roland_u20.cpp",
+ MAME_DIR .. "src/mame/audio/bu3905.cpp",
+ MAME_DIR .. "src/mame/audio/bu3905.h",
+ MAME_DIR .. "src/mame/audio/jx8p_synth.cpp",
+ MAME_DIR .. "src/mame/audio/jx8p_synth.h",
+ MAME_DIR .. "src/mame/audio/mb63h114.cpp",
+ MAME_DIR .. "src/mame/audio/mb63h114.h",
+ MAME_DIR .. "src/mame/audio/sa16.cpp",
+ MAME_DIR .. "src/mame/audio/sa16.h",
+ MAME_DIR .. "src/mame/machine/mb62h195.cpp",
+ MAME_DIR .. "src/mame/machine/mb62h195.h",
+ MAME_DIR .. "src/mame/machine/mb63h149.cpp",
+ MAME_DIR .. "src/mame/machine/mb63h149.h",
+ MAME_DIR .. "src/mame/machine/mb87013.cpp",
+ MAME_DIR .. "src/mame/machine/mb87013.h",
+ MAME_DIR .. "src/mame/machine/pg200.cpp",
+ MAME_DIR .. "src/mame/machine/pg200.h",
+}
+
+createMESSProjects(_target, _subtarget, "rolm")
+files {
+ MAME_DIR .. "src/mame/drivers/r9751.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "rockwell")
+files {
+ MAME_DIR .. "src/mame/drivers/aim65.cpp",
+ MAME_DIR .. "src/mame/includes/aim65.h",
+ MAME_DIR .. "src/mame/machine/aim65.cpp",
+ MAME_DIR .. "src/mame/drivers/aim65_40.cpp",
+ MAME_DIR .. "src/mame/drivers/hh_pps41.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "rtpc")
+files {
+ MAME_DIR .. "src/mame/drivers/rtpc.cpp",
+ MAME_DIR .. "src/mame/machine/rosetta.cpp",
+ MAME_DIR .. "src/mame/machine/rosetta.h",
+ MAME_DIR .. "src/mame/machine/rtpc_iocc.cpp",
+ MAME_DIR .. "src/mame/machine/rtpc_iocc.h",
+}
+
+createMESSProjects(_target, _subtarget, "sage")
+files {
+ MAME_DIR .. "src/mame/drivers/sage2.cpp",
+ MAME_DIR .. "src/mame/includes/sage2.h",
+}
+
+createMESSProjects(_target, _subtarget, "saitek")
+files {
+ MAME_DIR .. "src/mame/drivers/saitek_ccompan.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_chesstrv.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_cp2000.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_delta1.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_exchess.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_intchess.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_leonardo.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_mark5.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_minichess.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_prschess.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_renaissance.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_schess.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_simultano.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_ssystem3.cpp",
+ MAME_DIR .. "src/mame/includes/saitek_stratos.h",
+ MAME_DIR .. "src/mame/drivers/saitek_stratos.cpp",
+ MAME_DIR .. "src/mame/drivers/saitek_corona.cpp", -- subdriver of saitek_stratos
+ MAME_DIR .. "src/mame/drivers/saitek_superstar.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "samcoupe")
+files {
+ MAME_DIR .. "src/mame/drivers/samcoupe.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "samsung")
+files {
+ MAME_DIR .. "src/mame/drivers/spc1000.cpp",
+ MAME_DIR .. "src/mame/drivers/spc1500.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "sanyo")
+files {
+ MAME_DIR .. "src/mame/drivers/mbc200.cpp",
+ MAME_DIR .. "src/mame/drivers/mbc55x.cpp",
+ MAME_DIR .. "src/mame/includes/mbc55x.h",
+ MAME_DIR .. "src/mame/video/mbc55x.cpp",
+ MAME_DIR .. "src/mame/drivers/phc25.cpp",
+ MAME_DIR .. "src/mame/includes/phc25.h",
+ MAME_DIR .. "src/mame/machine/mbc55x_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/mbc55x_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "saturn")
+files {
+ MAME_DIR .. "src/mame/drivers/st17xx.cpp",
+}
+
+-- Don't call this project "sega" or it collides with the arcade one
+-- and merges with it, which ends up with libsega.a linked after
+-- libshared.a. The link then fails on linux because SEGAM1AUDIO and RAX
+-- are in shared while model* and stv are in sega.
+createMESSProjects(_target, _subtarget, "segacons")
+files {
+ MAME_DIR .. "src/mame/drivers/dccons.cpp",
+ MAME_DIR .. "src/mame/includes/dccons.h",
+ MAME_DIR .. "src/mame/machine/dccons.cpp",
+ MAME_DIR .. "src/mame/machine/gdrom.cpp",
+ MAME_DIR .. "src/mame/machine/gdrom.h",
+ MAME_DIR .. "src/mame/drivers/megadriv.cpp",
+ MAME_DIR .. "src/mame/includes/megadriv.h",
+ MAME_DIR .. "src/mame/drivers/megadriv_rad.cpp",
+ MAME_DIR .. "src/mame/includes/megadriv_rad.h",
+ MAME_DIR .. "src/mame/drivers/megadriv_vt_hybrid.cpp",
+ MAME_DIR .. "src/mame/drivers/megadriv_sunplus_hybrid.cpp",
+ MAME_DIR .. "src/mame/drivers/segapico.cpp",
+ MAME_DIR .. "src/mame/drivers/sega_sawatte.cpp",
+ MAME_DIR .. "src/mame/drivers/sega_beena.cpp",
+ MAME_DIR .. "src/mame/drivers/segapm.cpp",
+ MAME_DIR .. "src/mame/drivers/sg1000.cpp",
+ MAME_DIR .. "src/mame/includes/sg1000.h",
+ MAME_DIR .. "src/mame/drivers/sms.cpp",
+ MAME_DIR .. "src/mame/includes/sms.h",
+ MAME_DIR .. "src/mame/machine/sms.cpp",
+ MAME_DIR .. "src/mame/drivers/svmu.cpp",
+ MAME_DIR .. "src/mame/machine/mega32x.cpp",
+ MAME_DIR .. "src/mame/machine/mega32x.h",
+ MAME_DIR .. "src/mame/machine/megacd.cpp",
+ MAME_DIR .. "src/mame/machine/megacd.h",
+ MAME_DIR .. "src/mame/machine/megacdcd.cpp",
+ MAME_DIR .. "src/mame/machine/megacdcd.h",
+}
+
+createMESSProjects(_target, _subtarget, "sequential")
+files {
+ MAME_DIR .. "src/mame/drivers/prophet600.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "sgi")
+files {
+ MAME_DIR .. "src/mame/drivers/iris_power.cpp",
+ MAME_DIR .. "src/mame/drivers/crimson.cpp",
+ MAME_DIR .. "src/mame/drivers/o2.cpp",
+ MAME_DIR .. "src/mame/drivers/octane.cpp",
+ MAME_DIR .. "src/mame/machine/vino.cpp",
+ MAME_DIR .. "src/mame/machine/vino.h",
+ MAME_DIR .. "src/mame/machine/saa7191.cpp",
+ MAME_DIR .. "src/mame/machine/saa7191.h",
+ MAME_DIR .. "src/mame/machine/sgi.cpp",
+ MAME_DIR .. "src/mame/machine/sgi.h",
+ MAME_DIR .. "src/mame/machine/hal2.cpp",
+ MAME_DIR .. "src/mame/machine/hal2.h",
+ MAME_DIR .. "src/mame/machine/hpc1.cpp",
+ MAME_DIR .. "src/mame/machine/hpc1.h",
+ MAME_DIR .. "src/mame/machine/hpc3.cpp",
+ MAME_DIR .. "src/mame/machine/hpc3.h",
+ MAME_DIR .. "src/mame/machine/ioc2.cpp",
+ MAME_DIR .. "src/mame/machine/ioc2.h",
+ MAME_DIR .. "src/mame/machine/mace.cpp",
+ MAME_DIR .. "src/mame/machine/mace.h",
+ MAME_DIR .. "src/mame/drivers/iris3130.cpp",
+ MAME_DIR .. "src/mame/drivers/4dpi.cpp",
+ MAME_DIR .. "src/mame/drivers/indigo.cpp",
+ MAME_DIR .. "src/mame/drivers/indy_indigo2.cpp",
+ MAME_DIR .. "src/mame/video/light.cpp",
+ MAME_DIR .. "src/mame/video/light.h",
+ MAME_DIR .. "src/mame/video/crime.cpp",
+ MAME_DIR .. "src/mame/video/crime.h",
+ MAME_DIR .. "src/mame/video/sgi_gr1.cpp",
+ MAME_DIR .. "src/mame/video/sgi_gr1.h",
+ MAME_DIR .. "src/mame/video/sgi_ge5.cpp",
+ MAME_DIR .. "src/mame/video/sgi_ge5.h",
+ MAME_DIR .. "src/mame/video/sgi_re2.cpp",
+ MAME_DIR .. "src/mame/video/sgi_re2.h",
+ MAME_DIR .. "src/mame/video/sgi_xmap2.cpp",
+ MAME_DIR .. "src/mame/video/sgi_xmap2.h",
+}
+
+createMESSProjects(_target, _subtarget, "sharp")
+files {
+ MAME_DIR .. "src/mame/drivers/hh_sm510.cpp",
+ MAME_DIR .. "src/mame/includes/hh_sm510.h",
+ MAME_DIR .. "src/mame/drivers/rzone.cpp", -- subdriver of hh_sm510
+ MAME_DIR .. "src/mame/video/mz700.cpp",
+ MAME_DIR .. "src/mame/drivers/mz700.cpp",
+ MAME_DIR .. "src/mame/includes/mz700.h",
+ MAME_DIR .. "src/mame/drivers/pc1500.cpp",
+ MAME_DIR .. "src/mame/drivers/pocketc.cpp",
+ MAME_DIR .. "src/mame/machine/pocketc.cpp",
+ MAME_DIR .. "src/mame/includes/pocketc.h",
+ MAME_DIR .. "src/mame/video/pc1401.cpp",
+ MAME_DIR .. "src/mame/machine/pc1401.cpp",
+ MAME_DIR .. "src/mame/includes/pc1401.h",
+ MAME_DIR .. "src/mame/video/pc1403.cpp",
+ MAME_DIR .. "src/mame/machine/pc1403.cpp",
+ MAME_DIR .. "src/mame/includes/pc1403.h",
+ MAME_DIR .. "src/mame/video/pc1350.cpp",
+ MAME_DIR .. "src/mame/machine/pc1350.cpp",
+ MAME_DIR .. "src/mame/includes/pc1350.h",
+ MAME_DIR .. "src/mame/video/pc1251.cpp",
+ MAME_DIR .. "src/mame/machine/pc1251.cpp",
+ MAME_DIR .. "src/mame/includes/pc1251.h",
+ MAME_DIR .. "src/mame/video/pocketc.cpp",
+ MAME_DIR .. "src/mame/machine/mz700.cpp",
+ MAME_DIR .. "src/mame/drivers/x68k.cpp",
+ MAME_DIR .. "src/mame/includes/x68k.h",
+ MAME_DIR .. "src/mame/video/x68k.cpp",
+ MAME_DIR .. "src/mame/machine/x68k_hdc.cpp",
+ MAME_DIR .. "src/mame/machine/x68k_hdc.h",
+ MAME_DIR .. "src/mame/machine/x68k_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/x68k_kbd.h",
+ MAME_DIR .. "src/mame/video/x68k_crtc.cpp",
+ MAME_DIR .. "src/mame/video/x68k_crtc.h",
+ MAME_DIR .. "src/mame/drivers/mz80.cpp",
+ MAME_DIR .. "src/mame/includes/mz80.h",
+ MAME_DIR .. "src/mame/video/mz80.cpp",
+ MAME_DIR .. "src/mame/machine/mz80.cpp",
+ MAME_DIR .. "src/mame/drivers/mz2000.cpp",
+ MAME_DIR .. "src/mame/drivers/wizard.cpp",
+ MAME_DIR .. "src/mame/drivers/x1.cpp",
+ MAME_DIR .. "src/mame/includes/x1.h",
+ MAME_DIR .. "src/mame/machine/x1.cpp",
+ MAME_DIR .. "src/mame/video/x1.cpp",
+ MAME_DIR .. "src/mame/drivers/x1twin.cpp",
+ MAME_DIR .. "src/mame/drivers/mz2500.cpp",
+ MAME_DIR .. "src/mame/includes/mz2500.h",
+ MAME_DIR .. "src/mame/drivers/mz3500.cpp",
+ MAME_DIR .. "src/mame/drivers/pce220.cpp",
+ MAME_DIR .. "src/mame/machine/pce220_ser.cpp",
+ MAME_DIR .. "src/mame/machine/pce220_ser.h",
+ MAME_DIR .. "src/mame/drivers/mz6500.cpp",
+ MAME_DIR .. "src/mame/drivers/zaurus.cpp",
+ MAME_DIR .. "src/mame/drivers/fontwriter.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "sinclair")
+files {
+ MAME_DIR .. "src/mame/video/spectrum.cpp",
+ MAME_DIR .. "src/mame/video/timex.cpp",
+ MAME_DIR .. "src/mame/video/zx.cpp",
+ MAME_DIR .. "src/mame/drivers/zx.cpp",
+ MAME_DIR .. "src/mame/includes/zx.h",
+ MAME_DIR .. "src/mame/machine/zx.cpp",
+ MAME_DIR .. "src/mame/drivers/spectrum.cpp",
+ MAME_DIR .. "src/mame/includes/spectrum.h",
+ MAME_DIR .. "src/mame/drivers/spec128.cpp",
+ MAME_DIR .. "src/mame/includes/spec128.h",
+ MAME_DIR .. "src/mame/drivers/timex.cpp",
+ MAME_DIR .. "src/mame/includes/timex.h",
+ MAME_DIR .. "src/mame/drivers/specpls3.cpp",
+ MAME_DIR .. "src/mame/includes/specpls3.h",
+ MAME_DIR .. "src/mame/drivers/scorpion.cpp",
+ MAME_DIR .. "src/mame/drivers/atm.cpp",
+ MAME_DIR .. "src/mame/drivers/pentagon.cpp",
+ MAME_DIR .. "src/mame/machine/beta.cpp",
+ MAME_DIR .. "src/mame/machine/beta.h",
+ MAME_DIR .. "src/mame/machine/spec_snqk.cpp",
+ MAME_DIR .. "src/mame/machine/spec_snqk.h",
+ MAME_DIR .. "src/mame/drivers/ql.cpp",
+ MAME_DIR .. "src/mame/machine/qimi.cpp",
+ MAME_DIR .. "src/mame/machine/qimi.h",
+ MAME_DIR .. "src/mame/video/zx8301.cpp",
+ MAME_DIR .. "src/mame/video/zx8301.h",
+ MAME_DIR .. "src/mame/machine/zx8302.cpp",
+ MAME_DIR .. "src/mame/machine/zx8302.h",
+}
+
+createMESSProjects(_target, _subtarget, "siemens")
+files {
+ MAME_DIR .. "src/mame/drivers/bitel.cpp",
+ MAME_DIR .. "src/mame/drivers/pcd.cpp",
+ MAME_DIR .. "src/mame/machine/pcd_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/pcd_kbd.h",
+ MAME_DIR .. "src/mame/video/pcd.cpp",
+ MAME_DIR .. "src/mame/video/pcd.h",
+ MAME_DIR .. "src/mame/drivers/pg685.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "slicer")
+files {
+ MAME_DIR .. "src/mame/drivers/slicer.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "snk")
+files {
+ MAME_DIR .. "src/mame/drivers/neogeocd.cpp",
+ MAME_DIR .. "src/mame/drivers/ngp.cpp",
+ MAME_DIR .. "src/mame/video/k1ge.cpp",
+ MAME_DIR .. "src/mame/video/k1ge.h",
+}
+
+createMESSProjects(_target, _subtarget, "sony")
+files {
+ MAME_DIR .. "src/mame/drivers/betacam.cpp",
+ MAME_DIR .. "src/mame/drivers/bvm.cpp",
+ MAME_DIR .. "src/mame/drivers/dfs500.cpp",
+ MAME_DIR .. "src/mame/drivers/dpsv55.cpp",
+ MAME_DIR .. "src/mame/drivers/pockstat.cpp",
+ MAME_DIR .. "src/mame/drivers/psx.cpp",
+ MAME_DIR .. "src/mame/machine/psxcd.cpp",
+ MAME_DIR .. "src/mame/machine/psxcd.h",
+ MAME_DIR .. "src/mame/drivers/pve500.cpp",
+ MAME_DIR .. "src/mame/drivers/smc777.cpp",
+ MAME_DIR .. "src/mame/drivers/ps2sony.cpp",
+ MAME_DIR .. "src/mame/drivers/umatic.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "sony_news")
+files {
+ MAME_DIR .. "src/mame/drivers/news_68k.cpp",
+ MAME_DIR .. "src/mame/drivers/news_r3k.cpp",
+ MAME_DIR .. "src/mame/drivers/news_38xx.cpp",
+ MAME_DIR .. "src/mame/machine/dmac_0448.cpp",
+ MAME_DIR .. "src/mame/machine/dmac_0448.h",
+ MAME_DIR .. "src/mame/machine/dmac_0266.cpp",
+ MAME_DIR .. "src/mame/machine/dmac_0266.h",
+ MAME_DIR .. "src/mame/machine/news_hid.cpp",
+ MAME_DIR .. "src/mame/machine/news_hid.h",
+}
+
+createMESSProjects(_target, _subtarget, "sord")
+files {
+ MAME_DIR .. "src/mame/drivers/m5.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "special")
+files {
+ MAME_DIR .. "src/mame/drivers/special.cpp",
+ MAME_DIR .. "src/mame/includes/special.h",
+ MAME_DIR .. "src/mame/audio/special.cpp",
+ MAME_DIR .. "src/mame/audio/special.h",
+ MAME_DIR .. "src/mame/machine/special.cpp",
+ MAME_DIR .. "src/mame/video/special.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "stm")
+files {
+ MAME_DIR .. "src/mame/drivers/pp.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "sun")
+files {
+ MAME_DIR .. "src/mame/drivers/sun1.cpp",
+ MAME_DIR .. "src/mame/drivers/sun2.cpp",
+ MAME_DIR .. "src/mame/drivers/sun3.cpp",
+ MAME_DIR .. "src/mame/drivers/sun3x.cpp",
+ MAME_DIR .. "src/mame/drivers/sun4.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "svi")
+files {
+ MAME_DIR .. "src/mame/drivers/svi318.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "svision")
+files {
+ MAME_DIR .. "src/mame/drivers/svision.cpp",
+ MAME_DIR .. "src/mame/includes/svision.h",
+ MAME_DIR .. "src/mame/audio/svis_snd.cpp",
+ MAME_DIR .. "src/mame/audio/svis_snd.h",
+}
+
+createMESSProjects(_target, _subtarget, "swtpc")
+files {
+ MAME_DIR .. "src/mame/drivers/swtpc.cpp",
+ MAME_DIR .. "src/mame/drivers/swtpc09.cpp",
+ MAME_DIR .. "src/mame/includes/swtpc09.h",
+ MAME_DIR .. "src/mame/machine/swtpc09.cpp",
+ MAME_DIR .. "src/mame/drivers/swtpc8212.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "synertek")
+files {
+ MAME_DIR .. "src/mame/drivers/ktm3.cpp",
+ MAME_DIR .. "src/mame/drivers/mbc020.cpp",
+ MAME_DIR .. "src/mame/drivers/sym1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ta")
+files {
+ MAME_DIR .. "src/mame/drivers/alphatpx.cpp",
+ MAME_DIR .. "src/mame/drivers/alphatpc16.cpp",
+ MAME_DIR .. "src/mame/drivers/alphatro.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tab")
+files {
+ MAME_DIR .. "src/mame/drivers/tabe22.cpp",
+ MAME_DIR .. "src/mame/machine/e22_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/e22_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "tandberg")
+files {
+ MAME_DIR .. "src/mame/drivers/tdv2324.cpp",
+ MAME_DIR .. "src/mame/includes/tdv2324.h",
+}
+
+createMESSProjects(_target, _subtarget, "tangerin")
+files {
+ MAME_DIR .. "src/mame/drivers/alphatan.cpp",
+ MAME_DIR .. "src/mame/drivers/hhtiger.cpp",
+ MAME_DIR .. "src/mame/drivers/microtan.cpp",
+ MAME_DIR .. "src/mame/includes/microtan.h",
+ MAME_DIR .. "src/mame/machine/microtan.cpp",
+ MAME_DIR .. "src/mame/video/microtan.cpp",
+ MAME_DIR .. "src/mame/drivers/oric.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tasc")
+files {
+ MAME_DIR .. "src/mame/drivers/tasc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tatung")
+files {
+ MAME_DIR .. "src/mame/drivers/einstein.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "teamconc")
+files {
+ MAME_DIR .. "src/mame/drivers/comquest.cpp",
+ MAME_DIR .. "src/mame/includes/comquest.h",
+ MAME_DIR .. "src/mame/video/comquest.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tectoy")
+files {
+ MAME_DIR .. "src/mame/drivers/pensebem.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tektroni")
+files {
+ MAME_DIR .. "src/mame/drivers/tek405x.cpp",
+ MAME_DIR .. "src/mame/includes/tek405x.h",
+ MAME_DIR .. "src/mame/drivers/tek410x.cpp",
+ MAME_DIR .. "src/mame/drivers/tek440x.cpp",
+ MAME_DIR .. "src/mame/drivers/tekigw.cpp",
+ MAME_DIR .. "src/mame/drivers/tekxp33x.cpp",
+ MAME_DIR .. "src/mame/machine/tek410x_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/tek410x_kbd.h",
+}
+
+createMESSProjects(_target, _subtarget, "telenova")
+files {
+ MAME_DIR .. "src/mame/drivers/compis.cpp",
+ MAME_DIR .. "src/mame/machine/compiskb.cpp",
+ MAME_DIR .. "src/mame/machine/compiskb.h",
+}
+
+createMESSProjects(_target, _subtarget, "telercas")
+files {
+ MAME_DIR .. "src/mame/drivers/tmc1800.cpp",
+ MAME_DIR .. "src/mame/includes/tmc1800.h",
+ MAME_DIR .. "src/mame/video/tmc1800.cpp",
+ MAME_DIR .. "src/mame/drivers/tmc600.cpp",
+ MAME_DIR .. "src/mame/includes/tmc600.h",
+ MAME_DIR .. "src/mame/video/tmc600.cpp",
+ MAME_DIR .. "src/mame/drivers/tmc2000e.cpp",
+ MAME_DIR .. "src/mame/includes/tmc2000e.h",
+}
+
+createMESSProjects(_target, _subtarget, "televideo")
+files {
+ MAME_DIR .. "src/mame/drivers/ts802.cpp",
+ MAME_DIR .. "src/mame/drivers/ts803.cpp",
+ MAME_DIR .. "src/mame/drivers/ts816.cpp",
+ MAME_DIR .. "src/mame/drivers/tv910.cpp",
+ MAME_DIR .. "src/mame/drivers/tv912.cpp",
+ MAME_DIR .. "src/mame/drivers/tv924.cpp",
+ MAME_DIR .. "src/mame/drivers/tv950.cpp",
+ MAME_DIR .. "src/mame/drivers/tv955.cpp",
+ MAME_DIR .. "src/mame/drivers/tv965.cpp",
+ MAME_DIR .. "src/mame/drivers/tv990.cpp",
+ MAME_DIR .. "src/mame/drivers/ts3000.cpp",
+ MAME_DIR .. "src/mame/machine/tv950kb.cpp",
+ MAME_DIR .. "src/mame/machine/tv950kb.h",
+ MAME_DIR .. "src/mame/machine/tv955kb.cpp",
+ MAME_DIR .. "src/mame/machine/tv955kb.h",
+}
+
+createMESSProjects(_target, _subtarget, "tesla")
+files {
+ MAME_DIR .. "src/mame/drivers/ondra.cpp",
+ MAME_DIR .. "src/mame/includes/ondra.h",
+ MAME_DIR .. "src/mame/machine/ondra.cpp",
+ MAME_DIR .. "src/mame/drivers/pmd85.cpp",
+ MAME_DIR .. "src/mame/includes/pmd85.h",
+ MAME_DIR .. "src/mame/machine/pmd85.cpp",
+ MAME_DIR .. "src/mame/drivers/pmi80.cpp",
+ MAME_DIR .. "src/mame/drivers/sapi1.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "thomson")
+files {
+ MAME_DIR .. "src/mame/drivers/thomson.cpp",
+ MAME_DIR .. "src/mame/includes/thomson.h",
+ MAME_DIR .. "src/mame/machine/thomson.cpp",
+ MAME_DIR .. "src/mame/video/thomson.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ti")
+files {
+ MAME_DIR .. "src/mame/drivers/avigo.cpp",
+ MAME_DIR .. "src/mame/includes/avigo.h",
+ MAME_DIR .. "src/mame/video/avigo.cpp",
+ MAME_DIR .. "src/mame/drivers/cc40.cpp",
+ MAME_DIR .. "src/mame/drivers/evmbug.cpp",
+ MAME_DIR .. "src/mame/drivers/exelv.cpp",
+ MAME_DIR .. "src/mame/drivers/geneve.cpp",
+ MAME_DIR .. "src/mame/drivers/hh_tms1k.cpp",
+ MAME_DIR .. "src/mame/includes/hh_tms1k.h",
+ MAME_DIR .. "src/mame/drivers/tispeak.cpp", -- subdriver of hh_tms1k
+ MAME_DIR .. "src/mame/drivers/tispellb.cpp", -- "
+ MAME_DIR .. "src/mame/drivers/ti74.cpp",
+ MAME_DIR .. "src/mame/drivers/ti85.cpp",
+ MAME_DIR .. "src/mame/includes/ti85.h",
+ MAME_DIR .. "src/mame/machine/ti85.cpp",
+ MAME_DIR .. "src/mame/video/ti85.cpp",
+ MAME_DIR .. "src/mame/drivers/ti89.cpp",
+ MAME_DIR .. "src/mame/includes/ti89.h",
+ MAME_DIR .. "src/mame/drivers/ti931.cpp",
+ MAME_DIR .. "src/mame/drivers/ti99_2.cpp",
+ MAME_DIR .. "src/mame/drivers/ti99_4x.cpp",
+ MAME_DIR .. "src/mame/drivers/ti99_4p.cpp",
+ MAME_DIR .. "src/mame/drivers/ti99_8.cpp",
+ MAME_DIR .. "src/mame/drivers/ti990_4.cpp",
+ MAME_DIR .. "src/mame/drivers/ti990_10.cpp",
+ MAME_DIR .. "src/mame/drivers/tm990189.cpp",
+ MAME_DIR .. "src/mame/video/733_asr.cpp",
+ MAME_DIR .. "src/mame/video/733_asr.h",
+ MAME_DIR .. "src/mame/video/911_vdt.cpp",
+ MAME_DIR .. "src/mame/video/911_vdt.h",
+ MAME_DIR .. "src/mame/video/911_chr.h",
+ MAME_DIR .. "src/mame/video/911_key.h",
+}
+
+createMESSProjects(_target, _subtarget, "tiger")
+files {
+ MAME_DIR .. "src/mame/drivers/gamecom.cpp",
+ MAME_DIR .. "src/mame/includes/gamecom.h",
+ MAME_DIR .. "src/mame/machine/gamecom.cpp",
+ MAME_DIR .. "src/mame/video/gamecom.cpp",
+ MAME_DIR .. "src/mame/drivers/k28.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tigertel")
+files {
+ MAME_DIR .. "src/mame/drivers/gizmondo.cpp",
+ MAME_DIR .. "src/mame/machine/docg3.cpp",
+ MAME_DIR .. "src/mame/machine/docg3.h",
+}
+
+createMESSProjects(_target, _subtarget, "tiki")
+files {
+ MAME_DIR .. "src/mame/drivers/tiki100.cpp",
+ MAME_DIR .. "src/mame/includes/tiki100.h",
+}
+
+createMESSProjects(_target, _subtarget, "tomy")
+files {
+ MAME_DIR .. "src/mame/drivers/tutor.cpp",
+ MAME_DIR .. "src/mame/drivers/tomy_princ.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "toshiba")
+files {
+ MAME_DIR .. "src/mame/drivers/pasopia.cpp",
+ MAME_DIR .. "src/mame/drivers/pasopia7.cpp",
+ MAME_DIR .. "src/mame/drivers/paso1600.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "trainer")
+files {
+ MAME_DIR .. "src/mame/drivers/amico2k.cpp",
+ MAME_DIR .. "src/mame/drivers/babbage.cpp",
+ MAME_DIR .. "src/mame/drivers/bob85.cpp",
+ MAME_DIR .. "src/mame/drivers/crei680.cpp",
+ MAME_DIR .. "src/mame/drivers/cvicny.cpp",
+ MAME_DIR .. "src/mame/drivers/datum.cpp",
+ MAME_DIR .. "src/mame/drivers/dolphunk.cpp",
+ MAME_DIR .. "src/mame/drivers/emma2.cpp",
+ MAME_DIR .. "src/mame/drivers/instruct.cpp",
+ MAME_DIR .. "src/mame/drivers/mk14.cpp",
+ MAME_DIR .. "src/mame/drivers/pro80.cpp",
+ MAME_DIR .. "src/mame/drivers/savia84.cpp",
+ MAME_DIR .. "src/mame/drivers/selz80.cpp",
+ MAME_DIR .. "src/mame/drivers/tec1.cpp",
+ MAME_DIR .. "src/mame/drivers/tk80.cpp",
+ MAME_DIR .. "src/mame/drivers/zapcomputer.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "trs")
+files {
+ MAME_DIR .. "src/mame/drivers/coco12.cpp",
+ MAME_DIR .. "src/mame/includes/coco12.h",
+ MAME_DIR .. "src/mame/drivers/coco3.cpp",
+ MAME_DIR .. "src/mame/includes/coco3.h",
+ MAME_DIR .. "src/mame/drivers/dragon.cpp",
+ MAME_DIR .. "src/mame/includes/dragon.h",
+ MAME_DIR .. "src/mame/drivers/mc10.cpp",
+ MAME_DIR .. "src/mame/machine/6883sam.cpp",
+ MAME_DIR .. "src/mame/machine/6883sam.h",
+ MAME_DIR .. "src/mame/machine/coco.cpp",
+ MAME_DIR .. "src/mame/includes/coco.h",
+ MAME_DIR .. "src/mame/machine/coco12.cpp",
+ MAME_DIR .. "src/mame/machine/coco3.cpp",
+ MAME_DIR .. "src/mame/machine/coco_vhd.cpp",
+ MAME_DIR .. "src/mame/machine/coco_vhd.h",
+ MAME_DIR .. "src/mame/machine/dragon.cpp",
+ MAME_DIR .. "src/mame/machine/dgnalpha.cpp",
+ MAME_DIR .. "src/mame/includes/dgnalpha.h",
+ MAME_DIR .. "src/mame/video/gime.cpp",
+ MAME_DIR .. "src/mame/video/gime.h",
+ MAME_DIR .. "src/mame/drivers/lnw80.cpp",
+ MAME_DIR .. "src/mame/drivers/max80.cpp",
+ MAME_DIR .. "src/mame/drivers/radionic.cpp",
+ MAME_DIR .. "src/mame/drivers/trs80.cpp",
+ MAME_DIR .. "src/mame/includes/trs80.h",
+ MAME_DIR .. "src/mame/machine/trs80.cpp",
+ MAME_DIR .. "src/mame/video/trs80.cpp",
+ MAME_DIR .. "src/mame/drivers/trs80m2.cpp",
+ MAME_DIR .. "src/mame/includes/trs80m2.h",
+ MAME_DIR .. "src/mame/machine/trs80m2kb.cpp",
+ MAME_DIR .. "src/mame/machine/trs80m2kb.h",
+ MAME_DIR .. "src/mame/drivers/trs80m3.cpp",
+ MAME_DIR .. "src/mame/includes/trs80m3.h",
+ MAME_DIR .. "src/mame/machine/trs80m3.cpp",
+ MAME_DIR .. "src/mame/video/trs80m3.cpp",
+ MAME_DIR .. "src/mame/drivers/tandy2k.cpp",
+ MAME_DIR .. "src/mame/includes/tandy2k.h",
+ MAME_DIR .. "src/mame/machine/tandy2kb.cpp",
+ MAME_DIR .. "src/mame/machine/tandy2kb.h",
+ MAME_DIR .. "src/mame/drivers/vis.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "tvgames")
+files {
+ MAME_DIR .. "src/mame/drivers/elan_ep3a19a.cpp",
+ MAME_DIR .. "src/mame/drivers/elan_eu3a14.cpp",
+ MAME_DIR .. "src/mame/drivers/elan_eu3a05.cpp",
+ MAME_DIR .. "src/mame/audio/elan_eu3a05.cpp",
+ MAME_DIR .. "src/mame/audio/elan_eu3a05.h",
+ MAME_DIR .. "src/mame/machine/elan_eu3a05gpio.cpp",
+ MAME_DIR .. "src/mame/machine/elan_eu3a05gpio.h",
+ MAME_DIR .. "src/mame/machine/elan_eu3a05commonsys.cpp",
+ MAME_DIR .. "src/mame/machine/elan_eu3a05commonsys.h",
+ MAME_DIR .. "src/mame/machine/elan_ep3a19asys.cpp",
+ MAME_DIR .. "src/mame/machine/elan_ep3a19asys.h",
+ MAME_DIR .. "src/mame/machine/elan_eu3a05sys.cpp",
+ MAME_DIR .. "src/mame/machine/elan_eu3a05sys.h",
+ MAME_DIR .. "src/mame/machine/elan_eu3a14sys.cpp",
+ MAME_DIR .. "src/mame/machine/elan_eu3a14sys.h",
+ MAME_DIR .. "src/mame/video/elan_eu3a05commonvid.cpp",
+ MAME_DIR .. "src/mame/video/elan_eu3a05commonvid.h",
+ MAME_DIR .. "src/mame/video/elan_eu3a05vid.cpp",
+ MAME_DIR .. "src/mame/video/elan_eu3a05vid.h",
+ MAME_DIR .. "src/mame/video/elan_eu3a14vid.cpp",
+ MAME_DIR .. "src/mame/video/elan_eu3a14vid.h",
+ MAME_DIR .. "src/mame/drivers/trkfldch.cpp",
+ MAME_DIR .. "src/mame/drivers/tvgame.cpp",
+ MAME_DIR .. "src/mame/drivers/spg110.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_skannerztv.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_digimake.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_jakks.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_jakks_gkr.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_jakks_sharp.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_jakks_tvtouch.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_zone.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_senca.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_senario.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_senario_poker.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_mysprtch.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_vii.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_wiwi.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_ican.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_playvision.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_shredmjr.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_telestory.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_tvgogo.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_pdc.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_dreamlife.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_lexibook.cpp",
+ MAME_DIR .. "src/mame/drivers/spg2xx_smarttv.cpp",
+ MAME_DIR .. "src/mame/includes/spg2xx.h",
+ MAME_DIR .. "src/mame/drivers/spg29x.cpp",
+ MAME_DIR .. "src/mame/machine/hyperscan_card.cpp",
+ MAME_DIR .. "src/mame/machine/hyperscan_card.h",
+ MAME_DIR .. "src/mame/machine/hyperscan_ctrl.cpp",
+ MAME_DIR .. "src/mame/machine/hyperscan_ctrl.h",
+ MAME_DIR .. "src/mame/drivers/spg29x_lexibook_jg7425.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250_rom.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250_romram.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250_nand.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250_mobigo.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250_spi.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl16250_spi_direct.cpp",
+ MAME_DIR .. "src/mame/includes/generalplus_gpl16250.h",
+ MAME_DIR .. "src/mame/includes/generalplus_gpl16250_romram.h",
+ MAME_DIR .. "src/mame/includes/generalplus_gpl16250_nand.h",
+ MAME_DIR .. "src/mame/machine/generalplus_gpl16250.cpp",
+ MAME_DIR .. "src/mame/machine/generalplus_gpl16250.h",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl32612.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl162xx_lcdtype.cpp",
+ MAME_DIR .. "src/mame/drivers/generalplus_gpl_unknown.cpp",
+ MAME_DIR .. "src/mame/drivers/xavix.cpp",
+ MAME_DIR .. "src/mame/includes/xavix.h",
+ MAME_DIR .. "src/mame/drivers/xavix_2000.cpp",
+ MAME_DIR .. "src/mame/includes/xavix_2000.h",
+ MAME_DIR .. "src/mame/drivers/xavix_2002.cpp",
+ MAME_DIR .. "src/mame/includes/xavix_2002.h",
+ MAME_DIR .. "src/mame/video/xavix.cpp",
+ MAME_DIR .. "src/mame/machine/xavix.cpp",
+ MAME_DIR .. "src/mame/audio/xavix.cpp",
+ MAME_DIR .. "src/mame/machine/xavix_mtrk_wheel.cpp",
+ MAME_DIR .. "src/mame/machine/xavix_mtrk_wheel.h",
+ MAME_DIR .. "src/mame/machine/xavix_madfb_ball.cpp",
+ MAME_DIR .. "src/mame/machine/xavix_madfb_ball.h",
+ MAME_DIR .. "src/mame/machine/xavix_io.cpp",
+ MAME_DIR .. "src/mame/machine/xavix_io.h",
+ MAME_DIR .. "src/mame/machine/xavix_adc.cpp",
+ MAME_DIR .. "src/mame/machine/xavix_adc.h",
+ MAME_DIR .. "src/mame/machine/xavix_anport.h",
+ MAME_DIR .. "src/mame/machine/xavix_anport.cpp",
+ MAME_DIR .. "src/mame/machine/xavix_math.h",
+ MAME_DIR .. "src/mame/machine/xavix_math.cpp",
+ MAME_DIR .. "src/mame/machine/xavix2002_io.cpp",
+ MAME_DIR .. "src/mame/machine/xavix2002_io.h",
+ MAME_DIR .. "src/mame/drivers/xavix2.cpp",
+ MAME_DIR .. "src/mame/drivers/titan_soc.cpp",
+ MAME_DIR .. "src/mame/drivers/st2302u_bbl_rom.cpp",
+ MAME_DIR .. "src/mame/drivers/st2302u_bbl_spi.cpp",
+ MAME_DIR .. "src/mame/video/bl_handhelds_lcdc.cpp",
+ MAME_DIR .. "src/mame/video/bl_handhelds_lcdc.h",
+ MAME_DIR .. "src/mame/drivers/actions_atj2279b.cpp",
+ MAME_DIR .. "src/mame/drivers/pubint_storyreader.cpp",
+ MAME_DIR .. "src/mame/drivers/magiceyes_pollux_vr3520f.cpp",
+ MAME_DIR .. "src/mame/drivers/monkey_king_3b.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ultimachine")
+files {
+ MAME_DIR .. "src/mame/drivers/rambo.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "ultratec")
+files {
+ MAME_DIR .. "src/mame/drivers/minicom.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "unicard")
+files {
+ MAME_DIR .. "src/mame/drivers/bbcbc.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "unisonic")
+files {
+ MAME_DIR .. "src/mame/drivers/unichamp.cpp",
+ MAME_DIR .. "src/mame/video/gic.cpp",
+ MAME_DIR .. "src/mame/video/gic.h",
+}
+
+createMESSProjects(_target, _subtarget, "unisys")
+files {
+ MAME_DIR .. "src/mame/drivers/univac.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "usp")
+files {
+ MAME_DIR .. "src/mame/drivers/patinho_feio.cpp",
+ MAME_DIR .. "src/mame/includes/patinhofeio.h",
+}
+
+createMESSProjects(_target, _subtarget, "veb")
+files {
+ MAME_DIR .. "src/mame/drivers/chessmst.cpp",
+ MAME_DIR .. "src/mame/drivers/chessmstdm.cpp",
+ MAME_DIR .. "src/mame/drivers/kc.cpp",
+ MAME_DIR .. "src/mame/includes/kc.h",
+ MAME_DIR .. "src/mame/machine/kc.cpp",
+ MAME_DIR .. "src/mame/machine/kc_keyb.cpp",
+ MAME_DIR .. "src/mame/machine/kc_keyb.h",
+ MAME_DIR .. "src/mame/video/kc.cpp",
+ MAME_DIR .. "src/mame/drivers/lc80.cpp",
+ MAME_DIR .. "src/mame/drivers/mc8020.cpp",
+ MAME_DIR .. "src/mame/drivers/mc8030.cpp",
+ MAME_DIR .. "src/mame/drivers/poly880.cpp",
+ MAME_DIR .. "src/mame/drivers/sc2.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "verifone")
+files {
+ MAME_DIR .. "src/mame/drivers/tranz330.cpp",
+ MAME_DIR .. "src/mame/includes/tranz330.h"
+}
+
+createMESSProjects(_target, _subtarget, "vidbrain")
+files {
+ MAME_DIR .. "src/mame/drivers/vidbrain.cpp",
+ MAME_DIR .. "src/mame/includes/vidbrain.h",
+ MAME_DIR .. "src/mame/video/uv201.cpp",
+ MAME_DIR .. "src/mame/video/uv201.h",
+}
+
+createMESSProjects(_target, _subtarget, "videoton")
+files {
+ MAME_DIR .. "src/mame/drivers/tvc.cpp",
+ MAME_DIR .. "src/mame/audio/tvc.cpp",
+ MAME_DIR .. "src/mame/audio/tvc.h",
+}
+
+createMESSProjects(_target, _subtarget, "visual")
+files {
+ MAME_DIR .. "src/mame/drivers/v100.cpp",
+ MAME_DIR .. "src/mame/drivers/v102.cpp",
+ MAME_DIR .. "src/mame/machine/v102_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/v102_kbd.h",
+ MAME_DIR .. "src/mame/drivers/v550.cpp",
+ MAME_DIR .. "src/mame/drivers/v1050.cpp",
+ MAME_DIR .. "src/mame/includes/v1050.h",
+ MAME_DIR .. "src/mame/machine/v1050kb.cpp",
+ MAME_DIR .. "src/mame/machine/v1050kb.h",
+ MAME_DIR .. "src/mame/video/v1050.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "votrax")
+files {
+ MAME_DIR .. "src/mame/drivers/votrhv.cpp",
+ MAME_DIR .. "src/mame/drivers/votrpss.cpp",
+ MAME_DIR .. "src/mame/drivers/votrtnt.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "vtech")
+files {
+ MAME_DIR .. "src/mame/drivers/clickstart.cpp",
+ MAME_DIR .. "src/mame/drivers/crvision.cpp",
+ MAME_DIR .. "src/mame/includes/crvision.h",
+ MAME_DIR .. "src/mame/drivers/gamemachine.cpp",
+ MAME_DIR .. "src/mame/audio/nl_gamemachine.cpp",
+ MAME_DIR .. "src/mame/audio/nl_gamemachine.h",
+ MAME_DIR .. "src/mame/drivers/geniusiq.cpp",
+ MAME_DIR .. "src/mame/drivers/geniusjr.cpp",
+ MAME_DIR .. "src/mame/drivers/gkidabc.cpp",
+ MAME_DIR .. "src/mame/drivers/glcx.cpp",
+ MAME_DIR .. "src/mame/drivers/innotv_innotabmax.cpp",
+ MAME_DIR .. "src/mame/drivers/inteladv.cpp",
+ MAME_DIR .. "src/mame/drivers/iqunlim.cpp",
+ MAME_DIR .. "src/mame/drivers/laser3k.cpp",
+ MAME_DIR .. "src/mame/drivers/lcmate2.cpp",
+ MAME_DIR .. "src/mame/drivers/pc2000.cpp",
+ MAME_DIR .. "src/mame/drivers/pc4.cpp",
+ MAME_DIR .. "src/mame/includes/pc4.h",
+ MAME_DIR .. "src/mame/video/pc4.cpp",
+ MAME_DIR .. "src/mame/drivers/prestige.cpp",
+ MAME_DIR .. "src/mame/drivers/socrates.cpp",
+ MAME_DIR .. "src/mame/audio/socrates.cpp",
+ MAME_DIR .. "src/mame/audio/socrates.h",
+ MAME_DIR .. "src/mame/drivers/storio.cpp",
+ MAME_DIR .. "src/mame/drivers/vsmile.cpp",
+ MAME_DIR .. "src/mame/includes/vsmile.h",
+ MAME_DIR .. "src/mame/drivers/vsmileb.cpp",
+ MAME_DIR .. "src/mame/drivers/vtech1.cpp",
+ MAME_DIR .. "src/mame/drivers/vtech2.cpp",
+ MAME_DIR .. "src/mame/includes/vtech2.h",
+ MAME_DIR .. "src/mame/video/vtech2.cpp",
+ MAME_DIR .. "src/mame/machine/vtech2.cpp",
+ MAME_DIR .. "src/mame/drivers/vtech_eu3a12.cpp",
+ MAME_DIR .. "src/mame/drivers/vtech_innotab.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "wang")
+files {
+ MAME_DIR .. "src/mame/drivers/wangpc.cpp",
+ MAME_DIR .. "src/devices/bus/wangpc/wangpc.h",
+ MAME_DIR .. "src/mame/machine/wangpckb.cpp",
+ MAME_DIR .. "src/mame/machine/wangpckb.h",
+}
+
+createMESSProjects(_target, _subtarget, "westinghouse")
+files {
+ MAME_DIR .. "src/mame/drivers/testconsole.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "wavemate")
+files {
+ MAME_DIR .. "src/mame/drivers/bullet.cpp",
+ MAME_DIR .. "src/mame/includes/bullet.h",
+ MAME_DIR .. "src/mame/drivers/jupiter.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "wyse")
+files {
+ MAME_DIR .. "src/mame/drivers/wy100.cpp",
+ MAME_DIR .. "src/mame/drivers/wy150.cpp",
+ MAME_DIR .. "src/mame/drivers/wy30p.cpp",
+ MAME_DIR .. "src/mame/drivers/wy50.cpp",
+ MAME_DIR .. "src/mame/drivers/wy55.cpp",
+ MAME_DIR .. "src/mame/drivers/wy60.cpp",
+ MAME_DIR .. "src/mame/drivers/wy85.cpp",
+ MAME_DIR .. "src/mame/machine/wy50kb.cpp",
+ MAME_DIR .. "src/mame/machine/wy50kb.h",
+}
+
+createMESSProjects(_target, _subtarget, "xerox")
+files {
+ MAME_DIR .. "src/mame/drivers/xerox820.cpp",
+ MAME_DIR .. "src/mame/includes/xerox820.h",
+ MAME_DIR .. "src/mame/machine/x820kb.cpp",
+ MAME_DIR .. "src/mame/machine/x820kb.h",
+ MAME_DIR .. "src/mame/drivers/bigbord2.cpp",
+ MAME_DIR .. "src/mame/drivers/alto1.cpp",
+ MAME_DIR .. "src/mame/drivers/alto2.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "xussrpc")
+files {
+ MAME_DIR .. "src/mame/drivers/ec184x.cpp",
+ MAME_DIR .. "src/mame/drivers/iskr103x.cpp",
+ MAME_DIR .. "src/mame/drivers/mc1502.cpp",
+ MAME_DIR .. "src/mame/machine/kb_7007_3.h",
+ MAME_DIR .. "src/mame/includes/mc1502.h",
+ MAME_DIR .. "src/mame/drivers/poisk1.cpp",
+ MAME_DIR .. "src/mame/machine/kb_poisk1.h",
+}
+
+createMESSProjects(_target, _subtarget, "yamaha")
+files {
+ MAME_DIR .. "src/mame/machine/mulcd.cpp",
+ MAME_DIR .. "src/mame/drivers/yman1x.cpp",
+ MAME_DIR .. "src/mame/drivers/ymdx100.cpp",
+ MAME_DIR .. "src/mame/drivers/ymdx11.cpp",
+ MAME_DIR .. "src/mame/drivers/ymmu5.cpp",
+ MAME_DIR .. "src/mame/drivers/ymmu50.cpp",
+ MAME_DIR .. "src/mame/drivers/ymmu80.cpp",
+ MAME_DIR .. "src/mame/drivers/ymmu100.cpp",
+ MAME_DIR .. "src/mame/drivers/ympsr16.cpp",
+ MAME_DIR .. "src/mame/drivers/ympsr40.cpp",
+ MAME_DIR .. "src/mame/drivers/ympsr60.cpp",
+ MAME_DIR .. "src/mame/drivers/ympsr340.cpp",
+ MAME_DIR .. "src/mame/drivers/ymsy35.cpp",
+ MAME_DIR .. "src/mame/drivers/ymtx81z.cpp",
+ MAME_DIR .. "src/mame/drivers/ymvl70.cpp",
+ MAME_DIR .. "src/mame/drivers/fb01.cpp",
+ MAME_DIR .. "src/mame/drivers/tg100.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "zenith")
+files {
+ MAME_DIR .. "src/mame/drivers/mdt60.cpp",
+ MAME_DIR .. "src/mame/drivers/z100.cpp",
+ MAME_DIR .. "src/mame/drivers/z22.cpp",
+ MAME_DIR .. "src/mame/drivers/z29.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "zpa")
+files {
+ MAME_DIR .. "src/mame/drivers/iq151.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "zvt")
+files {
+ MAME_DIR .. "src/mame/drivers/pp01.cpp",
+ MAME_DIR .. "src/mame/includes/pp01.h",
+ MAME_DIR .. "src/mame/machine/pp01.cpp",
+ MAME_DIR .. "src/mame/video/pp01.cpp",
+}
+
+createMESSProjects(_target, _subtarget, "skeleton")
+files {
+ MAME_DIR .. "src/mame/drivers/aaa.cpp",
+ MAME_DIR .. "src/mame/drivers/acd.cpp",
+ MAME_DIR .. "src/mame/drivers/aceex.cpp",
+ MAME_DIR .. "src/mame/drivers/adacp150.cpp",
+ MAME_DIR .. "src/mame/drivers/aid80f.cpp",
+ MAME_DIR .. "src/mame/drivers/alcat7100.cpp",
+ MAME_DIR .. "src/mame/drivers/alesis_qs.cpp",
+ MAME_DIR .. "src/mame/drivers/alfaskop41xx.cpp",
+ MAME_DIR .. "src/mame/drivers/alphasma.cpp",
+ MAME_DIR .. "src/mame/drivers/alphasma3k.cpp",
+ MAME_DIR .. "src/mame/drivers/am1000.cpp",
+ MAME_DIR .. "src/mame/drivers/ampex.cpp",
+ MAME_DIR .. "src/mame/drivers/ampex210.cpp",
+ MAME_DIR .. "src/mame/machine/ampex210_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/ampex210_kbd.h",
+ MAME_DIR .. "src/mame/drivers/ampscarp.cpp",
+ MAME_DIR .. "src/mame/drivers/amust.cpp",
+ MAME_DIR .. "src/mame/drivers/anzterm.cpp",
+ MAME_DIR .. "src/mame/drivers/applix.cpp",
+ MAME_DIR .. "src/mame/drivers/argox.cpp",
+ MAME_DIR .. "src/mame/drivers/attache.cpp",
+ MAME_DIR .. "src/mame/drivers/aussiebyte.cpp",
+ MAME_DIR .. "src/mame/includes/aussiebyte.h",
+ MAME_DIR .. "src/mame/video/aussiebyte.cpp",
+ MAME_DIR .. "src/mame/drivers/ax20.cpp",
+ MAME_DIR .. "src/mame/drivers/basf7100.cpp",
+ MAME_DIR .. "src/mame/machine/basf7100_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/basf7100_kbd.h",
+ MAME_DIR .. "src/mame/drivers/binbug.cpp",
+ MAME_DIR .. "src/mame/drivers/bert.cpp",
+ MAME_DIR .. "src/mame/drivers/besta.cpp",
+ MAME_DIR .. "src/mame/drivers/bitgraph.cpp",
+ MAME_DIR .. "src/mame/drivers/blit.cpp",
+ MAME_DIR .. "src/mame/drivers/bpmmicro.cpp",
+ MAME_DIR .. "src/mame/drivers/blw700i.cpp",
+ MAME_DIR .. "src/mame/drivers/br8641.cpp",
+ MAME_DIR .. "src/mame/drivers/busicom.cpp",
+ MAME_DIR .. "src/mame/includes/busicom.h",
+ MAME_DIR .. "src/mame/video/busicom.cpp",
+ MAME_DIR .. "src/mame/drivers/c2color.cpp",
+ MAME_DIR .. "src/mame/drivers/candela.cpp",
+ MAME_DIR .. "src/mame/drivers/cardinal.cpp",
+ MAME_DIR .. "src/mame/drivers/cbnt2039.cpp",
+ MAME_DIR .. "src/mame/drivers/cdsys5.cpp",
+ MAME_DIR .. "src/mame/drivers/chaos.cpp",
+ MAME_DIR .. "src/mame/drivers/cd100.cpp",
+ MAME_DIR .. "src/mame/drivers/cd2650.cpp",
+ MAME_DIR .. "src/mame/drivers/cdc721.cpp",
+ MAME_DIR .. "src/mame/drivers/cit1500.cpp",
+ MAME_DIR .. "src/mame/drivers/clxvme186.cpp",
+ MAME_DIR .. "src/mame/drivers/codata.cpp",
+ MAME_DIR .. "src/mame/drivers/consola_emt.cpp",
+ MAME_DIR .. "src/mame/drivers/controlid.cpp",
+ MAME_DIR .. "src/mame/drivers/cortex.cpp",
+ MAME_DIR .. "src/mame/drivers/cosmicos.cpp",
+ MAME_DIR .. "src/mame/includes/cosmicos.h",
+ MAME_DIR .. "src/mame/drivers/cp1.cpp",
+ MAME_DIR .. "src/mame/drivers/cxhumax.cpp",
+ MAME_DIR .. "src/mame/includes/cxhumax.h",
+ MAME_DIR .. "src/mame/drivers/ckz80.cpp",
+ MAME_DIR .. "src/mame/drivers/d400.cpp",
+ MAME_DIR .. "src/mame/drivers/d6800.cpp",
+ MAME_DIR .. "src/mame/drivers/d6809.cpp",
+ MAME_DIR .. "src/mame/drivers/daruma.cpp",
+ MAME_DIR .. "src/mame/drivers/datacast.cpp",
+ MAME_DIR .. "src/mame/drivers/design.cpp",
+ MAME_DIR .. "src/mame/drivers/dg680.cpp",
+ MAME_DIR .. "src/mame/drivers/diablo1300.cpp",
+ MAME_DIR .. "src/mame/drivers/didact.cpp",
+ MAME_DIR .. "src/mame/drivers/digel804.cpp",
+ MAME_DIR .. "src/mame/drivers/digijet.cpp",
+ MAME_DIR .. "src/mame/drivers/dim68k.cpp",
+ MAME_DIR .. "src/mame/drivers/dm7000.cpp",
+ MAME_DIR .. "src/mame/includes/dm7000.h",
+ MAME_DIR .. "src/mame/drivers/dmax8000.cpp",
+ MAME_DIR .. "src/mame/drivers/dmv.cpp",
+ MAME_DIR .. "src/mame/machine/dmv_keyb.cpp",
+ MAME_DIR .. "src/mame/machine/dmv_keyb.h",
+ MAME_DIR .. "src/mame/drivers/dps1.cpp",
+ MAME_DIR .. "src/mame/drivers/dsb46.cpp",
+ MAME_DIR .. "src/mame/drivers/dual68.cpp",
+ MAME_DIR .. "src/mame/drivers/e100.cpp",
+ MAME_DIR .. "src/mame/drivers/eacc.cpp",
+ MAME_DIR .. "src/mame/drivers/easy_karaoke.cpp",
+ MAME_DIR .. "src/mame/drivers/elwro800.cpp",
+ MAME_DIR .. "src/mame/drivers/elzet80.cpp",
+ MAME_DIR .. "src/mame/drivers/epic14e.cpp",
+ MAME_DIR .. "src/mame/drivers/esprit.cpp",
+ MAME_DIR .. "src/mame/drivers/eti660.cpp",
+ MAME_DIR .. "src/mame/drivers/eurit.cpp",
+ MAME_DIR .. "src/mame/drivers/eurocom2.cpp",
+ MAME_DIR .. "src/mame/drivers/excali64.cpp",
+ MAME_DIR .. "src/mame/drivers/facit4440.cpp",
+ MAME_DIR .. "src/mame/drivers/falco5220.cpp",
+ MAME_DIR .. "src/mame/drivers/falcots.cpp",
+ MAME_DIR .. "src/mame/drivers/fanucs15.cpp",
+ MAME_DIR .. "src/mame/drivers/fanucspmg.cpp",
+ MAME_DIR .. "src/mame/drivers/fc100.cpp",
+ MAME_DIR .. "src/mame/drivers/fk1.cpp",
+ MAME_DIR .. "src/mame/drivers/fs3216.cpp",
+ MAME_DIR .. "src/mame/drivers/ft68m.cpp",
+ MAME_DIR .. "src/mame/drivers/gameking.cpp",
+ MAME_DIR .. "src/mame/drivers/gem_rp.cpp",
+ MAME_DIR .. "src/mame/drivers/gigatron.cpp",
+ MAME_DIR .. "src/mame/drivers/gimix.cpp",
+ MAME_DIR .. "src/mame/drivers/gm1000.cpp",
+ MAME_DIR .. "src/mame/drivers/gnat10.cpp",
+ MAME_DIR .. "src/mame/drivers/goupil.cpp",
+ MAME_DIR .. "src/mame/drivers/grfd2301.cpp",
+ MAME_DIR .. "src/mame/drivers/hazeltin.cpp",
+ MAME_DIR .. "src/mame/drivers/hazl1420.cpp",
+ MAME_DIR .. "src/mame/drivers/hohnadam.cpp",
+ MAME_DIR .. "src/mame/drivers/hp3478a.cpp",
+ MAME_DIR .. "src/mame/drivers/hprot1.cpp",
+ MAME_DIR .. "src/mame/drivers/hpz80unk.cpp",
+ MAME_DIR .. "src/mame/drivers/ht68k.cpp",
+ MAME_DIR .. "src/mame/drivers/i7000.cpp",
+ MAME_DIR .. "src/mame/drivers/ibm3153.cpp",
+ MAME_DIR .. "src/mame/drivers/icatel.cpp",
+ MAME_DIR .. "src/mame/drivers/icebox.cpp",
+ MAME_DIR .. "src/mame/drivers/iez80.cpp",
+ MAME_DIR .. "src/mame/drivers/if800.cpp",
+ MAME_DIR .. "src/mame/drivers/ikt5a.cpp",
+ MAME_DIR .. "src/mame/drivers/imsai.cpp",
+ MAME_DIR .. "src/mame/drivers/indiana.cpp",
+ MAME_DIR .. "src/mame/drivers/is48x.cpp",
+ MAME_DIR .. "src/mame/drivers/itc4.cpp",
+ MAME_DIR .. "src/mame/drivers/itt1700.cpp",
+ MAME_DIR .. "src/mame/machine/itt1700_kbd.cpp",
+ MAME_DIR .. "src/mame/machine/itt1700_kbd.h",
+ MAME_DIR .. "src/mame/drivers/itt3030.cpp",
+ MAME_DIR .. "src/mame/drivers/itt9216.cpp",
+ MAME_DIR .. "src/mame/drivers/jade.cpp",
+ MAME_DIR .. "src/mame/drivers/jonos.cpp",
+ MAME_DIR .. "src/mame/drivers/juku.cpp",
+ MAME_DIR .. "src/mame/drivers/junior80.cpp",
+ MAME_DIR .. "src/mame/drivers/krokha.cpp",
+ MAME_DIR .. "src/mame/drivers/kron.cpp",
+ MAME_DIR .. "src/mame/drivers/lee1214.cpp",
+ MAME_DIR .. "src/mame/drivers/lee1220.cpp",
+ MAME_DIR .. "src/mame/drivers/learnwin.cpp",
+ MAME_DIR .. "src/mame/drivers/lft.cpp",
+ MAME_DIR .. "src/mame/drivers/lg-dvd.cpp",
+ MAME_DIR .. "src/mame/drivers/lk3000.cpp",
+ MAME_DIR .. "src/mame/drivers/lms46.cpp",
+ MAME_DIR .. "src/mame/drivers/lola8a.cpp",
+ MAME_DIR .. "src/mame/drivers/lilith.cpp",
+ MAME_DIR .. "src/mame/drivers/mccpm.cpp",
+ MAME_DIR .. "src/mame/drivers/mes.cpp",
+ MAME_DIR .. "src/mame/drivers/mfabfz.cpp",
+ MAME_DIR .. "src/mame/drivers/mice.cpp",
+ MAME_DIR .. "src/mame/drivers/micral.cpp",
+ MAME_DIR .. "src/mame/drivers/micro20.cpp",
+ MAME_DIR .. "src/mame/drivers/micromon.cpp",
+ MAME_DIR .. "src/mame/drivers/micronic.cpp",
+ MAME_DIR .. "src/mame/includes/micronic.h",
+ MAME_DIR .. "src/mame/drivers/mightyframe.cpp",
+ MAME_DIR .. "src/mame/drivers/milwaukee.cpp",
+ MAME_DIR .. "src/mame/drivers/mini2440.cpp",
+ MAME_DIR .. "src/mame/drivers/miniframe.cpp",
+ MAME_DIR .. "src/mame/drivers/minitel_2_rpic.cpp",
+ MAME_DIR .. "src/mame/drivers/miuchiz.cpp",
+ MAME_DIR .. "src/mame/drivers/ml20.cpp",
+ MAME_DIR .. "src/mame/drivers/mmd1.cpp",
+ MAME_DIR .. "src/mame/drivers/mmd2.cpp",
+ MAME_DIR .. "src/mame/drivers/mod8.cpp",
+ MAME_DIR .. "src/mame/drivers/modellot.cpp",
+ MAME_DIR .. "src/mame/drivers/molecular.cpp",
+ MAME_DIR .. "src/mame/drivers/monon_color.cpp",
+ MAME_DIR .. "src/mame/drivers/ms0515.cpp",
+ MAME_DIR .. "src/mame/drivers/ms9540.cpp",
+ MAME_DIR .. "src/mame/drivers/mstation.cpp",
+ MAME_DIR .. "src/mame/drivers/mt735.cpp",
+ MAME_DIR .. "src/mame/drivers/mtd1256.cpp",
+ MAME_DIR .. "src/mame/drivers/mx2178.cpp",
+ MAME_DIR .. "src/mame/drivers/mycom.cpp",
+ MAME_DIR .. "src/mame/drivers/myvision.cpp",
+ MAME_DIR .. "src/mame/drivers/newton.cpp",
+ MAME_DIR .. "src/mame/machine/nl_hazelvid.cpp",
+ MAME_DIR .. "src/mame/machine/nl_hazelvid.h",
+ MAME_DIR .. "src/mame/drivers/notetaker.cpp",
+ MAME_DIR .. "src/mame/drivers/ngen.cpp",
+ MAME_DIR .. "src/mame/machine/ngen_kb.cpp",
+ MAME_DIR .. "src/mame/machine/ngen_kb.h",
+ MAME_DIR .. "src/mame/drivers/onyx.cpp",
+ MAME_DIR .. "src/mame/drivers/p8k.cpp",
+ MAME_DIR .. "src/mame/drivers/pdt3100.cpp",
+ MAME_DIR .. "src/mame/drivers/pegasus.cpp",
+ MAME_DIR .. "src/mame/drivers/pencil2.cpp",
+ MAME_DIR .. "src/mame/drivers/perq.cpp",
+ MAME_DIR .. "src/mame/drivers/pes.cpp",
+ MAME_DIR .. "src/mame/drivers/picno.cpp",
+ MAME_DIR .. "src/mame/drivers/pipbug.cpp",
+ MAME_DIR .. "src/mame/drivers/plan80.cpp",
+ MAME_DIR .. "src/mame/drivers/pm68k.cpp",
+ MAME_DIR .. "src/mame/drivers/pockchal.cpp",
+ MAME_DIR .. "src/mame/drivers/powerstack.cpp",
+ MAME_DIR .. "src/mame/drivers/proteus3.cpp",
+ MAME_DIR .. "src/mame/drivers/pt68k4.cpp",
+ MAME_DIR .. "src/mame/drivers/ptcsol.cpp",
+ MAME_DIR .. "src/mame/drivers/pulsar.cpp",
+ MAME_DIR .. "src/mame/drivers/pv9234.cpp",
+ MAME_DIR .. "src/mame/drivers/pwp14.cpp",
+ MAME_DIR .. "src/mame/drivers/qtsbc.cpp",
+ MAME_DIR .. "src/mame/drivers/rd100.cpp",
+ MAME_DIR .. "src/mame/drivers/rvoice.cpp",
+ MAME_DIR .. "src/mame/drivers/sacstate.cpp",
+ MAME_DIR .. "src/mame/drivers/sartorius.cpp",
+ MAME_DIR .. "src/mame/drivers/sb8085.cpp",
+ MAME_DIR .. "src/mame/drivers/sbrain.cpp",
+ MAME_DIR .. "src/mame/drivers/seattlecmp.cpp",
+ MAME_DIR .. "src/mame/drivers/sh4robot.cpp",
+ MAME_DIR .. "src/mame/drivers/sansa_fuze.cpp",
+ MAME_DIR .. "src/mame/drivers/scopus.cpp",
+ MAME_DIR .. "src/mame/drivers/shine.cpp",
+ MAME_DIR .. "src/mame/drivers/si5500.cpp",
+ MAME_DIR .. "src/mame/drivers/sk101bl.cpp",
+ MAME_DIR .. "src/mame/drivers/slsstars.cpp",
+ MAME_DIR .. "src/mame/drivers/softbox.cpp",
+ MAME_DIR .. "src/mame/includes/softbox.h",
+ MAME_DIR .. "src/mame/drivers/squale.cpp",
+ MAME_DIR .. "src/mame/drivers/solbourne.cpp",
+ MAME_DIR .. "src/mame/drivers/swyft.cpp",
+ MAME_DIR .. "src/mame/drivers/symbolics.cpp",
+ MAME_DIR .. "src/mame/drivers/synthex.cpp",
+ MAME_DIR .. "src/mame/drivers/sys2900.cpp",
+ MAME_DIR .. "src/mame/drivers/sys9002.cpp",
+ MAME_DIR .. "src/mame/drivers/systec.cpp",
+ MAME_DIR .. "src/mame/drivers/systel1.cpp",
+ MAME_DIR .. "src/mame/drivers/tavernie.cpp",
+ MAME_DIR .. "src/mame/drivers/tecnbras.cpp",
+ MAME_DIR .. "src/mame/drivers/teleray10.cpp",
+ MAME_DIR .. "src/mame/drivers/telex1192.cpp",
+ MAME_DIR .. "src/mame/drivers/telex274.cpp",
+ MAME_DIR .. "src/mame/drivers/telex277d.cpp",
+ MAME_DIR .. "src/mame/drivers/terak.cpp",
+ MAME_DIR .. "src/mame/drivers/terco.cpp",
+ MAME_DIR .. "src/mame/drivers/terminal.cpp",
+ MAME_DIR .. "src/mame/drivers/textelcomp.cpp",
+ MAME_DIR .. "src/mame/drivers/ti630.cpp",
+ MAME_DIR .. "src/mame/drivers/tk635.cpp",
+ MAME_DIR .. "src/mame/drivers/tr175.cpp",
+ MAME_DIR .. "src/mame/drivers/trs80dt1.cpp",
+ MAME_DIR .. "src/mame/drivers/tsispch.cpp",
+ MAME_DIR .. "src/mame/drivers/tulip1.cpp",
+ MAME_DIR .. "src/mame/drivers/unistar.cpp",
+ MAME_DIR .. "src/mame/drivers/v6809.cpp",
+ MAME_DIR .. "src/mame/drivers/vanguardmk1.cpp",
+ MAME_DIR .. "src/mame/drivers/vd56sp.cpp",
+ MAME_DIR .. "src/mame/drivers/vector4.cpp",
+ MAME_DIR .. "src/mame/drivers/vectrix.cpp",
+ MAME_DIR .. "src/mame/drivers/vp60.cpp",
+ MAME_DIR .. "src/mame/includes/vp415.h",
+ MAME_DIR .. "src/mame/drivers/vp415.cpp",
+ MAME_DIR .. "src/mame/drivers/vsmilepro.cpp",
+ MAME_DIR .. "src/mame/drivers/wicat.cpp",
+ MAME_DIR .. "src/mame/drivers/xbase09.cpp",
+ MAME_DIR .. "src/mame/drivers/xor100.cpp",
+ MAME_DIR .. "src/mame/includes/xor100.h",
+ MAME_DIR .. "src/mame/drivers/zms8085.cpp",
+ MAME_DIR .. "src/mame/drivers/zorba.cpp",
+ MAME_DIR .. "src/mame/includes/zorba.h",
+ MAME_DIR .. "src/mame/machine/zorbakbd.cpp",
+ MAME_DIR .. "src/mame/machine/zorbakbd.h",
+ MAME_DIR .. "src/mame/drivers/zt8802.cpp",
+ MAME_DIR .. "src/mame/drivers/testpat.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tp1983.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tp1985.cpp",
+ MAME_DIR .. "src/mame/drivers/palestra.cpp",
+ MAME_DIR .. "src/mame/machine/nl_palestra.cpp",
+ MAME_DIR .. "src/mame/drivers/philipsbo.cpp",
+ MAME_DIR .. "src/mame/drivers/mindset.cpp",
+ MAME_DIR .. "src/mame/drivers/gs6502.cpp",
+ MAME_DIR .. "src/mame/drivers/gs6809.cpp",
+ MAME_DIR .. "src/mame/drivers/gscpm.cpp",
+ MAME_DIR .. "src/mame/drivers/gsz80.cpp",
+ MAME_DIR .. "src/mame/drivers/ultim809.cpp",
+ MAME_DIR .. "src/mame/drivers/zeebo_qualcomm_adreno130.cpp",
+}
+
+end
diff --git a/docs/release/scripts/target/mame/nl.lua b/docs/release/scripts/target/mame/nl.lua
new file mode 100644
index 00000000000..e39bf03df15
--- /dev/null
+++ b/docs/release/scripts/target/mame/nl.lua
@@ -0,0 +1,423 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- nl.lua
+--
+-- Compiles all drivers using netlist code
+-- Use make SUBTARGET=nl to build
+--
+---------------------------------------------------------------------------
+
+
+--------------------------------------------------
+-- Specify all the CPU cores necessary for the
+-- drivers referenced in nl.lst.
+--------------------------------------------------
+
+CPUS["Z80"] = true
+CPUS["M6502"] = true
+CPUS["M6800"] = true
+CPUS["M6803"] = true
+CPUS["M6809"] = true
+CPUS["MCS48"] = true
+CPUS["I8085"] = true
+CPUS["MCS51"] = true
+--CPUS["M6800"] = true
+--CPUS["M6809"] = true
+--CPUS["M680X0"] = true
+CPUS["M680X0"] = true
+--CPUS["TMS9900"] = true
+--CPUS["COP400"] = true
+CPUS["F8"] = true
+CPUS["CCPU"] = true
+
+--------------------------------------------------
+-- Specify all the sound cores necessary for the
+-- drivers referenced in nl.lst.
+--------------------------------------------------
+
+--SOUNDS["SAMPLES"] = true
+SOUNDS["DAC"] = true
+SOUNDS["DISCRETE"] = true
+SOUNDS["AY8910"] = true
+SOUNDS["MSM5205"] = true
+--SOUNDS["ASTROCADE"] = true
+SOUNDS["TMS5220"] = true
+SOUNDS["OKIM6295"] = true
+SOUNDS["UPD7759"] = true
+--SOUNDS["HC55516"] = true
+--SOUNDS["YM3812"] = true
+--SOUNDS["CEM3394"] = true
+--SOUNDS["VOTRAX"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["YM2413"] = true
+SOUNDS["BEEP"] = true
+SOUNDS["SPEAKER"] = true
+SOUNDS["DIGITALKER"] = true
+SOUNDS["SN76477"] = true
+SOUNDS["SN76496"] = true
+SOUNDS["SP0250"] = true
+SOUNDS["TMS36XX"] = true
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+VIDEOS["FIXFREQ"] = true
+VIDEOS["PWM_DISPLAY"] = true
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["INPUT_MERGER"] = true
+MACHINES["NETLIST"] = true
+MACHINES["Z80DMA"] = true
+MACHINES["Z80CTC"] = true
+MACHINES["Z80DAISY"] = true
+MACHINES["GEN_LATCH"] = true
+MACHINES["AY31015"] = true
+MACHINES["KB3600"] = true
+MACHINES["COM8116"] = true
+
+MACHINES["TTL7474"] = true
+MACHINES["TTL74145"] = true
+MACHINES["TTL74148"] = true
+MACHINES["TTL74153"] = true
+MACHINES["TTL74259"] = true
+MACHINES["6522VIA"] = true
+
+MACHINES["6821PIA"] = true
+MACHINES["I8255"] = true
+MACHINES["I8243"] = true
+MACHINES["WATCHDOG"] = true
+MACHINES["EEPROMDEV"] = true
+MACHINES["UPD4701"] = true
+MACHINES["CXD1095"] = true
+--MACHINES["TTL74148"] = true
+--MACHINES["TTL74153"] = true
+--MACHINES["TTL7474"] = true
+--MACHINES["RIOT6532"] = true
+MACHINES["PIT8253"] = true
+--MACHINES["Z80CTC"] = true
+--MACHINES["68681"] = true
+--MACHINES["BANKDEV"] = true
+MACHINES["F3853"] = true
+MACHINES["MB14241"] = true
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+
+-- not needed by nl.lua but build system wants at least one bus
+BUSES["CENTRONICS"] = true
+
+--------------------------------------------------
+-- This is the list of files that are necessary
+-- for building all of the drivers referenced
+-- in nl.lst
+--------------------------------------------------
+
+function createProjects_mame_nl(_target, _subtarget)
+ project ("mame_netlist")
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-mame-nl"))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ ext_includedir("rapidjson"),
+ }
+
+files{
+ MAME_DIR .. "src/mame/drivers/pong.cpp",
+ MAME_DIR .. "src/mame/machine/nl_pongf.cpp",
+ MAME_DIR .. "src/mame/machine/nl_pongf.h",
+ MAME_DIR .. "src/mame/machine/nl_pongdoubles.cpp",
+ MAME_DIR .. "src/mame/machine/nl_pongdoubles.h",
+ MAME_DIR .. "src/mame/machine/nl_breakout.cpp",
+ MAME_DIR .. "src/mame/machine/nl_breakout.h",
+ MAME_DIR .. "src/mame/machine/nl_rebound.cpp",
+ MAME_DIR .. "src/mame/machine/nl_rebound.h",
+ MAME_DIR .. "src/mame/machine/nl_hazelvid.cpp",
+ MAME_DIR .. "src/mame/machine/nl_hazelvid.h",
+
+ MAME_DIR .. "src/mame/drivers/atarittl.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.h",
+ MAME_DIR .. "src/mame/machine/nl_gtrak10.cpp",
+ MAME_DIR .. "src/mame/machine/nl_gtrak10.h",
+ MAME_DIR .. "src/mame/machine/nl_tank.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tank.h",
+
+ MAME_DIR .. "src/mame/audio/nl_flyball.cpp",
+ MAME_DIR .. "src/mame/audio/nl_flyball.h",
+ MAME_DIR .. "src/mame/drivers/flyball.cpp",
+
+ MAME_DIR .. "src/mame/audio/nl_destroyr.cpp",
+ MAME_DIR .. "src/mame/audio/nl_destroyr.h",
+ MAME_DIR .. "src/mame/drivers/destroyr.cpp",
+
+ MAME_DIR .. "src/mame/drivers/hazeltin.cpp",
+
+ MAME_DIR .. "src/mame/drivers/1942.cpp",
+ MAME_DIR .. "src/mame/includes/1942.h",
+ MAME_DIR .. "src/mame/video/1942.cpp",
+ MAME_DIR .. "src/mame/audio/nl_1942.cpp",
+ MAME_DIR .. "src/mame/audio/nl_1942.h",
+
+ MAME_DIR .. "src/mame/drivers/gamemachine.cpp",
+ MAME_DIR .. "src/mame/audio/nl_gamemachine.h",
+ MAME_DIR .. "src/mame/audio/nl_gamemachine.cpp",
+
+ MAME_DIR .. "src/mame/drivers/popeye.cpp",
+ MAME_DIR .. "src/mame/includes/popeye.h",
+ MAME_DIR .. "src/mame/video/popeye.cpp",
+ MAME_DIR .. "src/mame/audio/nl_popeye.cpp",
+ MAME_DIR .. "src/mame/audio/nl_popeye.h",
+
+ MAME_DIR .. "src/mame/drivers/mario.cpp",
+ MAME_DIR .. "src/mame/includes/mario.h",
+ MAME_DIR .. "src/mame/audio/nl_mario.cpp",
+ MAME_DIR .. "src/mame/audio/nl_mario.h",
+ MAME_DIR .. "src/mame/video/mario.cpp",
+ MAME_DIR .. "src/mame/audio/mario.cpp",
+
+ MAME_DIR .. "src/mame/drivers/m62.cpp",
+ MAME_DIR .. "src/mame/includes/m62.h",
+ MAME_DIR .. "src/mame/video/m62.cpp",
+ MAME_DIR .. "src/mame/audio/irem.cpp",
+ MAME_DIR .. "src/mame/audio/irem.h",
+ MAME_DIR .. "src/mame/audio/nl_kidniki.cpp",
+ MAME_DIR .. "src/mame/audio/nl_kidniki.h",
+
+ MAME_DIR .. "src/mame/machine/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/drivers/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/includes/mw8080bw.h",
+ MAME_DIR .. "src/mame/audio/mw8080bw.h",
+ MAME_DIR .. "src/mame/audio/mw8080bw.cpp",
+ MAME_DIR .. "src/mame/video/mw8080bw.cpp",
+
+ MAME_DIR .. "src/mame/audio/nl_gunfight.cpp",
+ MAME_DIR .. "src/mame/audio/nl_gunfight.h",
+ MAME_DIR .. "src/mame/audio/nl_280zzzap.cpp",
+ MAME_DIR .. "src/mame/audio/nl_280zzzap.h",
+
+ MAME_DIR .. "src/mame/drivers/sspeedr.cpp",
+ MAME_DIR .. "src/mame/includes/sspeedr.h",
+ MAME_DIR .. "src/mame/video/sspeedr.cpp",
+
+ MAME_DIR .. "src/mame/audio/nl_sspeedr.cpp",
+ MAME_DIR .. "src/mame/audio/nl_sspeedr.h",
+
+ MAME_DIR .. "src/mame/audio/cheekyms.cpp",
+ MAME_DIR .. "src/mame/audio/cheekyms.h",
+ MAME_DIR .. "src/mame/audio/nl_cheekyms.cpp",
+ MAME_DIR .. "src/mame/audio/nl_cheekyms.h",
+ MAME_DIR .. "src/mame/drivers/cheekyms.cpp",
+ MAME_DIR .. "src/mame/includes/cheekyms.h",
+ MAME_DIR .. "src/mame/video/cheekyms.cpp",
+
+ MAME_DIR .. "src/mame/drivers/cinemat.cpp",
+ MAME_DIR .. "src/mame/includes/cinemat.h",
+ MAME_DIR .. "src/mame/audio/cinemat.cpp",
+ MAME_DIR .. "src/mame/audio/cinemat.h",
+ MAME_DIR .. "src/mame/video/cinemat.cpp",
+ MAME_DIR .. "src/mame/audio/nl_armora.cpp",
+ MAME_DIR .. "src/mame/audio/nl_armora.h",
+ MAME_DIR .. "src/mame/audio/nl_barrier.cpp",
+ MAME_DIR .. "src/mame/audio/nl_barrier.h",
+ MAME_DIR .. "src/mame/audio/nl_boxingb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_boxingb.h",
+ MAME_DIR .. "src/mame/audio/nl_cinemat_common.h",
+ MAME_DIR .. "src/mame/audio/nl_ripoff.cpp",
+ MAME_DIR .. "src/mame/audio/nl_ripoff.h",
+ MAME_DIR .. "src/mame/audio/nl_solarq.cpp",
+ MAME_DIR .. "src/mame/audio/nl_solarq.h",
+ MAME_DIR .. "src/mame/audio/nl_spacewar.cpp",
+ MAME_DIR .. "src/mame/audio/nl_spacewar.h",
+ MAME_DIR .. "src/mame/audio/nl_speedfrk.cpp",
+ MAME_DIR .. "src/mame/audio/nl_speedfrk.h",
+ MAME_DIR .. "src/mame/audio/nl_starcas.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starcas.h",
+ MAME_DIR .. "src/mame/audio/nl_starhawk.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starhawk.h",
+ MAME_DIR .. "src/mame/audio/nl_sundance.cpp",
+ MAME_DIR .. "src/mame/audio/nl_sundance.h",
+ MAME_DIR .. "src/mame/audio/nl_tailg.cpp",
+ MAME_DIR .. "src/mame/audio/nl_tailg.h",
+ MAME_DIR .. "src/mame/audio/nl_warrior.cpp",
+ MAME_DIR .. "src/mame/audio/nl_warrior.h",
+
+ MAME_DIR .. "src/mame/drivers/galaxian.cpp",
+ MAME_DIR .. "src/mame/includes/galaxian.h",
+ MAME_DIR .. "src/mame/audio/galaxian.cpp",
+ MAME_DIR .. "src/mame/audio/galaxian.h",
+ MAME_DIR .. "src/mame/video/galaxian.cpp",
+ MAME_DIR .. "src/mame/audio/nl_konami.h",
+ MAME_DIR .. "src/mame/audio/nl_konami.cpp",
+
+ MAME_DIR .. "src/mame/audio/cclimber.cpp",
+ MAME_DIR .. "src/mame/audio/cclimber.h",
+
+ MAME_DIR .. "src/mame/audio/nl_zac1b11142.cpp",
+ MAME_DIR .. "src/mame/audio/nl_zacc1b11142.h",
+ MAME_DIR .. "src/mame/audio/zaccaria.cpp",
+ MAME_DIR .. "src/mame/audio/zaccaria.h",
+ MAME_DIR .. "src/mame/drivers/zaccaria.cpp",
+ MAME_DIR .. "src/mame/includes/zaccaria.h",
+ MAME_DIR .. "src/mame/video/zaccaria.cpp",
+
+ MAME_DIR .. "src/mame/drivers/cocoloco.cpp",
+ MAME_DIR .. "src/mame/audio/nl_cocoloco.h",
+ MAME_DIR .. "src/mame/audio/nl_cocoloco.cpp",
+
+ MAME_DIR .. "src/mame/drivers/palestra.cpp",
+ MAME_DIR .. "src/mame/machine/nl_palestra.cpp",
+ MAME_DIR .. "src/mame/machine/nl_palestra.h",
+
+ MAME_DIR .. "src/mame/drivers/vicdual.cpp",
+ MAME_DIR .. "src/mame/includes/vicdual.h",
+ MAME_DIR .. "src/mame/audio/vicdual.cpp",
+ MAME_DIR .. "src/mame/audio/vicdual.h",
+ MAME_DIR .. "src/mame/audio/nl_brdrline.cpp",
+ MAME_DIR .. "src/mame/audio/nl_brdrline.h",
+ MAME_DIR .. "src/mame/audio/nl_frogs.cpp",
+ MAME_DIR .. "src/mame/audio/nl_frogs.h",
+ MAME_DIR .. "src/mame/audio/vicdual-97271p.cpp",
+ MAME_DIR .. "src/mame/audio/vicdual-97271p.h",
+ MAME_DIR .. "src/mame/video/vicdual.cpp",
+ MAME_DIR .. "src/mame/video/vicdual-97269pb.cpp",
+ MAME_DIR .. "src/mame/video/vicdual-97269pb.h",
+ MAME_DIR .. "src/mame/audio/carnival.cpp",
+ MAME_DIR .. "src/mame/audio/carnival.h",
+ MAME_DIR .. "src/mame/audio/depthch.cpp",
+ MAME_DIR .. "src/mame/audio/depthch.h",
+ MAME_DIR .. "src/mame/audio/invinco.cpp",
+ MAME_DIR .. "src/mame/audio/invinco.h",
+ MAME_DIR .. "src/mame/audio/pulsar.cpp",
+ MAME_DIR .. "src/mame/audio/pulsar.h",
+
+ MAME_DIR .. "src/mame/machine/segacrpt_device.cpp",
+ MAME_DIR .. "src/mame/machine/segacrpt_device.h",
+ MAME_DIR .. "src/mame/drivers/segag80r.cpp",
+ MAME_DIR .. "src/mame/includes/segag80r.h",
+ MAME_DIR .. "src/mame/machine/segag80.cpp",
+ MAME_DIR .. "src/mame/machine/segag80.h",
+ MAME_DIR .. "src/mame/audio/segag80r.cpp",
+ MAME_DIR .. "src/mame/audio/segag80r.h",
+ MAME_DIR .. "src/mame/video/segag80r.cpp",
+ MAME_DIR .. "src/mame/drivers/segag80v.cpp",
+ MAME_DIR .. "src/mame/includes/segag80v.h",
+ MAME_DIR .. "src/mame/audio/segag80.cpp",
+ MAME_DIR .. "src/mame/audio/segag80.h",
+ MAME_DIR .. "src/mame/audio/segaspeech.cpp",
+ MAME_DIR .. "src/mame/audio/segaspeech.h",
+ MAME_DIR .. "src/mame/audio/segausb.cpp",
+ MAME_DIR .. "src/mame/audio/segausb.h",
+ MAME_DIR .. "src/mame/audio/nl_astrob.cpp",
+ MAME_DIR .. "src/mame/audio/nl_astrob.h",
+ MAME_DIR .. "src/mame/audio/nl_elim.cpp",
+ MAME_DIR .. "src/mame/audio/nl_elim.h",
+ MAME_DIR .. "src/mame/audio/nl_spacfury.cpp",
+ MAME_DIR .. "src/mame/audio/nl_spacfury.h",
+ MAME_DIR .. "src/mame/video/segag80v.cpp",
+ MAME_DIR .. "src/mame/drivers/zaxxon.cpp",
+ MAME_DIR .. "src/mame/includes/zaxxon.h",
+ MAME_DIR .. "src/mame/audio/zaxxon.cpp",
+ MAME_DIR .. "src/mame/video/zaxxon.cpp",
+
+ MAME_DIR .. "src/mame/drivers/segas16b.cpp",
+ MAME_DIR .. "src/mame/includes/segas16b.h",
+ MAME_DIR .. "src/mame/video/segas16b.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segas16b.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segas16b.h",
+ MAME_DIR .. "src/mame/audio/nl_segausb.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segausb.h",
+ MAME_DIR .. "src/mame/audio/nl_segaspeech.cpp",
+ MAME_DIR .. "src/mame/audio/nl_segaspeech.h",
+ MAME_DIR .. "src/mame/machine/315_5195.cpp",
+ MAME_DIR .. "src/mame/machine/315_5195.h",
+ MAME_DIR .. "src/mame/machine/fd1089.cpp",
+ MAME_DIR .. "src/mame/machine/fd1089.h",
+ MAME_DIR .. "src/mame/machine/fd1094.cpp",
+ MAME_DIR .. "src/mame/machine/fd1094.h",
+ MAME_DIR .. "src/mame/machine/segaic16.cpp",
+ MAME_DIR .. "src/mame/machine/segaic16.h",
+ MAME_DIR .. "src/mame/video/sega16sp.cpp",
+ MAME_DIR .. "src/mame/video/sega16sp.h",
+ MAME_DIR .. "src/mame/machine/mc8123.cpp",
+ MAME_DIR .. "src/mame/machine/mc8123.h",
+ MAME_DIR .. "src/mame/video/segaic16.cpp",
+ MAME_DIR .. "src/mame/video/segaic16.h",
+ MAME_DIR .. "src/mame/video/segaic16_road.cpp",
+ MAME_DIR .. "src/mame/video/segaic16_road.h",
+
+ MAME_DIR .. "src/mame/drivers/testpat.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tp1983.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tp1983.h",
+ MAME_DIR .. "src/mame/machine/nl_tp1985.cpp",
+ MAME_DIR .. "src/mame/machine/nl_tp1985.h",
+
+ MAME_DIR .. "src/mame/audio/nl_starcrus.h",
+ MAME_DIR .. "src/mame/audio/nl_starcrus.cpp",
+ MAME_DIR .. "src/mame/drivers/starcrus.cpp",
+ MAME_DIR .. "src/mame/includes/starcrus.h",
+ MAME_DIR .. "src/mame/video/starcrus.cpp",
+
+ MAME_DIR .. "src/mame/audio/nl_carpolo.h",
+ MAME_DIR .. "src/mame/audio/nl_carpolo.cpp",
+ MAME_DIR .. "src/mame/drivers/carpolo.cpp",
+ MAME_DIR .. "src/mame/includes/carpolo.h",
+ MAME_DIR .. "src/mame/machine/carpolo.cpp",
+ MAME_DIR .. "src/mame/video/carpolo.cpp",
+
+ MAME_DIR .. "src/mame/audio/nl_fireone.h",
+ MAME_DIR .. "src/mame/audio/nl_fireone.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starfire.h",
+ MAME_DIR .. "src/mame/audio/nl_starfire.cpp",
+ MAME_DIR .. "src/mame/drivers/starfire.cpp",
+ MAME_DIR .. "src/mame/includes/starfire.h",
+ MAME_DIR .. "src/mame/video/starfire.cpp",
+
+ MAME_DIR .. "src/mame/audio/nl_starcrus.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starcrus.h",
+ MAME_DIR .. "src/mame/drivers/starcrus.cpp",
+ MAME_DIR .. "src/mame/includes/starcrus.h",
+ MAME_DIR .. "src/mame/video/starcrus.cpp",
+
+ -- Skeletons ...
+ MAME_DIR .. "src/mame/drivers/a1supply.cpp",
+ MAME_DIR .. "src/mame/drivers/aleisttl.cpp",
+ MAME_DIR .. "src/mame/drivers/bailey.cpp",
+ MAME_DIR .. "src/mame/drivers/chicago.cpp",
+ MAME_DIR .. "src/mame/drivers/crazybal.cpp",
+ MAME_DIR .. "src/mame/drivers/electra.cpp",
+ MAME_DIR .. "src/mame/drivers/exidyttl.cpp",
+ MAME_DIR .. "src/mame/drivers/fungames.cpp",
+ MAME_DIR .. "src/mame/drivers/meadwttl.cpp",
+ MAME_DIR .. "src/mame/drivers/monacogp.cpp",
+ MAME_DIR .. "src/mame/drivers/pse.cpp",
+ MAME_DIR .. "src/mame/drivers/ramtek.cpp",
+ MAME_DIR .. "src/mame/drivers/segattl.cpp",
+ MAME_DIR .. "src/mame/drivers/taitottl.cpp",
+ MAME_DIR .. "src/mame/drivers/usbilliards.cpp",
+}
+end
+
+function linkProjects_mame_nl(_target, _subtarget)
+ links {
+ "mame_netlist",
+ }
+end
diff --git a/docs/release/scripts/target/mame/tiny.lua b/docs/release/scripts/target/mame/tiny.lua
new file mode 100644
index 00000000000..b8a977d6acc
--- /dev/null
+++ b/docs/release/scripts/target/mame/tiny.lua
@@ -0,0 +1,182 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- tiny.lua
+--
+-- Small driver-specific example makefile
+-- Use make SUBTARGET=tiny to build
+--
+---------------------------------------------------------------------------
+
+
+--------------------------------------------------
+-- Specify all the CPU cores necessary for the
+-- drivers referenced in tiny.lst.
+--------------------------------------------------
+
+CPUS["COP400"] = true
+CPUS["M6502"] = true
+CPUS["M6800"] = true
+CPUS["M6805"] = true
+CPUS["M6809"] = true
+CPUS["M680X0"] = true
+CPUS["MCS48"] = true
+CPUS["MCS51"] = true
+CPUS["TMS9900"] = true
+CPUS["Z80"] = true
+
+--------------------------------------------------
+-- Specify all the sound cores necessary for the
+-- drivers referenced in tiny.lst.
+--------------------------------------------------
+
+SOUNDS["ASTROCADE"] = true
+SOUNDS["AY8910"] = true
+SOUNDS["CEM3394"] = true
+SOUNDS["DAC"] = true
+SOUNDS["DISCRETE"] = true
+SOUNDS["HC55516"] = true
+SOUNDS["OKIM6295"] = true
+SOUNDS["SAMPLES"] = true
+SOUNDS["TMS5220"] = true
+SOUNDS["VOTRAX"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["YM3812"] = true
+
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+VIDEOS["MC6845"] = true
+
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+
+MACHINES["6821PIA"] = true
+MACHINES["68681"] = true
+MACHINES["ADC0808"] = true
+MACHINES["BANKDEV"] = true
+MACHINES["GEN_LATCH"] = true
+MACHINES["INPUT_MERGER"] = true
+MACHINES["NETLIST"] = true
+MACHINES["OUTPUT_LATCH"] = true
+MACHINES["PIT8253"] = true
+MACHINES["RIOT6532"] = true
+MACHINES["TICKET"] = true
+MACHINES["TIMEKPR"] = true
+MACHINES["TTL74148"] = true
+MACHINES["TTL74153"] = true
+MACHINES["TTL74157"] = true
+MACHINES["TTL74259"] = true
+MACHINES["TTL7474"] = true
+MACHINES["WATCHDOG"] = true
+MACHINES["Z80CTC"] = true
+MACHINES["Z80DAISY"] = true
+MACHINES["Z80PIO"] = true
+
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+
+BUSES["CENTRONICS"] = true
+
+
+--------------------------------------------------
+-- This is the list of files that are necessary
+-- for building all of the drivers referenced
+-- in tiny.lst
+--------------------------------------------------
+
+function createProjects_mame_tiny(_target, _subtarget)
+ project ("mame_tiny")
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-mame-tiny"))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+
+files{
+ MAME_DIR .. "src/mame/audio/nl_carpolo.cpp",
+ MAME_DIR .. "src/mame/audio/nl_carpolo.h",
+ MAME_DIR .. "src/mame/drivers/carpolo.cpp",
+ MAME_DIR .. "src/mame/includes/carpolo.h",
+ MAME_DIR .. "src/mame/machine/carpolo.cpp",
+ MAME_DIR .. "src/mame/video/carpolo.cpp",
+ MAME_DIR .. "src/mame/audio/circus.cpp",
+ MAME_DIR .. "src/mame/drivers/circus.cpp",
+ MAME_DIR .. "src/mame/includes/circus.h",
+ MAME_DIR .. "src/mame/video/circus.cpp",
+ MAME_DIR .. "src/mame/drivers/exidy.cpp",
+ MAME_DIR .. "src/mame/includes/exidy.h",
+ MAME_DIR .. "src/mame/audio/exidy.cpp",
+ MAME_DIR .. "src/mame/audio/exidy.h",
+ MAME_DIR .. "src/mame/audio/exidy440.cpp",
+ MAME_DIR .. "src/mame/audio/exidy440.h",
+ MAME_DIR .. "src/mame/audio/nl_fireone.h",
+ MAME_DIR .. "src/mame/audio/nl_fireone.cpp",
+ MAME_DIR .. "src/mame/audio/nl_starfire.h",
+ MAME_DIR .. "src/mame/audio/nl_starfire.cpp",
+ MAME_DIR .. "src/mame/drivers/starfire.cpp",
+ MAME_DIR .. "src/mame/includes/starfire.h",
+ MAME_DIR .. "src/mame/video/starfire.cpp",
+ MAME_DIR .. "src/mame/drivers/vertigo.cpp",
+ MAME_DIR .. "src/mame/includes/vertigo.h",
+ MAME_DIR .. "src/mame/machine/vertigo.cpp",
+ MAME_DIR .. "src/mame/video/vertigo.cpp",
+ MAME_DIR .. "src/mame/drivers/victory.cpp",
+ MAME_DIR .. "src/mame/includes/victory.h",
+ MAME_DIR .. "src/mame/video/victory.cpp",
+ MAME_DIR .. "src/mame/drivers/astrocde.cpp",
+ MAME_DIR .. "src/mame/includes/astrocde.h",
+ MAME_DIR .. "src/mame/video/astrocde.cpp",
+ MAME_DIR .. "src/mame/drivers/gridlee.cpp",
+ MAME_DIR .. "src/mame/includes/gridlee.h",
+ MAME_DIR .. "src/mame/audio/gridlee.cpp",
+ MAME_DIR .. "src/mame/video/gridlee.cpp",
+ MAME_DIR .. "src/mame/audio/s11c_bg.cpp",
+ MAME_DIR .. "src/mame/audio/s11c_bg.h",
+ MAME_DIR .. "src/mame/audio/williams.cpp",
+ MAME_DIR .. "src/mame/audio/williams.h",
+ MAME_DIR .. "src/mame/drivers/williams.cpp",
+ MAME_DIR .. "src/mame/includes/williams.h",
+ MAME_DIR .. "src/mame/machine/williams.cpp",
+ MAME_DIR .. "src/mame/video/williams.cpp",
+ MAME_DIR .. "src/mame/drivers/gaelco.cpp",
+ MAME_DIR .. "src/mame/includes/gaelco.h",
+ MAME_DIR .. "src/mame/video/gaelco.cpp",
+ MAME_DIR .. "src/mame/machine/gaelcrpt.cpp",
+ MAME_DIR .. "src/mame/drivers/wrally.cpp",
+ MAME_DIR .. "src/mame/includes/wrally.h",
+ MAME_DIR .. "src/mame/video/wrally.cpp",
+ MAME_DIR .. "src/mame/video/gaelco_wrally_sprites.cpp",
+ MAME_DIR .. "src/mame/video/gaelco_wrally_sprites.h",
+ MAME_DIR .. "src/mame/machine/gaelco_ds5002fp.cpp",
+ MAME_DIR .. "src/mame/machine/gaelco_ds5002fp.h",
+ MAME_DIR .. "src/mame/drivers/looping.cpp",
+ MAME_DIR .. "src/mame/drivers/supertnk.cpp",
+ MAME_DIR .. "src/mame/drivers/goldnpkr.cpp",
+}
+end
+
+function linkProjects_mame_tiny(_target, _subtarget)
+ links {
+ "mame_tiny",
+ }
+end
diff --git a/docs/release/scripts/target/mame/virtual.lua b/docs/release/scripts/target/mame/virtual.lua
new file mode 100644
index 00000000000..6bd3c77cc80
--- /dev/null
+++ b/docs/release/scripts/target/mame/virtual.lua
@@ -0,0 +1,142 @@
+-- license:BSD-3-Clause
+-- copyright-holders:MAMEdev Team
+
+---------------------------------------------------------------------------
+--
+-- virtual.lua
+--
+-- Virtual target makefile
+--
+---------------------------------------------------------------------------
+
+--------------------------------------------------
+-- specify available CPU cores
+--------------------------------------------------
+
+CPUS["DSP16"] = true -- for qsound
+CPUS["H6280"] = true
+CPUS["KS0164"] = true
+CPUS["M6502"] = true
+CPUS["M680X0"] = true
+CPUS["MCS48"] = true
+CPUS["SH"] = true
+CPUS["Z80"] = true
+
+--------------------------------------------------
+-- specify available sound cores; some of these are
+-- only for MAME and so aren't included
+--------------------------------------------------
+
+SOUNDS["AY8910"] = true
+SOUNDS["C140"] = true
+SOUNDS["C352"] = true
+SOUNDS["C6280"] = true
+SOUNDS["GB_SOUND"] = true
+SOUNDS["ES5503"] = true
+SOUNDS["ES5505"] = true
+SOUNDS["IREMGA20"] = true
+SOUNDS["K051649"] = true
+SOUNDS["K053260"] = true
+SOUNDS["K054539"] = true
+SOUNDS["KS0164"] = true
+SOUNDS["MULTIPCM"] = true
+SOUNDS["NES_APU"] = true
+SOUNDS["OKIM6258"] = true
+SOUNDS["OKIM6295"] = true
+SOUNDS["POKEY"] = true
+SOUNDS["QSOUND"] = true
+SOUNDS["RF5C68"] = true
+SOUNDS["SAA1099"] = true
+SOUNDS["SCSP"] = true
+SOUNDS["DAC"] = true
+SOUNDS["SEGAPCM"] = true
+SOUNDS["SN76496"] = true
+SOUNDS["UPD7759"] = true
+SOUNDS["VGMVIZ"] = true
+SOUNDS["WAVE"] = true
+SOUNDS["X1_010"] = true
+SOUNDS["Y8950"] = true
+SOUNDS["YM2154"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["YM2414"] = true
+SOUNDS["YM3806"] = true
+SOUNDS["YM2203"] = true
+SOUNDS["YM2413"] = true
+SOUNDS["YM2608"] = true
+SOUNDS["YM2610"] = true
+SOUNDS["YM2612"] = true
+SOUNDS["YM3526"] = true
+SOUNDS["YM3812"] = true
+SOUNDS["YMF262"] = true
+SOUNDS["YMF271"] = true
+SOUNDS["YMF278"] = true
+SOUNDS["YMF278B"] = true
+SOUNDS["YMZ280B"] = true
+
+--------------------------------------------------
+-- specify available video cores
+--------------------------------------------------
+
+
+--------------------------------------------------
+-- specify available machine cores
+--------------------------------------------------
+MACHINES["LDV1000"] = true
+MACHINES["LDPR8210"] = true
+MACHINES["Z80DAISY"] = true
+
+--------------------------------------------------
+-- specify available bus cores
+--------------------------------------------------
+BUSES["MIDI"] = true
+
+
+--------------------------------------------------
+-- this is the driver library that
+-- comprise the virtual drivers
+--------------------------------------------------
+function linkProjects_mame_virtual(_target, _subtarget)
+ links {
+ "virtual",
+ }
+end
+
+function createVirtualProjects(_target, _subtarget, _name)
+ project (_name)
+ targetsubdir(_target .."_" .. _subtarget)
+ kind (LIBTYPE)
+ uuid (os.uuid("drv-" .. _target .."_" .. _subtarget .. "_" .._name))
+ addprojectflags()
+ precompiledheaders_novs()
+
+ includedirs {
+ MAME_DIR .. "src/osd",
+ MAME_DIR .. "src/emu",
+ MAME_DIR .. "src/devices",
+ MAME_DIR .. "src/mame",
+ MAME_DIR .. "src/lib",
+ MAME_DIR .. "src/lib/util",
+ MAME_DIR .. "3rdparty",
+ GEN_DIR .. "mame/layout",
+ }
+
+ includedirs {
+ ext_includedir("zlib"),
+ ext_includedir("flac"),
+ }
+end
+
+function createProjects_mame_virtual(_target, _subtarget)
+ createVirtualProjects(_target, _subtarget, "virtual")
+ files {
+ MAME_DIR .. "src/mame/drivers/vgmplay.cpp",
+ MAME_DIR .. "src/mame/drivers/wavesynth.cpp",
+ MAME_DIR .. "src/mame/drivers/ldplayer.cpp",
+ MAME_DIR .. "src/mame/machine/mega32x.cpp",
+ MAME_DIR .. "src/mame/machine/mega32x.h",
+ MAME_DIR .. "src/mame/audio/vboy.cpp",
+ MAME_DIR .. "src/mame/audio/vboy.h",
+ MAME_DIR .. "src/mame/audio/wswan.cpp",
+ MAME_DIR .. "src/mame/audio/wswan.h",
+ }
+end
diff --git a/docs/release/scripts/target/zexall/zexall.lua b/docs/release/scripts/target/zexall/zexall.lua
new file mode 100644
index 00000000000..4b07b2ca061
--- /dev/null
+++ b/docs/release/scripts/target/zexall/zexall.lua
@@ -0,0 +1,15 @@
+STANDALONE = true
+
+CPUS["Z80"] = true
+
+MACHINES["Z80DAISY"] = true
+
+function standalone()
+ files{
+ MAME_DIR .. "src/zexall/main.cpp",
+ MAME_DIR .. "src/zexall/zexall.cpp",
+ MAME_DIR .. "src/zexall/zexall.h",
+ MAME_DIR .. "src/zexall/interface.h",
+ }
+end
+
diff --git a/docs/release/scripts/toolchain.lua b/docs/release/scripts/toolchain.lua
new file mode 100644
index 00000000000..5fc886e1f48
--- /dev/null
+++ b/docs/release/scripts/toolchain.lua
@@ -0,0 +1,1155 @@
+--
+-- Copyright 2010-2021 Branimir Karadzic. All rights reserved.
+-- License: https://github.com/bkaradzic/bx#license-bsd-2-clause
+--
+
+local naclToolchain = ""
+local toolchainPrefix = ""
+
+if _OPTIONS['TOOLCHAIN'] then
+ toolchainPrefix = _OPTIONS["TOOLCHAIN"]
+end
+
+newoption {
+ trigger = "gcc",
+ value = "GCC",
+ description = "Choose GCC flavor",
+ allowed = {
+ { "android-arm", "Android - ARM" },
+ { "android-arm64", "Android - ARM64" },
+ { "android-mips", "Android - MIPS" },
+ { "android-mips64","Android - MIPS64" },
+ { "android-x86", "Android - x86" },
+ { "android-x64", "Android - x64" },
+ { "asmjs", "Emscripten/asm.js" },
+ { "freebsd", "FreeBSD" },
+ { "freebsd-clang", "FreeBSD (clang compiler)"},
+ { "linux-gcc", "Linux (GCC compiler)" },
+ { "linux-clang", "Linux (Clang compiler)" },
+ { "ios-arm", "iOS - ARM" },
+ { "ios-simulator", "iOS - Simulator" },
+ { "mingw32-gcc", "MinGW32" },
+ { "mingw64-gcc", "MinGW64" },
+ { "mingw-clang", "MinGW (clang compiler)" },
+ { "netbsd", "NetBSD" },
+ { "netbsd-clang", "NetBSD (clang compiler)"},
+ { "openbsd", "OpenBSD" },
+ { "osx", "OSX (GCC compiler)" },
+ { "osx-clang", "OSX (Clang compiler)" },
+ { "pnacl", "Native Client - PNaCl" },
+ { "rpi", "RaspberryPi" },
+ { "solaris", "Solaris" },
+ { "steamlink", "Steam Link" },
+ { "ci20", "Creator-Ci20" },
+ },
+}
+
+newoption {
+ trigger = "vs",
+ value = "toolset",
+ description = "Choose VS toolset",
+ allowed = {
+ { "intel-14", "Intel C++ Compiler XE 14.0" },
+ { "intel-15", "Intel C++ Compiler XE 15.0" },
+ { "vs2015-clang", "Clang 3.6" },
+ { "vs2015-xp", "Visual Studio 2015 targeting XP" },
+ { "vs2017-clang", "Clang 3.6" },
+ { "vs2017-xp", "Visual Studio 2017 targeting XP" },
+ { "clangcl", "Visual Studio 2019 using Clang/LLVM" },
+ { "winphone8", "Windows Phone 8.0" },
+ { "winphone81", "Windows Phone 8.1" },
+ { "winstore81", "Windows Store 8.1" },
+ { "winstore82", "Universal Windows App" }
+ },
+}
+
+newoption {
+ trigger = "xcode",
+ value = "xcode_target",
+ description = "Choose XCode target",
+ allowed = {
+ { "osx", "OSX" },
+ { "ios", "iOS" },
+ }
+}
+
+newoption {
+ trigger = "with-android",
+ value = "#",
+ description = "Set Android platform version (default: android-21).",
+}
+
+newoption {
+ trigger = "with-ios",
+ value = "#",
+ description = "Set iOS target version (default: 8.0).",
+}
+
+newoption {
+ trigger = "with-windows",
+ value = "#",
+ description = "Set the Windows target platform version (default: 10.0.10240.0).",
+}
+
+function toolchain(_buildDir, _subDir)
+
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION)
+
+ local androidPlatform = "android-24"
+ if _OPTIONS["with-android"] then
+ androidPlatform = "android-" .. _OPTIONS["with-android"]
+ elseif _OPTIONS["PLATFORM"]:find("64", -2) then
+ androidPlatform = "android-24"
+ end
+
+ local iosPlatform = ""
+ if _OPTIONS["with-ios"] then
+ iosPlatform = _OPTIONS["with-ios"]
+ end
+
+ local windowsPlatform = "10.0.10240.0"
+ if _OPTIONS["with-windows"] then
+ windowsPlatform = _OPTIONS["with-windows"]
+ end
+
+ if _ACTION == "gmake" or _ACTION == "ninja" then
+
+ if nil == _OPTIONS["gcc"] or nil == _OPTIONS["gcc_version"] then
+ print("GCC flavor and version must be specified!")
+ os.exit(1)
+ end
+
+ if string.find(_OPTIONS["gcc"], "android") then
+ -- 64-bit android platform requires >= 21
+ if _OPTIONS["PLATFORM"]:find("64", -2) and tonumber(androidPlatform:sub(9)) < 21 then
+ error("64-bit android requires platform 21 or higher")
+ end
+ if not os.getenv("ANDROID_NDK_ROOT") then
+ print("Set ANDROID_NDK_ROOT environment variable.")
+ end
+ if not os.getenv("ANDROID_NDK_LLVM") then
+ print("Set ANDROID_NDK_LLVM envrionment variable.")
+ end
+ platform_ndk_env = "ANDROID_NDK_" .. _OPTIONS["PLATFORM"]:upper()
+ if not os.getenv(platform_ndk_env) then
+ print("Set " .. platform_ndk_env .. " environment variable.")
+ end
+
+ local platformToolchainMap = {
+ ['arm'] = "arm-linux-androideabi",
+ ['arm64'] = "aarch64-linux-android",
+ ['mips64'] = "mips64el-linux-android",
+ ['mips'] = "mipsel-linux-android",
+ ['x86'] = "i686-linux-android",
+ ['x64'] = "x86_64-linux-android",
+ }
+
+ toolchainPrefix = os.getenv(platform_ndk_env) .. "/bin/" .. platformToolchainMap[_OPTIONS["PLATFORM"]] .. "-"
+
+ premake.gcc.cc = "$(ANDROID_NDK_LLVM)/bin/clang"
+ premake.gcc.cxx = "$(ANDROID_NDK_LLVM)/bin/clang++"
+ premake.gcc.ar = toolchainPrefix .. "ar"
+ premake.gcc.llvm = true
+
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-" .. _OPTIONS["PLATFORM"])
+ end
+
+ if "asmjs" == _OPTIONS["gcc"] then
+
+ if not os.getenv("EMSCRIPTEN") then
+ print("Set EMSCRIPTEN enviroment variables.")
+ end
+
+ premake.gcc.cc = "$(EMSCRIPTEN)/emcc"
+ premake.gcc.cxx = "$(EMSCRIPTEN)/em++"
+ premake.gcc.ar = "$(EMSCRIPTEN)/emar"
+ premake.gcc.llvm = true
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-asmjs")
+ end
+
+ if "freebsd" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-freebsd")
+ end
+
+ if "freebsd-clang" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-freebsd-clang")
+ end
+
+ if "netbsd" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-netbsd")
+ end
+
+ if "netbsd-clang" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-netbsd-clang")
+ end
+
+ if "openbsd" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-openbsd")
+ end
+
+ if "ios-arm" == _OPTIONS["gcc"] then
+ premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+ premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+ premake.gcc.ar = "ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ios-arm")
+ end
+
+ if "ios-simulator" == _OPTIONS["gcc"] then
+ premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+ premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+ premake.gcc.ar = "ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ios-simulator")
+ end
+
+ if "linux-gcc" == _OPTIONS["gcc"] then
+ -- Force gcc-4.2 on ubuntu-intrepid
+ if _OPTIONS["distro"]=="ubuntu-intrepid" then
+ premake.gcc.cc = "@gcc -V 4.2"
+ premake.gcc.cxx = "@g++-4.2"
+ end
+ premake.gcc.ar = "ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux")
+ end
+
+ if "solaris" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-solaris")
+ end
+
+
+ if "linux-clang" == _OPTIONS["gcc"] then
+ premake.gcc.cc = "clang"
+ premake.gcc.cxx = "clang++"
+ premake.gcc.ar = "ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux-clang")
+ end
+
+ if "steamlink" == _OPTIONS["gcc"] then
+ if not os.getenv("MARVELL_SDK_PATH") then
+ print("Set MARVELL_SDK_PATH envrionment variable.")
+ end
+ premake.gcc.cc = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-gcc"
+ premake.gcc.cxx = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-g++"
+ premake.gcc.ar = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-steamlink")
+ end
+
+ if "rpi" == _OPTIONS["gcc"] then
+ if not os.getenv("RASPBERRY_SDK_PATH") then
+ print("Set RASPBERRY_SDK_PATH envrionment variable.")
+ end
+ premake.gcc.cc = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-gcc"
+ premake.gcc.cxx = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-g++"
+ premake.gcc.ar = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi")
+ end
+
+ if "ci20" == _OPTIONS["gcc"] then
+ if not os.getenv("MIPS_LINUXGNU_ROOT") then
+ print("Set MIPS_LINUXGNU_ROOT envrionment variable.")
+ end
+ premake.gcc.cc = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-gcc"
+ premake.gcc.cxx = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-g++"
+ premake.gcc.ar = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ci20")
+ end
+
+ if "mingw32-gcc" == _OPTIONS["gcc"] then
+ if not os.getenv("MINGW32") then
+ print("Set MINGW32 envrionment variable.")
+ end
+ if toolchainPrefix == nil or toolchainPrefix == "" then
+ toolchainPrefix = "$(MINGW32)/bin/i686-w64-mingw32-"
+ end
+ premake.gcc.cc = toolchainPrefix .. "gcc"
+ premake.gcc.cxx = toolchainPrefix .. "g++"
+ premake.gcc.ar = toolchainPrefix .. "gcc-ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw32-gcc")
+ end
+
+ if "mingw64-gcc" == _OPTIONS["gcc"] then
+ if not os.getenv("MINGW64") then
+ print("Set MINGW64 envrionment variable.")
+ end
+ if toolchainPrefix == nil or toolchainPrefix == "" then
+ toolchainPrefix = "$(MINGW64)/bin/x86_64-w64-mingw32-"
+ end
+ premake.gcc.cc = toolchainPrefix .. "gcc"
+ premake.gcc.cxx = toolchainPrefix .. "g++"
+ premake.gcc.ar = toolchainPrefix .. "gcc-ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw64-gcc")
+ end
+
+ if "mingw-clang" == _OPTIONS["gcc"] then
+ premake.gcc.cc = "clang"
+ premake.gcc.cxx = "clang++"
+ premake.gcc.ar = "llvm-ar"
+ premake.gcc.llvm = true
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw-clang")
+ end
+
+ if "osx" == _OPTIONS["gcc"] then
+ if os.is("linux") then
+ premake.gcc.cc = toolchainPrefix .. "clang"
+ premake.gcc.cxx = toolchainPrefix .. "clang++"
+ premake.gcc.ar = toolchainPrefix .. "ar"
+ end
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx")
+ end
+
+ if "osx-clang" == _OPTIONS["gcc"] then
+ premake.gcc.cc = toolchainPrefix .. "clang"
+ premake.gcc.cxx = toolchainPrefix .. "clang++"
+ premake.gcc.ar = toolchainPrefix .. "ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx-clang")
+ end
+
+ if "pnacl" == _OPTIONS["gcc"] then
+
+ if not os.getenv("NACL_SDK_ROOT") then
+ print("Set NACL_SDK_ROOT enviroment variables.")
+ end
+
+ naclToolchain = "$(NACL_SDK_ROOT)/toolchain/win_pnacl/bin/pnacl-"
+ if os.is("macosx") then
+ naclToolchain = "$(NACL_SDK_ROOT)/toolchain/mac_pnacl/bin/pnacl-"
+ elseif os.is("linux") then
+ naclToolchain = "$(NACL_SDK_ROOT)/toolchain/linux_pnacl/bin/pnacl-"
+ end
+
+ premake.gcc.cc = naclToolchain .. "clang"
+ premake.gcc.cxx = naclToolchain .. "clang++"
+ premake.gcc.ar = naclToolchain .. "ar"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-pnacl")
+ end
+
+ if "rpi" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi")
+ end
+
+ if "ci20" == _OPTIONS["gcc"] then
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ci20")
+ end
+ elseif _ACTION == "vs2015" or _ACTION == "vs2015-fastbuild" then
+
+ if (_ACTION .. "-clang") == _OPTIONS["vs"] then
+ premake.vstudio.toolset = ("LLVM-" .. _ACTION)
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang")
+ end
+
+ if "winphone8" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v110_wp80"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone8")
+ end
+
+ if "winphone81" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v120_wp81"
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone81")
+ end
+
+ if "winstore81" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v120"
+ premake.vstudio.storeapp = "8.1"
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore81")
+ end
+
+ if "winstore82" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v140"
+ premake.vstudio.storeapp = "8.2"
+
+ -- If needed, depending on GENie version, enable file-level configuration
+ if enablefilelevelconfig ~= nil then
+ enablefilelevelconfig()
+ end
+
+ local action = premake.action.current()
+ action.vstudio.windowsTargetPlatformVersion = windowsPlatform
+
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82")
+ end
+
+ if "intel-14" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "Intel C++ Compiler XE 14.0"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
+ end
+
+ if "intel-15" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "Intel C++ Compiler XE 15.0"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
+ end
+
+ if ("vs2015-xp") == _OPTIONS["vs"] then
+ premake.vstudio.toolset = ("v140_xp")
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp")
+ end
+ elseif _ACTION == "vs2017" or _ACTION == "vs2017-fastbuild" then
+
+ if (_ACTION .. "-clang") == _OPTIONS["vs"] then
+ premake.vstudio.toolset = ("LLVM-" .. _ACTION)
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang")
+ end
+
+ if "winphone8" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v110_wp80"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone8")
+ end
+
+ if "winphone81" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v120_wp81"
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone81")
+ end
+
+ if "winstore81" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v120"
+ premake.vstudio.storeapp = "8.1"
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore81")
+ end
+
+ if "winstore82" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v141"
+ premake.vstudio.storeapp = "8.2"
+
+ -- If needed, depending on GENie version, enable file-level configuration
+ if enablefilelevelconfig ~= nil then
+ enablefilelevelconfig()
+ end
+
+ local action = premake.action.current()
+ action.vstudio.windowsTargetPlatformVersion = windowsPlatform
+
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82")
+ end
+
+ if "intel-14" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "Intel C++ Compiler XE 14.0"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
+ end
+
+ if "intel-15" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "Intel C++ Compiler XE 15.0"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
+ end
+
+ if ("vs2017-xp") == _OPTIONS["vs"] then
+ premake.vstudio.toolset = ("v141_xp")
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp")
+ end
+ elseif _ACTION == "vs2019" or _ACTION == "vs2019-fastbuild" then
+
+ if "clangcl" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = ("ClangCL")
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang")
+ end
+
+ if "winstore82" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "v142"
+ premake.vstudio.storeapp = "10.0"
+
+ -- If needed, depending on GENie version, enable file-level configuration
+ if enablefilelevelconfig ~= nil then
+ enablefilelevelconfig()
+ end
+
+ local action = premake.action.current()
+ action.vstudio.windowsTargetPlatformVersion = windowsPlatform
+
+ platforms { "ARM" }
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82")
+ end
+
+ if "intel-15" == _OPTIONS["vs"] then
+ premake.vstudio.toolset = "Intel C++ Compiler XE 15.0"
+ location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
+ end
+ elseif _ACTION == "xcode4" then
+
+
+ if "osx" == _OPTIONS["xcode"] then
+ premake.xcode.toolset = "macosx"
+ location (path.join(_buildDir, "projects", _ACTION .. "-osx"))
+
+ elseif "ios" == _OPTIONS["xcode"] then
+ premake.xcode.toolset = "iphoneos"
+ location (path.join(_buildDir, "projects", _ACTION .. "-ios"))
+ end
+ end
+
+ if (_OPTIONS["CC"] ~= nil) then
+ premake.gcc.cc = _OPTIONS["CC"]
+ end
+ if (_OPTIONS["CXX"] ~= nil) then
+ premake.gcc.cxx = _OPTIONS["CXX"]
+ end
+ if (_OPTIONS["LD"] ~= nil) then
+ premake.gcc.ld = _OPTIONS["LD"]
+ end
+ if (_OPTIONS["AR"] ~= nil) then
+ premake.gcc.ar = _OPTIONS["AR"]
+ end
+
+ configuration {} -- reset configuration
+
+
+ configuration { "x32", "vs*" }
+ objdir (_buildDir .. _ACTION .. "/obj")
+
+ configuration { "x32", "vs*", "Release" }
+ targetdir (_buildDir .. _ACTION .. "/bin/x32/Release")
+
+ configuration { "x32", "vs*", "Debug" }
+ targetdir (_buildDir .. _ACTION .. "/bin/x32/Debug")
+
+ configuration { "x64", "vs*" }
+ defines { "_WIN64" }
+ objdir (_buildDir .. _ACTION .. "/obj")
+
+ configuration { "x64", "vs*", "Release" }
+ targetdir (_buildDir .. _ACTION .. "/bin/x64/Release")
+
+ configuration { "x64", "vs*", "Debug" }
+ targetdir (_buildDir .. _ACTION .. "/bin/x64/Debug")
+
+ configuration { "ARM", "vs*" }
+ targetdir (_buildDir .. _ACTION .. "/bin/ARM")
+ objdir (_buildDir .. _ACTION .. "/obj")
+
+ configuration { "ARM", "vs*", "Release" }
+ targetdir (_buildDir .. _ACTION .. "/bin/ARM/Release")
+
+ configuration { "ARM", "vs*", "Debug" }
+ targetdir (_buildDir .. _ACTION .. "/bin/ARM/Debug")
+
+ configuration { "x32", "vs*-clang" }
+ objdir (_buildDir .. _ACTION .. "-clang/obj")
+
+ configuration { "x32", "vs*-clang", "Release" }
+ targetdir (_buildDir .. _ACTION .. "-clang/bin/x32/Release")
+
+ configuration { "x32", "vs*-clang", "Debug" }
+ targetdir (_buildDir .. _ACTION .. "-clang/bin/x32/Debug")
+
+ configuration { "x64", "vs*-clang" }
+ objdir (_buildDir .. _ACTION .. "-clang/obj")
+
+ configuration { "x64", "vs*-clang", "Release" }
+ targetdir (_buildDir .. _ACTION .. "-clang/bin/x64/Release")
+
+ configuration { "x64", "vs*-clang", "Debug" }
+ targetdir (_buildDir .. _ACTION .. "-clang/bin/x64/Debug")
+
+ configuration { "vs*-clang" }
+ buildoptions {
+ "-Qunused-arguments",
+ }
+
+ configuration { "winphone8* or winstore8*" }
+ removeflags {
+ "StaticRuntime",
+ "NoExceptions",
+ }
+ flags {
+ "WinMain"
+ }
+
+ configuration { "mingw*" }
+ defines { "WIN32" }
+
+ configuration { "x32", "mingw32-gcc" }
+ objdir (_buildDir .. "mingw-gcc" .. "/obj")
+ buildoptions { "-m32" }
+
+ configuration { "x32", "mingw32-gcc", "Release" }
+ targetdir (_buildDir .. "mingw-gcc" .. "/bin/x32/Release")
+
+ configuration { "x32", "mingw32-gcc", "Debug" }
+ targetdir (_buildDir .. "mingw-gcc" .. "/bin/x32/Debug")
+
+ configuration { "x64", "mingw64-gcc" }
+ objdir (_buildDir .. "mingw-gcc" .. "/obj")
+ buildoptions { "-m64" }
+
+ configuration { "x64", "mingw64-gcc", "Release" }
+ targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Release")
+
+ configuration { "x64", "mingw64-gcc", "Debug" }
+ targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Debug")
+
+ configuration { "steamlink" }
+ objdir ( _buildDir .. "steamlink/obj")
+ defines {
+ "__STEAMLINK__=1", -- There is no special prefedined compiler symbol to detect SteamLink, faking it.
+ }
+ buildoptions {
+ "-marm",
+ "-mfloat-abi=hard",
+ "--sysroot=$(MARVELL_SDK_PATH)/rootfs",
+ }
+ linkoptions {
+ "-static-libgcc",
+ "-static-libstdc++",
+ "--sysroot=$(MARVELL_SDK_PATH)/rootfs",
+ }
+
+ configuration { "steamlink", "Release" }
+ targetdir (_buildDir .. "steamlink/bin/Release")
+
+ configuration { "steamlink", "Debug" }
+ targetdir (_buildDir .. "steamlink/bin/Debug")
+
+ configuration { "rpi" }
+ objdir ( _buildDir .. "rpi/obj")
+ libdirs {
+ "$(RASPBERRY_SYSROOT)/opt/vc/lib",
+ }
+ includedirs {
+ "$(RASPBERRY_SYSROOT)/opt/vc/include",
+ "$(RASPBERRY_SYSROOT)/opt/vc/include/interface/vcos/pthreads",
+ "$(RASPBERRY_SYSROOT)/opt/vc/include/interface/vmcs_host/linux",
+ }
+ defines {
+ "__VCCOREVER__=0x04000000", -- There is no special prefedined compiler symbol to detect RaspberryPi, faking it.
+ }
+ linkoptions {
+ "-Wl,--gc-sections",
+ }
+ buildoptions {
+ "--sysroot=$(RASPBERRY_SYSROOT)",
+ }
+ linkoptions {
+ "-static-libgcc",
+ "-static-libstdc++",
+ "--sysroot=$(RASPBERRY_SYSROOT)",
+ }
+
+ configuration { "rpi", "Release" }
+ targetdir (_buildDir .. "rpi/bin/Release")
+
+ configuration { "rpi", "Debug" }
+ targetdir (_buildDir .. "rpi/bin/Debug")
+
+ configuration { "ci20" }
+ objdir ( _buildDir .. "ci20/obj")
+ includedirs {
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/c++/4.9",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/mipsel-linux-gnu/c++/4.9",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/c++/4.9/backward",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9/include",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/local/include",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9/include-fixed",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/mipsel-linux-gnu",
+ "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include",
+ }
+ links {
+ "c",
+ "dl",
+ "m",
+ "gcc",
+ "stdc++",
+ "gcc_s",
+ }
+
+ buildoptions {
+ "--sysroot=$(CI20_SYSROOT)",
+ "-Wno-pragmas",
+ "-Wno-undef",
+ "-EL",
+ "-mel",
+ "-march=mips32r2",
+ "-mllsc",
+ "-mabi=32",
+ }
+ linkoptions {
+ "--sysroot=$(CI20_SYSROOT)",
+ "-Wl,-rpath=$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/mipsel-linux-gnu/",
+ "-Wl,-rpath=$(CI20_SYSROOT)/mipsel-r2-hard/lib/mipsel-linux-gnu/",
+ "-nostdlib",
+ "-EL",
+ "-mel",
+ "-march=mips32r2",
+ "-mllsc",
+ "-mabi=32",
+ "$(MIPS_LINUXGNU_ROOT)/lib/gcc/mips-mti-linux-gnu/4.9.2/mipsel-r2-hard/lib/crtbegin.o",
+ "$(MIPS_LINUXGNU_ROOT)/lib/gcc/mips-mti-linux-gnu/4.9.2/mipsel-r2-hard/lib/crtend.o",
+ "-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9",
+ "-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/mipsel-linux-gnu",
+ "-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib",
+ "-L$(CI20_SYSROOT)/mipsel-r2-hard/lib/mipsel-linux-gnu",
+ "-L$(CI20_SYSROOT)/mipsel-r2-hard/lib",
+ }
+
+ configuration { "ci20", "Release" }
+ targetdir (_buildDir .. "ci20/bin/Release")
+
+ configuration { "ci20", "Debug" }
+ targetdir (_buildDir .. "ci20/bin/Debug")
+
+ configuration { "mingw-clang" }
+ buildoptions {
+ "-femulated-tls",
+ }
+ linkoptions {
+ "-Wl,--allow-multiple-definition",
+ }
+
+ configuration { "x32", "mingw-clang" }
+ objdir ( _buildDir .. "mingw-clang/obj")
+ buildoptions { "-m32" }
+
+ configuration { "x32", "mingw-clang", "Release" }
+ targetdir (_buildDir .. "mingw-clang/bin/x32/Release")
+
+ configuration { "x32", "mingw-clang", "Debug" }
+ targetdir (_buildDir .. "mingw-clang/bin/x32/Debug")
+
+ configuration { "x64", "mingw-clang" }
+ objdir (_buildDir .. "mingw-clang/obj")
+ buildoptions { "-m64" }
+
+ configuration { "x64", "mingw-clang", "Release" }
+ targetdir (_buildDir .. "mingw-clang/bin/x64/Release")
+
+ configuration { "x64", "mingw-clang", "Debug" }
+ targetdir (_buildDir .. "mingw-clang/bin/x64/Debug")
+
+ configuration { "linux-gcc", "x32" }
+ objdir (_buildDir .. "linux_gcc" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+
+ configuration { "linux-gcc", "x32", "Release" }
+ targetdir (_buildDir .. "linux_gcc" .. "/bin/x32/Release")
+
+ configuration { "linux-gcc", "x32", "Debug" }
+ targetdir (_buildDir .. "linux_gcc" .. "/bin/x32/Debug")
+
+ configuration { "linux-gcc", "x64" }
+ objdir (_buildDir .. "linux_gcc" .. "/obj")
+ buildoptions {
+ "-m64",
+ }
+
+ configuration { "linux-gcc", "x64", "Release" }
+ targetdir (_buildDir .. "linux_gcc" .. "/bin/x64/Release")
+
+ configuration { "linux-gcc", "x64", "Debug" }
+ targetdir (_buildDir .. "linux_gcc" .. "/bin/x64/Debug")
+
+ configuration { "linux-clang", "x32" }
+ objdir (_buildDir .. "linux_clang" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+
+ configuration { "linux-clang", "x32", "Release" }
+ targetdir (_buildDir .. "linux_clang" .. "/bin/x32/Release")
+
+ configuration { "linux-clang", "x32", "Debug" }
+ targetdir (_buildDir .. "linux_clang" .. "/bin/x32/Debug")
+
+ configuration { "linux-clang", "x64" }
+ objdir (_buildDir .. "linux_clang" .. "/obj")
+ buildoptions {
+ "-m64",
+ }
+
+ configuration { "linux-clang", "x64", "Release" }
+ targetdir (_buildDir .. "linux_clang" .. "/bin/x64/Release")
+
+ configuration { "linux-clang", "x64", "Debug" }
+ targetdir (_buildDir .. "linux_clang" .. "/bin/x64/Debug")
+
+ configuration { "solaris", "x32" }
+ objdir (_buildDir .. "solaris" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+
+ configuration { "solaris", "x32", "Release" }
+ targetdir (_buildDir .. "solaris" .. "/bin/x32/Release")
+
+ configuration { "solaris", "x32", "Debug" }
+ targetdir (_buildDir .. "solaris" .. "/bin/x32/Debug")
+
+ configuration { "solaris", "x64" }
+ objdir (_buildDir .. "solaris" .. "/obj")
+ buildoptions {
+ "-m64",
+ }
+
+ configuration { "solaris", "x64", "Release" }
+ targetdir (_buildDir .. "solaris" .. "/bin/x64/Release")
+
+ configuration { "solaris", "x64", "Debug" }
+ targetdir (_buildDir .. "solaris" .. "/bin/x64/Debug")
+
+ configuration { "freebsd", "x32" }
+ objdir (_buildDir .. "freebsd" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+
+ configuration { "freebsd", "x32", "Release" }
+ targetdir (_buildDir .. "freebsd" .. "/bin/x32/Release")
+
+ configuration { "freebsd", "x32", "Debug" }
+ targetdir (_buildDir .. "freebsd" .. "/bin/x32/Debug")
+
+ configuration { "freebsd", "x64" }
+ objdir (_buildDir .. "freebsd" .. "/obj")
+ buildoptions {
+ "-m64",
+ }
+ configuration { "freebsd", "x64", "Release" }
+ targetdir (_buildDir .. "freebsd" .. "/bin/x64/Release")
+
+ configuration { "freebsd", "x64", "Debug" }
+ targetdir (_buildDir .. "freebsd" .. "/bin/x64/Debug")
+
+ configuration { "netbsd", "x32" }
+ objdir (_buildDir .. "netbsd" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+ configuration { "netbsd", "x32", "Release" }
+ targetdir (_buildDir .. "netbsd" .. "/bin/x32/Release")
+
+ configuration { "netbsd", "x32", "Debug" }
+ targetdir (_buildDir .. "netbsd" .. "/bin/x32/Debug")
+
+ configuration { "netbsd", "x64" }
+ objdir (_buildDir .. "netbsd" .. "/obj")
+ buildoptions {
+ "-m64",
+ }
+ configuration { "netbsd", "x64", "Release" }
+ targetdir (_buildDir .. "netbsd" .. "/bin/x64/Release")
+
+ configuration { "netbsd", "x64", "Debug" }
+ targetdir (_buildDir .. "netbsd" .. "/bin/x64/Debug")
+
+ configuration { "openbsd", "x32" }
+ objdir (_buildDir .. "openbsd" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+ configuration { "openbsd", "x32", "Release" }
+ targetdir (_buildDir .. "openbsd" .. "/bin/x32/Release")
+
+ configuration { "openbsd", "x32", "Debug" }
+ targetdir (_buildDir .. "openbsd" .. "/bin/x32/Debug")
+
+ configuration { "openbsd", "x64" }
+ objdir (_buildDir .. "openbsd" .. "/obj")
+ buildoptions {
+ "-m64",
+ }
+ configuration { "openbsd", "x64", "Release" }
+ targetdir (_buildDir .. "openbsd" .. "/bin/x64/Release")
+
+ configuration { "openbsd", "x64", "Debug" }
+ targetdir (_buildDir .. "openbsd" .. "/bin/x64/Debug")
+
+ configuration { "android-*", "Release" }
+ targetdir (_buildDir .. "android/bin/" .. _OPTIONS["PLATFORM"] .. "/Release")
+
+ configuration { "android-*", "Debug" }
+ targetdir (_buildDir .. "android/bin/" .. _OPTIONS["PLATFORM"] .. "/Debug")
+
+ configuration { "android-*" }
+ objdir (_buildDir .. "android/obj/" .. _OPTIONS["PLATFORM"])
+ includedirs {
+ MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
+ "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include",
+ "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/include",
+ "$(ANDROID_NDK_ROOT)/sysroot/usr/include",
+ "$(ANDROID_NDK_ROOT)/sources/android/support/include",
+ "$(ANDROID_NDK_ROOT)/sources/android/native_app_glue",
+ }
+ linkoptions {
+ "-nostdlib",
+ }
+ flags {
+ "NoImportLib",
+ }
+ links {
+ "c",
+ "dl",
+ "m",
+ "android",
+ "log",
+ "c++_static",
+ "c++abi",
+ "stdc++",
+ "gcc",
+ }
+ buildoptions_c {
+ "-Wno-strict-prototypes",
+ }
+ buildoptions {
+ "-fpic",
+ "-ffunction-sections",
+ "-funwind-tables",
+ "-fstack-protector-strong",
+ "-no-canonical-prefixes",
+ "-fno-integrated-as",
+ "-Wunused-value",
+ "-Wundef",
+ "-Wno-cast-align",
+ "-Wno-unknown-attributes",
+ "-Wno-macro-redefined",
+ "-DASIO_HAS_STD_STRING_VIEW",
+ "-Wno-unused-function",
+ }
+ linkoptions {
+ "-no-canonical-prefixes",
+ "-Wl,--no-undefined",
+ "-Wl,-z,noexecstack",
+ "-Wl,-z,relro",
+ "-Wl,-z,now",
+ }
+
+
+ configuration { "android-arm" }
+ libdirs {
+ "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib",
+ }
+ includedirs {
+ "$(ANDROID_NDK_ROOT)/sysroot/usr/include/arm-linux-androideabi",
+ }
+ buildoptions {
+ "-gcc-toolchain $(ANDROID_NDK_ARM)",
+ "-target armv7-none-linux-androideabi",
+ "-march=armv7-a",
+ "-mfloat-abi=softfp",
+ "-mfpu=vfpv3-d16",
+ "-mthumb",
+ }
+ links {
+ "unwind",
+ }
+ linkoptions {
+ "-gcc-toolchain $(ANDROID_NDK_ARM)",
+ "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtbegin_so.o",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtend_so.o",
+ "-target armv7-none-linux-androideabi",
+ "-march=armv7-a",
+ "-mthumb",
+ }
+
+ configuration { "android-arm64" }
+ libdirs {
+ "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/arm64-v8a",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib64",
+ }
+ includedirs {
+ "$(ANDROID_NDK_ROOT)/sysroot/usr/include/aarch64-linux-android",
+ }
+ buildoptions {
+ "-gcc-toolchain $(ANDROID_NDK_ARM64)",
+ "-target aarch64-none-linux-android",
+ }
+ linkoptions {
+ "-gcc-toolchain $(ANDROID_NDK_ARM64)",
+ "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib/crtbegin_so.o",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib/crtend_so.o",
+ "-target aarch64-none-linux-android",
+ }
+
+ configuration { "android-x86" }
+ libdirs {
+ "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib",
+ }
+ includedirs {
+ "$(ANDROID_NDK_ROOT)/sysroot/usr/include/i686-linux-android",
+ }
+ buildoptions {
+ "-gcc-toolchain $(ANDROID_NDK_X86)",
+ "-target i686-none-linux-android",
+ "-mssse3"
+ }
+ linkoptions {
+ "-gcc-toolchain $(ANDROID_NDK_X86)",
+ "-target i686-none-linux-android",
+ "-mssse3",
+ "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o",
+ }
+
+ configuration { "android-x64" }
+ libdirs {
+ "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86_64",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64",
+ }
+ includedirs {
+ "$(ANDROID_NDK_ROOT)/sysroot/usr/include/x86_64-linux-android",
+ }
+ buildoptions {
+ "-gcc-toolchain $(ANDROID_NDK_X64)",
+ "-target x86_64-none-linux-android",
+ }
+ linkoptions {
+ "-gcc-toolchain $(ANDROID_NDK_X64)",
+ "-target x86_64-none-linux-android",
+ "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64/crtbegin_so.o",
+ "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64/crtend_so.o",
+ }
+
+ configuration { "asmjs" }
+ targetdir (_buildDir .. "asmjs" .. "/bin")
+ objdir (_buildDir .. "asmjs" .. "/obj")
+ buildoptions {
+ "-Wno-cast-align",
+ "-Wno-tautological-compare",
+ "-Wno-self-assign-field",
+ "-Wno-format-security",
+ "-Wno-inline-new-delete",
+ "-Wno-constant-logical-operand",
+ "-Wno-absolute-value",
+ "-Wno-unknown-warning-option",
+ "-Wno-extern-c-compat",
+ }
+
+ configuration { "pnacl" }
+ buildoptions {
+ "-U__STRICT_ANSI__", -- strcasecmp, setenv, unsetenv,...
+ "-fno-stack-protector",
+ "-fdiagnostics-show-option",
+ "-fdata-sections",
+ "-ffunction-sections",
+ "-Wunused-value",
+ }
+
+ configuration { "pnacl" }
+ buildoptions {
+ "-Wno-tautological-undefined-compare",
+ "-Wno-cast-align",
+ }
+ includedirs {
+ "$(NACL_SDK_ROOT)/include",
+ "$(NACL_SDK_ROOT)/include/pnacl",
+ }
+
+ configuration { "pnacl" }
+ targetdir (_buildDir .. "pnacl" .. "/bin")
+ objdir (_buildDir .. "pnacl" .. "/obj")
+
+ configuration { "pnacl", "Debug" }
+ libdirs { "$(NACL_SDK_ROOT)/lib/pnacl/Debug" }
+
+ configuration { "pnacl", "Release" }
+ libdirs { "$(NACL_SDK_ROOT)/lib/pnacl/Release" }
+
+ configuration { "osx*", "x32", "not arm64" }
+ objdir (_buildDir .. "osx_clang" .. "/obj")
+ buildoptions {
+ "-m32",
+ }
+ configuration { "osx*", "x32", "not arm64", "Release" }
+ targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Release")
+
+ configuration { "osx*", "x32", "not arm64", "Debug" }
+ targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Debug")
+
+ configuration { "osx*", "x64", "not arm64" }
+ objdir (_buildDir .. "osx_clang" .. "/obj")
+ buildoptions {
+ "-m64", "-DHAVE_IMMINTRIN_H=1",
+ }
+
+ configuration { "osx*", "x64", "not arm64", "Release" }
+ targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Release")
+
+ configuration { "osx*", "x64", "not arm64", "Debug" }
+ targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Debug")
+
+ configuration { "osx*", "arm64" }
+ objdir (_buildDir .. "osx_clang" .. "/obj")
+ buildoptions {
+ "-m64", "-DHAVE_IMMINTRIN_H=0", "-DSDL_DISABLE_IMMINTRIN_H=1", "-DHAVE_SSE=0"
+ }
+
+ configuration { "osx*", "arm64", "Release" }
+ targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Release")
+
+ configuration { "osx*", "arm64", "Debug" }
+ targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Debug")
+
+ configuration { "ios-arm" }
+ targetdir (_buildDir .. "ios-arm" .. "/bin")
+ objdir (_buildDir .. "ios-arm" .. "/obj")
+
+ configuration { "ios-simulator" }
+ targetdir (_buildDir .. "ios-simulator" .. "/bin")
+ objdir (_buildDir .. "ios-simulator" .. "/obj")
+
+ configuration { "rpi" }
+ targetdir (_buildDir .. "rpi" .. "/bin")
+ objdir (_buildDir .. "rpi" .. "/obj")
+
+ configuration {} -- reset configuration
+
+ return true
+end
+
+function strip()
+ if _OPTIONS["STRIP_SYMBOLS"]~="1" then
+ return true
+ end
+
+ configuration { "osx-*" }
+ postbuildcommands {
+ "$(SILENT) echo Stripping symbols.",
+ "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] and toolchainPrefix) .. "strip \"$(TARGET)\"",
+ }
+
+ configuration { "android-*" }
+ postbuildcommands {
+ "$(SILENT) echo Stripping symbols.",
+ "$(SILENT) " .. toolchainPrefix .. "strip -s \"$(TARGET)\""
+ }
+
+ configuration { "linux-* or rpi" }
+ postbuildcommands {
+ "$(SILENT) echo Stripping symbols.",
+ "$(SILENT) strip -s \"$(TARGET)\""
+ }
+
+ configuration { "mingw*", "x64" }
+ postbuildcommands {
+ "$(SILENT) echo Stripping symbols.",
+ "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW64)/bin/") .. "strip -s \"$(TARGET)\"",
+ }
+ configuration { "mingw*", "x32" }
+ postbuildcommands {
+ "$(SILENT) echo Stripping symbols.",
+ "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW32)/bin/") .. "strip -s \"$(TARGET)\"",
+ }
+
+ configuration { "pnacl" }
+ postbuildcommands {
+ "$(SILENT) echo Running pnacl-finalize.",
+ "$(SILENT) " .. naclToolchain .. "finalize \"$(TARGET)\""
+ }
+
+ configuration { "asmjs" }
+ postbuildcommands {
+ "$(SILENT) echo Running asmjs finalize.",
+ "$(SILENT) $(EMSCRIPTEN)/emcc -O2 -s TOTAL_MEMORY=268435456 \"$(TARGET)\" -o \"$(TARGET)\".html"
+ -- ALLOW_MEMORY_GROWTH
+ }
+
+ configuration {} -- reset configuration
+end
+
diff --git a/docs/release/scripts/xslt/list-bios.xslt b/docs/release/scripts/xslt/list-bios.xslt
new file mode 100644
index 00000000000..5cc88839c05
--- /dev/null
+++ b/docs/release/scripts/xslt/list-bios.xslt
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Prints BIOS options for machines and devices that have them.
+
+$ ./mamed -listxml osborne1 saturn | xsltproc scripts/xslt/list-bios.xslt -
+osborne1 Osborne-1
+ vera BIOS version A
+ ver12 BIOS version 1.2
+ ver121 BIOS version 1.2.1
+ ver13 BIOS version 1.3
+ ver14 BIOS version 1.4
+ ver143 BIOS version 1.43
+ *ver144 BIOS version 1.44
+saturn Saturn (USA)
+ 101a Overseas v1.01a (941115)
+ 100a Overseas v1.00a (941115)
+satcdb Saturn CDB (CD Block)
+ *cdb106 Saturn CD Block 1.06
+ cdb105 Saturn CD Block 1.05
+ ygr022 Saturn CD Block (YGR022 315-5962)
+ie15_terminal IE15 Terminal
+ *5chip 5-chip firmware (newer)
+ 6chip 6-chip firmware (older)
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text" omit-xml-declaration="yes" indent="no" />
+ <xsl:template match="/">
+ <xsl:for-each select="mame/machine[biosset]">
+ <xsl:value-of select="concat(substring(concat(@name, ' '), 1, 16), ' ' , description, '&#xA;')" />
+ <xsl:for-each select="biosset">
+ <xsl:choose>
+ <xsl:when test="@default='yes'">
+ <xsl:value-of select="' *'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="' '" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="concat(substring(concat(@name, ' '), 1, 16), ' ' , @description, '&#xA;')" />
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/docs/release/scripts/xslt/list-runnable-tree.xslt b/docs/release/scripts/xslt/list-runnable-tree.xslt
new file mode 100644
index 00000000000..d9f5e7d8222
--- /dev/null
+++ b/docs/release/scripts/xslt/list-runnable-tree.xslt
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Prints a tree of runnable machines, excluding non-runnable devices.
+
+Clones are indented below parents. May be slow for full builds.
+
+$ ./build/linux_clang/bin/x64/Debug/test64d -listxml | xsltproc scripts/xslt/list-runnable-tree.xslt -
+bluehawk Blue Hawk
+ bluehawkn Blue Hawk (NTC)
+flytiger Flying Tiger (set 1)
+ flytigera Flying Tiger (set 2)
+gulfstrm Gulf Storm (set 1)
+ gulfstrma Gulf Storm (set 2)
+ gulfstrmb Gulf Storm (set 3)
+ gulfstrmk Gulf Storm (Korea)
+ gulfstrmm Gulf Storm (Media Shoji)
+gundl94 Gun Dealer '94
+ primella Primella
+intlc44 INTELLEC 4/MOD 4
+intlc440 INTELLEC 4/MOD 40
+lastday The Last Day (set 1)
+ ddaydoo Chulgyeok D-Day (Korea)
+ lastdaya The Last Day (set 2)
+pollux Pollux (set 1)
+ polluxa Pollux (set 2)
+ polluxa2 Pollux (set 3)
+ polluxn Pollux (Japan, NTC license, distributed by Atlus)
+popbingo Pop Bingo
+rshark R-Shark
+sadari Sadari
+superx Super-X (NTC)
+ superxm Super-X (Mitchell)
+thehand The Hand
+ gotya Got-Ya (12/24/1981)
+whousetc Test Console Serial #5
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text" omit-xml-declaration="yes" indent="no" />
+ <xsl:template match="/">
+ <xsl:for-each select="mame/machine[(@runnable!='no') and not(@cloneof)]">
+ <xsl:variable name="parent" select="@name" />
+ <xsl:value-of select="concat(substring(concat(@name, ' '), 1, 16), ' ' , description, '&#xA;')" />
+ <xsl:for-each select="../machine[(@runnable!='no') and (@cloneof=$parent)]">
+ <xsl:value-of select="concat(' ', substring(concat(@name, ' '), 1, 16), ' ' , description, '&#xA;')" />
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/docs/release/scripts/xslt/list-runnable.xslt b/docs/release/scripts/xslt/list-runnable.xslt
new file mode 100644
index 00000000000..685c13c93e6
--- /dev/null
+++ b/docs/release/scripts/xslt/list-runnable.xslt
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Prints a table of runnable machines, excluding non-runnable devices.
+
+Useful for finding out exactly what systems are available in a custom
+subtarget build using a small selection of driver sources.
+
+$ ./build/linux_clang/bin/x64/Debug/test64d -listxml | xsltproc scripts/xslt/list-runnable.xslt -
+bluehawk Blue Hawk
+bluehawkn Blue Hawk (NTC)
+ddaydoo Chulgyeok D-Day (Korea)
+flytiger Flying Tiger (set 1)
+flytigera Flying Tiger (set 2)
+gotya Got-Ya (12/24/1981)
+gulfstrm Gulf Storm (set 1)
+gulfstrma Gulf Storm (set 2)
+gulfstrmb Gulf Storm (set 3)
+gulfstrmk Gulf Storm (Korea)
+gulfstrmm Gulf Storm (Media Shoji)
+gundl94 Gun Dealer '94
+intlc44 INTELLEC 4/MOD 4
+intlc440 INTELLEC 4/MOD 40
+lastday The Last Day (set 1)
+lastdaya The Last Day (set 2)
+pollux Pollux (set 1)
+polluxa Pollux (set 2)
+polluxa2 Pollux (set 3)
+polluxn Pollux (Japan, NTC license, distributed by Atlus)
+popbingo Pop Bingo
+primella Primella
+rshark R-Shark
+sadari Sadari
+superx Super-X (NTC)
+superxm Super-X (Mitchell)
+thehand The Hand
+whousetc Test Console Serial #5
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text" omit-xml-declaration="yes" indent="no" />
+ <xsl:template match="/">
+ <xsl:for-each select="mame/machine[@runnable!='no']">
+ <xsl:value-of select="concat(substring(concat(@name, ' '), 1, 16), ' ' , description, '&#xA;')" />
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>