BSP variants

Claus, Ric claus at slac.stanford.edu
Fri Apr 19 18:11:38 UTC 2013


Perfect!  Thank you, Gedare!  Exactly what I needed.  Funny, because I chose the name $(RTEMS_BSP) as a reasonable descriptor when I wrote the post, without any idea that it actually existed and did the right thing.  I wonder whether $(RTEMS_ROOT) also exists.  Using $(RTEMS_TOP) gets me into trouble with bootstrap.

I agree with you that it would be better to pass the path in on the configure line, but I was likewise stopped on the how to do it part.

  Thanks again,
                        Ric


________________________________________
From: gedare at gwmail.gwu.edu [gedare at gwmail.gwu.edu] On Behalf Of Gedare Bloom [gedare at rtems.org]
Sent: Friday, April 19, 2013 10:44 AM
To: Claus, Ric
Cc: Joel Sherrill; rtems-devel at rtems.org
Subject: Re: BSP variants

On Fri, Apr 19, 2013 at 1:32 PM, Claus, Ric <claus at slac.stanford.edu> wrote:
> Thanks, Joel.  That helped clarify some things.  The problem turned out to be that the case statement in <cpu>/acinclude.m4: entries of the form 'lpc32xx )' match anything that _starts_ with 'lpc32xx'.  Thus 'zynq )' matches neither 'zc702' nor 'zedboard', which is why I was getting 'Invalid BSP', the catch-all case.  Not at all obvious if you don't know this syntax.  So, is there a BSP naming convention I'm not aware of?  Maybe I should be calling these things 'zynq_zc702' and 'zynq_zedbaord' so that 'zynq )' finds them and descends into the zynq/ BSP directory?  Kind of ugly.
>
I don't know.

> Another question: based on which board RTEMS is being built for ('zc702' or 'zedboard'), I need to do something different in zynq/Makefile.am.  I can't quickly figure out how to do that.  Variables set in <bsp>/make/custom/*.cfg don't seem to be available in Makefile.am nor configure.ac.  The RTEMS_BSPOPTS_SET macro is able to compare its second argument with the BSP value currently being worked on by the build system, but I can't find the source for that macro.  I'd like to do something like:
>
> AC_SUBST([BSP_3RD_PATH],[$(RTEMS_ROOT)/$(RTEMS_BSP)])
>
> where $(RTEMS_BSP) is the name of the BSP currently being worked on, $(RTEMS_ROOT) is the root directory from which to locate the third party software, and @BSP_3RD_PATH@ is used by Makefile.am to address which files go into the BSP,  for example.  As stated in a previous post, the user would have to edit this line in configure.ac to specify where s/he has placed the third party software before attempting to build RTEMS with one of these BSPs.  Is this a reasonable approach?  Maybe all this is documented somewhere I just haven't come across yet.  If so, please point me to it.
>

You can create your own conditional check with AM_CONDITIONAL in
configure.ac to use in Makefile.am. See
libbsp/powerpc/motorola_powerpc/configure.ac how it creates a
conditional called QEMU depending on the value of RTEMS_BSP and then
in Makefile.am how it checks if QEMU ... endif.

I think it would be better to somehow specify the path to the third
party software as a parameter to either configure or make, but I'm not
so sure how to do that. Probably it would be good for us to figure out
a usable solution, since this seems a recurring issue c.f. the stm32f
post.

-Gedare

> Thanks,
>             Ric
>
> ________________________________________
> From: Joel Sherrill [Joel.Sherrill at OARcorp.com]
> Sent: Thursday, April 18, 2013 6:30 PM
> To: Claus, Ric
> Cc: rtems-devel at rtems.org
> Subject: Re: BSP variants
>
> BSP variants are recognised by *.cfg in make/custom.
>
> configure. ac uses some macros to define conditional variables differently based on the variant. Look BSP SETOPTS or similar in the arm lpc BSPs or PowerPC gen5200 for examples.
>
> --joel
>
> "Claus, Ric" <claus at slac.stanford.edu> wrote:
>
>
> I'm not understanding how to build multiple BSP variants from a single libbsp/<cpu>/<bsp> directory.  The ARM lpc32xx does this, for example.  Configuring to for a BSP named lpc32xx_mzx ends with the message:
>
> target architecture: arm.
> available BSPs: lpc32xx_mzx.
>
> even though there is no libbsp/*/lpc32xx_mzx directory and it isn't mentioned in libbsp/<cpu>/acinclude.m4.  Doing 'make all' then goes and builds everything, as expected.  Where is the lpc32xx_mzx target defined?  Is it in the make/custom directory?
>
> When I follow this same pattern with the names zc702 and zedboard for the zynq BSP directory, the configure works, but the 'make all' fails with 'Invalid BSP'.
>
>         Thanks,
>                         Ric
>
>
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel




More information about the devel mailing list