Changeset 5338089 in rtems-libbsd
- Timestamp:
- 05/04/16 06:24:11 (7 years ago)
- Branches:
- 5, 5-freebsd-12, 6-freebsd-12, freebsd-9.3, master
- Children:
- e58b898
- Parents:
- 4b127e7
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
builder.py
r4b127e7 r5338089 72 72 print(' %s' % (f)) 73 73 74 def read _file(name):74 def readFile(name): 75 75 try: 76 76 contents = codecs.open(name, mode = 'r', encoding = 'utf-8', errors = 'ignore').read() … … 80 80 return contents 81 81 82 def write _file(name, contents):82 def writeFile(name, contents): 83 83 path = os.path.dirname(name) 84 84 if not os.path.exists(path): … … 86 86 os.makedirs(path) 87 87 except OSError as oe: 88 print('error: cannot create directory: %s: %s' % ( dst_path, oe))88 print('error: cannot create directory: %s: %s' % (path, oe)) 89 89 sys.exit(1) 90 90 try: … … 109 109 # This stuff needs to move to libbsd.py. 110 110 # 111 def common _flags():111 def commonFlags(): 112 112 return ['-O2', 113 113 '-g', … … 116 116 '-fno-common'] 117 117 118 def common _warnings():118 def commonWarnings(): 119 119 return ['-Wall', 120 120 '-Wno-format'] 121 121 122 def common _no_warnings():122 def commonNoWarnings(): 123 123 return ['-w'] 124 124 … … 143 143 '-Itestsuite/include'] 144 144 145 def cpu _includes():145 def cpuIncludes(): 146 146 return ['-Irtemsbsd/@CPU@/include', 147 147 '-Ifreebsd/sys/@CPU@/include'] … … 153 153 return ['-std=gnu++11'] 154 154 155 def header _paths():155 def headerPaths(): 156 156 # local path wildcard dest path 157 157 return [('rtemsbsd/include', '*.h', ''), … … 233 233 class Converter(object): 234 234 235 def convert(self, src, dst, has _source = True, source_filter = None, src_contents = None):235 def convert(self, src, dst, hasSource = True, sourceFilter = None, srcContents = None): 236 236 237 237 global filesProcessed, filesProcessedCount … … 239 239 if verbose(verboseDebug): 240 240 print("convert: filter:%s: %s -> %s" % \ 241 (['yes', 'no'][source _filter is None], src, dst))241 (['yes', 'no'][sourceFilter is None], src, dst)) 242 242 243 243 # … … 245 245 # warning and do not try and convert. 246 246 # 247 if src _contents is None:247 if srcContents is None: 248 248 if not os.path.exists(src): 249 if has _source:249 if hasSource: 250 250 raise error('source not found: %s' % (src)) 251 251 else: … … 256 256 # Files read as a single string if not passed in. 257 257 # 258 src _contents = read_file(src)258 srcContents = readFile(src) 259 259 260 260 if os.path.exists(dst): 261 dst _contents = read_file(dst)261 dstContents = readFile(dst) 262 262 else: 263 263 print('warning: no destination: %s' % (dst)) 264 dst _contents = ''264 dstContents = '' 265 265 266 266 # 267 267 # Filter the source. 268 268 # 269 if source _filter is not None:270 src _contents = source_filter(src_contents)269 if sourceFilter is not None: 270 srcContents = sourceFilter(srcContents) 271 271 272 272 # 273 273 # Split into a list of lines. 274 274 # 275 src _lines = src_contents.split(os.linesep)276 dst _lines = dst_contents.split(os.linesep)275 srcLines = srcContents.split(os.linesep) 276 dstLines = dstContents.split(os.linesep) 277 277 278 278 if verbose(verboseDebug): 279 print('Unified diff: %s (lines:%d)' % (src, len(src _lines)))279 print('Unified diff: %s (lines:%d)' % (src, len(srcLines))) 280 280 281 281 # … … 283 283 # generator to list because the generator is not reusable. 284 284 # 285 diff = list(difflib.unified_diff(dst _lines,286 src _lines,285 diff = list(difflib.unified_diff(dstLines, 286 srcLines, 287 287 fromfile = src, 288 288 tofile = dst, … … 304 304 print("UPDATE: %s -> %s" % (src, dst)) 305 305 if isDryRun == False: 306 write _file(dst, src_contents)306 writeFile(dst, srcContents) 307 307 else: 308 308 print("diff -u %s %s" % (src, dst)) … … 311 311 312 312 class NoConverter(Converter): 313 def convert(self, src, dst, has _source = True, source_filter = None):313 def convert(self, src, dst, hasSource = True, sourceFilter = None): 314 314 return '/* EMPTY */\n' 315 315 316 316 class FromFreeBSDToRTEMSHeaderConverter(Converter): 317 def source _filter(self, data):317 def sourceFilter(self, data): 318 318 data = fixLocalIncludes(data) 319 319 data = fixIncludes(data) … … 322 322 def convert(self, src, dst): 323 323 sconverter = super(FromFreeBSDToRTEMSHeaderConverter, self) 324 sconverter.convert(src, dst, source _filter = self.source_filter)324 sconverter.convert(src, dst, sourceFilter = self.sourceFilter) 325 325 326 326 class FromFreeBSDToRTEMSUserSpaceHeaderConverter(Converter): 327 def source _filter(self, data):327 def sourceFilter(self, data): 328 328 data = fixIncludes(data) 329 329 return data … … 331 331 def convert(self, src, dst): 332 332 sconverter = super(FromFreeBSDToRTEMSUserSpaceHeaderConverter, self) 333 sconverter.convert(src, dst, source _filter = self.source_filter)333 sconverter.convert(src, dst, sourceFilter = self.sourceFilter) 334 334 335 335 class FromFreeBSDToRTEMSSourceConverter(Converter): 336 def source _filter(self, data):336 def sourceFilter(self, data): 337 337 data = fixLocalIncludes(data) 338 338 data = fixIncludes(data) … … 342 342 def convert(self, src, dst): 343 343 sconverter = super(FromFreeBSDToRTEMSSourceConverter, self) 344 sconverter.convert(src, dst, source _filter = self.source_filter)344 sconverter.convert(src, dst, sourceFilter = self.sourceFilter) 345 345 346 346 class FromFreeBSDToRTEMSUserSpaceSourceConverter(Converter): 347 def source _filter(self, data):347 def sourceFilter(self, data): 348 348 data = fixIncludes(data) 349 349 data = '#include <machine/rtems-bsd-user-space.h>\n\n' + data … … 352 352 def convert(self, src, dst): 353 353 sconverter = super(FromFreeBSDToRTEMSUserSpaceSourceConverter, self) 354 sconverter.convert(src, dst, source _filter = self.source_filter)354 sconverter.convert(src, dst, sourceFilter = self.sourceFilter) 355 355 356 356 class FromRTEMSToFreeBSDHeaderConverter(Converter): 357 def source _filter(self, data):357 def sourceFilter(self, data): 358 358 data = revertFixLocalIncludes(data) 359 359 data = revertFixIncludes(data) … … 362 362 def convert(self, src, dst): 363 363 sconverter = super(FromRTEMSToFreeBSDHeaderConverter, self) 364 sconverter.convert(src, dst, has _source = False, source_filter = self.source_filter)364 sconverter.convert(src, dst, hasSource = False, sourceFilter = self.sourceFilter) 365 365 366 366 class FromRTEMSToFreeBSDSourceConverter(Converter): 367 def source _filter(self, data):367 def sourceFilter(self, data): 368 368 data = re.sub('#include <machine/rtems-bsd-kernel-space.h>\n\n', '', data) 369 369 data = re.sub('#include <machine/rtems-bsd-user-space.h>\n\n', '', data) … … 372 372 def convert(self, src, dst): 373 373 sconverter = super(FromRTEMSToFreeBSDSourceConverter, self) 374 sconverter.convert(src, dst, has _source = False, source_filter = self.source_filter)374 sconverter.convert(src, dst, hasSource = False, sourceFilter = self.sourceFilter) 375 375 376 376 # -
freebsd-to-rtems.py
r4b127e7 r5338089 148 148 149 149 try: 150 waf _gen = waf_generator.ModuleManager()151 libbsd.sources(waf _gen)150 wafGen = waf_generator.ModuleManager() 151 libbsd.sources(wafGen) 152 152 if not isOnlyBuildScripts: 153 waf _gen.processSource(isForward)154 waf _gen.generate(libbsd.rtems_version())153 wafGen.processSource(isForward) 154 wafGen.generate(libbsd.rtems_version()) 155 155 builder.changedFileSummary() 156 156 except IOError as ioe: -
waf_generator.py
r4b127e7 r5338089 45 45 data = { } 46 46 47 def _add _files(name, files):47 def _addFiles(name, files): 48 48 if type(files) is not list: 49 49 files = [files] … … 52 52 data[name] += files 53 53 54 def _c lfags_includes(cflags, includes):54 def _cflagsIncludes(cflags, includes): 55 55 if type(cflags) is not list: 56 56 if cflags is not None: … … 69 69 70 70 def __init__(self, cflags = "default", includes = None): 71 self.cflags, self.includes = _c lfags_includes(cflags, includes)71 self.cflags, self.includes = _cflagsIncludes(cflags, includes) 72 72 73 73 def compose(self, path): … … 109 109 self.sym = sym 110 110 self.dep = dep 111 self.cflags, self.includes = _c lfags_includes(cflags, includes)111 self.cflags, self.includes = _cflagsIncludes(cflags, includes) 112 112 113 113 def compose(self, path): … … 126 126 self.sym = sym 127 127 self.header = header 128 self.cflags, self.includes = _c lfags_includes(cflags, includes)128 self.cflags, self.includes = _cflagsIncludes(cflags, includes) 129 129 130 130 def compose(self, path): … … 150 150 name = os.path.join(builder.RTEMS_DIR, 'libbsd_waf.py') 151 151 converter = builder.Converter() 152 converter.convert(name, name, src _contents = self.script)152 converter.convert(name, name, srcContents = self.script) 153 153 154 154 def setGenerators(self): … … 174 174 def generate(self, rtems_version): 175 175 176 def _source _list(lhs, files, append = False):176 def _sourceList(lhs, files, append = False): 177 177 if append: 178 178 adder = '+' 179 adder _space = ' '179 adderSpace = ' ' 180 180 else: 181 181 adder = '' 182 adder _space = ''182 adderSpace = '' 183 183 ll = len(lhs) 184 184 if len(files) == 1: … … 186 186 elif len(files) == 2: 187 187 self.add('%s %s= [%r,' % (lhs, adder, files[0])) 188 self.add('%s %s %r]' % (' ' * ll, adder _space, files[-1]))188 self.add('%s %s %r]' % (' ' * ll, adderSpace, files[-1])) 189 189 elif len(files) > 0: 190 190 self.add('%s %s= [%r,' % (lhs, adder, files[0])) 191 191 for f in files[1:-1]: 192 self.add('%s %s %r,' % (' ' * ll, adder _space, f))193 self.add('%s %s %r]' % (' ' * ll, adder _space, files[-1]))194 195 def _data _insert(data, cpu, frag):192 self.add('%s %s %r,' % (' ' * ll, adderSpace, f)) 193 self.add('%s %s %r]' % (' ' * ll, adderSpace, files[-1])) 194 195 def _dataInsert(data, cpu, frag): 196 196 # 197 197 # The default handler returns an empty string. Skip it. … … 234 234 if m.conditionalOn == "none": 235 235 for f in m.files: 236 _data _insert(data, 'all', f.getFragment())236 _dataInsert(data, 'all', f.getFragment()) 237 237 for cpu, files in sorted(m.cpuDependentSourceFiles.items()): 238 238 for f in files: 239 _data _insert(data, cpu, f.getFragment())239 _dataInsert(data, cpu, f.getFragment()) 240 240 241 241 if trace: … … 273 273 self.add(' # C/C++ flags') 274 274 self.add(' common_flags = []') 275 for f in builder.common _flags():275 for f in builder.commonFlags(): 276 276 self.add(' common_flags += ["%s"]' % (f)) 277 277 self.add(' if bld.env.WARNINGS:') 278 for f in builder.common _warnings():278 for f in builder.commonWarnings(): 279 279 self.add(' common_flags += ["%s"]' % (f)) 280 280 self.add(' else:') 281 for f in builder.common _no_warnings():281 for f in builder.commonNoWarnings(): 282 282 self.add(' common_flags += ["%s"]' % (f)) 283 283 self.add(' cflags = %r + common_flags' % (builder.cflags())) … … 292 292 self.add(' # Include paths') 293 293 self.add(' includes = []') 294 self.add(' for i in %r:' % (builder.cpu _includes()))294 self.add(' for i in %r:' % (builder.cpuIncludes())) 295 295 self.add(' includes += ["%s" % (i[2:].replace("@CPU@", bld.get_env()["RTEMS_ARCH"]))]') 296 296 self.add(' if bld.get_env()["RTEMS_ARCH"] == "i386":') 297 self.add(' for i in %r:' % (builder.cpu _includes()))297 self.add(' for i in %r:' % (builder.cpuIncludes())) 298 298 self.add(' includes += ["%s" % (i[2:].replace("@CPU@", "x86"))]') 299 299 for i in builder.includes(): … … 403 403 lex = lexes[l]['all'] 404 404 if 'cflags' in lex: 405 lex _defines = [d[2:] for d in lex['cflags']]406 else: 407 lex _defines = []405 lexDefines = [d[2:] for d in lex['cflags']] 406 else: 407 lexDefines = [] 408 408 if 'includes' in lex: 409 lex _includes = lex['includes']410 else: 411 lex _includes = []409 lexIncludes = lex['includes'] 410 else: 411 lexIncludes = [] 412 412 self.add(' if bld.env.AUTO_REGEN:') 413 413 self.add(' bld(target = "%s.c",' % (lex['file'][:-2])) … … 418 418 self.add(' features = "c",') 419 419 self.add(' cflags = cflags,') 420 self.add(' includes = %r + includes,' % (lex _includes))421 self.add(' defines = defines + %r,' % (lex _defines))420 self.add(' includes = %r + includes,' % (lexIncludes)) 421 self.add(' defines = defines + %r,' % (lexDefines)) 422 422 self.add(' source = "%s.c")' % (lex['file'][:-2])) 423 423 self.add(' libbsd_use += ["lex_%s"]' % (lex['sym'])) … … 429 429 for y in sorted(yaccs.keys()): 430 430 yacc = yaccs[y]['all'] 431 yacc _file = yacc['file']431 yaccFile = yacc['file'] 432 432 if yacc['sym'] is not None: 433 yacc _sym = yacc['sym']434 else: 435 yacc _sym = os.path.basename(yacc_file)[:-2]436 yacc _header = '%s/%s' % (os.path.dirname(yacc_file), yacc['header'])433 yaccSym = yacc['sym'] 434 else: 435 yaccSym = os.path.basename(yaccFile)[:-2] 436 yaccHeader = '%s/%s' % (os.path.dirname(yaccFile), yacc['header']) 437 437 if 'cflags' in yacc: 438 yacc _defines = [d[2:] for d in yacc['cflags']]439 else: 440 yacc _defines = []438 yaccDefines = [d[2:] for d in yacc['cflags']] 439 else: 440 yaccDefines = [] 441 441 if 'includes' in yacc: 442 yacc _includes = yacc['includes']443 else: 444 yacc _includes = []442 yaccIncludes = yacc['includes'] 443 else: 444 yaccIncludes = [] 445 445 self.add(' if bld.env.AUTO_REGEN:') 446 self.add(' bld(target = "%s.c",' % (yacc _file[:-2]))447 self.add(' source = "%s",' % (yacc _file))448 self.add(' rule = "${YACC} -b %s -d -p %s ${SRC} && ' % (yacc _sym, yacc_sym) + \449 'sed -e \'/YY_BUF_SIZE/s/16384/1024/\' < %s.tab.c > ${TGT} && ' % (yacc _sym) + \450 'rm -f %s.tab.c && mv %s.tab.h %s")' % (yacc _sym, yacc_sym, yacc_header))451 self.add(' bld.objects(target = "yacc_%s",' % (yacc _sym))446 self.add(' bld(target = "%s.c",' % (yaccFile[:-2])) 447 self.add(' source = "%s",' % (yaccFile)) 448 self.add(' rule = "${YACC} -b %s -d -p %s ${SRC} && ' % (yaccSym, yaccSym) + \ 449 'sed -e \'/YY_BUF_SIZE/s/16384/1024/\' < %s.tab.c > ${TGT} && ' % (yaccSym) + \ 450 'rm -f %s.tab.c && mv %s.tab.h %s")' % (yaccSym, yaccSym, yaccHeader)) 451 self.add(' bld.objects(target = "yacc_%s",' % (yaccSym)) 452 452 self.add(' features = "c",') 453 453 self.add(' cflags = cflags,') 454 self.add(' includes = %r + includes,' % (yacc _includes))455 self.add(' defines = defines + %r,' % (yacc _defines))456 self.add(' source = "%s.c")' % (yacc _file[:-2]))457 self.add(' libbsd_use += ["yacc_%s"]' % (yacc _sym))454 self.add(' includes = %r + includes,' % (yaccIncludes)) 455 self.add(' defines = defines + %r,' % (yaccDefines)) 456 self.add(' source = "%s.c")' % (yaccFile[:-2])) 457 self.add(' libbsd_use += ["yacc_%s"]' % (yaccSym)) 458 458 self.add('') 459 459 … … 467 467 if flags is not 'default': 468 468 objs += 1 469 _source _list(' objs%02d_source' % objs, sorted(data['sources'][flags]['all']))469 _sourceList(' objs%02d_source' % objs, sorted(data['sources'][flags]['all'])) 470 470 archs = sorted(data['sources'][flags]) 471 471 for arch in archs: 472 472 if arch not in ['all', 'cflags', 'includes']: 473 473 self.add(' if bld.get_env()["RTEMS_ARCH"] == "%s":' % arch) 474 _source _list(' objs%02d_source' % objs,475 476 474 _sourceList(' objs%02d_source' % objs, 475 sorted(data['sources'][flags][arch]), 476 append = True) 477 477 if 'cflags' in data['sources'][flags]: 478 478 defines = [d[2:] for d in data['sources'][flags]['cflags']] … … 496 496 # static library with. 497 497 # 498 _source _list(' source', sorted(data['sources']['default']['all']))498 _sourceList(' source', sorted(data['sources']['default']['all'])) 499 499 archs = sorted(data['sources']['default']) 500 500 for arch in archs: 501 501 if arch is not 'all': 502 502 self.add(' if bld.get_env()["RTEMS_ARCH"] == "%s":' % arch) 503 _source _list(' source',504 505 503 _sourceList(' source', 504 sorted(data['sources']['default'][arch]), 505 append = True) 506 506 self.add(' bld.stlib(target = "bsd",') 507 507 self.add(' features = "c cxx",') … … 519 519 self.add(' # Installs. ') 520 520 self.add(' bld.install_files("${PREFIX}/" + rtems.arch_bsp_lib_path(bld.env.RTEMS_VERSION, bld.env.RTEMS_ARCH_BSP), ["libbsd.a"])') 521 header _paths = builder.header_paths()522 self.add(' header_paths = [%s,' % (str(header _paths[0])))523 for hp in header _paths[1:-1]:521 headerPaths = builder.headerPaths() 522 self.add(' header_paths = [%s,' % (str(headerPaths[0]))) 523 for hp in headerPaths[1:-1]: 524 524 self.add(' %s,' % (str(hp))) 525 self.add(' %s]' % (str(header _paths[-1])))525 self.add(' %s]' % (str(headerPaths[-1]))) 526 526 self.add(' for headers in header_paths:') 527 527 self.add(' ipath = os.path.join(rtems.arch_bsp_include_path(bld.env.RTEMS_VERSION, bld.env.RTEMS_ARCH_BSP), headers[2])') … … 535 535 self.add(' # Tests') 536 536 tests = data['tests'] 537 for test _name in sorted(tests):538 files = ['testsuite/%s/%s.c' % (test _name, f) for f in data['tests'][test_name]['all']['files']]539 _source _list(' test_%s' % (test_name), sorted(files))540 self.add(' bld.program(target = "%s.exe",' % (test _name))537 for testName in sorted(tests): 538 files = ['testsuite/%s/%s.c' % (testName, f) for f in data['tests'][testName]['all']['files']] 539 _sourceList(' test_%s' % (testName), sorted(files)) 540 self.add(' bld.program(target = "%s.exe",' % (testName)) 541 541 self.add(' features = "cprogram",') 542 542 self.add(' cflags = cflags,') 543 543 self.add(' includes = includes,') 544 self.add(' source = test_%s,' % (test _name))544 self.add(' source = test_%s,' % (testName)) 545 545 self.add(' use = ["bsd"],') 546 546 self.add(' lib = ["m", "z"],')
Note: See TracChangeset
for help on using the changeset viewer.