diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-03-29 15:46:12 -0400 |
---|---|---|
committer | Xavier Claessens <xavier.claessens@collabora.com> | 2018-04-03 15:20:19 -0400 |
commit | 5eef325ab61820ca0c3fa5673afc917dde2aa1ef (patch) | |
tree | 00de9cfcff5183367b153fa6da9260cc8033aeed /mesonbuild/modules/pkgconfig.py | |
parent | cf0e997167e2a9657be58a1ae49b7a4f566d6083 (diff) | |
download | meson-5eef325ab61820ca0c3fa5673afc917dde2aa1ef.zip meson-5eef325ab61820ca0c3fa5673afc917dde2aa1ef.tar.gz meson-5eef325ab61820ca0c3fa5673afc917dde2aa1ef.tar.bz2 |
pkgconfig generator: Only skip dependencies when using shared_library()
It is weird and inconsistent to have different pc file depending on
default_library value when using library() or build_target(). We should
skip dependencies only when user explicitly want shared library only.
Diffstat (limited to 'mesonbuild/modules/pkgconfig.py')
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index ef74d63..c587f84 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -105,26 +105,24 @@ class DependenciesHelper: if obj.found(): processed_libs += obj.get_link_args() processed_cflags += obj.get_compile_args() - elif isinstance(obj, build.SharedLibrary): + elif isinstance(obj, build.SharedLibrary) and obj.shared_library_only: + # Do not pull dependencies for shared libraries because they are + # only required for static linking. Adding private requires has + # the side effect of exposing their cflags, which is the + # intended behaviour of pkg-config but force Debian to add more + # than needed build deps. + # See https://bugs.freedesktop.org/show_bug.cgi?id=105572 processed_libs.append(obj) if public: if not hasattr(obj, 'generated_pc'): obj.generated_pc = self.name - elif isinstance(obj, build.StaticLibrary): - # Due to a "feature" in pkgconfig, it leaks out private dependencies. - # Thus we will not add them to the pc file unless the target - # we are processing is a static library. - # - # This way (hopefully) "pkgconfig --libs --static foobar" works - # and "pkgconfig --cflags/--libs foobar" does not have any trace - # of dependencies that the build file creator has not explicitly - # added to the dependency list. + elif isinstance(obj, (build.SharedLibrary, build.StaticLibrary)): processed_libs.append(obj) + self.add_priv_libs(obj.get_dependencies()) + self.add_priv_libs(obj.get_external_deps()) if public: if not hasattr(obj, 'generated_pc'): obj.generated_pc = self.name - self.add_priv_libs(obj.get_dependencies()) - self.add_priv_libs(obj.get_external_deps()) elif isinstance(obj, str): processed_libs.append(obj) else: |