[ekg2-commit] r4258 - trunk: trunk/SConstruct

SVN commit svn w toxygen.net
Sob, 9 Sie 2008, 21:33:55 CEST


Author: peres
Date: 2008-08-09 21:33:54 +0200 (Sat, 09 Aug 2008)
New Revision: 4258

Modified:
   trunk/SConstruct
Log:

Pass 'libs' to plugin build, support optional depends.



Modified: trunk/SConstruct
===================================================================
--- trunk/SConstruct	2008-08-09 19:22:33 UTC (rev 4257)
+++ trunk/SConstruct	2008-08-09 19:33:54 UTC (rev 4258)
@@ -118,12 +118,12 @@
 		plugins_state = plugin_states.index(st)
 	plugins.extend(avplugins)
 
-plugins = {}.fromkeys(plugins).keys() # uniq()
 plugins.sort()
+plugins = {}.fromkeys(plugins)
 
 pl = {}
 
-for plugin in list(plugins):
+for plugin in list(plugins.keys()):
 	plugpath = 'plugins/%s' % (plugin)
 	info = SConscript('%s/SConscript' % (plugpath))
 	if not info:
@@ -133,21 +133,30 @@
 			if not k in info:
 				info[k] = plugin_def[k]
 	if plugin_states.index(info['state']) < plugins_state:
-		plugins.remove(plugin)
+		del plugins[plugin]
 		continue
 
 	if 'nocompile' in info:
-		plugins.remove(plugin)
+		del plugins[plugin]
 		print '[%s] Disabling due to build system incompatibility (probably junk in srcdir).' % (plugin)
 		continue
+
+	libs = []
 	for dep in info['depends']:
-		if not ExtTest(dep):
-			plugins.remove(plugin)
+		if not ExtTest(dep, ['libs']):
 			print '[%s] Dependency not satisfied: %s' % (plugin, dep)
 			info['fail'] = True
 	if 'fail' in info:
+		del plugins[plugin]
 		continue
+	for dep in info['optdepends']:
+		if not ExtTest(dep, ['libs']):
+			print '[%s] Optional dependency not satisfied: %s' % (plugin, dep)
 
+	plugins[plugin] = {
+		'libs':	libs
+		}
+
 	type = info['type']
 	if not pl.has_key(type):
 		pl[type] = []
@@ -164,9 +173,9 @@
 
 env.Program('ekg/ekg2', Glob('ekg/*.c'), LIBS = ekg_libs, LIBPATH = './compat')
 
-for plugin in plugins:
+for plugin, data in plugins.items():
 	plugpath = 'plugins/%s' % (plugin)
 	Mkdir('%s/.libs' % (plugin))
-	env.SharedLibrary('%s/.libs/%s' % (plugpath, plugin), Glob('%s/*.c' % (plugpath)), LIBPREFIX = '', LIBS = [])
+	env.SharedLibrary('%s/.libs/%s' % (plugpath, plugin), Glob('%s/*.c' % (plugpath)), LIBPREFIX = '', LIBS = data['libs'])
 
 # vim:ts=4:sts=4:syntax=python



Więcej informacji o liście dyskusyjnej ekg2-commit