Skip to content

Commit a85a384

Browse files
committed
Add duplicate detection to project compilation
1 parent 0abd519 commit a85a384

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

hal/targets.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"fpu": "double",
2121
"public": true,
2222
"default_build": "standard",
23-
"release": true
23+
"release": true,
24+
"supported_toolchains": ["ARM"]
2425
},
2526
"CM4_UARM": {
2627
"inherits": ["Target"],

tools/build_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,8 @@ def build_project(src_paths, build_path, target, toolchain_name,
452452
# Link Program
453453
res, _ = toolchain.link_program(resources, build_path, name)
454454

455+
resources.detect_duplicates()
456+
455457
if report != None:
456458
end = time()
457459
cur_result["elapsed_time"] = end - start

tools/toolchains/__init__.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,29 @@ def add(self, resources):
120120

121121
return self
122122

123+
def detect_duplicates(self):
124+
dupe_dict = dict()
125+
for filename in self.s_sources + self.c_sources + self.cpp_sources:
126+
objname, _ = splitext(basename(filename))
127+
dupe_dict.setdefault(objname, [])
128+
dupe_dict[objname].append(filename)
129+
for objname, filenames in dupe_dict.iteritems():
130+
if len(filenames) > 1:
131+
print "[ERROR] Object file %s.o is not unique!"\
132+
" It could be made from:" % objname
133+
print columnate(filenames)
134+
dupe_headers = dict()
135+
for filename in self.headers:
136+
headername = basename(filename)
137+
dupe_headers.setdefault(headername, [])
138+
dupe_headers[headername].append(headername)
139+
for headername, locations in dupe_headers.iteritems():
140+
if len(filenames) > 1:
141+
print "[ERROR] Header file %s is not unique! It could be:" %\
142+
headername
143+
print columnate(locations)
144+
145+
123146
def relative_to(self, base, dot=False):
124147
for field in ['inc_dirs', 'headers', 's_sources', 'c_sources',
125148
'cpp_sources', 'lib_dirs', 'objects', 'libraries',

0 commit comments

Comments
 (0)