diff options
author | Robert Bragg <robert@impossible.com> | 2018-02-08 00:25:33 +0000 |
---|---|---|
committer | Niclas Moeslund Overby <noverby@prozum.dk> | 2018-05-16 14:53:30 +0200 |
commit | 65b730bd59790338a6bfad6f976ff74b12d6bc13 (patch) | |
tree | 1f8d66753de4dd78aa16f83dc3f6a445bea535f6 | |
parent | 8a9f7cf1332a0be9b2e90d39483c6aa7c67fffee (diff) | |
download | meson-65b730bd59790338a6bfad6f976ff74b12d6bc13.zip meson-65b730bd59790338a6bfad6f976ff74b12d6bc13.tar.gz meson-65b730bd59790338a6bfad6f976ff74b12d6bc13.tar.bz2 |
ninja: pass separated paths to javac -sourcepath
The -sourcepath option can't be passed multiple times to javac, since it
simply overrides prior arguments. Instead -sourcepath takes a colon (or
semi-colon on windows) separated list of paths.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 5 | ||||
-rw-r--r-- | test cases/java/5 includedirs/com/mesonbuild/Simple.java | 8 | ||||
-rw-r--r-- | test cases/java/5 includedirs/com/mesonbuild/TextPrinter.java | 14 | ||||
-rw-r--r-- | test cases/java/5 includedirs/meson.build | 15 |
4 files changed, 41 insertions, 1 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index c508cec..cb51f3b 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1029,9 +1029,12 @@ int dummy; args += self.build.get_project_args(compiler, target.subproject) args += target.get_java_args() args += compiler.get_output_args(self.get_target_private_dir(target)) + sourcepath = '' for i in target.include_dirs: for idir in i.get_incdirs(): - args += ['-sourcepath', os.path.join(self.build_to_src, i.curdir, idir)] + sourcepath += os.path.join(self.build_to_src, i.curdir, idir) + os.pathsep + if sourcepath != '': + args += ['-sourcepath', sourcepath] 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/5 includedirs/com/mesonbuild/Simple.java b/test cases/java/5 includedirs/com/mesonbuild/Simple.java new file mode 100644 index 0000000..05a73ac --- /dev/null +++ b/test cases/java/5 includedirs/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/5 includedirs/com/mesonbuild/TextPrinter.java b/test cases/java/5 includedirs/com/mesonbuild/TextPrinter.java new file mode 100644 index 0000000..7e330a6 --- /dev/null +++ b/test cases/java/5 includedirs/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/5 includedirs/meson.build b/test cases/java/5 includedirs/meson.build new file mode 100644 index 0000000..0b2942d --- /dev/null +++ b/test cases/java/5 includedirs/meson.build @@ -0,0 +1,15 @@ +# The Ninja backend used to try and pass -sourcepath repeatedly for +# multiple includes which would discard prior includes. Since this +# won't compile without the '.' include, this ensures that multiple +# paths are passed in a [semi-]colon separated list instead... + +project('includedirsjava', 'java') + +javaprog = jar('myprog', + 'com/mesonbuild/Simple.java', + 'com/mesonbuild/TextPrinter.java', + main_class : 'com.mesonbuild.Simple', + include_directories : [ include_directories('com'), + include_directories('.'), + include_directories('com/mesonbuild') ]) +test('subdirtest', javaprog) |