#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
import waflib.Utils as Utils
import os
import sys

def options(opt):
    pass

def configure(conf):
    if not "dummy" in conf.env['BACKENDS']:
        print ('session-utils depend on the dummy backend.')
        autowaf.display_msg(conf, 'build session-utils', 'no')
        return

    autowaf.display_msg(conf, 'build session-utils', 'yes')

def build_ardour_util(bld, util):
    pgmprefix = bld.env['PROGRAM_NAME'].lower() + bld.env['MAJOR']

    # just the normal executable version of the GTK GUI
    obj = bld (features = 'cxx c cxxprogram')
    # this program does not do the whole hidden symbols thing
    obj.cxxflags = [ '-fvisibility=default' ]
    obj.source   = ['common.cc', util + '.cc' ]
    obj.target   = pgmprefix + '-' + util
    obj.includes = ['.']
    obj.use      = [ 'libpbd',
                     'libardour',
                     'libardour_cp',
                     'libtemporal',
                     'libmidipp',
                     ]
    obj.defines = [
        'VERSIONSTRING="' + bld.env['VERSION'] + '"',
        'UTILNAME="'   + str(pgmprefix + '-' + util) + '"',
        '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') + '"',
        'PACKAGE="'    + "ARDOURUTILS" + '"',
        ]
    obj.install_path = bld.env['LIBDIR'] + '/utils'
    obj.uselib       = 'UUID FLAC FONTCONFIG GLIBMM GIOMM GTHREAD OGG CURL DL XML'
    obj.uselib       += ' AUDIOUNITS OSX LO '
    obj.uselib       += ' FFTW3F LO TAGLIB LILV RUBBERBAND AUBIO LRDF ARCHIVE VAMPSDK VAMPHOSTSDK'

    if bld.is_defined('HAVE_SUIL'):
        if bld.is_defined('YTK'):
            obj.use += [ 'libsuil' ]
        else:
            obj.uselib += ' SUIL'

    if bld.is_defined('HAVE_USB'):
        obj.uselib += ' USB'

    if sys.platform == 'darwin':
        obj.uselib += ' AUDIOUNITS OSX'
        obj.use    += ' libappleutility'
    obj.includes += ['../libs']

    if bld.env['build_target'] == 'mingw':
        obj.install_path = bld.env['BINDIR']

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

def build(bld):
    # session-utils depend on the dummy backend
    if not "dummy" in bld.env['BACKENDS']:
        return

    pgmprefix = bld.env['PROGRAM_NAME'].lower() + bld.env['MAJOR']

    utils = bld.path.ant_glob('[a-z]*.cc', excl=['example.cc', 'common.cc'])

    for util in utils:
        fn = os.path.splitext(os.path.basename(str(util)))[0]
        build_ardour_util(bld, fn)
        if bld.env['build_target'] != 'mingw':
            bld.symlink_as(bld.env['BINDIR'] + '/' + pgmprefix + "-" + fn, bld.env['LIBDIR'] + '/utils/ardour-util.sh')

    if bld.env['build_target'] == 'mingw':
        return

    obj              = bld(features = 'subst')
    obj.source       = 'ardour-util.sh.in'
    obj.target       = 'ardour-util.sh'
    obj.chmod        = Utils.O755
    obj.install_path = bld.env['LIBDIR']  + '/utils'
    obj.LIBDIR       = os.path.normpath(bld.env['DLLDIR'])
    obj.DATADIR      = os.path.normpath(bld.env['DATADIR'])
    obj.CONFDIR      = os.path.normpath(bld.env['CONFDIR'])
