1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2 file Copyright.txt or https://cmake.org/licensing for details. */ 3 4 #pragma once 5 6 #include "cmConfigure.h" // IWYU pragma: keep 7 8 #include <string> 9 #include <vector> 10 11 #include "cmLinkLineComputer.h" 12 13 class cmComputeLinkInformation; 14 class cmGeneratorTarget; 15 class cmLocalGenerator; 16 class cmOutputConverter; 17 class cmStateDirectory; 18 template <typename T> 19 class BT; 20 21 class cmLinkLineDeviceComputer : public cmLinkLineComputer 22 { 23 public: 24 cmLinkLineDeviceComputer(cmOutputConverter* outputConverter, 25 cmStateDirectory const& stateDir); 26 ~cmLinkLineDeviceComputer() override; 27 28 cmLinkLineDeviceComputer(cmLinkLineDeviceComputer const&) = delete; 29 cmLinkLineDeviceComputer& operator=(cmLinkLineDeviceComputer const&) = 30 delete; 31 32 bool ComputeRequiresDeviceLinking(cmComputeLinkInformation& cli); 33 34 void ComputeLinkLibraries( 35 cmComputeLinkInformation& cli, std::string const& stdLibString, 36 std::vector<BT<std::string>>& linkLibraries) override; 37 38 std::string GetLinkerLanguage(cmGeneratorTarget* target, 39 std::string const& config) override; 40 }; 41 42 bool requireDeviceLinking(cmGeneratorTarget& target, cmLocalGenerator& lg, 43 const std::string& config); 44