mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-07-23 07:51:52 +08:00
parent
d797c5dcd2
commit
a6a6d54909
153
builder.py
153
builder.py
@ -66,6 +66,20 @@ verboseDetail = 2
|
|||||||
verboseMoreDetail = 3
|
verboseMoreDetail = 3
|
||||||
verboseDebug = 4
|
verboseDebug = 4
|
||||||
|
|
||||||
|
def _cflagsIncludes(cflags, includes):
|
||||||
|
if type(cflags) is not list:
|
||||||
|
if cflags is not None:
|
||||||
|
_cflags = cflags.split(' ')
|
||||||
|
else:
|
||||||
|
_cflags = [None]
|
||||||
|
else:
|
||||||
|
_cflags = cflags
|
||||||
|
if type(includes) is not list:
|
||||||
|
_includes = [includes]
|
||||||
|
else:
|
||||||
|
_includes = includes
|
||||||
|
return _cflags, _includes
|
||||||
|
|
||||||
def verbose(level = verboseInfo):
|
def verbose(level = verboseInfo):
|
||||||
return verboseLevel >= level
|
return verboseLevel >= level
|
||||||
|
|
||||||
@ -447,6 +461,119 @@ class BuildSystemFragmentComposer(object):
|
|||||||
def compose(self, path):
|
def compose(self, path):
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
class SourceFileFragmentComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def __init__(self, cflags = "default", includes = None):
|
||||||
|
self.cflags, self.includes = _cflagsIncludes(cflags, includes)
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
if None in self.includes:
|
||||||
|
flags = self.cflags
|
||||||
|
else:
|
||||||
|
flags = self.cflags + self.includes
|
||||||
|
return ['sources', flags, ('default', None)], [path], self.cflags, self.includes
|
||||||
|
|
||||||
|
class SourceFileIfHeaderComposer(SourceFileFragmentComposer):
|
||||||
|
|
||||||
|
def __init__(self, headers, cflags = "default", includes = None):
|
||||||
|
if headers is not list:
|
||||||
|
headers = [headers]
|
||||||
|
self.headers = headers
|
||||||
|
super(SourceFileIfHeaderComposer, self).__init__(cflags = cflags, includes = includes)
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
r = SourceFileFragmentComposer.compose(self, path)
|
||||||
|
define_keys = ''
|
||||||
|
for h in self.headers:
|
||||||
|
h = h.upper()
|
||||||
|
for c in '\/-.':
|
||||||
|
h = h.replace(c, '_')
|
||||||
|
define_keys += ' ' + h
|
||||||
|
r[0][2] = (define_keys.strip(), self.headers)
|
||||||
|
return r
|
||||||
|
|
||||||
|
class TestFragementComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def __init__(self, testName, fileFragments, runTest = True, netTest = False):
|
||||||
|
self.testName = testName
|
||||||
|
self.fileFragments = fileFragments
|
||||||
|
self.runTest = runTest
|
||||||
|
self.netTest = netTest
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
return ['tests', self.testName, ('default', None)], { 'files': self.fileFragments,
|
||||||
|
'run': self.runTest,
|
||||||
|
'net': self.netTest }
|
||||||
|
|
||||||
|
class TestIfHeaderComposer(TestFragementComposer):
|
||||||
|
|
||||||
|
def __init__(self, testName, headers, fileFragments, runTest = True, netTest = False):
|
||||||
|
if headers is not list:
|
||||||
|
headers = [headers]
|
||||||
|
self.headers = headers
|
||||||
|
super(TestIfHeaderComposer, self).__init__(testName, fileFragments,
|
||||||
|
runTest = runTest, netTest = netTest)
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
r = TestFragementComposer.compose(self, path)
|
||||||
|
define_keys = ''
|
||||||
|
for h in self.headers:
|
||||||
|
h = h.upper()
|
||||||
|
for c in '\/-.':
|
||||||
|
h = h.replace(c, '_')
|
||||||
|
define_keys += ' ' + h
|
||||||
|
r[0][2] = (define_keys.strip(), self.headers)
|
||||||
|
return r
|
||||||
|
|
||||||
|
class KVMSymbolsFragmentComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
return ['KVMSymbols', 'files', ('default', None)], [path], self.includes
|
||||||
|
|
||||||
|
class RPCGENFragmentComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
return ['RPCGen', 'files', ('default', None)], [path]
|
||||||
|
|
||||||
|
class RouteKeywordsFragmentComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
return ['RouteKeywords', 'files', ('default', None)], [path]
|
||||||
|
|
||||||
|
class LexFragmentComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def __init__(self, sym, dep, cflags = None, includes = None):
|
||||||
|
self.sym = sym
|
||||||
|
self.dep = dep
|
||||||
|
self.cflags, self.includes = _cflagsIncludes(cflags, includes)
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
d = { 'file': path,
|
||||||
|
'sym': self.sym,
|
||||||
|
'dep': self.dep }
|
||||||
|
if None not in self.cflags:
|
||||||
|
d['cflags'] = self.cflags
|
||||||
|
if None not in self.includes:
|
||||||
|
d['includes'] = self.includes
|
||||||
|
return ['lex', path, ('default', None)], d
|
||||||
|
|
||||||
|
class YaccFragmentComposer(BuildSystemFragmentComposer):
|
||||||
|
|
||||||
|
def __init__(self, sym, header, cflags = None, includes = None):
|
||||||
|
self.sym = sym
|
||||||
|
self.header = header
|
||||||
|
self.cflags, self.includes = _cflagsIncludes(cflags, includes)
|
||||||
|
|
||||||
|
def compose(self, path):
|
||||||
|
d = { 'file': path,
|
||||||
|
'sym': self.sym,
|
||||||
|
'header': self.header }
|
||||||
|
if None not in self.cflags:
|
||||||
|
d['cflags'] = self.cflags
|
||||||
|
if None not in self.includes:
|
||||||
|
d['includes'] = self.includes
|
||||||
|
return ['yacc', path, ('default', None)], d
|
||||||
|
|
||||||
#
|
#
|
||||||
# File - a file in the source we move backwards and forwards.
|
# File - a file in the source we move backwards and forwards.
|
||||||
#
|
#
|
||||||
@ -677,3 +804,29 @@ class ModuleManager(object):
|
|||||||
def generateBuild(self):
|
def generateBuild(self):
|
||||||
for m in self.getEnabledModules():
|
for m in self.getEnabledModules():
|
||||||
self.modules[m].generate()
|
self.modules[m].generate()
|
||||||
|
|
||||||
|
def setGenerators(self):
|
||||||
|
self.generator['convert'] = Converter
|
||||||
|
self.generator['no-convert'] = NoConverter
|
||||||
|
self.generator['from-FreeBSD-to-RTEMS-UserSpaceSourceConverter'] = FromFreeBSDToRTEMSUserSpaceSourceConverter
|
||||||
|
self.generator['from-RTEMS-To-FreeBSD-SourceConverter'] = FromRTEMSToFreeBSDSourceConverter
|
||||||
|
self.generator['buildSystemFragmentComposer'] = BuildSystemFragmentComposer
|
||||||
|
|
||||||
|
self.generator['file'] = File
|
||||||
|
|
||||||
|
self.generator['path'] = PathComposer
|
||||||
|
self.generator['freebsd-path'] = FreeBSDPathComposer
|
||||||
|
self.generator['rtems-path'] = RTEMSPathComposer
|
||||||
|
self.generator['cpu-path'] = CPUDependentFreeBSDPathComposer
|
||||||
|
self.generator['target-src-cpu--path'] = TargetSourceCPUDependentPathComposer
|
||||||
|
|
||||||
|
self.generator['source'] = SourceFileFragmentComposer
|
||||||
|
self.generator['test'] = TestFragementComposer
|
||||||
|
self.generator['kvm-symbols'] = KVMSymbolsFragmentComposer
|
||||||
|
self.generator['rpc-gen'] = RPCGENFragmentComposer
|
||||||
|
self.generator['route-keywords'] = RouteKeywordsFragmentComposer
|
||||||
|
self.generator['lex'] = LexFragmentComposer
|
||||||
|
self.generator['yacc'] = YaccFragmentComposer
|
||||||
|
|
||||||
|
self.generator['source-if-header'] = SourceFileIfHeaderComposer
|
||||||
|
self.generator['test-if-header'] = TestIfHeaderComposer
|
||||||
|
156
waf_libbsd.py
156
waf_libbsd.py
@ -49,133 +49,6 @@ if windows:
|
|||||||
else:
|
else:
|
||||||
host_shell = ''
|
host_shell = ''
|
||||||
|
|
||||||
def _cflagsIncludes(cflags, includes):
|
|
||||||
if type(cflags) is not list:
|
|
||||||
if cflags is not None:
|
|
||||||
_cflags = cflags.split(' ')
|
|
||||||
else:
|
|
||||||
_cflags = [None]
|
|
||||||
else:
|
|
||||||
_cflags = cflags
|
|
||||||
if type(includes) is not list:
|
|
||||||
_includes = [includes]
|
|
||||||
else:
|
|
||||||
_includes = includes
|
|
||||||
return _cflags, _includes
|
|
||||||
|
|
||||||
class SourceFileFragmentComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def __init__(self, cflags = "default", includes = None):
|
|
||||||
self.cflags, self.includes = _cflagsIncludes(cflags, includes)
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
if None in self.includes:
|
|
||||||
flags = self.cflags
|
|
||||||
else:
|
|
||||||
flags = self.cflags + self.includes
|
|
||||||
return ['sources', flags, ('default', None)], [path], self.cflags, self.includes
|
|
||||||
|
|
||||||
class SourceFileIfHeaderComposer(SourceFileFragmentComposer):
|
|
||||||
|
|
||||||
def __init__(self, headers, cflags = "default", includes = None):
|
|
||||||
if headers is not list:
|
|
||||||
headers = [headers]
|
|
||||||
self.headers = headers
|
|
||||||
super(SourceFileIfHeaderComposer, self).__init__(cflags = cflags, includes = includes)
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
r = SourceFileFragmentComposer.compose(self, path)
|
|
||||||
define_keys = ''
|
|
||||||
for h in self.headers:
|
|
||||||
h = h.upper()
|
|
||||||
for c in '\/-.':
|
|
||||||
h = h.replace(c, '_')
|
|
||||||
define_keys += ' ' + h
|
|
||||||
r[0][2] = (define_keys.strip(), self.headers)
|
|
||||||
return r
|
|
||||||
|
|
||||||
class TestFragementComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def __init__(self, testName, fileFragments, runTest = True, netTest = False):
|
|
||||||
self.testName = testName
|
|
||||||
self.fileFragments = fileFragments
|
|
||||||
self.runTest = runTest
|
|
||||||
self.netTest = netTest
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
return ['tests', self.testName, ('default', None)], { 'files': self.fileFragments,
|
|
||||||
'run': self.runTest,
|
|
||||||
'net': self.netTest }
|
|
||||||
|
|
||||||
class TestIfHeaderComposer(TestFragementComposer):
|
|
||||||
|
|
||||||
def __init__(self, testName, headers, fileFragments, runTest = True, netTest = False):
|
|
||||||
if headers is not list:
|
|
||||||
headers = [headers]
|
|
||||||
self.headers = headers
|
|
||||||
super(TestIfHeaderComposer, self).__init__(testName, fileFragments,
|
|
||||||
runTest = runTest, netTest = netTest)
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
r = TestFragementComposer.compose(self, path)
|
|
||||||
define_keys = ''
|
|
||||||
for h in self.headers:
|
|
||||||
h = h.upper()
|
|
||||||
for c in '\/-.':
|
|
||||||
h = h.replace(c, '_')
|
|
||||||
define_keys += ' ' + h
|
|
||||||
r[0][2] = (define_keys.strip(), self.headers)
|
|
||||||
return r
|
|
||||||
|
|
||||||
class KVMSymbolsFragmentComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
return ['KVMSymbols', 'files', ('default', None)], [path], self.includes
|
|
||||||
|
|
||||||
class RPCGENFragmentComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
return ['RPCGen', 'files', ('default', None)], [path]
|
|
||||||
|
|
||||||
class RouteKeywordsFragmentComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
return ['RouteKeywords', 'files', ('default', None)], [path]
|
|
||||||
|
|
||||||
class LexFragmentComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def __init__(self, sym, dep, cflags = None, includes = None):
|
|
||||||
self.sym = sym
|
|
||||||
self.dep = dep
|
|
||||||
self.cflags, self.includes = _cflagsIncludes(cflags, includes)
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
d = { 'file': path,
|
|
||||||
'sym': self.sym,
|
|
||||||
'dep': self.dep }
|
|
||||||
if None not in self.cflags:
|
|
||||||
d['cflags'] = self.cflags
|
|
||||||
if None not in self.includes:
|
|
||||||
d['includes'] = self.includes
|
|
||||||
return ['lex', path, ('default', None)], d
|
|
||||||
|
|
||||||
class YaccFragmentComposer(builder.BuildSystemFragmentComposer):
|
|
||||||
|
|
||||||
def __init__(self, sym, header, cflags = None, includes = None):
|
|
||||||
self.sym = sym
|
|
||||||
self.header = header
|
|
||||||
self.cflags, self.includes = _cflagsIncludes(cflags, includes)
|
|
||||||
|
|
||||||
def compose(self, path):
|
|
||||||
d = { 'file': path,
|
|
||||||
'sym': self.sym,
|
|
||||||
'header': self.header }
|
|
||||||
if None not in self.cflags:
|
|
||||||
d['cflags'] = self.cflags
|
|
||||||
if None not in self.includes:
|
|
||||||
d['includes'] = self.includes
|
|
||||||
return ['yacc', path, ('default', None)], d
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# The waf builder for libbsd.
|
# The waf builder for libbsd.
|
||||||
#
|
#
|
||||||
@ -202,35 +75,6 @@ class Builder(builder.ModuleManager):
|
|||||||
sources = sorted(files)
|
sources = sorted(files)
|
||||||
return sources
|
return sources
|
||||||
|
|
||||||
def setGenerators(self):
|
|
||||||
#
|
|
||||||
# Called when the builder.ModuleManager.__init__ is run
|
|
||||||
#
|
|
||||||
self.generator['convert'] = builder.Converter
|
|
||||||
self.generator['no-convert'] = builder.NoConverter
|
|
||||||
self.generator['from-FreeBSD-to-RTEMS-UserSpaceSourceConverter'] = builder.FromFreeBSDToRTEMSUserSpaceSourceConverter
|
|
||||||
self.generator['from-RTEMS-To-FreeBSD-SourceConverter'] = builder.FromRTEMSToFreeBSDSourceConverter
|
|
||||||
self.generator['buildSystemFragmentComposer'] = builder.BuildSystemFragmentComposer
|
|
||||||
|
|
||||||
self.generator['file'] = builder.File
|
|
||||||
|
|
||||||
self.generator['path'] = builder.PathComposer
|
|
||||||
self.generator['freebsd-path'] = builder.FreeBSDPathComposer
|
|
||||||
self.generator['rtems-path'] = builder.RTEMSPathComposer
|
|
||||||
self.generator['cpu-path'] = builder.CPUDependentFreeBSDPathComposer
|
|
||||||
self.generator['target-src-cpu--path'] = builder.TargetSourceCPUDependentPathComposer
|
|
||||||
|
|
||||||
self.generator['source'] = SourceFileFragmentComposer
|
|
||||||
self.generator['test'] = TestFragementComposer
|
|
||||||
self.generator['kvm-symbols'] = KVMSymbolsFragmentComposer
|
|
||||||
self.generator['rpc-gen'] = RPCGENFragmentComposer
|
|
||||||
self.generator['route-keywords'] = RouteKeywordsFragmentComposer
|
|
||||||
self.generator['lex'] = LexFragmentComposer
|
|
||||||
self.generator['yacc'] = YaccFragmentComposer
|
|
||||||
|
|
||||||
self.generator['source-if-header'] = SourceFileIfHeaderComposer
|
|
||||||
self.generator['test-if-header'] = TestIfHeaderComposer
|
|
||||||
|
|
||||||
def generate(self, rtems_version):
|
def generate(self, rtems_version):
|
||||||
|
|
||||||
def _dataInsert(data, cpu, frag):
|
def _dataInsert(data, cpu, frag):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user