# # RTEMS Project (https://www.rtems.org/) # # Copyright (c) 2021 Regents of University of Colorado # Written by Vijay Kumar Banerjee . # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os from rtems_waf import rtems subdirs = [ 'ftp01', 'loopback', 'networking01', 'pppd', 'resolve', 'syscall01', 'telnetd01', 'telnetd02' ] 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', 'NET_CFG_DOMAINNAME', 'NET_CFG_DNS_IP', 'NET_CFG_NTP_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=bld.path.find_node('include/network-config.h.in'), rule=sed + ' < ${SRC} > ${TGT}', shell=True) def recurse(ctx): for sd in subdirs: ctx.recurse(sd) def init(ctx): pass def options(opt): copts = opt.option_groups['configure options'] copts.add_option('--net-test-config', default='config.inc', dest='net_config', help='Network test configuration (default: %default)') def configure(conf): recurse(conf) def build(bld): net_config_header(bld) bld.add_group() bld.recurse('support') bld.add_group() recurse(bld)