diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-07-14 17:49:40 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-07-29 19:51:09 +0530 |
commit | d8b9b12adbd2fa04f40ea2823929acc41f0a8003 (patch) | |
tree | 12bb491a6671eb5dcba09e349b0e1a77bb8fb035 /mesonbuild/build.py | |
parent | 4a92b78e6e4508afb8ca988cb47c91ea4a765fee (diff) | |
download | meson-d8b9b12adbd2fa04f40ea2823929acc41f0a8003.zip meson-d8b9b12adbd2fa04f40ea2823929acc41f0a8003.tar.gz meson-d8b9b12adbd2fa04f40ea2823929acc41f0a8003.tar.bz2 |
Ninja now supports backslash in command args, so we can too
At the same time, this also adds a bunch of tests that document and keep
track of how we expect quoting to pass through via Ninja to the
compiler.
We need at least Ninja 1.6.0 for this.
This fixes https://github.com/mesonbuild/meson/issues/489
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r-- | mesonbuild/build.py | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index b610bb8..6a4f375 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -50,28 +50,6 @@ known_shlib_kwargs.update({'version' : True, 'name_suffix' : True, 'vs_module_defs' : True}) -backslash_explanation = \ -'''Compiler arguments have a backslash "\\" character. This is unfortunately not -permitted. The reason for this is that backslash is a shell quoting character -that behaves differently across different systems. Because of this is it not -possible to make it work reliably across all the platforms Meson needs to -support. - -There are several different ways of working around this issue. Most of the time -you are using this to provide a -D define to your compiler. Try instead to -create a config.h file and put all of your definitions in it using -configure_file(). - -Another approach is to move the backslashes into the source and have the other -bits in the def. So you would have an arg -DPLAIN_TEXT="foo" and then in your -C sources something like this: - -const char *fulltext = "\\\\" PLAIN_TEXT; - -We are fully aware that these are not really usable or pleasant ways to do -this but it's the best we can do given the way shell quoting works. -''' - def sources_are_suffix(sources, suffix): for source in sources: if source.endswith('.' + suffix): @@ -606,8 +584,6 @@ class BuildTarget(): for a in args: if not isinstance(a, (str, File)): raise InvalidArguments('A non-string passed to compiler args.') - if isinstance(a, str) and '\\' in a: - raise InvalidArguments(backslash_explanation) if language in self.extra_args: self.extra_args[language] += args else: |