[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Fixes for 43220, 43616, 43756, and 43614
|
Hi All,
It sounds like a huge patch but....
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.
All fixes have been tested on *nix.
Sean Evoy
Rational Software - IBM Software Group
Ottawa, Ontario, Canada
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.117
diff -u -r1.117 ChangeLog
--- ChangeLog 26 Sep 2003 17:53:41 -0000 1.117
+++ ChangeLog 26 Sep 2003 19:07:47 -0000
@@ -1,3 +1,8 @@
+2003-09-25 Sean Evoy
+ Bug 43220 test for the new option type and retrieval methods.
+ * plugin.xml
+ * build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
+
2003-09-25 Andrew Niefer
-bug43129 - Cannot search for definitions of global variables
-added testbug43129() in OtherPatternTests
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/plugin.xml,v
retrieving revision 1.12
diff -u -r1.12 plugin.xml
--- plugin.xml 26 Sep 2003 00:24:42 -0000 1.12
+++ plugin.xml 26 Sep 2003 19:07:47 -0000
@@ -125,12 +125,12 @@
<toolReference
id="root.tool">
<optionReference
- id="string.option"
- defaultValue="overridden">
+ defaultValue="overridden"
+ id="string.option">
</optionReference>
<optionReference
- id="boolean.option"
- defaultValue="true">
+ defaultValue="true"
+ id="boolean.option">
</optionReference>
<optionReference
defaultValue="-e2"
@@ -196,6 +196,19 @@
id="sub.tool.opts.inc.paths.more">
<listOptionValue
value="C:\home\tester/include"
+ builtIn="false">
+ </listOptionValue>
+ </option>
+ <option
+ name="User Objects"
+ valueType="userObjs"
+ id="sub.tool.opt.objs">
+ <listOptionValue
+ value="obj1.o"
+ builtIn="false">
+ </listOptionValue>
+ <listOptionValue
+ value="obj2.o"
builtIn="false">
</listOptionValue>
</option>
Index: build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java,v
retrieving revision 1.10
diff -u -r1.10 ManagedBuildTests.java
--- build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java 26 Sep 2003 00:24:42 -0000 1.10
+++ build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java 26 Sep 2003 19:07:47 -0000
@@ -805,9 +805,9 @@
// Now get the tool defined for this target
ITool subTool = tools[1];
assertEquals("Sub Tool", subTool.getName());
- // Confirm that it has three options
+ // Confirm that it has four options
IOption[] subOpts = subTool.getOptions();
- assertEquals(3, subOpts.length);
+ assertEquals(4, subOpts.length);
assertEquals("", subTool.getOutputFlag());
assertTrue(subTool.buildsFileType("yarf"));
assertTrue(subTool.producesFileType("bus"));
@@ -841,7 +841,14 @@
assertEquals(1, moreIncPath.length);
assertEquals("C:\\home\\tester/include", moreIncPath[0]);
assertEquals("-I", subOpts[2].getCommand());
-
+ // Check the user object option
+ assertEquals("User Objects", subOpts[3].getName());
+ assertEquals(IOption.OBJECTS, subOpts[3].getValueType());
+ String[] objs = subOpts[3].getUserObjects();
+ assertEquals(2, objs.length);
+ assertEquals("obj1.o", objs[0]);
+ assertEquals("obj2.o", objs[1]);
+
// Get the configs for this target; it should inherit all the configs defined for the parent
IConfiguration[] configs = target.getConfigurations();
assertEquals(4, configs.length);
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/plugin.properties,v
retrieving revision 1.1
diff -u -r1.1 plugin.properties
--- plugin.properties 15 Sep 2003 20:44:24 -0000 1.1
+++ plugin.properties 26 Sep 2003 19:07:59 -0000
@@ -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
Index: schema/ManagedBuildTools.exsd
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd,v
retrieving revision 1.3
diff -u -r1.3 ManagedBuildTools.exsd
--- schema/ManagedBuildTools.exsd 26 Sep 2003 00:20:13 -0000 1.3
+++ schema/ManagedBuildTools.exsd 26 Sep 2003 19:08:00 -0000
@@ -142,9 +142,9 @@
<attribute name="valueType" use="default" value="string">
<annotation>
<documentation>
- General options can be one of the following types; 'string' for catch-all entries for options that cannot be easily defined any other way, 'string list' for entries that consist of a list of values such as defined symbols or paths, 'boolean' for options that have two values, and 'enumerated' for options that are one-of a list of values.
-
-Two additional types exist to flag options of special relevance to the build model; 'include', and 'definedSymbols'. You can pre-populate with optionValues, and they will display in the UI the same way the 'StringList' options do. The build model will look specifically for these value types when clients query for include paths and preprocessor defines.
+ General options can be one of the following types; 'string' for catch-all entries for options that cannot be easily defined any other way, 'string list' for entries that consist of a list of values such as defined symbols or paths, 'boolean' for options that have two values, and 'enumerated' for options that are one-of a list of values.
+
+Additional special types exist to flag options of special relevance to the build model; 'include', 'libs', 'userObjs' and 'definedSymbols'. You can pre-populate with optionValues, and they will display in the UI the same way the 'stringList' 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 @@
</enumeration>
<enumeration value="libs">
</enumeration>
+ <enumeration value="userObjs">
+ </enumeration>
</restriction>
</simpleType>
</attribute>
@@ -473,48 +475,48 @@
<meta.section type="examples"/>
</appInfo>
<documentation>
- The following is an example of the extension point usage:
-<p>
-<pre>
- <extension
- id="buildExample"
- name="Tools for Build Example"
- point="org.eclipse.cdt.core.ManagedBuildInfo">
- <target
- makeFlags="-k"
- isTest="false"
- cleanCommand="rm -rf"
- name="Executable"
- defaultExtension=".exe"
- isAbstract="false"
- makeCommand="make"
- id="example.target.executable">
- <tool
- sources="C"
- name="Compiler"
- outputFlag="-o"
- outputs="exe"
- command="g++"
- id="executable.compiler">
- <optionCategory
- owner="executable.compiler"
- name="Flags"
- id="compiler.category.flags">
- </optionCategory>
- <option
- defaultValue="-c"
- name="Compiler Flags"
- category="compiler.category.flags"
- valueType="string"
- id="category.flags.comp_flags">
- </option>
- </tool>
- <configuration
- name="Default"
- id="example.config.default">
- </configuration>
- </target>
- </extension>
+ The following is an example of the extension point usage:
+<p>
+<pre>
+ <extension
+ id="buildExample"
+ name="Tools for Build Example"
+ point="org.eclipse.cdt.core.ManagedBuildInfo">
+ <target
+ makeFlags="-k"
+ isTest="false"
+ cleanCommand="rm -rf"
+ name="Executable"
+ defaultExtension=".exe"
+ isAbstract="false"
+ makeCommand="make"
+ id="example.target.executable">
+ <tool
+ sources="C"
+ name="Compiler"
+ outputFlag="-o"
+ outputs="exe"
+ command="g++"
+ id="executable.compiler">
+ <optionCategory
+ owner="executable.compiler"
+ name="Flags"
+ id="compiler.category.flags">
+ </optionCategory>
+ <option
+ defaultValue="-c"
+ name="Compiler Flags"
+ category="compiler.category.flags"
+ valueType="string"
+ id="category.flags.comp_flags">
+ </option>
+ </tool>
+ <configuration
+ name="Default"
+ id="example.config.default">
+ </configuration>
+ </target>
+ </extension>
</pre>
</documentation>
</annotation>
@@ -542,7 +544,7 @@
<meta.section type="copyright"/>
</appInfo>
<documentation>
- Copyright (c) 2003 IBM Corporation and others.
+ Copyright (c) 2003 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available on the <a href="http://www.eclipse.org/legal/cpl-v10.html"> Eclipse</a> website.
</documentation>
</annotation>
Index: src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java,v
retrieving revision 1.2
diff -u -r1.2 IManagedBuildInfo.java
--- src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java 16 Sep 2003 21:27:58 -0000 1.2
+++ src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java 26 Sep 2003 19:08:00 -0000
@@ -183,6 +183,12 @@
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
Index: src/org/eclipse/cdt/managedbuilder/core/IOption.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java,v
retrieving revision 1.1
diff -u -r1.1 IOption.java
--- src/org/eclipse/cdt/managedbuilder/core/IOption.java 15 Sep 2003 20:44:24 -0000 1.1
+++ src/org/eclipse/cdt/managedbuilder/core/IOption.java 26 Sep 2003 19:08:00 -0000
@@ -22,6 +22,7 @@
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 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 @@
* 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 @@
* 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 @@
* 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 @@
* 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 @@
/**
* 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 @@
* 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 @@
/**
* 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 @@
/**
* 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 @@
/**
* 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();
Index: src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java,v
retrieving revision 1.4
diff -u -r1.4 MakefileGenerator.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java 26 Sep 2003 17:53:45 -0000 1.4
+++ src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java 26 Sep 2003 19:08:00 -0000
@@ -329,6 +329,15 @@
}
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 @@
/* (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 @@
// 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 @@
/*
* 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 @@
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 @@
buffer.append(addMacros());
// Append the module list
- buffer.append(addModules());
+ buffer.append(addSubdirectories());
// Add targets
buffer.append(addTargets(rebuild));
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java,v
retrieving revision 1.3
diff -u -r1.3 ManagedBuildInfo.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java 25 Sep 2003 03:19:24 -0000 1.3
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java 26 Sep 2003 19:08:00 -0000
@@ -476,6 +476,35 @@
}
/* (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() {
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java,v
retrieving revision 1.1
diff -u -r1.1 Option.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Option.java 15 Sep 2003 20:44:24 -0000 1.1
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Option.java 26 Sep 2003 19:08:00 -0000
@@ -22,9 +22,6 @@
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 @@
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 @@
* @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 @@
* @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 @@
* @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 @@
* @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 @@
* @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 @@
* @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 @@
}
/* (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 @@
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 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) {
Index: src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java,v
retrieving revision 1.2
diff -u -r1.2 OptionReference.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java 26 Sep 2003 00:20:13 -0000 1.2
+++ src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java 26 Sep 2003 19:08:01 -0000
@@ -42,7 +42,8 @@
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 @@
}
/**
- * 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 @@
}
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 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 @@
* @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 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 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 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 @@
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 @@
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 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 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 @@
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 @@
* @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");
}
+
}
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/ChangeLog,v
retrieving revision 1.5
diff -u -r1.5 ChangeLog
--- ChangeLog 26 Sep 2003 00:20:04 -0000 1.5
+++ ChangeLog 26 Sep 2003 19:08:13 -0000
@@ -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.
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/plugin.properties,v
retrieving revision 1.3
diff -u -r1.3 plugin.properties
--- plugin.properties 26 Sep 2003 00:20:04 -0000 1.3
+++ plugin.properties 26 Sep 2003 19:08:13 -0000
@@ -37,6 +37,13 @@
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
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/plugin.xml,v
retrieving revision 1.6
diff -u -r1.6 plugin.xml
--- plugin.xml 26 Sep 2003 00:20:04 -0000 1.6
+++ plugin.xml 26 Sep 2003 19:08:14 -0000
@@ -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"
@@ -1803,6 +1909,30 @@
command="-L"
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>
Index: src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties,v
retrieving revision 1.3
diff -u -r1.3 PluginResources.properties
--- src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties 24 Sep 2003 14:20:49 -0000 1.3
+++ src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties 26 Sep 2003 19:08:14 -0000
@@ -51,7 +51,7 @@
# ----------- 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.
Index: src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java,v
retrieving revision 1.1
diff -u -r1.1 BuildToolSettingsPage.java
--- src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java 15 Sep 2003 20:44:42 -0000 1.1
+++ src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java 26 Sep 2003 19:08:15 -0000
@@ -81,6 +81,7 @@
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 @@
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);
Index: src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java,v
retrieving revision 1.1
diff -u -r1.1 BuildToolsSettingsStore.java
--- src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java 15 Sep 2003 20:44:42 -0000 1.1
+++ src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java 26 Sep 2003 19:08:15 -0000
@@ -259,6 +259,14 @@
}
getOptionMap().put(name, value);
break;
+ case IOption.OBJECTS :
+ try {
+ value = createList(opt.getUserObjects());
+ } catch (BuildException e) {
+ break;
+ }
+ getOptionMap().put(name, value);
+ break;
default :
break;
}