reference.
Changed the schema to allow a tool reference to belong to a target.
* schema/ManagedBuildTools.exsd
Changed the manifest logic in the managed build manager to load and
retrieve tool definitions as well as target definitions. The schema
allowed for this, but the logic was missing.
* src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
Made some bookeeping additions to the target so that it can store references
to tools. First, the target loads any tool references it has. Then it loads
tools and configurations. The target also has to consider the presence of tool
references when it determines how many tools it has, so the logic that counted
and returned the number of tools in the target was updated. Some key changes in
this regard relate to how the target looks up the tool references it has. It
now has to ask the managed build info if it has a tool definition for the reference
if there are no tools defined for the target level for a given reference.
* src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
Tool references now have the potential to be owned by either a target or a
configuration. Changed the owner to the superclass of both and figure out
which the parent is at runtime to perform the proper registration and information
look-up. Also removed the reference to a target from a tool and the interface to
extract the target from ITool.
* 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
An unrelated bug had to do with a problem my testing uncovered with nested
categories. The manifest reader was looking at the wrong field to determine
the parent, but for the manifests we have created, this has not proven to be
a problem so far.
* src/org/eclipse/cdt/managedbuilder/core/IOptionCategory.java
* src/org/eclipse/cdt/managedbuilder/core/IOptionCategory.java
Changed the makefile generator to escape any whitespace it finds in a dependency path. Now it is possible to build a project in a location with spaces but you still cannot have internal folders with spaces in the name.
* src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java
Tweaked the builder to put only the make command in invocation if there were no arguments spec'd. It seemed to be causing a fake error message to be reported on Linux even though make was successfully building the project.
* src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
- upgrade plugin.xml files
- use PDE containers
- apply Eclipse 3.0 porting items, in particular openEditor and gotoMarker
- remove TestWorkbenches from test plugins
- Moved off all dependency calculations to the Indexer thread,
created a new UpdateDependency job
- Modified CSearchOperation to only lock the workspace when
tagging resources with markers.
the logic for managing the makefiles in the face of a header file
modification. There seems to be a problem (maybe with the dependency
calculation) for dependants in other projects when a header file is moved,
but other than that the builder seems to respond properly.
I have documented the patch in the change log; the only bonus is that it
fixes 43214 for free. The managed builder should now respond correctly to
deletions of any types of file in the project (or referenced projects).
This includes makefiles, intermediate files, and the build target. It
should also properly handle changes in the project settings in any
referenced project. Referenced projects should now get their project views
refreshed as a result of any changes.
This is a fix for the bug 41275. The problem was pretty simple; the delta
passed to a project when one of the projects it depends on changes, is
empty. I tried to optimize the managed builder to run only when a change
was passed to it, but this is a valid case. Now, if there is a 0-length
delta passed to a project, it simply calls make without regenerating any
makefiles.
Two of the fixes, 43614 and 43756, involved changing property files only,
which validates the extra work of externalizing strings from the start!
For 43616, I simply took the advice of the bug reporter and added the '-'
in front of the RM macro in the clean target and the include directives in
the makefile.
The largest part of the fix involves 43220. Until just now, this was a
critical bug in bugzilla, so I addressed it. It has just been downgraded
to an enhancement request. There is now a new entry widget in the linker
options for user objects. The makefile will simply add these to the final
build target's command. Most of the work was done in the plugin file and
the build model to handle the new "type" of option.
This patch integrates the dependency calculator into
the indexer. As a result the underlying indexer file storage
format has changes. Lots of detail in the change logs of
exactly what changed...
the new project wizard now filters out targets that should
not be selected by the user, and that the build model
handles inherited option references properly now.
To help out with bug 43051, I have changed the behaviour of the managed
builder when asked for scanner information. The search feature needs the
absolute paths to files. Since all the user-specified include paths
specified in the managed builder UI are either absolute or relative to the
build project directory, it is relatively easy to convert everything to
absolute paths before answering the clients of this information.
This patch adds a "hook" for F1 help on the new managed project wizard
configuration selection page. It also adds functionality to the managed
build project property page to allow the user to edit the make command and
build artifact name. They can also add and delete configurations from a
target. There is no support for adding another target to a project in this
release.
- I have removed the binary parser selection from the
new managed project wizard and hard-coded the proper
parser ID in the plugin spec for the build model. There is
an updated JUnit test that verifies this change to the
build model.
- There is also a fix for the library problem on *nix. The
makefile pattern was also changed slightly to better
capture the dependencies between the build target and
the outputs of other managed projects.
- The fix is for bug 43017, something I need anyway. The
incremental build work is to make a full rebuild happen when the build
settings change through the UI. Tested the changes on Linux and Win32.