summaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2016-10-07 19:56:04 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2016-10-08 01:02:16 +0530
commitce1393609f0f870ffa1b0634f561613b7b627f0b (patch)
treeef7a2f23341f93370784cd9efc38a7441733af9a /test cases
parentee8b3b12a067c52efcfb7c05c638023fbe0495c8 (diff)
downloadmeson-ce1393609f0f870ffa1b0634f561613b7b627f0b.tar.gz
Error out if shared lib links to static lib without PIC
This is only needed on Linux and BSD. So, we always unconditionally enable self.pic for Windows and OS X.
Diffstat (limited to 'test cases')
-rw-r--r--test cases/failing/33 exe static shared/meson.build11
-rw-r--r--test cases/failing/33 exe static shared/prog.c10
-rw-r--r--test cases/failing/33 exe static shared/shlib2.c16
-rw-r--r--test cases/failing/33 exe static shared/stat.c3
4 files changed, 40 insertions, 0 deletions
diff --git a/test cases/failing/33 exe static shared/meson.build b/test cases/failing/33 exe static shared/meson.build
new file mode 100644
index 000000000..b1027647d
--- /dev/null
+++ b/test cases/failing/33 exe static shared/meson.build
@@ -0,0 +1,11 @@
+project('statchain', 'c')
+
+host_system = host_machine.system()
+if host_system == 'windows' or host_system == 'darwin'
+ error('Test only fails on Linux and BSD')
+endif
+
+statlib = static_library('stat', 'stat.c', pic : false)
+shlib2 = shared_library('shr2', 'shlib2.c', link_with : statlib)
+exe = executable('prog', 'prog.c', link_with : shlib2)
+test('runtest', exe)
diff --git a/test cases/failing/33 exe static shared/prog.c b/test cases/failing/33 exe static shared/prog.c
new file mode 100644
index 000000000..26603b694
--- /dev/null
+++ b/test cases/failing/33 exe static shared/prog.c
@@ -0,0 +1,10 @@
+int shlibfunc2();
+int statlibfunc();
+
+int main(int argc, char **argv) {
+ if (statlibfunc() != 42)
+ return 1;
+ if (shlibfunc2() != 24)
+ return 1;
+ return 0;
+}
diff --git a/test cases/failing/33 exe static shared/shlib2.c b/test cases/failing/33 exe static shared/shlib2.c
new file mode 100644
index 000000000..5b68843dc
--- /dev/null
+++ b/test cases/failing/33 exe static shared/shlib2.c
@@ -0,0 +1,16 @@
+#if defined _WIN32 || defined __CYGWIN__
+ #define DLL_PUBLIC __declspec(dllexport)
+#else
+ #if defined __GNUC__
+ #define DLL_PUBLIC __attribute__ ((visibility("default")))
+ #else
+ #pragma message ("Compiler does not support symbol visibility.")
+ #define DLL_PUBLIC
+ #endif
+#endif
+
+int statlibfunc(void);
+
+int DLL_PUBLIC shlibfunc2(void) {
+ return 24;
+}
diff --git a/test cases/failing/33 exe static shared/stat.c b/test cases/failing/33 exe static shared/stat.c
new file mode 100644
index 000000000..56ec66c67
--- /dev/null
+++ b/test cases/failing/33 exe static shared/stat.c
@@ -0,0 +1,3 @@
+int statlibfunc() {
+ return 42;
+}