diff options
author | Steven Knight <knight@baldmt.com> | 2003-05-06 05:58:31 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2003-05-06 05:58:31 (GMT) |
commit | aaf2cbb74e00fdc89da432d18e9fe40bb7de3b9d (patch) | |
tree | c399116a6a33ae9ad69d04dd43c2f272737c2074 /src/engine/SCons/Tool/javac.py | |
parent | e591784eb29edfaf2760024f57ee1462f1bae1f3 (diff) | |
download | SCons-aaf2cbb74e00fdc89da432d18e9fe40bb7de3b9d.zip SCons-aaf2cbb74e00fdc89da432d18e9fe40bb7de3b9d.tar.gz SCons-aaf2cbb74e00fdc89da432d18e9fe40bb7de3b9d.tar.bz2 |
Refactor to use real Nodes for command-line attributes and eliminate PathList. (Charles Crain)
Diffstat (limited to 'src/engine/SCons/Tool/javac.py')
-rw-r--r-- | src/engine/SCons/Tool/javac.py | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/src/engine/SCons/Tool/javac.py b/src/engine/SCons/Tool/javac.py index 331e183..8606c02 100644 --- a/src/engine/SCons/Tool/javac.py +++ b/src/engine/SCons/Tool/javac.py @@ -225,50 +225,50 @@ else: """ return os.path.split(file) +def emit_java_files(target, source, env): + """Create and return lists of source java files + and their corresponding target class files. + """ + env['_JAVACLASSDIR'] = target[0] + env['_JAVASRCDIR'] = source[0].rdir() + java_suffix = env.get('JAVASUFFIX', '.java') + class_suffix = env.get('JAVACLASSSUFFIX', '.class') + + slist = [] + js = _my_normcase(java_suffix) + def visit(arg, dirname, names, js=js, dirnode=source[0].rdir()): + java_files = filter(lambda n, js=js: + _my_normcase(n[-len(js):]) == js, + names) + mydir = dirnode.Dir(dirname) + java_paths = map(lambda f, d=mydir: d.File(f), java_files) + arg.extend(java_paths) + os.path.walk(source[0].rdir().get_abspath(), visit, slist) + + tlist = [] + for file in slist: + pkg_dir, classes = parse_java(file.get_abspath()) + if pkg_dir: + for c in classes: + tlist.append(target[0].Dir(pkg_dir).File(c+class_suffix)) + elif classes: + for c in classes: + tlist.append(target[0].File(c+class_suffix)) + else: + # This is an odd end case: no package and no classes. + # Just do our best based on the source file name. + tlist.append(target[0].File(str(file)[:-len(java_suffix)] + class_suffix)) + + return tlist, slist + +JavaBuilder = SCons.Builder.Builder(action = '$JAVACCOM', + emitter = emit_java_files, + target_factory = SCons.Node.FS.default_fs.Dir, + source_factory = SCons.Node.FS.default_fs.Dir) + def generate(env): """Add Builders and construction variables for javac to an Environment.""" - def emit_java_files(target, source, env): - """Create and return lists of source java files - and their corresponding target class files. - """ - env['_JAVACLASSDIR'] = target[0] - env['_JAVASRCDIR'] = source[0].rdir() - java_suffix = env.get('JAVASUFFIX', '.java') - class_suffix = env.get('JAVACLASSSUFFIX', '.class') - - slist = [] - js = _my_normcase(java_suffix) - def visit(arg, dirname, names, js=js, dirnode=source[0].rdir()): - java_files = filter(lambda n, js=js: - _my_normcase(n[-len(js):]) == js, - names) - mydir = dirnode.Dir(dirname) - java_paths = map(lambda f, d=mydir: d.File(f), java_files) - arg.extend(java_paths) - os.path.walk(source[0].rdir().abspath, visit, slist) - - tlist = [] - for file in slist: - pkg_dir, classes = parse_java(file.abspath) - if pkg_dir: - for c in classes: - tlist.append(target[0].Dir(pkg_dir).File(c+class_suffix)) - elif classes: - for c in classes: - tlist.append(target[0].File(c+class_suffix)) - else: - # This is an odd end case: no package and no classes. - # Just do our best based on the source file name. - tlist.append(target[0].File(str(file)[:-len(java_suffix)] + class_suffix)) - - return tlist, slist - - JavaBuilder = SCons.Builder.Builder(action = '$JAVACCOM', - emitter = emit_java_files, - target_factory = SCons.Node.FS.default_fs.Dir, - source_factory = SCons.Node.FS.default_fs.Dir) - env['BUILDERS']['Java'] = JavaBuilder env['JAVAC'] = 'javac' |