[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Automatic Re-Building of BSP



Am Mit, 2003-02-05 um 23.21 schrieb gregory.menke at gsfc.nasa.gov:
> Don writes:
> 
>  > > 
>  > > > Trying to move on to bigger and better things, I found the bsp.h 
>  > needed
>  > > > tailoring.  Some PPC2A registers are not explicitly defined in the
>  > > > ppcn_60x BSP.  After making the changes and trying to make my "hello
>  > > > world pluss flash LEDs", I got compile errors indicative of the 
>  > bsp.h
>  > > > changes not being included.
>  > > 
>  > > Are you modifying the hello world in c/src/tests/samples or the
>  > > standalone example application version?  
>  > >  
>  > > Either way you can do a make clean in that particular directory.
>  > > I know this is what I do so unless Ralf enlightens us both, that
>  > > is all I know to offer.
>  > 
>  > Tried 'make clean', 'make all', and 'make' in the stand-alone directory 
>  > with no luck.
>  > 
> 
> When modifying a bsp, the dependencies sometimes don't make it all the
> way up to a top-level make. 
It depends on what you are referring to. --maintainer-mode only takes
care about dependencies between auto*-generated files, ie. Makefiles
etc.

Source-file dependencies normally are considered unless those which are
explicitly written into the Makefiles.

> One thing I do in this case is a 'make
> clean' at a conveniently low level in the bsp, 
> 
> (perhaps c/src/lib/libbsp/<whatever processor>/<whatever bsp>)
> 
> so a minimal set of files is deleted, then a top-level make is run.
> The now-larger set of deleted files will trip dependencies and cause
> the bsp to be rebuilt, but not rebuild all of rtems.  Its a little
> clumsy because of the make in 2 different locations, but you can
> always be clever and do things like;
> 
> make clean; pushd /opt/rtems/build/my-bsp; make install; popd
> 
> from the <whatever bsp> directory above.  That will delete the
> compiled bsp, jump to the top level and make install which will
> rebuild the bsp, relink whatever is necessary and install the
> libraries.  You'll still go thru the library assembly phase, but it
> avoids building the score/posix/networking trees.

It might surprize you: Since introduction of the cpukit there is not any
dependency [1] between cpukit/ (which comprizes score/posix and large
parts of networking) and a BSP.

>  > > > The way I understood things, enabling maintainer mode (--enable-
>  > > > maintainer-mode) caused any required files to be updated when a 
>  > make of
>  > > > the user code is performed.  Obviously, I am off base on this 
>  > notion!
See above.

>  > > > 
>  > > > In tweaking the BSP, do I need to rebuild it using the "verbose"
>  > > > approach shown above?  Did I miss something with --enable-
>  > maintainer-
>  > > > mode?  Is there a better way?
>  > > 
>  > > Ralf can probably explain it for sure.  But I am only positive that
>  > > --enable-maintainer-mode verifies configure* and Makefile* 
>  > dependencies
>  > > (those based upon auto* tools).
Exactly, but ... there also is my "very friend" "make depend", a make
target which is supposed to generate source-file dependencies.

Unfortunately "make depend" sometimes fails badly, but at least it's
better than nothing [2].

>  > So, for the time being a 'full' BSP build is probably the best 
>  > approach?
If using per-bsp-builts, currently yes.

However, there is the multilib approach:

./configure --target=<your-target> --enable-multilib
--enable-maintainer-mode --enable-rtemsbsp=<your-bsps>
make
[This will build a multilib'ed cpukit (librtemscpu.a) and the selected
bsps (Depending on your target and host, this can take several hours!)]

cd <cpu>/c/<bsp>
make depend

>From now on it should be sufficient to work from inside of this
directory, because the multilib'ed parts of RTEMS (cpukit) are supposed
to not depend on files inside of a BSP.


Ralf

[1] One exception: the setting originating from make/custom/<bsp.cfg>

[2] I had wanted to replace "make depend" by automake-dependency
tracking, but somebody at OAR had decided to reject this proposal, due
to other implications/side-effects this step would imply. :-(