diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java index c8b58181354..66cd90e30db 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilder.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.make.core; import java.io.IOException; import java.io.OutputStream; +import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -148,6 +149,7 @@ public class MakeBuilder extends ACBuilder { removeAllMarkers(currProject); IPath workingDirectory = MakeBuilderUtil.getBuildDirectory(currProject, info); + URI workingDirectoryURI = MakeBuilderUtil.getBuildDirectoryURI(currProject, info); String[] targets = getTargets(kind, info); if (targets.length != 0 && targets[targets.length - 1].equals(info.getCleanBuildTarget())) @@ -200,7 +202,7 @@ public class MakeBuilder extends ACBuilder { last = new Integer(100); } StreamMonitor streamMon = new StreamMonitor(new SubProgressMonitor(monitor, 100), cos, last.intValue()); - ErrorParserManager epm = new ErrorParserManager(getProject(), workingDirectory, this, info.getErrorParsers()); + ErrorParserManager epm = new ErrorParserManager(getProject(), workingDirectoryURI, this, info.getErrorParsers()); epm.setOutputStream(streamMon); OutputStream stdout = epm.getOutputStream(); OutputStream stderr = epm.getOutputStream(); diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilderUtil.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilderUtil.java index 0e2bfe1f236..ad91ad5458d 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilderUtil.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/MakeBuilderUtil.java @@ -11,6 +11,8 @@ *******************************************************************************/ package org.eclipse.cdt.make.core; +import java.net.URI; + import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; @@ -46,4 +48,22 @@ public class MakeBuilderUtil { } return buildDirectory; } + + /** + * Return the URI of the build directory for a prject and IMakeBuilderInfo + * @param project + * @param info + * @return URI of the build directory, or the Project's URI if one couldn't be found + * @since 6.0 + */ + public static URI getBuildDirectoryURI(IProject project, IMakeBuilderInfo info) { + IPath buildDirectory = info.getBuildLocation(); + if (!buildDirectory.isEmpty()) { + IResource res = project.getParent().findMember(buildDirectory); + if (res instanceof IContainer && res.exists()) { + return res.getLocationURI(); + } + } + return project.getLocationURI(); + } }