@@ -120,27 +120,35 @@ def add(self, resources):
120
120
121
121
return self
122
122
123
- def detect_duplicates (self ):
124
- dupe_dict = dict ()
123
+ def _collect_duplicates (self , dupe_dict , dupe_headers ):
125
124
for filename in self .s_sources + self .c_sources + self .cpp_sources :
126
125
objname , _ = splitext (basename (filename ))
127
- dupe_dict .setdefault (objname , [])
128
- dupe_dict [objname ].append (filename )
126
+ dupe_dict .setdefault (objname , set ())
127
+ dupe_dict [objname ] |= set ([filename ])
128
+ for filename in self .headers :
129
+ headername = basename (filename )
130
+ dupe_headers .setdefault (headername , set ())
131
+ dupe_headers [headername ] |= set ([headername ])
132
+ for res in self .features .values ():
133
+ res ._collect_duplicates (dupe_dict , dupe_headers )
134
+ return dupe_dict , dupe_headers
135
+
136
+ def detect_duplicates (self ):
137
+ count = 0
138
+ dupe_dict , dupe_headers = self ._collect_duplicates (dict (), dict ())
129
139
for objname , filenames in dupe_dict .iteritems ():
130
140
if len (filenames ) > 1 :
141
+ count += 1
131
142
print "[ERROR] Object file %s.o is not unique!" \
132
143
" It could be made from:" % objname
133
144
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
145
for headername , locations in dupe_headers .iteritems ():
140
- if len (filenames ) > 1 :
146
+ if len (locations ) > 1 :
147
+ count += 1
141
148
print "[ERROR] Header file %s is not unique! It could be:" % \
142
149
headername
143
150
print columnate (locations )
151
+ return count
144
152
145
153
146
154
def relative_to (self , base , dot = False ):
0 commit comments