Re: kbuild now support arch/$ARCH/include - time for ARCHs toconvert

From: Ralf Baechle
Date: Thu Jul 31 2008 - 14:23:42 EST


On Mon, Jul 28, 2008 at 10:05:00PM +0200, Sam Ravnborg wrote:

> The traditional location of the arch specific Makefiles
> has been at:
>
> include/asm-$ARCH
>
> But as suggested by several people over time and lately
> by Linus in the following post:
> http://kerneltrap.org/mailarchive/linux-kernel/2008/5/21/1903924
>
> is is suggested to move the arch specific files under arch/
> and for the header files this is arch/$ARCH/include.
>
> So I have hacked up support for this in kbuild so
> for the simpler cases a simple move of header files as
> in:
> git mv include/asm-$ARCH arch/$ARCH/include/asm
>
> is enough.
>
> If Linus will accept it then I think -rc1 is a perfect
> time to do it as people has less stuff pending touching
> the header files that are moved.
> Validation is easy - does the usual configs build?
>
> For the archs that plays games with symlinks this is a
> splendid opportunity to get rid af these.
> The receipe is simple:
> Use
> KBUILD_CFLAGS += -Iarch/$ARCH/include/$CPU
>
> to select the CPU and then do a copy of the header files
> like this:
>
> git mv include/asm-$ARCH/$CPU arch/$ARCH/include/$CPU/cpu
>
> Then the code can continue to use:
>
> #include <cpu/foo.h>
>
> I already converted sparc to use arch/sparc/include -
> while I merged the header files for sparc and sparc64.
> This change is already upstream.
>
> And for SH I posted a receipe which you can read here:
> http://lkml.org/lkml/2008/7/28/83
>
> It is SH specific but anyway pretty generic.
>
> I am limited in time and resources at the moment but I
> would be glad to help out as time permits should there
> be any questions.

I just did the necessary changes for MIPS and the first testbuild is running
successfully so far.

One of the ugly things in the MIPS makefiles is the use of platform-
specific headers in include/asm-mips/mach-* which contain platform specific
headers. Ideally those should be included through something like
<mach/somefile.h> or <plat/something.h> and I think a directory like
arch/$ARCH/$PLATFORM/include/plat/foobar.h could be a good place in the
new scheme? I assume other platforms have similar issues with subplatforms,
processor sub-architectures etc.?

Ralf
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/