diff options
author | Maxim Zaitsev <maxim.m.zaitsev@gmail.com> | 2014-03-04 02:46:31 +0400 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-03-12 15:27:44 +0100 |
commit | 9c8997413fb7d744e1d1b62b5c926cb089eb0d52 (patch) | |
tree | 566370cd102144ed4cb3c0000cf2998cf3dd974c /src/lib/corelib/buildgraph/qtmocscanner.cpp | |
parent | 91d4e47fc8eb506b3a906d75a838a28b2c3a38e4 (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.cpp | 15 |
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; } |