diff options
Diffstat (limited to 'waflib/Tools/javaw.py')
-rw-r--r-- | waflib/Tools/javaw.py | 27 |
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): |