From fc0f0df74b5bf7327b566531b58b23620cba195a Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 21 Jan 2020 21:14:14 +0000 Subject: [PATCH] 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. --- docs/markdown/Reference-manual.md | 18 +++++++++++++----- mesonbuild/interpreter.py | 4 +++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/markdown/Reference-manual.md b/docs/markdown/Reference-manual.md index fafc9cb85..01052b018 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 031bed0ba..5771c65d6 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()