Re: 2.6.24-rc1-82798a1 compile failure (x86_64)

Sam Ravnborg
2007-11-04T11:15:19Z

> I totally disagree.
>
> People can't have it both ways. CFLAGS has global meaning in every
> Makefile based build tree, it's not an "autoconf" thing. This is well
> established practice, and I think it's a good thing the kernel does it
> now too.
>
> If people set something like CFLAGS in their environment, they must
> understand what that means, and it means that universally it will
> influence your Makefile based builds. Yes, this means all of them and
> even potentially the kernel build.
I'm afraid some people do not realize a whit about what they do.
So at least we could let kbuild warn about it.
Something like this:

$ export CFLAGS=-O3
$ make AFLAGS=-fisk
Makefile:540: "Appending $AFLAGS (-fisk) from command line to kernel defined $AFLAGS"
Makefile:544: "Appending $CFLAGS (-O3) from environment to kernel defined $CFLAGS"
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CC arch/x86/kernel/asm-offsets.s
GEN include/asm-x86/asm-offsets.h
CALL scripts/checksyscalls.sh
CC scripts/mod/empty.o

This patch is needed to do so.

If one does a make O=... build then they will see the warning(s) twice.

Sam

diff --git a/Makefile b/Makefile
index 188c3b6..1ae8779 100644
--- a/Makefile
+++ b/Makefile
@@ -528,9 +528,22 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)

# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
-KBUILD_CPPFLAGS += $(CPPFLAGS)
-KBUILD_AFLAGS += $(AFLAGS)
-KBUILD_CFLAGS += $(CFLAGS)
+# But warn user when we do so
+warn-assign = \
+$(warning "Appending $$$(1) ($($(1))) from $(origin $(1)) to kernel defined $$$(1)")
+
+ifneq ($(CPPFLAGS),)
+ $(call warn-assign,CPPFLAGS)
+ KBUILD_CPPFLAGS += $(CPPFLAGS)
+endif
+ifneq ($(AFLAGS),)
+ $(call warn-assign,AFLAGS)
+ KBUILD_AFLAGS += $(AFLAGS)
+endif
+ifneq ($(CFLAGS),)
+ $(call warn-assign,CFLAGS)
+ KBUILD_CFLAGS += $(CFLAGS)
+endif

# Use --build-id when available.
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\