aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/qtmocscanner.cpp
diff options
context:
space:
mode:
authorMaxim Zaitsev <maxim.m.zaitsev@gmail.com>2014-03-04 02:46:31 +0400
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-03-12 15:27:44 +0100
commit9c8997413fb7d744e1d1b62b5c926cb089eb0d52 (patch)
tree566370cd102144ed4cb3c0000cf2998cf3dd974c /src/lib/corelib/buildgraph/qtmocscanner.cpp
parent91d4e47fc8eb506b3a906d75a838a28b2c3a38e4 (diff)
Add new qml item Scanner
This item allows to write custom dependency scanners in modules. Change-Id: I6cb49969973ee29896d1909e7a16bf5da50f8aef Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/buildgraph/qtmocscanner.cpp')
-rw-r--r--src/lib/corelib/buildgraph/qtmocscanner.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/lib/corelib/buildgraph/qtmocscanner.cpp b/src/lib/corelib/buildgraph/qtmocscanner.cpp
index 995250441..bf8558c3b 100644
--- a/src/lib/corelib/buildgraph/qtmocscanner.cpp
+++ b/src/lib/corelib/buildgraph/qtmocscanner.cpp
@@ -68,10 +68,11 @@ QtMocScanner::~QtMocScanner()
static ScanResultCache::Result runScanner(ScannerPlugin *scanner, const Artifact *artifact,
ScanResultCache *scanResultCache)
{
- ScanResultCache::Result scanResult = scanResultCache->value(artifact->filePath());
+ const QString &filepath = artifact->filePath();
+ ScanResultCache::Result scanResult = scanResultCache->value(scanner, filepath);
if (!scanResult.valid) {
scanResult.valid = true;
- void *opaq = scanner->open(artifact->filePath().utf16(),
+ void *opaq = scanner->open(filepath.utf16(),
ScanForDependenciesFlag | ScanForFileTagsFlag);
if (!opaq || !scanner->additionalFileTags)
return scanResult;
@@ -83,6 +84,7 @@ static ScanResultCache::Result runScanner(ScannerPlugin *scanner, const Artifact
scanResult.additionalFileTags += szFileTagsFromScanner[i];
}
+ QString baseDirOfInFilePath = artifact->dirPath();
forever {
int flags = 0;
const char *szOutFilePath = scanner->next(opaq, &length, &flags);
@@ -92,11 +94,16 @@ static ScanResultCache::Result runScanner(ScannerPlugin *scanner, const Artifact
if (includedFilePath.isEmpty())
continue;
bool isLocalInclude = (flags & SC_LOCAL_INCLUDE_FLAG);
- scanResult.deps += ScanResultCache::Dependency(includedFilePath, isLocalInclude);
+ if (isLocalInclude) {
+ QString localFilePath = FileInfo::resolvePath(baseDirOfInFilePath, includedFilePath);
+ if (FileInfo::exists(localFilePath))
+ includedFilePath = localFilePath;
+ }
+ scanResult.deps += ScanResultCache::Dependency(includedFilePath);
}
scanner->close(opaq);
- scanResultCache->insert(artifact->filePath(), scanResult);
+ scanResultCache->insert(scanner, filepath, scanResult);
}
return scanResult;
}