aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test cases/failing/89 link_with custom target/demo.c5
-rw-r--r--test cases/failing/89 link_with custom target/foo.c3
-rwxr-xr-xtest cases/failing/89 link_with custom target/lib_generator.py24
-rw-r--r--test cases/failing/89 link_with custom target/meson.build23
4 files changed, 55 insertions, 0 deletions
diff --git a/test cases/failing/89 link_with custom target/demo.c b/test cases/failing/89 link_with custom target/demo.c
new file mode 100644
index 0000000..b6feaca
--- /dev/null
+++ b/test cases/failing/89 link_with custom target/demo.c
@@ -0,0 +1,5 @@
+int func_in_foo();
+
+int main(int argc, char **argv) {
+ return func_in_foo();
+}
diff --git a/test cases/failing/89 link_with custom target/foo.c b/test cases/failing/89 link_with custom target/foo.c
new file mode 100644
index 0000000..2c71422
--- /dev/null
+++ b/test cases/failing/89 link_with custom target/foo.c
@@ -0,0 +1,3 @@
+int func_in_foo() {
+ return 0;
+}
diff --git a/test cases/failing/89 link_with custom target/lib_generator.py b/test cases/failing/89 link_with custom target/lib_generator.py
new file mode 100755
index 0000000..98ed5a8
--- /dev/null
+++ b/test cases/failing/89 link_with custom target/lib_generator.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+
+# Mimic a binary that generates a static library
+
+import os
+import subprocess
+import sys
+
+if __name__ == '__main__':
+ if len(sys.argv) != 4:
+ print(sys.argv[0], 'compiler input_file output_file')
+ sys.exit(1)
+ compiler = sys.argv[1]
+ ifile = sys.argv[2]
+ ofile = sys.argv[3]
+ tmp = ifile + '.o'
+ if compiler.endswith('cl'):
+ subprocess.check_call([compiler, '/nologo', '/MDd', '/Fo' + tmp, '/c', ifile])
+ subprocess.check_call(['lib', '/nologo', '/OUT:' + ofile, tmp])
+ else:
+ subprocess.check_call([compiler, '-c', ifile, '-o', tmp])
+ subprocess.check_call(['ar', 'csr', ofile, tmp])
+
+os.unlink(tmp)
diff --git a/test cases/failing/89 link_with custom target/meson.build b/test cases/failing/89 link_with custom target/meson.build
new file mode 100644
index 0000000..6977ca1
--- /dev/null
+++ b/test cases/failing/89 link_with custom target/meson.build
@@ -0,0 +1,23 @@
+project('link_with custom target', ['c'])
+
+#
+# libraries created by a custom_target currently can be used in sources: (see
+# common/100 manygen/ for an example of that), but not in link_with:
+#
+
+lib_generator = find_program('lib_generator.py')
+
+cc = meson.get_compiler('c').cmd_array().get(-1)
+
+libfoo_target = custom_target(
+ 'libfoo',
+ input: ['foo.c'],
+ output: ['libfoo.a'],
+ command: [lib_generator, cc, '@INPUT@', '@OUTPUT@']
+)
+
+libfoo = declare_dependency(
+ link_with: libfoo_target,
+)
+
+executable('demo', ['demo.c'], dependencies: [libfoo])