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.
pull/3577/head
Robert Bragg 7 years ago committed by Niclas Moeslund Overby
parent 8a9f7cf133
commit 65b730bd59
  1. 5
      mesonbuild/backend/ninjabackend.py
  2. 8
      test cases/java/5 includedirs/com/mesonbuild/Simple.java
  3. 14
      test cases/java/5 includedirs/com/mesonbuild/TextPrinter.java
  4. 15
      test cases/java/5 includedirs/meson.build

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

@ -0,0 +1,8 @@
package com.mesonbuild;
class Simple {
public static void main(String [] args) {
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,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)
Loading…
Cancel
Save