#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
from waflib import Options, TaskGen
import waflib.Logs as Logs, waflib.Utils as Utils
import os
import sys
import re
import time
from waflib.Task import Task

# Version of this package (even if built as a child)
MAJOR = '3'
MINOR = '0'
MICRO = '0'
GTK2_ARDOUR_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO)

# Variables for 'waf dist'
APPNAME = 'gtk2_ardour3'
VERSION = GTK2_ARDOUR_VERSION
I18N_PACKAGE = 'gtk2_ardour3'

# Mandatory variables
top = '.'
out = 'build'

path_prefix = 'gtk2_ardour/'

gtk2_ardour_sources = [
        'about.cc',
        'actions.cc',
        'add_route_dialog.cc',
        'ambiguous_file_dialog.cc',
        'analysis_window.cc',
        'ardour_button.cc',
        'ardour_dialog.cc',
        'ardour_ui.cc',
        'ardour_ui2.cc',
        'ardour_ui_dependents.cc',
        'ardour_ui_dialogs.cc',
        'ardour_ui_ed.cc',
        'ardour_ui_mixer.cc',
        'ardour_ui_options.cc',
        'ardour_window.cc',
        'audio_clock.cc',
        'audio_region_editor.cc',
        'audio_region_view.cc',
        'audio_streamview.cc',
        'audio_time_axis.cc',
        'automation_controller.cc',
        'automation_line.cc',
        'automation_region_view.cc',
        'automation_streamview.cc',
        'automation_time_axis.cc',
        'axis_view.cc',
        'bundle_manager.cc',
        'button_joiner.cc',
        'canvas-flag.cc',
        'canvas-hit.cc',
        'canvas-note-event.cc',
        'canvas-note.cc',
        'canvas_patch_change.cc',
        'canvas-simpleline.c',
        'canvas-simplerect.c',
        'canvas-sysex.cc',
        'canvas-waveview.c',
        'clock_group.cc',
        'configinfo.cc',
        'control_point.cc',
        'control_point_dialog.cc',
        'curvetest.cc',
        'debug.cc',
        'diamond.cc',
        'edit_note_dialog.cc',
        'editing.cc',
        'editor.cc',
        'editor_actions.cc',
        'editor_audio_import.cc',
        'editor_audiotrack.cc',
        'editor_canvas.cc',
        'editor_canvas_events.cc',
        'editor_component.cc',
        'editor_cursors.cc',
        'editor_drag.cc',
        'editor_route_groups.cc',
        'editor_export_audio.cc',
        'editor_group_tabs.cc',
        'editor_keys.cc',
        'editor_locations.cc',
        'editor_markers.cc',
        'editor_mixer.cc',
        'editor_mouse.cc',
        'editor_ops.cc',
        'editor_regions.cc',
        'editor_routes.cc',
        'editor_rulers.cc',
        'editor_scrub.cc',
        'editor_selection.cc',
        'editor_snapshots.cc',
        'editor_summary.cc',
        'editor_tempodisplay.cc',
        'editor_timefx.cc',
        'engine_dialog.cc',
        'enums.cc',
        'export_channel_selector.cc',
        'export_dialog.cc',
        'export_file_notebook.cc',
        'export_filename_selector.cc',
        'export_format_dialog.cc',
        'export_format_selector.cc',
        'export_preset_selector.cc',
        'export_timespan_selector.cc',
        'fft.cc',
        'fft_graph.cc',
        'fft_result.cc',
        'gain_meter.cc',
        'generic_pluginui.cc',
        'ghostregion.cc',
        'global_port_matrix.cc',
        'group_tabs.cc',
        'gtk-custom-hruler.c',
        'gtk-custom-ruler.c',
        'gtk_pianokeyboard.c',
        'gui_object.cc',
        'insert_time_dialog.cc',
        'interthread_progress_window.cc',
        'io_selector.cc',
        'keyboard.cc',
        'keyeditor.cc',
        'latency_gui.cc',
        'led.cc',
        'level_meter.cc',
        'lineset.cc',
        'location_ui.cc',
        'main.cc',
        'main_clock.cc',
        'marker.cc',
        'midi_automation_line.cc',
        'midi_channel_dialog.cc',
        'midi_channel_selector.cc',
        'midi_cut_buffer.cc',
        'midi_export_dialog.cc',
        'midi_list_editor.cc',
        'midi_port_dialog.cc',
        'midi_region_view.cc',
        'midi_scroomer.cc',
        'midi_selection.cc',
        'midi_streamview.cc',
        'midi_time_axis.cc',
        'midi_tracer.cc',
        'midi_velocity_dialog.cc',
        'missing_file_dialog.cc',
        'missing_plugin_dialog.cc',
        'mixer_actor.cc',
        'mixer_group_tabs.cc',
        'mixer_strip.cc',
        'mixer_ui.cc',
        'monitor_section.cc',
        'mono_panner.cc',
        'mono_panner_editor.cc',
        'mouse_cursors.cc',
        'nag.cc',
        'new_plugin_preset_dialog.cc',
        'normalize_dialog.cc',
        'note_player.cc',
        'option_editor.cc',
        'opts.cc',
        'panner2d.cc',
        'panner_editor.cc',
        'panner_interface.cc',
        'panner_ui.cc',
        'piano_roll_header.cc',
        'playlist_selector.cc',
        'plugin_eq_gui.cc',
        'plugin_selector.cc',
        'plugin_ui.cc',
        'port_group.cc',
        'port_insert_ui.cc',
        'port_matrix.cc',
        'port_matrix_body.cc',
        'port_matrix_column_labels.cc',
        'port_matrix_component.cc',
        'port_matrix_grid.cc',
        'port_matrix_labels.cc',
        'port_matrix_row_labels.cc',
        'processor_box.cc',
        'patch_change_dialog.cc',
        'progress_reporter.cc',
        'prompter.cc',
        'public_editor.cc',
        'quantize_dialog.cc',
        'rc_option_editor.cc',
        'region_editor.cc',
        'region_gain_line.cc',
        'region_layering_order_editor.cc',
        'region_selection.cc',
        'region_view.cc',
        'return_ui.cc',
        'rhythm_ferret.cc',
        'route_group_dialog.cc',
        'route_group_menu.cc',
        'route_params_ui.cc',
        'route_processor_selection.cc',
        'route_time_axis.cc',
        'route_ui.cc',
        'search_path_option.cc',
        'selection.cc',
        'send_ui.cc',
        'session_import_dialog.cc',
        'session_metadata_dialog.cc',
        'session_option_editor.cc',
        'sfdb_ui.cc',
        'shuttle_control.cc',
        'simpleline.cc',
        'simplerect.cc',
        'splash.cc',
        'speaker_dialog.cc',
        'startup.cc',
        'step_editor.cc',
        'step_entry.cc',
        'stereo_panner.cc',
        'stereo_panner_editor.cc',
        'streamview.cc',
        'strip_silence_dialog.cc',
        'tape_region_view.cc',
        'tempo_dialog.cc',
        'tempo_lines.cc',
        'theme_manager.cc',
        'time_axis_view.cc',
        'time_axis_view_item.cc',
        'time_fx_dialog.cc',
        'time_info_box.cc',
        'time_selection.cc',
        'track_selection.cc',
        'track_view_list.cc',
        'transpose_dialog.cc',
        'ui_config.cc',
        'utils.cc',
        'verbose_cursor.cc',
        'version.cc',
        'visibility_group.cc',
        'volume_controller.cc',
        'waveview.cc',
        'window_proxy.cc'
]

