[U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support

Allen Martin amartin at nvidia.com
Mon Jun 11 20:03:54 CEST 2012


On Mon, Jun 11, 2012 at 02:29:59AM -0700, Thierry Reding wrote:
> * PGP Signed by an unknown key
> 
> * Stephen Warren wrote:
> > Allen Martin <amartin at nvidia.com> wrote:
> > >On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
> > >> On 06/08/2012 03:27 PM, Allen Martin wrote:
> > >> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> > >> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
> > >> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> > >> >>>> This commit uses the common Tegra board implementation instead
> > >of
> > >> >>>> duplicating a lot of the code. In addition, the Plutux and
> > >Medcom
> > >> >>>> specific board files can be removed as the MMC/SD setup is
> > >common
> > >> >>>> among all Tamonten-based boards.
> > >> >>>>
> > >> >>>> ...
> > >> >>>> diff --git a/board/avionic-design/medcom/Makefile
> > >b/board/avionic-design/medcom/Makefile
> > >> >>>> index b0c318c..d96d043 100644
> > >> >>>> --- a/board/avionic-design/medcom/Makefile
> > >> >>>> +++ b/board/avionic-design/medcom/Makefile
> > >> >>>> @@ -26,12 +26,12 @@
> > >> >>>>  include $(TOPDIR)/config.mk
> > >> >>>>
> > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > >> >>>> -$(shell mkdir -p $(obj)../common)
> > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > >> >>>>  endif
> > >> >>>>
> > >> >>>>  LIB    = $(obj)lib$(BOARD).o
> > >> >>>>
> > >> >>>
> > >> >>> This breaks with my patchset to split out the arm7 code to an SPL
> > >> >>> because even though SRCDIR and OBJDIR are the same, in the SPL
> > >build
> > >> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> > >> >>>
> > >> >>> How about the following instead which seems more to the point:
> > >> >>>
> > >> >>> ifeq ($(wildcard $(obj)../common),)
> > >> >>> $(shell mkdir -p $(obj)../common)
> > >> >>> endif
> > >> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
> > >> >>> $(shell mkdir -p $(obj)../../nvidia/common)
> > >> >>> endif
> > >> >>
> > >> >> Maybe I'm just not reading it right, but isn't that just running
> > >the
> > >> >> exact same mkdir commands, just splitting it into two commands,
> > >and
> > >> >> making them optional based on the $(wildcard)? I'm still not clear
> > >what
> > >> >> the problem is.
> > >> >>
> > >> >> Anyway, if this is an issue, then compal/paz00 and
> > >compulabl/trimslice
> > >> >> will need to be fixed for the SPL changes in the same way.
> > >> > 
> > >> > The problem is this:
> > >> > 
> > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > >> > 
> > >> > is true, but these directories:
> > >> > 
> > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > >> > 
> > >> > don't exist because $(obj) is not under $(OBJTREE) in the SPL
> > >build,
> > >> > it's under $(SPLTREE)
> > >> 
> > >> OK, so I think the issue is just that $(obj) isn't the correct place
> > >to
> > >> mkdir these, not that we shouldn't attempt to mkdir any directory. In
> > >> other words, don't you need to switch between mkdir in the object
> > >tree
> > >> or the SPL tree rather than switching between doing a mkdir and not?
> > >> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so
> > >a
> > >> regular build might not show up the problem I /think/ exists in the
> > >code
> > >> quoted a couple of emails above.
> > >
> > >$(obj) is always the place where the object files are going to be
> > >placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
> > >depending on what you're building and what you have set.
> > >
> > >I think the $(wildcard) suggestion I made is the most straightforward,
> > >it basically says "we're about to spit out an object file to here, so
> > >make sure the directory exists first".  In the "normal" case where
> > >your object files are in your source tree the directory will already
> > >exist so it won't do anything.
> > 
> > Ah right, I understand now.
> > 
> > But why not make it super-simple and just run the mkdir unconditionally;
> > it won't cause any harm for an in-tree object location, but removes the
> > need for anyone to think about the conditional logic.
> 
> Shouldn't this really be handled by the commands that create files in those
> directories? They could check that the directories exist, and create them if
> necessary, before executing their actual commands.

The normal rules make sure $(obj) exists, it's only because these
boards generate files in $(obj)../common and $(obj)../../nvidia/common
that there's a problem and we need to do something special.

I think Stephen's idea of the unconditional mkdir makes the most
sense.  We don't really buy anything by skipping it if the direcotry
already exists.

-Allen
-- 
nvpublic


More information about the U-Boot mailing list