From f3781679fa888c172514d789e89ef211ad043b8c Mon Sep 17 00:00:00 2001 From: Guy Bonneau Date: Sat, 7 Mar 2015 09:23:42 -0500 Subject: [PATCH] Bug 461628 Some tools within a toolchain can potentially generate an output resource with the same name even if the input resource name to the tool is not the same. This fix is to provide this capability to CDT Change-Id: I9ad9d2ff0cc39797718f8b689c7a828e81f49648 Signed-off-by: Guy Bonneau Bug 461628 Some tools within a toolchain can potentially generate an output resource with the same name even if the input resource name to the tool is not the same. This fix is to provide this capability to CDT" Change-Id: I9ad9d2ff0cc39797718f8b689c7a828e81f49648 Signed-off-by: Guy Bonneau --- .../internal/buildmodel/BuildResource.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildResource.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildResource.java index af997d7ab45..b997b0489cc 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildResource.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/BuildResource.java @@ -21,6 +21,7 @@ import org.eclipse.cdt.managedbuilder.buildmodel.IBuildDescription; import org.eclipse.cdt.managedbuilder.buildmodel.IBuildIOType; import org.eclipse.cdt.managedbuilder.buildmodel.IBuildResource; import org.eclipse.cdt.managedbuilder.buildmodel.IBuildStep; +import org.eclipse.cdt.managedbuilder.core.ITool; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; @@ -143,6 +144,15 @@ public class BuildResource implements IBuildResource { inStep.removeResource(fProducerArg, this, true); fProducerArg = arg; } else { + // Bug 461628 + // Check if this resource is an output produced by a Tool that support merging in which case + // a producer can already be defined by a previous step. This is supported. + + IBuildStep step = fProducerArg.getStep(); + ITool tool = step instanceof BuildStep ? ((BuildStep)(step)).getTool() : null; + if(tool != null && !arg.isInput()) { + return; + } String err = "ProducerArgument not null!!!\n"; //$NON-NLS-1$ String rcName = DbgUtil.resourceName(this); @@ -155,8 +165,6 @@ public class BuildResource implements IBuildResource { if(DbgUtil.DEBUG){ err = err + externalizedErr + "curent producer: " + DbgUtil.dumpStep(fProducerArg.getStep()) + "\n producer attempt: " + DbgUtil.dumpStep(arg.getStep()); //$NON-NLS-1$ //$NON-NLS-2$ } - - throw new IllegalArgumentException(externalizedErr); } }