Patchwork [U-Boot] arm: tegra2: fix out-of-tree build

login
register
mail settings
Submitter Che-liang Chiou
Date Aug. 23, 2011, 10:03 a.m.
Message ID <1314093792-18013-1-git-send-email-clchiou@chromium.org>
Download mbox | patch
Permalink /patch/111072/
State Accepted
Commit 10980d4a54271c0bb98ae209bb1840c5259ba566
Headers show

Comments

Che-liang Chiou - Aug. 23, 2011, 10:03 a.m.
The out-of-tree build fails because the Makefiles in question depend on
source files of another directory but do not explicitly mkdir that
directory.

As a matter of fact, other Makefiles under board/*/ directory that refer
to source files under another directory explicitly call mkdir.

This patch adds explicit mkdir's to the Makefiles in question, and
verifies that out-of-tree build is working.

Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
---
 board/nvidia/harmony/Makefile  |    4 ++++
 board/nvidia/seaboard/Makefile |    4 ++++
 2 files changed, 8 insertions(+), 0 deletions(-)
Anton Staaf - Aug. 23, 2011, 5:01 p.m.
On Tue, Aug 23, 2011 at 3:03 AM, Che-Liang Chiou <clchiou@chromium.org> wrote:
> The out-of-tree build fails because the Makefiles in question depend on
> source files of another directory but do not explicitly mkdir that
> directory.
>
> As a matter of fact, other Makefiles under board/*/ directory that refer
> to source files under another directory explicitly call mkdir.
>
> This patch adds explicit mkdir's to the Makefiles in question, and
> verifies that out-of-tree build is working.
>
> Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
> Cc: Albert Aribaud <albert.u.boot@aribaud.net>
> ---
>  board/nvidia/harmony/Makefile  |    4 ++++
>  board/nvidia/seaboard/Makefile |    4 ++++
>  2 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/board/nvidia/harmony/Makefile b/board/nvidia/harmony/Makefile
> index 9fb6b57..ebd8e02 100644
> --- a/board/nvidia/harmony/Makefile
> +++ b/board/nvidia/harmony/Makefile
> @@ -24,6 +24,10 @@
>
>  include $(TOPDIR)/config.mk
>
> +ifneq ($(OBJTREE),$(SRCTREE))
> +$(shell mkdir -p $(obj)../common)
> +endif
> +

We should actually fix this by making the other directory build a
library and then include the library in this Makefile.  I had a
reminder to get back to this but haven't yet.

Thanks,
    Anton

>  LIB    = $(obj)lib$(BOARD).o
>
>  COBJS  := $(BOARD).o
> diff --git a/board/nvidia/seaboard/Makefile b/board/nvidia/seaboard/Makefile
> index 9fb6b57..ebd8e02 100644
> --- a/board/nvidia/seaboard/Makefile
> +++ b/board/nvidia/seaboard/Makefile
> @@ -24,6 +24,10 @@
>
>  include $(TOPDIR)/config.mk
>
> +ifneq ($(OBJTREE),$(SRCTREE))
> +$(shell mkdir -p $(obj)../common)
> +endif
> +
>  LIB    = $(obj)lib$(BOARD).o
>
>  COBJS  := $(BOARD).o
> --
> 1.7.3.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Che-liang Chiou - Aug. 24, 2011, 3:03 a.m.
Hi Anton,

Thanks for comments. Replied below.

Regards,
Che-Liang

On Wed, Aug 24, 2011 at 1:01 AM, Anton Staaf <robotboy@google.com> wrote:
> On Tue, Aug 23, 2011 at 3:03 AM, Che-Liang Chiou <clchiou@chromium.org> wrote:
>> The out-of-tree build fails because the Makefiles in question depend on
>> source files of another directory but do not explicitly mkdir that
>> directory.
>>
>> As a matter of fact, other Makefiles under board/*/ directory that refer
>> to source files under another directory explicitly call mkdir.
>>
>> This patch adds explicit mkdir's to the Makefiles in question, and
>> verifies that out-of-tree build is working.
>>
>> Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
>> Cc: Albert Aribaud <albert.u.boot@aribaud.net>
>> ---
>>  board/nvidia/harmony/Makefile  |    4 ++++
>>  board/nvidia/seaboard/Makefile |    4 ++++
>>  2 files changed, 8 insertions(+), 0 deletions(-)
>>
>> diff --git a/board/nvidia/harmony/Makefile b/board/nvidia/harmony/Makefile
>> index 9fb6b57..ebd8e02 100644
>> --- a/board/nvidia/harmony/Makefile
>> +++ b/board/nvidia/harmony/Makefile
>> @@ -24,6 +24,10 @@
>>
>>  include $(TOPDIR)/config.mk
>>
>> +ifneq ($(OBJTREE),$(SRCTREE))
>> +$(shell mkdir -p $(obj)../common)
>> +endif
>> +
>
> We should actually fix this by making the other directory build a
> library and then include the library in this Makefile.  I had a
> reminder to get back to this but haven't yet.
>
> Thanks,
>    Anton
>

I find that Makefiles that call mkdir are those depend on a
board/*/common/ directory which is shared among board variants (with a
couple of exceptions). I guess the reason why none of boards
implemented your proposal is because it involves changes to the
top-level Makefile. The top-level Makefile cherry-picks the libraries,
and the (only?) board-dependent library is "LIBBOARD =
board/$(BOARDDIR)/lib$(BOARD).o". And I guess implementing your
proposal means we have to add a LIBBOARD_COMMON to the top-level
Makefile. I am not sure whether adding a board-common library to the
top-level Makefile is possible. If it is possible, maybe we could
start from this patch. What do you think?

