Read values required in wscript from module_build_info

This commit is contained in:
Sam Chesney
2018-12-11 17:39:21 +00:00
parent a2498dacd8
commit 7b4ff40b25
2 changed files with 101 additions and 28 deletions

View File

@@ -20,7 +20,8 @@ DEPENDENT_MODULES = lib_logging(>=2.1.0) lib_xassert(>=2.0.0) lib_xud(>=0.1.0) l
#ignore host dir
SOURCE_DIRS = src/*
#core
# The following file specific flags are not automatically kept in sync with the wscript file
# Core
EXCLUDE_FILES += descriptors_2.rst
XCC_FLAGS_xua_endpoint0.c = -Os -mno-dual-issue $(XCC_FLAGS)
XCC_FLAGS_xua_ep0_uacreqs.xc = -Os -mno-dual-issue $(XCC_FLAGS)
@@ -28,9 +29,7 @@ XCC_FLAGS_dbcalc.xc = -Os -mno-dual-issue $(XCC_FLAGS)
XCC_FLAGS_audioports.c = -Os -mno-dual-issue $(XCC_FLAGS)
XCC_FLAGS_audioports.xc = -Os -mno-dual-issue $(XCC_FLAGS)
#dfu
# DFU
XCC_FLAGS_dfu.xc = -Os -mno-dual-issue $(XCC_FLAGS)
XCC_FLAGS_flash_interface.c = -Os -mno-dual-issue $(XCC_FLAGS)
XCC_FLAGS_flashlib_user.c = -Os -mno-dual-issue $(XCC_FLAGS)

View File

@@ -1,35 +1,109 @@
def use_module(bld):
bld.env.XCC_FLAGS = bld.env.XCC_FLAGS + [
'-O3', '-DREF_CLK_FREQ=100', '-fasm-linenum', '-fcomment-asm',
'-fsubword-select', '-DXUD_FULL_PIDTABLE=1'
]
source = bld.path.ant_glob(
[
'src/**/*.xc', 'src/**/*.c', 'src/**/*.S'
],
excl=[
'**/descriptors_2.rst'
])
depends_on = [
'lib_logging(>=2.0.0)', 'lib_xassert(>=2.0.0)', 'lib_xud(>=1.0.0)'
]
import os.path
def create_list_from_make_flag(bld, list_of_flags):
for i, flag in enumerate(list_of_flags):
if flag.startswith('$('):
for f in bld.env[flag.strip('$()')]:
list_of_flags.insert(i, f)
i += 1
list_of_flags.remove(flag)
return list_of_flags
def create_list_of_strings(whitespace_seperated_list):
list_of_strings = whitespace_seperated_list.split(' ')
for item in list_of_strings:
item = "'{}'".format(item)
return list_of_strings
def read_module_build_info(bld):
with open(os.path.join(bld.path.abspath(), 'module_build_info')) as file:
module_build_info = {}
for line in file.readlines():
line = line.strip()
if line and not line.startswith('#'):
key, value = line.split('=', 1)
module_build_info[key.strip(' +')] = value.strip()
try:
module_build_info['OPTIONAL_HEADERS'] = (
create_list_of_strings(module_build_info['OPTIONAL_HEADERS']))
except KeyError:
pass
try:
module_build_info['DEPENDENT_MODULES'] = (
create_list_of_strings(module_build_info['DEPENDENT_MODULES']))
except KeyError:
pass
try:
module_build_info['MODULE_XCC_FLAGS'] = (
create_list_from_make_flag(bld,
create_list_of_strings(module_build_info['MODULE_XCC_FLAGS'])))
except KeyError:
pass
try:
module_build_info['MODULE_XCC_XC_FLAGS'] = (
create_list_from_make_flag(bld,
create_list_of_strings(module_build_info['MODULE_XCC_XC_FLAGS'])))
except KeyError:
pass
try:
module_build_info['MODULE_XCC_C_FLAGS'] = (
create_list_from_make_flag(bld,
create_list_of_strings(module_build_info['MODULE_XCC_C_FLAGS'])))
except KeyError:
pass
try:
module_build_info['MODULE_XCC_CPP_FLAGS'] = (
create_list_from_make_flag(bld,
create_list_of_strings(module_build_info['MODULE_XCC_CPP_FLAGS'])))
except KeyError:
pass
try:
module_build_info['MODULE_XCC_ASM_FLAGS'] = (
create_list_from_make_flag(bld,
create_list_of_strings(module_build_info['MODULE_XCC_ASM_FLAGS'])))
except KeyError:
pass
try:
module_build_info['INCLUDE_DIRS'] = (
create_list_of_strings(module_build_info['INCLUDE_DIRS']))
except KeyError:
pass
return module_build_info
def use_module(bld):
module_build_info = read_module_build_info(bld)
source = bld.path.ant_glob(['src/**/*.xc', 'src/**/*.c', 'src/**/*.S'],
excl=['**/descriptors_2.rst'])
bld.env.MODULE_XCC_FLAGS = module_build_info['MODULE_XCC_FLAGS']
# The following file specific flags are not automatically kept in sync with the module_build_info file
# Core
bld.env['XCC_FLAGS_endpoint0.c'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_xua_ep0_uacreqs.xc'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_dbcalc.xc'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_flashlib_user.c'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_audioports.c'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_audioports.xc'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
# DFU
bld.env['XCC_FLAGS_dfu.xc'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_flash_interface.c'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.env['XCC_FLAGS_flashlib_user.c'] = bld.env.XCC_FLAGS + ['-Os', '-mno-dual-issue']
bld.module(
source=source,
depends_on=depends_on,
includes=['api'],
optional_headers='xua_conf.h',
version='1.0.0')
depends_on=module_build_info['DEPENDENT_MODULES'],
includes=module_build_info['INCLUDE_DIRS'],
optional_headers=module_build_info['OPTIONAL_HEADERS'],
version=module_build_info['VERSION'])