1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
6 #include "cmConfigure.h" // IWYU pragma: keep
11 #include "cmLinkLineComputer.h"
13 class cmComputeLinkInformation;
14 class cmGeneratorTarget;
15 class cmLocalGenerator;
16 class cmOutputConverter;
17 class cmStateDirectory;
21 class cmLinkLineDeviceComputer : public cmLinkLineComputer
24 cmLinkLineDeviceComputer(cmOutputConverter* outputConverter,
25 cmStateDirectory const& stateDir);
26 ~cmLinkLineDeviceComputer() override;
28 cmLinkLineDeviceComputer(cmLinkLineDeviceComputer const&) = delete;
29 cmLinkLineDeviceComputer& operator=(cmLinkLineDeviceComputer const&) =
32 bool ComputeRequiresDeviceLinking(cmComputeLinkInformation& cli);
33 bool ComputeRequiresDeviceLinkingIPOFlag(cmComputeLinkInformation& cli);
35 void ComputeLinkLibraries(
36 cmComputeLinkInformation& cli, std::string const& stdLibString,
37 std::vector<BT<std::string>>& linkLibraries) override;
39 std::string GetLinkerLanguage(cmGeneratorTarget* target,
40 std::string const& config) override;
43 bool requireDeviceLinking(cmGeneratorTarget& target, cmLocalGenerator& lg,
44 const std::string& config);