diff options
Diffstat (limited to 'rtemstoolkit')
-rw-r--r-- | rtemstoolkit/macros.py | 25 | ||||
-rw-r--r-- | rtemstoolkit/wscript | 31 |
2 files changed, 48 insertions, 8 deletions
diff --git a/rtemstoolkit/macros.py b/rtemstoolkit/macros.py index d8c3175..8db0729 100644 --- a/rtemstoolkit/macros.py +++ b/rtemstoolkit/macros.py @@ -33,6 +33,7 @@ # import copy +import inspect import re import os import string @@ -71,11 +72,21 @@ class macros: self.read_maps = [] self.read_map_locked = False self.write_map = 'global' + self.rtpath = path.abspath(path.dirname(inspect.getfile(macros))) + if path.dirname(self.rtpath).endswith('/share/rtems'): + self.prefix = path.dirname(self.rtpath)[:-len('/share/rtems')] + else: + self.prefix = '.' self.macros['global'] = {} self.macros['global']['nil'] = ('none', 'none', '') - self.macros['global']['_cwd'] = ('dir', 'required', path.abspath(os.getcwd())) - self.macros['global']['_rtdir'] = ('dir', 'required', path.abspath(rtdir)) - self.macros['global']['_rttop'] = ('dir', 'required', path.abspath(path.dirname(rtdir))) + self.macros['global']['_cwd'] = ('dir', + 'required', + path.abspath(os.getcwd())) + self.macros['global']['_prefix'] = ('dir', 'required', self.prefix) + self.macros['global']['_rtdir'] = ('dir', + 'required', + path.abspath(self.expand(rtdir))) + self.macros['global']['_rttop'] = ('dir', 'required', self.prefix) else: self.macros = {} for m in original.macros: @@ -419,14 +430,19 @@ class macros: def expand(self, _str): """Simple basic expander of config file macros.""" + start_str = _str expanded = True + count = 0 while expanded: + count += 1 + if count > 1000: + raise error.general('expansion looped over 1000 times "%s"' % + (start_str)) expanded = False for m in self.macro_filter.findall(_str): name = m[2:-1] macro = self.get(name) if macro is None: - print self.macros raise error.general('cannot expand default macro: %s in "%s"' % (m, _str)) _str = _str.replace(m, macro[2]) @@ -474,6 +490,7 @@ class macros: if __name__ == "__main__": import copy import sys + print inspect.getfile(macros) m = macros(name = 'defaults.mc') d = copy.copy(m) m['test1'] = 'something' diff --git a/rtemstoolkit/wscript b/rtemstoolkit/wscript index 07703a0..229deeb 100644 --- a/rtemstoolkit/wscript +++ b/rtemstoolkit/wscript @@ -14,12 +14,12 @@ top = '.' out = 'build-' + sys.platform def options(opt): - opt.load("g++") - opt.load("gcc") + opt.load('compiler_c') + opt.load('compiler_cxx') def configure(conf): - conf.load("g++") - conf.load("gcc") + conf.load('compiler_c') + conf.load('compiler_cxx') conf_libiberty(conf) conf_libelf(conf) @@ -100,6 +100,29 @@ def build(bld): cxxflags = conf['cxxflags'] + conf['warningflags'], linkflags = conf['linkflags']) + # + # The Python toolkit. + # + bld(features = 'py', + source = ['__init__.py', + 'check.py', + 'config.py', + 'darwin.py', + 'error.py', + 'execute.py', + 'freebsd.py', + 'git.py', + 'linux.py', + 'log.py', + 'macros.py', + 'mailer.py', + 'options.py', + 'path.py', + 'stacktraces.py', + 'version.py', + 'windows.py'], + install_path = '${PREFIX}/share/rtems/rtemstoolkit') + def rebuild(ctx): import waflib.Options waflib.Options.commands.extend(['clean', 'build']) |