diff options
author | David Daoust | 2006-08-25 19:56:22 +0000 |
---|---|---|
committer | David Daoust | 2006-08-25 19:56:22 +0000 |
commit | 370cc286cd9639d73f712c6e9a4f52dfe64b673d (patch) | |
tree | b1c91ac6c09641735e75bd8ee77cc7a4784fdaf1 /build | |
parent | 72add29233e4edd55ea9d62b4ec95858d7a102c9 (diff) | |
download | org.eclipse.cdt-370cc286cd9639d73f712c6e9a4f52dfe64b673d.tar.gz org.eclipse.cdt-370cc286cd9639d73f712c6e9a4f52dfe64b673d.tar.xz org.eclipse.cdt-370cc286cd9639d73f712c6e9a4f52dfe64b673d.zip |
Fix for 155088
Diffstat (limited to 'build')
-rw-r--r-- | build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java index 95d28377180..2e5126a63ff 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java @@ -147,16 +147,27 @@ public class GCCPerFileBOPConsoleParser extends AbstractGCCBOPConsoleParser { } CCommandDSC cmd = fUtil.getNewCCommandDSC(genericLine.toString(), extensionsIndex > 0); - IPath buildDirectory = fUtil.getWorkingDirectory(); - if (buildDirectory.isPrefixOf(pFilePath)) { + IPath baseDirectory = fUtil.getBaseDirectory(); + if (baseDirectory.isPrefixOf(pFilePath)) { List cmdList = new ArrayList(); cmdList.add(cmd); Map sc = new HashMap(1); sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList); - IPath relPath = pFilePath.removeFirstSegments(buildDirectory.segmentCount()); - IFile file = getProject().getFile(relPath); - getCollector().contributeToScannerConfig(file, sc); + IPath relPath = pFilePath.removeFirstSegments(baseDirectory.segmentCount()); + //Note: We add the scannerconfig even if the resource doesnt actually + //exist below this project (which may happen when reading existing + //build logs, because resources can be created as part of the build + //and may not exist at the time of analyzing the config but re-built + //later on. + //if (getProject().exists(relPath)) { + IFile file = getProject().getFile(relPath); + getCollector().contributeToScannerConfig(file, sc); + } else { + //TODO limiting to pathes below this project means not being + //able to work with linked resources. Linked resources could + //be checked through IWorkspaceRoot.findFilesForLocation(). + TraceUtil.outputError("Build command for file outside project: "+pFilePath.toString(), line); //$NON-NLS-1$ } // fUtil.addGenericCommandForFile2(longFileName, genericLine); } |