diff options
-rw-r--r-- | build.py | 1 | ||||
-rw-r--r-- | ninjabackend.py | 13 | ||||
-rw-r--r-- | test cases/java/1 basic/com/mesonbuild/Simple.java (renamed from test cases/java/1 basic/com/sourceforge/meson/Simple.java) | 2 | ||||
-rw-r--r-- | test cases/java/1 basic/meson.build | 4 | ||||
-rw-r--r-- | test cases/java/2 subdir/sub/com/mesonbuild/Simple.java | 8 | ||||
-rw-r--r-- | test cases/java/2 subdir/sub/com/mesonbuild/TextPrinter.java | 14 | ||||
-rw-r--r-- | test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java | 7 | ||||
-rw-r--r-- | test cases/java/2 subdir/sub/meson.build | 7 |
8 files changed, 40 insertions, 16 deletions
@@ -915,6 +915,7 @@ class Jar(BuildTarget): if not s.endswith('.java'): raise InvalidArguments('Jar source %s is not a java file.' % s) self.filename = self.name + '.jar' + incdirs = kwargs.get('include_directories', []) def get_main_class(self): return self.main_class diff --git a/ninjabackend.py b/ninjabackend.py index 2f4aea7..98cc579 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -675,16 +675,18 @@ int dummy; if main_class != '': e = 'e' for src in src_list: - class_list.append(self.generate_single_java_compile(src, target, compiler, outfile)) + plain_class_path = self.generate_single_java_compile(src, target, compiler, outfile) + class_list.append(plain_class_path) + class_dep_list = [os.path.join(self.get_target_private_dir(target), i) for i in class_list] jar_rule = 'java_LINKER' commands = [c+m+e+f] if e != '': commands.append(main_class) commands.append(self.get_target_filename(target)) - commands += ['-C', self.get_target_private_dir(target)] - commands += class_list + for cls in class_list: + commands += ['-C', self.get_target_private_dir(target), cls] elem = NinjaBuildElement(outname_rel, jar_rule, []) - elem.add_dep([os.path.join(self.get_target_private_dir(target), i) for i in class_list]) + elem.add_dep(class_dep_list) elem.add_item('ARGS', commands) elem.write(outfile) self.check_outputs(elem) @@ -750,6 +752,9 @@ int dummy; args = [] args += compiler.get_buildtype_args(self.environment.coredata.get_builtin_option('buildtype')) args += compiler.get_output_args(self.get_target_private_dir(target)) + for i in target.include_dirs: + for idir in i.get_incdirs(): + args += ['-sourcepath', os.path.join(self.build_to_src, i.curdir, idir)] rel_src = src.rel_to_builddir(self.build_to_src) plain_class_path = src.fname[:-4] + 'class' rel_obj = os.path.join(self.get_target_private_dir(target), plain_class_path) diff --git a/test cases/java/1 basic/com/sourceforge/meson/Simple.java b/test cases/java/1 basic/com/mesonbuild/Simple.java index ef90190..325a49a 100644 --- a/test cases/java/1 basic/com/sourceforge/meson/Simple.java +++ b/test cases/java/1 basic/com/mesonbuild/Simple.java @@ -1,4 +1,4 @@ -package com.sourceforge.meson; +package com.mesonbuild; class Simple { public static void main(String [] args) { diff --git a/test cases/java/1 basic/meson.build b/test cases/java/1 basic/meson.build index 8d5f272..bed5c0f 100644 --- a/test cases/java/1 basic/meson.build +++ b/test cases/java/1 basic/meson.build @@ -1,5 +1,5 @@ project('simplejava', 'java') -javaprog = jar('myprog', 'com/sourceforge/meson/Simple.java', - main_class : 'com.sourceforge.meson.Simple') +javaprog = jar('myprog', 'com/mesonbuild/Simple.java', + main_class : 'com.mesonbuild.Simple') test('mytest', javaprog) diff --git a/test cases/java/2 subdir/sub/com/mesonbuild/Simple.java b/test cases/java/2 subdir/sub/com/mesonbuild/Simple.java new file mode 100644 index 0000000..05a73ac --- /dev/null +++ b/test cases/java/2 subdir/sub/com/mesonbuild/Simple.java @@ -0,0 +1,8 @@ +package com.mesonbuild; + +class Simple { + public static void main(String [] args) { + TextPrinter t = new TextPrinter("Printing from Java."); + t.print(); + } +} diff --git a/test cases/java/2 subdir/sub/com/mesonbuild/TextPrinter.java b/test cases/java/2 subdir/sub/com/mesonbuild/TextPrinter.java new file mode 100644 index 0000000..7e330a6 --- /dev/null +++ b/test cases/java/2 subdir/sub/com/mesonbuild/TextPrinter.java @@ -0,0 +1,14 @@ +package com.mesonbuild; + +class TextPrinter { + + private String msg; + + TextPrinter(String s) { + msg = s; + } + + public void print() { + System.out.println(msg); + } +} diff --git a/test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java b/test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java deleted file mode 100644 index ef90190..0000000 --- a/test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.sourceforge.meson; - -class Simple { - public static void main(String [] args) { - System.out.println("Java is working.\n"); - } -} diff --git a/test cases/java/2 subdir/sub/meson.build b/test cases/java/2 subdir/sub/meson.build index 13a05e2..807ca51 100644 --- a/test cases/java/2 subdir/sub/meson.build +++ b/test cases/java/2 subdir/sub/meson.build @@ -1,3 +1,6 @@ -javaprog = jar('myprog', 'com/sourceforge/meson/Simple.java', - main_class : 'com.sourceforge.meson.Simple') +javaprog = jar('myprog', + 'com/mesonbuild/Simple.java', + 'com/mesonbuild/TextPrinter.java', + main_class : 'com.mesonbuild.Simple', + include_directories : include_directories('.')) test('subdirtest', javaprog) |