Changeset f7a4107 in rtems-libbsd
- Timestamp:
- 11/28/16 03:23:15 (7 years ago)
- Branches:
- 5, 5-freebsd-12, 6-freebsd-12, freebsd-9.3, master
- Children:
- afda2c7
- Parents:
- 269b559
- git-author:
- Chris Johns <chrisj@…> (11/28/16 03:23:15)
- git-committer:
- Chris Johns <chrisj@…> (11/29/16 04:27:23)
- Files:
-
- 3 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
libbsd.py
r269b559 rf7a4107 163 163 ], 164 164 mm.generator['source']() 165 ) 166 mod.addRTEMSSourceFiles( 167 [ 168 'debugger/rtems-debugger-remote-tcp.c', 169 ], 170 mm.generator['source-if-header']('rtems/rtems-debugger.h') 165 171 ) 166 172 mod.addFile(mm.generator['file']('rtems/rtems-kernel-kvm-symbols.c', … … 2560 2566 mod.addTest(mm.generator['test']('pf01', ['test_main'])) 2561 2567 mod.addTest(mm.generator['test']('pf02', ['test_main'], runTest = False)) 2568 mod.addTest(mm.generator['test-if-header']('debugger01', 'rtems/rtems-debugger.h', 2569 ['test_main'], runTest = False, netTest = True)) 2562 2570 return mod 2563 2571 -
libbsd_waf.py
r269b559 rf7a4107 27 27 28 28 def bsp_configure(conf, arch_bsp): 29 pass29 conf.check(header_name = "rtems/rtems-debugger.h", features = "c", includes = conf.env.IFLAGS, mandatory = False) 30 30 31 31 def configure(conf): 32 pass32 rtems.configure(conf, bsp_configure) 33 33 34 34 def build(bld): … … 456 456 cflags = cflags, 457 457 includes = [] + includes, 458 defines = defines + ['NO_ SSL', 'NO_POPEN', 'NO_CGI', 'USE_WEBSOCKET'],458 defines = defines + ['NO_CGI', 'NO_POPEN', 'NO_SSL', 'USE_WEBSOCKET'], 459 459 source = objs02_source) 460 460 libbsd_use += ["objs02"] … … 488 488 cflags = cflags, 489 489 includes = [] + includes, 490 defines = defines + [' __DBINTERFACE_PRIVATE', 'INET6'],490 defines = defines + ['INET6', '__DBINTERFACE_PRIVATE'], 491 491 source = objs03_source) 492 492 libbsd_use += ["objs03"] … … 518 518 cflags = cflags, 519 519 includes = [] + includes, 520 defines = defines + [' __FreeBSD__', 'THERE_IS_NO_FORK', 'MASTER_ONLY', 'INET', 'INET6'],520 defines = defines + ['INET', 'INET6', 'MASTER_ONLY', 'THERE_IS_NO_FORK', '__FreeBSD__'], 521 521 source = objs04_source) 522 522 libbsd_use += ["objs04"] … … 539 539 cflags = cflags, 540 540 includes = [] + includes, 541 defines = defines + [' __FreeBSD__=1', 'BSD=1', 'INET6', '_U_=__attribute__((unused))', 'HAVE_LIMITS_H=1', 'HAVE_INTTYPES=1', 'HAVE_STDINT=1', 'HAVE_STRERROR=1', 'HAVE_STRLCPY=1', 'HAVE_SNPRINTF=1', 'HAVE_VSNPRINTF=1', 'HAVE_SOCKADDR_SA_LEN=1', 'HAVE_NET_IF_MEDIA_H=1', 'HAVE_SYS_IOCCOM_H=1'],541 defines = defines + ['BSD=1', 'HAVE_INTTYPES=1', 'HAVE_LIMITS_H=1', 'HAVE_NET_IF_MEDIA_H=1', 'HAVE_SNPRINTF=1', 'HAVE_SOCKADDR_SA_LEN=1', 'HAVE_STDINT=1', 'HAVE_STRERROR=1', 'HAVE_STRLCPY=1', 'HAVE_SYS_IOCCOM_H=1', 'HAVE_VSNPRINTF=1', 'INET6', '_U_=__attribute__((unused))', '__FreeBSD__=1'], 542 542 source = objs05_source) 543 543 libbsd_use += ["objs05"] … … 690 690 cflags = cflags, 691 691 includes = ['freebsd/contrib/tcpdump', 'freebsd/usr.sbin/tcpdump/tcpdump'] + includes, 692 defines = defines + [' __FreeBSD__=1', 'INET6', '_U_=__attribute__((unused))', 'HAVE_CONFIG_H=1', 'HAVE_NET_PFVAR_H=1'],692 defines = defines + ['HAVE_CONFIG_H=1', 'HAVE_NET_PFVAR_H=1', 'INET6', '_U_=__attribute__((unused))', '__FreeBSD__=1'], 693 693 source = objs06_source) 694 694 libbsd_use += ["objs06"] … … 1141 1141 'rtemsbsd/telnetd/telnetd-service.c', 1142 1142 'rtemsbsd/telnetd/telnetd.c'] 1143 if bld.env["HAVE_RTEMS_RTEMS_DEBUGGER_H"]: 1144 source += ['rtemsbsd/debugger/rtems-debugger-remote-tcp.c'] 1143 1145 if bld.get_env()["RTEMS_ARCH"] == "arm": 1144 1146 source += ['freebsd/sys/mips/mips/in_cksum.c'] … … 1257 1259 install_path = None) 1258 1260 1261 if bld.env["HAVE_RTEMS_RTEMS_DEBUGGER_H"]: 1262 test_debugger01 = ['testsuite/debugger01/test_main.c'] 1263 bld.program(target = "debugger01.exe", 1264 features = "cprogram", 1265 cflags = cflags, 1266 includes = includes, 1267 source = test_debugger01, 1268 use = ["bsd"], 1269 lib = ["m", "z"], 1270 install_path = None) 1271 1259 1272 test_dhcpcd01 = ['testsuite/dhcpcd01/test_main.c'] 1260 1273 bld.program(target = "dhcpcd01.exe", -
waf_generator.py
r269b559 rf7a4107 41 41 import builder 42 42 43 # 44 # Dump the data created from the fragments returned from the builder composers. 45 # 43 46 trace = False 44 47 … … 73 76 def compose(self, path): 74 77 if None in self.includes: 75 return ['sources', self.cflags], [path], self.cflags, self.includes 76 return ['sources', self.cflags + self.includes], [path], self.cflags, self.includes 78 flags = self.cflags 79 else: 80 flags = self.cflags + self.includes 81 return ['sources', flags, ('default', None)], [path], self.cflags, self.includes 82 83 class SourceFileIfHeaderComposer(SourceFileFragmentComposer): 84 85 def __init__(self, headers, cflags = "default", includes = None): 86 if headers is not list: 87 headers = [headers] 88 self.headers = headers 89 super(SourceFileIfHeaderComposer, self).__init__(cflags = cflags, includes = includes) 90 91 def compose(self, path): 92 r = SourceFileFragmentComposer.compose(self, path) 93 define_keys = '' 94 for h in self.headers: 95 h = h.upper() 96 for c in '\/-.': 97 h = h.replace(c, '_') 98 define_keys += ' ' + h 99 r[0][2] = (define_keys.strip(), self.headers) 100 return r 77 101 78 102 class TestFragementComposer(builder.BuildSystemFragmentComposer): … … 85 109 86 110 def compose(self, path): 87 return ['tests', self.testName], { 'files': self.fileFragments, 88 'run': self.runTest, 89 'net': self.netTest } 111 return ['tests', self.testName, ('default', None)], { 'files': self.fileFragments, 112 'run': self.runTest, 113 'net': self.netTest } 114 115 class TestIfHeaderComposer(TestFragementComposer): 116 117 def __init__(self, testName, headers, fileFragments, runTest = True, netTest = False): 118 if headers is not list: 119 headers = [headers] 120 self.headers = headers 121 super(TestIfHeaderComposer, self).__init__(testName, fileFragments, 122 runTest = runTest, netTest = netTest) 123 124 def compose(self, path): 125 r = TestFragementComposer.compose(self, path) 126 define_keys = '' 127 for h in self.headers: 128 h = h.upper() 129 for c in '\/-.': 130 h = h.replace(c, '_') 131 define_keys += ' ' + h 132 r[0][2] = (define_keys.strip(), self.headers) 133 return r 90 134 91 135 class KVMSymbolsFragmentComposer(builder.BuildSystemFragmentComposer): 92 136 93 137 def compose(self, path): 94 return ['KVMSymbols', 'files' ], [path], self.includes138 return ['KVMSymbols', 'files', ('default', None)], [path], self.includes 95 139 96 140 class RPCGENFragmentComposer(builder.BuildSystemFragmentComposer): 97 141 98 142 def compose(self, path): 99 return ['RPCGen', 'files' ], [path]143 return ['RPCGen', 'files', ('default', None)], [path] 100 144 101 145 class RouteKeywordsFragmentComposer(builder.BuildSystemFragmentComposer): 102 146 103 147 def compose(self, path): 104 return ['RouteKeywords', 'files' ], [path]148 return ['RouteKeywords', 'files', ('default', None)], [path] 105 149 106 150 class LexFragmentComposer(builder.BuildSystemFragmentComposer): … … 119 163 if None not in self.includes: 120 164 d['includes'] = self.includes 121 return ['lex', path ], d165 return ['lex', path, ('default', None)], d 122 166 123 167 class YaccFragmentComposer(builder.BuildSystemFragmentComposer): … … 136 180 if None not in self.includes: 137 181 d['includes'] = self.includes 138 return ['yacc', path ], d182 return ['yacc', path, ('default', None)], d 139 183 140 184 # Module Manager - Collection of Modules … … 172 216 self.generator['yacc'] = YaccFragmentComposer 173 217 218 self.generator['source-if-header'] = SourceFileIfHeaderComposer 219 self.generator['test-if-header'] = TestIfHeaderComposer 220 174 221 def generate(self, rtems_version): 175 222 176 def _sourceList(lhs, files, append = False): 223 def _sourceListSources(lhs, sources, append = False, block = 0): 224 indent = block * 4 177 225 if append: 178 226 adder = '+' … … 182 230 adderSpace = '' 183 231 ll = len(lhs) 184 if len(files) == 1: 185 self.add('%s %s= [%r]' % (lhs, adder, files[0])) 186 elif len(files) == 2: 187 self.add('%s %s= [%r,' % (lhs, adder, files[0])) 188 self.add('%s %s %r]' % (' ' * ll, adderSpace, files[-1])) 189 elif len(files) > 0: 190 self.add('%s %s= [%r,' % (lhs, adder, files[0])) 191 for f in files[1:-1]: 192 self.add('%s %s %r,' % (' ' * ll, adderSpace, f)) 193 self.add('%s %s %r]' % (' ' * ll, adderSpace, files[-1])) 232 if len(sources) == 1: 233 self.add('%s%s %s= [%r]' % (' ' * indent, lhs, adder, sources[0])) 234 elif len(sources) == 2: 235 self.add('%s%s %s= [%r,' % (' ' * indent, lhs, adder, sources[0])) 236 self.add('%s%s %s %r]' % (' ' * indent, ' ' * ll, adderSpace, sources[-1])) 237 elif len(sources) > 0: 238 self.add('%s%s %s= [%r,' % (' ' * indent, lhs, adder, sources[0])) 239 for f in sources[1:-1]: 240 self.add('%s%s %s %r,' % (' ' * indent, ' ' * ll, adderSpace, f)) 241 self.add('%s%s %s %r]' % (' ' * indent, ' ' * ll, adderSpace, sources[-1])) 242 243 def _sourceList(lhs, files, append = False): 244 if type(files) is dict: 245 appending = False 246 for cfg in files: 247 if cfg in ['cflags', 'includes']: 248 continue 249 if cfg != 'default': 250 cs = '' 251 ors = '' 252 for c in cfg.split(' '): 253 cs += '%s bld.env["HAVE_%s"]' % (ors, c) 254 ors = ' and' 255 self.add(' if%s:' % (cs)) 256 _sourceListSources(lhs, sorted(files[cfg]), append = appending, block = 1) 257 else: 258 _sourceListSources(lhs, sorted(files[cfg]), append) 259 appending = True 260 else: 261 _sourceListSources(lhs, sorted(files), append) 194 262 195 263 def _dataInsert(data, cpu, frag): … … 214 282 d = d[p] 215 283 if cpu not in d: 216 d[cpu] = [] 284 d[cpu] = { } 285 config = frag[0][2][0] 286 if config != 'default': 287 if 'configure' not in data: 288 data['configure'] = { } 289 data['configure'][config] = frag[0][2][1] 217 290 if type(frag[1]) is list: 218 d[cpu] += frag[1] 291 if config not in d[cpu]: 292 d[cpu][config] = [] 293 d[cpu][config] += frag[1] 219 294 else: 220 d[cpu] = frag[1] 295 d[cpu][config] = frag[1] 296 # 297 # The CPU is for files and the flags and includes are common. 298 # 221 299 if len(frag) > 3: 222 if 'cflags' not in d [cpu]:300 if 'cflags' not in d: 223 301 d['cflags'] = [] 224 302 d['cflags'] += frag[2] 303 d['cflags'] = list(set(d['cflags'])) 225 304 if len(frag) >= 3 and None not in frag[-1]: 226 if 'includes' not in d [cpu]:305 if 'includes' not in d: 227 306 d['includes'] = [] 228 307 d['includes'] += frag[-1] 308 d['includes'] = list(set(d['includes'])) 229 309 230 310 data = { } … … 274 354 self.add('') 275 355 self.add('def bsp_configure(conf, arch_bsp):') 276 self.add(' pass') 356 357 if 'configure' in data: 358 for cfg in data['configure']: 359 for h in data['configure'][cfg]: 360 self.add(' conf.check(header_name = "%s", features = "c", includes = conf.env.IFLAGS, mandatory = False)' % h) 361 else: 362 self.add(' pass') 363 277 364 self.add('') 278 365 self.add('def configure(conf):') 279 self.add(' pass')366 self.add(' rtems.configure(conf, bsp_configure)') 280 367 self.add('') 281 368 self.add('def build(bld):') … … 368 455 includes = [] 369 456 self.add(' # KVM Symbols') 370 self.add(' bld(target = "%s",' % (kvmsymbols['files']['all'][ 0]))457 self.add(' bld(target = "%s",' % (kvmsymbols['files']['all']['default'][0])) 371 458 self.add(' source = "rtemsbsd/rtems/generate_kvm_symbols",') 372 459 self.add(' rule = host_shell + "./${SRC} > ${TGT}",') … … 376 463 self.add(' cflags = cflags,') 377 464 self.add(' includes = %r + includes,' % (includes)) 378 self.add(' source = "%s")' % (kvmsymbols['files']['all'][ 0]))465 self.add(' source = "%s")' % (kvmsymbols['files']['all']['default'][0])) 379 466 self.add(' libbsd_use += ["kvmsymbols"]') 380 467 self.add('') … … 384 471 if 'RPCGen' in data: 385 472 rpcgen = data['RPCGen'] 386 rpcname = rpcgen['files']['all'][ 0][:-2]473 rpcname = rpcgen['files']['all']['default'][0][:-2] 387 474 self.add(' # RPC Generation') 388 475 self.add(' if bld.env.AUTO_REGEN:') … … 394 481 if 'RouteKeywords' in data: 395 482 routekw = data['RouteKeywords'] 396 rkwname = routekw['files']['all'][ 0]483 rkwname = routekw['files']['all']['default'][0] 397 484 self.add(' # Route keywords') 398 485 self.add(' if bld.env.AUTO_REGEN:') … … 410 497 self.add(' # Lex') 411 498 for l in sorted(lexes.keys()): 412 lex = lexes[l]['all'] 499 lex = lexes[l]['all']['default'] 413 500 if 'cflags' in lex: 414 501 lexDefines = [d[2:] for d in lex['cflags']] … … 437 524 self.add(' # Yacc') 438 525 for y in sorted(yaccs.keys()): 439 yacc = yaccs[y]['all'] 526 yacc = yaccs[y]['all']['default'] 440 527 yaccFile = yacc['file'] 441 528 if yacc['sym'] is not None: … … 474 561 objs = 0 475 562 self.add(' # Objects built with different CFLAGS') 476 for flags in sorted(data['sources']): 477 if flags is not 'default': 478 objs += 1 479 _sourceList(' objs%02d_source' % objs, sorted(data['sources'][flags]['all'])) 480 archs = sorted(data['sources'][flags]) 481 for arch in archs: 482 if arch not in ['all', 'cflags', 'includes']: 483 self.add(' if bld.get_env()["RTEMS_ARCH"] == "%s":' % arch) 484 _sourceList(' objs%02d_source' % objs, 485 sorted(data['sources'][flags][arch]), 486 append = True) 487 if 'cflags' in data['sources'][flags]: 488 defines = [d[2:] for d in data['sources'][flags]['cflags']] 489 else: 490 defines = [] 491 if 'includes' in data['sources'][flags]: 492 includes = data['sources'][flags]['includes'] 493 else: 494 includes = [] 495 self.add(' bld.objects(target = "objs%02d",' % (objs)) 496 self.add(' features = "c",') 497 self.add(' cflags = cflags,') 498 self.add(' includes = %r + includes,' % (includes)) 499 self.add(' defines = defines + %r,' % (defines)) 500 self.add(' source = objs%02d_source)' % objs) 501 self.add(' libbsd_use += ["objs%02d"]' % (objs)) 502 self.add('') 563 sources = sorted(data['sources']) 564 if 'default' in sources: 565 sources.remove('default') 566 for flags in sources: 567 objs += 1 568 build = data['sources'][flags] 569 _sourceList(' objs%02d_source' % objs, build['all']) 570 archs = sorted(build) 571 for i in ['all', 'cflags', 'includes']: 572 if i in archs: 573 archs.remove(i) 574 for arch in archs: 575 self.add(' if bld.get_env()["RTEMS_ARCH"] == "%s":' % arch) 576 _sourceList(' objs%02d_source' % objs, build[arch], append = True) 577 if 'cflags' in build: 578 defines = [d[2:] for d in build['cflags']] 579 else: 580 defines = [] 581 if 'includes' in build: 582 includes = build['includes'] 583 else: 584 includes = [] 585 self.add(' bld.objects(target = "objs%02d",' % (objs)) 586 self.add(' features = "c",') 587 self.add(' cflags = cflags,') 588 self.add(' includes = %r + includes,' % (sorted(includes))) 589 self.add(' defines = defines + %r,' % (sorted(defines))) 590 self.add(' source = objs%02d_source)' % objs) 591 self.add(' libbsd_use += ["objs%02d"]' % (objs)) 592 self.add('') 503 593 504 594 # … … 506 596 # static library with. 507 597 # 508 _sourceList(' source', sorted(data['sources']['default']['all'])) 509 archs = sorted(data['sources']['default']) 598 build = data['sources']['default'] 599 _sourceList(' source', build['all']) 600 archs = sorted(build) 601 archs.remove('all') 510 602 for arch in archs: 511 if arch is not 'all': 512 self.add(' if bld.get_env()["RTEMS_ARCH"] == "%s":' % arch) 513 _sourceList(' source', 514 sorted(data['sources']['default'][arch]), 515 append = True) 603 self.add(' if bld.get_env()["RTEMS_ARCH"] == "%s":' % arch) 604 _sourceList(' source', build[arch], append = True) 516 605 self.add(' bld.stlib(target = "bsd",') 517 606 self.add(' features = "c cxx",') … … 525 614 526 615 # 527 # Head file collector.616 # Header file collector. 528 617 # 529 618 self.add(' # Installs. ') … … 546 635 tests = data['tests'] 547 636 for testName in sorted(tests): 548 files = ['testsuite/%s/%s.c' % (testName, f) for f in data['tests'][testName]['all']['files']] 549 _sourceList(' test_%s' % (testName), sorted(files)) 550 self.add(' bld.program(target = "%s.exe",' % (testName)) 551 self.add(' features = "cprogram",') 552 self.add(' cflags = cflags,') 553 self.add(' includes = includes,') 554 self.add(' source = test_%s,' % (testName)) 555 self.add(' use = ["bsd"],') 556 self.add(' lib = ["m", "z"],') 557 self.add(' install_path = None)') 637 test = data['tests'][testName]['all'] 638 block = 0 639 files = [] 640 for cfg in test: 641 if cfg != 'default': 642 cs = '' 643 ors = '' 644 for c in cfg.split(' '): 645 cs += '%s bld.env["HAVE_%s"]' % (ors, c) 646 ors = ' and' 647 self.add(' if%s:' % (cs)) 648 block = 1 649 files = ['testsuite/%s/%s.c' % (testName, f) \ 650 for f in test[cfg]['files']] 651 indent = ' ' * block * 4 652 _sourceList('%s test_%s' % (indent, testName), files) 653 self.add('%s bld.program(target = "%s.exe",' % (indent, testName)) 654 self.add('%s features = "cprogram",' % (indent)) 655 self.add('%s cflags = cflags,' % (indent)) 656 self.add('%s includes = includes,' % (indent)) 657 self.add('%s source = test_%s,' % (indent, testName)) 658 self.add('%s use = ["bsd"],' % (indent)) 659 self.add('%s lib = ["m", "z"],' % (indent)) 660 self.add('%s install_path = None)' % (indent)) 558 661 self.add('') 559 662
Note: See TracChangeset
for help on using the changeset viewer.