Chris Johns commented on a discussion: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5252#note_122977


Each BSP built has its own environment that defines the settings etc used in 
the build. Waf supports deriving an environment from the base, adding the 
specific settings a BSP needs and then queuing the builds.

I think the environment is created 
[here](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/wscript?ref_type=heads#L1528)
 and it seems items in the environment can be macros of some form expanded and 
played with 
[here](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/wscript?ref_type=heads#L120)
 and other places. You can see the `env` being populated after being created:

```python
    conf.env["ARCH"] = arch
    conf.env["ARCH_BSP"] = arch_bsp
    conf.env["ARCH_FAMILY"] = arch_family
    conf.env["BSP_BASE"] = bsp_base
    conf.env["BSP_NAME"] = bsp_name
    conf.env["BSP_FAMILY"] = family
    conf.env["DEST_OS"] = "rtems"
```

As an aside `rtems_waf` uses the `waf` provided `derive()` call to get an 
environment 
[here](https://gitlab.rtems.org/rtems/tools/rtems_waf/-/blob/main/rtems.py?ref_type=heads#L208).
 The call in the `rtems.git` `wscript` may currently equate to the same thing 
but I followed the existing `waf` examples at the time.

The BSP build item context is constructed 
[here](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/wscript?ref_type=heads#L689)
 and just below is the build context for the library items. The adds the build 
item to the build queue which I believe is per BSP. If you had a print to show 
those items and the number of sources you can see the builds for `csb336` bsp:

```
[] bsp item 14
[] library item 8
[] library item 2
[] library item 1
[] library item 19
[] library item 1
[] library item 1101
[] library item 2
[] library item 1
[] library item 32
[] library item 5
[] library item 2
[] library item 15
[] library item 3
[] library item 2
[] library item 2
[] library item 2
[] library item 2
[] library item 3
[] library item 913
[] library item 4
[] library item 11
```

Only the `csb366` items are in the build queue which makes sense because it is 
specific the `env` for that BSP.

You can see `waf` move through the different environments when the banners of 
\`Waf: Entering directory..\` and `Waf: Leaving directory...` lines are printed.

I suppose to get the `-k` to move across BSPs the fatal error of the BSP build 
would need to be trapped and passed over. Sorry, I have no idea how to do that.

-- 
View it on GitLab: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5252#note_122977
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
bugs@rtems.org
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to