Changeset 4963785 in rtems-libbsd for waf_generator.py


Ignore:
Timestamp:
May 20, 2015, 11:30:28 PM (4 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.11, fd86c091b97759106da7355ce1dd81ebe030e285, freebsd-9.3, f020f08430150c1656a0ad0a1de13699db9b980b
Children:
56d787f
Parents:
aca5496
Message:

waf: Add network configuration support.

Add support to parse the config.inc default file for a network configuration
or allow the user to specify their own via a configure option.

Update to build the kvm-symbol's generated file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • waf_generator.py

    raca5496 r4963785  
    212212        self.add('#')
    213213        self.add('')
     214        self.add('import os.path')
     215        self.add('')
    214216        self.add('try:')
    215217        self.add('    import rtems_waf.rtems as rtems')
     
    234236        self.add('                   dest = "warnings",')
    235237        self.add('                   help = "Enable all warnings. The default is quiet builds.")')
     238        self.add('    opt.add_option("--net-test-config",')
     239        self.add('                   default = "config.inc",')
     240        self.add('                   dest = "net_config",')
     241        self.add('                   help = "Network test configuration.")')
    236242        self.add('')
    237243        self.add('def configure(conf):')
     
    242248        self.add('    conf.env.AUTO_REGEN = conf.options.auto_regen')
    243249        self.add('    conf.env.WARNINGS = conf.options.warnings')
     250        self.add('    conf.env.NET_CONFIG = conf.options.net_config')
    244251        self.add('    rtems.configure(conf)')
    245252        self.add('    if rtems.check_networking(conf):')
     
    279286
    280287        #
     288        # Support the existing Makefile based network configuration file.
     289        #
     290        self.add('    # Network test configuration')
     291        self.add('    if not os.path.exists(bld.env.NET_CONFIG):')
     292        self.add('        bld.fatal("network configuraiton \'%s\' not found" % (bld.env.NET_CONFIG))')
     293        self.add('    net_cfg_self_ip = None')
     294        self.add('    net_cfg_netmask = None')
     295        self.add('    net_cfg_peer_ip = None')
     296        self.add('    net_cfg_gateway_ip = None')
     297        self.add('    net_tap_interface = None')
     298        self.add('    try:')
     299        self.add('        net_cfg_lines = open(bld.env.NET_CONFIG).readlines()')
     300        self.add('    except:')
     301        self.add('        bld.fatal("network configuraiton \'%s\' read failed" % (bld.env.NET_CONFIG))')
     302        self.add('    lc = 0')
     303        self.add('    for l in net_cfg_lines:')
     304        self.add('        lc += 1')
     305        self.add('        if l.strip().startswith("NET_CFG_"):')
     306        self.add('            ls = l.split("=")')
     307        self.add('            if len(ls) != 2:')
     308        self.add('                bld.fatal("network configuraiton \'%s\' parse error: %d: %s" % ' + \
     309                 '(bld.env.NET_CONFIG, lc, l))')
     310        self.add('            lhs = ls[0].strip()')
     311        self.add('            rhs = ls[1].strip()')
     312        self.add('            if lhs == "NET_CFG_SELF_IP":')
     313        self.add('                net_cfg_self_ip = rhs')
     314        self.add('            if lhs == "NET_CFG_NETMASK":')
     315        self.add('                net_cfg_netmask = rhs')
     316        self.add('            if lhs == "NET_CFG_PEER_IP":')
     317        self.add('                net_cfg_peer_ip = rhs')
     318        self.add('            if lhs == "NET_CFG_GATEWAY_IP_IP":')
     319        self.add('                net_cfg_gateway_ip = rhs')
     320        self.add('            if lhs == "NET_TAP_INTERFACE_IP_IP":')
     321        self.add('                net_tap_interface = rhs')
     322        self.add('    bld(target = "testsuite/include/rtems/bsd/test/network-config.h",')
     323        self.add('        source = "testsuite/include/rtems/bsd/test/network-config.h.in",')
     324        self.add('        rule = "sed -e \'s/@NET_CFG_SELF_IP@/%s/\' ' + \
     325                 '-e \'s/@NET_CFG_NETMASK@/%s/\' ' + \
     326                 '-e \'s/@NET_CFG_PEER_IP@/%s/\' ' + \
     327                 '-e \'s/@NET_CFG_GATEWAY_IP@/%s/\' < ${SRC} > ${TGT}" % ' + \
     328                 '(net_cfg_self_ip, net_cfg_netmask, net_cfg_peer_ip, net_cfg_netmask))')
     329        self.add('')
     330
     331        #
    281332        # Add the specific rule based builders for generating files.
    282333        #
     
    284335            kvmsymbols = data['KVMSymbols']
    285336            self.add('    # KVM Symbols')
    286             self.add('    if bld.env.AUTO_REGEN:')
    287             self.add('        bld(target = "%s",' % (kvmsymbols['files']['all'][0]))
    288             self.add('            source = "rtemsbsd/rtems/generate_kvm_symbols",')
    289             self.add('            rule = "./${SRC} > ${TGT}")')
     337            self.add('    bld(target = "%s",' % (kvmsymbols['files']['all'][0]))
     338            self.add('        source = "rtemsbsd/rtems/generate_kvm_symbols",')
     339            self.add('        rule = "./${SRC} > ${TGT}")')
    290340            self.add('    bld.objects(target = "kvmsymbols",')
    291341            self.add('                features = "c",')
    292342            self.add('                cflags = cflags,')
    293             self.add('                includes = includes,')
     343            self.add('                includes = includes + ["rtemsbsd/rtems"],')
    294344            self.add('                source = "%s")' % (kvmsymbols['files']['all'][0]))
    295345            self.add('    libbsd_use += ["kvmsymbols"]')
Note: See TracChangeset for help on using the changeset viewer.