aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/language.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/language/language.h')
-rw-r--r--src/lib/corelib/language/language.h58
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