Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Apr 2015 13:26:15 -0700
From:      Tim Kientzle <tim@kientzle.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        Waitman Gobble <gobble.wa@gmail.com>, freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: crochet build fails at ubldr Wandboard-Dual
Message-ID:  <1CA4192E-F6B5-4BD8-8BF8-8F725E1EC7BA@kientzle.com>
In-Reply-To: <1429458041.1182.86.camel@freebsd.org>
References:  <CAFuo_fy5tPjQDbtuSwcBEt4UMuu2tv8zRLLwBrpZPUGcyEMKEA@mail.gmail.com> <CAFuo_fx6Ztb2Rn8dPmZ3HBJniChvkZX54qmF_oaA87LJeHCFFQ@mail.gmail.com> <1429456908.1182.82.camel@freebsd.org> <CAFuo_fzHtCF6F%2B%2BUGqSdhzvbkTjxRtoT8sXFKV%2BCr4UpsGmymQ@mail.gmail.com> <1429458041.1182.86.camel@freebsd.org>

index | next in thread | previous in thread | raw e-mail


>>> 
>>> Somebody reported this on IRC yesterday as well, but I can't reproduce
>>> it here.  I don't use crochet, so it must be doing something a bit
>>> different to end up with the lib from /usr instead of the local one in
>>> objdir.  There should be no need to set LIBSTAND externally.
>>> 
>> 
>> Thanks for the reply. Unfortunately I missed the discussion on IRC.
>> 
>> I suppose I'll have to backtrack through and find out where it
>> _should_ be set to solve the problem. (?) For now, the workaround gets
>> the build to finish.
>> 
> 
> It shouldn't be set anywhere, it should just work.  That's kind of my
> point... my build process is just the standard "make buildworld
> TARGET_ARCH=armv6hf UBDLR_ADDR=<whatever>" and it just works.  I don't
> know what crochet is doing differently (and you only included a fragment
> of the build log that didn't include the command used to start the
> build).
> 


Crochet does use the standard build machinery; the only significant difference is that it builds ubldr separately after a successful buildworld.  Building ubldr separately allows it to reuse the buildworld results when building for multiple boards with the same TARGET_ARCH but varying UBLDR_LOADADDR.

The detailed logic is in lib/freebsd.sh, I’ve pasted it below (with a few variables substituted in and some error checking removed to clarify):

    cd ${FREEBSD_SRC}
    ubldr_makefiles=${FREEBSD_SRC}/share/mk
    buildenv=`make TARGET_ARCH=$TARGET_ARCH buildenvvars`

    cd ${FREEBSD_SRC}/sys/boot
    eval $buildenv make UBLDR_LOADADDR=0x11000000 -m $ubldr_makefiles obj
    eval $buildenv make UBLDR_LOADADDR=0x11000000 -m $ubldr_makefiles clean
    eval $buildenv make UBLDR_LOADADDR=0x11000000 -m $ubldr_makefiles depend
    eval $buildenv make UBLDR_LOADADDR=0x11000000 -m $ubldr_makefiles all

    cd arm/uboot
    eval $buildenv make UBLDR_LOADADDR=0x11000000 DESTDIR=${UBLDR_DIR}/ BINDIR=boot NO_MAN=true -m $ubldr_makefiles install

The last bit here is just a way to get the FreeBSD makefiles to copy the built executable to a known location (otherwise, Crochet has to reproduce the FreeBSD build system logic for determining which objdir layout to use).

Cheers,

Tim



home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1CA4192E-F6B5-4BD8-8BF8-8F725E1EC7BA>