1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
8 #include "cm_sys_stat.h"
10 #include "cmCPackGenerator.h"
12 class cmGlobalGenerator
;
17 /** \class cmCPackExternalGenerator
18 * \brief A generator for CPack External packaging tools
20 class cmCPackExternalGenerator
: public cmCPackGenerator
23 cmCPackTypeMacro(cmCPackExternalGenerator
, cmCPackGenerator
);
25 const char* GetOutputExtension() override
{ return ".json"; }
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
;
55 bool StagingEnabled() const;
57 class cmCPackExternalVersionGenerator
60 cmCPackExternalVersionGenerator(cmCPackExternalGenerator
* parent
);
62 virtual ~cmCPackExternalVersionGenerator() = default;
64 virtual int WriteToJSON(Json::Value
& root
);
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
79 using cmCPackExternalVersionGenerator::cmCPackExternalVersionGenerator
;
82 int GetVersionMajor() override
{ return 1; }
83 int GetVersionMinor() override
{ return 0; }
86 std::unique_ptr
<cmCPackExternalVersionGenerator
> Generator
;