MIPS: Fix build with C=1
authorAaro Koskinen <aaro.koskinen@iki.fi>
Wed, 19 Oct 2011 22:33:27 +0000 (01:33 +0300)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 20 Oct 2011 14:00:20 +0000 (15:00 +0100)
When trying to compile the 3.1-rc10 kernel for my MIPS board with C=1
(sparse checking), the build fails early with the error:

  CHK     include/linux/version.h
  UPD     include/linux/version.h
  CHK     include/generated/utsrelease.h
  UPD     include/generated/utsrelease.h
  Checking missing-syscalls for N32
  CALL    scripts/checksyscalls.sh
  Checking missing-syscalls for O32
  CALL    scripts/checksyscalls.sh
  CC      kernel/bounds.s
  GEN     include/generated/bounds.h
  CC      arch/mips/kernel/asm-offsets.s
  GEN     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
  HOSTCC  scripts/genksyms/genksyms.o
  SHIPPED scripts/genksyms/lex.lex.c
  SHIPPED scripts/genksyms/keywords.hash.c
  SHIPPED scripts/genksyms/parse.tab.h
  HOSTCC  scripts/genksyms/lex.lex.o
  SHIPPED scripts/genksyms/parse.tab.c
  HOSTCC  scripts/genksyms/parse.tab.o
  HOSTLD  scripts/genksyms/genksyms
/bin/sh: Syntax error: "(" unexpected
make[3]: *** [scripts/mod/empty.o] Error 2
make[2]: *** [scripts/mod] Error 2
make[1]: *** [scripts] Error 2

It seems the shell chokes because sparse is called with command line
arguments such as:

-D__INT8_C(c)='c'

Converting these to form:

-D'__INT8_C(c)'='c'

seems to fix the problem.

[ralf@linux-mips.org: This affects builds with gcc 4.5 and newer.]

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/2827/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/Makefile

index eede9b350803b230649c189b34ff16543025d107..9b4cb00407d7c468f607213f88dd729731a588be 100644 (file)
@@ -226,7 +226,7 @@ LDFLAGS                     += -m $(ld-emul)
 ifdef CONFIG_MIPS
 CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -xc /dev/null | \
        egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
-       sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
+       sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/")
 ifdef CONFIG_64BIT
 CHECKFLAGS             += -m64
 endif