mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-01 05:15:43 +02:00
Work for bug 52647.
This commit is contained in:
parent
5872a87f8c
commit
73178a9453
9 changed files with 1538 additions and 1321 deletions
|
@ -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 <dep_project_build_dir>; $(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 <dep_project_build_dir> && $(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 <dep_project_build_dir> && $(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 <dep_project_build_dir>; $(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 <dep_project_build_dir> && $(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 <dep_project_build_dir> && $(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
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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()]);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
*/
|
||||
|
|
|
@ -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.
|
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||
* --<flag> Sensible, modern single flag. Add to result and continue.
|
||||
* -<flags> Flags in single token, add to result and stop
|
||||
* -<flag_with_arg> ARG Flag with argument. Add next token if valid arg.
|
||||
* -<mixed_flags> ARG Mix of flags, one takes arg. Add next token if valid arg.
|
||||
* -<flag_with_arg>ARG Corrupt case where next token should be arg but isn't
|
||||
* -<flags> [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()
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Add table
Reference in a new issue