#!/usr/bin/python import os import sys import glob options = Variables('options.cache', ARGUMENTS) options.AddVariables( BoolVariable('enable_clam', 'Compile CLAM engine', 'yes'), BoolVariable('enable_jack', 'Compile JACK engine', 'yes'), ) toolChain = 'default' if sys.platform is not 'win32' else 'mingw' env = Environment(ENV=os.environ, tools=[toolChain], options=options) options.Save('options.cache', env) Help(options.GenerateHelpText(env)) env.SConsignFile() # Single signature file env.ParseConfig('python-config --cflags') env.ParseConfig('python-config --libs') env.ParseConfig('pkg-config --cflags --libs pyside') if env['enable_clam'] : env.ParseConfig('pkg-config clam_core clam_processing clam_audioio --cflags --libs') env.ParseConfig('pkg-config clam_qtmonitors --cflags --libs') # UI binding env.ParseConfig('pkg-config QtUiTools QtGui QtCore --cflags --libs') # UI binding if env['enable_jack'] : env.ParseConfig('pkg-config --cflags --libs jack') env.AppendUnique( LIBS=['boost_python'] ) # python-config adds a flag that is refused by g++ if '-Wstrict-prototypes' in env['CCFLAGS'] : env['CCFLAGS'].remove('-Wstrict-prototypes') if True : env["SHCXXCOMSTR"] = "Compiling $SOURCE -> $TARGET" env["CXXCOMSTR"] = "Compiling $SOURCE -> $TARGET" env["SHLINKCOMSTR"] = "Linking $SOURCES -> $TARGET" env["LINKCOMSTR"] = "Linking $SOURCES -> $TARGET" def print_cmd_line(commandline, target, source, env) : sys.stdout.write("\033[32;1m%s\033[0m\n"%commandline) sys.stdout.flush() env['PRINT_CMD_LINE_FUNC'] = print_cmd_line env["SHOBJPREFIX"] = "generated/" shibokenunwrap = env.SharedObject(source='shibokenunwrap.cxx') sipunwrap = env.SharedObject(source='sipunwrap.cxx') clamengine_module = env.SharedLibrary ( target='ipyclam/Clam_Engine', source=[ 'Clam_Engine.cxx', shibokenunwrap, sipunwrap, ], SHLIBPREFIX='', ) if env['enable_clam'] else [] clamengine_config_module = env.SharedLibrary ( target='ipyclam/Clam_ConfigurationProxy', source=[ 'Clam_ConfigurationProxy.cxx', 'ConfigurationProxy.cxx', ], SHLIBPREFIX='', ) if env['enable_clam'] else [] jackengine_module = env.SharedLibrary ( target='ipyclam/Jack_Engine', source=[ 'Jack_Engine.cxx', ], SHLIBPREFIX='', ) if env['enable_jack'] else [] dummyProcessingsModule = env.SharedLibrary ( target='ipyclam/DummyProcessings', source=[ 'DummyProcessings.cxx', ], SHLIBPREFIX='', ) if env['enable_clam'] else [] ui_pyside_module = env.SharedLibrary ( target='ipyclam/ui/PySide', source=[ 'PySideModule.cxx', shibokenunwrap, ], SHLIBPREFIX='', ) ui_pyqt4_module = env.SharedLibrary ( target='ipyclam/ui/PyQt4', source=[ 'PyQt4Module.cxx', sipunwrap, ], SHLIBPREFIX='', ) program = env.Program( target='ipyclam_console', source='ipyclam_console.cxx', ) blacklist = [ "ipyclam/ProxyAPI.py", ] python_modules = [ source for source in glob.glob('ipyclam/*.py') if source not in blacklist and "Test" not in source ] # TODO: Use distutils to get the paths given a prefix or a home schema prefix = os.path.expanduser('~/local') mod_dir = os.path.join(prefix, 'lib', 'python', 'ipyclam') lib_dir = os.path.join(prefix, 'lib', 'python', 'ipyclam') uilib_dir = os.path.join(lib_dir, 'ui') bin_dir = os.path.join(prefix, 'bin') install = [ env.Install(targetDir, files) for targetDir, files in [ ( lib_dir,[ clamengine_module, clamengine_config_module, jackengine_module, python_modules, ]), ( uilib_dir, [ ui_pyside_module, ui_pyqt4_module, 'ipyclam/ui/__init__.py', ]), ( bin_dir,[ program, "ipyclam_console", "ipyclam_qtconsole", ]), ]] env.Alias('install', install) Default( jackengine_module, clamengine_module, clamengine_config_module, dummyProcessingsModule, ui_pyside_module, ui_pyqt4_module, program, )