aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py2
-rw-r--r--mesonbuild/interpreter.py3
-rw-r--r--test cases/common/108 postconf with args/meson.build5
-rw-r--r--test cases/common/108 postconf with args/postconf.py13
-rw-r--r--test cases/common/108 postconf with args/prog.c5
-rw-r--r--test cases/common/108 postconf with args/raw.dat1
6 files changed, 27 insertions, 2 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 9b3cef4..311e16c 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -439,5 +439,5 @@ class Backend():
def run_postconf_scripts(self):
for s in self.build.postconf_scripts:
- cmd = s.get_command() + [self.environment.get_source_dir(), self.environment.get_build_dir()]
+ cmd = s['exe'].get_command() + [self.environment.get_source_dir(), self.environment.get_build_dir()] + s['args']
subprocess.check_call(cmd)
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 81bb768..6f65790 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -819,7 +819,8 @@ class MesonMain(InterpreterObject):
search_dir = os.path.join(self.interpreter.environment.source_dir,
self.interpreter.subdir)
exe = dependencies.ExternalProgram(scriptbase, search_dir=search_dir)
- self.build.postconf_scripts.append(exe)
+ extras = mesonlib.stringlistify(kwargs.get('args', []))
+ self.build.postconf_scripts.append({'exe': exe, 'args': extras})
def current_source_dir_method(self, args, kwargs):
src = self.interpreter.environment.source_dir
diff --git a/test cases/common/108 postconf with args/meson.build b/test cases/common/108 postconf with args/meson.build
new file mode 100644
index 0000000..74006f4
--- /dev/null
+++ b/test cases/common/108 postconf with args/meson.build
@@ -0,0 +1,5 @@
+project('postconf script', 'c')
+
+meson.add_postconf_script('postconf.py', args: ['5', '33'])
+
+test('post', executable('prog', 'prog.c'))
diff --git a/test cases/common/108 postconf with args/postconf.py b/test cases/common/108 postconf with args/postconf.py
new file mode 100644
index 0000000..b229d62
--- /dev/null
+++ b/test cases/common/108 postconf with args/postconf.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+
+import sys, os
+
+template = '''#pragma once
+
+#define THE_NUMBER {}
+#define THE_ARG1 {}
+#define THE_ARG2 {}
+'''
+
+data = open(os.path.join(sys.argv[1], 'raw.dat')).readline().strip()
+open(os.path.join(sys.argv[2], 'generated.h'), 'w').write(template.format(data, sys.argv[3], sys.argv[4]))
diff --git a/test cases/common/108 postconf with args/prog.c b/test cases/common/108 postconf with args/prog.c
new file mode 100644
index 0000000..0e63a8c
--- /dev/null
+++ b/test cases/common/108 postconf with args/prog.c
@@ -0,0 +1,5 @@
+#include"generated.h"
+
+int main(int argc, char **argv) {
+ return THE_NUMBER != 9 || THE_ARG1 != 5 || THE_ARG2 != 33;
+}
diff --git a/test cases/common/108 postconf with args/raw.dat b/test cases/common/108 postconf with args/raw.dat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/test cases/common/108 postconf with args/raw.dat
@@ -0,0 +1 @@
+9