From mboxrd@z Thu Jan 1 00:00:00 1970 From: Allen Martin Date: Mon, 11 Jun 2012 11:03:54 -0700 Subject: [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support In-Reply-To: <20120611092959.GD31441@avionic-0098.adnet.avionic-design.de> References: <1337953588-20696-1-git-send-email-thierry.reding@avionic-design.de> <20120608200139.GN13311@nvidia.com> <4FD2698D.7030505@wwwdotorg.org> <20120608212740.GP13311@nvidia.com> <4FD2DF19.4010405@wwwdotorg.org> <20120609062534.GA28640@nvidia.com> <4f1d9f4d-d07b-467e-8af8-2c964b4d9bde@email.android.com> <20120611092959.GD31441@avionic-0098.adnet.avionic-design.de> Message-ID: <20120611180354.GB6633@nvidia.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 Mon, Jun 11, 2012 at 02:29:59AM -0700, Thierry Reding wrote: > * PGP Signed by an unknown key > > * Stephen Warren wrote: > > Allen Martin 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