[U-Boot] [PATCH] Fix build failure in examples/standalone

The variable ELF contains many leading spaces. This adds a 'fake' source file variable COBJS. It leads to build failure as below:
make[1]: Entering directory `/home/sanjeev/u-boot/examples/standalone' arm-none-linux-gnueabi-gcc -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/sanjeev/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/codesourcery/2009q1- 203/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include -pipe -DCONFIG_ ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-interwork -march=armv5 -Wall -Wstrict-prototypes -fno-stack-protector -g -Os -fno-common -ff ixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/sanje ev/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/co desourcery/2009q1-203/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/includ e -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-inte rwork -march=armv5 -I.. -Bstatic -T u-boot.lds -Ttext 0x80e80000 -o .c arm-none-linux-gnueabi-gcc: no input files make[1]: *** [.c] Error 1 make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make: *** [examples/standalone] Error 2 premi #
Signed-off-by: Sanjeev Premi premi@ti.com --- examples/standalone/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index 5e2f2bc..61f3be1 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -38,7 +38,7 @@ ELF-mpc8260 += mem_to_mem_idma2intr ELF-ppc += sched ELF-oxc += eepro100_eeprom
-ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) +ELF := $(strip $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU))) SREC = $(addsuffix .srec,$(ELF)) BIN = $(addsuffix .bin,$(ELF))

On 06/11/09 09:16, Sanjeev Premi wrote:
The variable ELF contains many leading spaces. This adds a 'fake' source file variable COBJS. It leads to build failure as below:
make[1]: Entering directory `/home/sanjeev/u-boot/examples/standalone' arm-none-linux-gnueabi-gcc -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/sanjeev/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/codesourcery/2009q1- 203/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include -pipe -DCONFIG_ ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-interwork -march=armv5 -Wall -Wstrict-prototypes -fno-stack-protector -g -Os -fno-common -ff ixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/sanje ev/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/co desourcery/2009q1-203/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/includ e -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-inte rwork -march=armv5 -I.. -Bstatic -T u-boot.lds -Ttext 0x80e80000 -o .c arm-none-linux-gnueabi-gcc: no input files make[1]: *** [.c] Error 1 make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make: *** [examples/standalone] Error 2 premi #
Signed-off-by: Sanjeev Premi premi@ti.com
examples/standalone/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index 5e2f2bc..61f3be1 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -38,7 +38,7 @@ ELF-mpc8260 += mem_to_mem_idma2intr ELF-ppc += sched ELF-oxc += eepro100_eeprom
-ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) +ELF := $(strip $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU))) SREC = $(addsuffix .srec,$(ELF)) BIN = $(addsuffix .bin,$(ELF))
What version of make do you have? I have seen this issue when I tried to use make 3.80, but it doesn't seem to be a problem in 3.81
Nick.

Dear Sanjeev Premi,
In message 1257499011-28064-1-git-send-email-premi@ti.com you wrote:
The variable ELF contains many leading spaces. This adds a 'fake' source file variable COBJS. It leads to build failure as below:
I read about the bug reports, but I cannot reproduce this on any system I'm running.
Also, why would any white space matter here?
Can you please let me know which exact versions of "make" (output of "make --version") and cross-gcc (output of "arm-none-linux-gnueabi-gcc --version") you are running?
Best regards,
Wolfgang Denk

-----Original Message----- From: Wolfgang Denk [mailto:wd@denx.de] Sent: Friday, November 06, 2009 6:15 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH] Fix build failure in examples/standalone
Dear Sanjeev Premi,
In message 1257499011-28064-1-git-send-email-premi@ti.com you wrote:
The variable ELF contains many leading spaces. This adds a 'fake' source file variable COBJS. It leads to build failure as below:
I read about the bug reports, but I cannot reproduce this on any system I'm running.
Also, why would any white space matter here?
I was surprised too. It is the first time ever I have seen this problem with any Makefile over years.
To debug I tried this:
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index 5e2f2bc..e9c3a54 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -42,7 +42,9 @@ ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) SREC = $(addsuffix .srec,$(ELF)) BIN = $(addsuffix .bin,$(ELF))
+ COBJS := $(ELF:=.o) +$(error *** COBJS evaluates to [$(COBJS)])
LIB = $(obj)libstubs.a
And the result is:
premi # make for dir in tools examples/standalone examples/api ; do make -C $dir _depend ; done make[1]: Entering directory `/home/sanjeev/u-boot/tools' make[1]: Nothing to be done for `_depend'. make[1]: Leaving directory `/home/sanjeev/u-boot/tools' make[1]: Entering directory `/home/sanjeev/u-boot/examples/standalone' Makefile:47: *** *** COBJS evaluates to [hello_world.o smc911x_eeprom.o .o]. Stop. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make[1]: Entering directory `/home/sanjeev/u-boot/examples/api' make[1]: Nothing to be done for `_depend'. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/api' make -C tools all make[1]: Entering directory `/home/sanjeev/u-boot/tools' make[1]: Leaving directory `/home/sanjeev/u-boot/tools' make -C examples/standalone all make[1]: Entering directory `/home/sanjeev/u-boot/examples/standalone' Makefile:47: *** *** COBJS evaluates to [hello_world.o smc911x_eeprom.o .o]. Stop. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make: *** [examples/standalone] Error 2
Notice the "empty" .o in the output. This prompted me to use $(strip ...)
Can you please let me know which exact versions of "make" (output of "make --version") and cross-gcc (output of "arm-none-linux-gnueabi-gcc --version") you are running?
premi # make --version GNU Make 3.80 Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. premi # premi # premi # arm-none-linux-gnueabi-gcc --version arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q1-203) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Best regards, Sanjeev
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 The Gates in my computer are AND, OR and NOT; they are not Bill.