def options(opt):
    autowaf.set_options(opt)

def configure(conf):
    conf.load('misc')
    conf.load('compiler_cxx')
    autowaf.build_version_files(
        path_prefix + 'version.h',
        path_prefix + 'version.cc',
        'gtk2_ardour', MAJOR, MINOR, MICRO)
    autowaf.configure(conf)

    if re.search ("linux", sys.platform) != None:
        autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')

    # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present

    autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
                      atleast_version='1.2.1')
    autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
                      atleast_version='2.10.1')
    autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK',
                      atleast_version='2.18')
    autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
                      atleast_version='2.18')
    autowaf.check_pkg(conf, 'libgnomecanvas-2.0',
                      uselib_store='GNOMECANVAS', atleast_version='2.30')
    autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6',
                      uselib_store='GNOMECANVASMM', atleast_version='2.16')
    autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
    autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.3', mandatory=False)

    conf.write_config_header('gtk2ardour-config.h', remove=False)

    # Boost headers
    autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
    autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')

# Add a waf `feature' to allow compilation of things using winegcc
from waflib.TaskGen import feature
@feature("wine")
def set_winegcc(self):
    self.env.LINK_CXX = self.env.LINK_CC = 'wineg++'
    self.env.CC = 'winegcc'

