From: John Levon Not that many people are going to be using GCC 3.4 currently, but it might help a bit to prevent compilation bugs like that just witnessed in procfs. (And it consolidates the check_gcc implementation nicely) Makefile | 7 ++++++- arch/arm/Makefile | 1 - arch/i386/Makefile | 2 -- arch/mips/Makefile | 1 - arch/s390/Makefile | 2 -- 5 files changed, 6 insertions(+), 7 deletions(-) diff -puN arch/arm/Makefile~declaration-after-statement-check arch/arm/Makefile --- 25/arch/arm/Makefile~declaration-after-statement-check 2003-09-21 22:04:43.000000000 -0700 +++ 25-akpm/arch/arm/Makefile 2003-09-21 22:04:43.000000000 -0700 @@ -27,7 +27,6 @@ LD += -EB AFLAGS += -mbig-endian endif -check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi) comma = , # This selects which instruction set is used. diff -puN arch/i386/Makefile~declaration-after-statement-check arch/i386/Makefile --- 25/arch/i386/Makefile~declaration-after-statement-check 2003-09-21 22:04:43.000000000 -0700 +++ 25-akpm/arch/i386/Makefile 2003-09-21 22:04:43.000000000 -0700 @@ -21,8 +21,6 @@ LDFLAGS_vmlinux := CFLAGS += -pipe -check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi) - # prevent gcc from keeping the stack 16 byte aligned CFLAGS += $(call check_gcc,-mpreferred-stack-boundary=2,) diff -puN arch/mips/Makefile~declaration-after-statement-check arch/mips/Makefile --- 25/arch/mips/Makefile~declaration-after-statement-check 2003-09-21 22:04:43.000000000 -0700 +++ 25-akpm/arch/mips/Makefile 2003-09-21 22:04:43.000000000 -0700 @@ -58,7 +58,6 @@ MODFLAGS += -mlong-calls cflags-$(CONFIG_KGDB) += -g cflags-$(CONFIG_SB1XXX_CORELIS) += -mno-sched-prolog -fno-omit-frame-pointer -check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi) check_warning = $(shell if $(CC) $(1) -c -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi) # diff -puN arch/s390/Makefile~declaration-after-statement-check arch/s390/Makefile --- 25/arch/s390/Makefile~declaration-after-statement-check 2003-09-21 22:04:43.000000000 -0700 +++ 25-akpm/arch/s390/Makefile 2003-09-21 22:04:43.000000000 -0700 @@ -13,8 +13,6 @@ # Copyright (C) 1994 by Linus Torvalds # -check_gcc = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi) - ifdef CONFIG_ARCH_S390_31 LDFLAGS := -m elf_s390 CFLAGS += -m31 diff -puN Makefile~declaration-after-statement-check Makefile --- 25/Makefile~declaration-after-statement-check 2003-09-21 22:04:43.000000000 -0700 +++ 25-akpm/Makefile 2003-09-21 22:04:43.000000000 -0700 @@ -231,7 +231,9 @@ ifneq ($(findstring s,$(MAKEFLAGS)),) quiet=silent_ endif -export quiet Q KBUILD_VERBOSE +check_gcc = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) + +export quiet Q KBUILD_VERBOSE check_gcc # Look for make include files relative to root of kernel src MAKEFLAGS += --include-dir=$(srctree) @@ -427,6 +429,9 @@ ifdef CONFIG_DEBUG_INFO CFLAGS += -g endif +# warn about C99 declaration after statement +CFLAGS += $(call check_gcc,-Wdeclaration-after-statement,) + # # INSTALL_PATH specifies where to place the updated kernel and system map # images. Uncomment if you want to place them anywhere other than root. _