123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #ifndef cmCPackRPMGenerator_h
- #define cmCPackRPMGenerator_h
- #include "cmConfigure.h" // IWYU pragma: keep
- #include "cmCPackGenerator.h"
- #include <string>
- /** \class cmCPackRPMGenerator
- * \brief A generator for RPM packages
- * The idea of the CPack RPM generator is to use
- * as minimal C++ code as possible.
- * Ideally the C++ part of the CPack RPM generator
- * will only 'execute' (aka ->ReadListFile) several
- * CMake macros files.
- */
- class cmCPackRPMGenerator : public cmCPackGenerator
- {
- public:
- cmCPackTypeMacro(cmCPackRPMGenerator, cmCPackGenerator);
- /**
- * Construct generator
- */
- cmCPackRPMGenerator();
- ~cmCPackRPMGenerator() override;
- static bool CanGenerate()
- {
- #ifdef __APPLE__
- // on MacOS enable CPackRPM iff rpmbuild is found
- std::vector<std::string> locations;
- locations.push_back("/sw/bin"); // Fink
- locations.push_back("/opt/local/bin"); // MacPorts
- return cmSystemTools::FindProgram("rpmbuild") != "" ? true : false;
- #else
- // legacy behavior on other systems
- return true;
- #endif
- }
- protected:
- int InitializeInternal() override;
- int PackageFiles() override;
- /**
- * This method factors out the work done in component packaging case.
- */
- int PackageOnePack(std::string const& initialToplevel,
- std::string const& packageName);
- /**
- * The method used to package files when component
- * install is used. This will create one
- * archive for each component group.
- */
- int PackageComponents(bool ignoreGroup);
- /**
- * Special case of component install where all
- * components will be put in a single installer.
- */
- int PackageComponentsAllInOne(const std::string& compInstDirName);
- const char* GetOutputExtension() override { return ".rpm"; }
- bool SupportsComponentInstallation() const override;
- std::string GetComponentInstallDirNameSuffix(
- const std::string& componentName) override;
- void AddGeneratedPackageNames();
- };
- #endif
|