javaw¶
Java support
Javac is one of the few compilers that behaves very badly:
- it outputs files where it wants to (-d is only for the package root)
- it recompiles files silently behind your back
- it outputs an undefined amount of files (inner classes)
Remember that the compilation can be performed using Jython[1] rather than regular Python. Instead of running one of the following commands:
./waf configure
python waf configure
You would have to run:
java -jar /path/to/jython.jar waf configure
-
waflib.Tools.javaw.
apply_java
(self)[source]¶ Task generator method
Create a javac task for compiling .java files. There can be only one javac task by task generator.
Feature: javac
-
waflib.Tools.javaw.
use_javac_files
(self)[source]¶ Task generator method
Processes the use attribute referring to other java compilations
Feature: javac
-
waflib.Tools.javaw.
set_classpath
(self)[source]¶ Task generator method
Sets the CLASSPATH value on the javac task previously created.
Feature: javac
-
waflib.Tools.javaw.
jar_files
(self)[source]¶ Task generator method
Creates a jar task (one maximum per task generator)
Feature: jar
-
waflib.Tools.javaw.
use_jar_files
(self)[source]¶ Task generator method
Processes the use attribute to set the build order on the tasks created by another task generator.
Feature: jar
-
class
waflib.Tools.javaw.
JTask
(*k, **kw)[source]¶ Bases:
waflib.Task.Task
Base class for java and jar tasks; provides functionality to run long commands
-
hcode
= '\tdef run(self):\n\t\t"""\n\t\tCalled by threads to execute the tasks. The default is empty and meant to be overridden in subclasses.\n\n\t\t.. warning:: It is a bad idea to create nodes in this method, so avoid :py:meth:`waflib.Node.Node.ant_glob`\n\n\t\t:rtype: int\n\t\t"""\n\t\tif hasattr(self, \'fun\'):\n\t\t\treturn self.fun(self)\n\t\treturn 0\n'¶
-
-
class
waflib.Tools.javaw.
jar_create
(*k, **kw)[source]¶ Bases:
waflib.Tools.javaw.JTask
Creates a jar file
-
color
= 'GREEN'¶
-
runnable_status
()[source]¶ Wait for dependent tasks to be executed, then read the files to update the list of inputs.
-
hcode
= '${JAR} ${JARCREATE} ${TGT} ${JAROPTS}'¶
-
orig_run_str
= '${JAR} ${JARCREATE} ${TGT} ${JAROPTS}'¶
-
vars
= ['JAR', 'JARCREATE', 'JAROPTS']¶
-
-
class
waflib.Tools.javaw.
javac
(*k, **kw)[source]¶ Bases:
waflib.Tools.javaw.JTask
Compiles java files
-
color
= 'BLUE'¶
-
vars
= ['CLASSPATH', 'JAVAC', 'JAVACFLAGS', 'OUTDIR']¶ The javac task will be executed again if the variables CLASSPATH, JAVACFLAGS, JAVAC or OUTDIR change.
-
runnable_status
()[source]¶ Waits for dependent tasks to be complete, then read the file system to find the input nodes.
-
hcode
= '${JAVAC} -classpath ${CLASSPATH} -d ${OUTDIR} ${JAVACFLAGS} ${SRC}'¶
-
orig_run_str
= '${JAVAC} -classpath ${CLASSPATH} -d ${OUTDIR} ${JAVACFLAGS} ${SRC}'¶
-
-
waflib.Tools.javaw.
create_javadoc
(self)[source]¶ Task generator method
Creates a javadoc task (feature ‘javadoc’)
Feature: javadoc
-
class
waflib.Tools.javaw.
javadoc
(*k, **kw)[source]¶ Bases:
waflib.Task.Task
Builds java documentation
-
color
= 'BLUE'¶
-
hcode
= '\tdef run(self):\n\t\tenv = self.env\n\t\tbld = self.generator.bld\n\t\twd = bld.bldnode\n\n\t\t#add src node + bld node (for generated java code)\n\t\tsrcpath = self.generator.path.abspath() + os.sep + self.generator.srcdir\n\t\tsrcpath += os.pathsep\n\t\tsrcpath += self.generator.path.get_bld().abspath() + os.sep + self.generator.srcdir\n\n\t\tclasspath = env.CLASSPATH\n\t\tclasspath += os.pathsep\n\t\tclasspath += os.pathsep.join(self.classpath)\n\t\tclasspath = "".join(classpath)\n\n\t\tself.last_cmd = lst = []\n\t\tlst.extend(Utils.to_list(env.JAVADOC))\n\t\tlst.extend([\'-d\', self.generator.javadoc_output.abspath()])\n\t\tlst.extend([\'-sourcepath\', srcpath])\n\t\tlst.extend([\'-classpath\', classpath])\n\t\tlst.extend([\'-subpackages\'])\n\t\tlst.extend(self.generator.javadoc_package)\n\t\tlst = [x for x in lst if x]\n\n\t\tself.generator.bld.cmd_and_log(lst, cwd=wd, env=env.env or None, quiet=0)\n'¶
-
-
waflib.Tools.javaw.
check_java_class
(self, classname, with_classpath=None)[source]¶ Configuration Method bound to
waflib.Configure.ConfigurationContext
Checks if the specified java class exists
Parameters: - classname (string) – class to check, like java.util.HashMap
- with_classpath (string) – additional classpath to give
-
waflib.Tools.javaw.
conf
(f)¶ Decorator: attach new configuration functions to
waflib.Build.BuildContext
andwaflib.Configure.ConfigurationContext
. The methods bound will accept a parameter named ‘mandatory’ to disable the configuration errors:def configure(conf): conf.find_program('abc', mandatory=False)
Parameters: f (function) – method to bind
-
waflib.Tools.javaw.
feature
(*k)¶ Decorator that registers a task generator method that will be executed when the object attribute
feature
contains the corresponding key(s):from waflib.Task import feature @feature('myfeature') def myfunction(self): print('that is my feature!') def build(bld): bld(features='myfeature')
Parameters: k (list of string) – feature names
-
waflib.Tools.javaw.
before_method
(*k)[source]¶ Decorator that registera task generator method which will be executed before the functions of given name(s):
from waflib.TaskGen import feature, before @feature('myfeature') @before_method('fun2') def fun1(self): print('feature 1!') @feature('myfeature') def fun2(self): print('feature 2!') def build(bld): bld(features='myfeature')
Parameters: k (list of string) – method names
-
waflib.Tools.javaw.
after_method
(*k)[source]¶ Decorator that registers a task generator method which will be executed after the functions of given name(s):
from waflib.TaskGen import feature, after @feature('myfeature') @after_method('fun2') def fun1(self): print('feature 1!') @feature('myfeature') def fun2(self): print('feature 2!') def build(bld): bld(features='myfeature')
Parameters: k (list of string) – method names
-
waflib.Tools.javaw.
check_jni_headers
(conf)[source]¶ Configuration Method bound to
waflib.Configure.ConfigurationContext
Checks for jni headers and libraries. On success the conf.env variables xxx_JAVA are added for use in C/C++ targets:
def options(opt): opt.load('compiler_c') def configure(conf): conf.load('compiler_c java') conf.check_jni_headers() def build(bld): bld.shlib(source='a.c', target='app', use='JAVA')
Features defined in this module: