diff options
author | Chris Johns <chrisj@rtems.org> | 2023-04-03 14:05:43 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2023-04-13 12:14:33 +1000 |
commit | d633cc5b0301f81cc2748cba0d6fb32e19853c27 (patch) | |
tree | 3ea90bb38128cb809be84e5aa9ff5677e1cfd02c /netlegacy.py | |
parent | 141324c3d9df8c45cda3493bb7a6fe4015260d74 (diff) |
waf: Add test network configuration support
- Add a support call to use the configuration
Diffstat (limited to 'netlegacy.py')
-rw-r--r-- | netlegacy.py | 82 |
1 files changed, 77 insertions, 5 deletions
diff --git a/netlegacy.py b/netlegacy.py index 7897a2c..60775dc 100644 --- a/netlegacy.py +++ b/netlegacy.py @@ -35,8 +35,56 @@ import bsp_drivers import netsources +def net_config_header(bld): + if not os.path.exists(bld.env.NET_CONFIG): + bld.fatal('network configuraiton \'%s\' not found' % + (bld.env.NET_CONFIG)) + net_tags = [ + 'NET_CFG_IFACE', 'NET_CFG_BOOT_PROT', 'NET_CFG_SELF_IP', + 'NET_CFG_NETMASK', 'NET_CFG_MAC_ADDR', 'NET_CFG_GATEWAY_IP' + ] + try: + net_cfg_lines = open(bld.env.NET_CONFIG).readlines() + except: + bld.fatal('network configuraiton \'%s\' read failed' % + (bld.env.NET_CONFIG)) + lc = 0 + sed = 'sed ' + net_defaults = {} + for l in net_cfg_lines: + lc += 1 + if not l.strip().startswith('NET_CFG_'): + bld.fatal('network configuration \'%s\' ' \ + 'invalid config: %d: %s' % (bld.env.NET_CONFIG, lc, l)) + ls = l.split('=') + if len(ls) != 2: + bld.fatal('network configuration \'%s\' ' \ + 'parse error: %d: %s' % (bld.env.NET_CONFIG, lc, l)) + lhs = ls[0].strip() + rhs = ls[1].strip() + if lhs in net_tags: + net_defaults[lhs] = rhs + else: + bld.fatal('network configuration \'%s\' ' \ + 'invalid config: %d: %s' % (bld.env.NET_CONFIG, lc, l)) + for cfg in net_defaults: + sed += "-e 's/@%s@/%s/' " % (cfg, net_defaults[cfg]) + bld(target=bld.env.NETWORK_CONFIG, + source='testsuites/include/network-config.h.in', + rule=sed + ' < ${SRC} > ${TGT}', + update_outputs=True) + + def options(opt): - pass + copts = opt.option_groups['configure options'] + copts.add_option('--net-test-config', + default='config.inc', + dest='net_config', + help='Network test configuration (default: %default)') + copts.add_option('--optimization', + default='-O2', + dest='optimization', + help='Optimaization level (default: %default)') def bsp_configure(conf, arch_bsp, mandatory=True): @@ -49,15 +97,39 @@ def bsp_configure(conf, arch_bsp, mandatory=True): ] if ab in bsp_drivers.include: includes += bsp_drivers.include[ab] - conf.env.IFLAGS = [str(conf.path.find_node(i)) - for i in includes] + conf.env.IFLAGS - conf.env.OPTIMIZATION = ['-O2'] + bld_inc = conf.path.get_bld().find_or_declare('include') + conf.env.NETWORK_CONFIG = str(bld_inc.find_or_declare('network-config.h')) + conf.env.IFLAGS = [str(bld_inc) + ] + [str(conf.path.find_node(i)) + for i in includes] + conf.env.IFLAGS + conf.env.OPTIMIZATION = [conf.options.optimization] + # + # BSPs must define: + # - RTEMS_BSP_NETWORK_DRIVER_NAME + # - RTEMS_BSP_NETWORK_DRIVER_ATTACH + # + for define in [ + 'RTEMS_BSP_NETWORK_DRIVER_NAME', 'RTEMS_BSP_NETWORK_DRIVER_ATTACH' + ]: + code = ['#include <bspopts.h>'] + code += ['#include <bsp.h>'] + code += ['#ifndef %s' % (define)] + code += [' #error %s not defined' % (define)] + code += ['#endif'] + try: + conf.check_cc(fragment=rtems.test_application(code), + execute=False, + msg='Checking for %s' % (define)) + except conf.errors.WafError: + conf.fatal(ab + ' does not provide %s' % (define)) def build(bld): arch_bsp = bld.env.RTEMS_ARCH_BSP ab = rtems.arch(arch_bsp) + '/' + rtems.bsp(arch_bsp) + net_config_header(bld) + if ab in bsp_drivers.source: bld(target='bspobjs', features='c', @@ -94,7 +166,7 @@ def build(bld): bld.env.RTEMS_ARCH_BSP) bld.install_files(os.path.join(bld.env.PREFIX, arch_lib_path), - ["libnetworking.a", 'libpppd.a', 'libnfs.a']) + ['libnetworking.a', 'libpppd.a', 'libnfs.a']) for inc_dir in netsources.header: for header in netsources.header[inc_dir]: hname = os.path.basename(header) |