mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
builder fixes
This commit is contained in:
parent
113211c2e4
commit
d6eb399569
3 changed files with 50 additions and 15 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2002-10-28 David Inglis
|
||||||
|
|
||||||
|
* src/.../core/resources/ACBuilder.java
|
||||||
|
Added check for duplicate markers.
|
||||||
|
* src/.../internal/core/CBuilder.java
|
||||||
|
Added check for canceled build and throws OperationCanceledException exception
|
||||||
|
|
||||||
2002-10-25 Alain Magloire
|
2002-10-25 Alain Magloire
|
||||||
|
|
||||||
The debugger needs to know the endian of a binary. For example
|
The debugger needs to know the endian of a binary. For example
|
||||||
|
|
|
@ -5,7 +5,6 @@ package org.eclipse.cdt.core.resources;
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.IMarkerGenerator;
|
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||||
import org.eclipse.cdt.core.model.ICModelMarker;
|
import org.eclipse.cdt.core.model.ICModelMarker;
|
||||||
|
@ -29,36 +28,51 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
|
||||||
*/
|
*/
|
||||||
//public void addMarker(IFile file, int lineNumber, String errorDesc, int severity) {
|
//public void addMarker(IFile file, int lineNumber, String errorDesc, int severity) {
|
||||||
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
|
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
IMarker marker= file.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER);
|
IMarker[] cur = file.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_ONE);
|
||||||
|
/*
|
||||||
|
* Try to find matching markers and don't put in duplicates
|
||||||
|
*/
|
||||||
|
if ((cur != null) && (cur.length > 0)) {
|
||||||
|
for (int i = 0; i < cur.length; i++) {
|
||||||
|
if ((((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue() == lineNumber)
|
||||||
|
&& (((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue() == severity)
|
||||||
|
&& (((String) cur[i].getAttribute(IMarker.MESSAGE)).equals(errorDesc))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IMarker marker = file.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER);
|
||||||
marker.setAttribute(IMarker.LOCATION, lineNumber);
|
marker.setAttribute(IMarker.LOCATION, lineNumber);
|
||||||
marker.setAttribute(IMarker.MESSAGE, errorDesc);
|
marker.setAttribute(IMarker.MESSAGE, errorDesc);
|
||||||
marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(severity));
|
marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(severity));
|
||||||
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
|
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
|
||||||
marker.setAttribute(IMarker.CHAR_START, -1);
|
marker.setAttribute(IMarker.CHAR_START, -1);
|
||||||
marker.setAttribute(IMarker.CHAR_END, -1);
|
marker.setAttribute(IMarker.CHAR_END, -1);
|
||||||
if(errorVar != null) {
|
if (errorVar != null) {
|
||||||
marker.setAttribute(ICModelMarker.C_MODEL_MARKER_VARIABLE, errorVar);
|
marker.setAttribute(ICModelMarker.C_MODEL_MARKER_VARIABLE, errorVar);
|
||||||
}
|
}
|
||||||
} catch (CoreException e) {
|
}
|
||||||
|
catch (CoreException e) {
|
||||||
CCorePlugin.log(e.getStatus());
|
CCorePlugin.log(e.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mapMarkerSeverity (int severity) {
|
int mapMarkerSeverity(int severity) {
|
||||||
switch (severity) {
|
switch (severity) {
|
||||||
case SEVERITY_ERROR_BUILD:
|
case SEVERITY_ERROR_BUILD :
|
||||||
case SEVERITY_ERROR_RESOURCE:
|
case SEVERITY_ERROR_RESOURCE :
|
||||||
return IMarker.SEVERITY_ERROR;
|
return IMarker.SEVERITY_ERROR;
|
||||||
case SEVERITY_INFO:
|
case SEVERITY_INFO :
|
||||||
return IMarker.SEVERITY_INFO;
|
return IMarker.SEVERITY_INFO;
|
||||||
case SEVERITY_WARNING:
|
case SEVERITY_WARNING :
|
||||||
return IMarker.SEVERITY_WARNING;
|
return IMarker.SEVERITY_WARNING;
|
||||||
}
|
}
|
||||||
return IMarker.SEVERITY_ERROR;
|
return IMarker.SEVERITY_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract IPath getWorkingDirectory();
|
public abstract IPath getWorkingDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.OperationCanceledException;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@ public class CBuilder extends ACBuilder {
|
||||||
if ( isClean ) {
|
if ( isClean ) {
|
||||||
forgetLastBuiltState();
|
forgetLastBuiltState();
|
||||||
}
|
}
|
||||||
|
checkCancel(monitor);
|
||||||
return getProject().getReferencedProjects();
|
return getProject().getReferencedProjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +66,7 @@ public class CBuilder extends ACBuilder {
|
||||||
private boolean invokeMake(boolean fullBuild, IProgressMonitor monitor) {
|
private boolean invokeMake(boolean fullBuild, IProgressMonitor monitor) {
|
||||||
boolean isClean = false;
|
boolean isClean = false;
|
||||||
boolean fatalBuild = false;
|
boolean fatalBuild = false;
|
||||||
|
boolean isCanceled = false;
|
||||||
IProject currProject= getProject();
|
IProject currProject= getProject();
|
||||||
SubProgressMonitor subMonitor = null;
|
SubProgressMonitor subMonitor = null;
|
||||||
|
|
||||||
|
@ -117,6 +120,8 @@ public class CBuilder extends ACBuilder {
|
||||||
launcher.execute(makepath, userArgs, env, workingDirectory);
|
launcher.execute(makepath, userArgs, env, workingDirectory);
|
||||||
if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(), subMonitor) != CommandLauncher.OK)
|
if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(), subMonitor) != CommandLauncher.OK)
|
||||||
errMsg = launcher.getErrorMessage();
|
errMsg = launcher.getErrorMessage();
|
||||||
|
|
||||||
|
isCanceled = monitor.isCanceled();
|
||||||
monitor.setCanceled(false);
|
monitor.setCanceled(false);
|
||||||
subMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN);
|
subMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN);
|
||||||
subMonitor.subTask("Refresh From Local");
|
subMonitor.subTask("Refresh From Local");
|
||||||
|
@ -141,6 +146,7 @@ public class CBuilder extends ACBuilder {
|
||||||
fatalBuild = epm.reportProblems();
|
fatalBuild = epm.reportProblems();
|
||||||
}
|
}
|
||||||
subMonitor.done();
|
subMonitor.done();
|
||||||
|
monitor.setCanceled(isCanceled);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
|
@ -149,6 +155,14 @@ public class CBuilder extends ACBuilder {
|
||||||
return (isClean || fatalBuild);
|
return (isClean || fatalBuild);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the build has been canceled.
|
||||||
|
*/
|
||||||
|
public void checkCancel(IProgressMonitor monitor) {
|
||||||
|
if (monitor != null && monitor.isCanceled())
|
||||||
|
throw new OperationCanceledException();
|
||||||
|
}
|
||||||
|
|
||||||
private String[] parseArguments(boolean fullBuild, String override_args) {
|
private String[] parseArguments(boolean fullBuild, String override_args) {
|
||||||
ArrayList list= new ArrayList();
|
ArrayList list= new ArrayList();
|
||||||
IProject currProject = getProject();
|
IProject currProject = getProject();
|
||||||
|
|
Loading…
Add table
Reference in a new issue