[U-Boot] [PATCH] Fix variable flavor in examples/standalone/Makefile

GNU Makefile have two flavors of variables, recursively expanded that is defined by using '=', and simply expanded that is defined by using ':='.
The bug is caused by using recursively expanded flavor for BIN and SREC. As you can see below, they are prepended by $(obj) twice.
We can reproduce this bug with a simplified version of this Makefile: $ cat > Makefile <<EOF obj := /path/to/obj/ ELF := hello_world
BIN_rec = $(addsuffix .bin,$(ELF)) # recursively expanded BIN_sim := $(addsuffix .bin,$(ELF)) # simply expanded
ELF := $(addprefix $(obj),$(ELF)) BIN_rec := $(addprefix $(obj),$(BIN_rec)) BIN_sim := $(addprefix $(obj),$(BIN_sim))
show: @echo BIN_rec=$(BIN_rec) @echo BIN_sim=$(BIN_sim)
.PHONY: show EOF $ make show BIN_rec=/path/to/obj//path/to/obj/hello_world.bin BIN_sim=/path/to/obj/hello_world.bin
Signed-off-by: Che-Liang Chiou clchiou@chromium.org ---
examples/standalone/Makefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index c1dfdce..6fd9f5d 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -45,8 +45,8 @@ ELF-oxc += eepro100_eeprom # ELF := $(strip $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)))
-SREC = $(addsuffix .srec,$(ELF)) -BIN = $(addsuffix .bin,$(ELF)) +SREC := $(addsuffix .srec,$(ELF)) +BIN := $(addsuffix .bin,$(ELF))
COBJS := $(ELF:=.o)

Dear Che-liang Chiou,
In message AANLkTimw1vLC8GM_XsdGqGKLUYyzKQoFYFb8-bJVbGBE@mail.gmail.com you wrote:
GNU Makefile have two flavors of variables, recursively expanded that is defined by using '=', and simply expanded that is defined by using ':='.
The bug is caused by using recursively expanded flavor for BIN and SREC.
You wrote "The bug". How does this bug manifest in U-Boot? For which configuration do you see issues?
Best regards,
Wolfgang Denk

Dear Wolfgang Denk,
On Tue, Feb 22, 2011 at 3:33 PM, Wolfgang Denk wd@denx.de wrote:
In message AANLkTimw1vLC8GM_XsdGqGKLUYyzKQoFYFb8-bJVbGBE@mail.gmail.com you wrote:
The bug is caused by using recursively expanded flavor for BIN and SREC.
You wrote "The bug". How does this bug manifest in U-Boot? For which configuration do you see issues?
The bug I refer to is that hello_world.bin and hello_world.srec are not built.
I can reproduce this bug in versatile_config, but I believe it is generally applicable to other configures as well since it is caused by Makefile syntax.
Here is how I found the bug: ------------------------------------------------------------ $ make O=/tmp/build distclean $ make O=/tmp/build versatile_config $ make O=/tmp/build -j8 $ ls /tmp/build/examples/standalone/ hello_world hello_world.o libstubs.o smc91111_eeprom smc91111_eeprom.o stubs.o ------------------------------------------------------------ Notice that hello_world.bin and hello_world.srec are not found.
Regards, Che-Liang

Dear Che-liang Chiou,
In message AANLkTikEyV2+sNNMgjw=4ytLXgN2d7in6usdwE3Eedz2@mail.gmail.com you wrote:
On Tue, Feb 22, 2011 at 3:33 PM, Wolfgang Denk wd@denx.de wrote:
In message AANLkTimw1vLC8GM_XsdGqGKLUYyzKQoFYFb8-bJVbGBE@mail.gmail.com> you wrote:
The bug is caused by using recursively expanded flavor for BIN and SREC.
You wrote "The bug". How does this bug manifest in U-Boot? For which configuration do you see issues?
The bug I refer to is that hello_world.bin and hello_world.srec are not built.
I can reproduce this bug in versatile_config, but I believe it is generally applicable to other configures as well since it is caused by Makefile syntax.
Here is how I found the bug:
$ make O=/tmp/build distclean $ make O=/tmp/build versatile_config $ make O=/tmp/build -j8 $ ls /tmp/build/examples/standalone/ hello_world hello_world.o libstubs.o smc91111_eeprom smc91111_eeprom.o stubs.o
Notice that hello_world.bin and hello_world.srec are not found.
Hm... which U-Boot version are you referring to? Because for some time "versatile" is broken and does not build at all...
Best regards,
Wolfgang Denk

