fix for cross-builds targeting macosx

pull/1270/head
Mike Sinkovsky 8 years ago committed by Jussi Pakkanen
parent f0bc5568a7
commit 2d2e3b943c
  1. 24
      mesonbuild/compilers.py
  2. 2
      mesonbuild/environment.py

@ -103,23 +103,19 @@ msvc_buildtype_args = {'plain': [],
'minsize': ["/MD", "/Zi", "/Os", "/Ob1"], 'minsize': ["/MD", "/Zi", "/Os", "/Ob1"],
} }
gnulike_buildtype_linker_args = {} apple_buildtype_linker_args = {'plain': [],
if mesonlib.is_osx():
gnulike_buildtype_linker_args.update({'plain': [],
'debug': [], 'debug': [],
'debugoptimized': [], 'debugoptimized': [],
'release': [], 'release': [],
'minsize': [], 'minsize': [],
}) }
else:
gnulike_buildtype_linker_args.update({'plain': [], gnulike_buildtype_linker_args = {'plain': [],
'debug': [], 'debug': [],
'debugoptimized': [], 'debugoptimized': [],
'release': ['-Wl,-O1'], 'release': ['-Wl,-O1'],
'minsize': [], 'minsize': [],
}) }
msvc_buildtype_linker_args = {'plain': [], msvc_buildtype_linker_args = {'plain': [],
'debug': [], 'debug': [],
@ -286,12 +282,12 @@ def get_base_link_args(options, linker, is_shared_module):
except KeyError: except KeyError:
pass pass
try: try:
if not is_shared_module and options['b_lundef'].value: if not is_shared_module and 'b_lundef' in linker.base_options and options['b_lundef'].value:
args.append('-Wl,--no-undefined') args.append('-Wl,--no-undefined')
except KeyError: except KeyError:
pass pass
try: try:
if options['b_asneeded'].value: if 'b_asneeded' in linker.base_options and options['b_asneeded'].value:
args.append('-Wl,--as-needed') args.append('-Wl,--as-needed')
except KeyError: except KeyError:
pass pass
@ -2128,6 +2124,8 @@ class GnuCompiler:
return gnulike_buildtype_args[buildtype] return gnulike_buildtype_args[buildtype]
def get_buildtype_linker_args(self, buildtype): def get_buildtype_linker_args(self, buildtype):
if self.gcc_type == GCC_OSX:
return apple_buildtype_linker_args[buildtype]
return gnulike_buildtype_linker_args[buildtype] return gnulike_buildtype_linker_args[buildtype]
def get_always_args(self): def get_always_args(self):
@ -2275,6 +2273,8 @@ class ClangCompiler():
return gnulike_buildtype_args[buildtype] return gnulike_buildtype_args[buildtype]
def get_buildtype_linker_args(self, buildtype): def get_buildtype_linker_args(self, buildtype):
if self.clang_type == CLANG_OSX:
return apple_buildtype_linker_args[buildtype]
return gnulike_buildtype_linker_args[buildtype] return gnulike_buildtype_linker_args[buildtype]
def get_pch_suffix(self): def get_pch_suffix(self):
@ -2435,6 +2435,8 @@ end program prog
return gnulike_buildtype_args[buildtype] return gnulike_buildtype_args[buildtype]
def get_buildtype_linker_args(self, buildtype): def get_buildtype_linker_args(self, buildtype):
if mesonlib.is_osx():
return apple_buildtype_linker_args[buildtype]
return gnulike_buildtype_linker_args[buildtype] return gnulike_buildtype_linker_args[buildtype]
def split_shlib_to_parts(self, fname): def split_shlib_to_parts(self, fname):

@ -386,7 +386,7 @@ class Environment():
version = self.get_gnu_version_from_defines(defines) version = self.get_gnu_version_from_defines(defines)
return GnuCCompiler(ccache + [compiler], version, gtype, is_cross, exe_wrap, defines) return GnuCCompiler(ccache + [compiler], version, gtype, is_cross, exe_wrap, defines)
if 'clang' in out: if 'clang' in out:
if 'Apple' in out: if 'Apple' in out or for_darwin(want_cross, self):
cltype = CLANG_OSX cltype = CLANG_OSX
else: else:
cltype = CLANG_STANDARD cltype = CLANG_STANDARD

Loading…
Cancel
Save