| 3450 | } |
| 3451 | |
| 3452 | bool cmFindPackageCommand::SearchFrameworkPrefix(std::string const& prefix) |
| 3453 | { |
| 3454 | assert(!prefix.empty() && prefix.back() == '/'); |
| 3455 | |
| 3456 | auto searchFn = [this](std::string const& fullPath, |
| 3457 | PackageDescriptionType type) -> bool { |
| 3458 | return this->SearchDirectory(fullPath, type); |
| 3459 | }; |
| 3460 | |
| 3461 | auto iCMakeGen = cmCaseInsensitiveDirectoryListGenerator{ "cmake"_s }; |
| 3462 | auto iCpsGen = cmCaseInsensitiveDirectoryListGenerator{ "cps"_s }; |
| 3463 | auto fwGen = |
| 3464 | cmMacProjectDirectoryListGenerator{ &this->Names, ".framework"_s }; |
| 3465 | auto rGen = cmAppendPathSegmentGenerator{ "Resources"_s }; |
| 3466 | auto vGen = cmAppendPathSegmentGenerator{ "Versions"_s }; |
| 3467 | auto anyGen = |
| 3468 | cmAnyDirectoryListGenerator{ this->SortOrder, this->SortDirection }; |
| 3469 | |
| 3470 | // <prefix>/Foo.framework/Versions/*/Resources/CPS/ |
| 3471 | if (TryGeneratedPaths(searchFn, pdt::Cps, prefix, fwGen, vGen, anyGen, rGen, |
| 3472 | iCpsGen)) { |
| 3473 | return true; |
| 3474 | } |
| 3475 | |
| 3476 | // <prefix>/Foo.framework/Resources/CPS/ |
| 3477 | if (TryGeneratedPaths(searchFn, pdt::Cps, prefix, fwGen, rGen, iCpsGen)) { |
| 3478 | return true; |
| 3479 | } |
| 3480 | |
| 3481 | // <prefix>/Foo.framework/Resources/ |
| 3482 | if (TryGeneratedPaths(searchFn, pdt::CMake, prefix, fwGen, rGen)) { |
| 3483 | return true; |
| 3484 | } |
| 3485 | |
| 3486 | // <prefix>/Foo.framework/Resources/CMake/ |
| 3487 | if (TryGeneratedPaths(searchFn, pdt::CMake, prefix, fwGen, rGen, |
| 3488 | iCMakeGen)) { |
| 3489 | return true; |
| 3490 | } |
| 3491 | |
| 3492 | // <prefix>/Foo.framework/Versions/*/Resources/ |
| 3493 | if (TryGeneratedPaths(searchFn, pdt::CMake, prefix, fwGen, vGen, anyGen, |
| 3494 | rGen)) { |
| 3495 | return true; |
| 3496 | } |
| 3497 | |
| 3498 | // <prefix>/Foo.framework/Versions/*/Resources/CMake/ |
| 3499 | return TryGeneratedPaths(searchFn, pdt::CMake, prefix, fwGen, vGen, anyGen, |
| 3500 | rGen, iCMakeGen); |
| 3501 | } |
| 3502 | |
| 3503 | bool cmFindPackageCommand::SearchAppBundlePrefix(std::string const& prefix) |
| 3504 | { |
no test coverage detected