diff options
author | David Seifert <soap@gentoo.org> | 2018-09-16 11:39:54 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-09-16 18:27:19 +0300 |
commit | 8f16d0f3c99666c36f37ef10df0b916e88c1afaa (patch) | |
tree | 58ed5d4066c2db116e9f3cec614c46a33ad5cffa /mesonbuild/compilers | |
parent | 2b9fb36267c8661604ef53a7ddbd3a65f7b910dc (diff) | |
download | meson-8f16d0f3c99666c36f37ef10df0b916e88c1afaa.zip meson-8f16d0f3c99666c36f37ef10df0b916e88c1afaa.tar.gz meson-8f16d0f3c99666c36f37ef10df0b916e88c1afaa.tar.bz2 |
Fix ICC on macOS
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r-- | mesonbuild/compilers/c.py | 10 | ||||
-rw-r--r-- | mesonbuild/compilers/compilers.py | 19 | ||||
-rw-r--r-- | mesonbuild/compilers/cpp.py | 19 |
3 files changed, 40 insertions, 8 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 9b7ac68..c226a09 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -1191,7 +1191,7 @@ class IntelCCompiler(IntelCompiler, CCompiler): default_warn_args = ['-Wall', '-w3', '-diag-disable:remark', '-Wpch-messages'] self.warn_args = {'1': default_warn_args, '2': default_warn_args + ['-Wextra'], - '3': default_warn_args + ['-Wextra', '-Wpedantic']} + '3': default_warn_args + ['-Wextra']} def get_options(self): opts = CCompiler.get_options(self) @@ -1214,8 +1214,14 @@ class IntelCCompiler(IntelCompiler, CCompiler): def get_std_shared_lib_link_args(self): return ['-shared'] + def get_std_shared_module_link_args(self, options): + if self.compiler_type.is_osx_compiler: + return ['-bundle', '-Wl,-undefined,dynamic_lookup'] + return ['-shared'] + def has_arguments(self, args, env, code, mode): - return super().has_arguments(args + ['-diag-error', '10006'], env, code, mode) + # -diag-error 10148 is required to catch invalid -W options + return super().has_arguments(args + ['-diag-error', '10006', '-diag-error', '10148'], env, code, mode) class VisualStudioCCompiler(CCompiler): diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 9569c3f..6f90c6a 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -1451,7 +1451,7 @@ class ClangCompiler: return GNU_LD_AS_NEEDED def get_pic_args(self): - if self.compiler_type in (CompilerType.CLANG_MINGW, CompilerType.CLANG_OSX): + if self.compiler_type.is_osx_compiler or self.compiler_type.is_windows_compiler: return [] # On Window and OS X, pic is always on. return ['-fPIC'] @@ -1615,19 +1615,31 @@ class IntelCompiler: self.compiler_type = compiler_type self.lang_header = 'none' self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 'b_coverage', - 'b_colorout', 'b_ndebug', 'b_staticpic', 'b_lundef', 'b_asneeded'] + 'b_colorout', 'b_ndebug', 'b_staticpic', 'b_asneeded'] + if not self.compiler_type.is_osx_compiler: + self.base_options.append('b_lundef') # Assembly self.can_compile_suffixes.add('s') def get_pic_args(self): + if self.compiler_type.is_osx_compiler or self.compiler_type.is_windows_compiler: + return [] # On Window and OS X, pic is always on. return ['-fPIC'] def get_buildtype_args(self, buildtype): return gnulike_buildtype_args[buildtype] def get_buildtype_linker_args(self, buildtype): + if self.compiler_type.is_osx_compiler: + return apple_buildtype_linker_args[buildtype] return gnulike_buildtype_linker_args[buildtype] + def get_optimization_args(self, optimization_level): + return gnu_optimization_args[optimization_level] + + def get_debug_args(self, is_debug): + return clike_debug_args[is_debug] + def get_pch_suffix(self): return 'pchi' @@ -1670,6 +1682,9 @@ class IntelCompiler: def get_link_whole_for(self, args): return GnuCompiler.get_link_whole_for(self, args) + def gnu_symbol_visibility_args(self, vistype): + return gnu_symbol_visibility_args[vistype] + class ArmCompiler: # Functionality that is common to all ARM family compilers. diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index 004f65e..6220b93 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -261,12 +261,15 @@ class IntelCPPCompiler(IntelCompiler, CPPCompiler): '-Wpch-messages', '-Wnon-virtual-dtor'] self.warn_args = {'1': default_warn_args, '2': default_warn_args + ['-Wextra'], - '3': default_warn_args + ['-Wextra', '-Wpedantic']} + '3': default_warn_args + ['-Wextra']} def get_options(self): opts = CPPCompiler.get_options(self) - c_stds = [] - g_stds = ['gnu++98'] + # Every Unix compiler under the sun seems to accept -std=c++03, + # with the exception of ICC. Instead of preventing the user from + # globally requesting C++03, we transparently remap it to C++98 + c_stds = ['c++98', 'c++03'] + g_stds = ['gnu++98', 'gnu++03'] if version_compare(self.version, '>=15.0.0'): c_stds += ['c++11', 'c++14'] g_stds += ['gnu++11'] @@ -286,7 +289,11 @@ class IntelCPPCompiler(IntelCompiler, CPPCompiler): args = [] std = options['cpp_std'] if std.value != 'none': - args.append('-std=' + std.value) + remap_cpp03 = { + 'c++03': 'c++98', + 'gnu++03': 'gnu++98' + } + args.append('-std=' + remap_cpp03.get(std.value, std.value)) if options['cpp_debugstl'].value: args.append('-D_GLIBCXX_DEBUG=1') return args @@ -294,6 +301,10 @@ class IntelCPPCompiler(IntelCompiler, CPPCompiler): def get_option_link_args(self, options): return [] + def has_arguments(self, args, env, code, mode): + # -diag-error 10148 is required to catch invalid -W options + return super().has_arguments(args + ['-diag-error', '10006', '-diag-error', '10148'], env, code, mode) + class VisualStudioCPPCompiler(VisualStudioCCompiler, CPPCompiler): def __init__(self, exelist, version, is_cross, exe_wrap, is_64): |