Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorDoug Schaefer2003-09-26 19:54:33 +0000
committerDoug Schaefer2003-09-26 19:54:33 +0000
commitdcbbea5b74a1234e7a9481da96c90e787b644599 (patch)
tree5daf76f7eb466d028c626d7c510f505935fe9286 /build
parenta3a827cf923126be62a941826f9258b99d1e4f19 (diff)
downloadorg.eclipse.cdt-dcbbea5b74a1234e7a9481da96c90e787b644599.tar.gz
org.eclipse.cdt-dcbbea5b74a1234e7a9481da96c90e787b644599.tar.xz
org.eclipse.cdt-dcbbea5b74a1234e7a9481da96c90e787b644599.zip
Patch for Sean Evoy:
Two of the fixes, 43614 and 43756, involved changing property files only, which validates the extra work of externalizing strings from the start! For 43616, I simply took the advice of the bug reporter and added the '-' in front of the RM macro in the clean target and the include directives in the makefile. The largest part of the fix involves 43220. Until just now, this was a critical bug in bugzilla, so I addressed it. It has just been downgraded to an enhancement request. There is now a new entry widget in the linker options for user objects. The makefile will simply add these to the final build target's command. Most of the work was done in the plugin file and the build model to handle the new "type" of option.
Diffstat (limited to 'build')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/plugin.properties5
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd4
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java6
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java43
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java29
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java113
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java167
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/ChangeLog17
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/plugin.properties7
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/plugin.xml360
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java2
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java8
14 files changed, 538 insertions, 250 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/plugin.properties b/build/org.eclipse.cdt.managedbuilder.core/plugin.properties
index 4790b7ca75d..20c7c57bb40 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.core/plugin.properties
@@ -1,2 +1,5 @@
pluginName=C/C++ Managed Builder Core
-providerName=Eclipse.org \ No newline at end of file
+providerName=Eclipse.org
+
+GeneratedMakefileCBuilder.name=Generated Makefile Builder
+ManagedBuildNature.name=Managed Builder Project \ No newline at end of file
diff --git a/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd b/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd
index 82bf278d2fb..270e4c42cde 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd
+++ b/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd
@@ -144,7 +144,7 @@
<documentation>
General options can be one of the following types; &apos;string&apos; for catch-all entries for options that cannot be easily defined any other way, &apos;string list&apos; for entries that consist of a list of values such as defined symbols or paths, &apos;boolean&apos; for options that have two values, and &apos;enumerated&apos; for options that are one-of a list of values.
-Two additional types exist to flag options of special relevance to the build model; &apos;include&apos;, and &apos;definedSymbols&apos;. You can pre-populate with optionValues, and they will display in the UI the same way the &apos;StringList&apos; options do. The build model will look specifically for these value types when clients query for include paths and preprocessor defines.
+Additional special types exist to flag options of special relevance to the build model; &apos;include&apos;, &apos;libs&apos;, &apos;userObjs&apos; and &apos;definedSymbols&apos;. You can pre-populate with optionValues, and they will display in the UI the same way the &apos;stringList&apos; options do. The build model will look specifically for these value types when clients query for include paths and preprocessor defines. The makefile generator will treat the libs and userObjs entries differently than other stringLists.
</documentation>
</annotation>
<simpleType>
@@ -163,6 +163,8 @@ Two additional types exist to flag options of special relevance to the build mod
</enumeration>
<enumeration value="libs">
</enumeration>
+ <enumeration value="userObjs">
+ </enumeration>
</restriction>
</simpleType>
</attribute>
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java
index 6b9205d4985..f0b9d20490a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java
@@ -183,6 +183,12 @@ public interface IManagedBuildInfo {
public String getToolForTarget(String extension);
/**
+ * @param extension
+ * @return
+ */
+ public String[] getUserObjectsForTarget(String extension);
+
+ /**
* Answers true if the build model has been changed by the user.
*
* @return
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
index 3f47f4b83f7..4c483d8fe97 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
@@ -22,6 +22,7 @@ public interface IOption extends IBuildObject {
public static final int INCLUDE_PATH = 4;
public static final int PREPROCESSOR_SYMBOLS = 5;
public static final int LIBRARIES = 6;
+ public static final int OBJECTS = 7;
// Schema attribute names for option elements
public static final String CATEGORY = "category";
@@ -36,6 +37,7 @@ public interface IOption extends IBuildObject {
public static final String TYPE_LIB = "libs";
public static final String TYPE_STRING = "string";
public static final String TYPE_STR_LIST = "stringList";
+ public static final String TYPE_USER_OBJS = "userObjs";
public static final String VALUE_TYPE = "valueType";
// Schema attribute names for listOptionValue elements
@@ -48,14 +50,15 @@ public interface IOption extends IBuildObject {
* the list of possible values for that enum.
*
* If this option is not defined as an enumeration, it returns <code>null</code>.
- * @return
+ *
+ * @return String []
*/
public String [] getApplicableValues();
/**
* Answers the value for a boolean option.
*
- * @return
+ * @return boolean
* @throws BuildException
*/
public boolean getBooleanValue() throws BuildException;
@@ -66,14 +69,14 @@ public interface IOption extends IBuildObject {
* option. If none have been defined, the array will be empty but
* never <code>null</code>.
*
- * @return
+ * @return String[]
*/
public String[] getBuiltIns();
/**
* Returns the category for this option.
*
- * @return
+ * @return IOptionCategory
*/
public IOptionCategory getCategory();
@@ -81,12 +84,14 @@ public interface IOption extends IBuildObject {
* Answers a <code>String</code> containing the actual command line
* option associated with the option
*
- * @return
+ * @return String
*/
public String getCommand();
/**
- * @return
+ * Answers the user-defined preprocessor symbols.
+ *
+ * @return String[]
* @throws BuildException
*/
public String[] getDefinedSymbols() throws BuildException;
@@ -105,7 +110,7 @@ public interface IOption extends IBuildObject {
* Answers an array of <code>String</code> containing the includes paths
* defined in the build model.
*
- * @return
+ * @return String[]
* @throws BuildException
*/
public String[] getIncludePaths() throws BuildException;
@@ -114,7 +119,9 @@ public interface IOption extends IBuildObject {
/**
* Answers an array or <code>String</code>s containing the libraries
* that must be linked into the project.
- * @return
+ *
+ * @return String[]
+ * @throws BuildException
*/
public String[] getLibraries() throws BuildException ;
@@ -125,7 +132,7 @@ public interface IOption extends IBuildObject {
* If the user has modified the selection, the receiver will answer with the
* overridden selection.
*
- * @return
+ * @return String
* @throws BuildException
*/
public String getSelectedEnum () throws BuildException;
@@ -133,7 +140,7 @@ public interface IOption extends IBuildObject {
/**
* Returns the current value for this option if it is a List of Strings.
*
- * @return
+ * @return String []
* @throws BuildException
*/
public String [] getStringListValue() throws BuildException;
@@ -141,7 +148,7 @@ public interface IOption extends IBuildObject {
/**
* Returns the current value for this option if it is a String
*
- * @return
+ * @return String
* @throws BuildException
*/
public String getStringValue() throws BuildException;
@@ -149,14 +156,24 @@ public interface IOption extends IBuildObject {
/**
* Returns the tool defining this option.
*
- * @return
+ * @return ITool
*/
public ITool getTool();
+
/**
- * Get the type for the value of the option.
+ * Answers all of the user-defined object files that must be linked with
+ * the final build target.
*
* @return
+ * @throws BuildException
+ */
+ public String [] getUserObjects() throws BuildException;
+
+ /**
+ * Get the type for the value of the option.
+ *
+ * @return int
*/
public int getValueType();
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java
index 8e9f9411588..3f27865fb54 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java
@@ -329,6 +329,15 @@ public class MakefileGenerator {
}
buffer.append(NEWLINE + NEWLINE);
+ // Add the extra user-specified objects
+ buffer.append("USER_OBJS := ");
+ String[] userObjs = info.getUserObjectsForTarget(extension);
+ for (int j = 0; j < userObjs.length; j++) {
+ String string = userObjs[j];
+ buffer.append(LINEBREAK + NEWLINE + string);
+ }
+ buffer.append(NEWLINE + NEWLINE);
+
buffer.append("OBJS = $(C_SRCS:$(ROOT)/%.c=%.o) $(CC_SRCS:$(ROOT)/%.cc=%.o) $(CXX_SRCS:$(ROOT)/%.cxx=%.o) $(CAPC_SRCS:$(ROOT)/%.C=%.o) $(CPP_SRCS:$(ROOT)/%.cpp=%.o)" + NEWLINE);
return (buffer.append(NEWLINE));
}
@@ -336,11 +345,11 @@ public class MakefileGenerator {
/* (non-javadoc)
* @return
*/
- protected StringBuffer addModules() {
+ protected StringBuffer addSubdirectories() {
StringBuffer buffer = new StringBuffer();
// Add the comment
buffer.append(ManagedBuilderCorePlugin.getResourceString(MOD_LIST) + NEWLINE);
- buffer.append("MODULES := " + LINEBREAK + NEWLINE);
+ buffer.append("SUBDIRS := " + LINEBREAK + NEWLINE);
// Get all the module names
ListIterator iter = getSubdirList().listIterator();
@@ -358,7 +367,7 @@ public class MakefileGenerator {
// Now add the makefile instruction to include all the subdirectory makefile fragments
buffer.append(NEWLINE);
buffer.append(ManagedBuilderCorePlugin.getResourceString(MOD_INCL) + NEWLINE);
- buffer.append("include ${patsubst %, %/module.mk, $(MODULES)}" + NEWLINE);
+ buffer.append("-include ${patsubst %, %/module.mk, $(SUBDIRS)}" + NEWLINE);
buffer.append(NEWLINE + NEWLINE);
return buffer;
@@ -487,7 +496,7 @@ public class MakefileGenerator {
/*
* Write out the target rule as:
* <prefix><target>.<extension>: $(OBJS) [<dep_proj_1_output> ... <dep_proj_n_output>]
- * $(BUILD_TOOL) $(FLAGS) $(OUTPUT_FLAG) $@ $^ $(LIB_DEPS)
+ * $(BUILD_TOOL) $(FLAGS) $(OUTPUT_FLAG) $@ $(OBJS) $(USER_OBJS) $(LIB_DEPS)
*/
//
buffer.append(outputPrefix + target + COLON + WHITESPACE + "$(OBJS)");
@@ -496,17 +505,17 @@ public class MakefileGenerator {
buffer.append(WHITESPACE + (String)iter.next());
}
buffer.append(NEWLINE);
- buffer.append(TAB + cmd + WHITESPACE + flags + WHITESPACE + outflag + WHITESPACE + "$@" + WHITESPACE + "$(OBJS) $(LIBS)");
+ buffer.append(TAB + cmd + WHITESPACE + flags + WHITESPACE + outflag + WHITESPACE + "$@" + WHITESPACE + "$(OBJS) $(USER_OBJS) $(LIBS)");
buffer.append(NEWLINE + NEWLINE);
// Always add a clean target
buffer.append("clean:" + NEWLINE);
- buffer.append(TAB + "$(RM)" + WHITESPACE + "$(OBJS)" + WHITESPACE + outputPrefix + target + NEWLINE + NEWLINE);
+ buffer.append(TAB + "-$(RM)" + WHITESPACE + "$(OBJS)" + WHITESPACE + outputPrefix + target + NEWLINE + NEWLINE);
buffer.append(".PHONY: all clean deps" + NEWLINE + NEWLINE);
buffer.append(ManagedBuilderCorePlugin.getResourceString(DEP_INCL) + NEWLINE);
- buffer.append("include ${patsubst %, %/module.dep, $(MODULES)}" + NEWLINE);
+ buffer.append("-include ${patsubst %, %/module.dep, $(SUBDIRS)}" + NEWLINE);
return buffer;
}
@@ -807,7 +816,7 @@ public class MakefileGenerator {
buffer.append(addMacros());
// Append the module list
- buffer.append(addModules());
+ buffer.append(addSubdirectories());
// Add targets
buffer.append(addTargets(rebuild));
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
index 44e6566ea9f..587bf35d3be 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
@@ -476,6 +476,35 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo#getUserObjectsForTarget(java.lang.String)
+ */
+ public String[] getUserObjectsForTarget(String extension) {
+ ArrayList objs = new ArrayList();
+ // Get all the tools for the current config
+ IConfiguration config = getDefaultConfiguration(getDefaultTarget());
+ ITool[] tools = config.getTools();
+ for (int index = 0; index < tools.length; index++) {
+ ITool tool = tools[index];
+ if (tool.producesFileType(extension)) {
+ IOption[] opts = tool.getOptions();
+ // Look for the user object option type
+ for (int i = 0; i < opts.length; i++) {
+ IOption option = opts[i];
+ if (option.getValueType() == IOption.OBJECTS) {
+ try {
+ objs.addAll(Arrays.asList(option.getUserObjects()));
+ } catch (BuildException e) {
+ continue;
+ }
+ }
+ }
+ }
+ }
+ objs.trimToSize();
+ return (String[])objs.toArray(new String[objs.size()]);
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo#isDirty()
*/
public boolean isDirty() {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
index 30e2f17e431..214cef5f933 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
@@ -22,9 +22,6 @@ import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.core.runtime.IConfigurationElement;
-/**
- *
- */
public class Option extends BuildObject implements IOption {
// Static default return values
private static final String EMPTY_STRING = new String();
@@ -49,82 +46,85 @@ public class Option extends BuildObject implements IOption {
this(tool);
// Get the unique id of the option
- setId(element.getAttribute(IOption.ID));
+ setId(element.getAttribute(ID));
// Hook me up to a tool
tool.addOption(this);
// Get the option Name (this is what the user will see in the UI)
- setName(element.getAttribute(IOption.NAME));
+ setName(element.getAttribute(NAME));
// Options can be grouped into categories
- String categoryId = element.getAttribute(IOption.CATEGORY);
+ String categoryId = element.getAttribute(CATEGORY);
if (categoryId != null)
setCategory(tool.getOptionCategory(categoryId));
// Get the command defined for the option
- command = element.getAttribute(IOption.COMMAND);
+ command = element.getAttribute(COMMAND);
// Options hold different types of values
- String valueTypeStr = element.getAttribute(IOption.VALUE_TYPE);
+ String valueTypeStr = element.getAttribute(VALUE_TYPE);
if (valueTypeStr == null)
valueType = -1;
- else if (valueTypeStr.equals(IOption.TYPE_STRING))
- valueType = IOption.STRING;
- else if (valueTypeStr.equals(IOption.TYPE_STR_LIST))
- valueType = IOption.STRING_LIST;
- else if (valueTypeStr.equals(IOption.TYPE_BOOL))
- valueType = IOption.BOOLEAN;
- else if (valueTypeStr.equals(IOption.TYPE_ENUM))
- valueType = IOption.ENUMERATED;
- else if (valueTypeStr.equals(IOption.TYPE_INC_PATH))
- valueType = IOption.INCLUDE_PATH;
- else if (valueTypeStr.equals(IOption.TYPE_LIB))
- valueType = IOption.LIBRARIES;
+ else if (valueTypeStr.equals(TYPE_STRING))
+ valueType = STRING;
+ else if (valueTypeStr.equals(TYPE_STR_LIST))
+ valueType = STRING_LIST;
+ else if (valueTypeStr.equals(TYPE_BOOL))
+ valueType = BOOLEAN;
+ else if (valueTypeStr.equals(TYPE_ENUM))
+ valueType = ENUMERATED;
+ else if (valueTypeStr.equals(TYPE_INC_PATH))
+ valueType = INCLUDE_PATH;
+ else if (valueTypeStr.equals(TYPE_LIB))
+ valueType = LIBRARIES;
+ else if (valueTypeStr.equals(TYPE_USER_OBJS))
+ valueType = OBJECTS;
else
- valueType = IOption.PREPROCESSOR_SYMBOLS;
+ valueType = PREPROCESSOR_SYMBOLS;
// Now get the actual value
enumCommands = new HashMap();
switch (valueType) {
- case IOption.BOOLEAN:
+ case BOOLEAN:
// Convert the string to a boolean
- value = new Boolean(element.getAttribute(IOption.DEFAULT_VALUE));
+ value = new Boolean(element.getAttribute(DEFAULT_VALUE));
break;
- case IOption.STRING:
+ case STRING:
// Just get the value out of the option directly
- value = element.getAttribute(IOption.DEFAULT_VALUE);
+ value = element.getAttribute(DEFAULT_VALUE);
break;
- case IOption.ENUMERATED:
+ case ENUMERATED:
List enumList = new ArrayList();
- IConfigurationElement[] enumElements = element.getChildren(IOption.ENUM_VALUE);
+ IConfigurationElement[] enumElements = element.getChildren(ENUM_VALUE);
for (int i = 0; i < enumElements.length; ++i) {
- String optName = enumElements[i].getAttribute(IOption.NAME);
- String optCommand = enumElements[i].getAttribute(IOption.COMMAND);
+ String optName = enumElements[i].getAttribute(NAME);
+ String optCommand = enumElements[i].getAttribute(COMMAND);
enumList.add(optName);
enumCommands.put(optName, optCommand);
- Boolean isDefault = new Boolean(enumElements[i].getAttribute(IOption.IS_DEFAULT));
+ Boolean isDefault = new Boolean(enumElements[i].getAttribute(IS_DEFAULT));
if (isDefault.booleanValue()) {
defaultEnumName = optName;
}
}
value = enumList;
break;
- case IOption.STRING_LIST:
- case IOption.INCLUDE_PATH:
- case IOption.PREPROCESSOR_SYMBOLS:
- case IOption.LIBRARIES:
+ case STRING_LIST:
+ case INCLUDE_PATH:
+ case PREPROCESSOR_SYMBOLS:
+ case LIBRARIES:
+ case OBJECTS:
List valueList = new ArrayList();
builtIns = new ArrayList();
- IConfigurationElement[] valueElements = element.getChildren(IOption.LIST_VALUE);
+ IConfigurationElement[] valueElements = element.getChildren(LIST_VALUE);
for (int i = 0; i < valueElements.length; ++i) {
IConfigurationElement valueElement = valueElements[i];
- Boolean isBuiltIn = new Boolean(valueElement.getAttribute(IOption.LIST_ITEM_BUILTIN));
+ Boolean isBuiltIn = new Boolean(valueElement.getAttribute(LIST_ITEM_BUILTIN));
if (isBuiltIn.booleanValue()) {
- builtIns.add(valueElement.getAttribute(IOption.LIST_ITEM_VALUE));
+ builtIns.add(valueElement.getAttribute(LIST_ITEM_VALUE));
}
else {
- valueList.add(valueElement.getAttribute(IOption.LIST_ITEM_VALUE));
+ valueList.add(valueElement.getAttribute(LIST_ITEM_VALUE));
}
}
value = valueList;
@@ -177,7 +177,7 @@ public class Option extends BuildObject implements IOption {
* @see org.eclipse.cdt.core.build.managed.IOption#getDefinedSymbols()
*/
public String[] getDefinedSymbols() throws BuildException {
- if (valueType != IOption.PREPROCESSOR_SYMBOLS) {
+ if (valueType != PREPROCESSOR_SYMBOLS) {
throw new BuildException("bad value type");
}
List v = (List)value;
@@ -198,7 +198,7 @@ public class Option extends BuildObject implements IOption {
* @see org.eclipse.cdt.core.build.managed.IOption#getIncludePaths()
*/
public String[] getIncludePaths() throws BuildException {
- if (valueType != IOption.INCLUDE_PATH) {
+ if (valueType != INCLUDE_PATH) {
throw new BuildException("bad value type");
}
List v = (List)value;
@@ -211,7 +211,7 @@ public class Option extends BuildObject implements IOption {
* @see org.eclipse.cdt.core.build.managed.IOption#getLibraries()
*/
public String[] getLibraries() throws BuildException {
- if (valueType != IOption.LIBRARIES) {
+ if (valueType != LIBRARIES) {
throw new BuildException("bad value type");
}
List v = (List)value;
@@ -224,7 +224,7 @@ public class Option extends BuildObject implements IOption {
* @see org.eclipse.cdt.core.build.managed.IOption#getDefaultEnumValue()
*/
public String getSelectedEnum() throws BuildException {
- if (valueType != IOption.ENUMERATED) {
+ if (valueType != ENUMERATED) {
throw new BuildException("bad value type");
}
return defaultEnumName == null ? EMPTY_STRING : defaultEnumName;
@@ -234,7 +234,7 @@ public class Option extends BuildObject implements IOption {
* @see org.eclipse.cdt.core.build.managed.IOption#getStringListValue()
*/
public String[] getStringListValue() throws BuildException {
- if (valueType != IOption.STRING_LIST) {
+ if (valueType != STRING_LIST) {
throw new BuildException("bad value type");
}
List v = (List)value;
@@ -247,7 +247,7 @@ public class Option extends BuildObject implements IOption {
* @see org.eclipse.cdt.core.build.managed.IOption#getStringValue()
*/
public String getStringValue() throws BuildException {
- if (valueType != IOption.STRING) {
+ if (valueType != STRING) {
throw new BuildException("bad value type");
}
return value == null ? EMPTY_STRING : (String)value;
@@ -261,6 +261,20 @@ public class Option extends BuildObject implements IOption {
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#getUserObjects()
+ */
+ public String[] getUserObjects() throws BuildException {
+ if (valueType != OBJECTS) {
+ throw new BuildException("bad value type");
+ }
+ // This is the right puppy, so return its list value
+ List v = (List)value;
+ return v != null
+ ? (String[])v.toArray(new String[v.size()])
+ : EMPTY_STRING_ARRAY;
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IOption#getValueType()
*/
public int getValueType() {
@@ -281,7 +295,7 @@ public class Option extends BuildObject implements IOption {
throws BuildException
{
if (valueType != IOption.STRING
- || valueType != IOption.ENUMERATED)
+ || valueType != ENUMERATED)
throw new BuildException("Bad value for type");
if (config == null) {
@@ -299,10 +313,11 @@ public class Option extends BuildObject implements IOption {
public IOption setValue(IConfiguration config, String[] value)
throws BuildException
{
- if (valueType != IOption.STRING_LIST
- || valueType != IOption.INCLUDE_PATH
- || valueType != IOption.PREPROCESSOR_SYMBOLS
- || valueType != IOption.LIBRARIES)
+ if (valueType != STRING_LIST
+ || valueType != INCLUDE_PATH
+ || valueType != PREPROCESSOR_SYMBOLS
+ || valueType != LIBRARIES
+ || valueType != OBJECTS)
throw new BuildException("Bad value for type");
if (config == null) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
index 5f72cf0dd34..12bda314184 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
@@ -42,7 +42,8 @@ public class OptionReference implements IOption {
private Object value;
/**
- * Created internally.
+ * Constructor called when the option reference is created from an
+ * existing <code>IOption</code>
*
* @param owner
* @param option
@@ -56,26 +57,27 @@ public class OptionReference implements IOption {
}
/**
- * Created from extension point.
+ * This constructor will be called when the receiver is created from
+ * the settings found in an extension point.
*
* @param owner
* @param element
*/
public OptionReference(ToolReference owner, IConfigurationElement element) {
this.owner = owner;
- option = owner.getTool().getOption(element.getAttribute(IOption.ID));
+ option = owner.getTool().getOption(element.getAttribute(ID));
owner.addOptionReference(this);
// value
switch (option.getValueType()) {
- case IOption.BOOLEAN:
- value = new Boolean(element.getAttribute(IOption.DEFAULT_VALUE));
+ case BOOLEAN:
+ value = new Boolean(element.getAttribute(DEFAULT_VALUE));
break;
- case IOption.STRING:
- value = element.getAttribute(IOption.DEFAULT_VALUE);
+ case STRING:
+ value = element.getAttribute(DEFAULT_VALUE);
break;
- case IOption.ENUMERATED:
+ case ENUMERATED:
String temp = element.getAttribute(DEFAULT_VALUE);
if (temp == null) {
try {
@@ -86,21 +88,22 @@ public class OptionReference implements IOption {
}
value = temp;
break;
- case IOption.STRING_LIST:
- case IOption.INCLUDE_PATH:
- case IOption.PREPROCESSOR_SYMBOLS:
- case IOption.LIBRARIES:
+ case STRING_LIST:
+ case INCLUDE_PATH:
+ case PREPROCESSOR_SYMBOLS:
+ case LIBRARIES:
+ case OBJECTS:
List valueList = new ArrayList();
builtIns = new ArrayList();
- IConfigurationElement[] valueElements = element.getChildren(IOption.LIST_VALUE);
+ IConfigurationElement[] valueElements = element.getChildren(LIST_VALUE);
for (int i = 0; i < valueElements.length; ++i) {
IConfigurationElement valueElement = valueElements[i];
- Boolean isBuiltIn = new Boolean(valueElement.getAttribute(IOption.LIST_ITEM_BUILTIN));
+ Boolean isBuiltIn = new Boolean(valueElement.getAttribute(LIST_ITEM_BUILTIN));
if (isBuiltIn.booleanValue()) {
- builtIns.add(valueElement.getAttribute(IOption.LIST_ITEM_VALUE));
+ builtIns.add(valueElement.getAttribute(LIST_ITEM_VALUE));
}
else {
- valueList.add(valueElement.getAttribute(IOption.LIST_ITEM_VALUE));
+ valueList.add(valueElement.getAttribute(LIST_ITEM_VALUE));
} }
value = valueList;
break;
@@ -115,34 +118,35 @@ public class OptionReference implements IOption {
*/
public OptionReference(ToolReference owner, Element element) {
this.owner = owner;
- option = owner.getTool().getOption(element.getAttribute(IOption.ID));
+ option = owner.getTool().getOption(element.getAttribute(ID));
owner.addOptionReference(this);
// value
switch (option.getValueType()) {
- case IOption.BOOLEAN:
- value = new Boolean(element.getAttribute(IOption.DEFAULT_VALUE));
+ case BOOLEAN:
+ value = new Boolean(element.getAttribute(DEFAULT_VALUE));
break;
- case IOption.STRING:
- case IOption.ENUMERATED:
- value = (String) element.getAttribute(IOption.DEFAULT_VALUE);
+ case STRING:
+ case ENUMERATED:
+ value = (String) element.getAttribute(DEFAULT_VALUE);
break;
- case IOption.STRING_LIST:
- case IOption.INCLUDE_PATH:
- case IOption.PREPROCESSOR_SYMBOLS:
- case IOption.LIBRARIES:
+ case STRING_LIST:
+ case INCLUDE_PATH:
+ case PREPROCESSOR_SYMBOLS:
+ case LIBRARIES:
+ case OBJECTS:
List valueList = new ArrayList();
builtIns = new ArrayList();
- NodeList nodes = element.getElementsByTagName(IOption.LIST_VALUE);
+ NodeList nodes = element.getElementsByTagName(LIST_VALUE);
for (int i = 0; i < nodes.getLength(); ++i) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
- Boolean isBuiltIn = new Boolean(((Element)node).getAttribute(IOption.LIST_ITEM_BUILTIN));
+ Boolean isBuiltIn = new Boolean(((Element)node).getAttribute(LIST_ITEM_BUILTIN));
if (isBuiltIn.booleanValue()) {
- builtIns.add(((Element)node).getAttribute(IOption.LIST_ITEM_VALUE));
+ builtIns.add(((Element)node).getAttribute(LIST_ITEM_VALUE));
} else {
- valueList.add(((Element)node).getAttribute(IOption.LIST_ITEM_VALUE));
+ valueList.add(((Element)node).getAttribute(LIST_ITEM_VALUE));
}
}
}
@@ -159,36 +163,37 @@ public class OptionReference implements IOption {
* @param element
*/
public void serialize(Document doc, Element element) {
- element.setAttribute(IOption.ID, option.getId());
+ element.setAttribute(ID, option.getId());
// value
switch (option.getValueType()) {
- case IOption.BOOLEAN:
- element.setAttribute(IOption.DEFAULT_VALUE, ((Boolean)value).toString());
+ case BOOLEAN:
+ element.setAttribute(DEFAULT_VALUE, ((Boolean)value).toString());
break;
- case IOption.STRING:
- case IOption.ENUMERATED:
- element.setAttribute(IOption.DEFAULT_VALUE, (String)value);
+ case STRING:
+ case ENUMERATED:
+ element.setAttribute(DEFAULT_VALUE, (String)value);
break;
- case IOption.STRING_LIST:
- case IOption.INCLUDE_PATH:
- case IOption.PREPROCESSOR_SYMBOLS:
- case IOption.LIBRARIES:
+ case STRING_LIST:
+ case INCLUDE_PATH:
+ case PREPROCESSOR_SYMBOLS:
+ case LIBRARIES:
+ case OBJECTS:
ArrayList stringList = (ArrayList)value;
ListIterator iter = stringList.listIterator();
while (iter.hasNext()) {
- Element valueElement = doc.createElement(IOption.LIST_VALUE);
- valueElement.setAttribute(IOption.LIST_ITEM_VALUE, (String)iter.next());
- valueElement.setAttribute(IOption.LIST_ITEM_BUILTIN, "false");
+ Element valueElement = doc.createElement(LIST_VALUE);
+ valueElement.setAttribute(LIST_ITEM_VALUE, (String)iter.next());
+ valueElement.setAttribute(LIST_ITEM_BUILTIN, "false");
element.appendChild(valueElement);
}
// Serialize the built-ins that have been overridden
if (builtIns != null) {
iter = builtIns.listIterator();
while (iter.hasNext()) {
- Element valueElement = doc.createElement(IOption.LIST_VALUE);
- valueElement.setAttribute(IOption.LIST_ITEM_VALUE, (String)iter.next());
- valueElement.setAttribute(IOption.LIST_ITEM_BUILTIN, "true");
+ Element valueElement = doc.createElement(LIST_VALUE);
+ valueElement.setAttribute(LIST_ITEM_VALUE, (String)iter.next());
+ valueElement.setAttribute(LIST_ITEM_BUILTIN, "true");
element.appendChild(valueElement);
}
}
@@ -223,7 +228,7 @@ public class OptionReference implements IOption {
public String[] getDefinedSymbols() throws BuildException {
if (value == null)
return option.getDefinedSymbols();
- else if (getValueType() == IOption.PREPROCESSOR_SYMBOLS) {
+ else if (getValueType() == PREPROCESSOR_SYMBOLS) {
ArrayList list = (ArrayList)value;
return (String[]) list.toArray(new String[list.size()]);
}
@@ -252,7 +257,7 @@ public class OptionReference implements IOption {
public String[] getIncludePaths() throws BuildException {
if (value == null)
return option.getIncludePaths();
- else if (getValueType() == IOption.INCLUDE_PATH) {
+ else if (getValueType() == INCLUDE_PATH) {
ArrayList list = (ArrayList)value;
return (String[]) list.toArray(new String[list.size()]);
}
@@ -266,7 +271,7 @@ public class OptionReference implements IOption {
public String[] getLibraries() throws BuildException {
if (value == null)
return option.getLibraries();
- else if (getValueType() == IOption.LIBRARIES) {
+ else if (getValueType() == LIBRARIES) {
ArrayList list = (ArrayList)value;
return (String[]) list.toArray(new String[list.size()]);
}
@@ -289,7 +294,7 @@ public class OptionReference implements IOption {
if (value == null){
return option.getBooleanValue();
}
- else if (getValueType() == IOption.BOOLEAN) {
+ else if (getValueType() == BOOLEAN) {
Boolean bool = (Boolean) value;
return bool.booleanValue();
} else {
@@ -315,7 +320,7 @@ public class OptionReference implements IOption {
if (value == null) {
// Return the default defined for the enumeration in the manifest.
return option.getSelectedEnum();
- } else if (getValueType() == IOption.ENUMERATED) {
+ } else if (getValueType() == ENUMERATED) {
// Value will contain the human-readable name of the enum
return (String) value;
} else {
@@ -329,7 +334,7 @@ public class OptionReference implements IOption {
public String[] getStringListValue() throws BuildException {
if (value == null)
return option.getStringListValue();
- else if (getValueType() == IOption.STRING_LIST) {
+ else if (getValueType() == STRING_LIST) {
ArrayList list = (ArrayList)value;
return (String[]) list.toArray(new String[list.size()]);
}
@@ -343,7 +348,7 @@ public class OptionReference implements IOption {
public String getStringValue() throws BuildException {
if (value == null)
return option.getStringValue();
- else if (getValueType() == IOption.STRING)
+ else if (getValueType() == STRING)
return (String)value;
else
throw new BuildException("bad value type");
@@ -356,41 +361,77 @@ public class OptionReference implements IOption {
return owner;
}
+ /**
+ * Answers the tool reference that contains the receiver.
+ *
+ * @return ToolReference
+ */
public ToolReference getToolReference() {
return owner;
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#getUserObjects()
+ */
+ public String[] getUserObjects() throws BuildException {
+ if (value == null)
+ return option.getDefinedSymbols();
+ else if (getValueType() == OBJECTS) {
+ ArrayList list = (ArrayList)value;
+ return (String[]) list.toArray(new String[list.size()]);
+ }
+ else
+ throw new BuildException("bad value type");
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IOption#getValueType()
*/
public int getValueType() {
return option.getValueType();
}
+ /**
+ * Answers <code>true</code> if the receiver is a reference to the
+ * <code>IOption</code> specified in the argument, esle answers <code>false</code>.
+ *
+ * @param target
+ * @return boolean
+ */
public boolean references(IOption target) {
- if (equals(target))
+ if (equals(target)) {
// we are the target
return true;
- else if (option instanceof OptionReference)
+ } else if (option instanceof OptionReference) {
// check the reference we are overriding
return ((OptionReference)option).references(target);
- else
+ } else {
// the real reference
return option.equals(target);
+ }
}
/**
+ * Sets the boolean value of the receiver to the value specified in the argument.
+ * If the receive is not a reference to a boolean option, method will throw an
+ * exception.
+ *
* @param value
+ * @throws BuildException
*/
public void setValue(boolean value) throws BuildException {
- if (getValueType() == IOption.BOOLEAN)
+ if (getValueType() == BOOLEAN)
this.value = new Boolean(value);
else
throw new BuildException("bad value type");
}
+ /**
+ * @param value
+ * @throws BuildException
+ */
public void setValue(String value) throws BuildException {
- if (getValueType() == IOption.STRING || getValueType() == IOption.ENUMERATED)
+ if (getValueType() == STRING || getValueType() == ENUMERATED)
this.value = value;
else
throw new BuildException("bad value type");
@@ -403,14 +444,16 @@ public class OptionReference implements IOption {
* @throws BuildException
*/
public void setValue(String [] value) throws BuildException {
- if (getValueType() == IOption.STRING_LIST
- || getValueType() == IOption.INCLUDE_PATH
- || getValueType() == IOption.PREPROCESSOR_SYMBOLS
- || getValueType() == IOption.LIBRARIES) {
+ if (getValueType() == STRING_LIST
+ || getValueType() == INCLUDE_PATH
+ || getValueType() == PREPROCESSOR_SYMBOLS
+ || getValueType() == LIBRARIES
+ || getValueType() == OBJECTS) {
// Just replace what the option reference is holding onto
this.value = new ArrayList(Arrays.asList(value));
}
else
throw new BuildException("bad value type");
}
+
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog b/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog
index f0a2e2f0649..3ba04427453 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog
+++ b/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog
@@ -1,4 +1,21 @@
2003-09-25 Sean Evoy
+ For bug (really an enhancement request)43756, I added the word default to a
+ widget label to try and make it clear that a new configuration will be based
+ on default values, not user-overridden stuff. It remains to be seen if this
+ actually helps, but it seems reasonable.
+ * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
+
+ For bug 43220 I now display a widget just for user objects.
+ * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
+ * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
+
+ I also reordered the plugin definition for the linker tools, and moved some of
+ the option labels to the plugin property file. I also added a user object option
+ to each linker tool definition.
+ * plugin.properties
+ * plugin.xml
+
+2003-09-25 Sean Evoy
This patch contains a lot of changes needed to implement fixes for 42648 and
43122.
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
index 10a64d102da..55075da5be9 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties
@@ -37,6 +37,13 @@ Option.Posix.Optimize.Most=Optimize most (-O3)
Option.Posix.Verbose=Verbose (-v)
Option.OtherFlags=Other flags
+Option.Posix.Linker.NoStartFiles=Do not use standard start files (-nostartfiles)
+Option.Posix.Linker.NoDefLibs=Do not use default libraries (-nodefaultlibs)
+Option.Posix.Linker.NoStdLibs=No startup or default libs (-nostdlib)
+Option.Posix.Linker.Strip=Remove symbol table (-s)
+Option.Posix.Linker.Static=No shared libraries (-static)
+Option.Posix.Linker.XLinker=Other options (-Xlinker [option])
Option.Posix.Linker.Flags=Linker flags
Option.Posix.Libs=Libraries (-l)
Option.Posix.Libsearch=Library search path (-L)
+Option.Posix.UserObjs=Other objects
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
index 7210dbccae4..4c5fa3e7fbc 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
@@ -418,25 +418,88 @@
id="cygwin.linker.category.general">
</optionCategory>
<option
- name="Linker Flags"
+ defaultValue="false"
+ name="%Option.Posix.Linker.NoStartFiles"
category="cygwin.linker.category.general"
- valueType="string"
- id="cygwin.link.ld.flags">
+ command="-nostartfiles"
+ valueType="boolean"
+ id="linux.gnu.linker.options.nostart">
</option>
<option
- name="%Option.Posix.Libs"
+ defaultValue="false"
+ name="%Option.Posix.Linker.NoDefLibs"
+ category="cygwin.linker.category.general"
+ command="-nodefaultlibs"
+ valueType="boolean"
+ id="cygwin.gnu.linker.options.nodeflibs">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Linker.NoStdLibs"
+ category="cygwin.linker.category.general"
+ command="-nostdlib"
+ valueType="boolean"
+ id="cygwin.gnu.linker.options.nostdlibs">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Linker.Strip"
+ category="linux.gnu.linker.category.options"
+ command="-s"
+ valueType="boolean"
+ id="cygwin.gnu.linker.options.strip">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Linker.Static"
category="cygwin.linker.category.general"
+ command="-static"
+ valueType="boolean"
+ id="cygwin.gnu.linker.options.noshared">
+ </option>
+ <optionCategory
+ owner="org.eclipse.cdt.build.tool.cygwin.link"
+ name="%OptionCategory.Libs"
+ id="cygwin.gnu.linker.category.libs">
+ </optionCategory>
+ <option
+ name="%Option.Posix.Libs"
+ category="cygwin.gnu.linker.category.libs"
command="-l"
valueType="libs"
id="cygwin.link.libs">
</option>
<option
name="%Option.Posix.Libsearch"
- category="cygwin.linker.category.general"
+ category="cygwin.gnu.linker.category.libs"
command="-L"
valueType="stringList"
id="cygwin.link.ld.paths">
</option>
+ <optionCategory
+ owner="org.eclipse.cdt.build.tool.cygwin.link"
+ name="%OptionCategory.Misc"
+ id="cygwin.gnu.linker.category.other">
+ </optionCategory>
+ <option
+ name="Linker Flags"
+ category="cygwin.gnu.linker.category.other"
+ valueType="string"
+ id="cygwin.link.ld.flags">
+ </option>
+ <option
+ name="%Option.Posix.Linker.XLinker"
+ category="cygwin.gnu.linker.category.other"
+ command="-Xlinker"
+ valueType="stringList"
+ id="cygwin.gnu.linker.options.other">
+ </option>
+ <option
+ name="%Option.Posix.UserObjs"
+ category="cygwin.gnu.linker.category.other"
+ valueType="userObjs"
+ id="cygwin.gnu.link.ld.userobjs">
+ </option>
</tool>
</target>
<target
@@ -490,29 +553,84 @@
<optionCategory
owner="org.eclipse.cdt.build.tool.cygwin.solink"
name="%OptionCategory.General"
- id="cygwin.solink.category.general">
+ id="cygwin.gnu.solink.category.general">
</optionCategory>
<option
- defaultValue=""
- name="Linker Flags"
- category="cygwin.solink.category.general"
- valueType="string"
- id="cygwin.solink.ld.flags">
+ defaultValue="false"
+ name="%Option.Posix.Linker.NoStartFiles"
+ category="cygwin.gnu.solink.category.general"
+ command="-nostartfiles"
+ valueType="boolean"
+ id="linux.gnu.solink.options.nostart">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Linker.NoDefLibs"
+ category="cygwin.gnu.solink.category.general"
+ command="-nodefaultlibs"
+ valueType="boolean"
+ id="cygwin.gnu.solink.options.nodeflibs">
+ </option>
+ <option
+ defaultValue="false"
+ name="%Option.Posix.Linker.NoStdLibs"
+ category="cygwin.gnu.solink.category.general"
+ command="-nostdlib"
+ valueType="boolean"
+ id="cygwin.gnu.solink.options.nostdlibs">
</option>
<option
+ defaultValue="false"
+ name="%Option.Posix.Linker.Strip"
+ category="cygwin.gnu.solink.category.general"
+ command="-s"
+ valueType="boolean"
+ id="cygwin.gnu.solink.options.strip">
+ </option>
+ <optionCategory
+ owner="org.eclipse.cdt.build.tool.cygwin.solink"
+ name="%OptionCategory.Libs"
+ id="cygwin.gnu.solink.category.libs">
+ </optionCategory>
+ <option
name="%Option.Posix.Libs"
- category="cygwin.solink.category.general"
+ category="cygwin.gnu.solink.category.libs"
command="-l"
valueType="libs"
id="cygwin.solink.libs">
</option>
<option
name="%Option.Posix.Libsearch"
- category="cygwin.solink.category.general"
+ category="cygwin.gnu.solink.category.libs"
command="-L"
valueType="stringList"
id="cygwin.solink.ld.paths">
</option>
+ <optionCategory
+ owner="org.eclipse.cdt.build.tool.cygwin.solink"
+ name="%OptionCategory.Misc"
+ id="cygwin.gnu.solink.category.other">
+ </optionCategory>
+ <option
+ defaultValue=""
+ name="Linker Flags"
+ category="cygwin.gnu.solink.category.other"
+ valueType="string"
+ id="cygwin.solink.ld.flags">
+ </option>
+ <option
+ name="%Option.Posix.Linker.XLinker"
+ category="cygwin.gnu.solink.category.other"
+ command="-Xlinker"
+ valueType="stringList"
+ id="cygwin.gnu.solinker.options.other">
+ </option>
+ <option
+ name="%Option.Posix.UserObjs"
+ category="cygwin.gnu.solink.category.other"
+ valueType="userObjs"
+ id="cygwin.gnu.solink.userobjs">
+ </option>
</tool>
</target>
<target
@@ -1002,7 +1120,7 @@
</optionCategory>
<option
defaultValue="false"
- name="Do not use standard start files (-nostartfiles)"
+ name="%Option.Posix.Linker.NoStartFiles"
category="linux.gnu.linker.category.options"
command="-nostartfiles"
valueType="boolean"
@@ -1010,7 +1128,7 @@
</option>
<option
defaultValue="false"
- name="Do not use default libraries (-nodefaultlibs)"
+ name="%Option.Posix.Linker.NoDefLibs"
category="linux.gnu.linker.category.options"
command="-nodefaultlibs"
valueType="boolean"
@@ -1018,7 +1136,7 @@
</option>
<option
defaultValue="false"
- name="No startup or default libs (-nostdlib)"
+ name="%Option.Posix.Linker.NoStdLibs"
category="linux.gnu.linker.category.options"
command="-nostdlib"
valueType="boolean"
@@ -1026,7 +1144,7 @@
</option>
<option
defaultValue="false"
- name="Remove symbol table (-s)"
+ name="%Option.Posix.Linker.Strip"
category="linux.gnu.linker.category.options"
command="-s"
valueType="boolean"
@@ -1034,31 +1152,18 @@
</option>
<option
defaultValue="false"
- name="No shared libraries (-static)"
+ name="%Option.Posix.Linker.Static"
category="linux.gnu.linker.category.options"
command="-static"
valueType="boolean"
id="linux.gnu.linker.options.noshared">
</option>
- <option
- name="Other options (-Xlinker [option])"
- category="linux.gnu.linker.category.options"
- command="-Xlinker"
- valueType="stringList"
- id="linux.gnu.linker.options.other">
- </option>
<optionCategory
owner="cdt.build.tool.linux.gnu.link"
name="%OptionCategory.Libs"
id="linux.gnu.linker.category.libs">
</optionCategory>
<option
- name="%Option.Posix.Linker.Flags"
- category="linux.gnu.linker.category.libs"
- valueType="string"
- id="linux.gnu.linker.libs.flags">
- </option>
- <option
name="%Option.Posix.Libs"
category="linux.gnu.linker.category.libs"
command="-l"
@@ -1072,6 +1177,30 @@
valueType="stringList"
id="linux.gnu.linker.libs.paths">
</option>
+ <optionCategory
+ owner="cdt.build.tool.linux.gnu.link"
+ name="%OptionCategory.Misc"
+ id="linux.gnu.linker.category.other">
+ </optionCategory>
+ <option
+ name="%Option.Posix.Linker.Flags"
+ category="linux.gnu.linker.category.other"
+ valueType="string"
+ id="linux.gnu.linker.libs.flags">
+ </option>
+ <option
+ name="%Option.Posix.Linker.XLinker"
+ category="linux.gnu.linker.category.other"
+ command="-Xlinker"
+ valueType="stringList"
+ id="linux.gnu.linker.options.other">
+ </option>
+ <option
+ name="%Option.Posix.UserObjs"
+ category="linux.gnu.linker.category.other"
+ valueType="userObjs"
+ id="linux.gnu.linker.userobjs">
+ </option>
</tool>
</target>
<target
@@ -1127,7 +1256,7 @@
</optionCategory>
<option
defaultValue="false"
- name="Do not use standard start files (-nostartfiles)"
+ name="%Option.Posix.Linker.NoStartFiles"
category="linux.gnu.solink.category.options"
command="-nostartfiles"
valueType="boolean"
@@ -1135,7 +1264,7 @@
</option>
<option
defaultValue="false"
- name="Do not use default libraries (-nodefaultlibs)"
+ name="%Option.Posix.Linker.NoDefLibs"
category="linux.gnu.solink.category.options"
command="-nodefaultlibs"
valueType="boolean"
@@ -1143,7 +1272,7 @@
</option>
<option
defaultValue="false"
- name="No startup or default libs (-nostdlib)"
+ name="%Option.Posix.Linker.NoStdLibs"
category="linux.gnu.solink.category.options"
command="-nostdlib"
valueType="boolean"
@@ -1151,47 +1280,18 @@
</option>
<option
defaultValue="false"
- name="Remove symbol table (-s)"
+ name="%Option.Posix.Linker.Strip"
category="linux.gnu.solink.category.options"
command="-s"
valueType="boolean"
id="linux.gnu.solink.options.strip">
</option>
- <option
- defaultValue="false"
- name="No shared libraries (-static)"
- category="linux.gnu.solink.category.options"
- command="-static"
- valueType="boolean"
- id="linux.gnu.solink.options.noshared">
- </option>
- <option
- defaultValue="false"
- name="Bind global symbol references (-symbolic)"
- category="linux.gnu.solink.category.options"
- command="-symbolic"
- valueType="boolean"
- id="linux.gnu.solink.options.symbolic">
- </option>
- <option
- name="Other options (-Xlinker [option])"
- category="linux.gnu.solink.category.options"
- command="-Xlinker"
- valueType="stringList"
- id="linux.gnu.solink.options.other">
- </option>
<optionCategory
owner="cdt.build.tool.linux.gnu.solink"
name="%OptionCategory.Libs"
id="linux.gnu.solink.category.libs">
</optionCategory>
<option
- category="linux.gnu.solink.category.libs"
- name="%Option.Posix.Linker.Flags"
- id="linux.gnu.solink.libs.flags"
- valueType="string">
- </option>
- <option
name="%Option.Posix.Libs"
category="linux.gnu.solink.category.libs"
command="-l"
@@ -1205,6 +1305,30 @@
valueType="stringList"
id="linux.gnu.solink.libs.paths">
</option>
+ <optionCategory
+ owner="cdt.build.tool.linux.gnu.solink"
+ name="%OptionCategory.Misc"
+ id="linux.gnu.solink.category.other">
+ </optionCategory>
+ <option
+ name="%Option.Posix.Linker.Flags"
+ category="linux.gnu.solink.category.other"
+ valueType="string"
+ id="linux.gnu.solink.libs.flags">
+ </option>
+ <option
+ name="%Option.Posix.Linker.XLinker"
+ category="linux.gnu.solink.category.other"
+ command="-Xlinker"
+ valueType="stringList"
+ id="linux.gnu.solink.options.other">
+ </option>
+ <option
+ name="%Option.Posix.UserObjs"
+ category="linux.gnu.solink.category.other"
+ valueType="userObjs"
+ id="linux.gnu.solink.userobjs">
+ </option>
</tool>
</target>
<target
@@ -1601,7 +1725,7 @@
</optionCategory>
<option
defaultValue="false"
- name="Do not use standard start files (-nostartfiles)"
+ name="%Option.Posix.Linker.NoStartFiles"
category="solaris.gnu.linker.category.options"
command="-nostartfiles"
valueType="boolean"
@@ -1609,7 +1733,7 @@
</option>
<option
defaultValue="false"
- name="Do not use default libraries (-nodefaultlibs)"
+ name="%Option.Posix.Linker.NoDefLibs"
category="solaris.gnu.linker.category.options"
command="-nodefaultlibs"
valueType="boolean"
@@ -1617,7 +1741,7 @@
</option>
<option
defaultValue="false"
- name="No startup or default libs (-nostdlib)"
+ name="%Option.Posix.Linker.NoStdLibs"
category="solaris.gnu.linker.category.options"
command="-nostdlib"
valueType="boolean"
@@ -1625,7 +1749,7 @@
</option>
<option
defaultValue="false"
- name="Remove symbol table (-s)"
+ name="%Option.Posix.Linker.Strip"
category="solaris.gnu.linker.category.options"
command="-s"
valueType="boolean"
@@ -1633,31 +1757,18 @@
</option>
<option
defaultValue="false"
- name="No shared libraries (-static)"
+ name="%Option.Posix.Linker.Static"
category="solaris.gnu.linker.category.options"
command="-static"
valueType="boolean"
id="solaris.gnu.linker.options.noshared">
</option>
- <option
- name="Other options (-Xlinker [option])"
- category="solaris.gnu.linker.category.options"
- command="-Xlinker"
- valueType="stringList"
- id="solaris.gnu.linker.options.other">
- </option>
<optionCategory
owner="cdt.build.tool.solaris.gnu.link"
name="%OptionCategory.Libs"
id="solaris.gnu.linker.category.libs">
</optionCategory>
<option
- category="solaris.gnu.linker.category.libs"
- name="%Option.Posix.Linker.Flags"
- id="solaris.gnu.linker.libs.flags"
- valueType="string">
- </option>
- <option
name="%Option.Posix.Libs"
category="solaris.gnu.linker.category.libs"
command="-l"
@@ -1671,6 +1782,30 @@
valueType="stringList"
id="solaris.gnu.linker.libs.paths">
</option>
+ <optionCategory
+ owner="cdt.build.tool.solaris.gnu.link"
+ name="%OptionCategory.Misc"
+ id="solaris.gnu.linker.category.other">
+ </optionCategory>
+ <option
+ name="%Option.Posix.Linker.Flags"
+ category="solaris.gnu.linker.category.other"
+ valueType="string"
+ id="solaris.gnu.linker.libs.flags">
+ </option>
+ <option
+ name="%Option.Posix.Linker.XLinker"
+ category="solaris.gnu.linker.category.other"
+ command="-Xlinker"
+ valueType="stringList"
+ id="solaris.gnu.linker.options.other">
+ </option>
+ <option
+ name="%Option.Posix.UserObjs"
+ category="solaris.gnu.linker.category.other"
+ valueType="userObjs"
+ id="solaris.gnu.linker.userobjs">
+ </option>
</tool>
</target>
<target
@@ -1726,7 +1861,7 @@
</optionCategory>
<option
defaultValue="false"
- name="Do not use standard start files (-nostartfiles)"
+ name="%Option.Posix.Linker.NoStartFiles"
category="solaris.gnu.solink.category.options"
command="-nostartfiles"
valueType="boolean"
@@ -1734,7 +1869,7 @@
</option>
<option
defaultValue="false"
- name="Do not use default libraries (-nodefaultlibs)"
+ name="%Option.Posix.Linker.NoDefLibs"
category="solaris.gnu.solink.category.options"
command="-nodefaultlibs"
valueType="boolean"
@@ -1742,7 +1877,7 @@
</option>
<option
defaultValue="false"
- name="No startup or default libs (-nostdlib)"
+ name="%Option.Posix.Linker.NoStdLibs"
category="solaris.gnu.solink.category.options"
command="-nostdlib"
valueType="boolean"
@@ -1750,47 +1885,18 @@
</option>
<option
defaultValue="false"
- name="Remove symbol table (-s)"
+ name="%Option.Posix.Linker.Strip"
category="solaris.gnu.solink.category.options"
command="-s"
valueType="boolean"
id="solaris.gnu.solink.options.strip">
</option>
- <option
- defaultValue="false"
- name="No shared libraries (-static)"
- category="solaris.gnu.solink.category.options"
- command="-static"
- valueType="boolean"
- id="solaris.gnu.solink.options.noshared">
- </option>
- <option
- defaultValue="false"
- name="Bind global symbol references (-symbolic)"
- category="solaris.gnu.solink.category.options"
- command="-symbolic"
- valueType="boolean"
- id="solaris.gnu.solink.options.symbolic">
- </option>
- <option
- name="Other options (-Xlinker [option])"
- category="solaris.gnu.solink.category.options"
- command="-Xlinker"
- valueType="stringList"
- id="solaris.gnu.solink.options.other">
- </option>
<optionCategory
owner="cdt.build.tool.solaris.gnu.solink"
name="%OptionCategory.Libs"
id="solaris.gnu.solink.category.libs">
</optionCategory>
<option
- name="%Option.Posix.Linker.Flags"
- category="solaris.gnu.solink.category.libs"
- valueType="string"
- id="solaris.gnu.solink.libs.flags">
- </option>
- <option
name="%Option.Posix.Libs"
category="solaris.gnu.solink.category.libs"
command="-l"
@@ -1804,6 +1910,30 @@
valueType="stringList"
id="solaris.gnu.solink.libs.paths">
</option>
+ <optionCategory
+ owner="cdt.build.tool.solaris.gnu.solink"
+ name="%OptionCategory.Misc"
+ id="solaris.gnu.solink.category.other">
+ </optionCategory>
+ <option
+ name="%Option.Posix.Linker.Flags"
+ category="solaris.gnu.solink.category.other"
+ valueType="string"
+ id="solaris.gnu.solink.libs.flags">
+ </option>
+ <option
+ name="%Option.Posix.Linker.XLinker"
+ category="solaris.gnu.solink.category.other"
+ command="-Xlinker"
+ valueType="stringList"
+ id="solaris.gnu.solink.options.other">
+ </option>
+ <option
+ name="%Option.Posix.UserObjs"
+ category="solaris.gnu.solink.category.other"
+ valueType="userObjs"
+ id="solaris.gnu.solink.userobjs">
+ </option>
</tool>
</target>
<target
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
index 7bdbcf4b7f3..4f27ef06003 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
@@ -51,7 +51,7 @@ BuildPropertyPage.manage.title=Manage
# ----------- New Configuration -----------
NewConfiguration.label.name=Configuration name:
-NewConfiguration.label.copy=Copy settings from:
+NewConfiguration.label.copy=Copy default settings from:
NewConfiguration.error.title=Error
NewConfiguration.error.duplicateName=A configuration named "{0}" already exists.
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
index c4d4e41b841..ed3fa75a532 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
@@ -81,6 +81,7 @@ public class BuildToolSettingsPage extends FieldEditorPreferencePage {
case IOption.INCLUDE_PATH :
case IOption.PREPROCESSOR_SYMBOLS :
case IOption.LIBRARIES :
+ case IOption.OBJECTS:
BuildOptionListFieldEditor listField = new BuildOptionListFieldEditor(opt.getId(), opt.getName(), getFieldEditorParent());
addField(listField);
break;
@@ -131,6 +132,7 @@ public class BuildToolSettingsPage extends FieldEditorPreferencePage {
case IOption.INCLUDE_PATH :
case IOption.PREPROCESSOR_SYMBOLS :
case IOption.LIBRARIES :
+ case IOption.OBJECTS:
String listStr = getPreferenceStore().getString(option.getId());
String[] listVal = BuildToolsSettingsStore.parseString(listStr);
ManagedBuildManager.setOption(configuration, option, listVal);
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
index 85ad989c53d..ab25886350b 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
@@ -259,6 +259,14 @@ public class BuildToolsSettingsStore implements IPreferenceStore {
}
getOptionMap().put(name, value);
break;
+ case IOption.OBJECTS :
+ try {
+ value = createList(opt.getUserObjects());
+ } catch (BuildException e) {
+ break;
+ }
+ getOptionMap().put(name, value);
+ break;
default :
break;
}

Back to the top