diff options
author | Michael Hirsch, Ph.D <scivision@users.noreply.github.com> | 2019-11-10 09:26:55 -0500 |
---|---|---|
committer | Michael Hirsch, Ph.D <scivision@users.noreply.github.com> | 2020-02-05 13:23:55 -0500 |
commit | c2e6565029779b749dc3423291524115af1b2bd7 (patch) | |
tree | d8690f58aa0b70f73f6d7ae2c420aa6f2a71900a /mesonbuild/interpreter.py | |
parent | dc8d2415836953a8e7fbb06931d34caab1bb2bfb (diff) | |
download | meson-c2e6565029779b749dc3423291524115af1b2bd7.zip meson-c2e6565029779b749dc3423291524115af1b2bd7.tar.gz meson-c2e6565029779b749dc3423291524115af1b2bd7.tar.bz2 |
add meson.get_native_property for native files
This allows Meson native-file [properties] to be used.
This avoids the need to call meson from a script file or have a
long command line invocation of `meson setup`
The method meson.get_native_property('prop', 'fallback') is added.
The native file can contain properties like
```
[properties]
myprop1 = 'foo'
mydir2 = 'lib/custom'
```
Then from within `meson.build`
```meson
x1 = meson.get_native_property('myprop1')
thedir = meson.get_native_property('mydir2', 'libs')
```
fallback values are optional
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index e32e0a1..5e58b0e 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1845,6 +1845,7 @@ class MesonMain(InterpreterObject): 'version': self.version_method, 'project_name': self.project_name_method, 'get_cross_property': self.get_cross_property_method, + 'get_native_property': self.get_native_property_method, 'backend': self.backend_method, }) @@ -2031,6 +2032,22 @@ class MesonMain(InterpreterObject): return args[1] raise InterpreterException('Unknown cross property: %s.' % propname) + @noArgsFlattening + @permittedKwargs({}) + def get_native_property_method(self, args, kwargs): + if len(args) < 1 or len(args) > 2: + raise InterpreterException('Must have one or two arguments.') + propname = args[0] + if not isinstance(propname, str): + raise InterpreterException('Property name must be string.') + try: + props = self.interpreter.environment.properties.build + return props[propname] + except Exception: + if len(args) == 2: + return args[1] + raise InterpreterException('Unknown native property: %s.' % propname) + known_library_kwargs = ( build.known_shlib_kwargs | |