Follow-up Comment #2, bug #62706 (project make): This is a more detailed description of point 2 above (2. Causes all prerequisites to be second expanded in the same order they are being built.)
++++ $ cat makefile .SECONDEXPANSION: all: hello.tsk bye.tsk hello.tsk: $$(info 2nd expansion of prereqs of $$@); $(info $@) bye.tsk: $$(info 2nd expansion of prereqs of $$@); $(info $@) $ # this is patched make $ ~/src/make/l64/make 2nd expansion of prereqs of hello.tsk hello.tsk 2nd expansion of prereqs of bye.tsk bye.tsk make: Nothing to be done for 'all'. $ # this is make-4.3 $ make 2nd expansion of prereqs of bye.tsk 2nd expansion of prereqs of hello.tsk hello.tsk bye.tsk make: Nothing to be done for `all'. $ ---- We can see that make-4.3 builds 'hello.tsk' before building 'bye.tsk'. The order of secondary expanding prerequisites is the opposite, first the prerequisites of 'bye.tsk' are expanded, then the prerequisites of 'hello.tsk'. The proposed behavior is to secondary expand the prerequisites of 'hello.tsk", build 'hello.tsk', secondary expand the prerequisites of 'bye.tsk', build 'bye.tsk'. If however the makefile is changed like ++++ $ cat makefile .SECONDEXPANSION: all: $$(info 2nd expansion for all) hello.tsk bye.tsk; $(info $@) hello.tsk: $$(info 1st 2nd expansion of prereqs of $$@) $$(info 2nd 2nd expansion of prereqs of $$@); $(info $@) bye.tsk: $$(info 1st 2nd expansion of prereqs of $$@) $$(info 2nd 2nd expansion of prereqs of $$@); $(info $@) $ ~/src/make/l64/make 2nd expansion for all 1st 2nd expansion of prereqs of hello.tsk 2nd 2nd expansion of prereqs of hello.tsk hello.tsk 1st 2nd expansion of prereqs of bye.tsk 2nd 2nd expansion of prereqs of bye.tsk bye.tsk all make: 'all' is up to date. $ make 2nd expansion for all 1st 2nd expansion of prereqs of bye.tsk 2nd 2nd expansion of prereqs of bye.tsk 1st 2nd expansion of prereqs of hello.tsk 2nd 2nd expansion of prereqs of hello.tsk hello.tsk bye.tsk all make: `all' is up to date. $ ---- Then $$(info 2nd expansion for all) is secondary expanded before the prerequisites of hello.tsk and bye.tsk are secondary expanded. The patch keeps this aspect of behavior is intact. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?62706> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/