diff options
Diffstat (limited to 'src/lib/corelib/language/language.h')
-rw-r--r-- | src/lib/corelib/language/language.h | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h index a1115519d..774d703d0 100644 --- a/src/lib/corelib/language/language.h +++ b/src/lib/corelib/language/language.h @@ -49,6 +49,7 @@ #include <buildgraph/forward_decls.h> #include <tools/codelocation.h> +#include <tools/fileinfo.h> #include <tools/filetime.h> #include <tools/joblimits.h> #include <tools/persistence.h> @@ -116,17 +117,20 @@ public: const QString &configureScript, const QVariantMap &properties, const QVariantMap &initialProperties, + const QMap<QString, VariantValuePtr> &values, const std::vector<QString> &importedFilesUsed) { return ProbeConstPtr(new Probe(globalId, location, condition, configureScript, properties, - initialProperties, importedFilesUsed)); + initialProperties, values, importedFilesUsed)); } const QString &globalId() const { return m_globalId; } bool condition() const { return m_condition; } + const CodeLocation &location() const { return m_location; } const QString &configureScript() const { return m_configureScript; } const QVariantMap &properties() const { return m_properties; } const QVariantMap &initialProperties() const { return m_initialProperties; } + const QMap<QString, VariantValuePtr> &values() const { return m_values; } const std::vector<QString> &importedFilesUsed() const { return m_importedFilesUsed; } bool needsReconfigure(const FileTime &referenceTime) const; @@ -134,6 +138,8 @@ public: { pool.serializationOp<opType>(m_globalId, m_location, m_condition, m_configureScript, m_properties, m_initialProperties, m_importedFilesUsed); + if constexpr (opType == PersistentPool::OpType::Load) + restoreValues(); } private: @@ -144,21 +150,27 @@ private: QString configureScript, QVariantMap properties, QVariantMap initialProperties, + QMap<QString, VariantValuePtr> values, std::vector<QString> importedFilesUsed) : m_globalId(std::move(globalId)) , m_location(location) , m_configureScript(std::move(configureScript)) , m_properties(std::move(properties)) , m_initialProperties(std::move(initialProperties)) + , m_values(std::move(values)) , m_importedFilesUsed(std::move(importedFilesUsed)) , m_condition(condition) - {} + { + } + + void restoreValues(); QString m_globalId; CodeLocation m_location; QString m_configureScript; QVariantMap m_properties; QVariantMap m_initialProperties; + QMap<QString, VariantValuePtr> m_values; std::vector<QString> m_importedFilesUsed; bool m_condition = false; }; @@ -230,11 +242,12 @@ public: bool overrideFileTags; QString targetOfModule; PropertyMapPtr properties; + bool fromWildcard; template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool) { pool.serializationOp<opType>(absoluteFilePath, fileTags, overrideFileTags, properties, - targetOfModule); + targetOfModule, fromWildcard); } private: @@ -248,26 +261,28 @@ inline bool operator!=(const SourceArtifactInternal &sa1, const SourceArtifactIn class SourceWildCards { public: - Set<QString> expandPatterns(const GroupConstPtr &group, const QString &baseDir, - const QString &buildDir); + void expandPatterns(); + bool hasChangedSinceExpansion() const; - const ResolvedGroup *group = nullptr; // The owning group. + // to be restored by the owning class + QString prefix; + QString baseDir; + QString buildDir; + Set<QString> expandedFiles; + + // stored QStringList patterns; QStringList excludePatterns; std::vector<std::pair<QString, FileTime>> dirTimeStamps; - std::vector<SourceArtifactPtr> files; template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool) { - pool.serializationOp<opType>(patterns, excludePatterns, dirTimeStamps, files); + pool.serializationOp<opType>(patterns, excludePatterns, dirTimeStamps); } private: - Set<QString> expandPatterns(const GroupConstPtr &group, const QStringList &patterns, - const QString &baseDir, const QString &buildDir); - void expandPatterns(Set<QString> &result, const GroupConstPtr &group, - const QStringList &parts, const QString &baseDir, - const QString &buildDir); + Set<QString> expandPatterns(const QStringList &patterns); + void expandPatterns(Set<QString> &result, const QStringList &parts, const QString &baseDir); }; class QBS_AUTOTEST_EXPORT ResolvedGroup @@ -287,13 +302,9 @@ public: QString targetOfModule; bool overrideTags = false; - std::vector<SourceArtifactPtr> allFiles() const; + void restoreWildcards(const QString &buildDir); - void load(PersistentPool &pool); - void store(PersistentPool &pool); - -private: - template<PersistentPool::OpType opType> void serializationOp(PersistentPool &pool) + template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool) { pool.serializationOp<opType>(name, enabled, location, prefix, files, wildcards, properties, fileTags, targetOfModule, overrideTags); @@ -361,7 +372,7 @@ public: static ResolvedModulePtr create() { return ResolvedModulePtr(new ResolvedModule); } QString name; - QStringList moduleDependencies; + QStringList moduleDependencies; // TODO: Still needed? PrivateScriptFunction setupBuildEnvironmentScript; PrivateScriptFunction setupRunEnvironmentScript; ResolvedProduct *product = nullptr; @@ -597,7 +608,6 @@ public: static QString uniqueName(const QString &name, const QString &multiplexConfigurationId); QString uniqueName() const; - static QString fullDisplayName(const QString &name, const QString &multiplexConfigurationId); QString fullDisplayName() const; QString profile() const; @@ -693,6 +703,7 @@ public: QHash<QString, bool> fileExistsResults; // Results of calls to "File.exists()". QHash<std::pair<QString, quint32>, QStringList> directoryEntriesResults; // Results of calls to "File.directoryEntries()". QHash<QString, FileTime> fileLastModifiedResults; // Results of calls to "File.lastModified()". + CodeLinks codeLinks; std::unique_ptr<ProjectBuildData> buildData; BuildGraphLocker *bgLocker; // This holds the system-wide build graph file lock. bool locked; // This is the API-level lock for the project instance. @@ -707,6 +718,7 @@ public: QString id() const { return m_id; } QString profile() const; void makeModuleProvidersNonTransient(); + QVariantMap fullProfileConfigsTree() const; // Tree-ified + overridden values QVariantMap profileConfigs; QVariantMap overriddenValues; @@ -723,7 +735,7 @@ private: directoryEntriesResults, fileLastModifiedResults, environment, probes, profileConfigs, overriddenValues, buildSystemFiles, lastStartResolveTime, lastEndResolveTime, warningsEncountered, - buildData, moduleProviderInfo); + buildData, moduleProviderInfo, codeLinks); } void load(PersistentPool &pool) override; void store(PersistentPool &pool) override; @@ -737,8 +749,6 @@ private: bool artifactPropertyListsAreEqual(const std::vector<ArtifactPropertiesPtr> &l1, const std::vector<ArtifactPropertiesPtr> &l2); -QString multiplexIdToString(const QString &id); - } // namespace Internal } // namespace qbs |