Dear Wolfgang Denk,
I checked out the master of the git repo of that time (Feb 22?).
Regards, Che-Liang
On Thu, Apr 14, 2011 at 4:45 AM, Wolfgang Denk wd@denx.de wrote:
Dear Che-liang Chiou,
In message AANLkTikEyV2+sNNMgjw=4ytLXgN2d7in6usdwE3Eedz2@mail.gmail.com you wrote:
On Tue, Feb 22, 2011 at 3:33 PM, Wolfgang Denk wd@denx.de wrote:
In message AANLkTimw1vLC8GM_XsdGqGKLUYyzKQoFYFb8-bJVbGBE@mail.gmail.com> you wrote:
The bug is caused by using recursively expanded flavor for BIN and SREC.
You wrote "The bug". How does this bug manifest in U-Boot? For which configuration do you see issues?
The bug I refer to is that hello_world.bin and hello_world.srec are not built.
I can reproduce this bug in versatile_config, but I believe it is generally applicable to other configures as well since it is caused by Makefile syntax.
Here is how I found the bug:
$ make O=/tmp/build distclean $ make O=/tmp/build versatile_config $ make O=/tmp/build -j8 $ ls /tmp/build/examples/standalone/ hello_world hello_world.o libstubs.o smc91111_eeprom smc91111_eeprom.o stubs.o
Notice that hello_world.bin and hello_world.srec are not found.
Hm... which U-Boot version are you referring to? Because for some time "versatile" is broken and does not build at all...
Best regards,
Wolfgang Denk
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de One possible reason that things aren't going according to plan is that there never was a plan in the first place.

Dear Che-liang Chiou,
In message AANLkTimw1vLC8GM_XsdGqGKLUYyzKQoFYFb8-bJVbGBE@mail.gmail.com you wrote:
GNU Makefile have two flavors of variables, recursively expanded that is defined by using '=', and simply expanded that is defined by using ':='.
The bug is caused by using recursively expanded flavor for BIN and SREC. As you can see below, they are prepended by $(obj) twice.
We can reproduce this bug with a simplified version of this Makefile: $ cat > Makefile <<EOF obj := /path/to/obj/ ELF := hello_world
BIN_rec = $(addsuffix .bin,$(ELF)) # recursively expanded BIN_sim := $(addsuffix .bin,$(ELF)) # simply expanded
ELF := $(addprefix $(obj),$(ELF)) BIN_rec := $(addprefix $(obj),$(BIN_rec)) BIN_sim := $(addprefix $(obj),$(BIN_sim))
show: @echo BIN_rec=$(BIN_rec) @echo BIN_sim=$(BIN_sim)
.PHONY: show EOF $ make show BIN_rec=/path/to/obj//path/to/obj/hello_world.bin BIN_sim=/path/to/obj/hello_world.bin
Signed-off-by: Che-Liang Chiou clchiou@chromium.org
examples/standalone/Makefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

Thanks, Wolfgang.
On Fri, May 13, 2011 at 4:30 AM, Wolfgang Denk wd@denx.de wrote:
Dear Che-liang Chiou,
In message AANLkTimw1vLC8GM_XsdGqGKLUYyzKQoFYFb8-bJVbGBE@mail.gmail.com you wrote:
GNU Makefile have two flavors of variables, recursively expanded that is defined by using '=', and simply expanded that is defined by using ':='.
The bug is caused by using recursively expanded flavor for BIN and SREC. As you can see below, they are prepended by $(obj) twice.
We can reproduce this bug with a simplified version of this Makefile: $ cat > Makefile <<EOF obj := /path/to/obj/ ELF := hello_world
BIN_rec = $(addsuffix .bin,$(ELF)) # recursively expanded BIN_sim := $(addsuffix .bin,$(ELF)) # simply expanded
ELF := $(addprefix $(obj),$(ELF)) BIN_rec := $(addprefix $(obj),$(BIN_rec)) BIN_sim := $(addprefix $(obj),$(BIN_sim))
show: @echo BIN_rec=$(BIN_rec) @echo BIN_sim=$(BIN_sim)
.PHONY: show EOF $ make show BIN_rec=/path/to/obj//path/to/obj/hello_world.bin BIN_sim=/path/to/obj/hello_world.bin
Signed-off-by: Che-Liang Chiou clchiou@chromium.org
examples/standalone/Makefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de It all seemed, he thought, to be rather a lot of trouble to go to just sharpen a razor blade. - Terry Pratchett, _The Light Fantastic_
participants (2)
-
Che-liang Chiou
-
Wolfgang Denk