Simplify node_flag_propagate and propagate past 1st level dependencies

This commit is contained in:
Kayla Butler 2023-07-26 13:58:04 -07:00
parent b0d13f8fcc
commit 92ff8cfd45
2 changed files with 14 additions and 5 deletions

View File

@ -1805,7 +1805,7 @@ class Body:
clauses.append(f.node_flag(spec.name, flag_type, flag)) clauses.append(f.node_flag(spec.name, flag_type, flag))
clauses.append(f.node_flag_source(spec.name, flag_type, spec.name)) clauses.append(f.node_flag_source(spec.name, flag_type, spec.name))
if not spec.concrete and flag.propagate is True: if not spec.concrete and flag.propagate is True:
clauses.append(f.node_flag_propagate(spec.name, flag_type)) clauses.append(f.node_flag_propagate(spec.name, flag_type, flag, spec.name))
# dependencies # dependencies
if spec.concrete: if spec.concrete:

View File

@ -1210,14 +1210,23 @@ node_flag_inherited(DependencyNode, FlagType, Flag)
:- node_flag_inherited(PackageNode, FlagType, Flag), :- node_flag_inherited(PackageNode, FlagType, Flag),
can_inherit_flags(PackageNode, DependencyNode, FlagType), can_inherit_flags(PackageNode, DependencyNode, FlagType),
attr("node_flag_propagate", PackageNode, FlagType). attr("node_flag_propagate", PackageNode, FlagType).
=======
attr("node_flag_propagate", Package, FlagType, Flag, Source) :-
node_compiler(Source, CompilerID),
node_compiler(Package, CompilerID),
depends_on(Parent, Package),
attr("node_flag_propagate", Parent, _, _, Source),
attr("node_flag_value", Source, FlagType, Flag),
not attr("node_flag_set", Package, FlagType, _).
compiler_id(CompilerID),
flag_type(FlagType).
>>>>>>> b44c47bc83 (Simplify node_flag_propagate and propagate past 1st level dependencies)
error(100, "{0} and {1} cannot both propagate compiler flags '{2}' to {3}", Source1, Source2, Package, FlagType) :- error(100, "{0} and {1} cannot both propagate compiler flags '{2}' to {3}", Source1, Source2, Package, FlagType) :-
depends_on(Source1, Package), depends_on(Source1, Package),
depends_on(Source2, Package), depends_on(Source2, Package),
attr("node_flag_propagate", Source1, FlagType), attr("node_flag_propagate", _, FlagType, _, Source1),
attr("node_flag_propagate", Source2, FlagType), attr("node_flag_propagate", _, FlagType, _, Source2),
can_inherit_flags(Source1, Package, FlagType),
can_inherit_flags(Source2, Package, FlagType),
Source1 < Source2. Source1 < Source2.
% remember where flags came from % remember where flags came from