javaw

Java support

Javac is one of the few compilers that behaves very badly:

  1. it outputs files where it wants to (-d is only for the package root)
  2. it recompiles files silently behind your back
  3. it outputs an undefined amount of files (inner classes)

This tool uses the -verbose flag to track the java classes created. 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

[1] http://www.jython.org/

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

Process the use attribute referring to other java compilations

Feature :javac
waflib.Tools.javaw.set_classpath(self)[source]

Task generator method

Set the CLASSPATH value on the javac task previously created.

Feature :javac
waflib.Tools.javaw.jar_files(self)[source]

Task generator method

Create a jar task. There can be only one jar task by task generator.

Feature :jar
waflib.Tools.javaw.use_jar_files(self)[source]

Task generator method

Process the use attribute to set the build order on the tasks created by another task generator.

Feature :jar
class waflib.Tools.javaw.jar_create(*k, **kw)[source]

Bases: waflib.Task.Task

Create a jar file

runnable_status()[source]

Wait for dependent tasks to be executed, then read the files to update the list of inputs.

class waflib.Tools.javaw.javac(*k, **kw)[source]

Bases: waflib.Task.Task

Compile java files

nocache

The .class files cannot be put into a cache at the moment

vars

The javac task will be executed again if the variables CLASSPATH, JAVACFLAGS, JAVAC or OUTDIR change.

runnable_status()[source]

Wait for dependent tasks to be complete, then read the file system to find the input nodes.

run()[source]

Execute the javac compiler

post_run()[source]

The -verbose flags gives us the files created, so we have to parse the outputs to update the signatures of the nodes created.

waflib.Tools.javaw.configure(self)[source]

Detect the javac, java and jar programs

waflib.Tools.javaw.conf(f)

Decorator: attach new configuration functions to waflib.Build.BuildContext and waflib.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: register 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)

Decorator: register a 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)

Decorator: register 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_java_class(self, classname, with_classpath=None)[source]

Configuration Method bound to waflib.Configure.ConfigurationContext

Check 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.check_jni_headers(conf)[source]

Configuration Method bound to waflib.Configure.ConfigurationContext

Check 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:

Previous topic

tex

Next topic

cs

This Page