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

Caveh Jalali
2009-09-17T21:56:05Z

sadly, some 3rd party src packages don't quite do the right thing with
their kernel include paths and still depend on the include2/asm symlink
to find the platform header files.

i see your point about include2 being somewhat redundant/legacy, however,
as long as we are creating it, we should have it point to the intended
location instead of being a dead link!

On Thu, Sep 17, 2009 at 4:45 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Thursday 17 September 2009, Caveh Jalali wrote:
>
>> 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
>
> I think we should no longer have the include2 directory at all with new kernels.
>
> LINUXINCLUDE already contains the right path in theory:
>
> LINUXINCLUDE    := -Iinclude \
>                   $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
>                   -I$(srctree)/arch/$(hdr-arch)/include               \
>                   -include include/linux/autoconf.h
>
> I'm not sure what goes wrong here. What is the gcc command line you see?
>
>        Arnd <><
>

--
00c