cmCPackExternalGenerator.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 <memory>
  5. #include <string>
  6. #include "cm_sys_stat.h"
  7. #include "cmCPackGenerator.h"
  8. namespace Json {
  9. class Value;
  10. }
  11. /** \class cmCPackExternalGenerator
  12. * \brief A generator for CPack External packaging tools
  13. */
  14. class cmCPackExternalGenerator : public cmCPackGenerator
  15. {
  16. public:
  17. cmCPackTypeMacro(cmCPackExternalGenerator, cmCPackGenerator);
  18. char const* GetOutputExtension() override { return ".json"; }
  19. protected:
  20. int InitializeInternal() override;
  21. int PackageFiles() override;
  22. bool SupportsComponentInstallation() const override;
  23. int InstallProjectViaInstallCommands(
  24. bool setDestDir, std::string const& tempInstallDirectory) override;
  25. int InstallProjectViaInstallScript(
  26. bool setDestDir, std::string const& tempInstallDirectory) override;
  27. int InstallProjectViaInstalledDirectories(
  28. bool setDestDir, std::string const& tempInstallDirectory,
  29. mode_t const* default_dir_mode) override;
  30. int RunPreinstallTarget(std::string const& installProjectName,
  31. std::string const& installDirectory,
  32. cmGlobalGenerator* globalGenerator,
  33. std::string const& buildConfig) override;
  34. int InstallCMakeProject(bool setDestDir, std::string const& installDirectory,
  35. std::string const& baseTempInstallDirectory,
  36. mode_t const* default_dir_mode,
  37. std::string const& component, bool componentInstall,
  38. std::string const& installSubDirectory,
  39. std::string const& buildConfig,
  40. std::string& absoluteDestFiles) override;
  41. private:
  42. bool StagingEnabled() const;
  43. class cmCPackExternalVersionGenerator
  44. {
  45. public:
  46. cmCPackExternalVersionGenerator(cmCPackExternalGenerator* parent);
  47. virtual ~cmCPackExternalVersionGenerator() = default;
  48. virtual int WriteToJSON(Json::Value& root);
  49. protected:
  50. virtual int GetVersionMajor() = 0;
  51. virtual int GetVersionMinor() = 0;
  52. int WriteVersion(Json::Value& root);
  53. cmCPackExternalGenerator* Parent;
  54. };
  55. class cmCPackExternalVersion1Generator
  56. : public cmCPackExternalVersionGenerator
  57. {
  58. public:
  59. using cmCPackExternalVersionGenerator::cmCPackExternalVersionGenerator;
  60. protected:
  61. int GetVersionMajor() override { return 1; }
  62. int GetVersionMinor() override { return 0; }
  63. };
  64. std::unique_ptr<cmCPackExternalVersionGenerator> Generator;
  65. };