| 425 | }; |
| 426 | |
| 427 | void cmOrderDirectories::FindConflicts() |
| 428 | { |
| 429 | // Allocate the conflict graph. |
| 430 | this->ConflictGraph.resize(this->OriginalDirectories.size()); |
| 431 | this->DirectoryVisited.resize(this->OriginalDirectories.size(), 0); |
| 432 | |
| 433 | // Find directories conflicting with each entry. |
| 434 | for (unsigned int i = 0; i < this->ConstraintEntries.size(); ++i) { |
| 435 | this->ConstraintEntries[i]->FindConflicts(i); |
| 436 | } |
| 437 | |
| 438 | // Clean up the conflict graph representation. |
| 439 | for (ConflictList& cl : this->ConflictGraph) { |
| 440 | // Sort the outgoing edges for each graph node so that the |
| 441 | // original order will be preserved as much as possible. |
| 442 | std::sort(cl.begin(), cl.end()); |
| 443 | |
| 444 | // Make the edge list unique so cycle detection will be reliable. |
| 445 | auto last = std::unique(cl.begin(), cl.end(), cmOrderDirectoriesCompare()); |
| 446 | cl.erase(last, cl.end()); |
| 447 | } |
| 448 | |
| 449 | // Check items in implicit link directories. |
| 450 | this->FindImplicitConflicts(); |
| 451 | } |
| 452 | |
| 453 | void cmOrderDirectories::FindImplicitConflicts() |
| 454 | { |
no test coverage detected