Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Sennikovsky2007-08-09 12:38:52 +0000
committerMikhail Sennikovsky2007-08-09 12:38:52 +0000
commitc11d44bf9e2f182d86851f4545c70b54b966a98f (patch)
tree1c2bfeea52202ca4d2da38b9220080da5bfbe714 /build/org.eclipse.cdt.managedbuilder.core/src/org
parentf089bbf2b4165717e9193bbaf60de597a56a7356 (diff)
downloadorg.eclipse.cdt-c11d44bf9e2f182d86851f4545c70b54b966a98f.tar.gz
org.eclipse.cdt-c11d44bf9e2f182d86851f4545c70b54b966a98f.tar.xz
org.eclipse.cdt-c11d44bf9e2f182d86851f4545c70b54b966a98f.zip
Build Output Concolse parser added for ManagedGCC discpvery profiles
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.core/src/org')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/CfgInfoContext.java37
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedGCCScannerInfoConsoleParser.java70
2 files changed, 104 insertions, 3 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/CfgInfoContext.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/CfgInfoContext.java
index c182719ba6d..07aad36aa93 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/CfgInfoContext.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/CfgInfoContext.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.build.core.scannerconfig;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.make.core.scannerconfig.InfoContext;
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
@@ -17,6 +19,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IInputType;
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
import org.eclipse.core.resources.IProject;
@@ -91,8 +94,8 @@ public final class CfgInfoContext{
}
return fContext;
}
-
- public static CfgInfoContext fromInfoContext(IConfiguration cfg, InfoContext context) {
+
+ public static CfgInfoContext fromInfoContext(ICProjectDescription des, InfoContext context) {
IProject project = context.getProject();
if(project == null)
return null;
@@ -103,9 +106,19 @@ public final class CfgInfoContext{
String[] ids = CDataUtil.stringToArray(instanceId, DELIMITER);
String cfgId = ids[0];
- if(!cfgId.equals(cfg.getId()))
+
+ ICConfigurationDescription cfgDes = des.getConfigurationById(cfgId);
+ if(cfgDes == null)
+ return null;
+
+ IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgDes);
+ if(cfg == null)
return null;
+ return doCreate(cfg, ids, context);
+ }
+
+ private static CfgInfoContext doCreate(IConfiguration cfg, String[] ids, InfoContext context){
String rcInfoId = null, toolId = null, inTypeId = null;
IResourceInfo rcInfo = null;
ITool tool = null;
@@ -142,6 +155,24 @@ public final class CfgInfoContext{
if(rcInfo != null)
return new CfgInfoContext(rcInfo, tool, inType, context);
return new CfgInfoContext(cfg, context);
+
+ }
+
+ public static CfgInfoContext fromInfoContext(IConfiguration cfg, InfoContext context) {
+ IProject project = context.getProject();
+ if(project == null)
+ return null;
+
+ String instanceId = context.getInstanceId();
+ if(instanceId.length() == 0)
+ return null;
+
+ String[] ids = CDataUtil.stringToArray(instanceId, DELIMITER);
+ String cfgId = ids[0];
+ if(!cfgId.equals(cfg.getId()))
+ return null;
+
+ return doCreate(cfg, ids, context);
}
private static IBuildObject find(IBuildObject objs[], String id){
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedGCCScannerInfoConsoleParser.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedGCCScannerInfoConsoleParser.java
new file mode 100644
index 00000000000..3aed749eeab
--- /dev/null
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/ManagedGCCScannerInfoConsoleParser.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Intel Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.managedbuilder.internal.scannerconfig;
+
+import org.eclipse.cdt.build.core.scannerconfig.CfgInfoContext;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
+import org.eclipse.cdt.make.core.scannerconfig.InfoContext;
+import org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCScannerInfoConsoleParser;
+import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.core.resources.IProject;
+
+public class ManagedGCCScannerInfoConsoleParser extends
+ GCCScannerInfoConsoleParser {
+ Boolean fManagedBuildOnState;
+
+ public boolean processLine(String line) {
+ if(isManagedBuildOn())
+ return false;
+ return super.processLine(line);
+ }
+
+ public void shutdown() {
+ if(!isManagedBuildOn()){
+ super.shutdown();
+ }
+ fManagedBuildOnState = null;
+ }
+
+ public void startup(IProject project, IScannerInfoCollector collector) {
+ if(isManagedBuildOn())
+ return;
+ super.startup(project, collector);
+ }
+
+ protected boolean isManagedBuildOn(){
+ if(fManagedBuildOnState == null)
+ fManagedBuildOnState = Boolean.valueOf(doCalcManagedBuildOnState());
+ return fManagedBuildOnState.booleanValue();
+ }
+
+ protected boolean doCalcManagedBuildOnState(){
+ IScannerInfoCollector cr = getCollector();
+ InfoContext c;
+ if(cr instanceof PerProjectSICollector){
+ c = ((PerProjectSICollector)cr).getContext();
+ } else {
+ return false;
+ }
+
+ IProject project = c.getProject();
+ ICProjectDescription des = CoreModel.getDefault().getProjectDescription(project, false);
+ CfgInfoContext cc = CfgInfoContext.fromInfoContext(des, c);
+ if(cc != null){
+ IConfiguration cfg = cc.getConfiguration();
+ return cfg.isManagedBuildOn();
+ }
+ return false;
+ }
+}

Back to the top