From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nishanth Menon Date: Thu, 12 Nov 2015 10:45:52 -0600 Subject: [U-Boot] [PATCH] Makefile: Include vendor common library in include search path In-Reply-To: <20151112162242.GX8060@bill-the-cat> References: <20151108021845.GI8499@bill-the-cat> <20151108163833.GY8499@bill-the-cat> <5640D9C9.4090803@ti.com> <20151110145519.GA5952@ogun.home> <56420E8A.5020701@ti.com> <20151112162242.GX8060@bill-the-cat> Message-ID: <5644C240.2010300@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 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 : >>>>>>>> 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//mach-/include/mach >>>>> >>>>> [step 2] change #include to #include >>>>> >>>>> [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- >>>>> 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 >>> >>> >>> 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 How does that sound? ofcourse, similar to mach, it requires some discipline.. -- Regards, Nishanth Menon