Changeset e9aa9537 in rtems-libbsd for waf_generator.py


Ignore:
Timestamp:
May 20, 2015, 11:59:15 AM (4 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.11, c1e05b9ea378b2971e3d7704779112b4bc4296da, freebsd-9.3, 4a77611a223ea883fb548679b516d326a020d447
Children:
8b10210
Parents:
32bbd33
git-author:
Chris Johns <chrisj@…> (05/20/15 11:59:15)
git-committer:
Chris Johns <chrisj@…> (05/20/15 12:00:11)
Message:

waf: Add warnings and auto-regen options.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • waf_generator.py

    r32bbd33 re9aa9537  
    205205
    206206        self.add('#')
    207         self.add('# Generated waf script.')
     207        self.add('# RTEMS Project (https://www.rtems.org)')
     208        self.add('#')
     209        self.add('# Generated waf script. Do not edit, run ./freebsd-to-rtems.py -m')
     210        self.add('#')
     211        self.add('# To use see README.waf shipped with this file.')
    208212        self.add('#')
    209213        self.add('')
     
    220224        self.add('def options(opt):')
    221225        self.add('    rtems.options(opt)')
     226        self.add('    opt.add_option("--enable-auto-regen",')
     227        self.add('                   action = "store_true",')
     228        self.add('                   default = False,')
     229        self.add('                   dest = "auto_regen",')
     230        self.add('                   help = "Enable auto-regeneration of LEX, RPC and YACC files.")')
     231        self.add('    opt.add_option("--enable-warnings",')
     232        self.add('                   action = "store_true",')
     233        self.add('                   default = False,')
     234        self.add('                   dest = "warnings",')
     235        self.add('                   help = "Enable all warnings. The default is quiet builds.")')
    222236        self.add('')
    223237        self.add('def configure(conf):')
    224         self.add('    conf.find_program("lex", mandatory = True)')
    225         self.add('    conf.find_program("rpcgen", mandatory = True)')
    226         self.add('    conf.find_program("yacc", mandatory = True)')
     238        self.add('    if conf.options.auto_regen:')
     239        self.add('        conf.find_program("lex", mandatory = True)')
     240        self.add('        conf.find_program("rpcgen", mandatory = True)')
     241        self.add('        conf.find_program("yacc", mandatory = True)')
     242        self.add('    conf.env.AUTO_REGEN = conf.options.auto_regen')
     243        self.add('    conf.env.WARNINGS = conf.options.warnings')
    227244        self.add('    rtems.configure(conf)')
    228245        self.add('    if rtems.check_networking(conf):')
     
    236253        for f in builder.common_flags():
    237254            self.add('    common_flags += ["%s"]' % (f))
     255        self.add('    if bld.env.WARNINGS:')
     256        for f in builder.common_warnings():
     257            self.add('        common_flags += ["%s"]' % (f))
     258        self.add('    else:')
    238259        for f in builder.common_no_warnings():
    239             self.add('    common_flags += ["%s"]' % (f))
     260            self.add('        common_flags += ["%s"]' % (f))
    240261        self.add('    cflags = %r + common_flags' % (builder.cflags()))
    241262        self.add('    cxxflags = %r + common_flags' % (builder.cxxflags()))
     
    263284            kvmsymbols = data['KVMSymbols']
    264285            self.add('    # KVM Symbols')
    265             self.add('    bld(target = "%s",' % (kvmsymbols['files']['all'][0]))
    266             self.add('        source = "rtemsbsd/rtems/generate_kvm_symbols",')
    267             self.add('        rule = "./${SRC} > ${TGT}")')
     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}")')
    268290            self.add('    bld.objects(target = "kvmsymbols",')
    269291            self.add('                features = "c",')
     
    278300            rpcname = rpcgen['files']['all'][0][:-2]
    279301            self.add('    # RPC Generation')
    280             self.add('    bld(target = "%s.h",' % (rpcname))
    281             self.add('        source = "%s.x",' % (rpcname))
    282             self.add('        rule = "${RPCGEN} -h -o ${TGT} ${SRC}")')
     302            self.add('    if bld.env.AUTO_REGEN:')
     303            self.add('        bld(target = "%s.h",' % (rpcname))
     304            self.add('            source = "%s.x",' % (rpcname))
     305            self.add('            rule = "${RPCGEN} -h -o ${TGT} ${SRC}")')
    283306            self.add('')
    284307
     
    287310            rkwname = routekw['files']['all'][0]
    288311            self.add('    # Route keywords')
    289             self.add('    rkw_rule = "cat ${SRC} | ' + \
     312            self.add('    if bld.env.AUTO_REGEN:')
     313            self.add('        rkw_rule = "cat ${SRC} | ' + \
    290314                     'awk \'BEGIN { r = 0 } { if (NF == 1) ' + \
    291315                     'printf \\"#define\\\\tK_%%s\\\\t%%d\\\\n\\\\t{\\\\\\"%%s\\\\\\", K_%%s},\\\\n\\", ' + \
    292316                     'toupper($1), ++r, $1, toupper($1)}\' > ${TGT}"')
    293             self.add('    bld(target = "%s.h",' % (rkwname))
    294             self.add('        source = "%s",' % (rkwname))
    295             self.add('        rule = rkw_rule)')
     317            self.add('        bld(target = "%s.h",' % (rkwname))
     318            self.add('            source = "%s",' % (rkwname))
     319            self.add('            rule = rkw_rule)')
    296320            self.add('')
    297321
     
    301325            for l in lexes:
    302326                lex = lexes[l]['all']
    303                 self.add('    bld(target = "%s.c",' % (lex['file'][:-2]))
    304                 self.add('        source = "%s",' % (lex['file']))
    305                 self.add('        rule = "${LEX} -P %s -t ${SRC} | ' % (lex['sym']) + \
     327                self.add('    if bld.env.AUTO_REGEN:')
     328                self.add('        bld(target = "%s.c",' % (lex['file'][:-2]))
     329                self.add('            source = "%s",' % (lex['file']))
     330                self.add('            rule = "${LEX} -P %s -t ${SRC} | ' % (lex['sym']) + \
    306331                         'sed -e \'/YY_BUF_SIZE/s/16384/1024/\' > ${TGT}")')
    307332                self.add('    bld.objects(target = "lex_%s",' % (lex['sym']))
     
    321346                yacc_sym = yacc['sym']
    322347                yacc_header = '%s/%s' % (os.path.dirname(yacc_file), yacc['header'])
    323                 self.add('    bld(target = "%s.c",' % (yacc_file[:-2]))
    324                 self.add('        source = "%s",' % (yacc_file))
    325                 self.add('        rule = "${YACC} -b %s -d -p %s ${SRC} && ' % (yacc_sym, yacc_sym) + \
     348                self.add('    if bld.env.AUTO_REGEN:')
     349                self.add('        bld(target = "%s.c",' % (yacc_file[:-2]))
     350                self.add('            source = "%s",' % (yacc_file))
     351                self.add('            rule = "${YACC} -b %s -d -p %s ${SRC} && ' % (yacc_sym, yacc_sym) + \
    326352                         'sed -e \'/YY_BUF_SIZE/s/16384/1024/\' < %s.tab.c > ${TGT} && ' % (yacc_sym) + \
    327353                         'rm -f %s.tab.c && mv %s.tab.h %s")' % (yacc_sym, yacc_sym, yacc_header))
Note: See TracChangeset for help on using the changeset viewer.