Add duplicate detection to project compilation

pull/2854/head
Jimmy Brisson 2016-09-28 13:16:22 -05:00
parent 0abd5191e8
commit a85a384973
3 changed files with 27 additions and 1 deletions

View File

@ -20,7 +20,8 @@
"fpu": "double",
"public": true,
"default_build": "standard",
"release": true
"release": true,
"supported_toolchains": ["ARM"]
},
"CM4_UARM": {
"inherits": ["Target"],

View File

@ -452,6 +452,8 @@ def build_project(src_paths, build_path, target, toolchain_name,
# Link Program
res, _ = toolchain.link_program(resources, build_path, name)
resources.detect_duplicates()
if report != None:
end = time()
cur_result["elapsed_time"] = end - start

View File

@ -120,6 +120,29 @@ class Resources:
return self
def detect_duplicates(self):
dupe_dict = dict()
for filename in self.s_sources + self.c_sources + self.cpp_sources:
objname, _ = splitext(basename(filename))
dupe_dict.setdefault(objname, [])
dupe_dict[objname].append(filename)
for objname, filenames in dupe_dict.iteritems():
if len(filenames) > 1:
print "[ERROR] Object file %s.o is not unique!"\
" It could be made from:" % objname
print columnate(filenames)
dupe_headers = dict()
for filename in self.headers:
headername = basename(filename)
dupe_headers.setdefault(headername, [])
dupe_headers[headername].append(headername)
for headername, locations in dupe_headers.iteritems():
if len(filenames) > 1:
print "[ERROR] Header file %s is not unique! It could be:" %\
headername
print columnate(locations)
def relative_to(self, base, dot=False):
for field in ['inc_dirs', 'headers', 's_sources', 'c_sources',
'cpp_sources', 'lib_dirs', 'objects', 'libraries',