Message ID | 20151110145519.GA5952@ogun.home |
---|---|
State | RFC |
Delegated to: | Tom Rini |
Headers | show |
On 11/10/2015 08:55 AM, Nishanth Menon wrote: > On 12:25-20151110, Masahiro Yamada wrote: >> 2015-11-10 5:24 GMT+09:00 Simon Glass <sjg@chromium.org>: >>>>> I am unhappy because I was hoping >>>>> we could stop creating symbolic links during building >>>>> in a long run. >>> >>> But how? I don't see that it is possible if we want to have a sensible >>> prefix for each include. >> >> >> [step 1] move SoC-specific headers to arch/<arch>/mach-<soc>/include/mach >> >> [step 2] change #include <asm/arch/foo.h> to #include <mach/foo.h> >> >> [step 3] Drop CONFIG_CREATE_ARCH_SYMLINK >> >> >> For example, mach-uniphier finished [1] and [2], >> so it does not require the symbolic link. >> (several ARM SoCs finished [1]) >> >> >> I think this is the way ARM should do, at least. >> >> The topic of debate is PowerPC. Should we introduce mach-<soc> >> directories or not? >> > > OK: Option 4: > > How about this guys? include/board-common is an actual directory > and instead of headers being located in board/$(VENDOR)/common or > board/$(VENDOR)/common/include, we move the common headers to > include/board/$(VENDOR)/ Directory. This will make the usage as follows: > > #include <$(VENDOR)/xyz.h> > > I know this does not exactly meet Simon's suggestion here of being > identifiably board-common/xyz.h -> but at least knowing the prefix as > vendor name implies a board common header. > > diff --git a/Makefile b/Makefile > index 3c21f8ddf9e9..2bd684199512 100644 > --- a/Makefile > +++ b/Makefile > @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) > # U-Boot objects....order is important (i.e. start must be first) > > HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) > +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) > > libs-y += lib/ > libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ > > How does this sound? > Spin off from option 4 is option 5 -> where we dont have the Makefile change. the board includes are located in include/board-common/$(VENDOR)/ directory. Usage will be: #include <board-common/$(VENDOR)/xyz.h> Almost meets Simon's needs(identifiable as board common header) and I think matches what Masahiro-san wants as well(no symlinks). OK, i am out of ideas at least for now... Any other suggestions / opinions?
Hi, On 10 November 2015 at 08:34, Nishanth Menon <nm@ti.com> wrote: > On 11/10/2015 08:55 AM, Nishanth Menon wrote: >> On 12:25-20151110, Masahiro Yamada wrote: >>> 2015-11-10 5:24 GMT+09:00 Simon Glass <sjg@chromium.org>: >>>>>> I am unhappy because I was hoping >>>>>> we could stop creating symbolic links during building >>>>>> in a long run. >>>> >>>> But how? I don't see that it is possible if we want to have a sensible >>>> prefix for each include. >>> >>> >>> [step 1] move SoC-specific headers to arch/<arch>/mach-<soc>/include/mach >>> >>> [step 2] change #include <asm/arch/foo.h> to #include <mach/foo.h> >>> >>> [step 3] Drop CONFIG_CREATE_ARCH_SYMLINK >>> >>> >>> For example, mach-uniphier finished [1] and [2], >>> so it does not require the symbolic link. >>> (several ARM SoCs finished [1]) >>> >>> >>> I think this is the way ARM should do, at least. >>> >>> The topic of debate is PowerPC. Should we introduce mach-<soc> >>> directories or not? >>> >> >> OK: Option 4: >> >> How about this guys? include/board-common is an actual directory >> and instead of headers being located in board/$(VENDOR)/common or >> board/$(VENDOR)/common/include, we move the common headers to >> include/board/$(VENDOR)/ Directory. This will make the usage as follows: >> >> #include <$(VENDOR)/xyz.h> >> >> I know this does not exactly meet Simon's suggestion here of being >> identifiably board-common/xyz.h -> but at least knowing the prefix as >> vendor name implies a board common header. >> >> diff --git a/Makefile b/Makefile >> index 3c21f8ddf9e9..2bd684199512 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) >> # U-Boot objects....order is important (i.e. start must be first) >> >> HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) >> +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) >> >> libs-y += lib/ >> libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ >> >> How does this sound? >> > Spin off from option 4 is option 5 -> where we dont have the Makefile > change. the board includes are located in > include/board-common/$(VENDOR)/ directory. > > > Usage will be: > > #include <board-common/$(VENDOR)/xyz.h> > > > Almost meets Simon's needs(identifiable as board common header) and I > think matches what Masahiro-san wants as well(no symlinks). > > > OK, i am out of ideas at least for now... Any other suggestions / opinions? If we don't want a symlink then option 5 seems good to me. Thanks very much for looking into this in so much detail, Nishanth. Thoughts - Masahiro? Tom? Regards, Simon
On Thu, Nov 12, 2015 at 09:16:00AM -0700, Simon Glass wrote: > Hi, > > On 10 November 2015 at 08:34, Nishanth Menon <nm@ti.com> wrote: > > On 11/10/2015 08:55 AM, Nishanth Menon wrote: > >> On 12:25-20151110, Masahiro Yamada wrote: > >>> 2015-11-10 5:24 GMT+09:00 Simon Glass <sjg@chromium.org>: > >>>>>> I am unhappy because I was hoping > >>>>>> we could stop creating symbolic links during building > >>>>>> in a long run. > >>>> > >>>> But how? I don't see that it is possible if we want to have a sensible > >>>> prefix for each include. > >>> > >>> > >>> [step 1] move SoC-specific headers to arch/<arch>/mach-<soc>/include/mach > >>> > >>> [step 2] change #include <asm/arch/foo.h> to #include <mach/foo.h> > >>> > >>> [step 3] Drop CONFIG_CREATE_ARCH_SYMLINK > >>> > >>> > >>> For example, mach-uniphier finished [1] and [2], > >>> so it does not require the symbolic link. > >>> (several ARM SoCs finished [1]) > >>> > >>> > >>> I think this is the way ARM should do, at least. > >>> > >>> The topic of debate is PowerPC. Should we introduce mach-<soc> > >>> directories or not? > >>> > >> > >> OK: Option 4: > >> > >> How about this guys? include/board-common is an actual directory > >> and instead of headers being located in board/$(VENDOR)/common or > >> board/$(VENDOR)/common/include, we move the common headers to > >> include/board/$(VENDOR)/ Directory. This will make the usage as follows: > >> > >> #include <$(VENDOR)/xyz.h> > >> > >> I know this does not exactly meet Simon's suggestion here of being > >> identifiably board-common/xyz.h -> but at least knowing the prefix as > >> vendor name implies a board common header. > >> > >> diff --git a/Makefile b/Makefile > >> index 3c21f8ddf9e9..2bd684199512 100644 > >> --- a/Makefile > >> +++ b/Makefile > >> @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) > >> # U-Boot objects....order is important (i.e. start must be first) > >> > >> HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) > >> +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) > >> > >> libs-y += lib/ > >> libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ > >> > >> How does this sound? > >> > > Spin off from option 4 is option 5 -> where we dont have the Makefile > > change. the board includes are located in > > include/board-common/$(VENDOR)/ directory. > > > > > > Usage will be: > > > > #include <board-common/$(VENDOR)/xyz.h> > > > > > > Almost meets Simon's needs(identifiable as board common header) and I > > think matches what Masahiro-san wants as well(no symlinks). > > > > > > OK, i am out of ideas at least for now... Any other suggestions / opinions? > > If we don't want a symlink then option 5 seems good to me. Thanks very > much for looking into this in so much detail, Nishanth. > > Thoughts - Masahiro? Tom? No symlink should mean Masahiro is happy, so if you're fine with #5 then that works for me too, thanks!
On 11/12/2015 10:22 AM, Tom Rini wrote: > On Thu, Nov 12, 2015 at 09:16:00AM -0700, Simon Glass wrote: >> Hi, >> >> On 10 November 2015 at 08:34, Nishanth Menon <nm@ti.com> wrote: >>> On 11/10/2015 08:55 AM, Nishanth Menon wrote: >>>> On 12:25-20151110, Masahiro Yamada wrote: >>>>> 2015-11-10 5:24 GMT+09:00 Simon Glass <sjg@chromium.org>: >>>>>>>> I am unhappy because I was hoping >>>>>>>> we could stop creating symbolic links during building >>>>>>>> in a long run. >>>>>> >>>>>> But how? I don't see that it is possible if we want to have a sensible >>>>>> prefix for each include. >>>>> >>>>> >>>>> [step 1] move SoC-specific headers to arch/<arch>/mach-<soc>/include/mach >>>>> >>>>> [step 2] change #include <asm/arch/foo.h> to #include <mach/foo.h> >>>>> >>>>> [step 3] Drop CONFIG_CREATE_ARCH_SYMLINK >>>>> >>>>> >>>>> For example, mach-uniphier finished [1] and [2], >>>>> so it does not require the symbolic link. >>>>> (several ARM SoCs finished [1]) >>>>> >>>>> >>>>> I think this is the way ARM should do, at least. >>>>> >>>>> The topic of debate is PowerPC. Should we introduce mach-<soc> >>>>> directories or not? >>>>> >>>> >>>> OK: Option 4: >>>> >>>> How about this guys? include/board-common is an actual directory >>>> and instead of headers being located in board/$(VENDOR)/common or >>>> board/$(VENDOR)/common/include, we move the common headers to >>>> include/board/$(VENDOR)/ Directory. This will make the usage as follows: >>>> >>>> #include <$(VENDOR)/xyz.h> >>>> >>>> I know this does not exactly meet Simon's suggestion here of being >>>> identifiably board-common/xyz.h -> but at least knowing the prefix as >>>> vendor name implies a board common header. >>>> >>>> diff --git a/Makefile b/Makefile >>>> index 3c21f8ddf9e9..2bd684199512 100644 >>>> --- a/Makefile >>>> +++ b/Makefile >>>> @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) >>>> # U-Boot objects....order is important (i.e. start must be first) >>>> >>>> HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) >>>> +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) >>>> >>>> libs-y += lib/ >>>> libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ >>>> >>>> How does this sound? >>>> >>> Spin off from option 4 is option 5 -> where we dont have the Makefile >>> change. the board includes are located in >>> include/board-common/$(VENDOR)/ directory. >>> >>> >>> Usage will be: >>> >>> #include <board-common/$(VENDOR)/xyz.h> >>> >>> >>> Almost meets Simon's needs(identifiable as board common header) and I >>> think matches what Masahiro-san wants as well(no symlinks). >>> >>> >>> OK, i am out of ideas at least for now... Any other suggestions / opinions? >> >> If we don't want a symlink then option 5 seems good to me. Thanks very >> much for looking into this in so much detail, Nishanth. >> >> Thoughts - Masahiro? Tom? > > No symlink should mean Masahiro is happy, so if you're fine with #5 then > that works for me too, thanks! > I just have yet another option 6 variation -> looking at the mach strategy: UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/board/$(VENDOR)/common/include) vendors should create common headers in board/$(VENDOR)/include/board-common/xyz.h the users then can do: #include <board-common/xyz.h> How does that sound? ofcourse, similar to mach, it requires some discipline..
Hi Nishanth, On 12 November 2015 at 09:45, Nishanth Menon <nm@ti.com> wrote: > On 11/12/2015 10:22 AM, Tom Rini wrote: >> On Thu, Nov 12, 2015 at 09:16:00AM -0700, Simon Glass wrote: >>> Hi, >>> >>> On 10 November 2015 at 08:34, Nishanth Menon <nm@ti.com> wrote: >>>> On 11/10/2015 08:55 AM, Nishanth Menon wrote: >>>>> On 12:25-20151110, Masahiro Yamada wrote: >>>>>> 2015-11-10 5:24 GMT+09:00 Simon Glass <sjg@chromium.org>: >>>>>>>>> I am unhappy because I was hoping >>>>>>>>> we could stop creating symbolic links during building >>>>>>>>> in a long run. >>>>>>> >>>>>>> But how? I don't see that it is possible if we want to have a sensible >>>>>>> prefix for each include. >>>>>> >>>>>> >>>>>> [step 1] move SoC-specific headers to arch/<arch>/mach-<soc>/include/mach >>>>>> >>>>>> [step 2] change #include <asm/arch/foo.h> to #include <mach/foo.h> >>>>>> >>>>>> [step 3] Drop CONFIG_CREATE_ARCH_SYMLINK >>>>>> >>>>>> >>>>>> For example, mach-uniphier finished [1] and [2], >>>>>> so it does not require the symbolic link. >>>>>> (several ARM SoCs finished [1]) >>>>>> >>>>>> >>>>>> I think this is the way ARM should do, at least. >>>>>> >>>>>> The topic of debate is PowerPC. Should we introduce mach-<soc> >>>>>> directories or not? >>>>>> >>>>> >>>>> OK: Option 4: >>>>> >>>>> How about this guys? include/board-common is an actual directory >>>>> and instead of headers being located in board/$(VENDOR)/common or >>>>> board/$(VENDOR)/common/include, we move the common headers to >>>>> include/board/$(VENDOR)/ Directory. This will make the usage as follows: >>>>> >>>>> #include <$(VENDOR)/xyz.h> >>>>> >>>>> I know this does not exactly meet Simon's suggestion here of being >>>>> identifiably board-common/xyz.h -> but at least knowing the prefix as >>>>> vendor name implies a board common header. >>>>> >>>>> diff --git a/Makefile b/Makefile >>>>> index 3c21f8ddf9e9..2bd684199512 100644 >>>>> --- a/Makefile >>>>> +++ b/Makefile >>>>> @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) >>>>> # U-Boot objects....order is important (i.e. start must be first) >>>>> >>>>> HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) >>>>> +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) >>>>> >>>>> libs-y += lib/ >>>>> libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ >>>>> >>>>> How does this sound? >>>>> >>>> Spin off from option 4 is option 5 -> where we dont have the Makefile >>>> change. the board includes are located in >>>> include/board-common/$(VENDOR)/ directory. >>>> >>>> >>>> Usage will be: >>>> >>>> #include <board-common/$(VENDOR)/xyz.h> >>>> >>>> >>>> Almost meets Simon's needs(identifiable as board common header) and I >>>> think matches what Masahiro-san wants as well(no symlinks). >>>> >>>> >>>> OK, i am out of ideas at least for now... Any other suggestions / opinions? >>> >>> If we don't want a symlink then option 5 seems good to me. Thanks very >>> much for looking into this in so much detail, Nishanth. >>> >>> Thoughts - Masahiro? Tom? >> >> No symlink should mean Masahiro is happy, so if you're fine with #5 then >> that works for me too, thanks! >> > > I just have yet another option 6 variation -> looking at the mach > strategy: > > UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), > -I$(srctree)/board/$(VENDOR)/common/include) > > vendors should create common headers in > board/$(VENDOR)/include/board-common/xyz.h > > the users then can do: > #include <board-common/xyz.h> > > How does that sound? ofcourse, similar to mach, it requires some > discipline.. Looks good, and it's nice that the files are in board/ Regards, Simon
On Thu, Nov 12, 2015 at 09:56:26AM -0700, Simon Glass wrote: > Hi Nishanth, > > On 12 November 2015 at 09:45, Nishanth Menon <nm@ti.com> wrote: > > On 11/12/2015 10:22 AM, Tom Rini wrote: > >> On Thu, Nov 12, 2015 at 09:16:00AM -0700, Simon Glass wrote: > >>> Hi, > >>> > >>> On 10 November 2015 at 08:34, Nishanth Menon <nm@ti.com> wrote: > >>>> On 11/10/2015 08:55 AM, Nishanth Menon wrote: > >>>>> On 12:25-20151110, Masahiro Yamada wrote: > >>>>>> 2015-11-10 5:24 GMT+09:00 Simon Glass <sjg@chromium.org>: > >>>>>>>>> I am unhappy because I was hoping > >>>>>>>>> we could stop creating symbolic links during building > >>>>>>>>> in a long run. > >>>>>>> > >>>>>>> But how? I don't see that it is possible if we want to have a sensible > >>>>>>> prefix for each include. > >>>>>> > >>>>>> > >>>>>> [step 1] move SoC-specific headers to arch/<arch>/mach-<soc>/include/mach > >>>>>> > >>>>>> [step 2] change #include <asm/arch/foo.h> to #include <mach/foo.h> > >>>>>> > >>>>>> [step 3] Drop CONFIG_CREATE_ARCH_SYMLINK > >>>>>> > >>>>>> > >>>>>> For example, mach-uniphier finished [1] and [2], > >>>>>> so it does not require the symbolic link. > >>>>>> (several ARM SoCs finished [1]) > >>>>>> > >>>>>> > >>>>>> I think this is the way ARM should do, at least. > >>>>>> > >>>>>> The topic of debate is PowerPC. Should we introduce mach-<soc> > >>>>>> directories or not? > >>>>>> > >>>>> > >>>>> OK: Option 4: > >>>>> > >>>>> How about this guys? include/board-common is an actual directory > >>>>> and instead of headers being located in board/$(VENDOR)/common or > >>>>> board/$(VENDOR)/common/include, we move the common headers to > >>>>> include/board/$(VENDOR)/ Directory. This will make the usage as follows: > >>>>> > >>>>> #include <$(VENDOR)/xyz.h> > >>>>> > >>>>> I know this does not exactly meet Simon's suggestion here of being > >>>>> identifiably board-common/xyz.h -> but at least knowing the prefix as > >>>>> vendor name implies a board common header. > >>>>> > >>>>> diff --git a/Makefile b/Makefile > >>>>> index 3c21f8ddf9e9..2bd684199512 100644 > >>>>> --- a/Makefile > >>>>> +++ b/Makefile > >>>>> @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) > >>>>> # U-Boot objects....order is important (i.e. start must be first) > >>>>> > >>>>> HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) > >>>>> +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) > >>>>> > >>>>> libs-y += lib/ > >>>>> libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ > >>>>> > >>>>> How does this sound? > >>>>> > >>>> Spin off from option 4 is option 5 -> where we dont have the Makefile > >>>> change. the board includes are located in > >>>> include/board-common/$(VENDOR)/ directory. > >>>> > >>>> > >>>> Usage will be: > >>>> > >>>> #include <board-common/$(VENDOR)/xyz.h> > >>>> > >>>> > >>>> Almost meets Simon's needs(identifiable as board common header) and I > >>>> think matches what Masahiro-san wants as well(no symlinks). > >>>> > >>>> > >>>> OK, i am out of ideas at least for now... Any other suggestions / opinions? > >>> > >>> If we don't want a symlink then option 5 seems good to me. Thanks very > >>> much for looking into this in so much detail, Nishanth. > >>> > >>> Thoughts - Masahiro? Tom? > >> > >> No symlink should mean Masahiro is happy, so if you're fine with #5 then > >> that works for me too, thanks! > >> > > > > I just have yet another option 6 variation -> looking at the mach > > strategy: > > > > UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), > > -I$(srctree)/board/$(VENDOR)/common/include) > > > > vendors should create common headers in > > board/$(VENDOR)/include/board-common/xyz.h > > > > the users then can do: > > #include <board-common/xyz.h> > > > > How does that sound? ofcourse, similar to mach, it requires some > > discipline.. > > Looks good, and it's nice that the files are in board/ #6 it is, thanks again Nishanth!
diff --git a/Makefile b/Makefile index 3c21f8ddf9e9..2bd684199512 100644 --- a/Makefile +++ b/Makefile @@ -620,6 +620,7 @@ c_flags := $(KBUILD_CFLAGS) $(cpp_flags) # U-Boot objects....order is important (i.e. start must be first) HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) +UBOOTINCLUDE += $(if $(HAVE_VENDOR_COMMON_LIB:y=1), -I$(srctree)/include/board-common) libs-y += lib/ libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/