diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-03-11 23:04:14 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-03-11 23:04:14 +0200 |
commit | c7865cd98f0a420845cb50cf77e1f0c8f266475f (patch) | |
tree | ab8958e02c6ae3a8c4f4042d8321976cc571ea8d | |
parent | a2cb207762b466f471e63e6b5d1a84adf8874767 (diff) | |
download | meson-c7865cd98f0a420845cb50cf77e1f0c8f266475f.zip meson-c7865cd98f0a420845cb50cf77e1f0c8f266475f.tar.gz meson-c7865cd98f0a420845cb50cf77e1f0c8f266475f.tar.bz2 |
Now with working subdirs for Java.
-rw-r--r-- | backends.py | 20 | ||||
-rw-r--r-- | test cases/java/2 subdir/meson.build | 3 | ||||
-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 | 3 |
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) |