Skip to main content
summaryrefslogtreecommitdiffstats
blob: 4e639a304c21742fb777dc68e688daa497a68caf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
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

Back to the top