aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2020-01-21 21:14:14 +0000
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2020-09-10 07:20:41 +0000
commitfc0f0df74b5bf7327b566531b58b23620cba195a (patch)
treead302c96e98e56d1a8ce24a4645f6478ccd5515b
parent4cef45af21465f4c860dbd467796b1c768f556f4 (diff)
downloadmeson-fc0f0df74b5bf7327b566531b58b23620cba195a.zip
meson-fc0f0df74b5bf7327b566531b58b23620cba195a.tar.gz
meson-fc0f0df74b5bf7327b566531b58b23620cba195a.tar.bz2
Don't require build machine compilers for project() languages
This means that, in the common case of a simple meson.build which doesn't contain any 'native: true' targets, we won't require a native compiler when cross-compiling, without needing any changes in the meson.build.
-rw-r--r--docs/markdown/Reference-manual.md18
-rw-r--r--mesonbuild/interpreter.py4
2 files changed, 16 insertions, 6 deletions
diff --git a/docs/markdown/Reference-manual.md b/docs/markdown/Reference-manual.md
index fafc9cb..01052b0 100644
--- a/docs/markdown/Reference-manual.md
+++ b/docs/markdown/Reference-manual.md
@@ -1312,11 +1312,7 @@ My Project 1.0
```
The first argument to this function must be a string defining the name
-of this project. It is followed by programming languages that the
-project uses. Supported values for languages are `c`, `cpp` (for
-`C++`), `cuda`, `d`, `objc`, `objcpp`, `fortran`, `java`, `cs` (for `C#`),
-`vala` and `rust`. *(since 0.40.0)* The list of languages
-is optional.
+of this project.
The project name can be any string you want, it's not used for
anything except descriptive purposes. However since it is written to
@@ -1325,6 +1321,18 @@ same as the project tarball or pkg-config name. So for example you
would probably want to use the name _libfoobar_ instead of _The Foobar
Library_.
+It may be followed by the list of programming languages that the project uses.
+
+*(since 0.40.0)* The list of languages is optional.
+
+These languages may be used both for `native: false` (the default) (host
+machine) targets and for `native: true` (build machine) targets. *(since
+0.56.0)* The build machine compilers for the specified languages are not
+required.
+
+Supported values for languages are `c`, `cpp` (for `C++`), `cuda`, `d`,
+`objc`, `objcpp`, `fortran`, `java`, `cs` (for `C#`), `vala` and `rust`.
+
Project supports the following keyword arguments.
- `default_options`: takes an array of strings. The strings are in the
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 031bed0..5771c65 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -3135,8 +3135,10 @@ external dependencies (including libraries) must go to "dependencies".''')
self.build.projects[self.subproject] = proj_name
mlog.log('Project name:', mlog.bold(proj_name))
mlog.log('Project version:', mlog.bold(self.project_version))
- self.add_languages(proj_langs, True, MachineChoice.BUILD)
+
self.add_languages(proj_langs, True, MachineChoice.HOST)
+ self.add_languages(proj_langs, False, MachineChoice.BUILD)
+
self.set_backend()
if not self.is_subproject():
self.check_stdlibs()