{"action":"created","issue":{"url":"https://api.github.com/repos/mesonbuild/meson/issues/671","repository_url":"https://api.github.com/repos/mesonbuild/meson","labels_url":"https://api.github.com/repos/mesonbuild/meson/issues/671/labels{/name}","comments_url":"https://api.github.com/repos/mesonbuild/meson/issues/671/comments","events_url":"https://api.github.com/repos/mesonbuild/meson/issues/671/events","html_url":"https://github.com/mesonbuild/meson/issues/671","id":170259957,"number":671,"title":"Explosion of library names and paths in subproject dependencies","user":{"login":"nirbheek","id":75801,"avatar_url":"https://avatars.githubusercontent.com/u/75801?v=3","gravatar_id":"","url":"https://api.github.com/users/nirbheek","html_url":"https://github.com/nirbheek","followers_url":"https://api.github.com/users/nirbheek/followers","following_url":"https://api.github.com/users/nirbheek/following{/other_user}","gists_url":"https://api.github.com/users/nirbheek/gists{/gist_id}","starred_url":"https://api.github.com/users/nirbheek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nirbheek/subscriptions","organizations_url":"https://api.github.com/users/nirbheek/orgs","repos_url":"https://api.github.com/users/nirbheek/repos","events_url":"https://api.github.com/users/nirbheek/events{/privacy}","received_events_url":"https://api.github.com/users/nirbheek/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-08-09T20:16:03Z","updated_at":"2016-08-09T21:21:01Z","closed_at":null,"body":"If you have a sufficiently deeply-nested `declare_dependency` hierarchy with the `dependencies : ` kwarg, you have the same library names and paths repeated over and over and over resulting in an explosive command line argument list filled with redundant paths and library names.\r\n\r\nFor example, the following code:\r\n`library(...,   dependencies : [gstbase_dep, gstpbutils_dep, gstriff_dep, gstaudio_dep, gsttag_dep])`\r\n\r\nWhere each of those dependencies are declared as:\r\n\r\n`declare_dependency(..., dependencies : [gst_base_dep, gst_dep, ...],... )`\r\n\r\ni.e., they refer to each other, and to a bunch of common dependencies. This yields:\r\n\r\n`cc    -o gst/wavparse/libgstwavparse.so 'gst/wavparse/gstwavparse@sha/gstwavparse.c.o' '-Wl,--no-undefined' '-Wl,--as-needed' '-shared' '-fPIC' '-Wl,-soname,libgstwavparse.so' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/pbutils/libgstpbutils-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/video/libgstvideo-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/audio/libgstaudio-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/video/libgstvideo-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/audio/libgstaudio-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/riff/libgstriff-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/audio/libgstaudio-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/audio/libgstaudio-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/audio/libgstaudio-1.0.so.0.901.0' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.901.0' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.901.0' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' 'subprojects/gstreamer/gst/libgstreamer-1.0.so.0.901.0' 'subprojects/gstreamer/gst/printf/libgstprintf.a' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lglib-2.0' '-lgobject-2.0' '-lglib-2.0' '-Wl,--export-dynamic' '-lgmodule-2.0' '-pthread' '-lglib-2.0' '-lm' \r\n`\r\n\r\nAnd this is ridiculous. We should be de-duping this list of libraries while maintaining the order."},"comment":{"url":"https://api.github.com/repos/mesonbuild/meson/issues/comments/238695507","html_url":"https://github.com/mesonbuild/meson/issues/671#issuecomment-238695507","issue_url":"https://api.github.com/repos/mesonbuild/meson/issues/671","id":238695507,"user":{"login":"jpakkane","id":4079821,"avatar_url":"https://avatars.githubusercontent.com/u/4079821?v=3","gravatar_id":"","url":"https://api.github.com/users/jpakkane","html_url":"https://github.com/jpakkane","followers_url":"https://api.github.com/users/jpakkane/followers","following_url":"https://api.github.com/users/jpakkane/following{/other_user}","gists_url":"https://api.github.com/users/jpakkane/gists{/gist_id}","starred_url":"https://api.github.com/users/jpakkane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpakkane/subscriptions","organizations_url":"https://api.github.com/users/jpakkane/orgs","repos_url":"https://api.github.com/users/jpakkane/repos","events_url":"https://api.github.com/users/jpakkane/events{/privacy}","received_events_url":"https://api.github.com/users/jpakkane/received_events","type":"User","site_admin":false},"created_at":"2016-08-09T21:21:01Z","updated_at":"2016-08-09T21:21:01Z","body":"Dedupping `-I` and `-L` is something I have been thinking for a while and can be done without any side effects. Because library symbol resolution order is pants on head stupid, we can't just dedup blindly. If it were up to me (and also supported by VS?) we would just gather up all libs and pass them as a single clump with begin group and end group.\r\n\r\nBut could we do some dedupping smarter. Suppose for example if we have an external dep `foo` that is used in an internal dep `bar` as well as a target `fizz` that uses both `foo` and `bar`. Could we put the extdep there only once at the end? Would something break if it is there only once? (assuming shared libraries, with static it will definitely be possible to break)?"}}
{"actor":{"display_login":"jpakkane"}}