def _doPyp(infileName, deps = False):
    outStr = ''
    out = []
    re_spaces = re.compile("\s+")

    if infileName == '-':
        fd = sys.stdin
    else:
        fd = open(infileName)
    inLines = fd.readlines()
    if fd != sys.stdin:
        fd.close()
        

    for line in inLines:
        bits = re_spaces.split(line)
        if bits[0] == '##include':
            incName = bits[1]
            if (deps):
                out += [ incName ]
            else:
                # assume included file comes from same place as source file
                incName = os.path.join (os.path.dirname (infileName), incName);
                outStr += _doPyp(incName)
        else:
            if not deps:
                outStr += line

    # done
    if deps:
        return out
    else:
        return outStr

def include_processor(task):
    infileName = task.inputs[0].srcpath()
    outfileName = os.path.join(out, task.outputs[0].bldpath())
    fdOut = open (outfileName, "w")
    fdOut.write (_doPyp(infileName))
    fdOut.close ()


def build_color_scheme(path, prefix):
    f = open (path, 'r')
    color_scheme = ''
    for line in f:
        if re.search ('^#@color', line):
            line.strip() # remove newline
            words = line.split()
            if len(color_scheme):
                color_scheme += ';'
            color_scheme += prefix
            color_scheme += '_'
            color_scheme += words[1]
            color_scheme += ':'
            color_scheme += words[2]
    f.close()
    return color_scheme

