From b223fdb790b682fe9e40e42e83032b282433cce5 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Tue, 15 Oct 2002 17:54:13 +0000 Subject: [PATCH] fixed builder --- core/org.eclipse.cdt.core/ChangeLog | 9 +++++++ .../eclipse/cdt/internal/core/CBuilder.java | 27 +++++++------------ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 4e9c02fac1e..f94a2988b9e 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -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 diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java index a1a1916875e..ee642ce27ba 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java @@ -53,19 +53,16 @@ public class CBuilder extends ACBuilder { * @see IncrementalProjectBuilder#build */ protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException { - 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 @@ public class CBuilder extends ACBuilder { 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 @@ public class CBuilder extends ACBuilder { 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 @@ public class CBuilder extends ACBuilder { CCorePlugin.log(e); } monitor.done(); + return isClean; } private String[] parseArguments(boolean fullBuild, String override_args) {