cmCPackExtGenerator.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmCPackExtGenerator_h
  4. #define cmCPackExtGenerator_h
  5. #include "cmCPackGenerator.h"
  6. #include "cm_sys_stat.h"
  7. #include <memory>
  8. #include <string>
  9. class cmGlobalGenerator;
  10. namespace Json {
  11. class Value;
  12. }
  13. /** \class cmCPackExtGenerator
  14. * \brief A generator for CPack External packaging tools
  15. */
  16. class cmCPackExtGenerator : public cmCPackGenerator
  17. {
  18. public:
  19. cmCPackTypeMacro(cmCPackExtGenerator, cmCPackGenerator);
  20. const char* GetOutputExtension() override { return ".json"; }
  21. protected:
  22. int InitializeInternal() override;
  23. int PackageFiles() override;
  24. bool SupportsComponentInstallation() const override;
  25. int InstallProjectViaInstallCommands(
  26. bool setDestDir, const std::string& tempInstallDirectory) override;
  27. int InstallProjectViaInstallScript(
  28. bool setDestDir, const std::string& tempInstallDirectory) override;
  29. int InstallProjectViaInstalledDirectories(
  30. bool setDestDir, const std::string& tempInstallDirectory,
  31. const mode_t* default_dir_mode) override;
  32. int RunPreinstallTarget(const std::string& installProjectName,
  33. const std::string& installDirectory,
  34. cmGlobalGenerator* globalGenerator,
  35. const std::string& buildConfig) override;
  36. int InstallCMakeProject(bool setDestDir, const std::string& installDirectory,
  37. const std::string& baseTempInstallDirectory,
  38. const mode_t* default_dir_mode,
  39. const std::string& component, bool componentInstall,
  40. const std::string& installSubDirectory,
  41. const std::string& buildConfig,
  42. std::string& absoluteDestFiles) override;
  43. private:
  44. class cmCPackExtVersionGenerator
  45. {
  46. public:
  47. cmCPackExtVersionGenerator(cmCPackExtGenerator* parent);
  48. virtual ~cmCPackExtVersionGenerator() = default;
  49. virtual int WriteToJSON(Json::Value& root);
  50. protected:
  51. virtual int GetVersionMajor() = 0;
  52. virtual int GetVersionMinor() = 0;
  53. int WriteVersion(Json::Value& root);
  54. cmCPackExtGenerator* Parent;
  55. };
  56. class cmCPackExtVersion1Generator : public cmCPackExtVersionGenerator
  57. {
  58. public:
  59. using cmCPackExtVersionGenerator::cmCPackExtVersionGenerator;
  60. protected:
  61. int GetVersionMajor() override { return 1; }
  62. int GetVersionMinor() override { return 0; }
  63. };
  64. std::unique_ptr<cmCPackExtVersionGenerator> Generator;
  65. };
  66. #endif