> Expansion happens identically in all cases. .. > All variables are "recursively expanded" when they are expanded According to referred manual chapter for variables defined using ‘:=’ ‘::=’ expansion is flat, by no recursion.
I don't get why not to account for 2-pass makefile parsing. 2-pass parsing is valid property for variable expansion. Might it be referred manual chapter takes a look at merely 1st pass? My make experience is flat yet GNU make manual the main knowledge source. > -----Original Message----- > From: Paul Smith [mailto:psm...@gnu.org] > Sent: Freitag, 11. Dezember 2020 19:04 > To: DUDZIAK Krzysztof <krzysztof.dudz...@thalesgroup.com>; bug- > m...@gnu.org > Subject: Re: Operators '=' ‘:=’ ‘::=’ in manual > > On Thu, 2020-12-10 at 18:40 +0000, DUDZIAK Krzysztof wrote: > > I don't actually dare to use terms "recursive variable" and "simple > > variable" as myself didn't find such in manual. Terms which I found > > read variable expanded recursively variable expanded simply > > I still believe these are poor terms. > > All variables are "recursively expanded" when they are expanded: that is, all > references to all variables inside the value are expanded, and all references > to all variables inside any of those values are expanded, etc. recursively. > Expansion happens identically in all cases. > > The difference is not in HOW they are expanded, but rather WHEN they are > expanded. > > The term probably was used to refer to one specific difference which is that > recursively expanded variables don't allow you to have self- referencing; you > can't do this: > > FOO = bar $(FOO) > > because you'd get "infinite recursion". That is certainly one legitimate > difference but I don't think it deserves to drive the naming . But as I say, > these terms have been in the docs since forever so changing them would > need to be done carefully.