From 976c9abcd0348ffb29863ac2688c661eda524a47 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Tue, 28 Mar 2017 14:31:45 +0530 Subject: modules: Start using @SOURCE_ROOT@ and @BUILD_ROOT@ First step in fixing https://github.com/mesonbuild/meson/issues/1419 Also works around an issue in the MinGW windres.exe that causes it to fail if any of the arguments passed to it contain a space. There seems to be no way to quote or escape the spaces in the path to make windres parse the path correctly, so we just warn about it instead. https://sourceware.org/bugzilla/show_bug.cgi?id=4933 https://github.com/mesonbuild/meson/pull/1346 --- mesonbuild/backend/backends.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'mesonbuild/backend/backends.py') diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index fa9a82f..99be172 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -601,8 +601,13 @@ class Backend: def eval_custom_target_command(self, target, absolute_outputs=False): # We want the outputs to be absolute only when using the VS backend + # XXX: Maybe allow the vs backend to use relative paths too? + source_root = self.build_to_src + build_root = '.' outdir = self.get_target_dir(target) if absolute_outputs: + source_root = self.environment.get_source_dir() + build_root = self.environment.get_source_dir() outdir = os.path.join(self.environment.get_build_dir(), outdir) outputs = [] for i in target.output: @@ -628,6 +633,10 @@ class Backend: elif not isinstance(i, str): err_msg = 'Argument {0} is of unknown type {1}' raise RuntimeError(err_msg.format(str(i), str(type(i)))) + elif '@SOURCE_ROOT@' in i: + i = i.replace('@SOURCE_ROOT@', source_root) + elif '@BUILD_ROOT@' in i: + i = i.replace('@BUILD_ROOT@', build_root) elif '@DEPFILE@' in i: if target.depfile is None: msg = 'Custom target {!r} has @DEPFILE@ but no depfile ' \ -- cgit v1.1