| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #ifndef cmQtAutoGeneratorRcc_h |
| #define cmQtAutoGeneratorRcc_h |
| |
| #include "cmConfigure.h" // IWYU pragma: keep |
| |
| #include "cmFileLock.h" |
| #include "cmQtAutoGenerator.h" |
| #include "cm_uv.h" |
| |
| #include <string> |
| #include <vector> |
| |
| class cmMakefile; |
| |
| // @brief AUTORCC generator |
| class cmQtAutoGeneratorRcc : public cmQtAutoGenerator |
| { |
| CM_DISABLE_COPY(cmQtAutoGeneratorRcc) |
| public: |
| cmQtAutoGeneratorRcc(); |
| ~cmQtAutoGeneratorRcc() override; |
| |
| private: |
| // -- Types |
| |
| /// @brief Processing stage |
| enum class StageT : unsigned char |
| { |
| SETTINGS_READ, |
| TEST_QRC_RCC_FILES, |
| TEST_RESOURCES_READ, |
| TEST_RESOURCES, |
| TEST_INFO_FILE, |
| GENERATE, |
| GENERATE_RCC, |
| GENERATE_WRAPPER, |
| SETTINGS_WRITE, |
| FINISH, |
| END |
| }; |
| |
| // -- Abstract processing interface |
| bool Init(cmMakefile* makefile) override; |
| bool Process() override; |
| // -- Process stage |
| static void UVPollStage(uv_async_t* handle); |
| void PollStage(); |
| void SetStage(StageT stage); |
| // -- Settings file |
| bool SettingsFileRead(); |
| void SettingsFileWrite(); |
| // -- Tests |
| bool TestQrcRccFiles(); |
| bool TestResourcesRead(); |
| bool TestResources(); |
| void TestInfoFile(); |
| // -- Generation |
| void GenerateParentDir(); |
| bool GenerateRcc(); |
| void GenerateWrapper(); |
| |
| // -- Utility |
| bool IsMultiConfig() const { return MultiConfig_; } |
| std::string MultiConfigOutput() const; |
| bool StartProcess(std::string const& workingDirectory, |
| std::vector<std::string> const& command, |
| bool mergedOutput); |
| |
| private: |
| // -- Config settings |
| bool MultiConfig_; |
| // -- Directories |
| std::string AutogenBuildDir_; |
| std::string IncludeDir_; |
| // -- Qt environment |
| std::string RccExecutable_; |
| std::vector<std::string> RccListOptions_; |
| // -- Job |
| std::string LockFile_; |
| cmFileLock LockFileLock_; |
| std::string QrcFile_; |
| std::string QrcFileName_; |
| std::string QrcFileDir_; |
| std::string RccPathChecksum_; |
| std::string RccFileName_; |
| std::string RccFileOutput_; |
| std::string RccFilePublic_; |
| std::vector<std::string> Options_; |
| std::vector<std::string> Inputs_; |
| // -- Subprocess |
| ProcessResultT ProcessResult_; |
| std::unique_ptr<ReadOnlyProcessT> Process_; |
| // -- Settings file |
| std::string SettingsFile_; |
| std::string SettingsString_; |
| bool SettingsChanged_; |
| // -- libuv loop |
| StageT Stage_; |
| bool Error_; |
| bool Generate_; |
| bool BuildFileChanged_; |
| }; |
| |
| #endif |