Initial Commit
[packages] / xemacs-packages / ede / ede-projects.texi
1 @c -*-texinfo-*-
2 @c
3 @c $Id: ede-projects.texi,v 1.1 2007-11-26 15:22:10 michaels Exp $
4 @c
5
6 @c The next line is for the back-search to see what node this one
7 @c resides in.
8
9 @c @node Project,
10 @c @chapter Project Listing
11
12 @c This command is a convenience to help rebuild this file.  Use C-x C-e
13 @c on the expression below to rebuild the entire index (but only
14 @c after loading in all relevant source files.)
15
16 @c (eieiodoc-class ede-project-placeholder "pj")
17 @menu
18 * ede-project-placeholder ::
19 *  ede-project ::
20 *   ede-proj-project ::
21 *   project-am-makefile ::
22 @end menu
23
24
25 @node ede-project-placeholder, ede-project,  , Project
26 @comment  node-name,  next,  previous,  up
27 @section ede-project-placeholder
28 @pjindex ede-project-placeholder
29
30 @table @asis
31 @item Inheritance Tree:
32 @table @code
33 @item eieio-speedbar
34 @table @code
35 @item eieio-speedbar-directory-button
36 @table @code
37 @item ede-project-placeholder
38 @table @asis
39 @item Children:
40 @w{@xref{ede-project}.} 
41 @end table
42
43 @end table
44
45 @end table
46
47 @end table
48 @end table
49
50   Create a new object with name NAME of class type ede-project-placeholder
51
52 @table @asis
53 @item Slots:
54
55 @table @code
56 @item :name
57 Type: @code{string} @*
58 Default Value: @code{"Untitled"}
59
60 The name used when generating distribution files.
61 @refill
62
63 @item :version
64 Type: @code{string} @*
65 Default Value: @code{"1.0"}
66
67 The version number used when distributing files.
68 @refill
69
70 @item :file
71 Type: @code{string} @*
72 Default Value: @code{unbound}
73
74 File name where this project is stored.
75 @refill
76
77 @end table
78
79 @end table
80 @subsection Specialized Methods
81
82 @deffn Method ede-project-force-load :PRIMARY this 
83 Make sure the placeholder @var{THIS} is replaced with the real thing.
84 Return the new object created in its place.
85 @end deffn
86
87 @deffn Method project-interactive-select-target :PRIMARY this prompt 
88 Make sure placeholder @var{THIS} is replaced with the real thing, and pass through.
89 @end deffn
90
91 @deffn Method project-add-file :PRIMARY this file 
92 Make sure placeholder @var{THIS} is replaced with the real thing, and pass through.
93 @end deffn
94
95
96 @node ede-project, ede-proj-project, ede-project-placeholder, Project
97 @comment  node-name,  next,  previous,  up
98 @section ede-project
99 @pjindex ede-project
100
101 @table @asis
102 @item Inheritance Tree:
103 @table @code
104 @item eieio-speedbar
105 @table @code
106 @item eieio-speedbar-directory-button
107 @table @code
108 @item @w{@xref{ede-project-placeholder}.}
109 @table @code
110 @item ede-project
111 @table @asis
112 @item Children:
113 @w{@xref{ede-proj-project},} @w{@xref{project-am-makefile}.} 
114 @end table
115
116 @end table
117
118 @end table
119
120 @end table
121
122 @end table
123 @end table
124
125   Create a new object with name NAME of class type ede-project
126
127 @table @asis
128 @item Slots:
129
130 @table @code
131 @item :targets
132 Type: @code{list} @*
133 Default Value: @code{unbound}
134
135 List of top level targets in this project.
136 @refill
137
138 @item :configurations
139 Type: @code{list} @*
140 Default Value: @code{("debug" "release")}
141
142 List of available configuration types.
143 Individual target/project types can form associations between a configuration,
144 and target specific elements such as build variables.
145 @refill
146
147 @item :configuration-default @*
148 Default Value: @code{"debug"}
149
150 The default configuration.
151 @refill
152
153 @item :local-variables @*
154 Default Value: @code{nil}
155
156 Project local variables
157 @refill
158
159 @end table
160
161 @end table
162 @subsection Specialized Methods
163
164 @deffn Method eieio-speedbar-description :PRIMARY obj 
165 Provide a speedbar description for @var{OBJ}.
166 @end deffn
167
168 @deffn Method ede-map-any-target-p :PRIMARY this proc 
169 For project @var{THIS}, map @var{PROC} to all targets and return if any non-nil.
170 Return the first non-@code{nil} value returned by @var{PROC}.
171 @end deffn
172
173 @deffn Method project-rescan :PRIMARY this 
174 Rescan the EDE proj project @var{THIS}.
175 @end deffn
176
177 @deffn Method ede-map-subprojects :PRIMARY this proc 
178 For object @var{THIS}, execute @var{PROC} on all subprojects.
179 @end deffn
180
181 @deffn Method ede-convert-path :PRIMARY this path 
182 Convert path in a standard way for a given project.
183 Default to making it project relative.
184 Argument @var{THIS} is the project to convert @var{PATH} to.
185 @end deffn
186
187 @deffn Method ede-name :PRIMARY this 
188 Return a short-name for @var{THIS} project file.
189 Do this by extracting the lowest directory name.
190 @end deffn
191
192 @deffn Method eieio-speedbar-derive-line-path :PRIMARY obj &optional depth 
193 Return the path to @var{OBJ}.
194 Optional @var{DEPTH} is the depth we start at.
195 @end deffn
196
197 @deffn Method ede-buffer-header-file :PRIMARY this buffer 
198 Return @code{nil}, projects don't have header files.
199 @end deffn
200
201 @deffn Method ede-buffer-documentation-files :PRIMARY this buffer 
202 Return all documentation in project @var{THIS} based on @var{BUFFER}.
203 @end deffn
204
205 @deffn Method ede-map-targets :PRIMARY this proc 
206 For object @var{THIS}, execute @var{PROC} on all targets.
207 @end deffn
208
209 @deffn Method ede-buffer-mine :PRIMARY this buffer 
210 Return non-@code{nil} if object @var{THIS} lays claim to the file in @var{BUFFER}.
211 @end deffn
212
213 @deffn Method ede-object-keybindings :PRIMARY this 
214 Retrieves the slot @code{keybindings} from an object of class @code{ede-project}
215 @end deffn
216
217 @deffn Method ede-description :PRIMARY this 
218 Return a description suitible for the minibuffer about @var{THIS}.
219 @end deffn
220
221 @deffn Method eieio-speedbar-object-children :PRIMARY this 
222 Return the list of speedbar display children for @var{THIS}.
223 @end deffn
224
225 @deffn Method project-make-dist :PRIMARY this 
226 Build a distribution for the project based on @var{THIS} target.
227 @end deffn
228
229 @deffn Method project-new-target-custom :PRIMARY proj 
230 Create a new target.  It is up to the project @var{PROJ} to get the name.
231 @end deffn
232
233 @deffn Method ede-expand-filename :PRIMARY this filename &optional force 
234 Return a fully qualified file name based on project @var{THIS}.
235 @var{FILENAME} should be just a filename which occurs in a directory controlled
236 by this project.
237 Optional argument @var{FORCE} forces the default filename to be provided even if it
238 doesn't exist.
239 @end deffn
240
241 @deffn Method ede-menu-items-build :PRIMARY obj &optional current 
242 Return a list of menu items for building project @var{OBJ}.
243 If optional argument @var{CURRENT} is non-@code{nil}, return sub-menu code.
244 @end deffn
245
246 @deffn Method project-new-target :PRIMARY proj 
247 Create a new target.  It is up to the project @var{PROJ} to get the name.
248 @end deffn
249
250 @deffn Method project-compile-project :PRIMARY obj &optional command 
251 Compile the entire current project @var{OBJ}.
252 Argument @var{COMMAND} is the command to use when compiling.
253 @end deffn
254
255 @deffn Method eieio-speedbar-object-buttonname :PRIMARY object 
256 Return a string to use as a speedbar button for @var{OBJECT}.
257 @end deffn
258
259 @deffn Method ede-map-project-buffers :PRIMARY this proc 
260 For @var{THIS}, execute @var{PROC} on all buffers belonging to @var{THIS}.
261 @end deffn
262
263 @deffn Method eieio-done-customizing :PRIMARY proj 
264 Call this when a user finishes customizing @var{PROJ}.
265 @end deffn
266
267 @deffn Method ede-documentation :PRIMARY this 
268 Return a list of files that provides documentation.
269 Documentation is not for object @var{THIS}, but is provided by @var{THIS} for other
270 files in the project.
271 @end deffn
272
273 @deffn Method project-interactive-select-target :PRIMARY this prompt 
274 Interactivly query for a target that exists in project @var{THIS}.
275 Argument @var{PROMPT} is the prompt to use when querying the user for a target.
276 @end deffn
277
278 @deffn Method ede-target-in-project-p :PRIMARY proj target 
279 Is @var{PROJ} the parent of @var{TARGET}?
280 If @var{TARGET} belongs to a subproject, return that project file.
281 @end deffn
282
283 @deffn Method ede-find-target :PRIMARY proj buffer 
284 Fetch the target in @var{PROJ} belonging to @var{BUFFER} or nil.
285 @end deffn
286
287 @deffn Method ede-add-subproject :PRIMARY proj-a proj-b 
288 Add into @var{PROJ-A}, the subproject @var{PROJ-B}.
289 @end deffn
290
291 @deffn Method ede-commit-project :PRIMARY proj 
292 Commit any change to @var{PROJ} to its file.
293 @end deffn
294
295 @deffn Method ede-object-menu :PRIMARY this 
296 Retrieves the slot @code{menu} from an object of class @code{ede-project}
297 @end deffn
298
299 @deffn Method ede-commit-local-variables :PRIMARY proj 
300 Commit change to local variables in @var{PROJ}.
301 @end deffn
302
303
304 @node ede-proj-project, project-am-makefile, ede-project, Project
305 @comment  node-name,  next,  previous,  up
306 @section ede-proj-project
307 @pjindex ede-proj-project
308
309 @table @asis
310 @item Inheritance Tree:
311 @table @code
312 @item eieio-speedbar
313 @table @code
314 @item eieio-speedbar-directory-button
315 @table @code
316 @item @w{@xref{ede-project-placeholder}.}
317 @table @code
318 @item @w{@xref{ede-project}.}
319 @table @code
320 @item ede-proj-project
321 No children
322 @end table
323
324 @end table
325
326 @end table
327
328 @end table
329
330 @end table
331 @end table
332
333   Create a new object with name NAME of class type ede-proj-project
334
335 @table @asis
336 @item Slots:
337
338 @table @code
339 @item :makefile-type
340 Type: @code{symbol} @*
341 Default Value: @code{Makefile}
342
343 The type of Makefile to generate.
344 Can be one of @code{'Makefile}, 'Makefile.in, or 'Makefile.am.
345 If this value is NOT @code{'Makefile}, then that overrides the @code{:makefile} slot
346 in targets.
347 @refill
348
349 @item :variables
350 Type: @code{list} @*
351 Default Value: @code{nil}
352
353 Variables to set in this Makefile.
354 @refill
355
356 @item :configuration-variables
357 Type: @code{list} @*
358 Default Value: @code{("debug" (("DEBUG" . "1")))}
359
360 Makefile variables to use in different configurations.
361 These variables are used in the makefile when a configuration becomes active.
362 @refill
363
364 @item :inference-rules @*
365 Default Value: @code{nil}
366
367 Inference rules to add to the makefile.
368 @refill
369
370 @item :automatic-dependencies
371 Type: @code{boolean} @*
372 Default Value: @code{t}
373
374 Non-@code{nil} to do implement automatic dependencies in the Makefile.
375 @refill
376
377 @end table
378
379 @end table
380 @subsection Specialized Methods
381
382 @deffn Method project-rescan :PRIMARY this 
383 Rescan the EDE proj project @var{THIS}.
384 @end deffn
385
386 @deffn Method ede-proj-makefile-create :PRIMARY this mfilename 
387 Create a Makefile for all Makefile targets in @var{THIS}.
388 @var{MFILENAME} is the makefile to generate.
389 @end deffn
390
391 @deffn Method ede-proj-makefile-insert-rules :PRIMARY this 
392 Insert rules needed by @var{THIS} target.
393 @end deffn
394
395 @deffn Method ede-proj-makefile-tags :PRIMARY this targets 
396 Insert into the current location rules to make recursive TAGS files.
397 Argument @var{THIS} is the project to create tags for.
398 Argument @var{TARGETS} are the targets we should depend on for TAGS.
399 @end deffn
400
401 @deffn Method project-update-version :PRIMARY this 
402 The @code{:version} of project @var{THIS} has changed.
403 @end deffn
404
405 @deffn Method ede-buffer-mine :PRIMARY this buffer 
406 Return @code{t} if object @var{THIS} lays claim to the file in @var{BUFFER}.
407 @end deffn
408
409 @deffn Method ede-proj-makefile-insert-variables :PRIMARY this 
410 Insert variables needed by target @var{THIS}.
411 @end deffn
412
413 @deffn Method project-make-dist :PRIMARY this 
414 Build a distribution for the project based on @var{THIS} target.
415 @end deffn
416
417 @deffn Method ede-proj-makefile-insert-dist-rules :PRIMARY this 
418 Insert distribution rules for @var{THIS} in a Makefile, such as CLEAN and DIST.
419 @end deffn
420
421 @deffn Method project-new-target-custom :PRIMARY this 
422 Create a new target in @var{THIS} for custom.
423 @end deffn
424
425 @deffn Method ede-proj-makefile-create-maybe :PRIMARY this mfilename 
426 Create a Makefile for all Makefile targets in @var{THIS} if needed.
427 @var{MFILENAME} is the makefile to generate.
428 @end deffn
429
430 @deffn Method ede-proj-configure-test-required-file :PRIMARY this file 
431 For project @var{THIS}, test that the file @var{FILE} exists, or create it.
432 @end deffn
433
434 @deffn Method ede-proj-setup-buildenvironment :PRIMARY this &optional force 
435 Setup the build environment for project @var{THIS}.
436 Handles the Makefile, or a Makefile.am configure.in combination.
437 Optional argument @var{FORCE} will force items to be regenerated.
438 @end deffn
439
440 @deffn Method ede-proj-makefile-garbage-patterns :PRIMARY this 
441 Return a list of patterns that are considred garbage to @var{THIS}.
442 These are removed with make clean.
443 @end deffn
444
445 @deffn Method ede-proj-configure-synchronize :PRIMARY this 
446 Synchronize what we know about project @var{THIS} into configure.in.
447 @end deffn
448
449 @deffn Method project-new-target :PRIMARY this 
450 Create a new target in @var{THIS} based on the current buffer.
451 @end deffn
452
453 @deffn Method project-compile-project :PRIMARY proj &optional command 
454 Compile the entire current project @var{PROJ}.
455 Argument @var{COMMAND} is the command to use when compiling.
456 @end deffn
457
458 @deffn Method ede-proj-makefile-configuration-variables :PRIMARY this configuration 
459 Return a list of configuration variables from @var{THIS}.
460 Use @var{CONFIGURATION} as the current configuration to query.
461 @end deffn
462
463 @deffn Method eieio-done-customizing :PRIMARY proj 
464 Call this when a user finishes customizing this object.
465 Argument @var{PROJ} is the project to save.
466 @end deffn
467
468 @deffn Method ede-proj-configure-recreate :PRIMARY this 
469 Delete project @var{THIS}es configure script and start over.
470 @end deffn
471
472 @deffn Method ede-proj-makefile-insert-user-rules :PRIMARY this 
473 Insert user specified rules needed by @var{THIS} target.
474 This is different from @dfn{ede-proj-makefile-insert-rules} in that this
475 function won't create the building rules which are auto created with
476 automake.
477 @end deffn
478
479 @deffn Method ede-proj-dist-makefile :PRIMARY this 
480 Return the name of the Makefile with the DIST target in it for @var{THIS}.
481 @end deffn
482
483 @deffn Method ede-proj-configure-file :PRIMARY this 
484 The configure.in script used by project @var{THIS}.
485 @end deffn
486
487 @deffn Method ede-commit-project :PRIMARY proj 
488 Commit any change to @var{PROJ} to its file.
489 @end deffn
490
491 @deffn Method ede-commit-local-variables :PRIMARY proj 
492 Commit change to local variables in @var{PROJ}.
493 @end deffn
494
495
496 @node project-am-makefile,  , ede-proj-project, Project
497 @comment  node-name,  next,  previous,  up
498 @section project-am-makefile
499 @pjindex project-am-makefile
500
501 @table @asis
502 @item Inheritance Tree:
503 @table @code
504 @item eieio-speedbar
505 @table @code
506 @item eieio-speedbar-directory-button
507 @table @code
508 @item @w{@xref{ede-project-placeholder}.}
509 @table @code
510 @item @w{@xref{ede-project}.}
511 @table @code
512 @item project-am-makefile
513 No children
514 @end table
515
516 @end table
517
518 @end table
519
520 @end table
521
522 @end table
523 @end table
524
525   Create a new object with name NAME of class type project-am-makefile
526
527 @table @asis
528 @item Slots:
529
530 @table @code
531 @item :targets
532 Type: @code{list} @*
533 Default Value: @code{nil}
534
535 @xref{ede-project}.
536 @end table
537
538 @end table
539 @subsection Specialized Methods
540
541 @deffn Method project-rescan :PRIMARY this 
542 Rescan the makefile for all targets and sub targets.
543 @end deffn
544
545 @deffn Method project-am-subtree :PRIMARY ampf subpath 
546 Return the sub project in @var{AMPF} specified by @var{SUBPATH}.
547 @end deffn
548
549 @deffn Method project-targets-for-file :PRIMARY proj 
550 Return a list of targets the project @var{PROJ}.
551 @end deffn
552
553 @deffn Method ede-buffer-mine :PRIMARY this buffer 
554 Return @code{t} if object @var{THIS} lays claim to the file in @var{BUFFER}.
555 @end deffn
556
557 @deffn Method project-new-target :PRIMARY proj 
558 Create a new target named NAME.
559 Argument TYPE is the type of target to insert.  This is a string
560 matching something in @code{project-am-type-alist} or type class symbol.
561 Despite the fact that this is a method, it depends on the current
562 buffer being in order to provide a smart default target type.
563 @end deffn
564
565 @deffn Method project-compile-project :PRIMARY obj &optional command 
566 Compile the entire current project.
567 Argument @var{COMMAND} is the command to use when compiling.
568 @end deffn
569
570 @deffn Method ede-find-target :PRIMARY amf buffer 
571 Fetch the target belonging to @var{BUFFER}.
572 @end deffn
573
574