123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # Defines the building blocks of openMSX and their dependencies.
- class Component(object):
- niceName = None
- makeName = None
- dependsOn = None
- @classmethod
- def canBuild(cls, probeVars):
- return all(
- probeVars.get('HAVE_%s_H' % makeName) and
- probeVars.get('HAVE_%s_LIB' % makeName)
- for makeName in cls.dependsOn
- )
- class EmulationCore(Component):
- niceName = 'Emulation core'
- makeName = 'CORE'
- dependsOn = ('SDL2', 'SDL2_TTF', 'PNG', 'TCL', 'ZLIB')
- class GLRenderer(Component):
- niceName = 'GL renderer'
- makeName = 'GL'
- dependsOn = ('GL', 'GLEW')
- class Laserdisc(Component):
- niceName = 'Laserdisc'
- makeName = 'LASERDISC'
- dependsOn = ('OGG', 'VORBIS', 'THEORA')
- class ALSAMIDI(Component):
- niceName = 'ALSA MIDI'
- makeName = 'ALSAMIDI'
- dependsOn = ('ALSA', )
- def iterComponents():
- '''Iterates through all components of openMSX.
- '''
- yield EmulationCore
- yield GLRenderer
- yield Laserdisc
- yield ALSAMIDI
- def iterBuildableComponents(probeVars):
- '''Iterates through those components of openMSX that can be built
- on the probed system.
- '''
- for component in iterComponents():
- if component.canBuild(probeVars):
- yield component
- def requiredLibrariesFor(components):
- '''Compute the library packages required to build the given components.
- Only the direct dependencies from openMSX are included, not dependencies
- between libraries.
- Returns a set of Make names.
- '''
- return set(
- makeName
- for comp in components
- for makeName in comp.dependsOn
- )
|