summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool/javac.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-05-06 05:58:31 (GMT)
committerSteven Knight <knight@baldmt.com>2003-05-06 05:58:31 (GMT)
commitaaf2cbb74e00fdc89da432d18e9fe40bb7de3b9d (patch)
treec399116a6a33ae9ad69d04dd43c2f272737c2074 /src/engine/SCons/Tool/javac.py
parente591784eb29edfaf2760024f57ee1462f1bae1f3 (diff)
downloadSCons-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.py82
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'