commit
10d480eec0
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -20,6 +20,10 @@ from utils import xml_indent
|
||||||
import xml.etree.ElementTree as etree
|
import xml.etree.ElementTree as etree
|
||||||
from xml.etree.ElementTree import SubElement
|
from xml.etree.ElementTree import SubElement
|
||||||
|
|
||||||
|
from building import *
|
||||||
|
|
||||||
|
MODULE_VER_NUM = 0
|
||||||
|
|
||||||
source_pattern = ['*.c', '*.cpp', '*.cxx', '*.s', '*.S', '*.asm']
|
source_pattern = ['*.c', '*.cpp', '*.cxx', '*.s', '*.S', '*.asm']
|
||||||
|
|
||||||
def OSPath(path):
|
def OSPath(path):
|
||||||
|
@ -134,57 +138,66 @@ def IsRttEclipsePathFormat(path):
|
||||||
return True
|
return True
|
||||||
else :
|
else :
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def IsCppProject():
|
||||||
|
return GetDepend('RT_USING_CPLUSPLUS')
|
||||||
|
|
||||||
|
|
||||||
def HandleToolOption(tools, env, project, reset):
|
def HandleToolOption(tools, env, project, reset):
|
||||||
|
is_cpp_prj = IsCppProject()
|
||||||
BSP_ROOT = os.path.abspath(env['BSP_ROOT'])
|
BSP_ROOT = os.path.abspath(env['BSP_ROOT'])
|
||||||
|
|
||||||
CPPDEFINES = project['CPPDEFINES']
|
CPPDEFINES = project['CPPDEFINES']
|
||||||
paths = [ConverToRttEclipsePathFormat(RelativeProjectPath(env, os.path.normpath(i)).replace('\\', '/')) for i in project['CPPPATH']]
|
paths = [ConverToRttEclipsePathFormat(RelativeProjectPath(env, os.path.normpath(i)).replace('\\', '/')) for i in project['CPPPATH']]
|
||||||
|
|
||||||
compile_include_paths_option = None
|
compile_include_paths_options = []
|
||||||
compile_include_files_option = None
|
compile_include_files_options = []
|
||||||
compile_defs_option = None
|
compile_defs_options = []
|
||||||
linker_scriptfile_option = None
|
linker_scriptfile_option = None
|
||||||
linker_script_option = None
|
linker_script_option = None
|
||||||
linker_nostart_option = None
|
linker_nostart_option = None
|
||||||
linker_libs_option = None
|
linker_libs_option = None
|
||||||
linker_paths_option = None
|
linker_paths_option = None
|
||||||
|
|
||||||
linker_newlib_nano_option = None
|
linker_newlib_nano_option = None
|
||||||
|
|
||||||
for tool in tools:
|
for tool in tools:
|
||||||
|
|
||||||
if tool.get('id').find('c.compile') != 1:
|
if tool.get('id').find('compile') != 1:
|
||||||
options = tool.findall('option')
|
options = tool.findall('option')
|
||||||
# find all compile options
|
# find all compile options
|
||||||
for option in options:
|
for option in options:
|
||||||
if option.get('id').find('c.compiler.include.paths') != -1 or option.get('id').find('c.compiler.option.includepaths') != -1:
|
if option.get('id').find('compiler.include.paths') != -1 or option.get('id').find('compiler.option.includepaths') != -1:
|
||||||
compile_include_paths_option = option
|
compile_include_paths_options += [option]
|
||||||
elif option.get('id').find('c.compiler.include.files') != -1 or option.get('id').find('c.compiler.option.includefiles') != -1 :
|
elif option.get('id').find('compiler.include.files') != -1 or option.get('id').find('compiler.option.includefiles') != -1 :
|
||||||
compile_include_files_option = option
|
compile_include_files_options += [option]
|
||||||
elif option.get('id').find('c.compiler.defs') != -1 or option.get('id').find('c.compiler.option.definedsymbols') != -1:
|
elif option.get('id').find('compiler.defs') != -1 or option.get('id').find('compiler.option.definedsymbols') != -1:
|
||||||
compile_defs_option = option
|
compile_defs_options += [option]
|
||||||
|
|
||||||
if tool.get('id').find('c.linker') != -1:
|
if tool.get('id').find('linker') != -1:
|
||||||
options = tool.findall('option')
|
options = tool.findall('option')
|
||||||
# find all linker options
|
# find all linker options
|
||||||
for option in options:
|
for option in options:
|
||||||
if option.get('id').find('c.linker.scriptfile') != -1:
|
# the project type and option type must equal
|
||||||
|
if is_cpp_prj != (option.get('id').find('cpp.linker') != -1):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if option.get('id').find('linker.scriptfile') != -1:
|
||||||
linker_scriptfile_option = option
|
linker_scriptfile_option = option
|
||||||
elif option.get('id').find('c.linker.option.script') != -1:
|
elif option.get('id').find('linker.option.script') != -1:
|
||||||
linker_script_option = option
|
linker_script_option = option
|
||||||
elif option.get('id').find('c.linker.nostart') != -1:
|
elif option.get('id').find('linker.nostart') != -1:
|
||||||
linker_nostart_option = option
|
linker_nostart_option = option
|
||||||
elif option.get('id').find('c.linker.libs') != -1 and env.has_key('LIBS'):
|
elif option.get('id').find('linker.libs') != -1 and env.has_key('LIBS'):
|
||||||
linker_libs_option = option
|
linker_libs_option = option
|
||||||
elif option.get('id').find('c.linker.paths') != -1 and env.has_key('LIBPATH'):
|
elif option.get('id').find('linker.paths') != -1 and env.has_key('LIBPATH'):
|
||||||
linker_paths_option = option
|
linker_paths_option = option
|
||||||
elif option.get('id').find('c.linker.usenewlibnano') != -1:
|
elif option.get('id').find('linker.usenewlibnano') != -1:
|
||||||
linker_newlib_nano_option = option
|
linker_newlib_nano_option = option
|
||||||
|
|
||||||
# change the inclue path
|
# change the inclue path
|
||||||
if compile_include_paths_option is not None :
|
for option in compile_include_paths_options:
|
||||||
option = compile_include_paths_option
|
|
||||||
# find all of paths in this project
|
# find all of paths in this project
|
||||||
include_paths = option.findall('listOptionValue')
|
include_paths = option.findall('listOptionValue')
|
||||||
for item in include_paths:
|
for item in include_paths:
|
||||||
|
@ -196,8 +209,7 @@ def HandleToolOption(tools, env, project, reset):
|
||||||
for item in paths:
|
for item in paths:
|
||||||
SubElement(option, 'listOptionValue', {'builtIn': 'false', 'value': item})
|
SubElement(option, 'listOptionValue', {'builtIn': 'false', 'value': item})
|
||||||
# change the inclue files (default) or definitions
|
# change the inclue files (default) or definitions
|
||||||
if compile_include_files_option is not None:
|
for option in compile_include_files_options:
|
||||||
option = compile_include_files_option
|
|
||||||
# add '_REENT_SMALL' to CPPDEFINES when --specs=nano.specs has select
|
# add '_REENT_SMALL' to CPPDEFINES when --specs=nano.specs has select
|
||||||
if linker_newlib_nano_option is not None and linker_newlib_nano_option.get('value') == 'true' and '_REENT_SMALL' not in CPPDEFINES:
|
if linker_newlib_nano_option is not None and linker_newlib_nano_option.get('value') == 'true' and '_REENT_SMALL' not in CPPDEFINES:
|
||||||
CPPDEFINES += ['_REENT_SMALL']
|
CPPDEFINES += ['_REENT_SMALL']
|
||||||
|
@ -227,25 +239,25 @@ def HandleToolOption(tools, env, project, reset):
|
||||||
break
|
break
|
||||||
if find_ok is False:
|
if find_ok is False:
|
||||||
SubElement(option, 'listOptionValue', {'builtIn': 'false', 'value': rtt_pre_inc_item})
|
SubElement(option, 'listOptionValue', {'builtIn': 'false', 'value': rtt_pre_inc_item})
|
||||||
elif compile_defs_option is not None :
|
if len(compile_include_files_options) == 0:
|
||||||
option = compile_defs_option
|
for option in compile_defs_options:
|
||||||
defs = option.findall('listOptionValue')
|
defs = option.findall('listOptionValue')
|
||||||
project_defs = []
|
project_defs = []
|
||||||
for item in defs:
|
for item in defs:
|
||||||
if reset is True:
|
if reset is True:
|
||||||
# clean all old configuration
|
# clean all old configuration
|
||||||
option.remove(item)
|
option.remove(item)
|
||||||
|
else:
|
||||||
|
project_defs += [item.get('value')]
|
||||||
|
if len(project_defs) > 0:
|
||||||
|
cproject_defs = set(CPPDEFINES) - set(project_defs)
|
||||||
else:
|
else:
|
||||||
project_defs += [item.get('value')]
|
cproject_defs = CPPDEFINES
|
||||||
if len(project_defs) > 0:
|
|
||||||
cproject_defs = set(CPPDEFINES) - set(project_defs)
|
|
||||||
else:
|
|
||||||
cproject_defs = CPPDEFINES
|
|
||||||
|
|
||||||
# print('c.compiler.defs')
|
# print('c.compiler.defs')
|
||||||
cproject_defs = sorted(cproject_defs)
|
cproject_defs = sorted(cproject_defs)
|
||||||
for item in cproject_defs:
|
for item in cproject_defs:
|
||||||
SubElement(option, 'listOptionValue', {'builtIn': 'false', 'value': item})
|
SubElement(option, 'listOptionValue', {'builtIn': 'false', 'value': item})
|
||||||
|
|
||||||
# update linker script config
|
# update linker script config
|
||||||
if linker_scriptfile_option is not None :
|
if linker_scriptfile_option is not None :
|
||||||
|
|
Loading…
Reference in New Issue