From fc333b2df388d6e8791b3ee59c0679e4a131555a Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Wed, 17 Oct 2007 23:30:14 +0200 Subject: [PATCH] kbuild: check asm symlink when building a kernel We often hit the situation where the asm symlink in include/ points to the wrong architecture. In 9 out of 10 cases thats because we forgot to set ARCH but sometimes we just reused the same tree for another ARCH. For the merged x86 tree we need to create a new symlink but this is not obvious. So with the following patch we check if the symlink points to the correct architecture and error out if this is not the case. Signed-off-by: Sam Ravnborg --- Makefile | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 529b9048d97e..feca34c26145 100644 --- a/Makefile +++ b/Makefile @@ -903,14 +903,24 @@ prepare: prepare0 export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) -# FIXME: The asm symlink changes when $(ARCH) changes. That's -# hard to detect, but I suppose "make mrproper" is a good idea -# before switching between archs anyway. +# The asm symlink changes when $(ARCH) changes. +# Detect this and ask user to run make mrproper -include/asm: - @echo ' SYMLINK $@ -> include/asm-$(SRCARCH)' - $(Q)if [ ! -d include ]; then mkdir -p include; fi; - @ln -fsn asm-$(SRCARCH) $@ +include/asm: FORCE + $(Q)set -e; asmlink=`readlink include/asm | cut -d '-' -f 2`; \ + if [ -L include/asm ]; then \ + if [ "$$asmlink" != "$(SRCARCH)" ]; then \ + echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \ + echo " set ARCH or save .config and run 'make mrproper' to fix it"; \ + exit 1; \ + fi; \ + else \ + echo ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \ + if [ ! -d include ]; then \ + mkdir -p include; \ + fi; \ + ln -fsn asm-$(SRCARCH) $@; \ + fi # Generate some files # ---------------------------------------------------------------------------