1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 06:05:24 +02:00

fixed bug#94981

This commit is contained in:
David Inglis 2005-07-04 15:17:23 +00:00
parent bcf69885a2
commit aee9835a95
3 changed files with 48 additions and 19 deletions

View file

@ -56,7 +56,7 @@ public interface IMakeCommonBuildInfo {
String[] getErrorParsers();
void setErrorParsers(String[] parsers) throws CoreException;
Map getExpandedEnvironment();
Map getExpandedEnvironment() throws CoreException;
Map getEnvironment();
void setEnvironment(Map env) throws CoreException;

View file

@ -17,10 +17,10 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
public interface IMakeTarget extends IAdaptable, IMakeCommonBuildInfo {
public final static String BUILD_TARGET = ARGS_PREFIX + ".build.target"; //$NON-NLS-1$
String getName();
String getTargetBuilderID();
IProject getProject();
@ -37,6 +37,7 @@ public interface IMakeTarget extends IAdaptable, IMakeCommonBuildInfo {
String getBuildTarget() ;
void setRunAllBuilders(boolean runAllBuilders) throws CoreException;
boolean runAllBuilders();
/**
@ -53,5 +54,9 @@ public interface IMakeTarget extends IAdaptable, IMakeCommonBuildInfo {
*/
void setContainer(IContainer container);
void setAppendProjectEnvironment(boolean append);
boolean appendProjectEnvironment();
void build(IProgressMonitor monitor) throws CoreException;
}

View file

@ -36,7 +36,7 @@ import org.eclipse.core.variables.VariablesPlugin;
import org.eclipse.osgi.service.environment.Constants;
public class MakeTarget extends PlatformObject implements IMakeTarget {
private final static int USE_PROJECT_ENV_SETTING = 3;
private final MakeTargetManager manager;
private final IProject project;
private String name;
@ -45,8 +45,9 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
boolean runAllBuidlers = true;
private String targetBuilderID;
private IContainer container;
private boolean appendEnvironment;
private Map buildEnvironment;
private int appendEnvironment = USE_PROJECT_ENV_SETTING;
private boolean appendProjectEnvironment = true;
private Map buildEnvironment = new HashMap();
private Map targetAttributes = new HashMap();
MakeTarget(MakeTargetManager manager, IProject project, String targetBuilderID, String name) throws CoreException {
@ -59,8 +60,6 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
setBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, info.getBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, "")); //$NON-NLS-1$
isDefaultBuildCmd = info.isDefaultBuildCmd();
isStopOnError = info.isStopOnError();
appendEnvironment = info.appendEnvironment();
buildEnvironment = info.getEnvironment();
}
public IProject getProject() {
@ -193,8 +192,18 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
throw new UnsupportedOperationException();
}
public Map getExpandedEnvironment() {
Map env = getEnvironment();
public Map getExpandedEnvironment() throws CoreException {
Map env = null;
if (appendProjectEnvironment()) {
IMakeBuilderInfo projectInfo;
projectInfo = MakeCorePlugin.createBuildInfo(getProject(), manager.getBuilderID(targetBuilderID));
env = projectInfo.getEnvironment();
}
if (env == null) {
env = getEnvironment();
} else {
env.putAll(getEnvironment());
}
HashMap envMap = new HashMap(env.entrySet().size());
Iterator iter = env.entrySet().iterator();
boolean win32 = Platform.getOS().equals(Constants.OS_WIN32);
@ -209,14 +218,19 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
String value = (String)entry.getValue();
// translate any string substitution variables
String translated = value;
try {
translated = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(value, false);
} catch (CoreException e) {
}
translated = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(value, false);
envMap.put(key, translated);
}
return envMap;
}
public boolean appendProjectEnvironment() {
return appendProjectEnvironment;
}
public void setAppendProjectEnvironment(boolean append) {
appendProjectEnvironment = append;
}
public Map getEnvironment() {
return buildEnvironment;
@ -228,14 +242,24 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
}
public void setAppendEnvironment(boolean append) throws CoreException {
appendEnvironment = append;
appendEnvironment = append ? 1 : 0;
manager.updateTarget(this);
}
public boolean appendEnvironment() {
return appendEnvironment;
return appendEnvironment == USE_PROJECT_ENV_SETTING ? getProjectEnvSetting(): appendEnvironment == 1;
}
private boolean getProjectEnvSetting() {
IMakeBuilderInfo projectInfo;
try {
projectInfo = MakeCorePlugin.createBuildInfo(getProject(), manager.getBuilderID(targetBuilderID));
return projectInfo.appendEnvironment();
} catch (CoreException e) {
}
return false;
}
public IContainer getContainer() {
return container;
}
@ -261,12 +285,12 @@ public class MakeTarget extends PlatformObject implements IMakeTarget {
IMakeBuilderInfo info = MakeCorePlugin.createBuildInfo(infoMap, builderID);
info.setBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, getBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, "make")); //$NON-NLS-1$
info.setBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, getBuildAttribute(IMakeCommonBuildInfo.BUILD_ARGUMENTS, "")); //$NON-NLS-1$
info.setUseDefaultBuildCmd(isDefaultBuildCmd);
info.setStopOnError(isStopOnError);
info.setUseDefaultBuildCmd(isDefaultBuildCmd());
info.setStopOnError(isStopOnError());
info.setFullBuildEnable(true);
info.setBuildAttribute(IMakeBuilderInfo.BUILD_TARGET_FULL, getBuildAttribute(IMakeTarget.BUILD_TARGET, "")); //$NON-NLS-1$
info.setEnvironment(buildEnvironment);
info.setAppendEnvironment(appendEnvironment);
info.setEnvironment(getExpandedEnvironment());
info.setAppendEnvironment(appendEnvironment());
if (container != null) {
info.setBuildAttribute(IMakeCommonBuildInfo.BUILD_LOCATION, container.getFullPath().toString());
}