diff options
-rw-r--r-- | mesonbuild/coredata.py | 1 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 1 | ||||
-rw-r--r-- | mesonbuild/interpreterbase.py | 17 |
3 files changed, 19 insertions, 0 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index f3313f3..6540455 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -23,6 +23,7 @@ import ast import argparse version = '0.47.0.dev1' +target_version = '' backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'xcode'] default_yielding = False diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 4f2d45e..21f66cd 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2285,6 +2285,7 @@ to directly access options of other subprojects.''') if 'meson_version' in kwargs: cv = coredata.version pv = kwargs['meson_version'] + coredata.target_version = pv if not mesonlib.version_compare(cv, pv): raise InterpreterException('Meson version is %s but project requires %s.' % (cv, pv)) self.build.projects[self.subproject] = proj_name diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index 9f323d1..52dad72 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -17,6 +17,7 @@ from . import mparser, mesonlib, mlog from . import environment, dependencies +from . import coredata import os, copy, re, types from functools import wraps @@ -123,6 +124,22 @@ class permittedKwargs: return f(*wrapped_args, **wrapped_kwargs) return wrapped +class featureVersion: + """Checks for newer/deprecated features""" + + def __init__(self, feature_name, wanted_version): + self.feature_name = feature_name + self.wanted_version = wanted_version + + def __call__(self, f): + @wraps(f) + def wrapped(*wrapped_args, **wrapped_kwargs): + tv = coredata.target_version + if tv == '': + return + return f(*wrapped_args, **wrapped_kwargs) + return wrapped + class InterpreterException(mesonlib.MesonException): pass |