This is great! This makes it more adaptable with different BSPS. Also, thanks for the documentation. :)
On Fri, Nov 11, 2022 at 3:03 PM Kinsey Moore <kinsey.mo...@oarcorp.com> wrote: > > This adds a basic configuration mechanism in config.ini to control which > BSPs are enabled and to alter lwIP's define/macro-based configuration > directives. Existing builds using --rtems-bsps are unaffected if > config.ini is not used. > --- > README | 14 ++++++++++++++ > wscript | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 73 insertions(+), 1 deletion(-) > > diff --git a/README b/README > index 99800bf..a8cbc21 100644 > --- a/README > +++ b/README > @@ -30,3 +30,17 @@ git submodule update > > More `waf` arguments can be found by using: > `./waf --help` > + > +Further Build Information > +------------------------- > + > +The BSPs configured to build may be specified on the waf configure command > line > +with --rtems-bsps or they may be configured in config.ini as in RTEMS. The > +command line option will override the BSPs configured in config.ini, but > options > +in config.ini will still be applied for enabled BSPs. Any additional > +configuration options desired in lwipopts.h may be specified in config.ini > under > +the appropriate section as key/value pairs like so: > + > +[aarch64/xilinx_zynqmp_lp64_zu3eg] > +LWIP_IGMP=1 > +ZYNQMP_USE_SGMII=1 > diff --git a/wscript b/wscript > index 1546a3d..f1b919e 100644 > --- a/wscript > +++ b/wscript > @@ -1,3 +1,5 @@ > +#!/usr/bin/env python > + > # > # RTEMS Project (https://www.rtems.org/) > # > @@ -28,7 +30,13 @@ > from __future__ import print_function > from rtems_waf import rtems > > +try: > + import configparser > +except: > + import ConfigParser as configparser > + > import lwip > +import os > import sys > top = '.' > > @@ -48,8 +56,58 @@ def options(opt): > rtems.options(opt) > > > +def no_unicode(value): > + if sys.version_info[0] > 2: > + return value > + if isinstance(value, unicode): > + return str(value) > + return value > + > + > +def get_config(): > + cp = configparser.ConfigParser() > + filename = "config.ini" > + if filename not in cp.read([filename]): > + return None > + return cp > + > + > +def get_configured_bsps(cp): > + if not cp: > + return "all" > + bsps = [] > + for raw_bsp in cp.sections(): > + bsps.append(no_unicode(raw_bsp)) > + return ",".join(bsps) > + > + > +def get_configured_bsp_options(cp, arch, bsp): > + if not cp: > + return {} > + options = {} > + for config_option in cp.items(os.path.join(arch, bsp)): > + opt_name = config_option[0].upper() > + options[opt_name] = config_option[1] > + return options > + > + > +def bsp_configure(conf, arch_bsp): > + cp = get_config() > + arch = rtems.arch(arch_bsp) > + bsp = rtems.bsp(arch_bsp) > + config_options = get_configured_bsp_options(cp, arch, bsp) > + for key, val in config_options.items(): > + flag = "-D"+key+"="+val > + conf.env.CFLAGS.append(flag) > + conf.env.CXXFLAGS.append(flag) > + lwip.bsp_configure(conf, arch_bsp) > + > + > def configure(conf): > - rtems.configure(conf, lwip.bsp_configure) > + cp = get_config() > + if conf.options.rtems_bsps == "all": > + conf.options.rtems_bsps = get_configured_bsps(cp) > + rtems.configure(conf, bsp_configure) > > > def build(bld): > -- > 2.30.2 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel