cmake: Fetch c/cpp_std values correctly

There's no language key in self.env.coredata.compiler_options.build

Also print supported stds in the warning.
0.54
Nirbheek Chauhan 5 years ago
parent 0d7431d878
commit 477947a53a
  1. 12
      mesonbuild/cmake/interpreter.py

@ -288,10 +288,12 @@ class ConverterTarget:
m = ConverterTarget.std_regex.match(j)
if m:
std = m.group(2)
if std not in self._all_lang_stds(i):
supported = self._all_lang_stds(i)
if std not in supported:
mlog.warning(
'Unknown {0}_std "{1}" -> Ignoring. Try setting the project-'
'level {0}_std if build errors occur.'.format(i, std),
'level {0}_std if build errors occur. Known '
'{0}_stds are: {2}'.format(i, std, ' '.join(supported)),
once=True
)
continue
@ -547,10 +549,10 @@ class ConverterTarget:
@lru_cache(maxsize=None)
def _all_lang_stds(self, lang: str) -> T.List[str]:
lang_opts = self.env.coredata.compiler_options.build.get(lang, None)
if not lang_opts or 'std' not in lang_opts:
lang_std = self.env.coredata.compiler_options.build.get(lang + '_std', None)
if not lang_std:
return []
return lang_opts['std'].choices
return lang_std.choices
def process_inter_target_dependencies(self):
# Move the dependencies from all transfer_dependencies_from to the target

Loading…
Cancel
Save