#! /usr/bin/env python
# encoding: utf-8

def configure(conf):
    pass

def build(bld):
    sources_engine = [
        './engine/gx_jack.cpp',
        './engine/gx_preset.cpp',
        './engine/gx_json.cpp',
        './engine/gx_faust_plugins.cpp',
        './engine/gx_internal_plugins.cpp',
        './engine/gx_internal_ui_plugins.cpp',
        './engine/gx_midi_plugin.cpp',
        './engine/gx_engine_audio.cpp',
        './engine/gx_paramtable.cpp',
        './engine/gx_ui.cpp',
        './engine/gx_pitch_tracker.cpp',
        './engine/gx_convolver.cpp',
        './engine/gx_resampler.cpp',
        './engine/gx_system.cpp',
        './engine/gx_engine.cpp',
        './engine/gx_engine_midi.cpp',
        './engine/gx_pluginloader.cpp',
        ]

    sources_gui = [
        './gui/gx_stackbox_builder.cpp',
        './gui/gx_main_window.cpp',
        './gui/liveplay.cpp',
        './gui/rack.cpp',
        './gui/gx_preset_window.cpp',
        './gui/gx_jack_options.cpp',
        './gui/gx_ui_builder.cpp',
        './gui/gx_gui_helpers.cpp',
        './gui/gx_child_process.cpp',
        './gui/gx_main_midi.cpp',
        './gui/gx_jconv_settings.cpp',
        './gui/gxw_mm_controllers.cpp',
        './gui/gx_main_boxes.cpp',
        './gui/gx_mono_rack_builder.cpp',
        './gui/gx_stereo_rack_builder.cpp',
        './gui/gx_cairo_callbacks.cpp',
        './gui/gx_portmap.cpp',
        './gui/gx_main.cpp',
        ]

    builder_files = [
        './builder/midi.glade',
        './builder/ports.glade',
        './builder/iredit.glade',
        './builder/jackstarter.glade',
        './builder/mainpanel.glade',
        './builder/crybaby_ui.glade',
        './builder/gx_distortion_ui.glade',
        './builder/amp.tonestack_ui.glade',
        './builder/tremolo_ui.glade',
        './builder/pluginpreset_inputwindow.glade',
        './builder/pluginpreset_listwindow.glade',
        './builder/menudef.xml',
        './builder/accels_rc',
        ]

    sources = sources_engine + sources_gui
    incl = ['.','./engine','../..','..','../headers','../../libgxwmm','../../libgxw'] # need ".." for config.h
    libpath = []
    lib = []
    if bld.env['IS_LINUX']:
        lib.append('dl')
    uselib = ['JACK', 'SNDFILE', 'GTHREAD', 'GMODULE_EXPORT',
              'GTK2', 'GTKMM', 'GIOMM', 'FFTW3']
    uselib_local = []
    if bld.env['ZITA_CONVOLVER']:
        uselib.append('ZITA_CONVOLVER')
    else:
        sources.append('../zita-convolver/zita-convolver.cc')
        incl.append('../zita-convolver');
    if bld.env['ZITA_RESAMPLER']:
        uselib.append('ZITA_RESAMPLER')
    else:
        sources.append('../zita-resampler-1.1.0/resampler.cc')
        sources.append('../zita-resampler-1.1.0/resampler-table.cc')
        incl.append('../zita-resampler-1.1.0')
    if bld.env["HAVE_PLUGINLIB"]:
        uselib_local += ["plugins"]
    if bld.env["GX_LIB_SHARED"]:
        lib += ['gxwmm','gxw']
        libpath += [bld.path.find_dir("../../libgxw/gxw").bldpath(bld.env),
                    bld.path.find_dir("../../libgxwmm/gxwmm").bldpath(bld.env)]
    else:
        uselib_local += ['gxwmm','gxw']
    bld(features = 'cxx cprogram',
        includes = incl,
        obj_ext  = '.o',
        source = sources,
        lib = lib,
        uselib = uselib,
        uselib_local = uselib_local,
        libpath = libpath,
        target = bld.env['BIN_NAME'],
        chmod = 0755,
        install_path = bld.env['BINDIR'],
        )
    bld.install_files(bld.env['GX_BUILDER_DIR'], builder_files, chmod=0644)
