def __call__(self, sched_ctx): self.result = 1 from wonderbuild.script import ScriptLoaderTask, default_script_file script = self.project.top_src_dir / default_script_file if script.exists: script_loader_task = ScriptLoaderTask.shared(self.project, script) for x in sched_ctx.parallel_wait(script_loader_task): yield x if 'help' not in options: option_collector.consolidate_known_options() usage_error = not validate_options(options, option_collector.known_options) else: usage_error = False else: usage_error = 'help' not in options if usage_error: print >> sys.stderr, 'wonderbuild: error: no ' + script.path + ' found' option_collector.consolidate_known_options() if usage_error or 'help' in options: option_collector.help['help'] = (None, 'show this help and exit') option_collector.help['version'] = (None, 'show the version of this tool and exit') option_collector.consolidate_help() print_help(option_collector.help, out, cols) self.result = usage_error and 1 or 0 return self.project.task_aliases['default'] = script_loader_task.script_task.default_tasks for x in sched_ctx.parallel_wait(self.project): yield x self.result = 0
def __call__(self, sched_ctx): tasks = [ ScriptLoaderTask.shared(self.project, self.src_dir.parent.parent / dir) \ for dir in ( # Note that there's no need to list dependencies (e.g. psycle-core, psycle-helpers etc) since those are pulled automatically 'psycle-player', 'psycle-plugins' ) ] for x in sched_ctx.parallel_wait(*tasks): yield x for t in tasks: self.default_tasks += t.script_task.default_tasks
def __call__(self, sched_ctx): tasks = [ ScriptLoaderTask.shared(self.project, self.src_dir / dir) \ for dir in ( 'static-shared', 'pre-compiled', 'parallel', 'task-decorator' ) ] for x in sched_ctx.parallel_wait(*tasks): yield x for t in tasks: self.default_tasks += t.script_task.default_tasks
def __call__(self, sched_ctx): project = self.project top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' common = ScriptLoaderTask.shared( project, top_src_dir / 'build-systems' / 'wonderbuild' / 'wonderbuild_script_common') for x in sched_ctx.parallel_wait(common): yield x self._common = common = common.script_task cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import ModTask from wonderbuild.install import InstallTask class DiversalisMod(ModTask): def __init__(self): name = 'diversalis' ModTask.__init__(self, name, ModTask.Kinds.HEADERS, cfg, cxx_phase=self.__class__.InstallHeaders( project, name + '-headers')) class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [self.trim_prefix / 'diversalis.hpp'] + \ list((self.trim_prefix / 'diversalis').find_iter( in_pats = ('*.hpp',), ex_pats = ('*.private.hpp',), prune_pats = ('todo',))) return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) self._mod_dep_phases = mod_dep_phases = DiversalisMod() common.pch.private_deps.append(mod_dep_phases) self.default_tasks = [mod_dep_phases.cxx_phase]
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' core = ScriptLoaderTask.shared(self.project, top_src_dir / 'psycle-core') for x in sched_ctx.parallel_wait(core): yield x core = core.script_task self._common = common = core.common core = core.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() xml = PkgConfigCheckTask.shared(check_cfg, ['libxml++-2.6']) class PlayerMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-player', ModTask.Kinds.PROG, cfg) def do_set_deps(self, sched_ctx): self.private_deps = [pch.prog_task, core] req = self.all_deps opt = [xml] for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.private_deps += [o for o in opt if o] def do_mod_phase(self): self.cfg.defines[ 'UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name + '"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 if xml: self.cfg.defines['PSYCLE__LIBXMLPP_AVAILABLE'] = None self.cfg.include_paths.appendleft(src_dir) for s in (src_dir / 'psycle' / 'player').find_iter( in_pats=('*.cpp', ), prune_pats=('todo', )): self.sources.append(s) player = PlayerMod() self.default_tasks.append(player.mod_phase)
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / "src" core = ScriptLoaderTask.shared(self.project, top_src_dir / "psycle-core") for x in sched_ctx.parallel_wait(core): yield x core = core.script_task self._common = common = core.common core = core.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() xml = PkgConfigCheckTask.shared(check_cfg, ["libxml++-2.6"]) class PlayerMod(ModTask): def __init__(self): ModTask.__init__(self, "psycle-player", ModTask.Kinds.PROG, cfg) def do_set_deps(self, sched_ctx): self.private_deps = [pch.prog_task, core] req = self.all_deps opt = [xml] for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.private_deps += [o for o in opt if o] def do_mod_phase(self): self.cfg.defines["UNIVERSALIS__META__MODULE__NAME"] = '"' + self.name + '"' self.cfg.defines["UNIVERSALIS__META__MODULE__VERSION"] = 0 if xml: self.cfg.defines["PSYCLE__LIBXMLPP_AVAILABLE"] = None self.cfg.include_paths.appendleft(src_dir) for s in (src_dir / "psycle" / "player").find_iter(in_pats=("*.cpp",), prune_pats=("todo",)): self.sources.append(s) player = PlayerMod() self.default_tasks.append(player.mod_phase)
def __call__(self, sched_ctx): project = self.project top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' common = ScriptLoaderTask.shared(project, top_src_dir / 'build-systems' / 'wonderbuild' / 'wonderbuild_script_common') for x in sched_ctx.parallel_wait(common): yield x self._common = common = common.script_task cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import ModTask from wonderbuild.install import InstallTask class DiversalisMod(ModTask): def __init__(self): name = 'diversalis' ModTask.__init__(self, name, ModTask.Kinds.HEADERS, cfg, cxx_phase=self.__class__.InstallHeaders(project, name + '-headers')) class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [self.trim_prefix / 'diversalis.hpp'] + \ list((self.trim_prefix / 'diversalis').find_iter( in_pats = ('*.hpp',), ex_pats = ('*.private.hpp',), prune_pats = ('todo',))) return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) self._mod_dep_phases = mod_dep_phases = DiversalisMod() common.pch.private_deps.append(mod_dep_phases) self.default_tasks = [mod_dep_phases.cxx_phase]
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' default_tasks = self.default_tasks helpers = ScriptLoaderTask.shared(self.project, top_src_dir / 'psycle-helpers') for x in sched_ctx.parallel_wait(helpers): yield x helpers = helpers.script_task self._common = common = helpers.common helpers = helpers.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.std_checks.winmm import WinMMCheckTask from wonderbuild.std_checks.dsound import DSoundCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() gstreamer = PkgConfigCheckTask.shared(check_cfg, ['gstreamer-0.10']) jack = PkgConfigCheckTask.shared(check_cfg, ['jack >= 0.101.1']) alsa = PkgConfigCheckTask.shared(check_cfg, ['alsa >= 1.0']) esound = PkgConfigCheckTask.shared(check_cfg, ['esound']) dsound = DSoundCheckTask.shared(check_cfg) winmm = WinMMCheckTask.shared(check_cfg) for x in sched_ctx.parallel_wait(gstreamer, jack, alsa, esound, dsound, winmm): yield x class UniformMod(ModTask): def __init__(self, name, path, deps=None, kind=ModTask.Kinds.LOADABLE): ModTask.__init__(self, name, kind, cfg) self.path = path if deps is not None: self.public_deps += deps if kind in (ModTask.Kinds.PROG, ModTask.Kinds.LOADABLE): default_tasks.append(self.mod_phase) self.cxx_phase = self.__class__.InstallHeaders(self) # note: set in __ini__ because called directly in AudioDriversMod.__call__ def do_set_deps(self, sched_ctx): if False: yield if self.kind == ModTask.Kinds.PROG: self.private_deps = [pch.prog_task] else: self.private_deps = [pch.lib_task] self.public_deps += [helpers] class InstallHeaders(InstallTask): def __init__(self, outer): InstallTask.__init__(self, outer.base_cfg.project, outer.name + '-headers') self.outer = outer @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] if self.outer.path.exists: for s in self.outer.path.find_iter( in_pats=('*.hpp', '*.h'), ex_pats=('*.private.hpp',), prune_pats=('todo',) ): self._sources.append(s) for h in ('.hpp', '.h'): f = self.outer.path.parent / (self.outer.path.name + h) if f.exists: self._sources.append(f) break return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 if self.path.exists: for s in self.path.find_iter(in_pats = ('*.cpp',), prune_pats = ('todo',)): self.sources.append(s) else: self.sources.append(self.path.parent / (self.path.name + '.cpp')) class AudioDriverMod(UniformMod): def __init__(self, name, path, deps=None, define_name=None): UniformMod.__init__(self, 'psycle-audiodriver-' + name, src_dir / 'psycle' / 'audiodrivers' / path, deps ) self._define_name = define_name is not None and define_name or name.replace('-', '_').upper() def _apply_defines_to(self, cfg): cfg.defines['PSYCLE__' + self._define_name + '_AVAILABLE'] = None def apply_cxx_to(self, cfg): self._apply_defines_to(cfg) def do_mod_phase(self): self._apply_defines_to(self.cfg) UniformMod.do_mod_phase(self) if gstreamer: gst_driver = AudioDriverMod('gstreamer', 'gstreamerout', deps=(gstreamer,)) if alsa: alsa_driver = AudioDriverMod('alsa', 'alsaout', deps=(alsa,)) if esound: esound_driver = AudioDriverMod('esound', 'esoundout', deps=(esound,)) if dsound: dsound_driver = AudioDriverMod('microsoft-direct-sound', 'microsoftdirectsoundout', deps=(dsound,)) file_driver = AudioDriverMod('wave-file', 'wavefileout') if False: # these drivers need testing if jack: jack_driver = AudioDriverMod('jack', 'jackout', deps=(jack,)) if winmm: winmm_driver = AudioDriverMod('microsoft-mme', 'microsoftmmewaveout', deps=(winmm,)) # netaudio # asio # TODO this all-in-one lib should be removed in favor of separate loadable modules, one per driver class AudioDriversMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-audiodrivers', ModTask.Kinds.LIB, cfg) def do_set_deps(self, sched_ctx): self.private_deps = [pch.lib_task] self.public_deps = [helpers] req = self.public_deps + self.private_deps opt = [alsa, jack, esound, dsound, winmm, gstreamer] # netaudio, asio for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.public_deps += [o for o in opt if o] self.cxx_phase = self.__class__.InstallHeaders(self.base_cfg.project, self.name + '-headers') # brings the headers h = [] if gstreamer: h.append(gst_driver) if alsa: h.append(alsa_driver) if esound: h.append(esound_driver) if dsound: h.append(dsound_driver) h.append(file_driver) if False: # these drivers need testing if jack: h.append(jack_driver) if winmm: h.append(winmm_driver) # netaudio # asio for x in sched_ctx.parallel_wait(*(h.cxx_phase for h in h)): yield x class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = s = [] dir = src_dir / 'psycle' / 'audiodrivers' s.append(dir / 'audiodriver.h') if False: # now done in individual driver tasks s.append(dir / 'wavefileout.h') if gstreamer: s.append(dir / 'gstreamerout.h') if alsa: s.append(dir / 'alsaout.h') if esound: s.append(dir / 'esoundout.h') if dsound: s.append(dir / 'microsoftdirectsoundout.h') if False: # these drivers need testing if jack: s.append(dir / 'jackout.h') if netaudio: s.append(dir / 'netaudioout.h') if asio: s.append(dir / 'asioout.h') if winmm: s.append(dir / 'microsoftmmewaveout.h') return s def _apply_defines_to(self, cfg): if gstreamer: cfg.defines['PSYCLE__GSTREAMER_AVAILABLE'] = None if alsa: cfg.defines['PSYCLE__ALSA_AVAILABLE'] = None if esound: cfg.defines['PSYCLE__ESOUND_AVAILABLE'] = None if dsound: cfg.defines['PSYCLE__MICROSOFT_DIRECT_SOUND_AVAILABLE'] = None if False: # these drivers need testing if jack: cfg.defines['PSYCLE__JACK_AVAILABLE'] = None if netaudio: cfg.defines['PSYCLE__NET_AUDIO_AVAILABLE'] = None if asio: cfg.defines['PSYCLE__STEINBERG_ASIO_AVAILABLE'] = None if winmm: cfg.defines['PSYCLE__MICROSOFT_MME_AVAILABLE'] = None def apply_cxx_to(self, cfg): self._apply_defines_to(cfg) if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self._apply_defines_to(self.cfg) self.cfg.include_paths.appendleft(src_dir) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 s = self.sources dir = src_dir / 'psycle' / 'audiodrivers' s.append(dir / 'audiodriver.cpp') s.append(dir / 'wavefileout.cpp') if gstreamer: s.append(dir / 'gstreamerout.cpp') if alsa: s.append(dir / 'alsaout.cpp') if esound: s.append(dir / 'esoundout.cpp') if dsound: s.append(dir / 'microsoftdirectsoundout.cpp') if False: # these drivers need testing if jack: s.append(dir / 'jackout.cpp') if netaudio: s.append(dir / 'netaudioout.cpp') if asio: s.append(dir / 'asiointerface.cpp') if winmm: s.append(dir / 'microsoftmmewaveout.cpp') self._mod_dep_phases = mod_dep_phases = AudioDriversMod() self.default_tasks.append(mod_dep_phases.mod_phase)
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' default_tasks = self.default_tasks universalis = ScriptLoaderTask.shared(self.project, top_src_dir / 'universalis') helpers = ScriptLoaderTask.shared(self.project, top_src_dir / 'psycle-helpers') for x in sched_ctx.parallel_wait(universalis, helpers): yield x universalis = universalis.script_task helpers = helpers.script_task self._common = common = universalis.common universalis = universalis.mod_dep_phases helpers_math = helpers.math_mod_dep_phases helpers = helpers.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import ModTask, BuildCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() class StkCheckTask(BuildCheckTask): @staticmethod def shared_uid(*args, **kw): return 'stk' def apply_mod_to(self, cfg): cfg.libs.extend(['stk'])#, 'asound', 'jack']) # stk uses alsa and jack! @property def source_text(self): return '#include <stk/Stk.h>' stk = StkCheckTask.shared(check_cfg) class InterfaceMod(ModTask): def __init__(self): name = 'psycle-plugin-interface' ModTask.__init__(self, name, ModTask.Kinds.HEADERS, cfg, cxx_phase=self.__class__.InstallHeaders(cfg.project, name + '-headers')) class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [self.trim_prefix / 'psycle' / 'plugin_interface.hpp'] return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) interface = InterfaceMod() n = 'psycle-plugin-' p = src_dir / 'psycle' / 'plugins' class UniformMod(ModTask): def __init__(self, name, path, deps=None, kind=ModTask.Kinds.LOADABLE): ModTask.__init__(self, name, kind, cfg) self.path = path if deps is not None: self.public_deps += deps if kind in (ModTask.Kinds.PROG, ModTask.Kinds.LOADABLE): default_tasks.append(self.mod_phase) def do_set_deps(self, sched_ctx): if False: yield if self.kind == ModTask.Kinds.PROG: self.private_deps = [pch.prog_task] else: self.private_deps = [pch.lib_task] self.public_deps += [universalis, helpers_math, helpers] if self.name.startswith(n): self.public_deps.append(interface) if self.kind == ModTask.Kinds.LIB: self.cxx_phase = self.__class__.InstallHeaders(self) class InstallHeaders(InstallTask): def __init__(self, outer): InstallTask.__init__(self, outer.base_cfg.project, outer.name + '-headers') self.outer = outer @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] if self.outer.path.exists: for s in self.outer.path.find_iter(in_pats = ('*.hpp', '*.h'), ex_pats = ('*.private.hpp',), prune_pats = ('todo',)): self._sources.append(s) for h in ('.hpp', '.h'): f = self.outer.path.parent / (self.outer.path.name + h) if f.exists: self._sources.append(f) break return self._sources def apply_cxx_to(self, cfg): if self.cxx_phase is not None and not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 if self.path.exists: for s in self.path.find_iter(in_pats = ('*.cpp',), prune_pats = ('todo',)): self.sources.append(s) else: self.sources.append(self.path.parent / (self.path.name + '.cpp')) alk_muter = UniformMod(n + 'alk-muter', p / 'alk_muter') arguru_cross_delay = UniformMod(n + 'arguru-xfilter', p / 'arguru_xfilter') arguru_distortion = UniformMod(n + 'arguru-distortion', p / 'arguru_distortion') arguru_goaslicer = UniformMod(n + 'arguru-goaslicer', p / 'arguru_goaslicer') arguru_reverb = UniformMod(n + 'arguru-reverb', p / 'arguru_reverb') arguru_synth = UniformMod(n + 'arguru-synth-2f', p / 'arguru_synth_2_final') arguru_yezar_freeverb = UniformMod(n + 'arguru-freeverb', p / 'yezar_freeverb') arguru_compressor = UniformMod(n + 'arguru-compressor', p / 'arguru_compressor') audacity_compressor = UniformMod(n + 'audacity-compressor', p / 'audacity' / 'compressor') audacity_phaser = UniformMod(n + 'audacity-phaser', p / 'audacity' / 'phaser') audacity_wahwah = UniformMod(n + 'wahwah', p / 'audacity' / 'wahwah') ayeternal_2_pole_filter = UniformMod(n + 'filter-2-poles', p / 'filter_2_poles') ayeternal_delay = UniformMod(n + 'delay', p / 'delay') ayeternal_distortion = UniformMod(n + 'distortion', p / 'distortion') ayeternal_flanger = UniformMod(n + 'flanger', p / 'flanger') ayeternal_gainer = UniformMod(n + 'gainer', p / 'gainer') ayeternal_ring_modulator = UniformMod(n + 'ring-modulator', p / 'ring_modulator') bdzld_negative = UniformMod(n + 'negative', p / 'negative') docbexter_phaser = UniformMod(n + 'bexphase', p / 'bexphase') crasher = UniformMod(n + 'crasher', p / 'crasher') dw_granulizer = UniformMod(n + 'dw-granulizer', p / 'dw' / 'granulizer') dw_iopan = UniformMod(n + 'dw-iopan', p / 'dw' / 'iopan') dw_tremolo = UniformMod(n + 'dw-tremolo', p / 'dw' / 'tremolo') gzero_synth = UniformMod(n + 'gzero-synth', p / 'gzero_synth') haas = UniformMod(n + 'haas', p / 'haas') jme_blitz = UniformMod(n + 'blitz12', p / 'jme' / 'blitz12') jme_gamefx = UniformMod(n + 'gamefx13', p / 'jme' / 'gamefx13') jme_blitzn = UniformMod(n + 'blitzn', p / 'jme' / 'blitzn') jme_gamefxn = UniformMod(n + 'gamefxn', p / 'jme' / 'gamefxn') josepma_drums = UniformMod(n + 'jmdrum', p / 'jm_drums') karlkox_surround = UniformMod(n + 'karlkox-surround', p / 'surround') ladspa_gverb = UniformMod(n + 'ladspa-gverb', p / 'gverb') legasynth_303 = UniformMod(n + 'legasynth-303', p / 'legasynth') m3 = UniformMod(n + 'm3', p / 'm3') moreamp_eq = UniformMod(n + 'maeq', p / 'moreamp_eq') nrs_7900_fractal = UniformMod(n + 'nrs-7900-fractal', p / 'ninereeds_7900') pooplog_autopan = UniformMod(n + 'pooplog-autopan', p / 'pooplog_autopan') pooplog_delay = UniformMod(n + 'pooplog-delay', p / 'pooplog_delay') pooplog_delay_light = UniformMod(n + 'pooplog-delay-light', p / 'pooplog_delay_light') pooplog_filter = UniformMod(n + 'pooplog-filter', p / 'pooplog_filter') pooplog_fm_laboratory = UniformMod(n + 'pooplog-fm-laboratory', p / 'pooplog_synth') pooplog_fm_light = UniformMod(n + 'pooplog-fm-light', p / 'pooplog_synth_light') pooplog_fm_ultralight = UniformMod(n + 'pooplog-fm-ultralight', p / 'pooplog_synth_ultralight') pooplog_lofi_processor = UniformMod(n + 'pooplog-lofi-processor', p / 'pooplog_lofi') pooplog_scratch_master = UniformMod(n + 'pooplog-scratch-master', p / 'pooplog_scratch') pooplog_scratch_master_2 = UniformMod(n + 'pooplog-scratch-master-2', p / 'pooplog_scratch_2') satorius_chorus = UniformMod(n + 'schorus', p / 'SChorus') thunderpalace_softsat = UniformMod(n + 'thunderpalace-softsat', p / 'graue' / 'softsat') vincenzo_demasi_all_pass = UniformMod(n + 'vdallpass', p / 'vincenzo_demasi' / 'vdAllPass') vincenzo_demasi_echo = UniformMod(n + 'vdecho', p / 'vincenzo_demasi' / 'vdEcho') vincenzo_demasi_fastverb = UniformMod(n + 'vsfastverb', p / 'vincenzo_demasi' / 'vsFastVerb') vincenzo_demasi_noise_gate = UniformMod(n + 'vdnoisegate', p / 'vincenzo_demasi' / 'vdNoiseGate') zephod_super_fm = UniformMod(n + 'zephod-superfm', p / 'zephod_super_fm') dw_filter = UniformMod('psycle-dw-filter', p / 'dw' / 'dw_filter', kind=ModTask.Kinds.LIB) dw_eq = UniformMod(n + 'dw-eq', p / 'dw' / 'eq', deps=(dw_filter,)) druttis_dsp = UniformMod('psycle-druttis-dsp', p / 'druttis' / 'dsp', kind=ModTask.Kinds.LIB) druttis_band_limited_wave_tables = UniformMod('psycle-druttis-band-limited-wave-tables', p / 'druttis' / 'blwtbl', deps=(druttis_dsp,)) druttis_plucked_string = UniformMod(n + 'pluckedstring', p / 'druttis' / 'PluckedString', deps=(druttis_dsp,)) druttis_sublime = UniformMod(n + 'sublime', p / 'druttis' / 'sublime', deps=(druttis_dsp, druttis_band_limited_wave_tables)) druttis_slicit = UniformMod(n + 'slicit', p / 'druttis' / 'slicit', deps=(druttis_dsp,)) druttis_eq3 = UniformMod(n + 'eq3', p / 'druttis' / 'eq3', deps=(druttis_dsp,)) druttis_koruz = UniformMod(n + 'koruz', p / 'druttis' / 'Koruz', deps=(druttis_dsp,)) druttis_phantom = UniformMod(n + 'phantom', p / 'druttis' / 'Phantom', deps=(druttis_dsp,)) druttis_feed_me = UniformMod(n + 'feedme', p / 'druttis' / 'FeedMe', deps=(druttis_dsp,)) if False: # it uses ms's winapi! yannis_brown_midi = UniformMod(n + 'ymidi', p / 'y_midi') if False: # [bohan] i haven't found this one listed in the closed-source dir, but i can't find its sources either! guido_volume = UniformMod(n + 'guido-volume', p / '?????!!!!!!!!') for x in sched_ctx.parallel_wait(stk): yield x if stk: stk_plucked = UniformMod(n + 'stk-plucked', p / 'stk' / 'stk.plucked', deps=(stk,)) stk_rev = UniformMod(n + 'stk-rev', p / 'stk' / 'stk.reverbs', deps=(stk,)) stk_shakers = UniformMod(n + 'stk-shakers', p / 'stk' / 'stk.shakers', deps=(stk,))
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' universalis = ScriptLoaderTask.shared(self.project, top_src_dir / 'universalis') for x in sched_ctx.parallel_wait(universalis): yield x universalis = universalis.script_task self._common = common = universalis.common universalis = universalis.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import UserBuildCfgTask, ModTask, PkgConfigCheckTask from wonderbuild.std_checks.std_math import StdMathCheckTask from wonderbuild.std_checks.boost import BoostCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() std_math = StdMathCheckTask.shared(check_cfg) soxr = PkgConfigCheckTask.shared(check_cfg, ['soxr >= 0.1.1']) boost_test = BoostCheckTask.shared(check_cfg, (1, 40, 0), ('unit_test_framework',)) class HelpersMathMod(ModTask): def __init__(self): name = 'psycle-helpers-math' ModTask.__init__(self, name, ModTask.Kinds.HEADERS, cfg, cxx_phase = self.__class__.InstallHeaders(cfg.project, name + '-headers')) def do_set_deps(self, sched_ctx): if False: yield self.private_deps = [pch.lib_task] self.public_deps = [universalis, std_math] class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [self.trim_prefix / 'psycle' / 'helpers' / 'math.hpp'] + \ list((self.trim_prefix / 'psycle' / 'helpers' / 'math').find_iter( in_pats = ('*.hpp',), ex_pats = ('*.private.hpp',), prune_pats = ('todo',))) return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) self._math_mod_dep_phases = helpers_math = HelpersMathMod() self.default_tasks.append(helpers_math.cxx_phase) class HelpersMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-helpers', ModTask.Kinds.LIB, cfg) def do_set_deps(self, sched_ctx): if False: yield self.private_deps = [pch.lib_task] self.public_deps = [universalis, helpers_math, soxr] self.cxx_phase = HelpersMod.InstallHeaders(self.base_cfg.project, self.name + '-headers') class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] for s in (self.trim_prefix / 'psycle' / 'helpers').find_iter( in_pats = ('*.hpp',), ex_pats = ('*.private.hpp', 'math.hpp'), prune_pats = ('todo', 'math')): self._sources.append(s) return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 for s in (src_dir / 'psycle' / 'helpers').find_iter(in_pats = ('*.cpp',), prune_pats = ('todo', 'math')): self.sources.append(s) self._mod_dep_phases = helpers = HelpersMod() self.default_tasks.append(helpers.mod_phase) for x in sched_ctx.parallel_wait(boost_test): yield x if boost_test: class UnitTestMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-helpers-unit-tests', ModTask.Kinds.PROG, cfg) def do_set_deps(self, sched_ctx): if False: yield self.private_deps = [pch.prog_task, helpers, boost_test] def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 self.sources.append(src_dir / 'unit_tests.cpp') unit_tests = UnitTestMod() self.default_tasks.append(unit_tests.mod_phase)
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' default_tasks = self.default_tasks helpers = ScriptLoaderTask.shared(self.project, top_src_dir / 'psycle-helpers') for x in sched_ctx.parallel_wait(helpers): yield x helpers = helpers.script_task self._common = common = helpers.common helpers = helpers.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.std_checks.winmm import WinMMCheckTask from wonderbuild.std_checks.dsound import DSoundCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() gstreamer = PkgConfigCheckTask.shared(check_cfg, ['gstreamer-0.10']) jack = PkgConfigCheckTask.shared(check_cfg, ['jack >= 0.101.1']) alsa = PkgConfigCheckTask.shared(check_cfg, ['alsa >= 1.0']) esound = PkgConfigCheckTask.shared(check_cfg, ['esound']) dsound = DSoundCheckTask.shared(check_cfg) winmm = WinMMCheckTask.shared(check_cfg) for x in sched_ctx.parallel_wait(gstreamer, jack, alsa, esound, dsound, winmm): yield x class UniformMod(ModTask): def __init__(self, name, path, deps=None, kind=ModTask.Kinds.LOADABLE): ModTask.__init__(self, name, kind, cfg) self.path = path if deps is not None: self.public_deps += deps if kind in (ModTask.Kinds.PROG, ModTask.Kinds.LOADABLE): default_tasks.append(self.mod_phase) self.cxx_phase = self.__class__.InstallHeaders( self ) # note: set in __ini__ because called directly in AudioDriversMod.__call__ def do_set_deps(self, sched_ctx): if False: yield if self.kind == ModTask.Kinds.PROG: self.private_deps = [pch.prog_task] else: self.private_deps = [pch.lib_task] self.public_deps += [helpers] class InstallHeaders(InstallTask): def __init__(self, outer): InstallTask.__init__(self, outer.base_cfg.project, outer.name + '-headers') self.outer = outer @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] if self.outer.path.exists: for s in self.outer.path.find_iter( in_pats=('*.hpp', '*.h'), ex_pats=('*.private.hpp', ), prune_pats=('todo', )): self._sources.append(s) for h in ('.hpp', '.h'): f = self.outer.path.parent / ( self.outer.path.name + h) if f.exists: self._sources.append(f) break return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines[ 'UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name + '"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 if self.path.exists: for s in self.path.find_iter(in_pats=('*.cpp', ), prune_pats=('todo', )): self.sources.append(s) else: self.sources.append(self.path.parent / (self.path.name + '.cpp')) class AudioDriverMod(UniformMod): def __init__(self, name, path, deps=None, define_name=None): UniformMod.__init__(self, 'psycle-audiodriver-' + name, src_dir / 'psycle' / 'audiodrivers' / path, deps) self._define_name = define_name is not None and define_name or name.replace( '-', '_').upper() def _apply_defines_to(self, cfg): cfg.defines['PSYCLE__' + self._define_name + '_AVAILABLE'] = None def apply_cxx_to(self, cfg): self._apply_defines_to(cfg) def do_mod_phase(self): self._apply_defines_to(self.cfg) UniformMod.do_mod_phase(self) if gstreamer: gst_driver = AudioDriverMod('gstreamer', 'gstreamerout', deps=(gstreamer, )) if alsa: alsa_driver = AudioDriverMod('alsa', 'alsaout', deps=(alsa, )) if esound: esound_driver = AudioDriverMod('esound', 'esoundout', deps=(esound, )) if dsound: dsound_driver = AudioDriverMod('microsoft-direct-sound', 'microsoftdirectsoundout', deps=(dsound, )) file_driver = AudioDriverMod('wave-file', 'wavefileout') if False: # these drivers need testing if jack: jack_driver = AudioDriverMod('jack', 'jackout', deps=(jack, )) if winmm: winmm_driver = AudioDriverMod('microsoft-mme', 'microsoftmmewaveout', deps=(winmm, )) # netaudio # asio # TODO this all-in-one lib should be removed in favor of separate loadable modules, one per driver class AudioDriversMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-audiodrivers', ModTask.Kinds.LIB, cfg) def do_set_deps(self, sched_ctx): self.private_deps = [pch.lib_task] self.public_deps = [helpers] req = self.public_deps + self.private_deps opt = [alsa, jack, esound, dsound, winmm, gstreamer] # netaudio, asio for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.public_deps += [o for o in opt if o] self.cxx_phase = self.__class__.InstallHeaders( self.base_cfg.project, self.name + '-headers') # brings the headers h = [] if gstreamer: h.append(gst_driver) if alsa: h.append(alsa_driver) if esound: h.append(esound_driver) if dsound: h.append(dsound_driver) h.append(file_driver) if False: # these drivers need testing if jack: h.append(jack_driver) if winmm: h.append(winmm_driver) # netaudio # asio for x in sched_ctx.parallel_wait(*(h.cxx_phase for h in h)): yield x class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = s = [] dir = src_dir / 'psycle' / 'audiodrivers' s.append(dir / 'audiodriver.h') if False: # now done in individual driver tasks s.append(dir / 'wavefileout.h') if gstreamer: s.append(dir / 'gstreamerout.h') if alsa: s.append(dir / 'alsaout.h') if esound: s.append(dir / 'esoundout.h') if dsound: s.append(dir / 'microsoftdirectsoundout.h') if False: # these drivers need testing if jack: s.append(dir / 'jackout.h') if netaudio: s.append(dir / 'netaudioout.h') if asio: s.append(dir / 'asioout.h') if winmm: s.append(dir / 'microsoftmmewaveout.h') return s def _apply_defines_to(self, cfg): if gstreamer: cfg.defines['PSYCLE__GSTREAMER_AVAILABLE'] = None if alsa: cfg.defines['PSYCLE__ALSA_AVAILABLE'] = None if esound: cfg.defines['PSYCLE__ESOUND_AVAILABLE'] = None if dsound: cfg.defines[ 'PSYCLE__MICROSOFT_DIRECT_SOUND_AVAILABLE'] = None if False: # these drivers need testing if jack: cfg.defines['PSYCLE__JACK_AVAILABLE'] = None if netaudio: cfg.defines['PSYCLE__NET_AUDIO_AVAILABLE'] = None if asio: cfg.defines['PSYCLE__STEINBERG_ASIO_AVAILABLE'] = None if winmm: cfg.defines['PSYCLE__MICROSOFT_MME_AVAILABLE'] = None def apply_cxx_to(self, cfg): self._apply_defines_to(cfg) if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self._apply_defines_to(self.cfg) self.cfg.include_paths.appendleft(src_dir) self.cfg.defines[ 'UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name + '"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 s = self.sources dir = src_dir / 'psycle' / 'audiodrivers' s.append(dir / 'audiodriver.cpp') s.append(dir / 'wavefileout.cpp') if gstreamer: s.append(dir / 'gstreamerout.cpp') if alsa: s.append(dir / 'alsaout.cpp') if esound: s.append(dir / 'esoundout.cpp') if dsound: s.append(dir / 'microsoftdirectsoundout.cpp') if False: # these drivers need testing if jack: s.append(dir / 'jackout.cpp') if netaudio: s.append(dir / 'netaudioout.cpp') if asio: s.append(dir / 'asiointerface.cpp') if winmm: s.append(dir / 'microsoftmmewaveout.cpp') self._mod_dep_phases = mod_dep_phases = AudioDriversMod() self.default_tasks.append(mod_dep_phases.mod_phase)
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' default_tasks = self.default_tasks universalis = ScriptLoaderTask.shared(self.project, top_src_dir / 'universalis') helpers = ScriptLoaderTask.shared(self.project, top_src_dir / 'psycle-helpers') for x in sched_ctx.parallel_wait(universalis, helpers): yield x universalis = universalis.script_task helpers = helpers.script_task self._common = common = universalis.common universalis = universalis.mod_dep_phases helpers_math = helpers.math_mod_dep_phases helpers = helpers.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import ModTask, BuildCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() class StkCheckTask(BuildCheckTask): @staticmethod def shared_uid(*args, **kw): return 'stk' def apply_mod_to(self, cfg): cfg.libs.extend( ['stk']) #, 'asound', 'jack']) # stk uses alsa and jack! @property def source_text(self): return '#include <stk/Stk.h>' stk = StkCheckTask.shared(check_cfg) class InterfaceMod(ModTask): def __init__(self): name = 'psycle-plugin-interface' ModTask.__init__(self, name, ModTask.Kinds.HEADERS, cfg, cxx_phase=self.__class__.InstallHeaders( cfg.project, name + '-headers')) class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [ self.trim_prefix / 'psycle' / 'plugin_interface.hpp' ] return self._sources def apply_cxx_to(self, cfg): if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) interface = InterfaceMod() n = 'psycle-plugin-' p = src_dir / 'psycle' / 'plugins' class UniformMod(ModTask): def __init__(self, name, path, deps=None, kind=ModTask.Kinds.LOADABLE): ModTask.__init__(self, name, kind, cfg) self.path = path if deps is not None: self.public_deps += deps if kind in (ModTask.Kinds.PROG, ModTask.Kinds.LOADABLE): default_tasks.append(self.mod_phase) def do_set_deps(self, sched_ctx): if False: yield if self.kind == ModTask.Kinds.PROG: self.private_deps = [pch.prog_task] else: self.private_deps = [pch.lib_task] self.public_deps += [universalis, helpers_math, helpers] if self.name.startswith(n): self.public_deps.append(interface) if self.kind == ModTask.Kinds.LIB: self.cxx_phase = self.__class__.InstallHeaders(self) class InstallHeaders(InstallTask): def __init__(self, outer): InstallTask.__init__(self, outer.base_cfg.project, outer.name + '-headers') self.outer = outer @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] if self.outer.path.exists: for s in self.outer.path.find_iter( in_pats=('*.hpp', '*.h'), ex_pats=('*.private.hpp', ), prune_pats=('todo', )): self._sources.append(s) for h in ('.hpp', '.h'): f = self.outer.path.parent / ( self.outer.path.name + h) if f.exists: self._sources.append(f) break return self._sources def apply_cxx_to(self, cfg): if self.cxx_phase is not None and not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines[ 'UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name + '"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 if self.path.exists: for s in self.path.find_iter(in_pats=('*.cpp', ), prune_pats=('todo', )): self.sources.append(s) else: self.sources.append(self.path.parent / (self.path.name + '.cpp')) alk_muter = UniformMod(n + 'alk-muter', p / 'alk_muter') arguru_cross_delay = UniformMod(n + 'arguru-xfilter', p / 'arguru_xfilter') arguru_distortion = UniformMod(n + 'arguru-distortion', p / 'arguru_distortion') arguru_goaslicer = UniformMod(n + 'arguru-goaslicer', p / 'arguru_goaslicer') arguru_reverb = UniformMod(n + 'arguru-reverb', p / 'arguru_reverb') arguru_synth = UniformMod(n + 'arguru-synth-2f', p / 'arguru_synth_2_final') arguru_yezar_freeverb = UniformMod(n + 'arguru-freeverb', p / 'yezar_freeverb') arguru_compressor = UniformMod(n + 'arguru-compressor', p / 'arguru_compressor') audacity_compressor = UniformMod(n + 'audacity-compressor', p / 'audacity' / 'compressor') audacity_phaser = UniformMod(n + 'audacity-phaser', p / 'audacity' / 'phaser') audacity_wahwah = UniformMod(n + 'wahwah', p / 'audacity' / 'wahwah') ayeternal_2_pole_filter = UniformMod(n + 'filter-2-poles', p / 'filter_2_poles') ayeternal_delay = UniformMod(n + 'delay', p / 'delay') ayeternal_distortion = UniformMod(n + 'distortion', p / 'distortion') ayeternal_flanger = UniformMod(n + 'flanger', p / 'flanger') ayeternal_gainer = UniformMod(n + 'gainer', p / 'gainer') ayeternal_ring_modulator = UniformMod(n + 'ring-modulator', p / 'ring_modulator') bdzld_negative = UniformMod(n + 'negative', p / 'negative') docbexter_phaser = UniformMod(n + 'bexphase', p / 'bexphase') crasher = UniformMod(n + 'crasher', p / 'crasher') dw_granulizer = UniformMod(n + 'dw-granulizer', p / 'dw' / 'granulizer') dw_iopan = UniformMod(n + 'dw-iopan', p / 'dw' / 'iopan') dw_tremolo = UniformMod(n + 'dw-tremolo', p / 'dw' / 'tremolo') gzero_synth = UniformMod(n + 'gzero-synth', p / 'gzero_synth') haas = UniformMod(n + 'haas', p / 'haas') jme_blitz = UniformMod(n + 'blitz12', p / 'jme' / 'blitz12') jme_gamefx = UniformMod(n + 'gamefx13', p / 'jme' / 'gamefx13') jme_blitzn = UniformMod(n + 'blitzn', p / 'jme' / 'blitzn') jme_gamefxn = UniformMod(n + 'gamefxn', p / 'jme' / 'gamefxn') josepma_drums = UniformMod(n + 'jmdrum', p / 'jm_drums') karlkox_surround = UniformMod(n + 'karlkox-surround', p / 'surround') ladspa_gverb = UniformMod(n + 'ladspa-gverb', p / 'gverb') legasynth_303 = UniformMod(n + 'legasynth-303', p / 'legasynth') m3 = UniformMod(n + 'm3', p / 'm3') moreamp_eq = UniformMod(n + 'maeq', p / 'moreamp_eq') nrs_7900_fractal = UniformMod(n + 'nrs-7900-fractal', p / 'ninereeds_7900') pooplog_autopan = UniformMod(n + 'pooplog-autopan', p / 'pooplog_autopan') pooplog_delay = UniformMod(n + 'pooplog-delay', p / 'pooplog_delay') pooplog_delay_light = UniformMod(n + 'pooplog-delay-light', p / 'pooplog_delay_light') pooplog_filter = UniformMod(n + 'pooplog-filter', p / 'pooplog_filter') pooplog_fm_laboratory = UniformMod(n + 'pooplog-fm-laboratory', p / 'pooplog_synth') pooplog_fm_light = UniformMod(n + 'pooplog-fm-light', p / 'pooplog_synth_light') pooplog_fm_ultralight = UniformMod(n + 'pooplog-fm-ultralight', p / 'pooplog_synth_ultralight') pooplog_lofi_processor = UniformMod(n + 'pooplog-lofi-processor', p / 'pooplog_lofi') pooplog_scratch_master = UniformMod(n + 'pooplog-scratch-master', p / 'pooplog_scratch') pooplog_scratch_master_2 = UniformMod(n + 'pooplog-scratch-master-2', p / 'pooplog_scratch_2') satorius_chorus = UniformMod(n + 'schorus', p / 'SChorus') thunderpalace_softsat = UniformMod(n + 'thunderpalace-softsat', p / 'graue' / 'softsat') vincenzo_demasi_all_pass = UniformMod( n + 'vdallpass', p / 'vincenzo_demasi' / 'vdAllPass') vincenzo_demasi_echo = UniformMod(n + 'vdecho', p / 'vincenzo_demasi' / 'vdEcho') vincenzo_demasi_fastverb = UniformMod( n + 'vsfastverb', p / 'vincenzo_demasi' / 'vsFastVerb') vincenzo_demasi_noise_gate = UniformMod( n + 'vdnoisegate', p / 'vincenzo_demasi' / 'vdNoiseGate') zephod_super_fm = UniformMod(n + 'zephod-superfm', p / 'zephod_super_fm') dw_filter = UniformMod('psycle-dw-filter', p / 'dw' / 'dw_filter', kind=ModTask.Kinds.LIB) dw_eq = UniformMod(n + 'dw-eq', p / 'dw' / 'eq', deps=(dw_filter, )) druttis_dsp = UniformMod('psycle-druttis-dsp', p / 'druttis' / 'dsp', kind=ModTask.Kinds.LIB) druttis_band_limited_wave_tables = UniformMod( 'psycle-druttis-band-limited-wave-tables', p / 'druttis' / 'blwtbl', deps=(druttis_dsp, )) druttis_plucked_string = UniformMod(n + 'pluckedstring', p / 'druttis' / 'PluckedString', deps=(druttis_dsp, )) druttis_sublime = UniformMod(n + 'sublime', p / 'druttis' / 'sublime', deps=(druttis_dsp, druttis_band_limited_wave_tables)) druttis_slicit = UniformMod(n + 'slicit', p / 'druttis' / 'slicit', deps=(druttis_dsp, )) druttis_eq3 = UniformMod(n + 'eq3', p / 'druttis' / 'eq3', deps=(druttis_dsp, )) druttis_koruz = UniformMod(n + 'koruz', p / 'druttis' / 'Koruz', deps=(druttis_dsp, )) druttis_phantom = UniformMod(n + 'phantom', p / 'druttis' / 'Phantom', deps=(druttis_dsp, )) druttis_feed_me = UniformMod(n + 'feedme', p / 'druttis' / 'FeedMe', deps=(druttis_dsp, )) if False: # it uses ms's winapi! yannis_brown_midi = UniformMod(n + 'ymidi', p / 'y_midi') if False: # [bohan] i haven't found this one listed in the closed-source dir, but i can't find its sources either! guido_volume = UniformMod(n + 'guido-volume', p / '?????!!!!!!!!') for x in sched_ctx.parallel_wait(stk): yield x if stk: stk_plucked = UniformMod(n + 'stk-plucked', p / 'stk' / 'stk.plucked', deps=(stk, )) stk_rev = UniformMod(n + 'stk-rev', p / 'stk' / 'stk.reverbs', deps=(stk, )) stk_shakers = UniformMod(n + 'stk-shakers', p / 'stk' / 'stk.shakers', deps=(stk, ))
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' diversalis = ScriptLoaderTask.shared(self.project, top_src_dir / 'diversalis') for x in sched_ctx.parallel_wait(diversalis): yield x diversalis = diversalis.script_task self._common = common = diversalis.common diversalis = diversalis.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.std_checks.std_math import StdMathCheckTask from wonderbuild.std_checks.std_cxx11 import StdCxx11CheckTask from wonderbuild.std_checks.boost import BoostCheckTask from wonderbuild.std_checks.multithreading_support import MultithreadingSupportCheckTask from wonderbuild.std_checks.openmp import OpenMPCheckTask from wonderbuild.std_checks.dynamic_loading_support import DynamicLoadingSupportCheckTask from wonderbuild.std_checks.winmm import WinMMCheckTask check_cfg = cfg.clone() std_math = StdMathCheckTask.shared(check_cfg) std_cxx11 = StdCxx11CheckTask.shared(check_cfg) boost = BoostCheckTask.shared(check_cfg, (1, 40, 0), ('system', 'thread', 'filesystem', 'date_time')) boost_test = BoostCheckTask.shared(check_cfg, (1, 40, 0), ('unit_test_framework',)) mt = MultithreadingSupportCheckTask.shared(check_cfg) openmp = OpenMPCheckTask.shared(check_cfg) dl = DynamicLoadingSupportCheckTask.shared(check_cfg) glibmm = PkgConfigCheckTask.shared(check_cfg, ['glibmm-2.4', 'gmodule-2.0', 'gthread-2.0']) winmm = WinMMCheckTask.shared(check_cfg) from wonderbuild.install import InstallTask class UniversalisMod(ModTask): def __init__(self): ModTask.__init__(self, 'universalis', ModTask.Kinds.LIB, cfg) def do_set_deps(self, sched_ctx): self.public_deps = [diversalis, std_math, boost, mt, dl] if self.cfg.dest_platform.os == 'win': self.public_deps.append(winmm) req = self.all_deps opt = [std_cxx11, openmp, glibmm] for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.public_deps += [o for o in opt if o] self.cxx_phase = self.__class__.InstallHeaders(self.base_cfg.project, self.name + '-headers') class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [self.trim_prefix / 'universalis.hpp'] + \ list((self.trim_prefix / 'universalis').find_iter( in_pats = ('*.hpp',), ex_pats = ('*.private.hpp',), prune_pats = ('todo',))) return self._sources def apply_cxx_to(self, cfg): if self.cxx_phase.dest_dir not in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) if not self.cfg.shared: cfg.defines['UNIVERSALIS__SOURCE'] = '-1' def do_mod_phase(self): if self.cfg.shared: self.cfg.defines['UNIVERSALIS__SHARED'] = None self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 self.cfg.include_paths.appendleft(src_dir) for s in (src_dir / 'universalis').find_iter(in_pats = ('*.cpp',), prune_pats = ('todo',)): self.sources.append(s) self._mod_dep_phases = mod_dep_phases = universalis = UniversalisMod() common.pch.private_deps.append(mod_dep_phases) self.default_tasks.append(mod_dep_phases.mod_phase) for x in sched_ctx.parallel_wait(boost_test): yield x if boost_test: class UnitTestMod(ModTask): def __init__(self): ModTask.__init__(self, 'universalis-unit-tests', ModTask.Kinds.PROG, cfg) def do_set_deps(self, sched_ctx): if False: yield self.private_deps = [pch.prog_task, universalis, boost_test] def do_mod_phase(self): self.cfg.include_paths.appendleft(src_dir) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 self.sources.append(src_dir / 'unit_tests.cpp') unit_tests = UnitTestMod() self.default_tasks.append(unit_tests.mod_phase)
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' audiodrivers = ScriptLoaderTask.shared(self.project, top_src_dir / 'psycle-audiodrivers') for x in sched_ctx.parallel_wait(audiodrivers): yield x audiodrivers = audiodrivers.script_task self._common = common = audiodrivers.common audiodrivers = audiodrivers.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.std_checks.zlib import ZLibCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() xml = PkgConfigCheckTask.shared(check_cfg, ['libxml++-2.6']) zlib = ZLibCheckTask.shared(check_cfg) class CoreMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-core', ModTask.Kinds.LIB, cfg) def do_set_deps(self, sched_ctx): self.private_deps = [pch.lib_task] self.public_deps = [audiodrivers, zlib] req = self.public_deps + self.private_deps opt = [xml] for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.public_deps += [o for o in opt if o] self.cxx_phase = CoreMod.InstallHeaders(self.base_cfg.project, self.name + '-headers') class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] for s in (self.trim_prefix / 'psycle' / 'core').find_iter( in_pats = ('*.hpp', '*.h'), ex_pats = ('*.private.hpp', '*.private.h'), prune_pats = ('todo',)): self._sources.append(s) return self._sources def _apply_defines_to(self, cfg): if xml: cfg.defines['PSYCLE__CORE__CONFIG__LIBXMLPP_AVAILABLE'] = None def apply_cxx_to(self, cfg): self._apply_defines_to(cfg) if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self._apply_defines_to(self.cfg) self.cfg.defines['UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name +'"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 self.cfg.include_paths.appendleft(src_dir) self.cfg.include_paths.appendleft(top_src_dir / 'psycle-plugins' / 'src') self.cfg.include_paths.appendleft(top_src_dir / 'external-packages' / 'vst-2.4') for s in (src_dir / 'psycle' / 'core').find_iter(in_pats = ('*.cpp',), prune_pats = ('todo',)): self.sources.append(s) for s in (src_dir / 'seib' / 'vst').find_iter(in_pats = ('*,coo',), prune_pats = ('todo',)): self.sources.append(s); self._mod_dep_phases = mod_dep_phases = CoreMod() self.default_tasks.append(mod_dep_phases.mod_phase)
def __call__(self, sched_ctx): top_src_dir = self.src_dir.parent src_dir = self.src_dir / 'src' audiodrivers = ScriptLoaderTask.shared( self.project, top_src_dir / 'psycle-audiodrivers') for x in sched_ctx.parallel_wait(audiodrivers): yield x audiodrivers = audiodrivers.script_task self._common = common = audiodrivers.common audiodrivers = audiodrivers.mod_dep_phases pch = common.pch cfg = common.cfg.clone() from wonderbuild.cxx_tool_chain import PkgConfigCheckTask, ModTask from wonderbuild.std_checks.zlib import ZLibCheckTask from wonderbuild.install import InstallTask check_cfg = cfg.clone() xml = PkgConfigCheckTask.shared(check_cfg, ['libxml++-2.6']) zlib = ZLibCheckTask.shared(check_cfg) class CoreMod(ModTask): def __init__(self): ModTask.__init__(self, 'psycle-core', ModTask.Kinds.LIB, cfg) def do_set_deps(self, sched_ctx): self.private_deps = [pch.lib_task] self.public_deps = [audiodrivers, zlib] req = self.public_deps + self.private_deps opt = [xml] for x in sched_ctx.parallel_wait(*(req + opt)): yield x self.public_deps += [o for o in opt if o] self.cxx_phase = CoreMod.InstallHeaders( self.base_cfg.project, self.name + '-headers') class InstallHeaders(InstallTask): @property def trim_prefix(self): return src_dir @property def dest_dir(self): return self.fhs.include @property def sources(self): try: return self._sources except AttributeError: self._sources = [] for s in (self.trim_prefix / 'psycle' / 'core').find_iter(in_pats=('*.hpp', '*.h'), ex_pats=('*.private.hpp', '*.private.h'), prune_pats=('todo', )): self._sources.append(s) return self._sources def _apply_defines_to(self, cfg): if xml: cfg.defines[ 'PSYCLE__CORE__CONFIG__LIBXMLPP_AVAILABLE'] = None def apply_cxx_to(self, cfg): self._apply_defines_to(cfg) if not self.cxx_phase.dest_dir in cfg.include_paths: cfg.include_paths.append(self.cxx_phase.dest_dir) def do_mod_phase(self): self._apply_defines_to(self.cfg) self.cfg.defines[ 'UNIVERSALIS__META__MODULE__NAME'] = '"' + self.name + '"' self.cfg.defines['UNIVERSALIS__META__MODULE__VERSION'] = 0 self.cfg.include_paths.appendleft(src_dir) self.cfg.include_paths.appendleft(top_src_dir / 'psycle-plugins' / 'src') self.cfg.include_paths.appendleft( top_src_dir / 'external-packages' / 'vst-2.4') for s in (src_dir / 'psycle' / 'core').find_iter( in_pats=('*.cpp', ), prune_pats=('todo', )): self.sources.append(s) for s in (src_dir / 'seib' / 'vst').find_iter( in_pats=('*,coo', ), prune_pats=('todo', )): self.sources.append(s) self._mod_dep_phases = mod_dep_phases = CoreMod() self.default_tasks.append(mod_dep_phases.mod_phase)