aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurélien Zanelli <aurelien.zanelli@actronika.com>2018-10-31 12:36:13 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2018-11-02 22:27:25 +0200
commit5af84440bcfb3fd5ab8f2791b5e6a57fabfcbc19 (patch)
tree98d1662bdbfac0676eeba2fa2fd5044e74754220
parentf0e1342fb263fff8b2ec514ebc2a5a178739cd28 (diff)
downloadmeson-5af84440bcfb3fd5ab8f2791b5e6a57fabfcbc19.zip
meson-5af84440bcfb3fd5ab8f2791b5e6a57fabfcbc19.tar.gz
meson-5af84440bcfb3fd5ab8f2791b5e6a57fabfcbc19.tar.bz2
ninjabackend: add generated source files to jar compile target source list
Otherwise, passing result of custom_target() to jar() target is ignored and won't be compiled resulting in build fail.
-rw-r--r--mesonbuild/backend/ninjabackend.py9
-rw-r--r--test cases/java/8 codegen custom target/com/mesonbuild/Config.java.in5
-rw-r--r--test cases/java/8 codegen custom target/com/mesonbuild/Simple.java12
-rw-r--r--test cases/java/8 codegen custom target/com/mesonbuild/TextPrinter.java14
-rw-r--r--test cases/java/8 codegen custom target/com/mesonbuild/meson.build8
-rw-r--r--test cases/java/8 codegen custom target/meson.build15
6 files changed, 63 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 563b959..229980d 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -767,6 +767,15 @@ int dummy;
main_class = target.get_main_class()
if main_class != '':
e = 'e'
+
+ # Add possible java generated files to src list
+ generated_sources = self.get_target_generated_sources(target)
+ for rel_src, gensrc in generated_sources.items():
+ dirpart, fnamepart = os.path.split(rel_src)
+ raw_src = File(True, dirpart, fnamepart)
+ if rel_src.endswith('.java'):
+ src_list.append(raw_src)
+
for src in src_list:
plain_class_path = self.generate_single_java_compile(src, target, compiler, outfile)
class_list.append(plain_class_path)
diff --git a/test cases/java/8 codegen custom target/com/mesonbuild/Config.java.in b/test cases/java/8 codegen custom target/com/mesonbuild/Config.java.in
new file mode 100644
index 0000000..8845985
--- /dev/null
+++ b/test cases/java/8 codegen custom target/com/mesonbuild/Config.java.in
@@ -0,0 +1,5 @@
+package com.mesonbuild;
+
+public class Config {
+ public static final boolean FOOBAR = true;
+}
diff --git a/test cases/java/8 codegen custom target/com/mesonbuild/Simple.java b/test cases/java/8 codegen custom target/com/mesonbuild/Simple.java
new file mode 100644
index 0000000..df3c53d
--- /dev/null
+++ b/test cases/java/8 codegen custom target/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/8 codegen custom target/com/mesonbuild/TextPrinter.java b/test cases/java/8 codegen custom target/com/mesonbuild/TextPrinter.java
new file mode 100644
index 0000000..dc2771c
--- /dev/null
+++ b/test cases/java/8 codegen custom target/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/8 codegen custom target/com/mesonbuild/meson.build b/test cases/java/8 codegen custom target/com/mesonbuild/meson.build
new file mode 100644
index 0000000..67b98a4
--- /dev/null
+++ b/test cases/java/8 codegen custom target/com/mesonbuild/meson.build
@@ -0,0 +1,8 @@
+python = import('python').find_installation('python3')
+
+config_file = custom_target('confgen',
+ input : 'Config.java.in',
+ output : 'Config.java',
+ command : [python, '-c',
+ 'import shutil; import sys; shutil.copy(sys.argv[1], sys.argv[2])',
+ '@INPUT@', '@OUTPUT@'])
diff --git a/test cases/java/8 codegen custom target/meson.build b/test cases/java/8 codegen custom target/meson.build
new file mode 100644
index 0000000..ab441a6
--- /dev/null
+++ b/test cases/java/8 codegen custom target/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[0],
+ 'com/mesonbuild/Simple.java',
+ 'com/mesonbuild/TextPrinter.java',
+ main_class : 'com.mesonbuild.Simple')
+test('subdirtest', javaprog)