meson: Fix linking ObjC objects on Darwin
https://github.com/NixOS/nixpkgs/pull/54007#issuecomment-454693658
This commit is contained in:
parent
2122baf8f6
commit
2f4e167156
@ -44,6 +44,13 @@ python3Packages.buildPythonApplication rec {
|
|||||||
src = ./fix-rpath.patch;
|
src = ./fix-rpath.patch;
|
||||||
inherit (builtins) storeDir;
|
inherit (builtins) storeDir;
|
||||||
})
|
})
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
# We use custom Clang, which makes Meson think *not Apple*, while still
|
||||||
|
# relying on system linker. When it detects standard Clang, Meson will
|
||||||
|
# pass it `-Wl,-O1` flag but optimizations are not recognized by
|
||||||
|
# Mac linker.
|
||||||
|
# https://github.com/mesonbuild/meson/issues/4784
|
||||||
|
./fix-objc-linking.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
setupHook = ./setup-hook.sh;
|
setupHook = ./setup-hook.sh;
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
--- a/mesonbuild/environment.py
|
||||||
|
+++ b/mesonbuild/environment.py
|
||||||
|
@@ -795,7 +795,7 @@
|
||||||
|
compiler_type = self.get_gnu_compiler_type(defines)
|
||||||
|
version = self.get_gnu_version_from_defines(defines)
|
||||||
|
return GnuObjCCompiler(ccache + compiler, version, compiler_type, is_cross, exe_wrap, defines)
|
||||||
|
- if out.startswith('Apple LLVM'):
|
||||||
|
+ if out.startswith('Apple LLVM') or mesonlib.for_darwin(want_cross, self):
|
||||||
|
return ClangObjCCompiler(ccache + compiler, version, CompilerType.CLANG_OSX, is_cross, exe_wrap)
|
||||||
|
if out.startswith('clang'):
|
||||||
|
return ClangObjCCompiler(ccache + compiler, version, CompilerType.CLANG_STANDARD, is_cross, exe_wrap)
|
||||||
|
@@ -822,7 +822,7 @@
|
||||||
|
compiler_type = self.get_gnu_compiler_type(defines)
|
||||||
|
version = self.get_gnu_version_from_defines(defines)
|
||||||
|
return GnuObjCPPCompiler(ccache + compiler, version, compiler_type, is_cross, exe_wrap, defines)
|
||||||
|
- if out.startswith('Apple LLVM'):
|
||||||
|
+ if out.startswith('Apple LLVM') or mesonlib.for_darwin(want_cross, self):
|
||||||
|
return ClangObjCPPCompiler(ccache + compiler, version, CompilerType.CLANG_OSX, is_cross, exe_wrap)
|
||||||
|
if out.startswith('clang'):
|
||||||
|
return ClangObjCPPCompiler(ccache + compiler, version, CompilerType.CLANG_STANDARD, is_cross, exe_wrap)
|
Loading…
x
Reference in New Issue
Block a user