waf: Add path-mappings feature

- path-mappings allow to fix autogenerated include paths for some corner
cases of target platforms without the need to change the build system
- Currently used for i386 based bsps
This commit is contained in:
Jan Sommer 2020-04-17 10:24:03 +02:00 committed by Sebastian Huber
parent ce5b52d575
commit dbf72c205d
2 changed files with 19 additions and 2 deletions

View File

@ -90,6 +90,14 @@ _defaults = {
'cpu-include-paths': ['rtemsbsd/@CPU@/include', 'cpu-include-paths': ['rtemsbsd/@CPU@/include',
'freebsd/sys/@CPU@/include'], 'freebsd/sys/@CPU@/include'],
#
# Map paths based on RTEMS naming to FreeBSD naming.
#
'path-mappings': [ # (source, targets)
# i386
('freebsd/sys/i386/include', ['freebsd/sys/x86/include', 'freebsd/sys/i386/include']),
],
# The path where headers will be copied during build. # The path where headers will be copied during build.
'build-include-path': ['build-include'], 'build-include-path': ['build-include'],

View File

@ -210,8 +210,6 @@ class Builder(builder.ModuleManager):
buildinclude = 'build-include' buildinclude = 'build-include'
if 'cpu-include-paths' in config: if 'cpu-include-paths' in config:
cpu = bld.get_env()['RTEMS_ARCH'] cpu = bld.get_env()['RTEMS_ARCH']
if cpu == "i386":
cpu = 'x86'
for i in config['cpu-include-paths']: for i in config['cpu-include-paths']:
includes += [i.replace('@CPU@', cpu)] includes += [i.replace('@CPU@', cpu)]
if 'include-paths' in config: if 'include-paths' in config:
@ -222,6 +220,17 @@ class Builder(builder.ModuleManager):
buildinclude = buildinclude[0] buildinclude = buildinclude[0]
includes += [buildinclude] includes += [buildinclude]
#
# Path mappings
#
if 'path-mappings' in config:
for source, target in config['path-mappings']:
if source in includes:
target = [target] if isinstance(target, str) else target
i = includes.index(source)
includes.remove(source)
includes[i:i] = target
# #
# Collect the libbsd uses # Collect the libbsd uses
# #