-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Premi, Sanjeev Sent: Friday, November 06, 2009 8:21 PM To: Wolfgang Denk Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH] Fix build failure in examples/standalone
-----Original Message----- From: Wolfgang Denk [mailto:wd@denx.de] Sent: Friday, November 06, 2009 6:15 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH] Fix build failure in
examples/standalone
Dear Sanjeev Premi,
you wrote:
The variable ELF contains many leading spaces. This adds a 'fake' source file variable COBJS. It leads to build failure as below:
I read about the bug reports, but I cannot reproduce this on any system I'm running.
Also, why would any white space matter here?
I was surprised too. It is the first time ever I have seen this problem with any Makefile over years.
To debug I tried this:
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile index 5e2f2bc..e9c3a54 100644 --- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -42,7 +42,9 @@ ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) SREC = $(addsuffix .srec,$(ELF)) BIN = $(addsuffix .bin,$(ELF))
COBJS := $(ELF:=.o) +$(error *** COBJS evaluates to [$(COBJS)])
LIB = $(obj)libstubs.a
And the result is:
premi # make for dir in tools examples/standalone examples/api ; do make -C $dir _depend ; done make[1]: Entering directory `/home/sanjeev/u-boot/tools' make[1]: Nothing to be done for `_depend'. make[1]: Leaving directory `/home/sanjeev/u-boot/tools' make[1]: Entering directory `/home/sanjeev/u-boot/examples/standalone' Makefile:47: *** *** COBJS evaluates to [hello_world.o smc911x_eeprom.o .o]. Stop. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make[1]: Entering directory `/home/sanjeev/u-boot/examples/api' make[1]: Nothing to be done for `_depend'. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/api' make -C tools all make[1]: Entering directory `/home/sanjeev/u-boot/tools' make[1]: Leaving directory `/home/sanjeev/u-boot/tools' make -C examples/standalone all make[1]: Entering directory `/home/sanjeev/u-boot/examples/standalone' Makefile:47: *** *** COBJS evaluates to [hello_world.o smc911x_eeprom.o .o]. Stop. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make: *** [examples/standalone] Error 2
Notice the "empty" .o in the output. This prompted me to use $(strip ...)
Just after pressing this "ENTER", I tried the following: [Moved $(ELF-y) to end of the assignment and kill trailing spaces]
-ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) +ELF := $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) $(ELF-y)
And it worked! The message for COBJS shows:
Makefile:47: *** *** COBJS evaluates to [ hello_world.o smc911x_eeprom.o]. Stop.
So, maybe "make v3.80" has problems with trailing spaces.
For the fix, I can resubmit with the change shown above OR we could keep the original. Let me know your thoughts.
Best regards, Sanjeev
Can you please let me know which exact versions of "make" (output of "make --version") and cross-gcc (output of "arm-none-linux-gnueabi-gcc --version") you are running?
premi # make --version GNU Make 3.80 Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. premi # premi # premi # arm-none-linux-gnueabi-gcc --version arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q1-203) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Best regards, Sanjeev
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
The Gates in my computer are AND, OR and NOT; they are not Bill.
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Friday 06 November 2009 10:00:13 Premi, Sanjeev wrote:
From: Premi, Sanjeev
From: Wolfgang Denk
Sanjeev Premi wrote:
The variable ELF contains many leading spaces. This adds a 'fake' source file variable COBJS. It leads to build failure as below:
I read about the bug reports, but I cannot reproduce this on any system I'm running.
Also, why would any white space matter here?
I was surprised too. It is the first time ever I have seen this problem with any Makefile over years.
To debug I tried this:
--- a/examples/standalone/Makefile +++ b/examples/standalone/Makefile @@ -42,7 +42,9 @@ ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) SREC = $(addsuffix .srec,$(ELF)) BIN = $(addsuffix .bin,$(ELF))
COBJS := $(ELF:=.o) +$(error *** COBJS evaluates to [$(COBJS)])
LIB = $(obj)libstubs.a
And the result is:
premi # make Makefile:47: *** *** COBJS evaluates to [hello_world.o smc911x_eeprom.o .o]. Stop.
Notice the "empty" .o in the output. This prompted me to use $(strip ...)
Just after pressing this "ENTER", I tried the following: [Moved $(ELF-y) to end of the assignment and kill trailing spaces]
-ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) +ELF := $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) $(ELF-y)
And it worked! The message for COBJS shows:
Makefile:47: *** *** COBJS evaluates to [ hello_world.o smc911x_eeprom.o]. Stop.
So, maybe "make v3.80" has problems with trailing spaces.
For the fix, I can resubmit with the change shown above OR we could keep the original. Let me know your thoughts.
i kind of prefer this method. if we go with the first method, it needs to have a comment there explaining why the strip exists: # we need the strip to workaround a bug in make-3.80 and whitespace/:= -mike

