diff options
Diffstat (limited to 'main/meson/Remove-duplicated-object-files-in-static-libraries.patch')
-rw-r--r-- | main/meson/Remove-duplicated-object-files-in-static-libraries.patch | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/main/meson/Remove-duplicated-object-files-in-static-libraries.patch b/main/meson/Remove-duplicated-object-files-in-static-libraries.patch deleted file mode 100644 index 927900bc0f..0000000000 --- a/main/meson/Remove-duplicated-object-files-in-static-libraries.patch +++ /dev/null @@ -1,91 +0,0 @@ -From dbc9e971bd320f3df15c1ee74f54858e6792b183 Mon Sep 17 00:00:00 2001 -From: Xavier Claessens <xavier.claessens@collabora.com> -Date: Fri, 11 Oct 2019 11:01:22 -0400 -Subject: [PATCH] Remove duplicated object files in static libraries - -When a static library link_whole to a bunch of other static libraries, -we have to extract all their objects recursively. But that could -introduce duplicated objects. ar is dumb enough to allow this without -error, but once the resulting static library is linked into an -executable or shared library, the linker will complain about duplicated -symbols. ---- - mesonbuild/backend/backends.py | 3 ++- - test cases/unit/69 static link/lib/func17.c | 4 ++++ - test cases/unit/69 static link/lib/func18.c | 6 ++++++ - test cases/unit/69 static link/lib/func19.c | 7 +++++++ - test cases/unit/69 static link/lib/meson.build | 12 ++++++++++++ - 5 files changed, 31 insertions(+), 1 deletion(-) - create mode 100644 test cases/unit/69 static link/lib/func17.c - create mode 100644 test cases/unit/69 static link/lib/func18.c - create mode 100644 test cases/unit/69 static link/lib/func19.c - -diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py -index 947be1cbef..e54809657f 100644 ---- a/mesonbuild/backend/backends.py -+++ b/mesonbuild/backend/backends.py -@@ -281,7 +281,8 @@ def relpath(self, todir, fromdir): - os.path.join('dummyprefixdir', fromdir)) - - def flatten_object_list(self, target, proj_dir_to_build_root=''): -- return self._flatten_object_list(target, target.get_objects(), proj_dir_to_build_root) -+ obj_list = self._flatten_object_list(target, target.get_objects(), proj_dir_to_build_root) -+ return list(dict.fromkeys(obj_list)) - - def _flatten_object_list(self, target, objects, proj_dir_to_build_root): - obj_list = [] -diff --git a/test cases/unit/69 static link/lib/func17.c b/test cases/unit/69 static link/lib/func17.c -new file mode 100644 -index 0000000000..d1d8ec498c ---- /dev/null -+++ b/test cases/unit/69 static link/lib/func17.c -@@ -0,0 +1,4 @@ -+int func17() -+{ -+ return 1; -+} -diff --git a/test cases/unit/69 static link/lib/func18.c b/test cases/unit/69 static link/lib/func18.c -new file mode 100644 -index 0000000000..c149085ba4 ---- /dev/null -+++ b/test cases/unit/69 static link/lib/func18.c -@@ -0,0 +1,6 @@ -+int func17(); -+ -+int func18() -+{ -+ return func17() + 1; -+} -diff --git a/test cases/unit/69 static link/lib/func19.c b/test cases/unit/69 static link/lib/func19.c -new file mode 100644 -index 0000000000..69120e4bf8 ---- /dev/null -+++ b/test cases/unit/69 static link/lib/func19.c -@@ -0,0 +1,7 @@ -+int func17(); -+int func18(); -+ -+int func19() -+{ -+ return func17() + func18(); -+} -diff --git a/test cases/unit/69 static link/lib/meson.build b/test cases/unit/69 static link/lib/meson.build -index 5f04aab6a1..8f95fc4546 100644 ---- a/test cases/unit/69 static link/lib/meson.build -+++ b/test cases/unit/69 static link/lib/meson.build -@@ -66,3 +66,15 @@ libfunc15 = static_library('func15', 'func15.c', - libfunc16 = static_library('func16', 'func16.c', - link_with : libfunc15, - install : true) -+ -+# Verify func17.c.o gets included only once into libfunc19, otherwise -+# func19-shared would failed with duplicated symbol. -+libfunc17 = static_library('func17', 'func17.c', -+ install : false) -+libfunc18 = static_library('func18', 'func18.c', -+ link_with : libfunc17, -+ install : false) -+libfunc19 = static_library('func19', 'func19.c', -+ link_whole : [libfunc17, libfunc18], -+ install : false) -+shared_library('func19-shared', link_whole : [libfunc19]) |