1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
10 #include "cmGeneratorTarget.h"
11 #include "cmNinjaTargetGenerator.h"
13 class cmNinjaNormalTargetGenerator : public cmNinjaTargetGenerator
16 cmNinjaNormalTargetGenerator(cmGeneratorTarget* target);
17 ~cmNinjaNormalTargetGenerator() override;
19 void Generate(const std::string& config) override;
22 std::string LanguageLinkerRule(const std::string& config) const;
23 std::string LanguageLinkerDeviceRule(const std::string& config) const;
24 std::string LanguageLinkerCudaDeviceRule(const std::string& config) const;
25 std::string LanguageLinkerCudaDeviceCompileRule(
26 const std::string& config) const;
27 std::string LanguageLinkerCudaFatbinaryRule(const std::string& config) const;
29 const char* GetVisibleTypeName() const;
30 void WriteLanguagesRules(const std::string& config);
32 void WriteLinkRule(bool useResponseFile, const std::string& config);
33 void WriteDeviceLinkRules(const std::string& config);
34 void WriteNvidiaDeviceLinkRule(bool useResponseFile,
35 const std::string& config);
37 void WriteLinkStatement(const std::string& config,
38 const std::string& fileConfig, bool firstForConfig);
39 void WriteDeviceLinkStatement(const std::string& config,
40 const std::string& fileConfig,
42 void WriteDeviceLinkStatements(const std::string& config,
43 const std::vector<std::string>& architectures,
44 const std::string& output);
45 void WriteNvidiaDeviceLinkStatement(const std::string& config,
46 const std::string& fileConfig,
47 const std::string& outputDir,
48 const std::string& output);
50 void WriteObjectLibStatement(const std::string& config);
52 std::vector<std::string> ComputeLinkCmd(const std::string& config);
53 std::vector<std::string> ComputeDeviceLinkCmd();
56 cmGeneratorTarget::Names TargetNames(const std::string& config) const;
57 std::string TargetLinkLanguage(const std::string& config) const;
58 std::string DeviceLinkObject;