1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-10 12:03:16 +02:00

Fix to the custom build steps mechanism

This commit is contained in:
Mikhail Sennikovsky 2007-05-24 18:40:32 +00:00
parent c19ba7a148
commit 198887fab2
5 changed files with 65 additions and 42 deletions

View file

@ -29,7 +29,8 @@
point="org.eclipse.core.resources.builders">
<builder
hasNature="true"
callOnEmptyDelta="true">
callOnEmptyDelta="true"
isConfigurable="true">
<!--run
class="org.eclipse.cdt.managedbuilder.internal.core.GeneratedMakefileBuilder">
</run-->

View file

@ -84,6 +84,10 @@ public interface IBuilder extends IBuildObject, IMakeBuilderInfo {
static final String OUTPUT_ENTRIES = "outputEntries"; //$NON-NLS-1$
static final String DEFAULT_TARGET_INCREMENTAL = "all";
static final String DEFAULT_TARGET_CLEAN = "clean";
static final String DEFAULT_TARGET_AUTO = "all";
/**
* Returns the command line arguments to pass to the build/make utility used
* to build a configuration.

View file

@ -11,6 +11,7 @@
package org.eclipse.cdt.managedbuilder.internal.core;
import org.eclipse.cdt.core.settings.model.ICStorageElement;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.managedbuilder.core.IAdditionalInput;
import org.eclipse.cdt.managedbuilder.core.IInputType;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
@ -216,7 +217,7 @@ public class AdditionalInput implements IAdditionalInput {
if (paths == null) {
return null;
}
String[] nameTokens = paths.split(";"); //$NON-NLS-1$
String[] nameTokens = CDataUtil.stringToArray(paths, ";"); //$NON-NLS-1$
return nameTokens;
}

View file

@ -387,29 +387,14 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider
setCommand(builder.getCommand());
if(!getArgumentsAttribute().equals(builder.getArgumentsAttribute()))
setArgumentsAttribute(builder.getArgumentsAttribute());
if(!getAutoBuildTarget().equals(builder.getAutoBuildTarget())){
try {
setAutoBuildTarget(builder.getAutoBuildTarget());
} catch (CoreException e) {
}
if(!CDataUtil.objectsEqual(getAutoBuildTargetAttribute(), builder.getAutoBuildTargetAttribute())){
autoBuildTarget = builder.getAutoBuildTargetAttribute();
}
if(!getIncrementalBuildTarget().equals(builder.getIncrementalBuildTarget())){
try {
setIncrementalBuildTarget(builder.getIncrementalBuildTarget());
} catch (CoreException e) {
}
if(!CDataUtil.objectsEqual(getIncrementalBuildTargetAttribute(), builder.getIncrementalBuildTargetAttribute())){
incrementalBuildTarget = builder.getIncrementalBuildTargetAttribute();
}
if(!getFullBuildTarget().equals(builder.getFullBuildTarget())){
try {
setFullBuildTarget(builder.getFullBuildTarget());
} catch (CoreException e) {
}
}
if(!getCleanBuildTarget().equals(builder.getCleanBuildTarget())){
try {
setCleanBuildTarget(builder.getCleanBuildTarget());
} catch (CoreException e) {
}
if(!CDataUtil.objectsEqual(getCleanBuildTargetAttribute(), builder.getCleanBuildTargetAttribute())){
cleanBuildTarget = builder.getCleanBuildTargetAttribute();
}
}
@ -1746,11 +1731,16 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider
public String getAutoBuildTarget() {
String attr = getAutoBuildTargetAttribute();
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
try {
attr = provider.resolveValue(attr, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, getMacroContextData()); //$NON-NLS-1$ //$NON-NLS-2$
} catch (BuildMacroException e) {
if(attr != null){
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
try {
attr = provider.resolveValue(attr, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, getMacroContextData()); //$NON-NLS-1$ //$NON-NLS-2$
} catch (BuildMacroException e) {
}
}
if(attr == null){
attr = DEFAULT_TARGET_AUTO;
}
return attr;
@ -1769,11 +1759,16 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider
public String getCleanBuildTarget() {
String attr = getCleanBuildTargetAttribute();
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
try {
attr = provider.resolveValue(attr, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, getMacroContextData()); //$NON-NLS-1$ //$NON-NLS-2$
} catch (BuildMacroException e) {
if(attr != null){
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
try {
attr = provider.resolveValue(attr, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, getMacroContextData()); //$NON-NLS-1$ //$NON-NLS-2$
} catch (BuildMacroException e) {
}
}
if(attr == null){
attr = DEFAULT_TARGET_CLEAN;
}
return attr;
@ -1796,11 +1791,16 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider
public String getIncrementalBuildTarget() {
String attr = getIncrementalBuildTargetAttribute();
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
try {
attr = provider.resolveValue(attr, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, getMacroContextData()); //$NON-NLS-1$ //$NON-NLS-2$
} catch (BuildMacroException e) {
if(attr != null){
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
try {
attr = provider.resolveValue(attr, "", " ", IBuildMacroProvider.CONTEXT_CONFIGURATION, getMacroContextData()); //$NON-NLS-1$ //$NON-NLS-2$
} catch (BuildMacroException e) {
}
}
if(attr == null){
attr = DEFAULT_TARGET_INCREMENTAL;
}
return attr;

View file

@ -1065,6 +1065,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
HashSet handledInputExtensions = new HashSet();
String buildMacro;
for (int i=0; i<buildTools.length; i++) {
if(buildTools[i].getCustomBuildStep())
continue;
// Add the known sources macros
String[] extensionsList = buildTools[i].getAllInputExtensions();
for (int j=0; j<extensionsList.length; j++) {
@ -2039,7 +2041,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
ITool[] tools = fi.getToolsToInvoke();
if (tools != null && tools.length > 0) {
tool = tools[0];
if(!tool.getCustomBuildStep())
// if(!tool.getCustomBuildStep())
addToBuildVar(buildVarToRuleStringMap, ext, varName, relativePath, sourceLocation, generatedSource);
}
}
@ -2098,9 +2100,11 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
if (generatedOutputs.size() > 0) {
IPath firstOutput = (IPath)generatedOutputs.get(0);
String firstExt = firstOutput.getFileExtension();
for (int j=0; j<buildTools.length; j++) {
if (buildTools[j].buildsFileType(firstExt)) {
String bV = buildTools[j].getPrimaryInputType().getBuildVariable();
ToolInfoHolder tmpH = getFolderToolInfo(rcInfo.getPath());
ITool[] tmpBuildTools = tmpH.buildTools;
for (int j=0; j<tmpBuildTools.length; j++) {
if (tmpBuildTools[j].buildsFileType(firstExt)) {
String bV = tmpBuildTools[j].getPrimaryInputType().getBuildVariable();
if (bV.length() > 0) {
buildVariable = bV;
break;
@ -3941,6 +3945,10 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
// }
// Initialize the tool info array and the done state
if(buildTools.length != 0 && buildTools[0].getCustomBuildStep())
return true;
for (int i=0; i<buildTools.length; i++) {
if ((buildTools[i] == targetTool)) {
String ext = config.getArtifactExtension();
@ -4707,6 +4715,15 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
return getToolInfo(path, false);
}
private ToolInfoHolder getFolderToolInfo(IPath path){
IResourceInfo rcInfo = config.getResourceInfo(path, false);
while(rcInfo instanceof IFileInfo){
path = path.removeLastSegments(1);
rcInfo = config.getResourceInfo(path, false);
}
return getToolInfo(path, false);
}
private ToolInfoHolder getToolInfo(IPath path, boolean create){
PathSettingsContainer child = toolInfos.getChildContainer(path, create, create);
ToolInfoHolder h = null;