@@ -58,36 +58,26 @@ def generate(self):
58
58
# get all source files including headers, adding headers allows IDEs to detect which files
59
59
# belong to the project, otherwise headers may be greyed out and not work with inspection
60
60
# (that is true for CLion and definitely for Visual Code)
61
- allSourceFiles = set (self .resources .c_sources +
62
- self .resources .cpp_sources +
63
- self .resources .s_sources +
64
- self .resources .headers )
65
-
66
- # create a list of dependencies (mbed add ...)
67
- dependencies = [l [:- 4 ] for l in self .resources .lib_refs ]
68
- # separate the individual dependency source files into a map with the dep name as key and an array if files
69
- depSources = {re .sub (r'^[.]/' , '' , l ).replace ('/' , '_' ):
70
- sorted ([f for f in allSourceFiles if f .startswith (l )]) for l in dependencies }
71
- # delete dependencies that have no source files (may happen if a sub-dependency is ignored by .mbedignore)
72
- depSources = {k : v for k , v in depSources .items () if len (v ) != 0 }
73
-
74
- # remove all source files that ended up being part of one of the dependencies
75
- srcs = allSourceFiles
76
- for dep in depSources .values ():
77
- srcs .difference_update (dep )
61
+ srcs = set (self .resources .c_sources +
62
+ self .resources .cpp_sources +
63
+ self .resources .s_sources +
64
+ self .resources .headers )
65
+ srcs = [re .sub (r'^[.]/' , '' , f ) for f in srcs ]
78
66
79
67
# additional libraries
80
68
libraries = [self .prepare_lib (basename (lib )) for lib in self .resources .libraries ]
81
69
sys_libs = [self .prepare_sys_lib (lib ) for lib in self .toolchain .sys_libs ]
82
70
71
+ # sort includes reverse, so the deepest dir comes first (ensures short includes)
72
+ includes = sorted ([re .sub (r'^[.]/' , '' , l ) for l in self .resources .inc_dirs ], reverse = True )
73
+
83
74
ctx = {
84
75
'name' : self .project_name ,
85
76
'target' : self .target ,
86
77
'sources' : sorted (srcs ),
87
- 'dependencies' : depSources ,
88
78
'libraries' : libraries ,
89
79
'ld_sys_libs' : sys_libs ,
90
- 'include_paths' : sorted ( list ( set ( self . resources . inc_dirs ))) ,
80
+ 'include_paths' : includes ,
91
81
'library_paths' : sorted ([re .sub (r'^[.]/' , '' , l ) for l in self .resources .lib_dirs ]),
92
82
'linker_script' : self .resources .linker_script ,
93
83
'hex_files' : self .resources .hex_files ,
@@ -180,7 +170,6 @@ def build(project_name, log_name="build_log.txt", cleanup=True):
180
170
if exists ('BUILD' ):
181
171
shutil .rmtree ('BUILD' )
182
172
183
-
184
173
if ret_code != 0 :
185
174
# Seems like something went wrong.
186
175
return - 1
0 commit comments