summaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <rafael@espindo.la>2018-07-18 15:24:59 -0700
committerJussi Pakkanen <jpakkane@gmail.com>2018-07-19 01:24:59 +0300
commitaee9f589398fa3d6c42b50dd1000598ef36ecfb3 (patch)
tree123903db6a61f272ce9e15dd5f57f8847eac3513 /test cases
parentf390a0a2f39a952422bb8f6d4760b1a576e6d0b9 (diff)
downloadmeson-aee9f589398fa3d6c42b50dd1000598ef36ecfb3.tar.gz
Handle transitive links to 'threads' dependencies. (#3895)
Meson already had code to propagate link dependencies from static libraries to programs that use those static libraries. Unfortunately, it was not handling the special cases of 'threads' and 'openmp' dependencies.
Diffstat (limited to 'test cases')
-rw-r--r--test cases/common/205 static threads/lib1.c13
-rw-r--r--test cases/common/205 static threads/lib2.c5
-rw-r--r--test cases/common/205 static threads/meson.build13
-rw-r--r--test cases/common/205 static threads/prog.c6
4 files changed, 37 insertions, 0 deletions
diff --git a/test cases/common/205 static threads/lib1.c b/test cases/common/205 static threads/lib1.c
new file mode 100644
index 000000000..1aa786c66
--- /dev/null
+++ b/test cases/common/205 static threads/lib1.c
@@ -0,0 +1,13 @@
+#if defined _WIN32
+#include<windows.h>
+#else
+#include<pthread.h>
+#endif
+
+void *f(void) {
+#if defined _WIN32
+ return CreateThread;
+#else
+ return pthread_create;
+#endif
+}
diff --git a/test cases/common/205 static threads/lib2.c b/test cases/common/205 static threads/lib2.c
new file mode 100644
index 000000000..e988814e2
--- /dev/null
+++ b/test cases/common/205 static threads/lib2.c
@@ -0,0 +1,5 @@
+extern void *f(void);
+
+void *g(void) {
+ return f();
+}
diff --git a/test cases/common/205 static threads/meson.build b/test cases/common/205 static threads/meson.build
new file mode 100644
index 000000000..427920034
--- /dev/null
+++ b/test cases/common/205 static threads/meson.build
@@ -0,0 +1,13 @@
+project('threads', 'c')
+
+thread_dep = dependency('threads')
+
+
+lib1 = static_library('lib1', 'lib1.c',
+ dependencies : thread_dep)
+
+lib2 = static_library('lib2', 'lib2.c',
+ link_with : lib1)
+
+executable('prog', 'prog.c',
+ link_with : lib2)
diff --git a/test cases/common/205 static threads/prog.c b/test cases/common/205 static threads/prog.c
new file mode 100644
index 000000000..14a7c760f
--- /dev/null
+++ b/test cases/common/205 static threads/prog.c
@@ -0,0 +1,6 @@
+extern void *g(void);
+
+int main(void) {
+ g();
+ return 0;
+}