diff --git a/build/org.eclipse.cdt.managedbuilder.core/ChangeLog b/build/org.eclipse.cdt.managedbuilder.core/ChangeLog index 337e2d4c823..cc251528f15 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/ChangeLog +++ b/build/org.eclipse.cdt.managedbuilder.core/ChangeLog @@ -1,337 +1,361 @@ -2004-02-17 Sean Evoy - Fix for critical bug 44163. - The managed build info would become confused when the project it was associated - with was renamed. The project still stored the build information in its session - data, but the internal reference to the owner project was not updated in the - build info. Now, when the build info is retrieved from a project, the manager - asks the info to do a sanity test to check the identity of the true owner against - the owner the it thinks it has. If they differ, the build information updates its - owner and the owner of all the targets it maintains for the project. - * src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - * src/org/eclipse/cdt/managedbuilder/core/ITarget.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java - - - Fixes for 51646 - Moved the makefile comment character out of the hard-coded strings and into - the makefile generator. - * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - - Fixes for bug 49590: - The target maintains the default extension and the overridden extension. There - is an interface to get and set the extension, but the method to get the default - extension is deprecated. - * src/org/eclipse/cdt/managedbuilder/core/ITarget.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java - - The build information now has a method to get at the extension - * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - - The makefile generator now asks for both the name and the extension when - generating targets and dependencies. - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - -2003-10-23 Bogdan Gheorghe - Updated the indexManager.perfomConcurrentJob call in MakefileGenerator - -2003-10-03 Sean Evoy - Fix for critical bug 44134. - - The problem lies in how the makefile is generated when a build target - references other projects. The makefile creates a command to change to - the build directory of the referenced project and call $(MAKE) there, i.e. - cd ; $(MAKE) clean all - - The problem arises when the directory change fails. As of RC0, the command - after the semi-colon is evaluated. Unfortunately, it evaluates to a recursive - make call in the build directory of the build target and 'make' will keep - invoking more 'make's until Eclipse runs out of memory. With a manual build, - the user can still cancel the build. When autobuild is turned on, they cannot. - The only way to shut down Eclipse under that scenario is to kill it, and when - it restarts, autobuild is still enabled and the problem repeats. - - The solution is to NOT perform the 'make' command if the 'cd' fails, i.e. - cd && $(MAKE) clean all - - When the dependencies are generated this way, the 'cd' will fail as will the - build. The final tweak is to ignore the 'cd' failure and allow the rest of - the build to continue, i.e. - -cd && $(MAKE) clean all - - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - -2003-10-01 Sean Evoy - Final fix for bugs 44020. - The problem lay with the way that new projects were being created when the - root configuration of the project had tool references overriding options. - What the new configuration should have been doing is making a personal copy - of the tool reference and its options. Instead, they were all sharing the - parents. Seems simple enough now that I found it. - - OptionReference provides a method to retreive its option (so new - OptionReferences can be cloned). - * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java - - Configuration now behaves correctly when it is created from another configuration. - * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java - -2003-10-01 Sean Evoy - Fix for bugs 43490 (trivial), 44020, and 43980. - Added a new field to the schema for a tool. The attribute manages a list of - project natures that the tool should be filtered against in the build model - and UI. - * schema/ManagedBuildTools.exsd - - Updated the ITool interface and its mplementors to pay attention to this new - attribute when loading from a plugin file. Clients can querry for a numeric - constant indicating the filter. - * src/org/eclipse/cdt/managedbuilder/core/ITool.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java - - All the methods in managed build manager that access information stored in a tool - first check that the tool is valid for the project nature. - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - - Put a safety check in the option reference constructor when reading one in from - a project file. I the option reference is to an option not managed by the build - model, the constructor does not add itself to the runtime representation of the - model. - * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java - - In preparation for 44020, each new target created is assigned a truly random ID. - * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java - -2003-09-30 Sean Evoy - Fix for bug 41826. - - Finished the use case for changing header files and triggering a build. I had - to add a new attribute to the build model schema to allow a build information - client to determine that a file is considered a header file. - * schema/ManagedBuildTools.exsd - - The ITool, and its implementors now have a method to test if an extension is - considered to belong to a header file. The Tool also pays attention to the new - attribute when it reads itself in from the plugin file. - * src/org/eclipse/cdt/managedbuilder/core/ITool.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java - - There is a method for clients of this information on the BuildInfo interface and - its implementor. - * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - - The builder had to be tweaked in order to behave correctly on a build of an - empty project or non-managed projects. - * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java - - The makefile generator had to be tweaked to properly add folders that are effected - by header file changes. - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - -2003-09-26 Sean Evoy - A partial implementation for bug 41826. This patch contains the logic to properly - respond in the face of the following project changes: - - 1. A generated project element, such as the build target or an intermediate file, - is deleted in the build project, or any projects it references. - 2. The build settings change in the build project or any projects it - references. - - In order to actually do this correctly, I had to stop being so precious during the - build. The makefile generator was was calculating the "build needed" state as it - walked the change delta. However, the Eclipse core has already determined that I - need to do a build. Further, as I discovered earlier, it doesn't always pass what - has changed in referenced projects as part of the delta. Essentially, that means I - will never be able to fully calculate the change set in the makefile generator's - delta visitor, and to even approximate a decent set of cases, the logic would quickly - bog down in complexity. - - The solution is to trust Eclipse and alway invoke make when my incremental builder - is called. At worst, if there is no significant change, make will execute and - report nothing to be done. - - The modified makefile builder no longer asks the makefile generator if it should - build. It also no longer cares if the change set is empty (make will report that). - Since it responds to changes in referenced project's build information, it also - scrubs all relevant projects after building. Since a build might involve building - referenced project elements, those projects get their project views refreshed after - build. The build markers for referenced projects are removed prior to build. - * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java - - The makefile generator has been simplified. The resource delta visitor logic no - longer trie to decide if a build should occur. The method to ask has been removed. - The class no longer throws an exception if the change set is empty. I am also a bit - more careful to call make with the right targets if a referenced project is built. - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - -2003-09-26 Sean Evoy - I added a fix to the builder and makefile generator to properly handle the following case. - Project A depends on Project B. Something changes in project B and the user requests - that A be built. Inthis case, the incremental builder is invoked, but it is passed a - 0-length delta on the top resource. Now, the logic of the builder is to treat that case as a - build event that triggers no makefile regeneration, just an invocation of make. - - Now handles the case where there is no flag applied to the make command and just - passes the targets as arguments. - * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java - - The makefile generator now considers the case where the delta is for a project resource - and has no children. If so, it flags that a build is needed but no makefile generation - occurs. It also throws a new exception if the top makefile is not saved. - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - -2003-09-25 Sean Evoy - A patch to resolve the problem with refreshing the project after a build, or - bug 42522 if you care about those sorts of things. The managed make builder was - calling refresh at inside a bad if statement. I corrected that and projects - refresh correctly. Of course, if you have the wrong binary parser selected you are - hosed. You will also notice that the string constants have been changed to - resolve to a different name. The standard builder uses this name and I wanted - to minimize the possibility of problems later. - * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java - - Prepended "Managed" to the externalized string identifiers to avoid future overlap - with the standard build system. Had to update the makefile generator to use the - new identifiers. - * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - - Changed the signature of the 'getMakeArguments' to return a string instead of an - array so the builder can invoke make with the user-specified args. I also changed - the logic of the getMakeCommand method in the implementor so that it only returns - a string containing the command itself. - * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - - Explicitly trim all arrays to size before converting them to String[] for Options - and Tools. - *src/org/eclipse/cdt/managedbuilder/internal/core/Option.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java - - Fixed a missing bit of logic in the Configuration when a user-object option is - deleted. Now the build model really does get rid of the the value. - * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java - -2003-09-25 Sean Evoy - This patch contains a lot of changes needed to implement fixes for 42648 and - 43122. - - For 42648, the schema for the the target had to be modified to include a - comma-separated list of valid host platforms. - * schema/ManagedBuildTools.exsd - - The target had to be updated to properly read in and understand this info, and - the interface had to be updated to return a list to the clients in the UI. The - target was also changed slightly. It now uses a safer accessor method to get at - the list of tools it maintains. I have also stopped persisting non-variant info - to the project file on serialize. There are elements of the target that are not - subject to change by the user (yet) so they should not be saved. - * src/org/eclipse/cdt/managedbuilder/core/ITarget.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java - - For 43122, I started by simply adding a tool reference to the configurations. - The tool reference had option references for debug and optimization levels. It - should have worked, but the model was not handling the inheritance properly. The - JUnit tests were not finding it because of how they were configured. It was most - evident in the UI. So, the way configurations and tool reference search for - overridden option references had to be modified. While I was in there, I cleaned - up some of the accessor and iteration code in ToolReference and OptionReference. - - For the configuration, the only significant change was a new search method to - find all option references for a given tool, no matter where they are stored. - The method had to consider what was overridden in a child config, what was added by - a child config, and what the parent (or parents) define. - * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java - - Option reference now pays attention to overidden values in the plugin file. Until - now, it only handled the overrides in the project file. - * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java - - The ToolReference now distinguishes between local option references which it - manages directly, and option references held by tool references in the parent(s) - of its owner. It only serializes its own references, but when asked for options - relating to the tool it references, it replies with all option references in its - hierarchy. - * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java - - -2003-09-25 Bogdan Gheorghe - Modified ResourceDeltaVisitor.visit() to use the new mechanism to get the - projects that dependend a file. - - Modified addSourceDependencies() to use the new mechanism to perform a DependencyQueryJob - - * src/org/eclipse/cdt/managedbuilder/internal/core/MakeFileGenerator.java - -2003-09-24 Sean Evoy - Changed the implementor of IScannerInfo to answer only absolute paths when asked for - includes paths. Users will specify the includes paths in the managed build UI in such a way - that the compiler will not complain. Either they will use absolute paths, or they will specify - them relative to the build directory. In the second case, it is easier for the managed builder - to convert the paths relative to this directory into absolute paths before replying tha it is for - the client to figure this out. - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - -2003-09-23 Sean Evoy - All the work in this patch is for critical bug 43292. In order to manage - configurations, there had to be a method through ITarget to remove - configurations. Also, to support the naming of newly created configurations, - I added a name method to the IConfiguration interface. Finally, the ITarget - needed to support setting (and resetting) the make command to use when building. - * src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java - * src/org/eclipse/cdt/managedbuilder/core/ITarget.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java - -2003-09-19 Sean Evoy - Added a new field to the target specification in the build model to - hard-code the binary parser for project creation. There is a new getter - method in the interface and the implementor contains additional code to - extract the information from a project file or plugin manifest. The - interface also contains new strings to make changing the specification - easier in the future. - * schema/ManagedBuildTools.exsd - * src/org/eclipse/cdt/managedbuilder/core/ITarget.java - * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java - - Fix for bug 41720: libraries are now found for Solaris and Linux - executables. The problem was the executable had no extension and - the client of the build model passed null instead of the empty string. - * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - -2003-09-16 Sean Evoy - Patch contains a fix for bug 43017. Renamed the "addDeps" method to a - more descriptive "addSourceDependencies". Added a flag when the - inter-project dependencies are calculated so that clean and all are - properly passed to the make invocation. Finally, I replaced the hard-coded - 'make' with $(MAKE) - * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java - - It also contains some more work on 41826, specifically on the logic to - implement a rebuild when the build settings change. The builder checks for - a build model change whenever a build is requested and responds appropriately. - The make targets (i.e. 'clean' and 'all') are also calculated differently now. - * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java - - The build model was modified to set a dirty flag when an option changes. I also - made a change to avoid an NPE when the build info was loaded. - * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java - * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java - * src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java - - -2003-09-15 Sean Evoy - First submission of code to new project. Moved the managed builder - source code out of the cdt.core project. This includes the code to - implement the build model, along with the shema and extension point - declaration. Moved the builder, scnanaer info provider and managed - nature definitions into the package as well. - - There are 2 new classes to handle the externalized strings: - * src/org/eclipse/cdt/managedbuilder/core/ManagedBuilderCorePlugin.java +2004-02-23 Sean Evoy + Fix for bug 52647. + In 1.2, the target stored the raw, overridden build command the user + specified on the property page. This string may or may not have included + arguments to make. The managed build info was responsible for parsing the + command from the arguments and returning both to the makefile generator. + The problem was that the logic was too light-weight to really parse a + complex command line. That logic has been refactored to the property page itself, + so the price of parsing is payed once. + + The Target and its public interface have been reworked to set and get the + arguments for make. This is treated as a project-level setting. It cannot + be defined in a manifest for now. There is also a capability to reset and + test the args when checking for an overridden make command in a target. + * src/org/eclipse/cdt/managedbuilder/core/ITarget.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + + The arguments are now passed to the spawner that launches make correctly. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + + The ManagedBuildInfo is off the hook now. Rather than performing any + parsing or foo-fa-raw, it simply delegates the lookup to the target. + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + +2004-02-17 Sean Evoy + Fix for critical bug 44163. + The managed build info would become confused when the project it was associated + with was renamed. The project still stored the build information in its session + data, but the internal reference to the owner project was not updated in the + build info. Now, when the build info is retrieved from a project, the manager + asks the info to do a sanity test to check the identity of the true owner against + the owner the it thinks it has. If they differ, the build information updates its + owner and the owner of all the targets it maintains for the project. + * src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + * src/org/eclipse/cdt/managedbuilder/core/ITarget.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + + + Fixes for 51646 + Moved the makefile comment character out of the hard-coded strings and into + the makefile generator. + * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + + Fixes for bug 49590: + The target maintains the default extension and the overridden extension. There + is an interface to get and set the extension, but the method to get the default + extension is deprecated. + * src/org/eclipse/cdt/managedbuilder/core/ITarget.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + + The build information now has a method to get at the extension + * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + + The makefile generator now asks for both the name and the extension when + generating targets and dependencies. + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + +2003-10-23 Bogdan Gheorghe + Updated the indexManager.perfomConcurrentJob call in MakefileGenerator + +2003-10-03 Sean Evoy + Fix for critical bug 44134. + + The problem lies in how the makefile is generated when a build target + references other projects. The makefile creates a command to change to + the build directory of the referenced project and call $(MAKE) there, i.e. + cd ; $(MAKE) clean all + + The problem arises when the directory change fails. As of RC0, the command + after the semi-colon is evaluated. Unfortunately, it evaluates to a recursive + make call in the build directory of the build target and 'make' will keep + invoking more 'make's until Eclipse runs out of memory. With a manual build, + the user can still cancel the build. When autobuild is turned on, they cannot. + The only way to shut down Eclipse under that scenario is to kill it, and when + it restarts, autobuild is still enabled and the problem repeats. + + The solution is to NOT perform the 'make' command if the 'cd' fails, i.e. + cd && $(MAKE) clean all + + When the dependencies are generated this way, the 'cd' will fail as will the + build. The final tweak is to ignore the 'cd' failure and allow the rest of + the build to continue, i.e. + -cd && $(MAKE) clean all + + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + +2003-10-01 Sean Evoy + Final fix for bugs 44020. + The problem lay with the way that new projects were being created when the + root configuration of the project had tool references overriding options. + What the new configuration should have been doing is making a personal copy + of the tool reference and its options. Instead, they were all sharing the + parents. Seems simple enough now that I found it. + + OptionReference provides a method to retreive its option (so new + OptionReferences can be cloned). + * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java + + Configuration now behaves correctly when it is created from another configuration. + * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java + +2003-10-01 Sean Evoy + Fix for bugs 43490 (trivial), 44020, and 43980. + Added a new field to the schema for a tool. The attribute manages a list of + project natures that the tool should be filtered against in the build model + and UI. + * schema/ManagedBuildTools.exsd + + Updated the ITool interface and its mplementors to pay attention to this new + attribute when loading from a plugin file. Clients can querry for a numeric + constant indicating the filter. + * src/org/eclipse/cdt/managedbuilder/core/ITool.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java + + All the methods in managed build manager that access information stored in a tool + first check that the tool is valid for the project nature. + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + + Put a safety check in the option reference constructor when reading one in from + a project file. I the option reference is to an option not managed by the build + model, the constructor does not add itself to the runtime representation of the + model. + * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java + + In preparation for 44020, each new target created is assigned a truly random ID. + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + +2003-09-30 Sean Evoy + Fix for bug 41826. + + Finished the use case for changing header files and triggering a build. I had + to add a new attribute to the build model schema to allow a build information + client to determine that a file is considered a header file. + * schema/ManagedBuildTools.exsd + + The ITool, and its implementors now have a method to test if an extension is + considered to belong to a header file. The Tool also pays attention to the new + attribute when it reads itself in from the plugin file. + * src/org/eclipse/cdt/managedbuilder/core/ITool.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java + + There is a method for clients of this information on the BuildInfo interface and + its implementor. + * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + + The builder had to be tweaked in order to behave correctly on a build of an + empty project or non-managed projects. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + + The makefile generator had to be tweaked to properly add folders that are effected + by header file changes. + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + +2003-09-26 Sean Evoy + A partial implementation for bug 41826. This patch contains the logic to properly + respond in the face of the following project changes: + + 1. A generated project element, such as the build target or an intermediate file, + is deleted in the build project, or any projects it references. + 2. The build settings change in the build project or any projects it + references. + + In order to actually do this correctly, I had to stop being so precious during the + build. The makefile generator was was calculating the "build needed" state as it + walked the change delta. However, the Eclipse core has already determined that I + need to do a build. Further, as I discovered earlier, it doesn't always pass what + has changed in referenced projects as part of the delta. Essentially, that means I + will never be able to fully calculate the change set in the makefile generator's + delta visitor, and to even approximate a decent set of cases, the logic would quickly + bog down in complexity. + + The solution is to trust Eclipse and alway invoke make when my incremental builder + is called. At worst, if there is no significant change, make will execute and + report nothing to be done. + + The modified makefile builder no longer asks the makefile generator if it should + build. It also no longer cares if the change set is empty (make will report that). + Since it responds to changes in referenced project's build information, it also + scrubs all relevant projects after building. Since a build might involve building + referenced project elements, those projects get their project views refreshed after + build. The build markers for referenced projects are removed prior to build. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + + The makefile generator has been simplified. The resource delta visitor logic no + longer trie to decide if a build should occur. The method to ask has been removed. + The class no longer throws an exception if the change set is empty. I am also a bit + more careful to call make with the right targets if a referenced project is built. + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + +2003-09-26 Sean Evoy + I added a fix to the builder and makefile generator to properly handle the following case. + Project A depends on Project B. Something changes in project B and the user requests + that A be built. Inthis case, the incremental builder is invoked, but it is passed a + 0-length delta on the top resource. Now, the logic of the builder is to treat that case as a + build event that triggers no makefile regeneration, just an invocation of make. + + Now handles the case where there is no flag applied to the make command and just + passes the targets as arguments. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + + The makefile generator now considers the case where the delta is for a project resource + and has no children. If so, it flags that a build is needed but no makefile generation + occurs. It also throws a new exception if the top makefile is not saved. + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + +2003-09-25 Sean Evoy + A patch to resolve the problem with refreshing the project after a build, or + bug 42522 if you care about those sorts of things. The managed make builder was + calling refresh at inside a bad if statement. I corrected that and projects + refresh correctly. Of course, if you have the wrong binary parser selected you are + hosed. You will also notice that the string constants have been changed to + resolve to a different name. The standard builder uses this name and I wanted + to minimize the possibility of problems later. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + + Prepended "Managed" to the externalized string identifiers to avoid future overlap + with the standard build system. Had to update the makefile generator to use the + new identifiers. + * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + + Changed the signature of the 'getMakeArguments' to return a string instead of an + array so the builder can invoke make with the user-specified args. I also changed + the logic of the getMakeCommand method in the implementor so that it only returns + a string containing the command itself. + * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + + Explicitly trim all arrays to size before converting them to String[] for Options + and Tools. + *src/org/eclipse/cdt/managedbuilder/internal/core/Option.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java + + Fixed a missing bit of logic in the Configuration when a user-object option is + deleted. Now the build model really does get rid of the the value. + * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java + +2003-09-25 Sean Evoy + This patch contains a lot of changes needed to implement fixes for 42648 and + 43122. + + For 42648, the schema for the the target had to be modified to include a + comma-separated list of valid host platforms. + * schema/ManagedBuildTools.exsd + + The target had to be updated to properly read in and understand this info, and + the interface had to be updated to return a list to the clients in the UI. The + target was also changed slightly. It now uses a safer accessor method to get at + the list of tools it maintains. I have also stopped persisting non-variant info + to the project file on serialize. There are elements of the target that are not + subject to change by the user (yet) so they should not be saved. + * src/org/eclipse/cdt/managedbuilder/core/ITarget.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + + For 43122, I started by simply adding a tool reference to the configurations. + The tool reference had option references for debug and optimization levels. It + should have worked, but the model was not handling the inheritance properly. The + JUnit tests were not finding it because of how they were configured. It was most + evident in the UI. So, the way configurations and tool reference search for + overridden option references had to be modified. While I was in there, I cleaned + up some of the accessor and iteration code in ToolReference and OptionReference. + + For the configuration, the only significant change was a new search method to + find all option references for a given tool, no matter where they are stored. + The method had to consider what was overridden in a child config, what was added by + a child config, and what the parent (or parents) define. + * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java + + Option reference now pays attention to overidden values in the plugin file. Until + now, it only handled the overrides in the project file. + * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java + + The ToolReference now distinguishes between local option references which it + manages directly, and option references held by tool references in the parent(s) + of its owner. It only serializes its own references, but when asked for options + relating to the tool it references, it replies with all option references in its + hierarchy. + * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java + + +2003-09-25 Bogdan Gheorghe + Modified ResourceDeltaVisitor.visit() to use the new mechanism to get the + projects that dependend a file. + + Modified addSourceDependencies() to use the new mechanism to perform a DependencyQueryJob + + * src/org/eclipse/cdt/managedbuilder/internal/core/MakeFileGenerator.java + +2003-09-24 Sean Evoy + Changed the implementor of IScannerInfo to answer only absolute paths when asked for + includes paths. Users will specify the includes paths in the managed build UI in such a way + that the compiler will not complain. Either they will use absolute paths, or they will specify + them relative to the build directory. In the second case, it is easier for the managed builder + to convert the paths relative to this directory into absolute paths before replying tha it is for + the client to figure this out. + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + +2003-09-23 Sean Evoy + All the work in this patch is for critical bug 43292. In order to manage + configurations, there had to be a method through ITarget to remove + configurations. Also, to support the naming of newly created configurations, + I added a name method to the IConfiguration interface. Finally, the ITarget + needed to support setting (and resetting) the make command to use when building. + * src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java + * src/org/eclipse/cdt/managedbuilder/core/ITarget.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + +2003-09-19 Sean Evoy + Added a new field to the target specification in the build model to + hard-code the binary parser for project creation. There is a new getter + method in the interface and the implementor contains additional code to + extract the information from a project file or plugin manifest. The + interface also contains new strings to make changing the specification + easier in the future. + * schema/ManagedBuildTools.exsd + * src/org/eclipse/cdt/managedbuilder/core/ITarget.java + * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java + + Fix for bug 41720: libraries are now found for Solaris and Linux + executables. The problem was the executable had no extension and + the client of the build model passed null instead of the empty string. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + +2003-09-16 Sean Evoy + Patch contains a fix for bug 43017. Renamed the "addDeps" method to a + more descriptive "addSourceDependencies". Added a flag when the + inter-project dependencies are calculated so that clean and all are + properly passed to the make invocation. Finally, I replaced the hard-coded + 'make' with $(MAKE) + * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java + + It also contains some more work on 41826, specifically on the logic to + implement a rebuild when the build settings change. The builder checks for + a build model change whenever a build is requested and responds appropriately. + The make targets (i.e. 'clean' and 'all') are also calculated differently now. + * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java + + The build model was modified to set a dirty flag when an option changes. I also + made a change to avoid an NPE when the build info was loaded. + * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java + * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java + * src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java + + +2003-09-15 Sean Evoy + First submission of code to new project. Moved the managed builder + source code out of the cdt.core project. This includes the code to + implement the build model, along with the shema and extension point + declaration. Moved the builder, scnanaer info provider and managed + nature definitions into the package as well. + + There are 2 new classes to handle the externalized strings: + * src/org/eclipse/cdt/managedbuilder/core/ManagedBuilderCorePlugin.java * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties \ No newline at end of file diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java index ed51ff587f3..d8988c573e2 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java @@ -26,6 +26,7 @@ public interface ITarget extends IBuildObject { public static final String IS_ABSTRACT = "isAbstract"; //$NON-NLS-1$ public static final String IS_TEST = "isTest"; //$NON-NLS-1$ public static final String MAKE_COMMAND = "makeCommand"; //$NON-NLS-1$ + public static final String MAKE_ARGS = "makeArguments"; //$NON-NLS-1$ public static final String OS_LIST = "osList"; //$NON-NLS-1$ public static final String PARENT = "parent"; //$NON-NLS-1$ @@ -95,6 +96,15 @@ public interface ITarget extends IBuildObject { */ public String getDefaultExtension(); + + /** + * Answers the command line arguments to pass to the make utility used + * by the receiver to build a project. + * + * @return + */ + public String getMakeArguments(); + /** * Answers the name of the make utility for the target. * @@ -193,6 +203,14 @@ public interface ITarget extends IBuildObject { */ public void setArtifactName(String name); + /** + * Sets the arguments to be passed to the make utility used by the + * receiver to produce a build goal. + * + * @param makeArgs + */ + public void setMakeArguments(String makeArgs); + /** * Sets the make command for the receiver to the value in the argument. * diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java index c60ede4c2fd..c5ad9ddcd34 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java @@ -335,9 +335,10 @@ public class GeneratedMakefileBuilder extends ACBuilder { // Get the arguments to be passed to make from build model ArrayList makeArgs = new ArrayList(); - String args = info.getMakeArguments(); - if (args.length() > 0) { - makeArgs.add(args); + String arg = info.getMakeArguments(); + String[] args = arg.split("\\s"); + for (int i = 0; i < args.length; ++i) { + makeArgs.add(args[i]); } makeArgs.addAll(Arrays.asList(getMakeTargets(fullBuild))); String[] makeTargets = (String[]) makeArgs.toArray(new String[makeArgs.size()]); 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 9046dbeb873..e2fd40bf450 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 @@ -19,15 +19,15 @@ import java.util.List; import java.util.ListIterator; import java.util.Map; +import org.eclipse.cdt.core.CCProjectNature; +import org.eclipse.cdt.core.CProjectNature; +import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.managedbuilder.core.BuildException; import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; import org.eclipse.cdt.managedbuilder.core.IOption; import org.eclipse.cdt.managedbuilder.core.ITarget; import org.eclipse.cdt.managedbuilder.core.ITool; -import org.eclipse.cdt.core.CCProjectNature; -import org.eclipse.cdt.core.CProjectNature; -import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; @@ -47,6 +47,11 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo { private Map defaultConfigurations; private ITarget defaultTarget; + /** + * Create a new managed build information for the IResource specified in the argument + * + * @param owner + */ public ManagedBuildInfo(IResource owner) { targetMap = new HashMap(); targets = new ArrayList(); @@ -54,13 +59,20 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo { this.owner = owner; } + /** + * Reads the build information from the project file and creates the + * internal representation of the build settings for the project. + * + * @param owner + * @param element + */ public ManagedBuildInfo(IResource owner, Element element) { this(owner); + Node child = element.getFirstChild(); // The id of the default configuration String defaultTargetId = null; List configIds = new ArrayList(); - Node child = element.getFirstChild(); while (child != null) { if (child.getNodeName().equals("target")) { new Target(this, (Element)child); @@ -495,46 +507,14 @@ public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo { * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getMakeArguments() */ public String getMakeArguments() { - String arguments = new String(); - - // The make command may or may not have any flags - ITarget target = getDefaultTarget(); - String command = target.getMakeCommand(); - - // If it does, the flags will be everything between the '-' and the next space - int indexOfArgs = command.indexOf('-'); - if (indexOfArgs != - 1) { - try { - String argsAndTargs = command.substring(indexOfArgs); - int indexOfTargs = argsAndTargs.indexOf(' '); - arguments = (indexOfTargs != -1) ? - argsAndTargs.substring(0, indexOfTargs) : - argsAndTargs; - // Make sure the arg list does not contain f or C - - } catch (IndexOutOfBoundsException e) { - } - } - - return arguments.trim(); + return getDefaultTarget().getMakeArguments(); } /* (non-Javadoc) * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getMakeCommand() */ public String getMakeCommand() { - String command = new String(); - ITarget target = getDefaultTarget(); - command = target.getMakeCommand(); - - // There may actually be arguments, so just get everything up to the first '-' - int indexOfArgs = command.indexOf('-'); - if (indexOfArgs != -1) { - // Return ecverything up to the first argument as the command - return command.substring(0, indexOfArgs).trim(); - } else { - return command.trim(); - } + return getDefaultTarget().getMakeCommand(); } /* (non-Javadoc) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java index 6344dd02baf..1f1664fc0be 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java @@ -42,6 +42,7 @@ public class Target extends BuildObject implements ITarget { private String extension; private boolean isAbstract = false; private boolean isTest = false; + private String makeArguments; private String makeCommand; private IResource owner; private ITarget parent; @@ -214,10 +215,13 @@ public class Target extends BuildObject implements ITarget { // Get the clean command cleanCommand = element.getAttribute(CLEAN_COMMAND); - // Get the make command + // Get the make command and arguments if (element.hasAttribute(MAKE_COMMAND)) { makeCommand = element.getAttribute(MAKE_COMMAND); } + if(element.hasAttribute(MAKE_ARGS)) { + makeArguments = element.getAttribute(MAKE_ARGS); + } Node child = element.getFirstChild(); while (child != null) { @@ -249,6 +253,7 @@ public class Target extends BuildObject implements ITarget { */ public void resetMakeCommand() { makeCommand = null; + makeArguments = null; } /** @@ -272,6 +277,9 @@ public class Target extends BuildObject implements ITarget { if (makeCommand != null) { element.setAttribute(MAKE_COMMAND, makeCommand); } + if (makeArguments != null) { + element.setAttribute(MAKE_ARGS, makeArguments); + } if (configurations != null) for (int i = 0; i < configurations.size(); ++i) { @@ -282,6 +290,22 @@ public class Target extends BuildObject implements ITarget { } } + /* (non-Javadoc) + * @see org.eclipse.cdt.managedbuilder.core.ITarget#getMakeArguments() + */ + public String getMakeArguments() { + if (makeArguments == null) { + // See if it is defined in my parent + if (parent != null) { + return parent.getMakeArguments(); + } else { + // No parent and no user setting + return new String(""); + } + } + return makeArguments; + } + /* (non-Javadoc) * @see org.eclipse.cdt.core.build.managed.ITarget#getMakeCommand() */ @@ -376,7 +400,9 @@ public class Target extends BuildObject implements ITarget { * @see org.eclipse.cdt.managedbuilder.core.ITarget#hasMakeCommandOverride() */ public boolean hasOverridenMakeCommand() { - return (makeCommand != null && !makeCommand.equals(parent.getMakeCommand())); + // We answer true if the make command or the flags are different + return ((makeCommand != null && !makeCommand.equals(parent.getMakeCommand())) + || (makeArguments != null && !makeArguments.equals(parent.getMakeArguments()))); } /** @@ -551,6 +577,15 @@ public class Target extends BuildObject implements ITarget { } } + /* (non-Javadoc) + * @see org.eclipse.cdt.managedbuilder.core.ITarget#setMakeArguments(java.lang.String) + */ + public void setMakeArguments(String makeArgs) { + if (makeArgs != null && !getMakeArguments().equals(makeArgs)) { + makeArguments = makeArgs; + } + } + /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.core.ITarget#setMakeCommand(java.lang.String) */ diff --git a/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog b/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog index e9890c609da..e1fb2295391 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog +++ b/build/org.eclipse.cdt.managedbuilder.ui/ChangeLog @@ -1,189 +1,202 @@ -2004-2-17 Sean Evoy - Fixes for 51640 - Externalized strings for the target names. - * plugin.properties - * plugin.xml - - Fixes for bug 49590: - The system now makes a distinction between the name of the output and its extension. - The UI for managing the name of the build output now has a field for entering the - extension. The new project wizard does not automatically append the extension to the - name of the build output. - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java - * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java - - Some ground work for C11: - Added a browse button and an area for selecting a path variable to the browse - dialog. However, this is still turned off since it is not fully functional. - * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java - - Changed the order of the configurations in the manifest so that debug configurations are the default for every project. - * plugin.xml - -2003-11-10 Tanya Wolff - - I18N-Externalized strings from plugin.xml. - I18N-Added keys & strings to plugin.properties. - Fixed an id error in linux c compiler debugger options. - * plugin.xml - * plugin.properties - -2003-11-11 Sean Evoy - Work to implement bugzilla 44841: - Added a scrollbar to the list control inside the custom list field editor. - Also added an Edit button to the field editor to make it easier for keyboard-only - accessibility. - - Work for bugzilla 44451: - Changed the method that prompts user for information so that if the user cancels - with an empty input dialog, the method always returns an empty string. The responsibility - now rests with the caller to test the return value for length > 0 to decide whether or - not to add string to the list. - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java - - Moved string constants from core UI plugin to build UI plugin. These values are duplicated - in the standadrd make UI plugin anyway, so the argument for keeping them in a common - plugin seems pretty weak. This removes another dependency between the builder UI and - common UI plugin. I did have to change the string resource lookup method in a few of - the UI implementation classes that use the constants. - * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java - -2003-10-17 Tom Tromey - - Changed -werror to -Werror - * plugin.xml - -2003-10-14 Alain Magloire - - ICOptionPage was added a new method - Preferences getPreferences(); - This is needed to get the preference store when saving - On the plugin. We had the equivalent for project - IProject getProject(); - - * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectOptionPage - -2003-10-01 Sean Evoy - Fix for bugs 43490 (trivial), 44020, and 43980. - A massive change has occurred in the plugin file. I added new C tools that apply - only to projects with C natures. I also added option overrides in the default - configurations for these new tools. The trivial fix for the new C project wizard - involved changing the icon entry in the plugin file. - * plugin.xml - - In preparation for 44020, each new configuration created is assigned a truly - random ID. - * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java - - Removed a tooltip that was not being populated properly. - * src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java - -2003-09-30 Sean Evoy - Fix for bug 41826. - - Updated the tool specifications for Win32, Linux, and Solaris so that header - file extension info is available. - * plugin.xml - -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. - - The properties file has been updated to externalize some of the option labels - to try and address some of the concern about continuity between UIs on - different platforms. - * plugin.properties - - There are changes in the plugin XML file to accomodate showing the targets - only on the correct host platform. Option names have bee replaced with - externalized equivalents where possible. The release and debug configurations - for each configuration now apply "reasonable" defaults for debug and optimization - option. Finally, the Cygwinb tool specification has been brought closer to those - for *nix. - * plugin.xml - - Only targets that correspond to the host platforms are shown in the drop-down - list. - * src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java - -2003-09-23 Sean Evoy - I added a fix for critical bug 43439. The new project wizard is ready to be hooked - up to the help system content on F1. There is a new file with the string constant - the doc project will use to map the widget to a help file. - * src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java - * src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderHelpContextIds.java - - In support of the fix for critical bug 43292, I added a new set of widgets to - the ManageConfigDialog implementation. I added new string literals in the properties - file for the plugin. There are obviously new event handlers for the Manage dialog. - It displays the make command for the target, the name of the build artifact, and - a list of current and deleted configurations. There is no way to add new targets. - Users can restore deleted configurations up until they click OK. The client of this - dialog has been changed to properly respond to the changes. The NewConfigurationDialog - now displays an externalized string in the title bar. - * plugin.xml - * plugin.properties - * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java - * src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java - -2003-09-19 Sean Evoy - Removed the binary parser selection tab from the new class wizard. Updated the - page description externalized string. - * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectOptionPage.java - - Added the hard-coded binary parser info to the defined targets. - * plugin.xml - - Fixed the event handling for add/remove in the list widget for build settings pages. - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java - -2003-09-16 Sean Evoy - Changed the initialization and button status logic so the list buttons are - enabled correctly on start-up and that the fist item in the list (if - any) is selected. Also changed the "Add" event handler to properly enable - the buttons and set the list selection. - - * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java - -2003-09-15 Sean Evoy - First submission of code to new project. Moved all the managed - builder-specific UI elements out of the cdt.ui project. This - includes the icons, and externalized strings. - - There are 2 new classes to handle the externalized strings and image - files: - * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties - * src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIPlugin.java - * src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIImages.java - - The property pages have been modified to use a mix of externalized - strings from the CUIPlugin and ManagedBuilderUIPlugin. The new project - wizard has been reimplemented using the new C project classes added by +2004-02-23 Sean Evoy + Fix for bug 52647. + In 1.2, the target stored the raw, overridden build command the user + specified on the property page. This fix involves enhancing the logic + to pry apart the command from the args, and moving it into the property + itself, so the build system only pays the price to parse once. + Obviously since the make command or the args can be overridden by a user, + the logic as to when to enable the edit field and check box in the manage + dialog had to be tweaked. I am still not 100% satisfied, but this gets the + meat of the fix into the hands of users. + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java + +2004-2-17 Sean Evoy + Fixes for 51640 + Externalized strings for the target names. + * plugin.properties + * plugin.xml + + Fixes for bug 49590: + The system now makes a distinction between the name of the output and its extension. + The UI for managing the name of the build output now has a field for entering the + extension. The new project wizard does not automatically append the extension to the + name of the build output. + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java + * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java + + Some ground work for C11: + Added a browse button and an area for selecting a path variable to the browse + dialog. However, this is still turned off since it is not fully functional. + * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java + + Changed the order of the configurations in the manifest so that debug configurations are the default for every project. + * plugin.xml + +2003-11-10 Tanya Wolff + + I18N-Externalized strings from plugin.xml. + I18N-Added keys & strings to plugin.properties. + Fixed an id error in linux c compiler debugger options. + * plugin.xml + * plugin.properties + +2003-11-11 Sean Evoy + Work to implement bugzilla 44841: + Added a scrollbar to the list control inside the custom list field editor. + Also added an Edit button to the field editor to make it easier for keyboard-only + accessibility. + + Work for bugzilla 44451: + Changed the method that prompts user for information so that if the user cancels + with an empty input dialog, the method always returns an empty string. The responsibility + now rests with the caller to test the return value for length > 0 to decide whether or + not to add string to the list. + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java + + Moved string constants from core UI plugin to build UI plugin. These values are duplicated + in the standadrd make UI plugin anyway, so the argument for keeping them in a common + plugin seems pretty weak. This removes another dependency between the builder UI and + common UI plugin. I did have to change the string resource lookup method in a few of + the UI implementation classes that use the constants. + * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java + +2003-10-17 Tom Tromey + + Changed -werror to -Werror + * plugin.xml + +2003-10-14 Alain Magloire + + ICOptionPage was added a new method + Preferences getPreferences(); + This is needed to get the preference store when saving + On the plugin. We had the equivalent for project + IProject getProject(); + + * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectOptionPage + +2003-10-01 Sean Evoy + Fix for bugs 43490 (trivial), 44020, and 43980. + A massive change has occurred in the plugin file. I added new C tools that apply + only to projects with C natures. I also added option overrides in the default + configurations for these new tools. The trivial fix for the new C project wizard + involved changing the icon entry in the plugin file. + * plugin.xml + + In preparation for 44020, each new configuration created is assigned a truly + random ID. + * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java + + Removed a tooltip that was not being populated properly. + * src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java + +2003-09-30 Sean Evoy + Fix for bug 41826. + + Updated the tool specifications for Win32, Linux, and Solaris so that header + file extension info is available. + * plugin.xml + +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. + + The properties file has been updated to externalize some of the option labels + to try and address some of the concern about continuity between UIs on + different platforms. + * plugin.properties + + There are changes in the plugin XML file to accomodate showing the targets + only on the correct host platform. Option names have bee replaced with + externalized equivalents where possible. The release and debug configurations + for each configuration now apply "reasonable" defaults for debug and optimization + option. Finally, the Cygwinb tool specification has been brought closer to those + for *nix. + * plugin.xml + + Only targets that correspond to the host platforms are shown in the drop-down + list. + * src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java + +2003-09-23 Sean Evoy + I added a fix for critical bug 43439. The new project wizard is ready to be hooked + up to the help system content on F1. There is a new file with the string constant + the doc project will use to map the widget to a help file. + * src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java + * src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderHelpContextIds.java + + In support of the fix for critical bug 43292, I added a new set of widgets to + the ManageConfigDialog implementation. I added new string literals in the properties + file for the plugin. There are obviously new event handlers for the Manage dialog. + It displays the make command for the target, the name of the build artifact, and + a list of current and deleted configurations. There is no way to add new targets. + Users can restore deleted configurations up until they click OK. The client of this + dialog has been changed to properly respond to the changes. The NewConfigurationDialog + now displays an externalized string in the title bar. + * plugin.xml + * plugin.properties + * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java + * src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java + +2003-09-19 Sean Evoy + Removed the binary parser selection tab from the new class wizard. Updated the + page description externalized string. + * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectOptionPage.java + + Added the hard-coded binary parser info to the defined targets. + * plugin.xml + + Fixed the event handling for add/remove in the list widget for build settings pages. + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java + +2003-09-16 Sean Evoy + Changed the initialization and button status logic so the list buttons are + enabled correctly on start-up and that the fist item in the list (if + any) is selected. Also changed the "Add" event handler to properly enable + the buttons and set the list selection. + + * src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java + +2003-09-15 Sean Evoy + First submission of code to new project. Moved all the managed + builder-specific UI elements out of the cdt.ui project. This + includes the icons, and externalized strings. + + There are 2 new classes to handle the externalized strings and image + files: + * src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties + * src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIPlugin.java + * src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIImages.java + + The property pages have been modified to use a mix of externalized + strings from the CUIPlugin and ManagedBuilderUIPlugin. The new project + wizard has been reimplemented using the new C project classes added by QNX September 12, 2003. The UI itself has not changed. \ No newline at end of file diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml index 8a1ca52ae38..cce9650871e 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml @@ -31,8 +31,8 @@ icon="icons/full/wizban/newmngcc_app.gif" category="org.eclipse.cdt.ui.newCCWizards" class="org.eclipse.cdt.managedbuilder.ui.wizards.NewManagedCCProjectWizard" - project="true" finalPerspective="org.eclipse.cdt.ui.CPerspective" + project="true" id="org.eclipse.cdt.managedbuilder.ui.wizards.StdCCWizard"> %MngCCWizard.description @@ -43,8 +43,8 @@ icon="icons/full/wizban/newmngc_app.gif" category="org.eclipse.cdt.ui.newCWizards" class="org.eclipse.cdt.managedbuilder.ui.wizards.NewManagedCProjectWizard" - project="true" finalPerspective="org.eclipse.cdt.ui.CPerspective" + project="true" id="org.eclipse.cdt.managedbuilder.ui.wizards.StdCWizard"> %MngCWizard.description @@ -54,6 +54,7 @@ + id="cygwin.gnu.c.compiler.preprocessor.nostdinc" + valueType="boolean"> + id="cygwin.gnu.c.preprocessor.def.symbols" + valueType="definedSymbols"> + builtIn="true" + value="_X86_=1"> + builtIn="true" + value="__OPTIMIZE__"> + builtIn="true" + value="__STDC_HOSTED__=1"> + builtIn="true" + value="i386"> + builtIn="true" + value="__i386"> + builtIn="true" + value="__i386__"> + builtIn="true" + value="__tune_i686__"> + builtIn="true" + value="__tune_pentiumpro__"> + builtIn="true" + value="__tune_pentium2__"> + builtIn="true" + value="__tune_pentium3__"> + builtIn="true" + value="__stdcall=__attribute__((__stdcall__))"> + builtIn="true" + value="__fastcall=__attribute__((__fastcall__))"> + builtIn="true" + value="__cdecl=__attribute__((__cdecl__))"> + builtIn="true" + value="_stdcall=__attribute__((__stdcall__))"> + builtIn="true" + value="_fastcall=__attribute__((__fastcall__))"> + builtIn="true" + value="_cdecl=__attribute__((__cdecl__))"> + builtIn="true" + value="__declspec(x)=__attribute__((x))"> + builtIn="true" + value="__CYGWIN32__"> + builtIn="true" + value="__CYGWIN__"> + builtIn="true" + value="unix"> + builtIn="true" + value="__unix__"> + builtIn="true" + value="__unix"> + id="cygwin.gnu.c.compiler.general.include.paths" + valueType="includePath"> + builtIn="true" + value="C:\cygwin\usr\include\w32api"> + id="cygwin.gnu.c.compiler.general.optimization.level" + valueType="enumerated"> + id="cygwin.gnu.c.compiler.optimization.flags" + valueType="string"> + id="cygwin.c.compiler.debugging.level" + valueType="enumerated"> + id="cygwin.gnu.c.compiler.debugging.other" + valueType="string"> + id="cygwin.gnu.c.compiler.warnings.syntax" + valueType="boolean"> + id="cygwin.gnu.c.compiler.misc.other" + valueType="string"> + id="cygwin.gnu.compiler.preprocessor.nostdinc" + valueType="boolean"> + id="cygwin.preprocessor.def.symbols" + valueType="definedSymbols"> + builtIn="true" + value="_X86_=1"> + builtIn="true" + value="__OPTIMIZE__"> + builtIn="true" + value="__STDC_HOSTED__=1"> + builtIn="true" + value="i386"> + builtIn="true" + value="__i386"> + builtIn="true" + value="__i386__"> + builtIn="true" + value="__tune_i686__"> + builtIn="true" + value="__tune_pentiumpro__"> + builtIn="true" + value="__tune_pentium2__"> + builtIn="true" + value="__tune_pentium3__"> + builtIn="true" + value="__stdcall=__attribute__((__stdcall__))"> + builtIn="true" + value="__fastcall=__attribute__((__fastcall__))"> + builtIn="true" + value="__cdecl=__attribute__((__cdecl__))"> + builtIn="true" + value="_stdcall=__attribute__((__stdcall__))"> + builtIn="true" + value="_fastcall=__attribute__((__fastcall__))"> + builtIn="true" + value="_cdecl=__attribute__((__cdecl__))"> + builtIn="true" + value="__declspec(x)=__attribute__((x))"> + builtIn="true" + value="__CYGWIN32__"> + builtIn="true" + value="__CYGWIN__"> + builtIn="true" + value="unix"> + builtIn="true" + value="__unix__"> + builtIn="true" + value="__unix"> + id="cygwin.compiler.general.include.paths" + valueType="includePath"> + builtIn="true" + value="C:\cygwin\usr\include\w32api"> + id="cygwin.compiler.general.optimization.level" + valueType="enumerated"> + id="cygwin.compiler.optimization.flags" + valueType="string"> + id="cygwin.compiler.debugging.level" + valueType="enumerated"> + id="cygwin.gnu.compiler.debugging.other" + valueType="string"> + id="cygwin.gnu.compiler.warnings.syntax" + valueType="boolean"> + id="cygwin.compiler.misc.other" + valueType="string"> @@ -802,8 +803,8 @@ natureFilter="cnature" name="%ToolName.linker.c" outputFlag="-o" - outputs="exe" command="gcc" + outputs="exe" id="cdt.build.tool.cygwin.c.link"> + id="cygwin.gnu.c.link.options.nostart" + valueType="boolean"> + id="cygwin.gnu.c.link.libs" + valueType="libs"> + id="cygwin.gnu.c.link.ldflags" + valueType="string"> + id="cygwin.gnu.linker.options.nostart" + valueType="boolean"> + id="cygwin.link.libs" + valueType="libs"> + id="cygwin.link.ld.flags" + valueType="string"> @@ -1058,9 +1059,9 @@ natureFilter="cnature" name="%ToolName.linker.c" outputFlag="-o" - outputs="dll" - outputPrefix="lib" command="gcc" + outputPrefix="lib" + outputs="dll" id="cdt.build.tool.cygwin.c.solink"> + id="cygwin.gnu.c.solink.options.nostart" + valueType="boolean"> + id="cygwin.gnu.c.solink.libs" + valueType="libs"> + id="cygwin.gnu.c.solink.ldflags" + valueType="string"> + id="cygwin.gnu.solink.options.nostart" + valueType="boolean"> + id="cygwin.solink.libs" + valueType="libs"> + id="cygwin.solink.ld.flags" + valueType="string"> @@ -1288,9 +1289,9 @@ natureFilter="ccnature" name="%ToolName.linker.cpp" outputFlag="-o" - outputs="dll" - outputPrefix="cyg" command="g++ -shared" + outputPrefix="cyg" + outputs="dll" id="org.eclipse.cdt.build.tool.cygwin.explink"> + id="cygwin.explink.ld.flags" + valueType="string"> @@ -1386,9 +1387,9 @@ + id="cygwin.ar.flags" + valueType="string"> @@ -1416,12 +1417,12 @@ osList="linux"> + id="linux.gnu.c.compiler.preprocessor.nostdinc" + valueType="boolean"> + id="linux.gnu.c.preprocessor.def.symbols" + valueType="definedSymbols"> + builtIn="true" + value="__ELF__"> + builtIn="true" + value="unix"> + builtIn="true" + value="__gnu_linux__"> + builtIn="true" + value="linux"> + builtIn="true" + value="__unix__"> + builtIn="true" + value="__linux__"> + builtIn="true" + value="__unix"> + builtIn="true" + value="__linux"> + builtIn="true" + value="__OPTIMIZE__"> + builtIn="true" + value="__STDC_HOSTED__=1"> + builtIn="true" + value="_GNU_SOURCE"> + builtIn="true" + value="i386"> + builtIn="true" + value="__i386"> + builtIn="true" + value="__i386__"> + builtIn="true" + value="__tune_i386__"> + id="linux.gnu.c.compiler.general.include.paths" + valueType="includePath"> + id="linux.gnu.c.compiler.general.optimization.level" + valueType="enumerated"> + id="linux.gnu.c.compiler.optimization.flags" + valueType="string"> + id="linux.c.compiler.debugging.level" + valueType="enumerated"> + id="linux.gnu.c.compiler.debugging.other" + valueType="string"> + id="linux.gnu.c.compiler.warnings.syntax" + valueType="boolean"> + id="linux.gnu.c.compiler.misc.other" + valueType="string"> + id="linux.gnu.compiler.preprocessor.nostdinc" + valueType="boolean"> + id="linux.gnu.compiler.dirs.incpaths" + valueType="includePath"> + builtIn="true" + value="/usr/local/include"> + builtIn="true" + value="/usr/include"> + id="linux.gnu.compiler.optimization.level" + valueType="enumerated"> + id="linux.compiler.optimization.flags" + valueType="string"> + id="linux.gnu.compiler.debugging.level" + valueType="enumerated"> + id="linux.gnu.compiler.debugging.other" + valueType="string"> + id="linux.gnu.compiler.warnings.syntax" + valueType="boolean"> + id="linux.gnu.compiler.other.other" + valueType="string"> @@ -2079,40 +2080,40 @@ name="%Option.Posix.Linker.NoStartFiles" category="linux.gnu.c.linker.category.general" command="-nostartfiles" - valueType="boolean" - id="linux.gnu.c.link.options.nostart"> + id="linux.gnu.c.link.options.nostart" + valueType="boolean"> + id="linux.gnu.c.link.libs" + valueType="libs"> + id="linux.gnu.c.link.ldflags" + valueType="string"> @@ -2175,40 +2176,40 @@ name="%Option.Posix.Linker.NoStartFiles" category="linux.gnu.linker.category.options" command="-nostartfiles" - valueType="boolean" - id="linux.gnu.linker.options.nostart"> + id="linux.gnu.linker.options.nostart" + valueType="boolean"> + id="linux.gnu.linker.libs.libs" + valueType="libs"> + id="linux.gnu.linker.libs.flags" + valueType="string"> @@ -2317,12 +2318,12 @@ + id="linux.gnu.c.solink.options.nostart" + valueType="boolean"> + id="linux.gnu.c.solink.libs" + valueType="libs"> + id="linux.gnu.c.solink.ldflags" + valueType="string"> + id="linux.gnu.solink.options.nostart" + valueType="boolean"> + id="linux.gnu.solink.libs.libs" + valueType="libs"> + id="linux.gnu.solink.libs.flags" + valueType="string"> @@ -2568,11 +2569,11 @@ + id="linux.gnu.lib.flags" + valueType="string"> @@ -2600,12 +2601,12 @@ osList="solaris"> + id="solaris.gnu.c.compiler.preprocessor.nostdinc" + valueType="boolean"> + id="solaris.gnu.c.preprocessor.def.symbols" + valueType="definedSymbols"> + builtIn="true" + value="sun"> + builtIn="true" + value="sparc"> + builtIn="true" + value="unix"> + builtIn="true" + value="__svr4__"> + builtIn="true" + value="__SVR4"> + builtIn="true" + value="__GCC_NEW_VARARGS__"> + builtIn="true" + value="__sun__"> + builtIn="true" + value="__sparc__"> + builtIn="true" + value="__unix__"> + builtIn="true" + value="__sun"> + builtIn="true" + value="__sparc"> + builtIn="true" + value="__unix"> + builtIn="true" + value="__OPTIMIZE__"> + id="solaris.gnu.c.compiler.general.include.paths" + valueType="includePath"> + id="solaris.gnu.c.compiler.general.optimization.level" + valueType="enumerated"> + id="solaris.gnu.c.compiler.optimization.flags" + valueType="string"> + id="solaris.c.compiler.debugging.level" + valueType="enumerated"> + id="solaris.gnu.c.compiler.debugging.other" + valueType="string"> + id="solaris.gnu.c.compiler.warnings.syntax" + valueType="boolean"> + id="solaris.gnu.c.compiler.misc.other" + valueType="string"> + id="solaris.gnu.compiler.preprocessor.nostdinc" + valueType="boolean"> + id="solaris.gnu.compiler.dirs.incpaths" + valueType="includePath"> + builtIn="true" + value="/usr/local/include"> + builtIn="true" + value="/usr/include"> + id="solaris.gnu.compiler.optimization.level" + valueType="enumerated"> + id="solaris.compiler.optimization.flags" + valueType="string"> + id="solaris.gnu.compiler.debugging.level" + valueType="enumerated"> + id="solaris.gnu.compiler.debugging.other" + valueType="string"> + id="solaris.gnu.compiler.warnings.syntax" + valueType="boolean"> + id="solaris.gnu.compiler.other.other" + valueType="string"> @@ -3240,40 +3241,40 @@ name="%Option.Posix.Linker.NoStartFiles" category="solaris.gnu.c.linker.category.general" command="-nostartfiles" - valueType="boolean" - id="solaris.gnu.c.link.options.nostart"> + id="solaris.gnu.c.link.options.nostart" + valueType="boolean"> + id="solaris.gnu.c.link.libs" + valueType="libs"> + id="solaris.gnu.c.link.ldflags" + valueType="string"> @@ -3336,40 +3337,40 @@ name="%Option.Posix.Linker.NoStartFiles" category="solaris.gnu.linker.category.options" command="-nostartfiles" - valueType="boolean" - id="solaris.gnu.linker.options.nostart"> + id="solaris.gnu.linker.options.nostart" + valueType="boolean"> + id="solaris.gnu.linker.libs.libs" + valueType="libs"> + id="solaris.gnu.linker.libs.flags" + valueType="string"> @@ -3482,12 +3483,12 @@ + id="solaris.gnu.c.solink.options.nostart" + valueType="boolean"> + id="solaris.gnu.c.solink.libs" + valueType="libs"> + id="solaris.gnu.c.solink.ldflags" + valueType="string"> + id="solaris.gnu.solink.options.nostart" + valueType="boolean"> + id="solaris.gnu.solink.libs.libs" + valueType="libs"> + id="solaris.gnu.solink.libs.flags" + valueType="string"> @@ -3733,11 +3734,11 @@ + id="solaris.gnu.lib.flags" + valueType="string"> diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java index 232e97e4999..326b4ff6a40 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java @@ -20,6 +20,8 @@ import java.util.Map; import java.util.Random; import java.util.Set; import java.util.SortedMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; @@ -458,8 +460,12 @@ public class BuildPropertyPage extends PropertyPage implements IWorkbenchPropert // This is a cheap assignment to null so do it to be doubly sure selectedTarget.resetMakeCommand(); } else { - String makeCommand = manageDialog.getMakeCommand(); + // Parse for command and arguments + String rawCommand = manageDialog.getMakeCommand(); + String makeCommand = parseMakeCommand(rawCommand); selectedTarget.setMakeCommand(makeCommand); + String makeArguments = parseMakeArgs(rawCommand); + selectedTarget.setMakeArguments(makeArguments); } // Check to see if any configurations have to be deleted @@ -547,6 +553,126 @@ public class BuildPropertyPage extends PropertyPage implements IWorkbenchPropert sashForm.setWeights(DEFAULT_SASH_WEIGHTS); } + /* (non-Javadoc) + * @param rawCommand + * @return + */ + private String parseMakeArgs(String rawCommand) { + StringBuffer result = new StringBuffer(); + + // Parse out the command + String actualCommand = parseMakeCommand(rawCommand); + + // The flags and targets are anything not in the command + String arguments = rawCommand.substring(actualCommand.length()); + + // If there aren't any, we can stop + if (arguments.length() == 0) { + return result.toString().trim(); + } + + String[] tokens = arguments.trim().split("\\s"); + /* + * Cases to consider + * -- Sensible, modern single flag. Add to result and continue. + * - Flags in single token, add to result and stop + * - ARG Flag with argument. Add next token if valid arg. + * - ARG Mix of flags, one takes arg. Add next token if valid arg. + * -ARG Corrupt case where next token should be arg but isn't + * - [target].. Flags with no args, another token, add flags and stop. + */ + Pattern flagPattern = Pattern.compile("C|f|I|j|l|O|W"); + // Look for a '-' followed by 1 or more flags with no args and exactly 1 that expects args + Pattern mixedFlagWithArg = Pattern.compile("-[^CfIjloW]*[CfIjloW]{1}.+"); + for (int i = 0; i < tokens.length; ++i) { + String currentToken = tokens[i]; + if (currentToken.startsWith("--")) { + result.append(currentToken); + result.append(" "); + } else if (currentToken.startsWith("-")) { + // Is there another token + if (i + 1 >= tokens.length) { + //We are done + result.append(currentToken); + } else { + String nextToken = tokens[i + 1]; + // Are we expecting arguments + Matcher flagMatcher = flagPattern.matcher(currentToken); + if (!flagMatcher.find()) { + // Evalutate whether the next token should be added normally + result.append(currentToken); + result.append(" "); + } else { + // Look for the case where there is no space between flag and arg + if (mixedFlagWithArg.matcher(currentToken).matches()) { + // Add this single token and keep going + result.append(currentToken); + result.append(" "); + } else { + // Add this token and the next one right now + result.append(currentToken); + result.append(" "); + result.append(nextToken); + result.append(" "); + // Skip the next token the next time through, though + ++i; + } + } + } + } + } + + return result.toString().trim(); + } + + /* (non-Javadoc) + * + * @param string + * @return + */ + private String parseMakeCommand(String rawCommand) { + StringBuffer command = new StringBuffer(); + boolean hasSpace = false; + + // Try to separate out the command from the arguments + String[] result = rawCommand.split("\\s"); + + /* + * Here are the cases to consider: + * cmd First segment is last segment, assume is command + * cmd [flags] First segment is the command + * path/cmd [flags] Same as above + * path with space/make [flags] Must append each segment up-to flags as command + */ + for (int i = 0; i < result.length; ++i) { + // Get the segment + String cmdSegment = result[i]; + // If there is not another segment, we found the end + if (i + 1 >= result.length) { + command.append(cmdSegment); + } else { + // See if the next segment is the start of the flags + String nextSegment = result[i + 1]; + if (nextSegment.startsWith("-")) { + // we have found the end of the command + command.append(cmdSegment); + break; + } else { + command.append(cmdSegment); + // Add the whitespace back + command.append(" "); + hasSpace = true; + } + } + } + +// if (hasSpace == true) { +// return "\"" + command.toString().trim() + "\""; +// } else { + return command.toString().trim(); +// } + } + /* * (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#performDefaults() diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java index 9216b15ab9c..6978aa5c54f 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java @@ -64,7 +64,7 @@ public class ManageConfigDialog extends Dialog { private SortedMap deletedConfigs; // Map of configuration names and ids private SortedMap existingConfigs; - // The make command associated with the target + // The make command associated with the target private String makeCommand; // The target the configs belong to private ITarget managedTarget; @@ -95,8 +95,7 @@ public class ManageConfigDialog extends Dialog { this.title = title; this.managedTarget = target; - // Figure out the default make command - makeCommand = managedTarget.getMakeCommand(); + setMakeCommand(); // Get the name of the build artifact artifactExt = managedTarget.getArtifactExtension(); @@ -186,7 +185,7 @@ public class ManageConfigDialog extends Dialog { buildArtifactExt.setFont(outputGroup.getFont()); buildArtifactExt.setText(artifactExt); data = new GridData(GridData.FILL_HORIZONTAL); - data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; + data.widthHint = (IDialogConstants.ENTRY_FIELD_WIDTH / 2); buildArtifactExt.setLayoutData(data); buildArtifactExt.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { @@ -238,7 +237,7 @@ public class ManageConfigDialog extends Dialog { currentConfigList = new List(currentComp, SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER); currentConfigList.setFont(currentComp.getFont()); data = new GridData(GridData.FILL_BOTH); - data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; + data.widthHint = (IDialogConstants.ENTRY_FIELD_WIDTH / 2); currentConfigList.setLayoutData(data); currentConfigList.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent event) { @@ -306,7 +305,7 @@ public class ManageConfigDialog extends Dialog { deletedConfigList = new List(deletedComp, SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER); deletedConfigList.setFont(deletedComp.getFont()); data = new GridData(GridData.FILL_BOTH); - data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; + data.widthHint = (IDialogConstants.ENTRY_FIELD_WIDTH / 2); deletedConfigList.setLayoutData(data); deletedConfigList.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent event) { @@ -563,7 +562,27 @@ public class ManageConfigDialog extends Dialog { */ protected void handleUseDefaultPressed() { // If the state of the button is unchecked, then we want to enable the edit widget - makeCommandEntry.setEditable(!makeCommandDefault.getSelection()); + boolean checked = makeCommandDefault.getSelection(); + if (checked == true) { + managedTarget.resetMakeCommand(); + setMakeCommand(); + makeCommandEntry.setText(makeCommand); + makeCommandEntry.setEditable(false); + } else { + makeCommandEntry.setEditable(true); + } + } + + /* + * + */ + private void setMakeCommand() { + // Figure out the make command + makeCommand = managedTarget.getMakeCommand(); + String makeArgs = managedTarget.getMakeArguments(); + if (makeArgs.length() > 0) { + makeCommand += " " + makeArgs; + } } private void updateButtons() {