diff options
author | Mikhail Sennikovsky | 2007-08-09 12:38:52 +0000 |
---|---|---|
committer | Mikhail Sennikovsky | 2007-08-09 12:38:52 +0000 |
commit | c11d44bf9e2f182d86851f4545c70b54b966a98f (patch) | |
tree | 1c2bfeea52202ca4d2da38b9220080da5bfbe714 /build/org.eclipse.cdt.managedbuilder.core/src/org | |
parent | f089bbf2b4165717e9193bbaf60de597a56a7356 (diff) | |
download | org.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')
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; + } +} |