[patch] Makefile: can't build modules outside the kernel tree if it was built using O=

Caveh Jalali
2009-09-17T02:30:40Z

in 2.6.31, it is no longer possible to build kernel modules for some platforms
(the ones that need include2) outside the kernel src tree if the
src tree was built using O= to specify an alternate directory for the
build output.

i think this broke with the following commit:

commit b8b572e1015f81b4e748417be2629dfe51ab99f9
Author: Stephen Rothwell <sfr@canb.auug.org.au>
Date:   Fri Aug 1 15:20:30 2008 +1000

powerpc: Move include files to arch/powerpc/include/asm

when the platform specific include directories were shuffled around
without updating the
top level Makefile. however, i think this FAIL is generic, and not
limited to powerpc.
here's a patch to the top level Makefile to teach it about the shuffled files:

--- /local/caveh/linux/linux-2.6.31/Makefile    2009-09-09
15:13:59.000000000 -0700
+++ Makefile    2009-09-16 12:23:05.000000000 -0700
@@ -958,9 +958,9 @@ ifneq ($(KBUILD_SRC),)
echo "  in the '$(srctree)' directory.";\
/bin/false; \
fi;
-       $(Q)if [ ! -d include2 ]; then                                  \
-           mkdir -p include2;                                          \
-           ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm;     \
+       $(Q)if [ ! -d include2 ]; then                                   \
+           mkdir -p include2;                                           \
+           ln -fsn $(srctree)/arch/$(SRCARCH)/include/asm include2/asm; \
fi
endif