aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-12-10 22:49:41 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-12-12 21:01:10 +0200
commit5787a4b4fba7a5ef3075b30d941239e17ef4fa4f (patch)
treef3d337b59e8077362bba250226d1125d7f271128
parente128d26b350e4b8ba02e4de8858aa3deafa07ce1 (diff)
downloadmeson-5787a4b4fba7a5ef3075b30d941239e17ef4fa4f.zip
meson-5787a4b4fba7a5ef3075b30d941239e17ef4fa4f.tar.gz
meson-5787a4b4fba7a5ef3075b30d941239e17ef4fa4f.tar.bz2
Make Java compilation work with inner classes. Closes #1157.
-rw-r--r--mesonbuild/backend/ninjabackend.py6
-rw-r--r--test cases/java/4 inner class/com/mesonbuild/Simple.java15
-rw-r--r--test cases/java/4 inner class/meson.build5
3 files changed, 24 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index b002656..d8dc333 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -803,8 +803,10 @@ int dummy;
if e != '':
commands.append(main_class)
commands.append(self.get_target_filename(target))
- for cls in class_list:
- commands += ['-C', self.get_target_private_dir(target), cls]
+ # Java compilation can produce an arbitrary number of output
+ # class files for a single source file. Thus tell jar to just
+ # grab everything in the final package.
+ commands += ['-C', self.get_target_private_dir(target), '.']
elem = NinjaBuildElement(self.all_outputs, outname_rel, jar_rule, [])
elem.add_dep(class_dep_list)
elem.add_item('ARGS', commands)
diff --git a/test cases/java/4 inner class/com/mesonbuild/Simple.java b/test cases/java/4 inner class/com/mesonbuild/Simple.java
new file mode 100644
index 0000000..fd0e0bf
--- /dev/null
+++ b/test cases/java/4 inner class/com/mesonbuild/Simple.java
@@ -0,0 +1,15 @@
+package com.mesonbuild;
+
+class Simple {
+ class Inner {
+ public String getString() {
+ return "Inner class is working.\n";
+ }
+ }
+
+ public static void main(String [] args) {
+ Simple s = new Simple();
+ Simple.Inner ic = s.new Inner();
+ System.out.println(ic.getString());
+ }
+}
diff --git a/test cases/java/4 inner class/meson.build b/test cases/java/4 inner class/meson.build
new file mode 100644
index 0000000..bed5c0f
--- /dev/null
+++ b/test cases/java/4 inner class/meson.build
@@ -0,0 +1,5 @@
+project('simplejava', 'java')
+
+javaprog = jar('myprog', 'com/mesonbuild/Simple.java',
+ main_class : 'com.mesonbuild.Simple')
+test('mytest', javaprog)