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/NEWSpull/9082/head
parent
5c87167a34
commit
dd2e3bf446
7 changed files with 134 additions and 0 deletions
@ -0,0 +1,5 @@ |
||||
*.a |
||||
*.o |
||||
a.out |
||||
libtestprovider.a |
||||
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'] |
||||
) |
@ -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; |
||||
} |
@ -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) |
@ -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; |
||||
} |
||||
|
Loading…
Reference in new issue