>>  LIB    = $(obj)lib$(BOARD).o
>>
>>  COBJS  := $(BOARD).o
>> diff --git a/board/nvidia/seaboard/Makefile b/board/nvidia/seaboard/Makefile
>> index 9fb6b57..ebd8e02 100644
>> --- a/board/nvidia/seaboard/Makefile
>> +++ b/board/nvidia/seaboard/Makefile
>> @@ -24,6 +24,10 @@
>>
>>  include $(TOPDIR)/config.mk
>>
>> +ifneq ($(OBJTREE),$(SRCTREE))
>> +$(shell mkdir -p $(obj)../common)
>> +endif
>> +
>>  LIB    = $(obj)lib$(BOARD).o
>>
>>  COBJS  := $(BOARD).o
>> --
>> 1.7.3.1
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot@lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>>
>
Anton Staaf - Aug. 24, 2011, 5:35 p.m.
On Tue, Aug 23, 2011 at 8:03 PM, Che-liang Chiou <clchiou@chromium.org> wrote:
> Hi Anton,
>
> Thanks for comments. Replied below.
>
> Regards,
> Che-Liang
>
> On Wed, Aug 24, 2011 at 1:01 AM, Anton Staaf <robotboy@google.com> wrote:
>> On Tue, Aug 23, 2011 at 3:03 AM, Che-Liang Chiou <clchiou@chromium.org> wrote:
>>> The out-of-tree build fails because the Makefiles in question depend on
>>> source files of another directory but do not explicitly mkdir that
>>> directory.
>>>
>>> As a matter of fact, other Makefiles under board/*/ directory that refer
>>> to source files under another directory explicitly call mkdir.
>>>
>>> This patch adds explicit mkdir's to the Makefiles in question, and
>>> verifies that out-of-tree build is working.
>>>
>>> Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
>>> Cc: Albert Aribaud <albert.u.boot@aribaud.net>
>>> ---
>>>  board/nvidia/harmony/Makefile  |    4 ++++
>>>  board/nvidia/seaboard/Makefile |    4 ++++
>>>  2 files changed, 8 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/board/nvidia/harmony/Makefile b/board/nvidia/harmony/Makefile
>>> index 9fb6b57..ebd8e02 100644
>>> --- a/board/nvidia/harmony/Makefile
>>> +++ b/board/nvidia/harmony/Makefile
>>> @@ -24,6 +24,10 @@
>>>
>>>  include $(TOPDIR)/config.mk
>>>
>>> +ifneq ($(OBJTREE),$(SRCTREE))
>>> +$(shell mkdir -p $(obj)../common)
>>> +endif
>>> +
>>
>> We should actually fix this by making the other directory build a
>> library and then include the library in this Makefile.  I had a
>> reminder to get back to this but haven't yet.
>>
>> Thanks,
>>    Anton
>>
>
> I find that Makefiles that call mkdir are those depend on a
> board/*/common/ directory which is shared among board variants (with a
> couple of exceptions). I guess the reason why none of boards
> implemented your proposal is because it involves changes to the
> top-level Makefile. The top-level Makefile cherry-picks the libraries,
> and the (only?) board-dependent library is "LIBBOARD =
> board/$(BOARDDIR)/lib$(BOARD).o". And I guess implementing your
> proposal means we have to add a LIBBOARD_COMMON to the top-level
> Makefile. I am not sure whether adding a board-common library to the
> top-level Makefile is possible. If it is possible, maybe we could
> start from this patch. What do you think?

I'm not sure what the accepted path is to add new libraries.  Albert
had indicated in a previous thread for this patch that it should be
done using the library approach.  I haven't had time to look into the
actual implementation of that approach however.

-Anton

>>>  LIB    = $(obj)lib$(BOARD).o
>>>
>>>  COBJS  := $(BOARD).o
>>> diff --git a/board/nvidia/seaboard/Makefile b/board/nvidia/seaboard/Makefile
>>> index 9fb6b57..ebd8e02 100644
>>> --- a/board/nvidia/seaboard/Makefile
>>> +++ b/board/nvidia/seaboard/Makefile
>>> @@ -24,6 +24,10 @@
>>>
>>>  include $(TOPDIR)/config.mk
>>>
>>> +ifneq ($(OBJTREE),$(SRCTREE))
>>> +$(shell mkdir -p $(obj)../common)
>>> +endif
>>> +
>>>  LIB    = $(obj)lib$(BOARD).o
>>>
>>>  COBJS  := $(BOARD).o
>>> --
>>> 1.7.3.1
>>>
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot@lists.denx.de
>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>
>>
>

Patch

diff --git a/board/nvidia/harmony/Makefile b/board/nvidia/harmony/Makefile
index 9fb6b57..ebd8e02 100644
--- a/board/nvidia/harmony/Makefile
+++ b/board/nvidia/harmony/Makefile
@@ -24,6 +24,10 @@ 
 
 include $(TOPDIR)/config.mk
 
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif
+
 LIB	= $(obj)lib$(BOARD).o
 
 COBJS	:= $(BOARD).o
diff --git a/board/nvidia/seaboard/Makefile b/board/nvidia/seaboard/Makefile
index 9fb6b57..ebd8e02 100644
--- a/board/nvidia/seaboard/Makefile
+++ b/board/nvidia/seaboard/Makefile
@@ -24,6 +24,10 @@ 
 
 include $(TOPDIR)/config.mk
 
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif
+
 LIB	= $(obj)lib$(BOARD).o
 
 COBJS	:= $(BOARD).o