Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions mesonbuild/modules/pkgconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,14 @@ def _process_reqs(self, reqs: T.Sequence[T.Union[str, build.StaticLibrary, build
pass
elif isinstance(obj, dependencies.ExternalDependency) and obj.name == 'threads':
pass
elif isinstance(obj, dependencies.InternalDependency) and all(lib.get_id() in self.metadata for lib in obj.libraries):
# Ensure BothLibraries are resolved:
if self.pub_libs and isinstance(self.pub_libs[0], build.StaticLibrary):
obj = obj.get_as_static(recursive=True)
else:
obj = obj.get_as_shared(recursive=True)
for lib in obj.libraries:
processed_reqs.append(self.metadata[lib.get_id()].filebase)
else:
raise mesonlib.MesonException('requires argument not a string, '
'library with pkgconfig-generated file '
Expand Down
13 changes: 13 additions & 0 deletions test cases/common/283 pkgconfig subproject/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
project('simple', 'c', meson_version: '>=1.9.0')
pkgg = import('pkgconfig')

simple2_dep = dependency('simple2')

simple_lib = library('simple',
'simple.c',
dependencies: [simple2_dep]
)

pkgg.generate(simple_lib,
requires: simple2_dep,
)
6 changes: 6 additions & 0 deletions test cases/common/283 pkgconfig subproject/simple.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include"simple.h"
#include <simple2.h>

int simple_function(void) {
return simple_simple_function();
}
6 changes: 6 additions & 0 deletions test cases/common/283 pkgconfig subproject/simple.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef SIMPLE_H_
#define SIMPLE_H_

int simple_function(void);

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
EXPORTS
simple_simple_function @1
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
project('simple2', 'c', meson_version: '>=1.9.0')
pkgg = import('pkgconfig')

lib2 = library('simple2', 'simple2.c', vs_module_defs: 'exports.def')
lib_dep = declare_dependency(link_with: lib2, include_directories: include_directories('.'))

pkgg.generate(lib2)

meson.override_dependency('simple2', lib_dep)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#include"simple2.h"

int simple_simple_function(void) {
return 42;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef SIMPLE2_H_
#define SIMPLE2_H_

int simple_simple_function(void);

#endif
15 changes: 15 additions & 0 deletions test cases/common/283 pkgconfig subproject/test.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"installed": [
{ "type": "file", "file": "usr/lib/pkgconfig/simple.pc"},
{ "type": "file", "file": "usr/lib/pkgconfig/simple2.pc"}
],
"matrix": {
"options": {
"default_library": [
{ "val": "shared" },
{ "val": "static" },
{ "val": "both" }
]
}
}
}
Loading