cmNinjaNormalTargetGenerator.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file LICENSE.rst or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include "cmConfigure.h" // IWYU pragma: keep
  5. #include <string>
  6. #include <vector>
  7. #include "cmGeneratorTarget.h"
  8. #include "cmNinjaTargetGenerator.h"
  9. class cmNinjaNormalTargetGenerator : public cmNinjaTargetGenerator
  10. {
  11. public:
  12. cmNinjaNormalTargetGenerator(cmGeneratorTarget* target);
  13. ~cmNinjaNormalTargetGenerator() override;
  14. void Generate(std::string const& config) override;
  15. private:
  16. std::string LanguageLinkerRule(std::string const& config) const;
  17. std::string LanguageLinkerDeviceRule(std::string const& config) const;
  18. std::string LanguageLinkerCudaDeviceRule(std::string const& config) const;
  19. std::string LanguageLinkerCudaDeviceCompileRule(
  20. std::string const& config) const;
  21. std::string LanguageLinkerCudaFatbinaryRule(std::string const& config) const;
  22. std::string TextStubsGeneratorRule(std::string const& config) const;
  23. bool CheckUseResponseFileForLibraries(std::string const& config) const;
  24. char const* GetVisibleTypeName() const;
  25. void WriteLanguagesRules(std::string const& config);
  26. void WriteLinkRule(bool useResponseFile, std::string const& config,
  27. std::vector<std::string> const& preLinkComments,
  28. std::vector<std::string> const& postBuildComments);
  29. void WriteDeviceLinkRules(std::string const& config);
  30. void WriteNvidiaDeviceLinkRule(bool useResponseFile,
  31. std::string const& config);
  32. void WriteLinkStatement(std::string const& config,
  33. std::string const& fileConfig, bool firstForConfig);
  34. void WriteDeviceLinkStatement(std::string const& config,
  35. std::string const& fileConfig,
  36. bool firstForConfig);
  37. void WriteDeviceLinkStatements(std::string const& config,
  38. std::vector<std::string> const& architectures,
  39. std::string const& output);
  40. void WriteNvidiaDeviceLinkStatement(std::string const& config,
  41. std::string const& fileConfig,
  42. std::string const& outputDir,
  43. std::string const& output);
  44. void WriteObjectLibStatement(std::string const& config);
  45. void WriteCxxModuleLibraryStatement(std::string const& config,
  46. std::string const& fileConfig,
  47. bool firstForConfig);
  48. std::vector<std::string> ComputeLinkCmd(std::string const& config);
  49. std::vector<std::string> ComputeDeviceLinkCmd();
  50. // Target name info.
  51. cmGeneratorTarget::Names TargetNames(std::string const& config) const;
  52. std::string TargetLinkLanguage(std::string const& config) const;
  53. std::string DeviceLinkObject;
  54. };