Skip to main content

[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) {

Back to the top