Blob Blame History Raw
--- com.redhat.eclipse.cdt.autotools/src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java.fix	2006-08-08 14:47:55.000000000 -0400
+++ com.redhat.eclipse.cdt.autotools/src/com/redhat/eclipse/cdt/autotools/AutotoolsMakefileBuilder.java	2006-08-08 14:48:25.000000000 -0400
@@ -18,12 +18,19 @@ import java.util.Vector;
 
 import org.eclipse.cdt.make.core.IMakeBuilderInfo;
 import org.eclipse.cdt.make.core.MakeCorePlugin;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
+import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
 import org.eclipse.cdt.managedbuilder.internal.core.GeneratedMakefileBuilder;
+import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
 import org.eclipse.core.resources.ICommand;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
 
 /**
  * This is the incremental builder associated with a managed build project. It dynamically 
@@ -34,6 +41,8 @@ import org.eclipse.core.runtime.IProgres
 public class AutotoolsMakefileBuilder extends GeneratedMakefileBuilder {
 	public static final String BUILDER_NAME = "genmakebuilder"; //$NON-NLS-1$
 	public static final String BUILDER_ID = AutotoolsPlugin.getUniqueIdentifier() + "." + BUILDER_NAME; //$NON-NLS-1$
+	public static final String MANAGED_BUILDER_ID = ManagedBuilderCorePlugin.getUniqueIdentifier() + "." + BUILDER_NAME; //$NON-NLS-1$
+	public static final String AUTOTOOLS_CONFIG_ID = AutotoolsPlugin.getUniqueIdentifier() + ".configuration1"; //$NON-NLS-1$
 
 	private IMakeBuilderInfo info;
 	
@@ -46,16 +55,21 @@ public class AutotoolsMakefileBuilder ex
 		IProjectDescription description = project.getDescription();
 		ICommand[] commands = description.getBuildSpec();
 
-		// TODO Remove this when the new StandardBuild nature adds the cbuilder
+		// TODO Remove the cbuilder check when the new StandardBuild nature adds the cbuilder
 		for (int i = 0; i < commands.length; i++) {
 			ICommand command = commands[i];
-			if (command.getBuilderName().equals("org.eclipse.cdt.core.cbuilder")) { //$NON-NLS-1$
+			String builderName = command.getBuilderName();
+			// If there is a ManagedMake makefile generator, remove it as it will
+			// cause an additional build "all" to occur when we are making any target.
+			if (builderName.equals("org.eclipse.cdt.core.cbuilder") ||
+					builderName.equals(MANAGED_BUILDER_ID)) { //$NON-NLS-1$
 				// Remove the command
 				Vector vec = new Vector(Arrays.asList(commands));
 				vec.removeElementAt(i);
 				vec.trimToSize();
 				ICommand[] tempCommands = (ICommand[]) vec.toArray(new ICommand[commands.length-1]); 
 				description.setBuildSpec(tempCommands);
+				project.setDescription(description, null);
 				break;
 			}
 		}
@@ -84,12 +98,18 @@ public class AutotoolsMakefileBuilder ex
 	
 	public static boolean hasTargetBuilder(IProject project) {
 		try {
-			IProjectDescription description = project.getDescription();
-			ICommand[] commands = description.getBuildSpec();
-			// See if the builder is already there
-			
-			for (int i = 0; i < commands.length; ++i) {
-				if (commands[i].getBuilderName().equals(BUILDER_ID)) {
+			// When a project is converted to an Autotools project, we
+			// replace the ManagedMake builder with a special one that
+			// handles MakeTargets.  If a project is brought into Eclipse and
+			// uses the New Project Wizard to create a ManagedMake project that
+			// is of type: Autotools, this added step is not done.  If we know
+			// we have an Autotools project from the configuration id, then
+			// we should add the builder now and return true.
+			if (project.getNature(ManagedCProjectNature.MNG_NATURE_ID) != null) {
+				IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+				IConfiguration config = info.getDefaultConfiguration();
+				if (config.getParent().getId().equals(AUTOTOOLS_CONFIG_ID)) {
+					addAutotoolsBuilder(project, new NullProgressMonitor());
 					return true;
 				}
 			}