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.
pull/3577/head
Robert Bragg 7 years ago committed by Niclas Moeslund Overby
parent 61dd46811b
commit ec7b834b6e
  1. 1
      mesonbuild/backend/ninjabackend.py
  2. 5
      test cases/java/7 codegen/com/mesonbuild/Config.java.in
  3. 12
      test cases/java/7 codegen/com/mesonbuild/Simple.java
  4. 14
      test cases/java/7 codegen/com/mesonbuild/TextPrinter.java
  5. 6
      test cases/java/7 codegen/com/mesonbuild/meson.build
  6. 15
      test cases/java/7 codegen/meson.build

@ -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

@ -0,0 +1,5 @@
package com.mesonbuild;
public class Config {
public static final boolean FOOBAR = @foobar@;
}

@ -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();
}
}
}

@ -0,0 +1,14 @@
package com.mesonbuild;
class TextPrinter {
private String msg;
TextPrinter(String s) {
msg = s;
}
public void print() {
System.out.println(msg);
}
}

@ -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)

@ -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)
Loading…
Cancel
Save