aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-03-11 23:04:14 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2014-03-11 23:04:14 +0200
commitc7865cd98f0a420845cb50cf77e1f0c8f266475f (patch)
treeab8958e02c6ae3a8c4f4042d8321976cc571ea8d
parenta2cb207762b466f471e63e6b5d1a84adf8874767 (diff)
downloadmeson-c7865cd98f0a420845cb50cf77e1f0c8f266475f.zip
meson-c7865cd98f0a420845cb50cf77e1f0c8f266475f.tar.gz
meson-c7865cd98f0a420845cb50cf77e1f0c8f266475f.tar.bz2
Now with working subdirs for Java.
-rw-r--r--backends.py20
-rw-r--r--test cases/java/2 subdir/meson.build3
-rw-r--r--test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java7
-rw-r--r--test cases/java/2 subdir/sub/meson.build3
4 files changed, 24 insertions, 9 deletions
diff --git a/backends.py b/backends.py
index cf233b8..7fe54e1 100644
--- a/backends.py
+++ b/backends.py
@@ -246,7 +246,7 @@ class Backend():
subdir = target.get_subdir()
outname_rel = os.path.join(subdir, fname)
src_list = target.get_sources()
- obj_list = []
+ class_list = []
compiler = self.get_compiler_for_source(src_list[0])
assert(compiler.get_language() == 'java')
c = 'c'
@@ -257,31 +257,33 @@ class Backend():
if main_class != '':
e = 'e'
for src in src_list:
- obj_list.append(self.generate_single_java_compile(src, target, compiler, outfile))
+ class_list.append(self.generate_single_java_compile(subdir, src, target, compiler, outfile))
jar_rule = 'java_LINKER'
commands = [c+m+e+f]
if e != '':
commands.append(main_class)
commands.append(self.get_target_filename(target))
- commands += obj_list
+ commands += ['-C', self.get_target_private_dir(target)]
+ commands += class_list
elem = NinjaBuildElement(outname_rel, jar_rule, [])
- elem.add_dep(obj_list)
+ elem.add_dep([os.path.join(self.get_target_private_dir(target), i) for i in class_list])
elem.add_item('FLAGS', commands)
elem.write(outfile)
- def generate_single_java_compile(self, src, target, compiler, outfile):
+ def generate_single_java_compile(self, subdir, src, target, compiler, outfile):
buildtype = self.environment.coredata.buildtype
args = []
if buildtype == 'debug':
args += compiler.get_debug_flags()
- args += compiler.get_output_flags(self.get_target_dir(target))
- rel_src = os.path.join(self.build_to_src, src)
- rel_obj = os.path.join(target.get_subdir(), src[:-4] + 'class')
+ args += compiler.get_output_flags(self.get_target_private_dir(target))
+ rel_src = os.path.join(self.build_to_src, subdir, src)
+ plain_class_path = src[:-4] + 'class'
+ rel_obj = os.path.join(self.get_target_private_dir(target), plain_class_path)
element = NinjaBuildElement(rel_obj,
compiler.get_language() + '_COMPILER', rel_src)
element.add_item('FLAGS', args)
element.write(outfile)
- return rel_obj
+ return plain_class_path
def determine_linker(self, target, src):
if isinstance(target, build.StaticLibrary):
diff --git a/test cases/java/2 subdir/meson.build b/test cases/java/2 subdir/meson.build
new file mode 100644
index 0000000..5aaa028
--- /dev/null
+++ b/test cases/java/2 subdir/meson.build
@@ -0,0 +1,3 @@
+project('subdirjava', 'java')
+
+subdir('sub')
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
new file mode 100644
index 0000000..ef90190
--- /dev/null
+++ b/test cases/java/2 subdir/sub/com/sourceforge/meson/Simple.java
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 0000000..13a05e2
--- /dev/null
+++ b/test cases/java/2 subdir/sub/meson.build
@@ -0,0 +1,3 @@
+javaprog = jar('myprog', 'com/sourceforge/meson/Simple.java',
+ main_class : 'com.sourceforge.meson.Simple')
+test('subdirtest', javaprog)