summaryrefslogtreecommitdiff
path: root/waflib/Tools/javaw.py
diff options
context:
space:
mode:
Diffstat (limited to 'waflib/Tools/javaw.py')
-rw-r--r--waflib/Tools/javaw.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/waflib/Tools/javaw.py b/waflib/Tools/javaw.py
index 8b7ab2a..adb4e04 100644
--- a/waflib/Tools/javaw.py
+++ b/waflib/Tools/javaw.py
@@ -5,7 +5,7 @@
import os,shutil
from waflib import Task,Utils,Errors,Node
from waflib.Configure import conf
-from waflib.TaskGen import feature,before_method,after_method
+from waflib.TaskGen import feature,before_method,after_method,taskgen_method
from waflib.Tools import ccroot
ccroot.USELIB_VARS['javac']=set(['CLASSPATH','JAVACFLAGS'])
SOURCE_RE='**/*.java'
@@ -65,11 +65,28 @@ def apply_java(self):
names=[x.srcpath()for x in tsk.srcdir]
if names:
tsk.env.append_value('JAVACFLAGS',['-sourcepath',names])
+@taskgen_method
+def java_use_rec(self,name,**kw):
+ if name in self.tmp_use_seen:
+ return
+ self.tmp_use_seen.append(name)
+ try:
+ y=self.bld.get_tgen_by_name(name)
+ except Errors.WafError:
+ self.uselib.append(name)
+ return
+ else:
+ y.post()
+ if hasattr(y,'jar_task'):
+ self.use_lst.append(y.jar_task.outputs[0].abspath())
+ for x in self.to_list(getattr(y,'use',[])):
+ self.java_use_rec(x)
@feature('javac')
@before_method('propagate_uselib_vars')
@after_method('apply_java')
def use_javac_files(self):
- lst=[]
+ self.use_lst=[]
+ self.tmp_use_seen=[]
self.uselib=self.to_list(getattr(self,'uselib',[]))
names=self.to_list(getattr(self,'use',[]))
get=self.bld.get_tgen_by_name
@@ -81,12 +98,14 @@ def use_javac_files(self):
else:
y.post()
if hasattr(y,'jar_task'):
- lst.append(y.jar_task.outputs[0].abspath())
+ self.use_lst.append(y.jar_task.outputs[0].abspath())
self.javac_task.set_run_after(y.jar_task)
else:
for tsk in y.tasks:
self.javac_task.set_run_after(tsk)
- self.env.append_value('CLASSPATH',lst)
+ if getattr(self,'recurse_use',False)or self.bld.env.RECURSE_JAVA:
+ self.java_use_rec(x)
+ self.env.append_value('CLASSPATH',self.use_lst)
@feature('javac')
@after_method('apply_java','propagate_uselib_vars','use_javac_files')
def set_classpath(self):