cmLinkLineDeviceComputer.h 1.68 KB
Newer Older
1 2 3 4 5 6
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */

#ifndef cmLinkLineDeviceComputer_h
#define cmLinkLineDeviceComputer_h

7
#include "cmConfigure.h" // IWYU pragma: keep
8 9 10

#include <string>

11
#include "cmLinkLineComputer.h"
12 13 14

class cmComputeLinkInformation;
class cmGeneratorTarget;
15
class cmGlobalNinjaGenerator;
16 17
class cmOutputConverter;
class cmStateDirectory;
18 19 20 21 22

class cmLinkLineDeviceComputer : public cmLinkLineComputer
{
public:
  cmLinkLineDeviceComputer(cmOutputConverter* outputConverter,
23
                           cmStateDirectory const& stateDir);
24
  ~cmLinkLineDeviceComputer() override;
25

wahikihiki's avatar
wahikihiki committed
26 27 28 29
  cmLinkLineDeviceComputer(cmLinkLineDeviceComputer const&) = delete;
  cmLinkLineDeviceComputer& operator=(cmLinkLineDeviceComputer const&) =
    delete;

30
  std::string ComputeLinkLibraries(cmComputeLinkInformation& cli,
31
                                   std::string const& stdLibString) override;
32 33

  std::string GetLinkerLanguage(cmGeneratorTarget* target,
34
                                std::string const& config) override;
35 36 37 38 39 40
};

class cmNinjaLinkLineDeviceComputer : public cmLinkLineDeviceComputer
{
public:
  cmNinjaLinkLineDeviceComputer(cmOutputConverter* outputConverter,
41
                                cmStateDirectory const& stateDir,
42 43
                                cmGlobalNinjaGenerator const* gg);

wahikihiki's avatar
wahikihiki committed
44 45 46 47
  cmNinjaLinkLineDeviceComputer(cmNinjaLinkLineDeviceComputer const&) = delete;
  cmNinjaLinkLineDeviceComputer& operator=(
    cmNinjaLinkLineDeviceComputer const&) = delete;

48
  std::string ConvertToLinkReference(std::string const& input) const override;
49 50 51 52 53 54

private:
  cmGlobalNinjaGenerator const* GG;
};

#endif