| 852 | } |
| 853 | |
| 854 | void cmFastbuildNormalTargetGenerator::Generate() |
| 855 | { |
| 856 | this->GeneratorTarget->CheckCxxModuleStatus(Config); |
| 857 | |
| 858 | FastbuildTarget fastbuildTarget; |
| 859 | auto const addUtilDepToTarget = [&fastbuildTarget](std::string depName) { |
| 860 | FastbuildTargetDep dep{ depName }; |
| 861 | dep.Type = FastbuildTargetDepType::UTIL; |
| 862 | fastbuildTarget.PreBuildDependencies.emplace(std::move(dep)); |
| 863 | }; |
| 864 | |
| 865 | fastbuildTarget.Name = GetTargetName(); |
| 866 | fastbuildTarget.BaseName = this->GeneratorTarget->GetName(); |
| 867 | |
| 868 | LogMessage("<-------------->"); |
| 869 | LogMessage("Generate target: " + fastbuildTarget.Name); |
| 870 | LogMessage("Config: " + Config); |
| 871 | |
| 872 | LogMessage("Deps: "); |
| 873 | for (cmTargetDepend const& dep : TargetDirectDependencies) { |
| 874 | auto const tname = dep->GetName(); |
| 875 | LogMessage(tname); |
| 876 | FastbuildTargetDep targetDep{ tname }; |
| 877 | if (dep->GetType() == cmStateEnums::OBJECT_LIBRARY) { |
| 878 | targetDep.Type = FastbuildTargetDepType::ORDER_ONLY; |
| 879 | } |
| 880 | fastbuildTarget.PreBuildDependencies.emplace(std::move(targetDep)); |
| 881 | } |
| 882 | |
| 883 | ComputePaths(fastbuildTarget); |
| 884 | AddCompilerLaunchersForLanguages(); |
| 885 | AddLinkerLauncher(); |
| 886 | AddCMakeLauncher(); |
| 887 | |
| 888 | for (auto& cc : GenerateCommands(FastbuildBuildStep::PRE_BUILD).Nodes) { |
| 889 | fastbuildTarget.PreBuildExecNodes.PreBuildDependencies.emplace(cc.Name); |
| 890 | addUtilDepToTarget(cc.Name); |
| 891 | this->GetGlobalGenerator()->AddTarget(std::move(cc)); |
| 892 | } |
| 893 | for (auto& cc : GenerateCommands(FastbuildBuildStep::PRE_LINK).Nodes) { |
| 894 | cc.PreBuildDependencies.emplace(fastbuildTarget.Name + |
| 895 | FASTBUILD_DEPS_ARTIFACTS_ALIAS_POSTFIX); |
| 896 | fastbuildTarget.PreLinkExecNodes.Nodes.emplace_back(std::move(cc)); |
| 897 | } |
| 898 | for (auto& cc : GenerateCommands(FastbuildBuildStep::REST).Nodes) { |
| 899 | fastbuildTarget.ExecNodes.PreBuildDependencies.emplace(cc.Name); |
| 900 | this->GetGlobalGenerator()->AddTarget(std::move(cc)); |
| 901 | } |
| 902 | for (auto& cc : GenerateCommands(FastbuildBuildStep::POST_BUILD).Nodes) { |
| 903 | fastbuildTarget.PostBuildExecNodes.Alias.PreBuildDependencies.emplace( |
| 904 | cc.Name); |
| 905 | fastbuildTarget.PostBuildExecNodes.Nodes.emplace_back(std::move(cc)); |
| 906 | } |
| 907 | |
| 908 | GenerateObjects(fastbuildTarget); |
| 909 | |
| 910 | std::vector<std::string> objectDepends; |
| 911 | AddObjectDependencies(fastbuildTarget, objectDepends); |
nothing calls this directly
no test coverage detected