On Thu, Oct 30, 2014 at 8:36 PM, Alan Barrett <a...@netbsd.org> wrote: > On Thu, 30 Oct 2014, Masao Uebayashi wrote: >> >> What do you expect by doing: >> >> options FOO >> no options FOO >> options FOO > > I expect it to be equivalent to just one "options FOO". > > The "no options FOO" in line 2 should cancel the "options FOO" in line 1, > and then the "options FOO" in line 3 should put it back. > > In the cases that I care about, the "options" and "no options" lines will be > in different files, referenced via "include" directives.
So, while you expect that "options" works before it's defined, you also expect the order is honored for "no" use. I'm not sure how it can work internally. At this moment, "no" are evaluated when it's parsed. Those "no agp*" fallouts happened because agp is re-selected while resolving dependency after all parsing is done. IMO anything relying on order tends to be broken by design. For example: if BAR depends on FOO, "no options FOO" has to disable BAR too, because BAR can't be enabled without FOO. But when you re-enable FOO, BAR is not enabled. Is this really what you're expecting?