3 @c $Id: ede-projects.texi,v 1.1 2007-11-26 15:22:10 michaels Exp $
6 @c The next line is for the back-search to see what node this one
10 @c @chapter Project Listing
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.)
16 @c (eieiodoc-class ede-project-placeholder "pj")
18 * ede-project-placeholder ::
21 * project-am-makefile ::
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
31 @item Inheritance Tree:
35 @item eieio-speedbar-directory-button
37 @item ede-project-placeholder
40 @w{@xref{ede-project}.}
50 Create a new object with name NAME of class type ede-project-placeholder
57 Type: @code{string} @*
58 Default Value: @code{"Untitled"}
60 The name used when generating distribution files.
64 Type: @code{string} @*
65 Default Value: @code{"1.0"}
67 The version number used when distributing files.
71 Type: @code{string} @*
72 Default Value: @code{unbound}
74 File name where this project is stored.
80 @subsection Specialized Methods
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.
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.
91 @deffn Method project-add-file :PRIMARY this file
92 Make sure placeholder @var{THIS} is replaced with the real thing, and pass through.
96 @node ede-project, ede-proj-project, ede-project-placeholder, Project
97 @comment node-name, next, previous, up
102 @item Inheritance Tree:
106 @item eieio-speedbar-directory-button
108 @item @w{@xref{ede-project-placeholder}.}
113 @w{@xref{ede-proj-project},} @w{@xref{project-am-makefile}.}
125 Create a new object with name NAME of class type ede-project
133 Default Value: @code{unbound}
135 List of top level targets in this project.
138 @item :configurations
140 Default Value: @code{("debug" "release")}
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.
147 @item :configuration-default @*
148 Default Value: @code{"debug"}
150 The default configuration.
153 @item :local-variables @*
154 Default Value: @code{nil}
156 Project local variables
162 @subsection Specialized Methods
164 @deffn Method eieio-speedbar-description :PRIMARY obj
165 Provide a speedbar description for @var{OBJ}.
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}.
173 @deffn Method project-rescan :PRIMARY this
174 Rescan the EDE proj project @var{THIS}.
177 @deffn Method ede-map-subprojects :PRIMARY this proc
178 For object @var{THIS}, execute @var{PROC} on all subprojects.
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.
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.
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.
197 @deffn Method ede-buffer-header-file :PRIMARY this buffer
198 Return @code{nil}, projects don't have header files.
201 @deffn Method ede-buffer-documentation-files :PRIMARY this buffer
202 Return all documentation in project @var{THIS} based on @var{BUFFER}.
205 @deffn Method ede-map-targets :PRIMARY this proc
206 For object @var{THIS}, execute @var{PROC} on all targets.
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}.
213 @deffn Method ede-object-keybindings :PRIMARY this
214 Retrieves the slot @code{keybindings} from an object of class @code{ede-project}
217 @deffn Method ede-description :PRIMARY this
218 Return a description suitible for the minibuffer about @var{THIS}.
221 @deffn Method eieio-speedbar-object-children :PRIMARY this
222 Return the list of speedbar display children for @var{THIS}.
225 @deffn Method project-make-dist :PRIMARY this
226 Build a distribution for the project based on @var{THIS} target.
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.
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
237 Optional argument @var{FORCE} forces the default filename to be provided even if it
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.
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.
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.
255 @deffn Method eieio-speedbar-object-buttonname :PRIMARY object
256 Return a string to use as a speedbar button for @var{OBJECT}.
259 @deffn Method ede-map-project-buffers :PRIMARY this proc
260 For @var{THIS}, execute @var{PROC} on all buffers belonging to @var{THIS}.
263 @deffn Method eieio-done-customizing :PRIMARY proj
264 Call this when a user finishes customizing @var{PROJ}.
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.
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.
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.
283 @deffn Method ede-find-target :PRIMARY proj buffer
284 Fetch the target in @var{PROJ} belonging to @var{BUFFER} or nil.
287 @deffn Method ede-add-subproject :PRIMARY proj-a proj-b
288 Add into @var{PROJ-A}, the subproject @var{PROJ-B}.
291 @deffn Method ede-commit-project :PRIMARY proj
292 Commit any change to @var{PROJ} to its file.
295 @deffn Method ede-object-menu :PRIMARY this
296 Retrieves the slot @code{menu} from an object of class @code{ede-project}
299 @deffn Method ede-commit-local-variables :PRIMARY proj
300 Commit change to local variables in @var{PROJ}.
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
310 @item Inheritance Tree:
314 @item eieio-speedbar-directory-button
316 @item @w{@xref{ede-project-placeholder}.}
318 @item @w{@xref{ede-project}.}
320 @item ede-proj-project
333 Create a new object with name NAME of class type ede-proj-project
340 Type: @code{symbol} @*
341 Default Value: @code{Makefile}
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
351 Default Value: @code{nil}
353 Variables to set in this Makefile.
356 @item :configuration-variables
358 Default Value: @code{("debug" (("DEBUG" . "1")))}
360 Makefile variables to use in different configurations.
361 These variables are used in the makefile when a configuration becomes active.
364 @item :inference-rules @*
365 Default Value: @code{nil}
367 Inference rules to add to the makefile.
370 @item :automatic-dependencies
371 Type: @code{boolean} @*
372 Default Value: @code{t}
374 Non-@code{nil} to do implement automatic dependencies in the Makefile.
380 @subsection Specialized Methods
382 @deffn Method project-rescan :PRIMARY this
383 Rescan the EDE proj project @var{THIS}.
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.
391 @deffn Method ede-proj-makefile-insert-rules :PRIMARY this
392 Insert rules needed by @var{THIS} target.
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.
401 @deffn Method project-update-version :PRIMARY this
402 The @code{:version} of project @var{THIS} has changed.
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}.
409 @deffn Method ede-proj-makefile-insert-variables :PRIMARY this
410 Insert variables needed by target @var{THIS}.
413 @deffn Method project-make-dist :PRIMARY this
414 Build a distribution for the project based on @var{THIS} target.
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.
421 @deffn Method project-new-target-custom :PRIMARY this
422 Create a new target in @var{THIS} for custom.
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.
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.
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.
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.
445 @deffn Method ede-proj-configure-synchronize :PRIMARY this
446 Synchronize what we know about project @var{THIS} into configure.in.
449 @deffn Method project-new-target :PRIMARY this
450 Create a new target in @var{THIS} based on the current buffer.
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.
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.
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.
468 @deffn Method ede-proj-configure-recreate :PRIMARY this
469 Delete project @var{THIS}es configure script and start over.
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
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}.
483 @deffn Method ede-proj-configure-file :PRIMARY this
484 The configure.in script used by project @var{THIS}.
487 @deffn Method ede-commit-project :PRIMARY proj
488 Commit any change to @var{PROJ} to its file.
491 @deffn Method ede-commit-local-variables :PRIMARY proj
492 Commit change to local variables in @var{PROJ}.
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
502 @item Inheritance Tree:
506 @item eieio-speedbar-directory-button
508 @item @w{@xref{ede-project-placeholder}.}
510 @item @w{@xref{ede-project}.}
512 @item project-am-makefile
525 Create a new object with name NAME of class type project-am-makefile
533 Default Value: @code{nil}
539 @subsection Specialized Methods
541 @deffn Method project-rescan :PRIMARY this
542 Rescan the makefile for all targets and sub targets.
545 @deffn Method project-am-subtree :PRIMARY ampf subpath
546 Return the sub project in @var{AMPF} specified by @var{SUBPATH}.
549 @deffn Method project-targets-for-file :PRIMARY proj
550 Return a list of targets the project @var{PROJ}.
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}.
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.
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.
570 @deffn Method ede-find-target :PRIMARY amf buffer
571 Fetch the target belonging to @var{BUFFER}.