Messages in this thread |  | | From | Masahiro Yamada <> | Date | Sat, 31 Aug 2019 22:04:53 +0900 | Subject | Re: [PATCH] riscv: add arch/riscv/Kbuild |
| |
On Sat, Aug 31, 2019 at 12:53 AM Christoph Hellwig <hch@infradead.org> wrote: > > On Tue, Aug 27, 2019 at 02:14:59PM +0900, Masahiro Yamada wrote: > > There is a small documentation about "Makefile" vs "Kbuild" > > in Documentation/kbuild/modules.rst section 3.2 > > I know that part. > > > > > It is talking about external modules, but the benefit applies > > to arch/$(SRCARCH)/Kbuild as well. > > I fail to fully understand this part, though.
Kbuild support two file names, "Makefile" and "Kbuild" for describing obj-y, obj-m, etc.
If both exist in the same directory, "Kbuild" takes precedence.
This is useful where we want to use "Makefile" for other purposes.
For external modules, we use "Makefile" as a start point, so we often want to describe obj-m in "Kbuild" instead of "Makefile".
Similarly, arch/$(SRCARCH)/Makefile is very special in that it is included from the top-level Makefile, and specify arch-specific compiler flags etc.
We can use arch/$(SRCARCH)/Kbuild to specify obj-y, obj-m. The top-level Makefile does not need to know the directory structure under arch/$(SRCARCH)/.
This is logical separation.
> > > arch/$(SRCARCH)/Makefile is included by the top Makefile > > to specify arch-specific compiler flags, etc. > > > > On the other hand, arch/$(SRCARCH)/Kbuild, if exists, is included > > when Kbuild actually descends into arch/$(SRCARCH)/. > > > > This allows you to hierarchize the sub-directories to visit > > instead of specifying everything in flat in arch/$(SRCARCH)/Makefile. > > Yes, but what is the plan in the long run? arch/$(ARCH)/Makefile > is still a weird hodge-podge of overriding global variables and misc > Makefile targets, it now just has a tiny little work.
There are lots of arch-specific build settings. We definitely need a place to describe them, hence arch/$(SRCARCH)/Makefile.
> Is there any > actual benefit from using Kbuild for the build process?
For example, arch/x86/Kbuild is quite useful since there are many directories in arch/x86.
riscv does not have many directories for now since it is a new architecture, but it will be useful when it will have more directories.
> Can we > eventually move the setting of variables in the Makefile into another > special purpose file? Is the support for actually compiling kernel > source files from the arch/$(ARCH) Makefile eventually going away?
No, I do not think so.
> > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
-- Best Regards Masahiro Yamada
|  |