[U-Boot] [PATCH] Makefile: Include vendor common library in include search path

Simon Glass
2015-11-12T16:16:00Z

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