aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/moduleloader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/language/moduleloader.h')
-rw-r--r--src/lib/corelib/language/moduleloader.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/lib/corelib/language/moduleloader.h b/src/lib/corelib/language/moduleloader.h
index 333c2f7dd..3dafd42de 100644
--- a/src/lib/corelib/language/moduleloader.h
+++ b/src/lib/corelib/language/moduleloader.h
@@ -45,6 +45,7 @@
#include "item.h"
#include "itempool.h"
#include <logging/logger.h>
+#include <tools/filetime.h>
#include <tools/set.h>
#include <tools/setupprojectparameters.h>
#include <tools/version.h>
@@ -77,7 +78,7 @@ using ModulePropertiesPerGroup = std::unordered_map<const Item *, QualifiedIdSet
struct ModuleLoaderResult
{
ModuleLoaderResult()
- : itemPool(new ItemPool), root(0)
+ : itemPool(new ItemPool), root(nullptr)
{}
struct ProductInfo
@@ -125,6 +126,7 @@ public:
void setSearchPaths(const QStringList &searchPaths);
void setOldProjectProbes(const QList<ProbeConstPtr> &oldProbes);
void setOldProductProbes(const QHash<QString, QList<ProbeConstPtr>> &oldProbes);
+ void setLastResolveTime(const FileTime &time) { m_lastResolveTime = time; }
void setStoredProfiles(const QVariantMap &profiles);
Evaluator *evaluator() const { return m_evaluator; }
@@ -145,7 +147,7 @@ private:
{
public:
ContextBase()
- : item(0), scope(0)
+ : item(nullptr), scope(nullptr)
{}
Item *item;
@@ -283,9 +285,9 @@ private:
QVariantMap *defaultParameters);
Item *searchAndLoadModuleFile(ProductContext *productContext,
const CodeLocation &dependsItemLocation, const QualifiedId &moduleName,
- bool isRequired);
+ bool isRequired, Item *moduleInstance);
Item *loadModuleFile(ProductContext *productContext, const QString &fullModuleName,
- bool isBaseModule, const QString &filePath, bool *triedToLoad);
+ bool isBaseModule, const QString &filePath, bool *triedToLoad, Item *moduleInstance);
Item::Module loadBaseModule(ProductContext *productContext, Item *item);
void setupBaseModulePrototype(Item *prototype);
void instantiateModule(ProductContext *productContext, Item *exportingProductItem,
@@ -296,7 +298,7 @@ private:
void resolveProbes(ProductContext *productContext, Item *item);
void resolveProbe(ProductContext *productContext, Item *parent, Item *probe);
void checkCancelation() const;
- bool checkItemCondition(Item *item);
+ bool checkItemCondition(Item *item, Item *itemToDisable = nullptr);
QStringList readExtraSearchPaths(Item *item, bool *wasSet = 0);
void copyProperties(const Item *sourceProject, Item *targetProject);
Item *wrapInProjectIfNecessary(Item *item);
@@ -309,8 +311,9 @@ private:
void addTransitiveDependencies(ProductContext *ctx);
Item *createNonPresentModule(const QString &name, const QString &reason, Item *module);
void copyGroupsFromModuleToProduct(const ProductContext &productContext,
- const Item *modulePrototype);
+ const Item::Module &module, const Item *modulePrototype);
void copyGroupsFromModulesToProduct(const ProductContext &productContext);
+ void markModuleTargetGroups(Item *group, const Item::Module &module);
bool checkExportItemCondition(Item *exportItem, const ProductContext &productContext);
ProbeConstPtr findOldProjectProbe(const QString &globalId, bool condition,
const QVariantMap &initialProperties,
@@ -321,6 +324,11 @@ private:
ProbeConstPtr findCurrentProbe(const CodeLocation &location, bool condition,
const QVariantMap &initialProperties) const;
+ enum class CompareScript { No, Yes };
+ bool probeMatches(const ProbeConstPtr &probe, bool condition,
+ const QVariantMap &initialProperties, const QString &configureScript,
+ CompareScript compareScript) const;
+
void printProfilingInfo();
void handleProductError(const ErrorInfo &error, ProductContext *productContext);
QualifiedIdSet gatherModulePropertiesSetInGroup(const Item *group);
@@ -360,6 +368,7 @@ private:
QHash<QString, QList<ProbeConstPtr>> m_oldProjectProbes;
QHash<QString, QList<ProbeConstPtr>> m_oldProductProbes;
+ FileTime m_lastResolveTime;
QHash<CodeLocation, QList<ProbeConstPtr>> m_currentProbes;
QVariantMap m_storedProfiles;
QVariantMap m_localProfiles;