summaryrefslogtreecommitdiffstats
path: root/rtems.py
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2014-09-21 07:32:42 +1000
committerChris Johns <chrisj@rtems.org>2014-09-21 07:32:42 +1000
commit28fddb2b9302b855c5f6b0840d617f7a56149e8f (patch)
tree0e262bd4c5335a9435eac0d6924aeade892a3542 /rtems.py
parentLet the user provide a handler that is called when configuring. (diff)
downloadrtems_waf-28fddb2b9302b855c5f6b0840d617f7a56149e8f.tar.bz2
Provide support for trac linking.
Diffstat (limited to 'rtems.py')
-rw-r--r--rtems.py34
1 files changed, 27 insertions, 7 deletions
diff --git a/rtems.py b/rtems.py
index f064ac4..4caceea 100644
--- a/rtems.py
+++ b/rtems.py
@@ -150,13 +150,16 @@ def configure(conf, bsp_configure = None):
conf.msg('Board Support Package', ab, 'YELLOW')
arch = _arch_from_arch_bsp(ab)
+ bsp = _bsp_from_arch_bsp(ab)
+
+ conf.env.ARCH_BSP = '%s/%s' % (arch.split('-')[0], bsp)
conf.env.RTEMS_PATH = conf.options.rtems_path
conf.env.RTEMS_VERSION = conf.options.rtems_version
conf.env.RTEMS_ARCH_BSP = ab
conf.env.RTEMS_ARCH = arch.split('-')[0]
conf.env.RTEMS_ARCH_RTEMS = arch
- conf.env.RTEMS_BSP = _bsp_from_arch_bsp(ab)
+ conf.env.RTEMS_BSP = bsp
tools = _find_tools(conf, arch, [rtems_path] + rtems_tools, tools)
for t in tools[arch]:
@@ -198,16 +201,16 @@ def configure(conf, bsp_configure = None):
tweaks(conf, ab)
#
- # Show commands support the user can supply.
+ # If the user has supplied a BSP specific configure function
+ # call it.
#
- conf.env.SHOW_COMMANDS = show_commands
+ if bsp_configure:
+ bsp_configure(conf, ab)
#
- # If there is a handler call it. This lets the user make configuration
- # checks with in the BSP's context.
+ # Show commands support the user can supply.
#
- if bsp_configure is not None:
- bsp_configure(conf, ab)
+ conf.env.SHOW_COMMANDS = show_commands
conf.setenv('', env)
@@ -353,6 +356,11 @@ def check_options(ctx, rtems_tools, rtems_path, rtems_version, rtems_archs, rtem
return rtems_bin, tools, archs, arch_bsps
+def check_env(ctx, var):
+ if var in ctx.env and len(ctx.env[var]) != 0:
+ return True
+ return False
+
def check(ctx, option):
if option in ctx.env:
return ctx.env[option] == 'Yes'
@@ -522,6 +530,8 @@ def _find_tools(conf, arch, paths, tools):
arch_tools['STRIP'] = conf.find_program([arch + '-strip'], path_list = paths)
arch_tools['RTEMS_LD'] = conf.find_program(['rtems-ld'], path_list = paths,
mandatory = False)
+ arch_tools['RTEMS_TLD'] = conf.find_program(['rtems-tld'], path_list = paths,
+ mandatory = False)
arch_tools['RTEMS_BIN2C'] = conf.find_program(['rtems-bin2c'], path_list = paths,
mandatory = False)
arch_tools['TAR'] = conf.find_program(['tar'], mandatory = False)
@@ -711,11 +721,21 @@ from waflib import TaskGen
from waflib import Utils
from waflib import Node
from waflib.Tools.ccroot import link_task, USELIB_VARS
+
USELIB_VARS['rap'] = set(['RTEMS_LINKFLAGS'])
+USELIB_VARS['rtrace'] = set(['RTEMS_TRACE_CFG'])
@TaskGen.extension('.c')
+
class rap(link_task):
"Link object files into a RTEMS application"
run_str = '${RTEMS_LD} ${RTEMS_LINKFLAGS} --cc ${CC} ${SRC} -o ${TGT[0].abspath()} ${STLIB_MARKER} ${STLIBPATH_ST:STLIBPATH} ${STLIB_ST:STLIB} ${LIBPATH_ST:LIBPATH} ${LIB_ST:LIB}'
ext_out = ['.rap']
vars = ['RTEMS_LINKFLAGS', 'LINKDEPS']
inst_to = '${BINDIR}'
+
+class rtrace(link_task):
+ "Link object files into a RTEMS trace application"
+ run_str = '${RTEMS_TLD} -vvvv -W hello-test -c ${CC} -l ${CC} -C ${RTEMS_TRACE_CFG} -r ${RTEMS_PATH} -B ${ARCH_BSP} -- ${SRC} ${LINKFLAGS} -v -Wl,-Map=chris.map -Wl,--cref -o ${TGT[0].abspath()} ${STLIB_MARKER} ${STLIBPATH_ST:STLIBPATH} ${STLIB_ST:STLIB} ${LIBPATH_ST:LIBPATH} ${LIB_ST:LIB}'
+ ext_out = ['.texe']
+ vars = ['RTEMS_TRACE_CFG', 'LINKDEPS']
+ inst_to = '${BINDIR}'