aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-01-10 22:31:56 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-01-10 22:31:56 +0200
commite374b53788ff27f1fa19da77e60ea39dacec706c (patch)
tree683098ab2834f66344cc6ff08dfd1466a5cc7338
parentf89023c58be0abe1fb68900cb6ceacfcdaa474d9 (diff)
downloadmeson-e374b53788ff27f1fa19da77e60ea39dacec706c.zip
meson-e374b53788ff27f1fa19da77e60ea39dacec706c.tar.gz
meson-e374b53788ff27f1fa19da77e60ea39dacec706c.tar.bz2
Build Java projects with multiple files and other cleanups.
-rw-r--r--build.py1
-rw-r--r--ninjabackend.py13
-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.build4
-rw-r--r--test cases/java/2 subdir/sub/com/mesonbuild/Simple.java8
-rw-r--r--test cases/java/2 subdir/sub/com/mesonbuild/TextPrinter.java14
-rw-r--r--test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java7
-rw-r--r--test cases/java/2 subdir/sub/meson.build7
8 files changed, 40 insertions, 16 deletions
diff --git a/build.py b/build.py
index 5787734..7dededa 100644
--- a/build.py
+++ b/build.py
@@ -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)