From ef1c6cdd543a44b6cfd1e86175ce64f2d742c415 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Fri, 6 Mar 2020 10:18:22 -0800 Subject: [PATCH] compilers: Don't deduplicate -L= arguments This breaks LDC and DMD, so just don't do it. --- mesonbuild/compilers/compilers.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 1c0adff49..436b09de4 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -525,6 +525,15 @@ class CompilerArgs(collections.abc.MutableSequence): # both of which are invalid. if arg in cls.dedup2_prefixes: return 0 + if arg.startswith('-L='): + # DMD and LDC proxy all linker arguments using -L=; in conjunction + # with ld64 on macOS this can lead to command line arguments such + # as: `-L=-compatibility_version -L=0 -L=current_version -L=0`. + # These cannot be combined, ld64 insists they must be passed with + # spaces and quoting does not work. if we deduplicate these then + # one of the -L=0 arguments will be removed and the version + # argument will consume the next argument instead. + return 0 if arg in cls.dedup2_args or \ arg.startswith(cls.dedup2_prefixes) or \ arg.endswith(cls.dedup2_suffixes):