CMake Nightly Date Stamp
[kiteware-cmake.git] / Source / CPack / cmCPackExternalGenerator.h
blobdfd13e8ff394f2a9fe0691eb9b448a267d64aaaf
1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
3 #pragma once
5 #include <memory>
6 #include <string>
8 #include "cm_sys_stat.h"
10 #include "cmCPackGenerator.h"
12 class cmGlobalGenerator;
13 namespace Json {
14 class Value;
17 /** \class cmCPackExternalGenerator
18 * \brief A generator for CPack External packaging tools
20 class cmCPackExternalGenerator : public cmCPackGenerator
22 public:
23 cmCPackTypeMacro(cmCPackExternalGenerator, cmCPackGenerator);
25 const char* GetOutputExtension() override { return ".json"; }
27 protected:
28 int InitializeInternal() override;
30 int PackageFiles() override;
32 bool SupportsComponentInstallation() const override;
34 int InstallProjectViaInstallCommands(
35 bool setDestDir, const std::string& tempInstallDirectory) override;
36 int InstallProjectViaInstallScript(
37 bool setDestDir, const std::string& tempInstallDirectory) override;
38 int InstallProjectViaInstalledDirectories(
39 bool setDestDir, const std::string& tempInstallDirectory,
40 const mode_t* default_dir_mode) override;
42 int RunPreinstallTarget(const std::string& installProjectName,
43 const std::string& installDirectory,
44 cmGlobalGenerator* globalGenerator,
45 const std::string& buildConfig) override;
46 int InstallCMakeProject(bool setDestDir, const std::string& installDirectory,
47 const std::string& baseTempInstallDirectory,
48 const mode_t* default_dir_mode,
49 const std::string& component, bool componentInstall,
50 const std::string& installSubDirectory,
51 const std::string& buildConfig,
52 std::string& absoluteDestFiles) override;
54 private:
55 bool StagingEnabled() const;
57 class cmCPackExternalVersionGenerator
59 public:
60 cmCPackExternalVersionGenerator(cmCPackExternalGenerator* parent);
62 virtual ~cmCPackExternalVersionGenerator() = default;
64 virtual int WriteToJSON(Json::Value& root);
66 protected:
67 virtual int GetVersionMajor() = 0;
68 virtual int GetVersionMinor() = 0;
70 int WriteVersion(Json::Value& root);
72 cmCPackExternalGenerator* Parent;
75 class cmCPackExternalVersion1Generator
76 : public cmCPackExternalVersionGenerator
78 public:
79 using cmCPackExternalVersionGenerator::cmCPackExternalVersionGenerator;
81 protected:
82 int GetVersionMajor() override { return 1; }
83 int GetVersionMinor() override { return 0; }
86 std::unique_ptr<cmCPackExternalVersionGenerator> Generator;