summaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorlilinzhe <slayercat.subscription@gmail.com>2021-07-19 15:24:44 +0800
committerDaniel Mensinger <daniel@mensinger-ka.de>2021-08-09 19:32:48 +0200
commitdd2e3bf446af0007fa62bf918d77c082f13dbf01 (patch)
tree728450673bb5a8f7e83fc73a6e26c548e34b47c5 /test cases
parent5c87167a34c6ed703444af180fffd8a45a7928ee (diff)
downloadmeson-dd2e3bf446af0007fa62bf918d77c082f13dbf01.tar.gz
pkg-config: support for `-l:libfoo.a`
fixs: #9000 Meson not correctly process with -l:xxx.a link arguments in pkgconfig .pc file. see also:https://stackoverflow.com/questions/48532868/gcc-library-option-with-a-colon-llibevent-a with unit test, unit test will be partially skiped if pkg-config version < 0.28 . see: https://gitlab.freedesktop.org/pkg-config/pkg-config/-/blob/master/NEWS
Diffstat (limited to 'test cases')
-rw-r--r--test cases/unit/97 link full name/.gitignore5
-rw-r--r--test cases/unit/97 link full name/libtestprovider/meson.build20
-rw-r--r--test cases/unit/97 link full name/libtestprovider/provider.c12
-rw-r--r--test cases/unit/97 link full name/proguser/meson.build11
-rw-r--r--test cases/unit/97 link full name/proguser/receiver.c19
5 files changed, 67 insertions, 0 deletions
diff --git a/test cases/unit/97 link full name/.gitignore b/test cases/unit/97 link full name/.gitignore
new file mode 100644
index 000000000..812960172
--- /dev/null
+++ b/test cases/unit/97 link full name/.gitignore
@@ -0,0 +1,5 @@
+*.a
+*.o
+a.out
+libtestprovider.a
+build
diff --git a/test cases/unit/97 link full name/libtestprovider/meson.build b/test cases/unit/97 link full name/libtestprovider/meson.build
new file mode 100644
index 000000000..5855c8180
--- /dev/null
+++ b/test cases/unit/97 link full name/libtestprovider/meson.build
@@ -0,0 +1,20 @@
+project('libtestprovider','c')
+
+libtestprovider=static_library('testprovider',
+ files('./provider.c'),
+ install:true,
+ c_args:['-Wall','-Werror'],
+)
+
+pkg = import('pkgconfig')
+
+
+pkg.generate(
+ name:'testprovider',
+ filebase:'libtestprovider',
+ description: 'fortest',
+ requires: [],
+ libraries_private: ['-Wl,--whole-archive'] +
+ ['-L${libdir}','-l:libtestprovider.a']+
+ ['-Wl,--no-whole-archive']
+)
diff --git a/test cases/unit/97 link full name/libtestprovider/provider.c b/test cases/unit/97 link full name/libtestprovider/provider.c
new file mode 100644
index 000000000..5e79966f7
--- /dev/null
+++ b/test cases/unit/97 link full name/libtestprovider/provider.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+static int g_checked = 0;
+
+static void __attribute__((constructor(101), used)) init_checked(void) {
+ g_checked=100;
+ fprintf(stdout, "inited\n");
+}
+
+
+int get_checked(void) {
+ return g_checked;
+}
diff --git a/test cases/unit/97 link full name/proguser/meson.build b/test cases/unit/97 link full name/proguser/meson.build
new file mode 100644
index 000000000..5be5bc998
--- /dev/null
+++ b/test cases/unit/97 link full name/proguser/meson.build
@@ -0,0 +1,11 @@
+project('testprovider','c')
+
+deplib = dependency('libtestprovider', static:true)
+
+dprovidertest = executable('dprovidertest',
+ files('./receiver.c'),
+ dependencies:[deplib],
+ c_args:['-Wall','-Werror'],
+)
+
+test('testprovider',dprovidertest)
diff --git a/test cases/unit/97 link full name/proguser/receiver.c b/test cases/unit/97 link full name/proguser/receiver.c
new file mode 100644
index 000000000..594601cc8
--- /dev/null
+++ b/test cases/unit/97 link full name/proguser/receiver.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+int __attribute__((weak)) get_checked(void) {
+ return -1;
+}
+
+
+#define CHECK_VALUE (100)
+#define TEST_SUCCESS (0)
+#define TEST_FAILTURE (-1)
+
+int main(void) {
+ if (get_checked() == CHECK_VALUE) {
+ fprintf(stdout,"good\n");
+ return TEST_SUCCESS;
+ }
+ fprintf(stdout,"bad\n");
+ return TEST_FAILTURE;
+}
+