compilers: fix compiler.compile for Intel Compilers

has_arguments is the wrong thing to fix, since all checks that require
compiler options are based on compiles, it's the right thing to modify.
pull/4359/head
Dylan Baker 6 years ago
parent 21a7528b2f
commit 28fd725d61
  1. 8
      mesonbuild/compilers/c.py
  2. 19
      mesonbuild/compilers/compilers.py

@ -410,12 +410,12 @@ class CCompiler(Compiler):
dependencies=dependencies) dependencies=dependencies)
def _get_compiler_check_args(self, env, extra_args, dependencies, mode='compile'): def _get_compiler_check_args(self, env, extra_args, dependencies, mode='compile'):
if callable(extra_args):
extra_args = extra_args(mode)
if extra_args is None: if extra_args is None:
extra_args = [] extra_args = []
elif isinstance(extra_args, str): else:
extra_args = [extra_args] extra_args = listify(extra_args)
extra_args = listify([e(mode) if callable(e) else e for e in extra_args])
if dependencies is None: if dependencies is None:
dependencies = [] dependencies = []
elif not isinstance(dependencies, list): elif not isinstance(dependencies, list):

@ -19,7 +19,10 @@ from ..linkers import StaticLinker
from .. import coredata from .. import coredata
from .. import mlog from .. import mlog
from .. import mesonlib from .. import mesonlib
from ..mesonlib import EnvironmentException, MesonException, OrderedSet, version_compare, Popen_safe from ..mesonlib import (
EnvironmentException, MesonException, OrderedSet, version_compare,
Popen_safe
)
"""This file contains the data files of all compilers Meson knows """This file contains the data files of all compilers Meson knows
about. To support a new compiler, add its information below. about. To support a new compiler, add its information below.
@ -1733,6 +1736,7 @@ class ArmclangCompiler:
# Tested on linux for ICC 14.0.3, 15.0.6, 16.0.4, 17.0.1, 19.0.0 # Tested on linux for ICC 14.0.3, 15.0.6, 16.0.4, 17.0.1, 19.0.0
class IntelCompiler(GnuLikeCompiler): class IntelCompiler(GnuLikeCompiler):
def __init__(self, compiler_type): def __init__(self, compiler_type):
super().__init__(compiler_type) super().__init__(compiler_type)
# As of 19.0.0 ICC doesn't have sanitizer, color, or lto support. # As of 19.0.0 ICC doesn't have sanitizer, color, or lto support.
@ -1764,9 +1768,16 @@ class IntelCompiler(GnuLikeCompiler):
else: else:
return ['-openmp'] return ['-openmp']
def has_arguments(self, args, env, code, mode): def compiles(self, *args, **kwargs):
# -diag-error 10148 is required to catch invalid -W options # This covers a case that .get('foo', []) doesn't, that extra_args is
return super().has_arguments(args + ['-diag-error', '10006', '-diag-error', '10148'], env, code, mode) # defined and is None
extra_args = kwargs.get('extra_args') or []
kwargs['extra_args'] = [
extra_args,
'-diag-error', '10006', # ignoring unknown option
'-diag-error', '10148', # Option not supported
]
return super().compiles(*args, **kwargs)
class ArmCompiler: class ArmCompiler:

Loading…
Cancel
Save