On Tue, Aug 23, 2011 at 8:03 PM, Che-liang Chiou <clch...@chromium.org> wrote: > Hi Anton, > > Thanks for comments. Replied below. > > Regards, > Che-Liang > > On Wed, Aug 24, 2011 at 1:01 AM, Anton Staaf <robot...@google.com> wrote: >> On Tue, Aug 23, 2011 at 3:03 AM, Che-Liang Chiou <clch...@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 <clch...@chromium.org> >>> Cc: Albert Aribaud <albert.u.b...@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 >>> >> > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot