aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorDavid Seifert <soap@gentoo.org>2018-09-16 11:39:54 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2018-09-16 18:27:19 +0300
commit8f16d0f3c99666c36f37ef10df0b916e88c1afaa (patch)
tree58ed5d4066c2db116e9f3cec614c46a33ad5cffa /mesonbuild/compilers
parent2b9fb36267c8661604ef53a7ddbd3a65f7b910dc (diff)
downloadmeson-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.py10
-rw-r--r--mesonbuild/compilers/compilers.py19
-rw-r--r--mesonbuild/compilers/cpp.py19
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):