[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] update Cbuilder
|
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.3
diff -u -r1.3 ChangeLog
--- ChangeLog 15 Oct 2002 17:47:49 -0000 1.3
+++ ChangeLog 15 Oct 2002 17:51:55 -0000
@@ -23,3 +23,12 @@
refernce core plugin and nature classes for ID.
- removed unsed methods in model for adding/removing
natures.
+
+2002-10-15 David Inglis
+ * src/../internal/core/CBuilder.java
+
+ Fixed builder to return referenced projects so that eclipse
+ builder will build increamentaly build projects when they change.
+ Handle "clean" target as special so the build state is cleared allowing
+ the next increamental build to come in as a full build.
+
\ No newline at end of file
Index: org/eclipse/cdt/internal/core/CBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java,v
retrieving revision 1.5
diff -u -r1.5 CBuilder.java
--- org/eclipse/cdt/internal/core/CBuilder.java 3 Oct 2002 01:57:45 -0000 1.5
+++ org/eclipse/cdt/internal/core/CBuilder.java 15 Oct 2002 17:48:27 -0000
@@ -11,10 +11,18 @@
import java.util.Map;
import java.util.Properties;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.CProjectNature;
+import org.eclipse.cdt.core.CommandLauncher;
+import org.eclipse.cdt.core.ConsoleOutputStream;
+import org.eclipse.cdt.core.model.ICModelMarker;
+import org.eclipse.cdt.core.resources.ACBuilder;
+import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.core.resources.MakeUtil;
+import org.eclipse.cdt.internal.errorparsers.ErrorParserManager;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
@@ -24,13 +32,6 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.cdt.core.model.ICModelMarker;
-import org.eclipse.cdt.core.resources.ACBuilder;
-import org.eclipse.cdt.core.resources.IConsole;
-import org.eclipse.cdt.internal.errorparsers.ErrorParserManager;
-import org.eclipse.cdt.core.*;
-import org.eclipse.cdt.core.resources.*;
-
public class CBuilder extends ACBuilder {
@@ -52,20 +53,16 @@
* @see IncrementalProjectBuilder#build
*/
protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException {
- IResourceDelta delta= getDelta(getProject());
- boolean isFullBuild= (kind == IncrementalProjectBuilder.FULL_BUILD);
- if (isFullBuild) {
- invokeMake(true, monitor);
- } else {
- /* Take the code in the QNX Builder todo project dependencies. */
- invokeMake(false, monitor);
+ boolean isClean = invokeMake((kind == IncrementalProjectBuilder.FULL_BUILD), monitor);
+ if ( isClean ) {
+ forgetLastBuiltState();
}
- forgetLastBuiltState();
- return null;
+ return getProject().getReferencedProjects();
}
- private void invokeMake(boolean fullBuild, IProgressMonitor monitor) {
+ private boolean invokeMake(boolean fullBuild, IProgressMonitor monitor) {
+ boolean isClean = false;
IProject currProject= getProject();
SubProgressMonitor subMonitor = null;
@@ -78,15 +75,9 @@
CProjectNature nature= (CProjectNature)currProject.getNature(CProjectNature.C_NATURE_ID);
IPath makepath= nature.getBuildCommand();
if (!makepath.isEmpty()) {
- // clear console if requested
IConsole console = CCorePlugin.getDefault().getConsole();
console.start(currProject);
-/*
- if (BuildInfoFactory.create().isClearBuildConsole()
- && MakeUtil.getSessionConsoleMode(currProject)) {
- console.clear();
- }
-*/
+
ConsoleOutputStream cos = console.getOutputStream();
// remove all markers for this project
@@ -94,7 +85,8 @@
IPath workingDirectory= getWorkingDirectory();
String[] userArgs= parseArguments(fullBuild, nature.getIncrBuildArguments());
-
+ if ( userArgs.length != 0 && userArgs[userArgs.length-1].equals("clean") )
+ isClean = true;
// Before launching give visual cues via the monitor
subMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN);
subMonitor.subTask("Invoking Command: " + makepath.toString());
@@ -156,6 +148,7 @@
CCorePlugin.log(e);
}
monitor.done();
+ return isClean;
}
private String[] parseArguments(boolean fullBuild, String override_args) {