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
|
||||
|
||||
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.
|
||||
*/
|
||||
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||
import org.eclipse.cdt.core.model.ICModelMarker;
|
||||
|
@ -23,42 +22,57 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
|
|||
public ACBuilder() {
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* callback from Output Parser
|
||||
*/
|
||||
//public void addMarker(IFile file, int lineNumber, String errorDesc, int severity) {
|
||||
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
|
||||
|
||||
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.MESSAGE, errorDesc);
|
||||
marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(severity));
|
||||
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
|
||||
marker.setAttribute(IMarker.CHAR_START, -1);
|
||||
marker.setAttribute(IMarker.CHAR_END, -1);
|
||||
if(errorVar != null) {
|
||||
if (errorVar != null) {
|
||||
marker.setAttribute(ICModelMarker.C_MODEL_MARKER_VARIABLE, errorVar);
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
catch (CoreException e) {
|
||||
CCorePlugin.log(e.getStatus());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
int mapMarkerSeverity (int severity) {
|
||||
|
||||
int mapMarkerSeverity(int severity) {
|
||||
switch (severity) {
|
||||
case SEVERITY_ERROR_BUILD:
|
||||
case SEVERITY_ERROR_RESOURCE:
|
||||
case SEVERITY_ERROR_BUILD :
|
||||
case SEVERITY_ERROR_RESOURCE :
|
||||
return IMarker.SEVERITY_ERROR;
|
||||
case SEVERITY_INFO:
|
||||
case SEVERITY_INFO :
|
||||
return IMarker.SEVERITY_INFO;
|
||||
case SEVERITY_WARNING:
|
||||
case SEVERITY_WARNING :
|
||||
return IMarker.SEVERITY_WARNING;
|
||||
}
|
||||
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.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.OperationCanceledException;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
|
||||
|
@ -57,6 +58,7 @@ public class CBuilder extends ACBuilder {
|
|||
if ( isClean ) {
|
||||
forgetLastBuiltState();
|
||||
}
|
||||
checkCancel(monitor);
|
||||
return getProject().getReferencedProjects();
|
||||
}
|
||||
|
||||
|
@ -64,6 +66,7 @@ public class CBuilder extends ACBuilder {
|
|||
private boolean invokeMake(boolean fullBuild, IProgressMonitor monitor) {
|
||||
boolean isClean = false;
|
||||
boolean fatalBuild = false;
|
||||
boolean isCanceled = false;
|
||||
IProject currProject= getProject();
|
||||
SubProgressMonitor subMonitor = null;
|
||||
|
||||
|
@ -117,6 +120,8 @@ public class CBuilder extends ACBuilder {
|
|||
launcher.execute(makepath, userArgs, env, workingDirectory);
|
||||
if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(), subMonitor) != CommandLauncher.OK)
|
||||
errMsg = launcher.getErrorMessage();
|
||||
|
||||
isCanceled = monitor.isCanceled();
|
||||
monitor.setCanceled(false);
|
||||
subMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN);
|
||||
subMonitor.subTask("Refresh From Local");
|
||||
|
@ -141,6 +146,7 @@ public class CBuilder extends ACBuilder {
|
|||
fatalBuild = epm.reportProblems();
|
||||
}
|
||||
subMonitor.done();
|
||||
monitor.setCanceled(isCanceled);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
CCorePlugin.log(e);
|
||||
|
@ -148,7 +154,15 @@ public class CBuilder extends ACBuilder {
|
|||
monitor.done();
|
||||
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) {
|
||||
ArrayList list= new ArrayList();
|
||||
IProject currProject = getProject();
|
||||
|
|
Loading…
Add table
Reference in a new issue