summaryrefslogtreecommitdiffstats
path: root/rtemstoolkit
diff options
context:
space:
mode:
Diffstat (limited to 'rtemstoolkit')
-rw-r--r--rtemstoolkit/macros.py25
-rw-r--r--rtemstoolkit/wscript31
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'])