| 702 | .Bind("SYSTEM_LIBRARY_DIRS"_s, &ExtractArguments::SystemLibraryDirs); |
| 703 | |
| 704 | bool HandleExtractCommand(std::vector<std::string> const& args, |
| 705 | cmExecutionStatus& status) |
| 706 | { |
| 707 | |
| 708 | std::vector<std::string> unparsed; |
| 709 | auto parsedArgs = ExtractParser.Parse(args, &unparsed); |
| 710 | auto maybeEnv = HandleCommon(parsedArgs, status); |
| 711 | |
| 712 | if (!maybeEnv) { |
| 713 | return !parsedArgs.Required; |
| 714 | } |
| 715 | auto& pcEnv = maybeEnv->first; |
| 716 | auto& imEnv = maybeEnv->second; |
| 717 | |
| 718 | auto maybePackage = |
| 719 | ImportPackage(*parsedArgs.Package, parsedArgs.Version, imEnv, pcEnv); |
| 720 | if (!maybePackage) { |
| 721 | return !parsedArgs.Required; |
| 722 | } |
| 723 | auto& package = *maybePackage; |
| 724 | |
| 725 | if (parsedArgs.AllowSystemIncludes) { |
| 726 | pcEnv.AllowSysCflags = *parsedArgs.AllowSystemIncludes; |
| 727 | } |
| 728 | |
| 729 | if (parsedArgs.AllowSystemLibs) { |
| 730 | pcEnv.AllowSysLibs = *parsedArgs.AllowSystemLibs; |
| 731 | } |
| 732 | |
| 733 | if (parsedArgs.SystemIncludeDirs) { |
| 734 | pcEnv.SysCflags = *parsedArgs.SystemIncludeDirs; |
| 735 | } |
| 736 | |
| 737 | if (parsedArgs.SystemLibraryDirs) { |
| 738 | pcEnv.SysLibs = *parsedArgs.SystemLibraryDirs; |
| 739 | } |
| 740 | |
| 741 | auto& mf = status.GetMakefile(); |
| 742 | mf.AddDefinition("CMAKE_PKG_CONFIG_NAME", package.Name()); |
| 743 | mf.AddDefinition("CMAKE_PKG_CONFIG_DESCRIPTION", package.Description()); |
| 744 | mf.AddDefinition("CMAKE_PKG_CONFIG_VERSION", package.Version()); |
| 745 | |
| 746 | auto make_list = [&](char const* def, |
| 747 | std::vector<cmPkgConfigDependency> const& deps) { |
| 748 | std::vector<cm::string_view> vec; |
| 749 | vec.reserve(deps.size()); |
| 750 | |
| 751 | for (auto const& dep : deps) { |
| 752 | vec.emplace_back(dep.Name); |
| 753 | } |
| 754 | |
| 755 | mf.AddDefinition(def, cmList::to_string(vec)); |
| 756 | }; |
| 757 | |
| 758 | make_list("CMAKE_PKG_CONFIG_CONFLICTS", package.Conflicts()); |
| 759 | make_list("CMAKE_PKG_CONFIG_PROVIDES", package.Provides()); |
| 760 | make_list("CMAKE_PKG_CONFIG_REQUIRES", package.Requires()); |
| 761 | make_list("CMAKE_PKG_CONFIG_REQUIRES_PRIVATE", package.Requires(true)); |
nothing calls this directly
no test coverage detected
searching dependent graphs…