/* 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 "cmQtAutoGenerator.h" #include "cm_uv.h" #include #include 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 void 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 const& command, bool mergedOutput); private: // -- Config settings bool MultiConfig_; // -- Directories std::string AutogenBuildDir_; std::string IncludeDir_; // -- Qt environment std::string RccExecutable_; std::vector RccListOptions_; // -- Job std::string QrcFile_; std::string QrcFileName_; std::string QrcFileDir_; std::string RccPathChecksum_; std::string RccFileName_; std::string RccFileOutput_; std::string RccFilePublic_; std::vector Options_; std::vector Inputs_; // -- Subprocess ProcessResultT ProcessResult_; std::unique_ptr Process_; // -- Settings file std::string SettingsFile_; std::string SettingsString_; bool SettingsChanged_; // -- libuv loop StageT Stage_; bool Error_; bool Generate_; bool BuildFileChanged_; }; #endif