#!/usr/bin/python
# SConstruct file for CLAMcore
from buildtools import *
from buildtools.file_retriever import FileRetriever
from buildtools.rulesets import *

import os, sys

Import('core_env version top install_dirs')

def define_module_contents(env) :
	if not os.path.exists('src') :
		os.mkdir('src')
	if not os.path.exists('include' ) :
		os.makedirs('include/CLAM')

	folders = [
		'src/Base',
		'src/Data/Base',
		'src/Data/BasicProcessing/Audio.*',
		'src/Data/Descriptors/Pool',
		'src/Data/Editable',
		'src/Defines',
		'src/Errors',
		'src/Flow/Ports',
		'src/Flow/Networks',
		'src/Flow/Controls',
		'src/Processing/Base',
		'src/Processing/Audio*.*xx',
		'src/Processing/Plugins',
		'src/Standard',
		'src/Storage',
		'src/Storage/Base',
		'src/Storage/XML',
		'src/System',
		'src/System/Threads',
		'externals/CbLib',
		]

	if sys.platform == 'win32' :
		folders.append('src/Defines/Windows')
	else :
		folders.append('src/Defines/Unix')	

	blacklist = [
		'ScaleCnv',
		'LadspaBridge',
		'BlockingNetworkPlayer',
		'JACKNetworkPlayer',
		'PANetworkPlayer',
		'FreewheelingNetworkPlayer',
		]

	if sys.platform == 'win32' :
		blacklist.append( 'Watchdog.+' )

	if core_env['xmlbackend'] == 'xercesc' :
		blacklist.append( 'LibXml.+')
		blacklist.append( 'NullDom.+' )
	elif env['xmlbackend'] == 'xmlpp' :
		blacklist.append( 'Xerces.+')
		blacklist.append( 'NullDom.+' )
	elif env['xmlbackend'] == 'none' :
		blacklist.append( 'Xerces.+' )
		blacklist.append( 'LibXml.+' )

	if not env.has_key('with_ladspa_support') or env['with_ladspa_support'] == False :
		blacklist.append( 'Ladspa.+' )

	if not env.has_key('with_osc_support') or env['with_osc_support'] == False :
		blacklist.append( 'OSC.+')

	
	file_retriever = FileRetriever( top+'/..', folders, blacklist )

	file_retriever.scan_without_copy()

	realHeaders = []
	for orig,target in file_retriever.origTargetHeaders :
		env.CopyFileAndUpdateIncludes(target, orig)
		realHeaders.append(target)

	realSources = []
	for orig,target in file_retriever.origTargetSources:
		env.CopyFileAndUpdateIncludes(target,orig)
		realSources.append(target)

	return realHeaders, realSources

realHeaders, realSources = define_module_contents(core_env)

moduleDependencies = []

lib_tgt, install_tgt = lib_rules( 'core', version, realHeaders , realSources, install_dirs, core_env, moduleDependencies)

Return( 'lib_tgt', 'install_tgt' )