Dear Mike Frysinger,
In message 200911061122.16814.vapier@gentoo.org you wrote:
Just after pressing this "ENTER", I tried the following: [Moved $(ELF-y) to end of the assignment and kill trailing spaces]
-ELF := $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) +ELF := $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)) $(ELF-y)
And it worked! The message for COBJS shows:
Makefile:47: *** *** COBJS evaluates to [ hello_world.o smc911x_eeprom.o]. Stop.
So, maybe "make v3.80" has problems with trailing spaces.
For the fix, I can resubmit with the change shown above OR we could keep the original. Let me know your thoughts.
i kind of prefer this method. if we go with the first method, it needs to> have a comment there explaining why the strip exists: # we need the strip to workaround a bug in make-3.80 and whitespace/:=
We definitely need an explanationin any case - otherwise someone might come up with a patch to change the order again (say, to come up with a common form) and it breaks again.
Best regards,
Wolfgang Denk

Dear "Premi, Sanjeev",
In message B85A65D85D7EB246BE421B3FB0FBB59301DE31FB63@dbde02.ent.ti.com you wrote:
I was surprised too. It is the first time ever I have seen this problem with any Makefile over years.
To debug I tried this:
...
Makefile:47: *** *** COBJS evaluates to [hello_world.o smc911x_eeprom.o .o]. Stop. make[1]: Leaving directory `/home/sanjeev/u-boot/examples/standalone' make: *** [examples/standalone] Error 2
Notice the "empty" .o in the output. This prompted me to use $(strip ...)
Indeed. I do not doubt that your modification fixes the issue.
premi # make --version GNU Make 3.80 Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
It seems very much to me as if this was a bug in GNU Make 3.80, then.
May I please ask you to modify your poatch such that both the code and the commit message contain a comment that the added "strip" call is a workaround for a white-space handling problem in some versions of GNU make, especially version 3.80?
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 A conservative is a man who believes that nothing should be done for the first time. - Alfred E. Wiggam

-----Original Message----- From: Wolfgang Denk [mailto:wd@denx.de] Sent: Monday, November 09, 2009 4:16 AM To: Premi, Sanjeev Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH] Fix build failure in examples/standalone
Dear "Premi, Sanjeev",
In message B85A65D85D7EB246BE421B3FB0FBB59301DE31FB63@dbde02.ent.ti.com you wrote:
I was surprised too. It is the first time ever I have seen
this problem
with any Makefile over years.
To debug I tried this:
...
Makefile:47: *** *** COBJS evaluates to [hello_world.o
smc911x_eeprom.o .o]. Stop.
make[1]: Leaving directory
`/home/sanjeev/u-boot/examples/standalone'
make: *** [examples/standalone] Error 2
Notice the "empty" .o in the output. This prompted me to
use $(strip ...)
Indeed. I do not doubt that your modification fixes the issue.
[sp] I was only illustrating the problem.
premi # make --version GNU Make 3.80 Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
It seems very much to me as if this was a bug in GNU Make 3.80, then.
May I please ask you to modify your poatch such that both the code and the commit message contain a comment that the added "strip" call is a workaround for a white-space handling problem in some versions of GNU make, especially version 3.80?
[sp] Sure I will do so today.
Best regards, Sanjeev
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 A conservative is a man who believes that nothing should be done for the first time. - Alfred E. Wiggam
participants (5)
-
Mike Frysinger
-
Nick Thompson
-
Premi, Sanjeev
-
Sanjeev Premi
-
Wolfgang Denk