cmCPackExternalGenerator.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 cmCPackExternalGenerator_h
  4. #define cmCPackExternalGenerator_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 cmCPackExternalGenerator
  14. * \brief A generator for CPack External packaging tools
  15. */
  16. class cmCPackExternalGenerator : public cmCPackGenerator
  17. {
  18. public:
  19. cmCPackTypeMacro(cmCPackExternalGenerator, 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. bool StagingEnabled() const;
  45. class cmCPackExternalVersionGenerator
  46. {
  47. public:
  48. cmCPackExternalVersionGenerator(cmCPackExternalGenerator* parent);
  49. virtual ~cmCPackExternalVersionGenerator() = default;
  50. virtual int WriteToJSON(Json::Value& root);
  51. protected:
  52. virtual int GetVersionMajor() = 0;
  53. virtual int GetVersionMinor() = 0;
  54. int WriteVersion(Json::Value& root);
  55. cmCPackExternalGenerator* Parent;
  56. };
  57. class cmCPackExternalVersion1Generator
  58. : public cmCPackExternalVersionGenerator
  59. {
  60. public:
  61. using cmCPackExternalVersionGenerator::cmCPackExternalVersionGenerator;
  62. protected:
  63. int GetVersionMajor() override { return 1; }
  64. int GetVersionMinor() override { return 0; }
  65. };
  66. std::unique_ptr<cmCPackExternalVersionGenerator> Generator;
  67. };
  68. #endif