diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-03-28 14:31:45 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-03-28 14:49:32 +0530 |
commit | 976c9abcd0348ffb29863ac2688c661eda524a47 (patch) | |
tree | 968913d082a1ce8ab8202aee71a9d15ba5f4688d /mesonbuild/backend/backends.py | |
parent | 03d0feec7ceed1a1ee2e6284a86dbc26a088440f (diff) | |
download | meson-976c9abcd0348ffb29863ac2688c661eda524a47.zip meson-976c9abcd0348ffb29863ac2688c661eda524a47.tar.gz meson-976c9abcd0348ffb29863ac2688c661eda524a47.tar.bz2 |
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
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r-- | mesonbuild/backend/backends.py | 9 |
1 files changed, 9 insertions, 0 deletions
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 ' \ |