forked from PAWPAW-Mirror/lib_xua
Read values required in wscript from module_build_info
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
122
lib_xua/wscript
122
lib_xua/wscript
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user