--- builder.py | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ waf_libbsd.py | 156 ---------------------------------------------------------- 2 files changed, 153 insertions(+), 156 deletions(-)
diff --git a/builder.py b/builder.py index 2faf98d0..e334f1a1 100755 --- a/builder.py +++ b/builder.py @@ -66,6 +66,20 @@ verboseDetail = 2 verboseMoreDetail = 3 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): return verboseLevel >= level @@ -447,6 +461,119 @@ class BuildSystemFragmentComposer(object): def compose(self, path): 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. # @@ -677,3 +804,29 @@ class ModuleManager(object): def generateBuild(self): for m in self.getEnabledModules(): 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 diff --git a/waf_libbsd.py b/waf_libbsd.py index eddfaf99..05293061 100644 --- a/waf_libbsd.py +++ b/waf_libbsd.py @@ -49,133 +49,6 @@ if windows: else: 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. # @@ -202,35 +75,6 @@ class Builder(builder.ModuleManager): sources = sorted(files) 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 _dataInsert(data, cpu, frag): -- 2.13.6 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel