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;
|
||||
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;
|
||||
|
@ -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