def build(bld):

    if bld.is_defined('WINDOWS_VST_SUPPORT'):
        # If we require VST support we build a stub main() and the FST library
        # here using winegcc, and link it to the GTK front-end library
        obj = bld(features = 'cxx c cxxprogram wine')
        obj.source = '''
                ../libs/fst/fst.c
                ../libs/fst/fstinfofile.c
                ../libs/fst/vsti.c
                ../libs/fst/vstwin.c
                ../vst/winmain.c
        '''
        obj.uselib = 'ALSA'
        obj.use          = [ 'libpbd',
                             'libmidipp',
                             'libtaglib',
                             'libardour',
                             'libardour_cp',
                             'libgtk2_ardour',
                             'libgtkmm2ext',
                             'libtaglib' ]
        obj.target = 'ardour-3.0-vst.exe.so'
        obj.includes  = [ '../libs/fst', '.' ]
        obj.linkflags = ['-mwindows', '-Wl,--export-dynamic', '-lpthread']
        obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX']
        obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
        # end of the wine executable

        # now the shared library containing the GTK GUI for ardour
        obj = bld (features = 'cxx c cxxshlib')
        obj.source    = gtk2_ardour_sources
        obj.includes  = [ '../libs/fst', '.' ]
        obj.name      = 'libgtk2_ardour'
        obj.target    = 'gtk2_ardour'
    else:
        # just the normal executable version of the GTK GUI
        obj = bld(features = 'cxx c cxxprogram')
        obj.source    = gtk2_ardour_sources
        obj.target = 'ardour-3.0'
        obj.includes = ['.']

    # continue with setup of obj, which could be a shared library
    # or an executable.

    obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')

    obj.uselib       = 'UUID FLAC GLIBMM GTHREAD GTK OGG ALSA CURL DL'
    obj.uselib       += ' GTKMM GNOMECANVASMM GNOMECANVAS '
    obj.uselib       += ' AUDIOUNITS OSX GTKOSX '
    obj.use          = [ 'libpbd',
                         'libmidipp',
                         'libtaglib',
                         'libardour',
                         'libardour_cp',
                         'libgtkmm2ext',
                         'libtaglib' ]
    if sys.platform == 'darwin':
        obj.use += ' libappleutility'
    obj.defines     = [
        'PACKAGE="' + I18N_PACKAGE + '"',
        'VERSIONSTRING="' + bld.env['VERSION'] + '"',
        'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
        'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
        'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
        'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
        ]
    obj.includes += ['../libs']

    if bld.is_defined('HAVE_SUIL'):
        obj.source += [ 'lv2_plugin_ui.cc' ]
        obj.use += [ 'SUIL' ]

    if bld.is_defined('FREESOUND'):
        obj.source +=  [ 'sfdb_freesound_mootcher.cc' ]
        obj.defines += [ 'FREESOUND' ]

    if bld.is_defined('NEED_INTL'):
        obj.linkflags = ' -lintl'

    if bld.is_defined('WINDOWS_VST_SUPPORT'):
        obj.source += [ 'windows_vst_plugin_ui.cc' ]
        obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
        obj.use += [ 'X11' ]
        
    if bld.is_defined('LXVST_SUPPORT'):
        obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
        obj.defines += [ 'LXVST_SUPPORT' ]
        obj.use += [ 'X11' ]

    if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT'):
        obj.source += [ 'vst_plugin_ui.cc' ]
        
    if bld.is_defined('PHONE_HOME'):
        obj.defines += [ 'PHONE_HOME' ]

    if bld.is_defined('HAVE_COREAUDIO'):
        TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
        obj.source += [ 'cocoacarbon.mm' ]
        obj.use += ' libappleutility '

    if bld.is_defined('AUDIOUNIT_SUPPORT'):
        obj.source += [ 'au_pluginui.mm' ]

    # Wrappers

    wrapper_subst_dict = {
            'INSTALL_PREFIX' : bld.env['PREFIX'],
            'LIBDIR'         : os.path.normpath(bld.env['LIBDIR']),
            'DATADIR'        : os.path.normpath(bld.env['DATADIR']),
            'SYSCONFDIR'     : os.path.normpath(bld.env['SYSCONFDIR']),
            'LIBS'           : 'build/libs',
            'VERSION'        : '3.0',
            'EXECUTABLE'     : 'build/gtk2_ardour/ardour-3.0'
    }

    def set_subst_dict(obj, dict):
        for i in dict:
            setattr(obj, i, dict[i])

    obj              = bld(features = 'subst', rule= 'chmod 0755 ${TGT}')
    obj.source       = 'ardev_common.sh.in'
    obj.target       = 'ardev_common_waf.sh'
    obj.chmod        = Utils.O755
    obj.dict         = wrapper_subst_dict
    set_subst_dict(obj, wrapper_subst_dict)

    obj              = bld(features = 'subst')
    obj.source       = 'ardour.sh.in'
    obj.target       = 'ardour3'
    obj.chmod        = Utils.O755
    obj.dict         = wrapper_subst_dict
    obj.install_path = bld.env['BINDIR']
    set_subst_dict(obj, wrapper_subst_dict)

    if bld.is_defined('WINDOWS_VST_SUPPORT'):
        obj              = bld(features = 'subst')
        obj.source       = '../vst/ardourvst.in'
        obj.target       = 'ardourvst3'
        obj.chmod        = Utils.O755
        obj.dict         = wrapper_subst_dict
        obj.install_path = bld.env['BINDIR']
        set_subst_dict(obj, wrapper_subst_dict)

    # Font configuration

    dark_rc_subst_dict = {}
    light_rc_subst_dict = {}
    font_sizes      = {}
    base_font       = ""

    # Set up font sizes
    if bld.is_defined('GTKOSX'): # OS X fonts
        basefont = ""
        font_sizes = {
                'TINY' : '7',
                'SMALLER' : '9',
                'SMALL' : '10',
                'NORMAL' : '11',
                'BIG' : '12',
                'BIGGER' : '14',
                'LARGE' : '18',
                'LARGER' : '28',
                'HUGER' : '36',
                'MASSIVE' : '60'
        }
    else: # Linux/X11 fonts
        basefont = '' # unspecified - use system defaults
        font_sizes = {
                'TINY' : '6',
                'SMALLER' : '8',
                'SMALL' : '9',
                'NORMAL' : '10',
                'BIG' : '14',
                'BIGGER' : '16',
                'LARGE' : '18',
                'LARGER' : '24',
                'HUGER' : '34',
                'MASSIVE' : '60'
        }

    # Set up font substitution dictionary
    # @FONT_XXXX@
    for style in ['', 'BOLD', 'ITALIC']:
        for sizename,points in iter(font_sizes.items()):
            if (len (style)):
                key = "_".join (['FONT',style,sizename])
                fontstyle = " ".join ([basefont,style.lower(),points])
            else:
                key = "_".join (['FONT',sizename])
                fontstyle = " ".join ([basefont,points])

            dark_rc_subst_dict[key] = fontstyle
            light_rc_subst_dict[key] = fontstyle

    # @FONT_SIZE_XXXX@
    for sizename,points in iter(font_sizes.items()):
            key = "_".join (['FONT_SIZE',sizename])
            dark_rc_subst_dict[key] = points
            light_rc_subst_dict[key] = points

    # RC files
    dark_rc_subst_dict['COLOR_SCHEME'] = build_color_scheme(
        'gtk2_ardour/ardour3_ui_dark.rc.in', 'ARDOUR_DARK')
    dark_rc_subst_dict['COLPREFIX'] = 'ARDOUR_DARK'
    light_rc_subst_dict['COLOR_SCHEME'] = build_color_scheme(
        'gtk2_ardour/ardour3_ui_light.rc.in', 'ARDOUR_LIGHT')
    light_rc_subst_dict['COLPREFIX'] = 'ARDOUR_LIGHT'

    obj              = bld(features = 'subst')
    obj.source       = [ 'ardour3_ui_dark.rc.in' ]
    obj.target       = 'ardour3_ui_dark.rc.pre'
    obj.install_path = None
    set_subst_dict(obj, dark_rc_subst_dict)

    obj              = bld(features = 'subst')
    obj.source       = [ 'ardour3_ui_light.rc.in' ]
    obj.target       = 'ardour3_ui_light.rc.pre'
    obj.install_path = None
    set_subst_dict(obj, light_rc_subst_dict)

    obj              = bld(features = 'subst')
    obj.source       = [ 'ardour3_styles.rc.in' ]
    obj.target       = 'ardour3_dark_styles.rc'
    obj.install_path = None
    set_subst_dict(obj, dark_rc_subst_dict)

    obj              = bld(features = 'subst')
    obj.source       = [ 'ardour3_styles.rc.in' ]
    obj.target       = 'ardour3_light_styles.rc'
    obj.install_path = None
    set_subst_dict(obj, light_rc_subst_dict)

    obj              = bld(features = 'subst')
    obj.source       = [ 'ardour3_fonts.rc.in' ]
    obj.target       = 'ardour3_dark_fonts.rc'
    obj.install_path = None
    set_subst_dict(obj, dark_rc_subst_dict)

    obj              = bld(features = 'subst')
    obj.source       = [ 'ardour3_fonts.rc.in' ]
    obj.target       = 'ardour3_light_fonts.rc'
    obj.install_path = None
    set_subst_dict(obj, light_rc_subst_dict)

    obj              = bld(rule = 'cp ${SRC} ${TGT}')
    obj.source       = [ 'ardour3_widget_list.rc' ]
    obj.target       = 'ardour3_widgets.rc'
    obj.install_path = None

    obj = bld (rule = include_processor)
    obj.source = [ 'ardour3_ui_dark.rc.pre' ]
    # find and add all ##include dependencies as sources
    obj.source += _doPyp (bld.path.find_resource ('ardour3_ui_dark.rc.in').srcpath(), True)
    obj.target = 'ardour3_ui_dark.rc'
    obj.install_path = '${SYSCONFDIR}/ardour3'

    obj = bld (rule = include_processor)
    obj.source = [ 'ardour3_ui_light.rc.pre' ]
    # find and add all ##include dependencies as sources
    obj.source += _doPyp (bld.path.find_resource ('ardour3_ui_light.rc.in').srcpath(), True)
    obj.target = 'ardour3_ui_light.rc'
    obj.install_path = '${SYSCONFDIR}/ardour3'

    # Menus
    menus_argv = []
    if bld.is_defined('GTKOSX'):
        menus_argv = [ '-E', '-P', '-DGTKOSX' ]
    else:
        menus_argv = [ '-E', '-P' ]
    obj = bld(features = 'command-output')
    obj.command = 'cpp'
    obj.command_is_external = True
    obj.no_inputs = True
    obj.argv = menus_argv
    obj.stdin = 'ardour.menus.in'
    obj.stdout = 'ardour.menus'
    bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'),
                      'ardour.menus')

    # Keybindings

    # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad',
    # 'SAE-us-nokeypad', 'ergonomic-us'

    for b in [ 'mnemonic-us' ] :
        obj = bld(
            target = b + '.bindings',
            source = b + '.bindings.in',
            rule = '../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
            )
        obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3')

    # not modified at present
    bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'),
                      'step_editing.bindings')
    bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'),
                      'mixer.bindings')

    # Icons/Images
    bld.install_files('${DATADIR}/ardour3/icons', bld.path.ant_glob('icons/*.png'))
    bld.install_files('${DATADIR}/ardour3/pixmaps', bld.path.ant_glob('pixmaps/*.xpm'))
    bld.install_files('${DATADIR}/ardour3', 'splash.png')

    # Default UI configuration
    bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_ui_default.conf')

    # Default export stuff
    bld.install_files('${SYSCONFDIR}/ardour3/export', bld.path.ant_glob('export/*.format'))

    # i18n
    if bld.is_defined('ENABLE_NLS'):
        mo_files = bld.path.ant_glob('po/*.mo')
        for mo in mo_files:
            lang = os.path.basename(mo.srcpath()).replace('.mo', '')
            bld.install_as(os.path.join(bld.env['PREFIX'], 'share', 'locale',
                                        lang, 'LC_MESSAGES', I18N_PACKAGE + '.mo'),
                           mo)

def i18n(bld):
    autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
                       'Paul Davis')

def i18n_pot(bld):
    autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
                       'Paul Davis')

def i18n_po(bld):
    autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
                       'Paul Davis')

def i18n_mo(bld):
    autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
                       'Paul Davis')
