#!/usr/bin/env python
import subprocess
import waflib.Options as Options
import string
import os

# Version of this package (even if built as a child)
PACKAGE_VERSION = '1.2.0'

# Variables for 'waf dist'
APPNAME = 'non-mixer'
VERSION = PACKAGE_VERSION

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

def options(opt):
    opt.load('compiler_c')
    opt.load('compiler_cxx')
    opt.load('gnu_dirs')

def configure(conf):
    conf.load('compiler_c')
    conf.load('compiler_cxx')
    conf.load('gnu_dirs')

    conf.check(header_name='ladspa.h', define_name='HAVE_LADSPA_H', mandatory=True)
    conf.check_cfg(package='lrdf', uselib_store='LRDF',args="--cflags --libs",
                      atleast_version='0.4.0', mandatory=True)

    conf.check_cfg(package='lv2', uselib_store='LV2',args="--cflags --libs",
                      atleast_version='1.10.0', mandatory=True)
    conf.check_cfg(package='lilv-0', uselib_store='LILV',args="--cflags --libs",
                      atleast_version='0.20.0', mandatory=True)

    conf.define('VERSION', PACKAGE_VERSION)
    conf.define('SYSTEM_PATH', '/'.join( [ conf.env.DATADIR, APPNAME ] ) )
    conf.define('DOCUMENT_PATH', '/'.join( [ conf.env.DATADIR, 'doc' ] ) )
    conf.define('PIXMAP_PATH', '/'.join( [ conf.env.DATADIR, 'pixmaps' ] ) )

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

    print('')

def build(bld):

    libs = '' 

    bld.program( source = '''
src/Chain.C
src/Controller_Module.C
src/DPM.C
src/Gain_Module.C
src/Spatializer_Module.C
src/JACK_Module.C
src/AUX_Module.C
src/LADSPAInfo.C
src/Meter_Indicator_Module.C
src/Meter_Module.C
src/Mixer.C
src/Mixer_Strip.C
src/Module.C
src/Module_Parameter_Editor.C
src/Mono_Pan_Module.C
src/Plugin_Chooser_UI.fl
src/Plugin_Chooser.C
src/NSM.C
src/Panner.C
src/Plugin_Module.C
src/Project.C
src/Group.C
src/main.C
src/SpectrumView.C
src/Spatialization_Console.C
''',
              target       = 'non-mixer',
              includes     = ['.', 'src', '..', '../nonlib'],
              use = ['nonlib', 'fl_widgets'],
              uselib = [ 'JACK', 'LIBLO', 'LRDF', 'LILV', 'NTK', 'NTK_IMAGES', 'PTHREAD', 'DL', 'M' ],
              install_path = '${BINDIR}')

    bld.program( source = 'src/midi-mapper.C',
                 target       = 'non-midi-mapper',
                 includes     = ['.', 'src', '..', '../nonlib'],
                 use = ['nonlib', 'fl_widgets'],
                 uselib = [ 'JACK', 'LIBLO', 'LRDF', 'NTK', 'NTK_IMAGES', 'PTHREAD', 'DL', 'M' ],
                 install_path = '${BINDIR}')
    
    bld( features = 'subst',
         source = 'non-mixer.desktop.in',
         target = 'non-mixer.desktop',
         encoding = 'utf8',
         install_path = "${DATADIR}" + '/applications',
         BIN_PATH = bld.env.BINDIR )

    start_dir = bld.path.find_dir( 'icons/hicolor' )

    bld.install_files('${DATADIR}/icons/hicolor', start_dir.ant_glob('**/*.png'),
                      cwd=start_dir, relative_trick=True)

    bld.install_as('${DATADIR}/pixmaps/' + APPNAME + '/icon-256x256.png', 'icons/hicolor/256x256/apps/' + APPNAME + '.png')

    start_dir = bld.path.find_dir( 'pixmaps' )

    bld.install_files('${DATADIR}/pixmaps/' + APPNAME + '/', start_dir.ant_glob('*.png'),
                      cwd=start_dir, relative_trick=True)

    bld.install_files( '/'.join( [ '${DATADIR}/doc', APPNAME ] ), bld.path.ant_glob( 'doc/*.html doc/*.png' ) )

    bld.symlink_as( '${BINDIR}/' + APPNAME + '-noui', APPNAME )
