summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/building.py4
-rw-r--r--tools/eclipse.py51
2 files changed, 40 insertions, 15 deletions
diff --git a/tools/building.py b/tools/building.py
index 8d461102bc..65af794434 100644
--- a/tools/building.py
+++ b/tools/building.py
@@ -169,12 +169,12 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
AddOption('--project-path',
dest = 'project-path',
type = 'string',
- default = False,
+ default = None,
help = 'set dist-ide project output path')
AddOption('--project-name',
dest = 'project-name',
type = 'string',
- default = False,
+ default = None,
help = 'set project name')
AddOption('--reset-project-config',
dest = 'reset-project-config',
diff --git a/tools/eclipse.py b/tools/eclipse.py
index 191cfc2b3a..daac72befe 100644
--- a/tools/eclipse.py
+++ b/tools/eclipse.py
@@ -399,7 +399,34 @@ def RelativeProjectPath(env, path):
return path
-def UpdateCproject(env, project, excluding, reset):
+def HandleExcludingOption(entry, sourceEntries, excluding):
+ old_excluding = []
+ if entry != None:
+ old_excluding = entry.get('excluding').split('|')
+ sourceEntries.remove(entry)
+
+ value = ''
+ for item in old_excluding:
+ if item.startswith('//') :
+ old_excluding.remove(item)
+ else :
+ if value == '':
+ value = item
+ else:
+ value += '|' + item
+
+ for item in excluding:
+ # add special excluding path prefix for RT-Thread
+ item = '//' + item
+ if value == '':
+ value = item
+ else:
+ value += '|' + item
+
+ SubElement(sourceEntries, 'entry', {'excluding': value, 'flags': 'VALUE_WORKSPACE_PATH|RESOLVED', 'kind':'sourcePath', 'name':""})
+
+
+def UpdateCproject(env, project, excluding, reset, prj_name):
excluding = sorted(excluding)
cproject = etree.parse('.cproject')
@@ -412,17 +439,15 @@ def UpdateCproject(env, project, excluding, reset):
sourceEntries = cconfiguration.find('storageModule/configuration/sourceEntries')
entry = sourceEntries.find('entry')
- if entry != None:
- sourceEntries.remove(entry)
-
- value = ''
- for item in excluding:
- if value == '':
- value = item
- else:
- value += '|' + item
-
- SubElement(sourceEntries, 'entry', {'excluding': value, 'flags': 'VALUE_WORKSPACE_PATH|RESOLVED', 'kind':'sourcePath', 'name':""})
+ HandleExcludingOption(entry, sourceEntries, excluding)
+ # update refreshScope
+ if prj_name:
+ prj_name = '/' + prj_name
+ configurations = root.findall('storageModule/configuration')
+ for configuration in configurations:
+ resource = configuration.find('resource')
+ configuration.remove(resource)
+ SubElement(configuration, 'resource', {'resourceType': "PROJECT", 'workspacePath': prj_name})
# write back to .cproject
out = open('.cproject', 'w')
@@ -451,7 +476,7 @@ def TargetEclipse(env, reset = False, prj_name = None):
excluding = GenExcluding(env, project)
# update the project configuration on '.cproject' file
- UpdateCproject(env, project, excluding, reset)
+ UpdateCproject(env, project, excluding, reset, prj_name)
print('done!')