[U-Boot] [PATCH 2/2] tools: Use override when changing CC, CFLAGS, etc.

If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
Signed-off-by: Scott Wood scottwood@freescale.com --- tools/Makefile | 10 +++++----- tools/gdb/Makefile | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile index 2a9a9fd..6bf3fde 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -139,21 +139,21 @@ LIBFDT_OBJS := $(addprefix $(obj),$(LIBFDT_OBJ_FILES-y)) # Use native tools and options # Define __KERNEL_STRICT_NAMES to prevent typedef overlaps # -CPPFLAGS = -idirafter $(SRCTREE)/include \ +override CPPFLAGS = -idirafter $(SRCTREE)/include \ -idirafter $(OBJTREE)/include2 \ -idirafter $(OBJTREE)/include \ -I $(SRCTREE)/libfdt \ -I $(SRCTREE)/tools \ -DTEXT_BASE=$(TEXT_BASE) -DUSE_HOSTCC \ -D__KERNEL_STRICT_NAMES -CFLAGS = $(HOSTCFLAGS) $(CPPFLAGS) -O +override CFLAGS = $(HOSTCFLAGS) $(CPPFLAGS) -O
# No -pedantic switch to avoid libfdt compilation warnings FIT_CFLAGS = -Wall $(CPPFLAGS) -O
-AFLAGS = -D__ASSEMBLY__ $(CPPFLAGS) -CC = $(HOSTCC) -STRIP = $(HOSTSTRIP) +override AFLAGS = -D__ASSEMBLY__ $(CPPFLAGS) +override CC = $(HOSTCC) +override STRIP = $(HOSTSTRIP) MAKEDEPEND = makedepend
all: $(obj).depend $(BINS) $(LOGO-y) subdirs diff --git a/tools/gdb/Makefile b/tools/gdb/Makefile index 0a5687d..dca97f4 100644 --- a/tools/gdb/Makefile +++ b/tools/gdb/Makefile @@ -37,9 +37,9 @@ BINS := $(addprefix $(obj),$(BINS)) # # Use native tools and options # -CPPFLAGS = -I$(BFD_ROOT_DIR)/include -CFLAGS = $(HOSTCFLAGS) -O $(CPPFLAGS) -CC = $(HOSTCC) +override CPPFLAGS = -I$(BFD_ROOT_DIR)/include +override CFLAGS = $(HOSTCFLAGS) -O $(CPPFLAGS) +override CC = $(HOSTCC) MAKEDEPEND = makedepend
HOSTOS := $(shell uname -s | sed -e 's/([Cc][Yy][Gg][Ww][Ii][Nn]).*/cygwin/')

On Monday 19 October 2009 17:24:35 Scott Wood wrote:
If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
then again, if we didnt mix host and target variable names, this wouldnt be a problem. in a sane world, all of the host stuff would be HOSTXX (or BUILDXX). -mike

Mike Frysinger wrote:
On Monday 19 October 2009 17:24:35 Scott Wood wrote:
If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
then again, if we didnt mix host and target variable names, this wouldnt be a problem. in a sane world, all of the host stuff would be HOSTXX (or BUILDXX).
Right... I initially tried substituting in HOSTCC, but it still tried to use CC, probably from an implicit rule that would need to be made explicit in order to use HOSTCC.
I can try to respin it with a new explicit rule if y'all want.
-Scott

On Monday 19 October 2009 17:56:37 Scott Wood wrote:
Mike Frysinger wrote:
On Monday 19 October 2009 17:24:35 Scott Wood wrote:
If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
then again, if we didnt mix host and target variable names, this wouldnt be a problem. in a sane world, all of the host stuff would be HOSTXX (or BUILDXX).
Right... I initially tried substituting in HOSTCC, but it still tried to use CC, probably from an implicit rule that would need to be made explicit in order to use HOSTCC.
I can try to respin it with a new explicit rule if y'all want.
if you feel like cleaning up all the host code, that'd be great, but i'm not going to NACK a patch that obviously fixes broken code ;) -mike

Mike Frysinger wrote:
On Monday 19 October 2009 17:24:35 Scott Wood wrote:
If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
then again, if we didnt mix host and target variable names, this wouldnt be a problem. in a sane world, all of the host stuff would be HOSTXX (or BUILDXX).
I was looking at making static pattern rules to divert host objects to a host rule, with separate object lists for files that want pedantic and non-pedantic (leaving the current set of individual file rules would cause conflicts).
It seems that nothing in tools/Makefile is using -pedantic or any of the other HOSTCFLAGS set in tools/Makefile; HOSTCFLAGS is getting overwritten by config.mk. It looks like maybe this was introduced when HOST_CFLAGS was changed to HOSTCFLAGS.
Any thoughts on how to untangle things? What flags to we really want to use here? Given the number of files that have been exempted, do we still want to keep the -pedantic stuff around?
-Scott

On Tuesday 20 October 2009 17:53:58 Scott Wood wrote:
Mike Frysinger wrote:
On Monday 19 October 2009 17:24:35 Scott Wood wrote:
If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
then again, if we didnt mix host and target variable names, this wouldnt be a problem. in a sane world, all of the host stuff would be HOSTXX (or BUILDXX).
I was looking at making static pattern rules to divert host objects to a host rule, with separate object lists for files that want pedantic and non-pedantic (leaving the current set of individual file rules would cause conflicts).
It seems that nothing in tools/Makefile is using -pedantic or any of the other HOSTCFLAGS set in tools/Makefile; HOSTCFLAGS is getting overwritten by config.mk. It looks like maybe this was introduced when HOST_CFLAGS was changed to HOSTCFLAGS.
Any thoughts on how to untangle things? What flags to we really want to use here? Given the number of files that have been exempted, do we still want to keep the -pedantic stuff around?
i dislike -pedantic/-ansi (i find it a waste of time), but i think Wolfgang wants to support older crap
having all hostflags be in the top level would be good at any rate rather than duplicating into tools/ ... -mike

Dear Scott Wood,
In message 20091019212435.GA31339@loki.buserror.net you wrote:
If the user has specified a CC or similar on the command line, that is the cross compiler, not the host compiler. Override is needed to keep these assignments from being ignored in that case.
Signed-off-by: Scott Wood scottwood@freescale.com
tools/Makefile | 10 +++++----- tools/gdb/Makefile | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-)
As Mike pointed out, we should rather consistently use HOSTCC when we refer to the host's C compiler.
I suggest you rework the patch to do that.
Thanks.
Best regards,
Wolfgang Denk
participants (3)
-
Mike Frysinger
-
Scott Wood
-
Wolfgang Denk