From 5277eb2232387312c64c79e5622a61cefc26dec0 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Mon, 5 Apr 2021 13:05:45 -0700 Subject: [PATCH] coredata: Check for built-in options as host options These options often don't exist for the build machine, as they're generally invalid (ie, prefix, libdir, etc). So we should always check for their existance as host optiuons, since all we want to know in this case is if the option is yeilding (valid per-subproject), and build/vs host doesn't matter in that cases: Fixes #8613 --- mesonbuild/coredata.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -754,7 +754,11 @@ class CoreData: if k.subproject and k.subproject != subproject: continue # If the option is a builtin and is yielding then it's not allowed per subproject. - if subproject and k.is_builtin() and self.options[k.as_root()].yielding: + # + # Always test this using the HOST machine, as many builtin options + # are not valid for the BUILD machine, but the yielding value does + # not differ between them even when they are valid for both. + if subproject and k.is_builtin() and self.options[k.evolve(subproject='', machine=MachineChoice.HOST)].yielding: continue # Skip base, compiler, and backend options, they are handled when # adding languages and setting backend.