diff options
-rw-r--r-- | mesonbuild/build.py | 2 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 24 | ||||
-rw-r--r-- | mesonbuild/mesonlib.py | 8 | ||||
-rw-r--r-- | test cases/common/16 configure file/meson.build | 4 |
4 files changed, 22 insertions, 16 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 7605b46..dce0236 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1271,7 +1271,7 @@ class ConfigurationData(): return repr(self.values) def get(self, name): - return self.values[name] + return self.values[name] # (val, desc) def keys(self): return self.values.keys() diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index aa032e5..b5da91f 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -228,40 +228,44 @@ class ConfigurationDataHolder(InterpreterObject): def mark_used(self): self.used = True - def validate_args(self, args): + def validate_args(self, args, kwargs): if len(args) != 2: raise InterpreterException("Configuration set requires 2 arguments.") if self.used: raise InterpreterException("Can not set values on configuration object that has been used.") name = args[0] val = args[1] + desc = kwargs.get('description', None) if not isinstance(name, str): raise InterpreterException("First argument to set must be a string.") - return (name, val) + if desc is not None and not isinstance(desc, str): + raise InterpreterException('Description must be a string.') + + return (name, val, desc) def set_method(self, args, kwargs): - (name, val) = self.validate_args(args) - self.held_object.values[name] = val + (name, val, desc) = self.validate_args(args, kwargs) + self.held_object.values[name] = (val, desc) def set_quoted_method(self, args, kwargs): - (name, val) = self.validate_args(args) + (name, val, desc) = self.validate_args(args, kwargs) if not isinstance(val, str): raise InterpreterException("Second argument to set_quoted must be a string.") escaped_val = '\\"'.join(val.split('"')) - self.held_object.values[name] = '"' + escaped_val + '"' + self.held_object.values[name] = ('"' + escaped_val + '"', desc) def set10_method(self, args, kwargs): - (name, val) = self.validate_args(args) + (name, val, desc) = self.validate_args(args, kwargs) if val: - self.held_object.values[name] = 1 + self.held_object.values[name] = (1, desc) else: - self.held_object.values[name] = 0 + self.held_object.values[name] = (0, desc) def has_method(self, args, kwargs): return args[0] in self.held_object.values def get(self, name): - return self.held_object.values[name] + return self.held_object.values[name] # (val, desc) def keys(self): return self.held_object.values.keys() diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index d06e4eb..7294a54 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -221,7 +221,7 @@ def do_replacement(regex, line, confdata): while match: varname = match.group(1) if varname in confdata.keys(): - var = confdata.get(varname) + (var, desc) = confdata.get(varname) if isinstance(var, str): pass elif isinstance(var, int): @@ -240,7 +240,7 @@ def do_mesondefine(line, confdata): raise MesonException('#mesondefine does not contain exactly two tokens: %s', line.strip()) varname = arr[1] try: - v = confdata.get(varname) + (v, desc) = confdata.get(varname) except KeyError: return '/* #undef %s */\n' % varname if isinstance(v, bool): @@ -289,7 +289,9 @@ def dump_conf_header(ofilename, cdata): ''') for k in sorted(cdata.keys()): - v = cdata.get(k) + (v, desc) = cdata.get(k) + if desc: + ofile.write('/* %s */\n' % desc) if isinstance(v, bool): if v: ofile.write('#define %s\n\n' % k) diff --git a/test cases/common/16 configure file/meson.build b/test cases/common/16 configure file/meson.build index c00af40..ae3ad27 100644 --- a/test cases/common/16 configure file/meson.build +++ b/test cases/common/16 configure file/meson.build @@ -34,7 +34,7 @@ test('inctest2', executable('prog2', 'prog2.c')) # Generate a conf file without an input file. dump = configuration_data() -dump.set_quoted('SHOULD_BE_STRING', 'string') +dump.set_quoted('SHOULD_BE_STRING', 'string', description : 'A string') dump.set_quoted('SHOULD_BE_STRING2', 'A "B" C') dump.set_quoted('SHOULD_BE_STRING3', 'A "" C') dump.set_quoted('SHOULD_BE_STRING4', 'A " C') @@ -42,7 +42,7 @@ dump.set('SHOULD_BE_RETURN', 'return') dump.set('SHOULD_BE_DEFINED', true) dump.set('SHOULD_BE_UNDEFINED', false) dump.set('SHOULD_BE_ONE', 1) -dump.set('SHOULD_BE_ZERO', 0) +dump.set('SHOULD_BE_ZERO', 0, description : 'Absolutely zero') dump.set('SHOULD_BE_QUOTED_ONE', '"1"') configure_file(output : 'config3.h', configuration : dump) |