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

import os, re

def sub_file(src_fname, dst_fname, lst):

    f = open(src_fname, 'rU')
    txt = f.read()
    f.close()

    for (key, val) in lst:
        re_pat = re.compile(key, re.M)
        txt = re_pat.sub(val, txt)

    f = open(dst_fname, 'w')
    f.write(txt)
    f.close()

def append_sse_flags():
    cpu_model = None
    x86_flags = None
    try:
        for line in open("/proc/cpuinfo"):
            if cpu_model is None:
                if line.startswith("model name"):
                    cpu_model = line.split(":",1)[1].strip()
            elif x86_flags is None:
                if line.startswith("flags"):
                    x86_flags = line.split(":",1)[1].strip()
            else:
                break
    except IOError:
        pass
    if cpu_model is None or x86_flags is None:
        return False
    model = cpu_model.split()
    arch = os.uname()[4]

    if "sse2" in x86_flags:
        return True
    else:
        return False

def dirlist():
    subdirs = [
        'gx_amp.lv2',
        'gx_amp_stereo.lv2',
        'gxautowah.lv2',
        'gxbooster.lv2',
        'gx_chorus.lv2',
        'gx_compressor.lv2',
        'gx_delay.lv2',
        'gxechocat.lv2',
        'gx_echo.lv2',
        'gx_expander.lv2',
        'gx_flanger.lv2',
        'gxmetal_amp.lv2',
        'gxmetal_head.lv2',
        'gx_phaser.lv2',
        #'gxpreamp.lv2',
        #'gxpreamp.lv2/StereoAmp',
        'gx_redeye.lv2',
        'gx_reverb.lv2',
        'gx_studiopre.lv2',
        'gx_studiopre_st.lv2',
        'gxtilttone.lv2',
        'gx_tremolo.lv2',
        'gxts9.lv2',
        'gxtubedelay.lv2',
        'gxtubetremelo.lv2',
        'gxtubevibrato.lv2',
        'gxtuner.lv2',
        'gx_zita_rev1.lv2'

         ]

    return subdirs

def configure(conf):
    if not conf.env['NOSSE']:
        conf.env['SSE2'] = append_sse_flags()
    pa = '.so'

    for x in dirlist():
        conf.sub_config('%s' % x);
        sub_file('./src/LV2/%s/manifest.ttl.in' % x, './src/LV2/%s/manifest.ttl' % x, (('@LIB_EXT@', '%s' % pa), ))

def build(bld):
    # faust folder keep out of dirlist
    bld.add_subdirs('faust')
    bld.add_subdirs(dirlist())
    
    gx_ampstyledir = bld.path.find_dir( 'GUI' ) ;
    bld.install_files(bld.env['GX_LV2_STYLE_DIR'], gx_ampstyledir.ant_glob('**/*.png'),cwd=gx_ampstyledir, chmod=0o644, relative_trick=True)
    bld.install_files(bld.env['GX_LV2_STYLE_DIR'], gx_ampstyledir.ant_glob('**/*.rc'),cwd=gx_ampstyledir, chmod=0o644, relative_trick=True)

