diff options
author | Robert Bragg <robert@impossible.com> | 2018-02-08 00:33:17 +0000 |
---|---|---|
committer | Niclas Moeslund Overby <noverby@prozum.dk> | 2018-05-16 14:53:30 +0200 |
commit | ec7b834b6e76aac8cc64b37a9cad643d556139c5 (patch) | |
tree | f0b5add300af79826fade953950ce02fbf32acdd | |
parent | 61dd46811b324a070c9a5007ac9b92a58fce9bb4 (diff) | |
download | meson-ec7b834b6e76aac8cc64b37a9cad643d556139c5.zip meson-ec7b834b6e76aac8cc64b37a9cad643d556139c5.tar.gz meson-ec7b834b6e76aac8cc64b37a9cad643d556139c5.tar.bz2 |
ninja: add build dir to javac -sourcepath
To allow the javac -implicit:class behaviour to know where to find
generated .java files then the build directory for the target is also
added to the -sourcefile path.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 1 | ||||
-rw-r--r-- | test cases/java/7 codegen/com/mesonbuild/Config.java.in | 5 | ||||
-rw-r--r-- | test cases/java/7 codegen/com/mesonbuild/Simple.java | 12 | ||||
-rw-r--r-- | test cases/java/7 codegen/com/mesonbuild/TextPrinter.java | 14 | ||||
-rw-r--r-- | test cases/java/7 codegen/com/mesonbuild/meson.build | 6 | ||||
-rw-r--r-- | test cases/java/7 codegen/meson.build | 15 |
6 files changed, 53 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 8ac7658..c7e194e 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1031,6 +1031,7 @@ int dummy; args += compiler.get_output_args(self.get_target_private_dir(target)) curdir = target.get_subdir() sourcepath = os.path.join(self.build_to_src, curdir) + os.pathsep + sourcepath += os.path.normpath(curdir) + os.pathsep for i in target.include_dirs: for idir in i.get_incdirs(): sourcepath += os.path.join(self.build_to_src, i.curdir, idir) + os.pathsep diff --git a/test cases/java/7 codegen/com/mesonbuild/Config.java.in b/test cases/java/7 codegen/com/mesonbuild/Config.java.in new file mode 100644 index 0000000..fcc8811 --- /dev/null +++ b/test cases/java/7 codegen/com/mesonbuild/Config.java.in @@ -0,0 +1,5 @@ +package com.mesonbuild; + +public class Config { + public static final boolean FOOBAR = @foobar@; +} diff --git a/test cases/java/7 codegen/com/mesonbuild/Simple.java b/test cases/java/7 codegen/com/mesonbuild/Simple.java new file mode 100644 index 0000000..df3c53d --- /dev/null +++ b/test cases/java/7 codegen/com/mesonbuild/Simple.java @@ -0,0 +1,12 @@ +package com.mesonbuild; + +import com.mesonbuild.Config; + +class Simple { + public static void main(String [] args) { + if (Config.FOOBAR) { + TextPrinter t = new TextPrinter("Printing from Java."); + t.print(); + } + } +} diff --git a/test cases/java/7 codegen/com/mesonbuild/TextPrinter.java b/test cases/java/7 codegen/com/mesonbuild/TextPrinter.java new file mode 100644 index 0000000..7e330a6 --- /dev/null +++ b/test cases/java/7 codegen/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/7 codegen/com/mesonbuild/meson.build b/test cases/java/7 codegen/com/mesonbuild/meson.build new file mode 100644 index 0000000..188bedf --- /dev/null +++ b/test cases/java/7 codegen/com/mesonbuild/meson.build @@ -0,0 +1,6 @@ + +conf_data = configuration_data() +conf_data.set('foobar', 'true') +config_file = configure_file(input : 'Config.java.in', + output : 'Config.java', + configuration : conf_data) diff --git a/test cases/java/7 codegen/meson.build b/test cases/java/7 codegen/meson.build new file mode 100644 index 0000000..f85d45a --- /dev/null +++ b/test cases/java/7 codegen/meson.build @@ -0,0 +1,15 @@ +# If we generate code under the build directory then the backend needs to add +# the build directory to the -sourcepath passed to javac otherwise the compiler +# won't be able to handle the -implicit:class behaviour of automatically +# compiling dependency classes. + +project('codegenjava', 'java') + +subdir('com/mesonbuild') + +javaprog = jar('myprog', + config_file, + 'com/mesonbuild/Simple.java', + 'com/mesonbuild/TextPrinter.java', + main_class : 'com.mesonbuild.Simple') +test('subdirtest', javaprog) |