105494
|
1 \input texinfo
|
|
2 @setfilename ../../info/ede
|
|
3 @settitle Emacs Development Environment
|
|
4
|
|
5 @copying
|
|
6 This file describes EDE, the Emacs Development Environment.
|
|
7
|
|
8 Copyright @copyright{} 1998, 1999, 2000, 2001, 2004, 2005, 2008, 2009
|
|
9 Free Software Foundation, Inc.
|
|
10
|
|
11 @quotation
|
|
12 Permission is granted to copy, distribute and/or modify this document
|
|
13 under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
14 any later version published by the Free Software Foundation; with no
|
|
15 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
|
16 and with the Back-Cover Texts as in (a) below. A copy of the license
|
|
17 is included in the section entitled ``GNU Free Documentation License.''
|
|
18
|
|
19 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
|
|
20 modify this GNU manual. Buying copies from the FSF supports it in
|
|
21 developing GNU and promoting software freedom.''
|
|
22 @end quotation
|
|
23 @end copying
|
|
24
|
|
25 @ifinfo
|
|
26 @format
|
|
27 START-INFO-DIR-ENTRY
|
|
28 * ede: (ede). Project management for Emacs
|
|
29 END-INFO-DIR-ENTRY
|
|
30 @end format
|
|
31 @end ifinfo
|
|
32
|
|
33 @titlepage
|
|
34 @center @titlefont{EDE (The Emacs Development Environment)}
|
|
35 @sp 4
|
|
36 @center by Eric Ludlam
|
|
37 @end titlepage
|
|
38 @page
|
|
39
|
|
40 @macro cedet{}
|
|
41 @i{CEDET}
|
|
42 @end macro
|
|
43
|
|
44 @macro semantic{}
|
|
45 @i{Semantic}
|
|
46 @end macro
|
|
47
|
|
48 @macro srecode{}
|
|
49 @i{SRecode}
|
|
50 @end macro
|
|
51
|
|
52 @macro eieio{}
|
|
53 @i{EIEIO}
|
|
54 @end macro
|
|
55
|
|
56 @macro ede{}
|
|
57 @i{EDE}
|
|
58 @end macro
|
|
59
|
|
60 @macro cogre{}
|
|
61 @i{COGRE}
|
|
62 @end macro
|
|
63
|
|
64 @macro speedbar{}
|
|
65 @i{Speedbar}
|
|
66 @end macro
|
|
67
|
|
68 @contents
|
|
69
|
|
70 @node top, EDE Project Concepts, (dir), (dir)
|
|
71 @top EDE
|
|
72 @comment node-name, next, previous, up
|
|
73
|
|
74 @ede{} is the Emacs Development Environment: an Emacs extension that
|
|
75 simplifies building and debugging programs in Emacs. It attempts to
|
|
76 emulate a typical IDE (Integrated Development Environment). @ede{}
|
|
77 can manage or create your makefiles and other building environment
|
|
78 duties, allowing you to concentrate on writing code rather than
|
|
79 support files. It aims to make it much easier for new programmers to
|
|
80 learn and adopt GNU ways of doing things.
|
|
81
|
|
82 @ifnottex
|
|
83 @insertcopying
|
|
84 @end ifnottex
|
|
85
|
|
86 @menu
|
|
87 * EDE Project Concepts:: @ede{} Project Concepts
|
|
88 * EDE Mode:: Turning on @ede{} mode.
|
|
89 * Creating a project:: Creating a project.
|
|
90 * Modifying your project:: Adding and removing files and targets.
|
|
91 * Building and Debugging:: Initiating a build or debug session.
|
|
92 * Miscellaneous commands:: Other project related commands.
|
|
93 * Simple projects:: Projects not managed by @ede{}.
|
|
94 * Extending EDE:: Programming and extending @ede{}.
|
|
95 @end menu
|
|
96
|
|
97 @node EDE Project Concepts, EDE Mode, top, top
|
|
98 @chapter @ede{} Project Concepts
|
|
99
|
|
100 @ede{} is a generic interface for managing projects. It specifies a
|
|
101 single set of menus and keybindings, while supporting multiple ways to
|
|
102 express a project via a build system.
|
|
103
|
|
104 In the subsequent chapters, we will describe the different project
|
|
105 types (@pxref{Creating a project}), as well as the commands to build
|
|
106 and debug projects (@pxref{Building and Debugging}).
|
|
107
|
|
108 In @ede{}, a project hierarchy matches a directory hierarchy. The
|
|
109 project's topmost directory is called the @dfn{project root}, and its
|
|
110 subdirectories are @dfn{subprojects}.
|
|
111
|
|
112 Each project can contain multiple @dfn{targets}. A target, at the
|
|
113 simplest level, is a named collection of files within a project. A
|
|
114 target can specify two different types of information:
|
|
115
|
|
116 @enumerate
|
|
117 @item
|
|
118 A collection of files to be added to a distribution (e.g., a tarball
|
|
119 that you intend to distribute to others).
|
|
120
|
|
121 @item
|
|
122 A collection of files that can be built into something else (e.g., a
|
|
123 program or compiled documentation).
|
|
124 @end enumerate
|
|
125
|
|
126 Lastly, @ede{} provides a way for other tools to easily learn file
|
|
127 associations. For example, a program might need to restrict some sort
|
|
128 of search to files in a single target, or to discover the location of
|
|
129 documentation or interface files. @ede{} can provide this
|
|
130 information.
|
|
131
|
|
132 @node EDE Mode, Creating a project, EDE Project Concepts, top
|
|
133 @chapter @ede{} Mode
|
|
134
|
|
135 @ede{} is implemented as a minor-mode, which augments other modes such as C
|
|
136 mode, and Texinfo mode. You can turn @ede{} on for all buffers by running
|
|
137 the command @code{global-ede-mode}, or by putting this in your
|
|
138 @file{~/.emacs} file:
|
|
139
|
|
140 @example
|
|
141 (global-ede-mode t)
|
|
142 @end example
|
|
143
|
|
144 When @ede{} is active for a given buffer, the menu item
|
|
145 ``Development'' appears. This menu provides several menu items for
|
|
146 high-level @ede{} commands. These menu items, and their corresponding
|
|
147 keybindings, are independent of the type of project you are actually
|
|
148 working on.
|
|
149
|
|
150 @node Creating a project, Modifying your project, EDE Mode, top
|
|
151 @chapter Creating a project
|
|
152
|
|
153 To create a new project, first visit a file that you want to include
|
|
154 in that project. If you have a hierarchy of directories, choose a
|
|
155 file in the topmost directory first. From this buffer, type @kbd{M-x
|
|
156 ede-new}, or click on the @samp{Create Project} item in the
|
|
157 @samp{Development} menu.
|
|
158
|
|
159 The @command{ede-new} command prompts for the type of project you
|
|
160 would like to create. Each project type has its own benefits or
|
|
161 language specific enhancements. @ede{} supports four different
|
|
162 project types: @samp{Make}, @samp{Automake}, @samp{direct Automake},
|
|
163 and @samp{Simple}.
|
|
164
|
|
165 @itemize
|
|
166 @item
|
|
167 For the @samp{Make} project type, @ede{} creates a @dfn{project file},
|
|
168 called @file{Project.ede}, in each project directory. Information
|
|
169 about the project is stored in this file. This project autogenerates
|
|
170 a @file{Makefile}.
|
|
171
|
|
172 @item
|
|
173 For the @samp{Automake} project type, @ede{} creates a
|
|
174 @file{Project.ede} project file similar to a @samp{Make} project.
|
|
175 Unlike a @samp{Make} project, this project autogenerates a
|
|
176 @file{Makefile.am} file. @ede{} handles the Automake bootstrapping
|
|
177 routines, which import and maintain a @file{configure.am} script and
|
|
178 other required files.
|
|
179
|
|
180 @item
|
|
181 For the @samp{direct Automake} project type, @ede{} reads directly
|
|
182 from the Automake files.
|
|
183
|
|
184 You cannot create direct Automake projects with the @command{ede-new}
|
|
185 command. Instead, when you visit a project with existing Automake
|
|
186 files, @ede{} automatically detects them.
|
|
187
|
|
188 @item
|
|
189 The @samp{Simple} project type provides light-weight constructs for
|
|
190 identifying a project root and looking up files. If you already have
|
|
191 a non-@ede{} project infrastructure, you can use a @samp{Simple}
|
|
192 project to provide other Emacs packages, such as Semantic, with some
|
|
193 information about the project. @xref{Simple projects}.
|
|
194 @end itemize
|
|
195
|
|
196 A subproject is merely a project in a subdirectory of another project.
|
|
197 You can create a subproject by using the @command{ede-new} command (or
|
|
198 the @samp{Create Project} menu item), while visiting a buffer in a
|
|
199 subdirectory of the project root. This new project is automatically
|
|
200 added to the parent project, and will be automatically loaded when
|
|
201 @ede{} reads the parent project.
|
|
202
|
|
203 When using a project command that involves a makefile, @ede{} uses
|
|
204 the top-most project's makefile as a starting place for the build. How
|
|
205 the toplevel project handles subprojects in the build process is
|
|
206 dependent on that project's type.
|
|
207
|
|
208 @node Modifying your project, Building and Debugging, Creating a project, top
|
|
209 @chapter Modifying your project
|
|
210
|
|
211 In this chapter, we describe the generic features for manipulating
|
|
212 projects, including the targets and files within them. Subsequent
|
|
213 chapters, which describe specific project types, will provide more
|
|
214 detailed information about exactly what these features do.
|
|
215
|
|
216 @menu
|
|
217 * Add/Remove target::
|
|
218 * Add/Remove files::
|
|
219 * Customize Features::
|
|
220 * EDE Project Features::
|
|
221 @end menu
|
|
222
|
|
223 @node Add/Remove target, Add/Remove files, Modifying your project, Modifying your project
|
|
224 @section Add/Remove target
|
|
225
|
|
226 To create a new target, type @kbd{C-c . t} (@code{M-x ede-new-target})
|
|
227 or use the @samp{Add Target} menu item in the @samp{Project Options}
|
|
228 submenu. This prompts for a target name, and adds the current buffer
|
|
229 to that target.
|
|
230
|
|
231 The @command{ede-new-target} command also prompts for a @dfn{target
|
|
232 type}. Each target type has its own build process and class of files
|
|
233 that it will accept.
|
|
234
|
|
235 To remove a target from the project, type @kbd{M-x ede-delete-target},
|
|
236 or use the @samp{Remove Target} menu item in the @samp{Project
|
|
237 Options} submenu.
|
|
238
|
|
239 @node Add/Remove files, Customize Features, Add/Remove target, Modifying your project
|
|
240 @section Add/Remove files
|
|
241
|
|
242 To add the current file to an existing target, type @kbd{C-c . a}
|
|
243 (@code{ede-add-file}), or or use the @samp{Add File} menu item in the
|
|
244 @samp{Target Options} submenu.
|
|
245
|
|
246 You can add a file to more than one target; this is OK.
|
|
247
|
|
248 To remove the current file from a target, type @kbd{C-c . d}
|
|
249 (@code{ede-remove-file}), or or use the @samp{Remove File} menu item
|
|
250 in the @samp{Target Options} submenu. If the file belongs to multiple
|
|
251 targets, this command prompts for each target it could be removed
|
|
252 from.
|
|
253
|
|
254 While working in a project, if you visit a file that is not part of an
|
|
255 existing target, @ede{} automatically prompts for a target. If you do
|
|
256 not wish to add the file to any target, you can choose @samp{none}.
|
|
257 You can customize this behavior with the variable
|
|
258 @command{ede-auto-add-method}.
|
|
259
|
|
260 @node Customize Features, EDE Project Features, Add/Remove files, Modifying your project
|
|
261 @section Customize Features
|
|
262
|
|
263 A project, and its targets, are objects using the @samp{EIEIO} object
|
|
264 system. @xref{Top,,,eieio,EIEIO manual}. These objects have data
|
|
265 fields containing important information related to your work.
|
|
266
|
|
267 If the high-level functions aren't enough, you can tweak all
|
|
268 user-customizable fields at any time by running the command
|
|
269 @command{customize-project} or @command{customize-target}. This loads
|
|
270 the current project or target into a customization buffer, where you
|
|
271 can tweak individual slots. This is usually necessary for complex
|
|
272 projects.
|
|
273
|
|
274 Some project modes do not have a project file, but directly read a
|
|
275 Makefile or other existing file. Instead of directly editing the
|
|
276 object, you can edit the file by typine @kbd{C-c . e}
|
|
277 (@code{ede-edit-file-target}). You should ``rescan'' the project
|
|
278 afterwards (@pxref{Miscellaneous commands}).
|
|
279
|
|
280 @node EDE Project Features, , Customize Features, Modifying your project
|
|
281 @section EDE Project Features
|
|
282
|
|
283 This section details user facing features of an @ede{} @samp{Make}
|
|
284 style project. An @samp{Automake} project has similar options (but a
|
|
285 direct Automake project does not).
|
|
286
|
|
287 To modify any of the specific features mentioned here, you need to
|
|
288 customize the project or target with @command{customize-project} or
|
|
289 @command{customize-target}.
|
|
290
|
|
291 When you are customizing, you are directly manipulating slot values in
|
|
292 @eieio{} objects. @xref{Extending EDE}, if you are interested in
|
|
293 additional details.
|
|
294
|
|
295 @menu
|
|
296 * Changing Compilers and Flags::
|
|
297 * Configurations::
|
|
298 @end menu
|
|
299
|
|
300 @node Changing Compilers and Flags, Configurations, EDE Project Features, EDE Project Features
|
|
301 @subsection Changing Compilers and Flags
|
|
302
|
|
303 Targets that build stuff need compilers. To change compilers, you
|
|
304 need to customize the desired target.
|
|
305
|
|
306 In the @samp{[Make]} section, you can choose a new compiler or linker
|
|
307 from the list. If a linker you need is not available, you will need
|
|
308 to create a new one. @xref{Compiler and Linker objects}.
|
|
309
|
|
310 If an existing compiler or linker is close, but you need to modify
|
|
311 some flag set such as adding an include path you will need to add a
|
|
312 configuration variable.
|
|
313
|
|
314 To start, you should create the basic setup, and construct a makefile
|
|
315 with @command{ede-proj-regenerate}. Look in the @file{Makefile} to
|
|
316 see what commands are inserted. Once you have determined the variable
|
|
317 you need to modify, you can add a configuration for it.
|
|
318 @xref{Configurations}.
|
|
319
|
|
320 @node Configurations, , Changing Compilers and Flags, EDE Project Features
|
|
321 @subsection Configurations
|
|
322
|
|
323 Configurations specify different ways to build a project. For
|
|
324 example, you may configure a project to be in ``debug'' mode, or
|
|
325 perhaps in ``release'' mode.
|
|
326
|
|
327 The project, and each target type all have a slot named
|
|
328 @code{configuration-variables}. To add new variables to a
|
|
329 configuration find this slot in the custom buffer, and insert a new
|
|
330 configuration. Name it either ``debug'' or ``release'', then insert
|
|
331 some number of name/value pairs to it.
|
|
332
|
|
333 You can have any number of valid configurations too. To add a new
|
|
334 configuration, customize your project. Work in the @samp{[Settings]}
|
|
335 block for ``configurations''. Add a new named configuration here.
|
|
336
|
|
337 To switch between different active configurations, modify the
|
|
338 ``configuration default'' slot.
|
|
339
|
|
340 @node Building and Debugging, Miscellaneous commands, Modifying your project, top
|
|
341 @chapter Building and Debugging
|
|
342
|
|
343 @ede{} provides the following ``project-aware'' compilation and
|
|
344 debugging commands:
|
|
345
|
|
346 @table @kbd
|
|
347 @item C-c . c
|
|
348 Compile the current target (@code{ede-compile-target}).
|
|
349 @item C-c . C
|
|
350 Compile the entire project (@code{ede-compile-project}).
|
|
351 @item c-c . D
|
|
352 Debug the current target (@code{ede-debug-target}).
|
|
353 @item M-x ede-make-dist
|
|
354 Build a distribution file for your project.
|
|
355 @end table
|
|
356
|
|
357 These commands are also available from the @samp{Development} menu.
|
|
358
|
|
359 @node Miscellaneous commands, Simple projects, Building and Debugging, top
|
|
360 @chapter Miscellaneous commands
|
|
361
|
|
362 If you opt to go in and edit @ede{} project files directly---for
|
|
363 instance, by using @kbd{C-c . e} (@pxref{Customize Features})---you
|
|
364 must then ``rescan'' the project files to update the internal data
|
|
365 structures. To rescan the current project, type @kbd{C-c . g}
|
|
366 (@code{ede-rescan-toplevel}).
|
|
367
|
|
368 @ede{} can help you find files in your project, via the command
|
|
369 @kbd{C-c . f} (@code{ede-find-file}). This prompts for a file name;
|
|
370 you need not specify the directory. EDE then tries to visit a file
|
|
371 with that name somewhere in your project.
|
|
372
|
|
373 @ede{} can use external tools to help with file finding. To do this,
|
|
374 customize @code{ede-locate-setup-options}.
|
|
375
|
|
376 @defvar ede-locate-setup-options
|
|
377 @anchor{ede-locate-setup-options}
|
|
378 List of locate objects to try out by default.
|
|
379 Listed in order of preference. If the first item cannot be used in
|
|
380 a particular project, then the next one is tried.
|
|
381 It is always assumed that @dfn{ede-locate-base} is at end of the list.
|
|
382 @end defvar
|
|
383
|
|
384 @ede{} also provides a project display mode for the speedbar
|
|
385 (@pxref{Speedbar,,,emacs,GNU Emacs Manual}). This allows you to view
|
|
386 your source files as they are structured in your project: as a
|
|
387 hierarchical tree, grouped according to target.
|
|
388
|
|
389 To activate the speedbar in this mode, type @kbd{C-c . s}
|
|
390 (@code{ede-speedbar}).
|
|
391
|
|
392 @node Simple projects, Extending EDE, Miscellaneous commands, top
|
|
393 @section Simple Projects
|
|
394
|
|
395 There is a wide array of Simple projects. The root for simple
|
|
396 projects is the class @code{ede-simple-project}. This handles the
|
|
397 infrastructure of storing a .ede file if needed.
|
|
398
|
|
399 The class @code{ede-simple-project} is designed to be subclassed.
|
|
400 Then key @ede{} methods can be overridden to provide a quick wrapper
|
|
401 over any project.
|
|
402
|
|
403 A second project type is @code{ede-cpp-root}. This project type is
|
|
404 designed to be created for a directory hierarchy full of C/C++ code.
|
|
405 It can be configured with minimal lisp knowledge to do header file
|
|
406 lookup for @semantic{}, improving code completion performance.
|
|
407
|
|
408 @menu
|
|
409 * ede-cpp-root:: This project marks the root of a C/C++ code project.
|
|
410 * ede-simple subclassing:: Create your own simple project.
|
|
411 * ede-emacs:: A project for working with Emacs.
|
|
412 * ede-linux:: A project for working with Linux kernels.
|
|
413 * Custom Locate:: Customizing how to locate files in a simple project
|
|
414 @end menu
|
|
415
|
|
416 @node ede-cpp-root
|
|
417 @subsection ede-cpp-root
|
|
418
|
|
419 The @code{ede-cpp-root} project type allows you to create a single
|
|
420 object with no save-file in your @file{.emacs} file. It allows @ede{}
|
|
421 to provide the @semantic{} package with the ability to find header
|
|
422 files quickly.
|
|
423
|
|
424 The @code{ede-cpp-root} class knows a few things about C++ projects,
|
|
425 such as the prevalence of "include" directories, and typical
|
|
426 file-layout stuff. If this isn't sufficient, you can subclass
|
|
427 @code{ede-cpp-root-project} and add your own tweaks in just a few
|
|
428 lines. See the end of this file for an example.
|
|
429
|
|
430 In the most basic case, add this to your @file{.emacs} file, modifying
|
|
431 appropriate bits as needed.
|
|
432
|
|
433 @example
|
|
434 (ede-cpp-root-project "SOMENAME" :file "/dir/to/some/file")
|
|
435 @end example
|
|
436
|
|
437 Replace @var{SOMENAME} with whatever name you want, and the filename
|
|
438 to an actual file at the root of your project. It might be a
|
|
439 Makefile, a README file. Whatever. It doesn't matter. It's just a
|
|
440 key to hang the rest of @ede{} off of.
|
|
441
|
|
442 The most likely reason to create this project, is to speed up
|
|
443 searching for includes files, or to simplify bootstrapping @semantic{}'s
|
|
444 ability to find files without much user interaction. In conjunction
|
|
445 with @semantic{} completion, having a short include path is key. You can
|
|
446 override the default include path and system include path like this:
|
|
447
|
|
448 @example
|
|
449 (ede-cpp-root-project "NAME" :file "FILENAME"
|
|
450 :include-path '( "/include" "../include" "/c/include" )
|
|
451 :system-include-path '( "/usr/include/c++/3.2.2/" )
|
|
452 :spp-table '( ("MOOSE" . "")
|
|
453 ("CONST" . "const") ) )
|
|
454 @end example
|
|
455
|
|
456 In this case each item in the include path list is searched. If the
|
|
457 directory starts with "/", then that expands to the project root
|
|
458 directory. If a directory does not start with "/", then it is
|
|
459 relative to the default-directory of the current buffer when the file
|
|
460 name is expanded.
|
|
461
|
|
462 The include path only affects C/C++ header files. Use the slot
|
|
463 @code{:header-match-regexp} to change it.
|
|
464
|
|
465 The @code{:system-include-path} allows you to specify full directory
|
|
466 names to include directories where system header files can be found.
|
|
467 These will be applied to files in this project only.
|
|
468
|
|
469 The @code{:spp-table} provides a list of project specific #define
|
|
470 style macros that are unique to this project, passed in to the
|
|
471 compiler on the command line, or are in special headers.
|
|
472 See the @code{semantic-lex-c-preprocessor-symbol-map} for more
|
|
473 on how to format this entry.
|
|
474
|
|
475 If there is a single file in your project, you can instead set the
|
|
476 @code{:spp-files} to a list of file names relative to the root of your
|
|
477 project. Specifying this is like setting the variable
|
|
478 @code{semantic-lex-c-preprocessor-symbol-file} in semantic.
|
|
479
|
|
480 If you want to override the file-finding tool with your own
|
|
481 function you can do this:
|
|
482
|
|
483 @example
|
|
484 (ede-cpp-root-project "NAME" :file "FILENAME" :locate-fcn 'MYFCN)
|
|
485 @end example
|
|
486
|
|
487 Where @var{MYFCN} is a symbol for a function. The locate function can
|
|
488 be used in place of @code{ede-expand-filename} so you can quickly
|
|
489 customize your custom target to use specialized local routines instead
|
|
490 of the default @ede{} routines. The function symbol must take two
|
|
491 arguments:
|
|
492
|
|
493 @table @var
|
|
494 @item NAME
|
|
495 The name of the file to find.
|
|
496 @item DIR
|
|
497 The directory root for this cpp-root project.
|
|
498 @end table
|
|
499
|
|
500
|
|
501 If the cpp-root project style is right for you, but you want a dynamic
|
|
502 loader, instead of hard-coding path name values in your @file{.emacs}, you
|
|
503 can do that too, but you will need to write some lisp code.
|
|
504
|
|
505 To do that, you need to add an entry to the
|
|
506 @code{ede-project-class-files} list, and also provide two functions to
|
|
507 teach @ede{} how to load your project pattern
|
|
508
|
|
509 It would look like this:
|
|
510
|
|
511 @example
|
|
512 (defun MY-FILE-FOR-DIR (&optional dir)
|
|
513 "Return a full file name to the project file stored in DIR."
|
|
514 <write your code here, or return nil>
|
|
515 )
|
|
516
|
|
517 (defun MY-ROOT-FCN ()
|
|
518 "Return the root fcn for `default-directory'"
|
|
519 ;; You might be able to use `ede-cpp-root-project-root'
|
|
520 ;; and not write this at all.
|
|
521 )
|
|
522
|
|
523 (defun MY-LOAD (dir)
|
|
524 "Load a project of type `cpp-root' for the directory DIR.
|
|
525 Return nil if there isn't one."
|
|
526 ;; Use your preferred constructin method here.
|
|
527 (ede-cpp-root-project "NAME" :file (expand-file-name "FILE" dir)
|
|
528 :locate-fcn 'MYFCN)
|
|
529 )
|
|
530
|
|
531 (add-to-list 'ede-project-class-files
|
|
532 (ede-project-autoload "cpp-root"
|
|
533 :name "CPP ROOT"
|
|
534 :file 'ede-cpp-root
|
|
535 :proj-file 'MY-FILE-FOR-DIR
|
|
536 :proj-root 'MY-ROOT-FCN
|
|
537 :load-type 'MY-LOAD
|
|
538 :class-sym 'ede-cpp-root)
|
|
539 t)
|
|
540 @end example
|
|
541
|
|
542 This example only creates an auto-loader, and does not create a new kind
|
|
543 of project.
|
|
544
|
|
545 @xref{ede-cpp-root-project}, for details about the class that defines
|
|
546 the @code{ede-cpp-root} project type.
|
|
547
|
|
548 @node ede-simple subclassing
|
|
549 @subsection ede-simple Subclassing
|
|
550
|
|
551 todo - Write some doc.
|
|
552
|
|
553 In the meantime look in the commentary of ede-simple.el
|
|
554
|
|
555 @node ede-emacs
|
|
556 @subsection ede-emacs
|
|
557
|
|
558 The @code{ede-emacs} project automatically identifies an Emacs source
|
|
559 tree, and enables EDE project mode for it.
|
|
560
|
|
561 It pre-populates the C Preprocessor symbol map for correct parsing,
|
|
562 and has an optimized include file identification function.
|
|
563
|
|
564 @node ede-linux
|
|
565 @subsection ede-linux
|
|
566
|
|
567 The @code{ede-linux} project will automatically identify a Linux
|
|
568 Kernel source tree, and enable EDE project mode for it.
|
|
569
|
|
570 It pre-populates the C Preprocessor symbol map for reasonable parsing,
|
|
571 and has an optimized include file identification function.
|
|
572
|
|
573 @node Custom Locate
|
|
574 @subsection Custom Locate
|
|
575
|
|
576 The various simple project styles all have one major drawback, which
|
|
577 is that the files in the project are not completely known to EDE.
|
|
578 When the EDE API is used to try and file files by some reference name
|
|
579 in the project, then that could fail.
|
|
580
|
|
581 @@TODO - Add ID Utils and CScope examples
|
|
582
|
|
583 @ede{} can therefore use some external locate commands, such as the unix
|
|
584 ``locate'' command, or ``GNU Global''.
|
|
585
|
|
586 Configuration of the tool you want to use such as @code{locate}, or
|
|
587 @code{global} will need to be done without the aid of @ede{}. Once
|
|
588 configured, however, @ede{} can use it.
|
|
589
|
|
590 To enable one of these tools, set the variable
|
|
591 @code{ede-locate-setup-options} with the names of different locate
|
|
592 objects. @ref{Miscellaneous commands}.
|
|
593
|
|
594 Configure this in your @file{.emacs} before loading in CEDET or EDE.
|
|
595 If you want to add support for GNU Global, your configuration would
|
|
596 look like this:
|
|
597
|
|
598 @example
|
|
599 (setq ede-locate-setup-options '(ede-locate-global ede-locate-base))
|
|
600 @end example
|
|
601
|
|
602 That way, when a search needs to be done, it will first try using
|
|
603 GLOBAL. If global is not available for that directory, then it will
|
|
604 revert to the base locate object. The base object always fails to
|
|
605 find a file.
|
|
606
|
|
607 You can add your own locate tool but subclassing from
|
|
608 @code{ede-locate-base}. The subclass should also implement two
|
|
609 methods. See the code in @file{ede-locate.el} for GNU Global as a
|
|
610 simple example.
|
|
611
|
|
612 @node Extending EDE, , Simple projects, top
|
|
613 @chapter Extending @ede{}
|
|
614
|
|
615 This chapter is intended for users who want to write new parts or fix
|
|
616 bugs in @ede{}. A knowledge of Emacs Lisp, and some @eieio{}(CLOS) is
|
|
617 required.
|
|
618
|
|
619 @ede{} uses @eieio{}, the CLOS package for Emacs, to define two object
|
|
620 superclasses, specifically the PROJECT and TARGET. All commands in
|
|
621 @ede{} are usually meant to address the current project, or current
|
|
622 target.
|
|
623
|
|
624 All specific projects in @ede{} derive subclasses of the @ede{}
|
|
625 superclasses. In this way, specific behaviors such as how a project
|
|
626 is saved, or how a target is compiled can be customized by a project
|
|
627 author in detail. @ede{} communicates to these project objects via an
|
|
628 API using methods. The commands you use in @ede{} mode are high-level
|
|
629 functional wrappers over these methods. @xref{(eieio)Top}. For
|
|
630 details on using @eieio{} to extending classes, and writing methods.
|
|
631
|
|
632 If you intend to extend @ede{}, it is most likely that a new target type is
|
|
633 needed in one of the existing project types. The rest of this chapter
|
|
634 will discuss extending the @code{ede-project} class, and it's targets.
|
|
635 See @file{project-am.el} for basic details on adding targets to it.
|
|
636
|
|
637 For the @code{ede-project} type, the core target class is called
|
|
638 @code{ede-proj-target}. Inheriting from this will give you everything
|
|
639 you need to start, including adding your sources into the makefile. If
|
|
640 you also need additional rules in the makefile, you will want to inherit
|
|
641 from @code{ede-proj-target-makefile} instead. You may want to also add
|
|
642 new fields to track important information.
|
|
643
|
|
644 If you are building currently unsupported code into a program or shared
|
|
645 library, it is unlikely you need a new target at all. Instead you
|
|
646 would need to create a new compiler or linker object that compiles
|
|
647 source code of the desired type. @ref{Compiler and Linker objects}.
|
|
648
|
|
649 Once your new class exists, you will want to fill in some basic methods.
|
|
650 See the @file{ede-skel.el} file for examples of these. The files
|
|
651 @file{ede-proj-info.el} and @file{ede-proj-elisp.el} are two interesting
|
|
652 examples.
|
|
653
|
|
654 @menu
|
|
655 * User interface methods:: Methods associated with keybindings
|
|
656 * Base project methods:: The most basic methods on @ede{} objects.
|
|
657 * Sourcecode objects:: Defining new sourcecode classes.
|
|
658 * Compiler and Linker objects:: Defining new compilers and linkers.
|
|
659 * Project:: Details of project classes.
|
|
660 * Targets:: Details of target classes.
|
|
661 * Sourcecode:: Details of source code classes.
|
|
662 * Compilers:: Details of compiler classes.
|
|
663 @end menu
|
|
664
|
|
665 @node User interface methods
|
|
666 @section User interface methods
|
|
667
|
|
668 These methods are core behaviors associated with user commands.
|
|
669 If you do not implement a method, there is a reasonable default that
|
|
670 may do what you need.
|
|
671
|
|
672 @table @code
|
|
673 @item project-add-file
|
|
674 Add a file to your project. Override this if you want to put new
|
|
675 sources into different fields depending on extension, or other details.
|
|
676 @item project-remove-file
|
|
677 Reverse of project-add-file.
|
|
678 @item project-compile-target
|
|
679 Override this if you want to do something special when the user
|
|
680 "compiles" this target.
|
|
681 @item project-debug-target
|
|
682 What to do when a user wants to debug your target.
|
|
683 @item project-update-version
|
|
684 Easily update the version number of your project.
|
|
685 @item project-edit-file-target
|
|
686 Edit the file the project's information is stored in.
|
|
687 @item project-new-target
|
|
688 Create a new target in a project.
|
|
689 @item project-delete-target
|
|
690 Delete a target from a project.
|
|
691 @item project-make-dist
|
|
692 Make a distribution (tar archive) of the project.
|
|
693 @item project-rescan
|
|
694 Rescan a project file, changing the data in the existing objects.
|
|
695 @end table
|
|
696
|
|
697 @node Base project methods
|
|
698 @section Base project methods
|
|
699
|
|
700 These methods are important for querying base information from project
|
|
701 and target types:
|
|
702
|
|
703 @table @code
|
|
704 @item ede-name
|
|
705 Return a string that is the name of this target.
|
|
706 @item ede-target-name
|
|
707 Return a string that is the name of the target used by a Make system.
|
|
708 @item ede-description
|
|
709 A brief description of the project or target. This is currently used
|
|
710 by the @samp{ede-speedbar} interface.
|
|
711 @item ede-want-file-p
|
|
712 Return non-nil if a target will accept a given file.
|
|
713 It is generally unecessary to override this. See the section on source
|
|
714 code.
|
|
715 @item ede-buffer-mine
|
|
716 Return non-nil if a buffer belongs to this target. Used during
|
|
717 association when a file is loaded. It is generally unecessary to
|
|
718 override this unless you keep auxiliary files.
|
|
719 @end table
|
|
720
|
|
721 These methods are used by the semantic package extensions @xref{(semantic)Top}.
|
|
722
|
|
723 @table @code
|
|
724 @item ede-buffer-header-file
|
|
725 Return a header file belonging to a given buffer. Prototypes are place
|
|
726 there when appropriate
|
|
727 @item ede-buffer-documentation-files
|
|
728 Return the documentation file information about this file would be
|
|
729 stored in.
|
|
730 @item ede-documentation
|
|
731 List all documentation a project or target is responsible for.
|
|
732 @end table
|
|
733
|
|
734 @node Sourcecode objects
|
|
735 @section Sourcecode objects
|
|
736
|
|
737 @ede{} projects track source file / target associates via source code
|
|
738 objects. The definitions for this is in @file{ede-source.el}. A source
|
|
739 code object contains methods that know how to identify a file as being
|
|
740 of that class, (ie, a C file ends with @file{.c}). Some targets can
|
|
741 handle many different types of sources which must all be compiled
|
|
742 together. For example, a mixed C and C++ program would have
|
|
743 instantiations of both sourcecode types.
|
|
744
|
|
745 When a target needs to know if it will accept a source file, it
|
|
746 references its list of source code objects. These objects then make
|
|
747 that decision.
|
|
748
|
|
749 Source code objects are stored in the target objects as a list of
|
|
750 symbols, where the symbol's value is the object. This enables the
|
|
751 project save file mechanism to work.
|
|
752
|
|
753 Here is an example for an instantiation of an Emacs Lisp source code object:
|
|
754
|
|
755 @example
|
|
756 (defvar ede-source-emacs
|
|
757 (ede-sourcecode "ede-emacs-source"
|
|
758 :name "Emacs Lisp"
|
|
759 :sourcepattern "\\.el$"
|
|
760 :garbagepattern '("*.elc"))
|
|
761 "Emacs Lisp source code definition.")
|
|
762 @end example
|
|
763
|
|
764 If you want to recycle parts of an existing sourcecode object, you can
|
|
765 clone the original, and then just tweak the parts that are different.
|
|
766 For example:
|
|
767
|
|
768 @example
|
|
769 (defvar ede-source-emacs-autoload
|
|
770 (clone ede-source-emacs "ede-source-emacs-autoload"
|
|
771 :name "Emacs Lisp Autoload"
|
|
772 :sourcepattern "-loaddefs\\.el")
|
|
773 "Emacs Lisp autoload source code.")
|
|
774 @end example
|
|
775
|
|
776 In this case, the garbage pattern is the same.
|
|
777
|
|
778 @xref{Sourcecode}.
|
|
779
|
|
780 @node Compiler and Linker objects
|
|
781 @section Compiler and Linker objects
|
|
782
|
|
783 In order for a target to create a @file{Makefile}, it must know how to
|
|
784 compile the sources into the program or desired data file, and
|
|
785 possibly link them together.
|
|
786
|
|
787 A compiler object instantiation is used to associate a given target
|
|
788 with a given source code type. Some targets can handle many types of
|
|
789 sources, and thus has many compilers available to it. Some targets
|
|
790 may have multiple compilers for a given type of source code.
|
|
791
|
|
792 @ede{} will examine the actual source files in a target, cross reference
|
|
793 that against the compiler list to come up with the final set of
|
|
794 compilers that will be inserted into the Makefile.
|
|
795
|
|
796 Compiler instantiations must also insert variables specifying the
|
|
797 compiler it plans to use, in addition to creating Automake settings for
|
|
798 @file{configure.in} when appropriate.
|
|
799
|
|
800 Compiler objects are stored in the target objects as a list of
|
|
801 symbols, where the symbols value is the object. This enables the
|
|
802 project output mechanism to work more efficiently.
|
|
803
|
|
804 Targets will also have a special "compiler" slot which lets a user
|
|
805 explicitly choose the compiler they want to use.
|
|
806
|
|
807 Here is an example for texinfo:
|
|
808
|
|
809 @example
|
|
810 (defvar ede-makeinfo-compiler
|
|
811 (ede-compiler
|
|
812 "ede-makeinfo-compiler"
|
|
813 :name "makeinfo"
|
|
814 :variables '(("MAKEINFO" . "makeinfo"))
|
|
815 :commands '("makeinfo -o $@ $<")
|
|
816 :autoconf '(("AC_CHECK_PROG" . "MAKEINFO, makeinfo"))
|
|
817 :sourcetype '(ede-makeinfo-source)
|
|
818 )
|
|
819 "Compile texinfo files into info files.")
|
|
820 @end example
|
|
821
|
|
822 @xref{Compilers}.
|
|
823
|
|
824 When creating compiler instantiations, it may be useful to @code{clone}
|
|
825 an existing compiler variable. Cloning allows you to only modify
|
|
826 parts of the original, while keeping the rest of the same.
|
|
827 Modification of the original will result in the clone also being
|
|
828 changed for shared value slots.
|
|
829
|
|
830 The second important object is the linker class. The linker is similar
|
|
831 to the compiler, except several compilers might be used to create some
|
|
832 object files, and only one linker is used to link those objects together.
|
|
833
|
|
834 See @file{ede-proj-obj.el} for examples of the combination.
|
|
835
|
|
836 @defindex pj
|
|
837 @defindex tg
|
|
838 @defindex sc
|
|
839 @defindex cm
|
|
840
|
|
841 @node Project
|
|
842 @section Project
|
|
843
|
|
844 @menu
|
|
845 * ede-project-placeholder ::
|
|
846 * ede-project ::
|
|
847 * ede-cpp-root-project ::
|
|
848 * ede-simple-project ::
|
|
849 * ede-simple-base-project ::
|
|
850 * ede-proj-project ::
|
|
851 * project-am-makefile ::
|
|
852 * ede-step-project ::
|
|
853 @end menu
|
|
854
|
|
855 @node ede-project-placeholder
|
|
856 @subsection ede-project-placeholder
|
|
857 @pjindex ede-project-placeholder
|
|
858
|
|
859 @table @asis
|
|
860 @item Inheritance Tree:
|
|
861 @table @code
|
|
862 @item eieio-speedbar
|
|
863 @table @code
|
|
864 @item eieio-speedbar-directory-button
|
|
865 @table @code
|
|
866 @item ede-project-placeholder
|
|
867 @table @asis
|
|
868 @item Children:
|
|
869 @w{@xref{ede-project}.}
|
|
870 @end table
|
|
871 @end table
|
|
872 @end table
|
|
873 @end table
|
|
874 @end table
|
|
875
|
|
876 @table @asis
|
|
877 @item Slots:
|
|
878
|
|
879 @table @code
|
|
880 @item :name
|
|
881 Type: @code{string} @*
|
|
882 Default Value: @code{"Untitled"}
|
|
883
|
|
884 The name used when generating distribution files.
|
|
885 @refill
|
|
886
|
|
887 @item :version
|
|
888 Type: @code{string} @*
|
|
889 Default Value: @code{"1.0"}
|
|
890
|
|
891 The version number used when distributing files.
|
|
892 @refill
|
|
893
|
|
894 @item :directory
|
|
895 Type: @code{string}
|
|
896
|
|
897 Directory this project is associated with.
|
|
898 @refill
|
|
899
|
|
900 @item :file
|
|
901 Type: @code{string}
|
|
902
|
|
903 File name where this project is stored.
|
|
904 @refill
|
|
905
|
|
906 @end table
|
|
907
|
|
908 @end table
|
|
909
|
|
910 @subsubsection Specialized Methods
|
|
911
|
|
912 @deffn Method ede--project-inode :AFTER proj
|
|
913 Get the inode of the directory project @var{PROJ} is in.
|
|
914 @end deffn
|
|
915
|
|
916 @deffn Method ede-project-root :AFTER this
|
|
917 If a project knows it's root, return it here.
|
|
918 Allows for one-project-object-for-a-tree type systems.
|
|
919 @end deffn
|
|
920
|
|
921 @deffn Method ede-find-subproject-for-directory :AFTER proj dir
|
|
922 Find a subproject of @var{PROJ} that corresponds to @var{DIR}.
|
|
923 @end deffn
|
|
924
|
|
925 @deffn Method ede-project-root-directory :AFTER this &optional file
|
|
926 If a project knows it's root, return it here.
|
|
927 Allows for one-project-object-for-a-tree type systems.
|
|
928 Optional @var{FILE} is the file to test. It is ignored in preference
|
|
929 of the anchor file for the project.
|
|
930 @end deffn
|
|
931
|
|
932 @deffn Method ede-project-force-load :AFTER this
|
|
933 Make sure the placeholder @var{THIS} is replaced with the real thing.
|
|
934 Return the new object created in its place.
|
|
935 @end deffn
|
|
936
|
|
937 @deffn Method project-interactive-select-target :AFTER this prompt
|
|
938 Make sure placeholder @var{THIS} is replaced with the real thing, and pass through.
|
|
939 @end deffn
|
|
940
|
|
941 @deffn Method project-add-file :AFTER this file
|
|
942 Make sure placeholder @var{THIS} is replaced with the real thing, and pass through.
|
|
943 @end deffn
|
|
944
|
|
945 @node ede-project
|
|
946 @subsection ede-project
|
|
947 @pjindex ede-project
|
|
948
|
|
949 @table @asis
|
|
950 @item Inheritance Tree:
|
|
951 @table @code
|
|
952 @item eieio-speedbar
|
|
953 @table @code
|
|
954 @item eieio-speedbar-directory-button
|
|
955 @table @code
|
|
956 @item @w{@xref{ede-project-placeholder}.}
|
|
957 @table @code
|
|
958 @item ede-project
|
|
959 @table @asis
|
|
960 @item Children:
|
|
961 @w{@xref{ede-cpp-root-project},} @w{ede-emacs-project,} @w{ede-linux-project,} @w{ede-maven-project,} @w{@xref{ede-simple-project},} @w{@xref{ede-simple-base-project},} @w{@xref{ede-proj-project},} @w{@xref{project-am-makefile},} @w{@xref{ede-step-project}.}
|
|
962 @end table
|
|
963 @end table
|
|
964 @end table
|
|
965 @end table
|
|
966 @end table
|
|
967 @end table
|
|
968
|
|
969 @table @asis
|
|
970 @item Slots:
|
|
971
|
|
972 @table @code
|
|
973 @item :targets
|
|
974 Type: @code{list}
|
|
975
|
|
976 List of top level targets in this project.
|
|
977 @refill
|
|
978
|
|
979 @item :tool-cache
|
|
980 Type: @code{list}
|
|
981
|
|
982 List of tool cache configurations in this project.
|
|
983 This allows any tool to create, manage, and persist project-specific settings.
|
|
984 @refill
|
|
985
|
|
986 @item :web-site-url
|
|
987 Type: @code{string} @*
|
|
988
|
|
989 URL to this projects web site.
|
|
990 This is a URL to be sent to a web site for documentation.
|
|
991 @refill
|
|
992
|
|
993 @item :web-site-directory @*
|
|
994
|
|
995 A directory where web pages can be found by Emacs.
|
|
996 For remote locations use a path compatible with ange-ftp or EFS.
|
|
997 You can also use TRAMP for use with rcp & scp.
|
|
998 @refill
|
|
999
|
|
1000 @item :web-site-file @*
|
|
1001
|
|
1002 A file which contains the home page for this project.
|
|
1003 This file can be relative to slot @code{web-site-directory}.
|
|
1004 This can be a local file, use ange-ftp, EFS, or TRAMP.
|
|
1005 @refill
|
|
1006
|
|
1007 @item :ftp-site
|
|
1008 Type: @code{string} @*
|
|
1009
|
|
1010 FTP site where this project's distribution can be found.
|
|
1011 This FTP site should be in Emacs form, as needed by @code{ange-ftp}, but can
|
|
1012 also be of a form used by TRAMP for use with scp, or rcp.
|
|
1013 @refill
|
|
1014
|
|
1015 @item :ftp-upload-site
|
|
1016 Type: @code{string} @*
|
|
1017
|
|
1018 FTP Site to upload new distributions to.
|
|
1019 This FTP site should be in Emacs form as needed by @code{ange-ftp}.
|
|
1020 If this slot is @code{nil}, then use @code{ftp-site} instead.
|
|
1021 @refill
|
|
1022
|
|
1023 @item :configurations
|
|
1024 Type: @code{list} @*
|
|
1025 Default Value: @code{("debug" "release")}
|
|
1026
|
|
1027 List of available configuration types.
|
|
1028 Individual target/project types can form associations between a configuration,
|
|
1029 and target specific elements such as build variables.
|
|
1030 @refill
|
|
1031
|
|
1032 @item :configuration-default @*
|
|
1033 Default Value: @code{"debug"}
|
|
1034
|
|
1035 The default configuration.
|
|
1036 @refill
|
|
1037
|
|
1038 @item :local-variables @*
|
|
1039 Default Value: @code{nil}
|
|
1040
|
|
1041 Project local variables
|
|
1042 @refill
|
|
1043
|
|
1044 @end table
|
|
1045
|
|
1046 @end table
|
|
1047 @subsubsection Specialized Methods
|
|
1048
|
|
1049 @deffn Method ede-preprocessor-map :AFTER this
|
|
1050 Get the pre-processor map for project @var{THIS}.
|
|
1051 @end deffn
|
|
1052
|
|
1053 @deffn Method ede-subproject-relative-path :AFTER proj &optional parent-in
|
|
1054 Get a path name for @var{PROJ} which is relative to the parent project.
|
|
1055 If PARENT is specified, then be relative to the PARENT project.
|
|
1056 Specifying PARENT is useful for sub-sub projects relative to the root project.
|
|
1057 @end deffn
|
|
1058
|
|
1059 @deffn Method eieio-speedbar-description :AFTER obj
|
|
1060 Provide a speedbar description for @var{OBJ}.
|
|
1061 @end deffn
|
|
1062
|
|
1063 @deffn Method ede-map-any-target-p :AFTER this proc
|
|
1064 For project @var{THIS}, map @var{PROC} to all targets and return if any non-nil.
|
|
1065 Return the first non-@code{nil} value returned by @var{PROC}.
|
|
1066 @end deffn
|
|
1067
|
|
1068 @deffn Method ede-map-subprojects :AFTER this proc
|
|
1069 For object @var{THIS}, execute @var{PROC} on all direct subprojects.
|
|
1070 This function does not apply @var{PROC} to sub-sub projects.
|
|
1071 See also @dfn{ede-map-all-subprojects}.
|
|
1072 @end deffn
|
|
1073
|
|
1074 @deffn Method ede-convert-path :AFTER this path
|
|
1075 Convert path in a standard way for a given project.
|
|
1076 Default to making it project relative.
|
|
1077 Argument @var{THIS} is the project to convert @var{PATH} to.
|
|
1078 @end deffn
|
|
1079
|
|
1080 @deffn Method ede-name :AFTER this
|
|
1081 Return a short-name for @var{THIS} project file.
|
|
1082 Do this by extracting the lowest directory name.
|
|
1083 @end deffn
|
|
1084
|
|
1085 @deffn Method ede-set-project-variables :AFTER project &optional buffer
|
|
1086 Set variables local to @var{PROJECT} in @var{BUFFER}.
|
|
1087 @end deffn
|
|
1088
|
|
1089 @deffn Method eieio-speedbar-derive-line-path :AFTER obj &optional depth
|
|
1090 Return the path to @var{OBJ}.
|
|
1091 Optional @var{DEPTH} is the depth we start at.
|
|
1092 @end deffn
|
|
1093
|
|
1094 @deffn Method ede-map-all-subprojects :AFTER this allproc
|
|
1095 For object @var{THIS}, execute PROC on @var{THIS} and all subprojects.
|
|
1096 This function also applies PROC to sub-sub projects.
|
|
1097 See also @dfn{ede-map-subprojects}.
|
|
1098 @end deffn
|
|
1099
|
|
1100 @deffn Method project-update-version :AFTER ot
|
|
1101 The @code{:version} of the project @var{OT} has been updated.
|
|
1102 Handle saving, or other detail.
|
|
1103 @end deffn
|
|
1104
|
|
1105 @deffn Method ede-buffer-header-file :AFTER this buffer
|
|
1106 Return @code{nil}, projects don't have header files.
|
|
1107 @end deffn
|
|
1108
|
|
1109 @deffn Method ede-buffer-documentation-files :AFTER this buffer
|
|
1110 Return all documentation in project @var{THIS} based on @var{BUFFER}.
|
|
1111 @end deffn
|
|
1112
|
|
1113 @deffn Method ede-map-targets :AFTER this proc
|
|
1114 For object @var{THIS}, execute @var{PROC} on all targets.
|
|
1115 @end deffn
|
|
1116
|
|
1117 @deffn Method ede-buffer-mine :AFTER this buffer
|
|
1118 Return non-@code{nil} if object @var{THIS} lays claim to the file in @var{BUFFER}.
|
|
1119 @end deffn
|
|
1120
|
|
1121 @deffn Method ede-object-keybindings :BEFORE this
|
|
1122 Retrieves the slot @code{keybindings} from an object of class @code{ede-project}
|
|
1123 @end deffn
|
|
1124
|
|
1125 @deffn Method ede-description :AFTER this
|
|
1126 Return a description suitable for the minibuffer about @var{THIS}.
|
|
1127 @end deffn
|
|
1128
|
|
1129 @deffn Method eieio-speedbar-object-children :AFTER this
|
|
1130 Return the list of speedbar display children for @var{THIS}.
|
|
1131 @end deffn
|
|
1132
|
|
1133 @deffn Method project-make-dist :AFTER this
|
|
1134 Build a distribution for the project based on @var{THIS} project.
|
|
1135 @end deffn
|
|
1136
|
|
1137 @deffn Method ede-system-include-path :AFTER this
|
|
1138 Get the system include path used by project @var{THIS}.
|
|
1139 @end deffn
|
|
1140
|
|
1141 @deffn Method project-new-target-custom :AFTER proj
|
|
1142 Create a new target. It is up to the project @var{PROJ} to get the name.
|
|
1143 @end deffn
|
|
1144
|
|
1145 @deffn Method ede-subproject-p :AFTER proj
|
|
1146 Return non-@code{nil} if @var{PROJ} is a sub project.
|
|
1147 @end deffn
|
|
1148
|
|
1149 @deffn Method ede-expand-filename :AFTER this filename &optional force
|
|
1150 Return a fully qualified file name based on project @var{THIS}.
|
|
1151 @var{FILENAME} should be just a filename which occurs in a directory controlled
|
|
1152 by this project.
|
|
1153 Optional argument @var{FORCE} forces the default filename to be provided even if it
|
|
1154 doesn't exist.
|
|
1155 @end deffn
|
|
1156
|
|
1157 @deffn Method ede-menu-items-build :AFTER obj &optional current
|
|
1158 Return a list of menu items for building project @var{OBJ}.
|
|
1159 If optional argument @var{CURRENT} is non-@code{nil}, return sub-menu code.
|
|
1160 @end deffn
|
|
1161
|
|
1162 @deffn Method ede-update-version-in-source :AFTER this version
|
|
1163 Change occurrences of a version string in sources.
|
|
1164 In project @var{THIS}, cycle over all targets to give them a chance to set
|
|
1165 their sources to @var{VERSION}.
|
|
1166 @end deffn
|
|
1167
|
|
1168 @deffn Method project-new-target :AFTER proj &rest args
|
|
1169 Create a new target. It is up to the project @var{PROJ} to get the name.
|
|
1170 @end deffn
|
|
1171
|
|
1172 @deffn Method project-compile-project :AFTER obj &optional command
|
|
1173 Compile the entire current project @var{OBJ}.
|
|
1174 Argument @var{COMMAND} is the command to use when compiling.
|
|
1175 @end deffn
|
|
1176
|
|
1177 @deffn Method eieio-speedbar-object-buttonname :AFTER object
|
|
1178 Return a string to use as a speedbar button for @var{OBJECT}.
|
|
1179 @end deffn
|
|
1180
|
|
1181 @deffn Method ede-map-project-buffers :AFTER this proc
|
|
1182 For @var{THIS}, execute @var{PROC} on all buffers belonging to @var{THIS}.
|
|
1183 @end deffn
|
|
1184
|
|
1185 @deffn Method ede-expand-filename-impl :AFTER this filename &optional force
|
|
1186 Return a fully qualified file name based on project @var{THIS}.
|
|
1187 @var{FILENAME} should be just a filename which occurs in a directory controlled
|
|
1188 by this project.
|
|
1189 Optional argument @var{FORCE} forces the default filename to be provided even if it
|
|
1190 doesn't exist.
|
|
1191 @end deffn
|
|
1192
|
|
1193 @deffn Method eieio-done-customizing :AFTER proj
|
|
1194 Call this when a user finishes customizing @var{PROJ}.
|
|
1195 @end deffn
|
|
1196
|
|
1197 @deffn Method ede-html-documentation :AFTER this
|
|
1198 Return a list of HTML files provided by project @var{THIS}.
|
|
1199 @end deffn
|
|
1200
|
|
1201 @deffn Method ede-documentation :AFTER this
|
|
1202 Return a list of files that provides documentation.
|
|
1203 Documentation is not for object @var{THIS}, but is provided by @var{THIS} for other
|
|
1204 files in the project.
|
|
1205 @end deffn
|
|
1206
|
|
1207 @deffn Method project-interactive-select-target :AFTER this prompt
|
|
1208 Interactively query for a target that exists in project @var{THIS}.
|
|
1209 Argument @var{PROMPT} is the prompt to use when querying the user for a target.
|
|
1210 @end deffn
|
|
1211
|
|
1212 @deffn Method ede-target-in-project-p :AFTER proj target
|
|
1213 Is @var{PROJ} the parent of @var{TARGET}?
|
|
1214 If @var{TARGET} belongs to a subproject, return that project file.
|
|
1215 @end deffn
|
|
1216
|
|
1217 @deffn Method ede-find-target :AFTER proj buffer
|
|
1218 Fetch the target in @var{PROJ} belonging to @var{BUFFER} or nil.
|
|
1219 @end deffn
|
|
1220
|
|
1221 @deffn Method ede-add-subproject :AFTER proj-a proj-b
|
|
1222 Add into @var{PROJ-A}, the subproject @var{PROJ-B}.
|
|
1223 @end deffn
|
|
1224
|
|
1225 @deffn Method ede-commit-project :AFTER proj
|
|
1226 Commit any change to @var{PROJ} to its file.
|
|
1227 @end deffn
|
|
1228
|
|
1229 @deffn Method project-dist-files :AFTER this
|
|
1230 Return a list of files that constitutes a distribution of @var{THIS} project.
|
|
1231 @end deffn
|
|
1232
|
|
1233 @deffn Method ede-object-menu :BEFORE this
|
|
1234 Retrieves the slot @code{menu} from an object of class @code{ede-project}
|
|
1235 @end deffn
|
|
1236
|
|
1237 @deffn Method ede-commit-local-variables :AFTER proj
|
|
1238 Commit change to local variables in @var{PROJ}.
|
|
1239 @end deffn
|
|
1240
|
|
1241 @node ede-cpp-root-project
|
|
1242 @subsection ede-cpp-root-project
|
|
1243 @pjindex ede-cpp-root-project
|
|
1244
|
|
1245 @table @asis
|
|
1246 @item Inheritance Tree:
|
|
1247 @table @code
|
|
1248 @item eieio-speedbar
|
|
1249 @table @code
|
|
1250 @item eieio-speedbar-directory-button
|
|
1251 @table @code
|
|
1252 @item @w{@xref{ede-project-placeholder}.}
|
|
1253 @table @code
|
|
1254 @item @w{@xref{ede-project}.}
|
|
1255 @table @code
|
|
1256 @item ede-cpp-root-project
|
|
1257 No children
|
|
1258 @end table
|
|
1259 @end table
|
|
1260 @end table
|
|
1261 @end table
|
|
1262 @end table
|
|
1263 @end table
|
|
1264
|
|
1265 This class implements the @code{ede-cpp-root} project type.
|
|
1266 @xref{ede-cpp-root}, for information about using this project type.
|
|
1267
|
|
1268 @table @asis
|
|
1269 @item Slots:
|
|
1270
|
|
1271 @table @code
|
|
1272 @item :include-path
|
|
1273 Type: @code{list} @*
|
|
1274 Default Value: @code{(quote ("/include" "../include/"))}
|
|
1275
|
|
1276 The default locate function expands filenames within a project.
|
|
1277 If a header file (.h, .hh, etc) name is expanded, and
|
|
1278 the @code{:locate-fcn} slot is @code{nil}, then the include path is checked
|
|
1279 first, and other directories are ignored. For very large
|
|
1280 projects, this optimization can save a lot of time.
|
|
1281
|
|
1282 Directory names in the path can be relative to the current
|
|
1283 buffer's @code{default-directory} (not starting with a /). Directories
|
|
1284 that are relative to the project's root should start with a /, such
|
|
1285 as "/include", meaning the directory @code{include} off the project root
|
|
1286 directory.
|
|
1287 @refill
|
|
1288
|
|
1289 @item :system-include-path
|
|
1290 Type: @code{list} @*
|
|
1291 Default Value: @code{nil}
|
|
1292
|
|
1293 The system include path for files in this project.
|
|
1294 C files initialized in an ede-cpp-root-project have their semantic
|
|
1295 system include path set to this value. If this is @code{nil}, then the
|
|
1296 semantic path is not modified.
|
|
1297 @refill
|
|
1298
|
|
1299 @item :spp-table
|
|
1300 Type: @code{list} @*
|
|
1301 Default Value: @code{nil}
|
|
1302
|
|
1303 C Preprocessor macros for your files.
|
|
1304 Preprocessor symbols will be used while parsing your files.
|
|
1305 These macros might be passed in through the command line compiler, or
|
|
1306 are critical symbols derived from header files. Providing header files
|
|
1307 macro values through this slot improves accuracy and performance.
|
|
1308 Use `:spp-files' to use these files directly.
|
|
1309 @refill
|
|
1310
|
|
1311 @item :spp-files
|
|
1312 Type: @code{list} @*
|
|
1313 Default Value: @code{nil}
|
|
1314
|
|
1315 C header file with Preprocessor macros for your files.
|
|
1316 The PreProcessor symbols appearing in these files will be used while
|
|
1317 parsing files in this project.
|
|
1318 See @code{semantic-lex-c-preprocessor-symbol-map} for more on how this works.
|
|
1319 @refill
|
|
1320
|
|
1321 @item :header-match-regexp
|
|
1322 Type: @code{string} @*
|
|
1323 Default Value: @code{"\\.\\(h\\(h\\|xx\\|pp\\|\\+\\+\\)?\\|H\\)$\\|\\<\\w+$"}
|
|
1324
|
|
1325 Regexp used to identify C/C++ header files.
|
|
1326 @refill
|
|
1327
|
|
1328 @item :locate-fcn
|
|
1329 Type: @code{(or null function)} @*
|
|
1330 Default Value: @code{nil}
|
|
1331
|
|
1332 The locate function can be used in place of
|
|
1333 @dfn{ede-expand-filename} so you can quickly customize your custom target
|
|
1334 to use specialized local routines instead of the EDE routines.
|
|
1335 The function symbol must take two arguments:
|
|
1336 NAME - The name of the file to find.
|
|
1337 DIR - The directory root for this cpp-root project.
|
|
1338
|
|
1339 It should return the fully qualified file name passed in from NAME. If that file does not
|
|
1340 exist, it should return nil.
|
|
1341 @refill
|
|
1342
|
|
1343 @end table
|
|
1344
|
|
1345 @end table
|
|
1346 @subsubsection Specialized Methods
|
|
1347
|
|
1348 @deffn Method initialize-instance :AFTER this &rest fields
|
|
1349 Make sure the @code{:file} is fully expanded.
|
|
1350 @end deffn
|
|
1351
|
|
1352 @deffn Method ede-preprocessor-map :AFTER this
|
|
1353 Get the pre-processor map for project @var{THIS}.
|
|
1354 @end deffn
|
|
1355
|
|
1356 @deffn Method ede-cpp-root-header-file-p :AFTER proj name
|
|
1357 Non @code{nil} if in @var{PROJ} the filename @var{NAME} is a header.
|
|
1358 @end deffn
|
|
1359
|
|
1360 @deffn Method ede-system-include-path :AFTER this
|
|
1361 Get the system include path used by project @var{THIS}.
|
|
1362 @end deffn
|
|
1363
|
|
1364 @deffn Method ede-expand-filename-impl :AFTER proj name
|
|
1365 Within this project @var{PROJ}, find the file @var{NAME}.
|
|
1366 This knows details about or source tree.
|
|
1367 @end deffn
|
|
1368
|
|
1369 @node ede-simple-project
|
|
1370 @subsection ede-simple-project
|
|
1371 @pjindex ede-simple-project
|
|
1372
|
|
1373 @table @asis
|
|
1374 @item Inheritance Tree:
|
|
1375 @table @code
|
|
1376 @item eieio-speedbar
|
|
1377 @table @code
|
|
1378 @item eieio-speedbar-directory-button
|
|
1379 @table @code
|
|
1380 @item @w{@xref{ede-project-placeholder}.}
|
|
1381 @table @code
|
|
1382 @item @w{@xref{ede-project}.}
|
|
1383 @table @code
|
|
1384 @item ede-simple-project
|
|
1385 No children
|
|
1386 @end table
|
|
1387 @end table
|
|
1388 @end table
|
|
1389 @end table
|
|
1390 @end table
|
|
1391 @end table
|
|
1392
|
|
1393 @subsubsection Specialized Methods
|
|
1394
|
|
1395 @deffn Method ede-commit-project :AFTER proj
|
|
1396 Commit any change to @var{PROJ} to its file.
|
|
1397 @end deffn
|
|
1398
|
|
1399 @node ede-simple-base-project
|
|
1400 @subsection ede-simple-base-project
|
|
1401 @pjindex ede-simple-base-project
|
|
1402
|
|
1403 @table @asis
|
|
1404 @item Inheritance Tree:
|
|
1405 @table @code
|
|
1406 @item eieio-speedbar
|
|
1407 @table @code
|
|
1408 @item eieio-speedbar-directory-button
|
|
1409 @table @code
|
|
1410 @item @w{@xref{ede-project-placeholder}.}
|
|
1411 @table @code
|
|
1412 @item @w{@xref{ede-project}.}
|
|
1413 @table @code
|
|
1414 @item ede-simple-base-project
|
|
1415 No children
|
|
1416 @end table
|
|
1417 @end table
|
|
1418 @end table
|
|
1419 @end table
|
|
1420 @end table
|
|
1421 @end table
|
|
1422
|
|
1423 EDE Simple project base class.
|
|
1424 This one project could control a tree of subdirectories.
|
|
1425
|
|
1426 @table @asis
|
|
1427 @end table
|
|
1428
|
|
1429 @node ede-proj-project
|
|
1430 @subsection ede-proj-project
|
|
1431 @pjindex ede-proj-project
|
|
1432
|
|
1433 @table @asis
|
|
1434 @item Inheritance Tree:
|
|
1435 @table @code
|
|
1436 @item eieio-speedbar
|
|
1437 @table @code
|
|
1438 @item eieio-speedbar-directory-button
|
|
1439 @table @code
|
|
1440 @item @w{@xref{ede-project-placeholder}.}
|
|
1441 @table @code
|
|
1442 @item @w{@xref{ede-project}.}
|
|
1443 @table @code
|
|
1444 @item ede-proj-project
|
|
1445 No children
|
|
1446 @end table
|
|
1447 @end table
|
|
1448 @end table
|
|
1449 @end table
|
|
1450 @end table
|
|
1451 @end table
|
|
1452
|
|
1453 @table @asis
|
|
1454 @item Slots:
|
|
1455
|
|
1456 @table @code
|
|
1457 @item :makefile-type
|
|
1458 Type: @code{symbol} @*
|
|
1459 Default Value: @code{Makefile}
|
|
1460
|
|
1461 The type of Makefile to generate.
|
|
1462 Can be one of @code{'Makefile}, 'Makefile.in, or 'Makefile.am.
|
|
1463 If this value is NOT @code{'Makefile}, then that overrides the @code{:makefile} slot
|
|
1464 in targets.
|
|
1465 @refill
|
|
1466
|
|
1467 @item :variables
|
|
1468 Type: @code{list} @*
|
|
1469 Default Value: @code{nil}
|
|
1470
|
|
1471 Variables to set in this Makefile.
|
|
1472 @refill
|
|
1473
|
|
1474 @item :configuration-variables
|
|
1475 Type: @code{list} @*
|
|
1476 Default Value: @code{("debug" (("DEBUG" . "1")))}
|
|
1477
|
|
1478 Makefile variables to use in different configurations.
|
|
1479 These variables are used in the makefile when a configuration becomes active.
|
|
1480 @refill
|
|
1481
|
|
1482 @item :inference-rules @*
|
|
1483 Default Value: @code{nil}
|
|
1484
|
|
1485 Inference rules to add to the makefile.
|
|
1486 @refill
|
|
1487
|
|
1488 @item :include-file @*
|
|
1489 Default Value: @code{nil}
|
|
1490
|
|
1491 Additional files to include.
|
|
1492 These files can contain additional rules, variables, and customizations.
|
|
1493 @refill
|
|
1494
|
|
1495 @item :automatic-dependencies
|
|
1496 Type: @code{boolean} @*
|
|
1497 Default Value: @code{t}
|
|
1498
|
|
1499 Non-@code{nil} to do implement automatic dependencies in the Makefile.
|
|
1500 @refill
|
|
1501
|
|
1502 @item :metasubproject
|
|
1503 Type: @code{boolean} @*
|
|
1504 Default Value: @code{nil}
|
|
1505
|
|
1506 Non-@code{nil} if this is a metasubproject.
|
|
1507 Usually, a subproject is determined by a parent project. If multiple top level
|
|
1508 projects are grouped into a large project not maintained by EDE, then you need
|
|
1509 to set this to non-nil. The only effect is that the @code{dist} rule will then avoid
|
|
1510 making a tar file.
|
|
1511 @refill
|
|
1512
|
|
1513 @end table
|
|
1514
|
|
1515 @end table
|
|
1516 @subsubsection Specialized Methods
|
|
1517
|
|
1518 @deffn Method ede-proj-makefile-create :AFTER this mfilename
|
|
1519 Create a Makefile for all Makefile targets in @var{THIS}.
|
|
1520 @var{MFILENAME} is the makefile to generate.
|
|
1521 @end deffn
|
|
1522
|
|
1523 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
1524 Insert rules needed by @var{THIS} target.
|
|
1525 @end deffn
|
|
1526
|
|
1527 @deffn Method ede-proj-makefile-tags :AFTER this targets
|
|
1528 Insert into the current location rules to make recursive TAGS files.
|
|
1529 Argument @var{THIS} is the project to create tags for.
|
|
1530 Argument @var{TARGETS} are the targets we should depend on for TAGS.
|
|
1531 @end deffn
|
|
1532
|
|
1533 @deffn Method ede-proj-makefile-insert-variables :AFTER this
|
|
1534 Insert variables needed by target @var{THIS}.
|
|
1535 @end deffn
|
|
1536
|
|
1537 @deffn Method project-make-dist :AFTER this
|
|
1538 Build a distribution for the project based on @var{THIS} target.
|
|
1539 @end deffn
|
|
1540
|
|
1541 @deffn Method ede-proj-makefile-insert-dist-rules :AFTER this
|
|
1542 Insert distribution rules for @var{THIS} in a Makefile, such as CLEAN and DIST.
|
|
1543 @end deffn
|
|
1544
|
|
1545 @deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
|
|
1546 Insert any symbols that the DIST rule should depend on.
|
|
1547 Argument @var{THIS} is the project that should insert stuff.
|
|
1548 @end deffn
|
|
1549
|
|
1550 @deffn Method ede-proj-makefile-insert-subproj-rules :AFTER this
|
|
1551 Insert a rule for the project @var{THIS} which should be a subproject.
|
|
1552 @end deffn
|
|
1553
|
|
1554 @deffn Method ede-proj-makefile-create-maybe :AFTER this mfilename
|
|
1555 Create a Makefile for all Makefile targets in @var{THIS} if needed.
|
|
1556 @var{MFILENAME} is the makefile to generate.
|
|
1557 @end deffn
|
|
1558
|
|
1559 @deffn Method ede-proj-configure-test-required-file :AFTER this file
|
|
1560 For project @var{THIS}, test that the file @var{FILE} exists, or create it.
|
|
1561 @end deffn
|
|
1562
|
|
1563 @deffn Method ede-proj-setup-buildenvironment :AFTER this &optional force
|
|
1564 Setup the build environment for project @var{THIS}.
|
|
1565 Handles the Makefile, or a Makefile.am configure.in combination.
|
|
1566 Optional argument @var{FORCE} will force items to be regenerated.
|
|
1567 @end deffn
|
|
1568
|
|
1569 @deffn Method ede-proj-makefile-garbage-patterns :AFTER this
|
|
1570 Return a list of patterns that are considered garbage to @var{THIS}.
|
|
1571 These are removed with make clean.
|
|
1572 @end deffn
|
|
1573
|
|
1574 @deffn Method ede-proj-configure-synchronize :AFTER this
|
|
1575 Synchronize what we know about project @var{THIS} into configure.in.
|
|
1576 @end deffn
|
|
1577
|
|
1578 @deffn Method ede-proj-makefile-insert-variables-new :AFTER this
|
|
1579 Insert variables needed by target @var{THIS}.
|
|
1580
|
|
1581 NOTE: Not yet in use! This is part of an SRecode conversion of
|
|
1582 EDE that is in progress.
|
|
1583 @end deffn
|
|
1584
|
|
1585 @deffn Method ede-proj-makefile-configuration-variables :AFTER this configuration
|
|
1586 Return a list of configuration variables from @var{THIS}.
|
|
1587 Use @var{CONFIGURATION} as the current configuration to query.
|
|
1588 @end deffn
|
|
1589
|
|
1590 @deffn Method eieio-done-customizing :AFTER proj
|
|
1591 Call this when a user finishes customizing this object.
|
|
1592 Argument @var{PROJ} is the project to save.
|
|
1593 @end deffn
|
|
1594
|
|
1595 @deffn Method ede-proj-configure-recreate :AFTER this
|
|
1596 Delete project @var{THIS}es configure script and start over.
|
|
1597 @end deffn
|
|
1598
|
|
1599 @deffn Method ede-proj-makefile-insert-user-rules :AFTER this
|
|
1600 Insert user specified rules needed by @var{THIS} target.
|
|
1601 This is different from @dfn{ede-proj-makefile-insert-rules} in that this
|
|
1602 function won't create the building rules which are auto created with
|
|
1603 automake.
|
|
1604 @end deffn
|
|
1605
|
|
1606 @deffn Method ede-proj-dist-makefile :AFTER this
|
|
1607 Return the name of the Makefile with the DIST target in it for @var{THIS}.
|
|
1608 @end deffn
|
|
1609
|
|
1610 @deffn Method ede-proj-configure-file :AFTER this
|
|
1611 The configure.in script used by project @var{THIS}.
|
|
1612 @end deffn
|
|
1613
|
|
1614 @deffn Method ede-commit-project :AFTER proj
|
|
1615 Commit any change to @var{PROJ} to its file.
|
|
1616 @end deffn
|
|
1617
|
|
1618 @deffn Method project-dist-files :AFTER this
|
|
1619 Return a list of files that constitutes a distribution of @var{THIS} project.
|
|
1620 @end deffn
|
|
1621
|
|
1622 @deffn Method ede-commit-local-variables :AFTER proj
|
|
1623 Commit change to local variables in @var{PROJ}.
|
|
1624 @end deffn
|
|
1625
|
|
1626 @node project-am-makefile
|
|
1627 @subsection project-am-makefile
|
|
1628 @pjindex project-am-makefile
|
|
1629
|
|
1630 @table @asis
|
|
1631 @item Inheritance Tree:
|
|
1632 @table @code
|
|
1633 @item eieio-speedbar
|
|
1634 @table @code
|
|
1635 @item eieio-speedbar-directory-button
|
|
1636 @table @code
|
|
1637 @item @w{@xref{ede-project-placeholder}.}
|
|
1638 @table @code
|
|
1639 @item @w{@xref{ede-project}.}
|
|
1640 @table @code
|
|
1641 @item project-am-makefile
|
|
1642 No children
|
|
1643 @end table
|
|
1644 @end table
|
|
1645 @end table
|
|
1646 @end table
|
|
1647 @end table
|
|
1648 @end table
|
|
1649
|
|
1650 @subsubsection Specialized Methods
|
|
1651
|
|
1652 @deffn Method project-am-subtree :AFTER ampf subdir
|
|
1653 Return the sub project in @var{AMPF} specified by @var{SUBDIR}.
|
|
1654 @end deffn
|
|
1655
|
|
1656 @deffn Method project-targets-for-file :AFTER proj
|
|
1657 Return a list of targets the project @var{PROJ}.
|
|
1658 @end deffn
|
|
1659
|
|
1660 @deffn Method project-new-target :AFTER proj &optional name type
|
|
1661 Create a new target named @var{NAME}.
|
|
1662 Argument @var{TYPE} is the type of target to insert. This is a string
|
|
1663 matching something in @code{project-am-type-alist} or type class symbol.
|
|
1664 Despite the fact that this is a method, it depends on the current
|
|
1665 buffer being in order to provide a smart default target type.
|
|
1666 @end deffn
|
|
1667
|
|
1668 @node ede-step-project
|
|
1669 @subsection ede-step-project
|
|
1670 @pjindex ede-step-project
|
|
1671
|
|
1672 @table @asis
|
|
1673 @item Inheritance Tree:
|
|
1674 @table @code
|
|
1675 @item eieio-speedbar
|
|
1676 @table @code
|
|
1677 @item eieio-speedbar-directory-button
|
|
1678 @table @code
|
|
1679 @item @w{@xref{ede-project-placeholder}.}
|
|
1680 @table @code
|
|
1681 @item @w{@xref{ede-project}.}
|
|
1682 @table @code
|
|
1683 @item ede-step-project
|
|
1684 No children
|
|
1685 @end table
|
|
1686 @end table
|
|
1687 @end table
|
|
1688 @end table
|
|
1689 @end table
|
|
1690 @end table
|
|
1691
|
|
1692 @table @asis
|
|
1693 @item Slots:
|
|
1694
|
|
1695 @table @code
|
|
1696 @item :init-variables
|
|
1697 Type: @code{list} @*
|
|
1698 Default Value: @code{nil}
|
|
1699
|
|
1700 Variables to set in this Makefile, at top of file.
|
|
1701 @refill
|
|
1702
|
|
1703 @item :additional-variables
|
|
1704 Type: @code{(or null list)} @*
|
|
1705 Default Value: @code{nil}
|
|
1706
|
|
1707 Arbitrary variables needed from this project.
|
|
1708 It is safe to leave this blank.
|
|
1709 @refill
|
|
1710
|
|
1711 @item :additional-rules
|
|
1712 Type: @code{(or null list)} @*
|
|
1713 Default Value: @code{nil}
|
|
1714
|
|
1715 Arbitrary rules and dependencies needed to make this target.
|
|
1716 It is safe to leave this blank.
|
|
1717 @refill
|
|
1718
|
|
1719 @item :installation-domain
|
|
1720 Type: @code{symbol} @*
|
|
1721 Default Value: @code{user}
|
|
1722
|
|
1723 Installation domain specification.
|
|
1724 The variable GNUSTEP_INSTALLATION_DOMAIN is set at this value.
|
|
1725 @refill
|
|
1726
|
|
1727 @item :preamble
|
|
1728 Type: @code{(or null list)} @*
|
|
1729 Default Value: @code{(quote ("GNUmakefile.preamble"))}
|
|
1730
|
|
1731 The auxilliary makefile for additional variables.
|
|
1732 Included just before the specific target files.
|
|
1733 @refill
|
|
1734
|
|
1735 @item :postamble
|
|
1736 Type: @code{(or null list)} @*
|
|
1737 Default Value: @code{(quote ("GNUmakefile.postamble"))}
|
|
1738
|
|
1739 The auxilliary makefile for additional rules.
|
|
1740 Included just after the specific target files.
|
|
1741 @refill
|
|
1742
|
|
1743 @item :metasubproject
|
|
1744 Type: @code{boolean} @*
|
|
1745 Default Value: @code{nil}
|
|
1746
|
|
1747 Non-@code{nil} if this is a metasubproject.
|
|
1748 Usually, a subproject is determined by a parent project. If multiple top level
|
|
1749 projects are grouped into a large project not maintained by EDE, then you need
|
|
1750 to set this to non-nil. The only effect is that the @code{dist} rule will then avoid
|
|
1751 making a tar file.
|
|
1752 @refill
|
|
1753
|
|
1754 @end table
|
|
1755
|
|
1756 @end table
|
|
1757 @subsubsection Specialized Methods
|
|
1758
|
|
1759 @deffn Method ede-proj-makefile-create :AFTER this mfilename
|
|
1760 Create a GNUmakefile for all Makefile targets in @var{THIS}.
|
|
1761 @var{MFILENAME} is the makefile to generate.
|
|
1762 @end deffn
|
|
1763
|
|
1764 @deffn Method project-make-dist :AFTER this
|
|
1765 Build a distribution for the project based on @var{THIS} target.
|
|
1766 @end deffn
|
|
1767
|
|
1768 @deffn Method ede-proj-makefile-create-maybe :AFTER this mfilename
|
|
1769 Create a Makefile for all Makefile targets in @var{THIS} if needed.
|
|
1770 @var{MFILENAME} is the makefile to generate.
|
|
1771 @end deffn
|
|
1772
|
|
1773 @deffn Method ede-proj-setup-buildenvironment :AFTER this &optional force
|
|
1774 Setup the build environment for project @var{THIS}.
|
|
1775 Handles the Makefile, or a Makefile.am configure.in combination.
|
|
1776 Optional argument @var{FORCE} will force items to be regenerated.
|
|
1777 @end deffn
|
|
1778
|
|
1779 @deffn Method eieio-done-customizing :AFTER proj
|
|
1780 Call this when a user finishes customizing this object.
|
|
1781 Argument @var{PROJ} is the project to save.
|
|
1782 @end deffn
|
|
1783
|
|
1784 @deffn Method ede-proj-dist-makefile :AFTER this
|
|
1785 Return the name of the Makefile with the DIST target in it for @var{THIS}.
|
|
1786 @end deffn
|
|
1787
|
|
1788 @deffn Method ede-commit-project :AFTER proj
|
|
1789 Commit any change to @var{PROJ} to its file.
|
|
1790 @end deffn
|
|
1791
|
|
1792 @deffn Method project-dist-files :AFTER this
|
|
1793 Return a list of files that constitutes a distribution of @var{THIS} project.
|
|
1794 @end deffn
|
|
1795
|
|
1796 @deffn Method ede-commit-local-variables :AFTER proj
|
|
1797 Commit change to local variables in @var{PROJ}.
|
|
1798 @end deffn
|
|
1799
|
|
1800 @node Targets
|
|
1801 @section Targets
|
|
1802
|
|
1803 @menu
|
|
1804 * ede-target ::
|
|
1805 * ede-proj-target ::
|
|
1806 * ede-proj-target-makefile ::
|
|
1807 * semantic-ede-proj-target-grammar ::
|
|
1808 * ede-proj-target-makefile-objectcode ::
|
|
1809 * ede-proj-target-makefile-archive ::
|
|
1810 * ede-proj-target-makefile-program ::
|
|
1811 * ede-proj-target-makefile-shared-object ::
|
|
1812 * ede-proj-target-elisp ::
|
|
1813 * ede-proj-target-elisp-autoloads ::
|
|
1814 * ede-proj-target-makefile-miscelaneous ::
|
|
1815 * ede-proj-target-makefile-info ::
|
|
1816 * ede-proj-target-scheme ::
|
|
1817 * project-am-target ::
|
|
1818 * project-am-objectcode ::
|
|
1819 * project-am-program ::
|
|
1820 * project-am-header-noinst ::
|
|
1821 * project-am-header-inst ::
|
|
1822 * project-am-lisp ::
|
|
1823 * project-am-texinfo ::
|
|
1824 * project-am-man ::
|
|
1825 @end menu
|
|
1826
|
|
1827
|
|
1828 @node ede-target
|
|
1829 @subsection ede-target
|
|
1830 @tgindex ede-target
|
|
1831
|
|
1832 @table @asis
|
|
1833 @item Inheritance Tree:
|
|
1834 @table @code
|
|
1835 @item eieio-speedbar
|
|
1836 @table @code
|
|
1837 @item eieio-speedbar-directory-button
|
|
1838 @table @code
|
|
1839 @item ede-target
|
|
1840 @table @asis
|
|
1841 @item Children:
|
|
1842 @w{ede-cpp-root-target,} @w{ede-emacs-target-c,} @w{ede-emacs-target-el,} @w{ede-emacs-target-misc,} @w{ede-linux-target-c,} @w{ede-linux-target-misc,} @w{ede-maven-target-java,} @w{ede-maven-target-c,} @w{ede-maven-target-misc,} @w{ede-simple-target,} @w{@xref{ede-proj-target},} @w{@xref{project-am-target}.}
|
|
1843 @end table
|
|
1844 @end table
|
|
1845 @end table
|
|
1846 @end table
|
|
1847 @end table
|
|
1848
|
|
1849 @table @asis
|
|
1850 @item Slots:
|
|
1851
|
|
1852 @table @code
|
|
1853 @item :name
|
|
1854 Type: @code{string}
|
|
1855
|
|
1856 Name of this target.
|
|
1857 @refill
|
|
1858
|
|
1859 @item :path
|
|
1860 Type: @code{string}
|
|
1861
|
|
1862 The path to the sources of this target.
|
|
1863 Relative to the path of the project it belongs to.
|
|
1864 @refill
|
|
1865
|
|
1866 @item :source
|
|
1867 Type: @code{list} @*
|
|
1868 Default Value: @code{nil}
|
|
1869
|
|
1870 Source files in this target.
|
|
1871 @refill
|
|
1872
|
|
1873 @item :versionsource
|
|
1874 Type: @code{list} @*
|
|
1875 Default Value: @code{nil}
|
|
1876
|
|
1877 Source files with a version string in them.
|
|
1878 These files are checked for a version string whenever the EDE version
|
|
1879 of the master project is changed. When strings are found, the version
|
|
1880 previously there is updated.
|
|
1881 @refill
|
|
1882
|
|
1883 @end table
|
|
1884
|
|
1885 @end table
|
|
1886 @subsubsection Specialized Methods
|
|
1887
|
|
1888 @deffn Method ede-preprocessor-map :AFTER this
|
|
1889 Get the pre-processor map for project @var{THIS}.
|
|
1890 @end deffn
|
|
1891
|
|
1892 @deffn Method eieio-speedbar-description :AFTER obj
|
|
1893 Provide a speedbar description for @var{OBJ}.
|
|
1894 @end deffn
|
|
1895
|
|
1896 @deffn Method project-compile-target :AFTER obj &optional command
|
|
1897 Compile the current target @var{OBJ}.
|
|
1898 Argument @var{COMMAND} is the command to use for compiling the target.
|
|
1899 @end deffn
|
|
1900
|
|
1901 @deffn Method project-debug-target :AFTER obj
|
|
1902 Run the current project target @var{OBJ} in a debugger.
|
|
1903 @end deffn
|
|
1904
|
|
1905 @deffn Method ede-convert-path :AFTER this path
|
|
1906 Convert path in a standard way for a given project.
|
|
1907 Default to making it project relative.
|
|
1908 Argument @var{THIS} is the project to convert @var{PATH} to.
|
|
1909 @end deffn
|
|
1910
|
|
1911 @deffn Method ede-name :AFTER this
|
|
1912 Return the name of @var{THIS} targt.
|
|
1913 @end deffn
|
|
1914
|
|
1915 @deffn Method ede-target-buffer-in-sourcelist :AFTER this buffer source
|
|
1916 Return non-@code{nil} if object @var{THIS} is in @var{BUFFER} to a @var{SOURCE} list.
|
|
1917 Handles complex path issues.
|
|
1918 @end deffn
|
|
1919
|
|
1920 @deffn Method eieio-speedbar-derive-line-path :AFTER obj &optional depth
|
|
1921 Return the path to @var{OBJ}.
|
|
1922 Optional @var{DEPTH} is the depth we start at.
|
|
1923 @end deffn
|
|
1924
|
|
1925 @deffn Method ede-buffer-header-file :AFTER this buffer
|
|
1926 There are no default header files in EDE.
|
|
1927 Do a quick check to see if there is a Header tag in this buffer.
|
|
1928 @end deffn
|
|
1929
|
|
1930 @deffn Method project-remove-file :AFTER ot fnnd
|
|
1931 Remove the current buffer from project target @var{OT}.
|
|
1932 Argument @var{FNND} is an argument.
|
|
1933 @end deffn
|
|
1934
|
|
1935 @deffn Method ede-buffer-documentation-files :AFTER this buffer
|
|
1936 Check for some documentation files for @var{THIS}.
|
|
1937 Also do a quick check to see if there is a Documentation tag in this @var{BUFFER}.
|
|
1938 @end deffn
|
|
1939
|
|
1940 @deffn Method ede-map-target-buffers :AFTER this proc
|
|
1941 For @var{THIS}, execute @var{PROC} on all buffers belonging to @var{THIS}.
|
|
1942 @end deffn
|
|
1943
|
|
1944 @deffn Method eieio-speedbar-child-description :AFTER obj
|
|
1945 Provide a speedbar description for a plain-child of @var{OBJ}.
|
|
1946 A plain child is a child element which is not an EIEIO object.
|
|
1947 @end deffn
|
|
1948
|
|
1949 @deffn Method ede-object-keybindings :BEFORE this
|
|
1950 Retrieves the slot @code{keybindings} from an object of class @code{ede-target}
|
|
1951 @end deffn
|
|
1952
|
|
1953 @deffn Method ede-description :AFTER this
|
|
1954 Return a description suitable for the minibuffer about @var{THIS}.
|
|
1955 @end deffn
|
|
1956
|
|
1957 @deffn Method eieio-speedbar-object-children :AFTER this
|
|
1958 Return the list of speedbar display children for @var{THIS}.
|
|
1959 @end deffn
|
|
1960
|
|
1961 @deffn Method ede-system-include-path :AFTER this
|
|
1962 Get the system include path used by project @var{THIS}.
|
|
1963 @end deffn
|
|
1964
|
|
1965 @deffn Method ede-object-sourcecode :BEFORE this
|
|
1966 Retrieves the slot @code{sourcetype} from an object of class @code{ede-target}
|
|
1967 @end deffn
|
|
1968
|
|
1969 @deffn Method ede-expand-filename :AFTER this filename &optional force
|
|
1970 Return a fully qualified file name based on target @var{THIS}.
|
|
1971 @var{FILENAME} should a a filename which occurs in a directory in which @var{THIS} works.
|
|
1972 Optional argument @var{FORCE} forces the default filename to be provided even if it
|
|
1973 doesn't exist.
|
|
1974 @end deffn
|
|
1975
|
|
1976 @deffn Method ede-menu-items-build :AFTER obj &optional current
|
|
1977 Return a list of menu items for building target @var{OBJ}.
|
|
1978 If optional argument @var{CURRENT} is non-@code{nil}, return sub-menu code.
|
|
1979 @end deffn
|
|
1980
|
|
1981 @deffn Method ede-want-file-p :AFTER this file
|
|
1982 Return non-@code{nil} if @var{THIS} target wants @var{FILE}.
|
|
1983 @end deffn
|
|
1984
|
|
1985 @deffn Method ede-update-version-in-source :AFTER this version
|
|
1986 In sources for @var{THIS}, change version numbers to @var{VERSION}.
|
|
1987 @end deffn
|
|
1988
|
|
1989 @deffn Method project-delete-target :AFTER ot
|
|
1990 Delete the current target @var{OT} from it's parent project.
|
|
1991 @end deffn
|
|
1992
|
|
1993 @deffn Method ede-target-sourcecode :AFTER this
|
|
1994 Return the sourcecode objects which @var{THIS} permits.
|
|
1995 @end deffn
|
|
1996
|
|
1997 @deffn Method eieio-speedbar-child-make-tag-lines :AFTER this depth
|
|
1998 Create a speedbar tag line for a child of @var{THIS}.
|
|
1999 It has depth @var{DEPTH}.
|
|
2000 @end deffn
|
|
2001
|
|
2002 @deffn Method eieio-speedbar-object-buttonname :AFTER object
|
|
2003 Return a string to use as a speedbar button for @var{OBJECT}.
|
|
2004 @end deffn
|
|
2005
|
|
2006 @deffn Method eieio-done-customizing :AFTER target
|
|
2007 Call this when a user finishes customizing @var{TARGET}.
|
|
2008 @end deffn
|
|
2009
|
|
2010 @deffn Method project-edit-file-target :AFTER ot
|
|
2011 Edit the target @var{OT} associated w/ this file.
|
|
2012 @end deffn
|
|
2013
|
|
2014 @deffn Method ede-documentation :AFTER this
|
|
2015 Return a list of files that provides documentation.
|
|
2016 Documentation is not for object @var{THIS}, but is provided by @var{THIS} for other
|
|
2017 files in the project.
|
|
2018 @end deffn
|
|
2019
|
|
2020 @deffn Method ede-want-file-source-p :AFTER this file
|
|
2021 Return non-@code{nil} if @var{THIS} target wants @var{FILE}.
|
|
2022 @end deffn
|
|
2023
|
|
2024 @deffn Method ede-want-file-auxiliary-p :AFTER this file
|
|
2025 Return non-@code{nil} if @var{THIS} target wants @var{FILE}.
|
|
2026 @end deffn
|
|
2027
|
|
2028 @deffn Method project-add-file :AFTER ot file
|
|
2029 Add the current buffer into project project target @var{OT}.
|
|
2030 Argument @var{FILE} is the file to add.
|
|
2031 @end deffn
|
|
2032
|
|
2033 @deffn Method ede-target-name :AFTER this
|
|
2034 Return the name of @var{THIS} target, suitable for make or debug style commands.
|
|
2035 @end deffn
|
|
2036
|
|
2037 @deffn Method ede-object-menu :BEFORE this
|
|
2038 Retrieves the slot @code{menu} from an object of class @code{ede-target}
|
|
2039 @end deffn
|
|
2040
|
|
2041 @node ede-proj-target
|
|
2042 @subsection ede-proj-target
|
|
2043 @tgindex ede-proj-target
|
|
2044
|
|
2045 @table @asis
|
|
2046 @item Inheritance Tree:
|
|
2047 @table @code
|
|
2048 @item eieio-speedbar
|
|
2049 @table @code
|
|
2050 @item eieio-speedbar-directory-button
|
|
2051 @table @code
|
|
2052 @item @w{@xref{ede-target}.}
|
|
2053 @table @code
|
|
2054 @item ede-proj-target
|
|
2055 @table @asis
|
|
2056 @item Children:
|
|
2057 @w{@xref{ede-proj-target-makefile},} @w{ede-proj-target-aux,} @w{@xref{ede-proj-target-scheme}.}
|
|
2058 @end table
|
|
2059 @end table
|
|
2060 @end table
|
|
2061 @end table
|
|
2062 @end table
|
|
2063 @end table
|
|
2064
|
|
2065 @table @asis
|
|
2066 @item Slots:
|
|
2067
|
|
2068 @table @code
|
|
2069 @item :name
|
|
2070 Type: @code{string}
|
|
2071
|
|
2072 Name of this target.
|
|
2073 @refill
|
|
2074
|
|
2075 @item :path
|
|
2076 Type: @code{string}
|
|
2077
|
|
2078 The path to the sources of this target.
|
|
2079 Relative to the path of the project it belongs to.
|
|
2080 @refill
|
|
2081
|
|
2082 @item :auxsource
|
|
2083 Type: @code{list} @*
|
|
2084 Default Value: @code{nil}
|
|
2085
|
|
2086 Auxilliary source files included in this target.
|
|
2087 Each of these is considered equivalent to a source file, but it is not
|
|
2088 distributed, and each should have a corresponding rule to build it.
|
|
2089 @refill
|
|
2090
|
|
2091 @item :compiler
|
|
2092 Type: @code{(or null symbol)} @*
|
|
2093 Default Value: @code{nil}
|
|
2094
|
|
2095 The compiler to be used to compile this object.
|
|
2096 This should be a symbol, which contains the object defining the compiler.
|
|
2097 This enables save/restore to do so by name, permitting the sharing
|
|
2098 of these compiler resources, and global customization thereof.
|
|
2099 @refill
|
|
2100
|
|
2101 @item :linker
|
|
2102 Type: @code{(or null symbol)} @*
|
|
2103 Default Value: @code{nil}
|
|
2104
|
|
2105 The linker to be used to link compiled sources for this object.
|
|
2106 This should be a symbol, which contains the object defining the linker.
|
|
2107 This enables save/restore to do so by name, permitting the sharing
|
|
2108 of these linker resources, and global customization thereof.
|
|
2109 @refill
|
|
2110
|
|
2111 @end table
|
|
2112
|
|
2113 @end table
|
|
2114 @subsubsection Specialized Methods
|
|
2115
|
|
2116 @deffn Method project-compile-target :AFTER obj &optional command
|
|
2117 Compile the current target @var{OBJ}.
|
|
2118 Argument @var{COMMAND} is the command to use for compiling the target.
|
|
2119 @end deffn
|
|
2120
|
|
2121 @deffn Method project-debug-target :AFTER obj
|
|
2122 Run the current project target @var{OBJ} in a debugger.
|
|
2123 @end deffn
|
|
2124
|
|
2125 @deffn Method ede-proj-configure-add-missing :AFTER this
|
|
2126 Query if any files needed by @var{THIS} provided by automake are missing.
|
|
2127 Results in --add-missing being passed to automake.
|
|
2128 @end deffn
|
|
2129
|
|
2130 @deffn Method ede-proj-flush-autoconf :AFTER this
|
|
2131 Flush the configure file (current buffer) to accomodate @var{THIS}.
|
|
2132 By flushing, remove any cruft that may be in the file. Subsequent
|
|
2133 calls to @dfn{ede-proj-tweak-autoconf} can restore items removed by flush.
|
|
2134 @end deffn
|
|
2135
|
|
2136 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
2137 Insert rules needed by @var{THIS} target.
|
|
2138 @end deffn
|
|
2139
|
|
2140 @deffn Method project-remove-file :AFTER target file
|
|
2141 For @var{TARGET}, remove @var{FILE}.
|
|
2142 @var{FILE} must be massaged by @dfn{ede-convert-path}.
|
|
2143 @end deffn
|
|
2144
|
|
2145 @deffn Method ede-proj-configure-create-missing :AFTER this
|
|
2146 Add any missing files for @var{THIS} by creating them.
|
|
2147 @end deffn
|
|
2148
|
|
2149 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2150 Return the variable name for @var{THIS}'s sources.
|
|
2151 @end deffn
|
|
2152
|
|
2153 @deffn Method ede-proj-makefile-insert-variables :AFTER this &optional moresource
|
|
2154 Insert variables needed by target @var{THIS}.
|
|
2155 Optional argument @var{MORESOURCE} is a list of additional sources to add to the
|
|
2156 sources variable.
|
|
2157 @end deffn
|
|
2158
|
|
2159 @deffn Method ede-proj-makefile-insert-automake-post-variables :AFTER this
|
|
2160 Insert variables needed by target @var{THIS} in Makefile.am after SOURCES.
|
|
2161 @end deffn
|
|
2162
|
|
2163 @deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
|
|
2164 Insert any symbols that the DIST rule should depend on.
|
|
2165 Argument @var{THIS} is the target that should insert stuff.
|
|
2166 @end deffn
|
|
2167
|
|
2168 @deffn Method ede-proj-linkers :AFTER obj
|
|
2169 List of linkers being used by @var{OBJ}.
|
|
2170 If the @code{linker} slot is empty, concoct one on a first match found
|
|
2171 basis for any given type from the @code{availablelinkers} slot.
|
|
2172 Otherwise, return the @code{linker} slot.
|
|
2173 Converts all symbols into the objects to be used.
|
|
2174 @end deffn
|
|
2175
|
|
2176 @deffn Method ede-proj-makefile-garbage-patterns :AFTER this
|
|
2177 Return a list of patterns that are considered garbage to @var{THIS}.
|
|
2178 These are removed with make clean.
|
|
2179 @end deffn
|
|
2180
|
|
2181 @deffn Method ede-proj-tweak-autoconf :AFTER this
|
|
2182 Tweak the configure file (current buffer) to accomodate @var{THIS}.
|
|
2183 @end deffn
|
|
2184
|
|
2185 @deffn Method ede-proj-compilers :AFTER obj
|
|
2186 List of compilers being used by @var{OBJ}.
|
|
2187 If the @code{compiler} slot is empty, concoct one on a first match found
|
|
2188 basis for any given type from the @code{availablecompilers} slot.
|
|
2189 Otherwise, return the @code{compiler} slot.
|
|
2190 Converts all symbols into the objects to be used.
|
|
2191 @end deffn
|
|
2192
|
|
2193 @deffn Method project-delete-target :AFTER this
|
|
2194 Delete the current target @var{THIS} from it's parent project.
|
|
2195 @end deffn
|
|
2196
|
|
2197 @deffn Method ede-proj-makefile-target-name :AFTER this
|
|
2198 Return the name of the main target for @var{THIS} target.
|
|
2199 @end deffn
|
|
2200
|
|
2201 @deffn Method eieio-done-customizing :AFTER target
|
|
2202 Call this when a user finishes customizing this object.
|
|
2203 Argument @var{TARGET} is the project we are completing customization on.
|
|
2204 @end deffn
|
|
2205
|
|
2206 @deffn Method ede-proj-makefile-insert-user-rules :AFTER this
|
|
2207 Insert user specified rules needed by @var{THIS} target.
|
|
2208 @end deffn
|
|
2209
|
|
2210 @deffn Method project-add-file :AFTER this file
|
|
2211 Add to target @var{THIS} the current buffer represented as @var{FILE}.
|
|
2212 @end deffn
|
|
2213
|
|
2214 @deffn Method ede-proj-makefile-insert-automake-pre-variables :AFTER this
|
|
2215 Insert variables needed by target @var{THIS} in Makefile.am before SOURCES.
|
|
2216 @end deffn
|
|
2217
|
|
2218 @deffn Method ede-proj-makefile-insert-dist-filepatterns :AFTER this
|
|
2219 Insert any symbols that the DIST rule should depend on.
|
|
2220 Argument @var{THIS} is the target that should insert stuff.
|
|
2221 @end deffn
|
|
2222
|
|
2223 @deffn Method ede-proj-makefile-dependency-files :AFTER this
|
|
2224 Return a list of source files to convert to dependencies.
|
|
2225 Argument @var{THIS} is the target to get sources from.
|
|
2226 @end deffn
|
|
2227
|
|
2228 @deffn Method ede-proj-makefile-insert-source-variables :AFTER this &optional moresource
|
|
2229 Insert the source variables needed by @var{THIS}.
|
|
2230 Optional argument @var{MORESOURCE} is a list of additional sources to add to the
|
|
2231 sources variable.
|
|
2232 @end deffn
|
|
2233
|
|
2234
|
|
2235 @node ede-proj-target-makefile
|
|
2236 @subsection ede-proj-target-makefile
|
|
2237 @tgindex ede-proj-target-makefile
|
|
2238
|
|
2239 @table @asis
|
|
2240 @item Inheritance Tree:
|
|
2241 @table @code
|
|
2242 @item eieio-speedbar
|
|
2243 @table @code
|
|
2244 @item eieio-speedbar-directory-button
|
|
2245 @table @code
|
|
2246 @item @w{@xref{ede-target}.}
|
|
2247 @table @code
|
|
2248 @item @w{@xref{ede-proj-target}.}
|
|
2249 @table @code
|
|
2250 @item ede-proj-target-makefile
|
|
2251 @table @asis
|
|
2252 @item Children:
|
|
2253 @w{@xref{semantic-ede-proj-target-grammar},} @w{@xref{ede-proj-target-makefile-objectcode},} @w{@xref{ede-proj-target-elisp},} @w{@xref{ede-proj-target-makefile-miscelaneous},} @w{@xref{ede-proj-target-makefile-info}.}
|
|
2254 @end table
|
|
2255 @end table
|
|
2256 @end table
|
|
2257 @end table
|
|
2258 @end table
|
|
2259 @end table
|
|
2260 @end table
|
|
2261
|
|
2262 @table @asis
|
|
2263 @item Slots:
|
|
2264
|
|
2265 @table @code
|
|
2266 @item :makefile
|
|
2267 Type: @code{string} @*
|
|
2268 Default Value: @code{"Makefile"}
|
|
2269
|
|
2270 File name of generated Makefile.
|
|
2271 @refill
|
|
2272
|
|
2273 @item :partofall
|
|
2274 Type: @code{boolean} @*
|
|
2275 Default Value: @code{t}
|
|
2276
|
|
2277 Non @code{nil} means the rule created is part of the all target.
|
|
2278 Setting this to @code{nil} creates the rule to build this item, but does not
|
|
2279 include it in the ALL`all:' rule.
|
|
2280 @refill
|
|
2281
|
|
2282 @item :configuration-variables
|
|
2283 Type: @code{list} @*
|
|
2284 Default Value: @code{nil}
|
|
2285
|
|
2286 Makefile variables appended to use in different configurations.
|
|
2287 These variables are used in the makefile when a configuration becomes active.
|
|
2288 Target variables are always renamed such as foo_CFLAGS, then included into
|
|
2289 commands where the variable would usually appear.
|
|
2290 @refill
|
|
2291
|
|
2292 @item :rules
|
|
2293 Type: @code{list} @*
|
|
2294 Default Value: @code{nil}
|
|
2295
|
|
2296 Arbitrary rules and dependencies needed to make this target.
|
|
2297 It is safe to leave this blank.
|
|
2298 @refill
|
|
2299
|
|
2300 @end table
|
|
2301
|
|
2302 @end table
|
|
2303 @subsubsection Specialized Methods
|
|
2304
|
|
2305 @deffn Method ede-proj-makefile-dependencies :AFTER this
|
|
2306 Return a string representing the dependencies for @var{THIS}.
|
|
2307 Some compilers only use the first element in the dependencies, others
|
|
2308 have a list of intermediates (object files), and others don't care.
|
|
2309 This allows customization of how these elements appear.
|
|
2310 @end deffn
|
|
2311
|
|
2312 @deffn Method project-compile-target :AFTER obj &optional command
|
|
2313 Compile the current target program @var{OBJ}.
|
|
2314 Optional argument @var{COMMAND} is the s the alternate command to use.
|
|
2315 @end deffn
|
|
2316
|
|
2317 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
2318 Insert rules needed by @var{THIS} target.
|
|
2319 @end deffn
|
|
2320
|
|
2321 @deffn Method ede-proj-makefile-insert-variables :AFTER this &optional moresource
|
|
2322 Insert variables needed by target @var{THIS}.
|
|
2323 Optional argument @var{MORESOURCE} is a list of additional sources to add to the
|
|
2324 sources variable.
|
|
2325 @end deffn
|
|
2326
|
|
2327 @deffn Method ede-proj-makefile-insert-commands :AFTER this
|
|
2328 Insert the commands needed by target @var{THIS}.
|
|
2329 For targets, insert the commands needed by the chosen compiler.
|
|
2330 @end deffn
|
|
2331
|
|
2332 @deffn Method ede-proj-makefile-configuration-variables :AFTER this configuration
|
|
2333 Return a list of configuration variables from @var{THIS}.
|
|
2334 Use @var{CONFIGURATION} as the current configuration to query.
|
|
2335 @end deffn
|
|
2336
|
|
2337 @node semantic-ede-proj-target-grammar
|
|
2338 @subsection semantic-ede-proj-target-grammar
|
|
2339 @tgindex semantic-ede-proj-target-grammar
|
|
2340
|
|
2341 @table @asis
|
|
2342 @item Inheritance Tree:
|
|
2343 @table @code
|
|
2344 @item eieio-speedbar
|
|
2345 @table @code
|
|
2346 @item eieio-speedbar-directory-button
|
|
2347 @table @code
|
|
2348 @item @w{@xref{ede-target}.}
|
|
2349 @table @code
|
|
2350 @item @w{@xref{ede-proj-target}.}
|
|
2351 @table @code
|
|
2352 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2353 @table @code
|
|
2354 @item semantic-ede-proj-target-grammar
|
|
2355 No children
|
|
2356 @end table
|
|
2357 @end table
|
|
2358 @end table
|
|
2359 @end table
|
|
2360 @end table
|
|
2361 @end table
|
|
2362 @end table
|
|
2363
|
|
2364 @subsubsection Specialized Methods
|
|
2365
|
|
2366 @deffn Method project-compile-target :AFTER obj
|
|
2367 Compile all sources in a Lisp target @var{OBJ}.
|
|
2368 @end deffn
|
|
2369
|
|
2370 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
2371 Insert rules needed by @var{THIS} target.
|
|
2372 @end deffn
|
|
2373
|
|
2374 @deffn Method ede-buffer-mine :AFTER this buffer
|
|
2375 Return @code{t} if object @var{THIS} lays claim to the file in @var{BUFFER}.
|
|
2376 Lays claim to all -by.el, and -wy.el files.
|
|
2377 @end deffn
|
|
2378
|
|
2379 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2380 Return the variable name for @var{THIS}'s sources.
|
|
2381 @end deffn
|
|
2382
|
|
2383 @deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
|
|
2384 Insert dist dependencies, or intermediate targets.
|
|
2385 This makes sure that all grammar lisp files are created before the dist
|
|
2386 runs, so they are always up to date.
|
|
2387 Argument @var{THIS} is the target that should insert stuff.
|
|
2388 @end deffn
|
|
2389
|
|
2390
|
|
2391 @node ede-proj-target-makefile-objectcode
|
|
2392 @subsection ede-proj-target-makefile-objectcode
|
|
2393 @tgindex ede-proj-target-makefile-objectcode
|
|
2394
|
|
2395 @table @asis
|
|
2396 @item Inheritance Tree:
|
|
2397 @table @code
|
|
2398 @item eieio-speedbar
|
|
2399 @table @code
|
|
2400 @item eieio-speedbar-directory-button
|
|
2401 @table @code
|
|
2402 @item @w{@xref{ede-target}.}
|
|
2403 @table @code
|
|
2404 @item @w{@xref{ede-proj-target}.}
|
|
2405 @table @code
|
|
2406 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2407 @table @code
|
|
2408 @item ede-proj-target-makefile-objectcode
|
|
2409 @table @asis
|
|
2410 @item Children:
|
|
2411 @w{@xref{ede-proj-target-makefile-archive},} @w{@xref{ede-proj-target-makefile-program}.}
|
|
2412 @end table
|
|
2413 @end table
|
|
2414 @end table
|
|
2415 @end table
|
|
2416 @end table
|
|
2417 @end table
|
|
2418 @end table
|
|
2419 @end table
|
|
2420
|
|
2421 @table @asis
|
|
2422 @item Slots:
|
|
2423
|
|
2424 @table @code
|
|
2425 @item :configuration-variables
|
|
2426 Type: @code{list} @*
|
|
2427 Default Value: @code{("debug" ("CFLAGS" . "-g") ("LDFLAGS" . "-g"))}
|
|
2428
|
|
2429 @xref{ede-proj-target-makefile}.
|
|
2430 @end table
|
|
2431 @end table
|
|
2432 @subsubsection Specialized Methods
|
|
2433
|
|
2434 @deffn Method ede-buffer-header-file :AFTER this buffer
|
|
2435 There are no default header files.
|
|
2436 @end deffn
|
|
2437
|
|
2438 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2439 Return the variable name for @var{THIS}'s sources.
|
|
2440 @end deffn
|
|
2441
|
|
2442 @deffn Method ede-proj-makefile-insert-variables :AFTER this &optional moresource
|
|
2443 Insert variables needed by target @var{THIS}.
|
|
2444 Optional argument @var{MORESOURCE} is not used.
|
|
2445 @end deffn
|
|
2446
|
|
2447 @deffn Method ede-proj-makefile-dependency-files :AFTER this
|
|
2448 Return a list of source files to convert to dependencies.
|
|
2449 Argument @var{THIS} is the target to get sources from.
|
|
2450 @end deffn
|
|
2451
|
|
2452
|
|
2453 @node ede-proj-target-makefile-archive
|
|
2454 @subsection ede-proj-target-makefile-archive
|
|
2455 @tgindex ede-proj-target-makefile-archive
|
|
2456
|
|
2457 @table @asis
|
|
2458 @item Inheritance Tree:
|
|
2459 @table @code
|
|
2460 @item eieio-speedbar
|
|
2461 @table @code
|
|
2462 @item eieio-speedbar-directory-button
|
|
2463 @table @code
|
|
2464 @item @w{@xref{ede-target}.}
|
|
2465 @table @code
|
|
2466 @item @w{@xref{ede-proj-target}.}
|
|
2467 @table @code
|
|
2468 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2469 @table @code
|
|
2470 @item @w{@xref{ede-proj-target-makefile-objectcode}.}
|
|
2471 @table @code
|
|
2472 @item ede-proj-target-makefile-archive
|
|
2473 No children
|
|
2474 @end table
|
|
2475 @end table
|
|
2476 @end table
|
|
2477 @end table
|
|
2478 @end table
|
|
2479 @end table
|
|
2480 @end table
|
|
2481 @end table
|
|
2482
|
|
2483 @subsubsection Specialized Methods
|
|
2484
|
|
2485 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
2486 Create the make rule needed to create an archive for @var{THIS}.
|
|
2487 @end deffn
|
|
2488
|
|
2489 @deffn Method ede-proj-makefile-insert-source-variables :PRIMARY this
|
|
2490 Insert bin_PROGRAMS variables needed by target @var{THIS}.
|
|
2491 We aren't acutally inserting SOURCE details, but this is used by the
|
|
2492 Makefile.am generator, so use it to add this important bin program.
|
|
2493 @end deffn
|
|
2494
|
|
2495
|
|
2496 @node ede-proj-target-makefile-program
|
|
2497 @subsection ede-proj-target-makefile-program
|
|
2498 @tgindex ede-proj-target-makefile-program
|
|
2499
|
|
2500 @table @asis
|
|
2501 @item Inheritance Tree:
|
|
2502 @table @code
|
|
2503 @item eieio-speedbar
|
|
2504 @table @code
|
|
2505 @item eieio-speedbar-directory-button
|
|
2506 @table @code
|
|
2507 @item @w{@xref{ede-target}.}
|
|
2508 @table @code
|
|
2509 @item @w{@xref{ede-proj-target}.}
|
|
2510 @table @code
|
|
2511 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2512 @table @code
|
|
2513 @item @w{@xref{ede-proj-target-makefile-objectcode}.}
|
|
2514 @table @code
|
|
2515 @item ede-proj-target-makefile-program
|
|
2516 @table @asis
|
|
2517 @item Children:
|
|
2518 @w{@xref{ede-proj-target-makefile-shared-object}.}
|
|
2519 @end table
|
|
2520 @end table
|
|
2521 @end table
|
|
2522 @end table
|
|
2523 @end table
|
|
2524 @end table
|
|
2525 @end table
|
|
2526 @end table
|
|
2527 @end table
|
|
2528
|
|
2529 @table @asis
|
|
2530 @item Slots:
|
|
2531
|
|
2532 @table @code
|
|
2533 @item :ldlibs
|
|
2534 Type: @code{list} @*
|
|
2535 Default Value: @code{nil}
|
|
2536
|
|
2537 Libraries, such as "m" or "Xt" which this program depends on.
|
|
2538 The linker flag "-l" is automatically prepended. Do not include a "lib"
|
|
2539 prefix, or a ".so" suffix.
|
|
2540
|
|
2541 Note: Currently only used for Automake projects.
|
|
2542 @refill
|
|
2543
|
|
2544 @item :ldflags
|
|
2545 Type: @code{list} @*
|
|
2546 Default Value: @code{nil}
|
|
2547
|
|
2548 Additional flags to add when linking this target.
|
|
2549 Use ldlibs to add addition libraries. Use this to specify specific
|
|
2550 options to the linker.
|
|
2551
|
|
2552 Note: Not currently used. This bug needs to be fixed.
|
|
2553 @refill
|
|
2554
|
|
2555 @end table
|
|
2556
|
|
2557 @end table
|
|
2558 @subsubsection Specialized Methods
|
|
2559
|
|
2560 @deffn Method project-debug-target :AFTER obj
|
|
2561 Debug a program target @var{OBJ}.
|
|
2562 @end deffn
|
|
2563
|
|
2564 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
2565 Insert rules needed by @var{THIS} target.
|
|
2566 @end deffn
|
|
2567
|
|
2568 @deffn Method ede-proj-makefile-insert-automake-post-variables :AFTER this
|
|
2569 Insert bin_PROGRAMS variables needed by target @var{THIS}.
|
|
2570 @end deffn
|
|
2571
|
|
2572 @deffn Method ede-proj-makefile-insert-automake-pre-variables :AFTER this
|
|
2573 Insert bin_PROGRAMS variables needed by target @var{THIS}.
|
|
2574 @end deffn
|
|
2575
|
|
2576
|
|
2577 @node ede-proj-target-makefile-shared-object
|
|
2578 @subsection ede-proj-target-makefile-shared-object
|
|
2579 @tgindex ede-proj-target-makefile-shared-object
|
|
2580
|
|
2581 @table @asis
|
|
2582 @item Inheritance Tree:
|
|
2583 @table @code
|
|
2584 @item eieio-speedbar
|
|
2585 @table @code
|
|
2586 @item eieio-speedbar-directory-button
|
|
2587 @table @code
|
|
2588 @item @w{@xref{ede-target}.}
|
|
2589 @table @code
|
|
2590 @item @w{@xref{ede-proj-target}.}
|
|
2591 @table @code
|
|
2592 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2593 @table @code
|
|
2594 @item @w{@xref{ede-proj-target-makefile-objectcode}.}
|
|
2595 @table @code
|
|
2596 @item @w{@xref{ede-proj-target-makefile-program}.}
|
|
2597 @table @code
|
|
2598 @item ede-proj-target-makefile-shared-object
|
|
2599 No children
|
|
2600 @end table
|
|
2601 @end table
|
|
2602 @end table
|
|
2603 @end table
|
|
2604 @end table
|
|
2605 @end table
|
|
2606 @end table
|
|
2607 @end table
|
|
2608 @end table
|
|
2609
|
|
2610 @subsubsection Specialized Methods
|
|
2611
|
|
2612 @deffn Method ede-proj-configure-add-missing :AFTER this
|
|
2613 Query if any files needed by @var{THIS} provided by automake are missing.
|
|
2614 Results in --add-missing being passed to automake.
|
|
2615 @end deffn
|
|
2616
|
|
2617 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2618 Return the variable name for @var{THIS}'s sources.
|
|
2619 @end deffn
|
|
2620
|
|
2621 @deffn Method ede-proj-makefile-insert-automake-post-variables :AFTER this
|
|
2622 Insert bin_PROGRAMS variables needed by target @var{THIS}.
|
|
2623 We need to override -program which has an LDADD element.
|
|
2624 @end deffn
|
|
2625
|
|
2626 @deffn Method ede-proj-makefile-target-name :AFTER this
|
|
2627 Return the name of the main target for @var{THIS} target.
|
|
2628 @end deffn
|
|
2629
|
|
2630 @deffn Method ede-proj-makefile-insert-automake-pre-variables :AFTER this
|
|
2631 Insert bin_PROGRAMS variables needed by target @var{THIS}.
|
|
2632 We aren't acutally inserting SOURCE details, but this is used by the
|
|
2633 Makefile.am generator, so use it to add this important bin program.
|
|
2634 @end deffn
|
|
2635
|
|
2636
|
|
2637 @node ede-proj-target-elisp
|
|
2638 @subsection ede-proj-target-elisp
|
|
2639 @tgindex ede-proj-target-elisp
|
|
2640
|
|
2641 @table @asis
|
|
2642 @item Inheritance Tree:
|
|
2643 @table @code
|
|
2644 @item eieio-speedbar
|
|
2645 @table @code
|
|
2646 @item eieio-speedbar-directory-button
|
|
2647 @table @code
|
|
2648 @item @w{@xref{ede-target}.}
|
|
2649 @table @code
|
|
2650 @item @w{@xref{ede-proj-target}.}
|
|
2651 @table @code
|
|
2652 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2653 @table @code
|
|
2654 @item ede-proj-target-elisp
|
|
2655 @table @asis
|
|
2656 @item Children:
|
|
2657 @w{@xref{ede-proj-target-elisp-autoloads}.}
|
|
2658 @end table
|
|
2659 @end table
|
|
2660 @end table
|
|
2661 @end table
|
|
2662 @end table
|
|
2663 @end table
|
|
2664 @end table
|
|
2665 @end table
|
|
2666
|
|
2667 @table @asis
|
|
2668 @item Slots:
|
|
2669
|
|
2670 @table @code
|
|
2671 @item :aux-packages
|
|
2672 Type: @code{list} @*
|
|
2673 Default Value: @code{nil}
|
|
2674
|
|
2675 Additional packages needed.
|
|
2676 There should only be one toplevel package per auxiliary tool needed.
|
|
2677 These packages location is found, and added to the compile time
|
|
2678 load path.
|
|
2679 @refill
|
|
2680
|
|
2681 @end table
|
|
2682
|
|
2683 @end table
|
|
2684 @subsubsection Specialized Methods
|
|
2685
|
|
2686 @deffn Method project-compile-target :AFTER obj
|
|
2687 Compile all sources in a Lisp target @var{OBJ}.
|
|
2688 Bonus: Return a cons cell: (COMPILED . UPTODATE).
|
|
2689 @end deffn
|
|
2690
|
|
2691 @deffn Method ede-proj-flush-autoconf :AFTER this
|
|
2692 Flush the configure file (current buffer) to accomodate @var{THIS}.
|
|
2693 @end deffn
|
|
2694
|
|
2695 @deffn Method ede-buffer-mine :AFTER this buffer
|
|
2696 Return @code{t} if object @var{THIS} lays claim to the file in @var{BUFFER}.
|
|
2697 Lays claim to all .elc files that match .el files in this target.
|
|
2698 @end deffn
|
|
2699
|
|
2700 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2701 Return the variable name for @var{THIS}'s sources.
|
|
2702 @end deffn
|
|
2703
|
|
2704 @deffn Method ede-proj-tweak-autoconf :AFTER this
|
|
2705 Tweak the configure file (current buffer) to accomodate @var{THIS}.
|
|
2706 @end deffn
|
|
2707
|
|
2708 @deffn Method ede-update-version-in-source :AFTER this version
|
|
2709 In a Lisp file, updated a version string for @var{THIS} to @var{VERSION}.
|
|
2710 There are standards in Elisp files specifying how the version string
|
|
2711 is found, such as a @code{-version} variable, or the standard header.
|
|
2712 @end deffn
|
|
2713
|
|
2714 @node ede-proj-target-elisp-autoloads
|
|
2715 @subsection ede-proj-target-elisp-autoloads
|
|
2716 @tgindex ede-proj-target-elisp-autoloads
|
|
2717
|
|
2718 @table @asis
|
|
2719 @item Inheritance Tree:
|
|
2720 @table @code
|
|
2721 @item eieio-speedbar
|
|
2722 @table @code
|
|
2723 @item eieio-speedbar-directory-button
|
|
2724 @table @code
|
|
2725 @item @w{@xref{ede-target}.}
|
|
2726 @table @code
|
|
2727 @item @w{@xref{ede-proj-target}.}
|
|
2728 @table @code
|
|
2729 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2730 @table @code
|
|
2731 @item @w{@xref{ede-proj-target-elisp}.}
|
|
2732 @table @code
|
|
2733 @item ede-proj-target-elisp-autoloads
|
|
2734 No children
|
|
2735 @end table
|
|
2736 @end table
|
|
2737 @end table
|
|
2738 @end table
|
|
2739 @end table
|
|
2740 @end table
|
|
2741 @end table
|
|
2742 @end table
|
|
2743
|
|
2744 @table @asis
|
|
2745 @item Slots:
|
|
2746
|
|
2747 @table @code
|
|
2748 @item :aux-packages
|
|
2749 Type: @code{list} @*
|
|
2750 Default Value: @code{("cedet-autogen")}
|
|
2751
|
|
2752 @xref{ede-proj-target-elisp}.
|
|
2753 @item :autoload-file
|
|
2754 Type: @code{string} @*
|
|
2755 Default Value: @code{"loaddefs.el"}
|
|
2756
|
|
2757 The file that autoload definitions are placed in.
|
|
2758 There should be one load defs file for a given package. The load defs are created
|
|
2759 for all Emacs Lisp sources that exist in the directory of the created target.
|
|
2760 @refill
|
|
2761
|
|
2762 @item :autoload-dirs
|
|
2763 Type: @code{list} @*
|
|
2764 Default Value: @code{nil}
|
|
2765
|
|
2766 The directories to scan for autoload definitions.
|
|
2767 If @code{nil} defaults to the current directory.
|
|
2768 @refill
|
|
2769
|
|
2770 @end table
|
|
2771
|
|
2772 @end table
|
|
2773 @subsubsection Specialized Methods
|
|
2774
|
|
2775 @deffn Method ede-proj-makefile-dependencies :AFTER this
|
|
2776 Return a string representing the dependencies for @var{THIS}.
|
|
2777 Always return an empty string for an autoloads generator.
|
|
2778 @end deffn
|
|
2779
|
|
2780 @deffn Method project-compile-target :AFTER obj
|
|
2781 Create or update the autoload target.
|
|
2782 @end deffn
|
|
2783
|
|
2784 @deffn Method ede-proj-flush-autoconf :AFTER this
|
|
2785 Flush the configure file (current buffer) to accomodate @var{THIS}.
|
|
2786 @end deffn
|
|
2787
|
|
2788 @deffn Method ede-buffer-mine :AFTER this buffer
|
|
2789 Return @code{t} if object @var{THIS} lays claim to the file in @var{BUFFER}.
|
|
2790 Lays claim to all .elc files that match .el files in this target.
|
|
2791 @end deffn
|
|
2792
|
|
2793 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2794 Return the variable name for @var{THIS}'s sources.
|
|
2795 @end deffn
|
|
2796
|
|
2797 @deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
|
|
2798 Insert any symbols that the DIST rule should depend on.
|
|
2799 Emacs Lisp autoload files ship the generated .el files.
|
|
2800 Argument @var{THIS} is the target which needs to insert an info file.
|
|
2801 @end deffn
|
|
2802
|
|
2803 @deffn Method ede-proj-tweak-autoconf :AFTER this
|
|
2804 Tweak the configure file (current buffer) to accomodate @var{THIS}.
|
|
2805 @end deffn
|
|
2806
|
|
2807 @deffn Method ede-update-version-in-source :AFTER this version
|
|
2808 In a Lisp file, updated a version string for @var{THIS} to @var{VERSION}.
|
|
2809 There are standards in Elisp files specifying how the version string
|
|
2810 is found, such as a @code{-version} variable, or the standard header.
|
|
2811 @end deffn
|
|
2812
|
|
2813 @deffn Method ede-proj-compilers :AFTER obj
|
|
2814 List of compilers being used by @var{OBJ}.
|
|
2815 If the @code{compiler} slot is empty, get the car of the compilers list.
|
|
2816 @end deffn
|
|
2817
|
|
2818 @deffn Method ede-proj-makefile-insert-dist-filepatterns :AFTER this
|
|
2819 Insert any symbols that the DIST rule should distribute.
|
|
2820 Emacs Lisp autoload files ship the generated .el files.
|
|
2821 Argument @var{THIS} is the target which needs to insert an info file.
|
|
2822 @end deffn
|
|
2823
|
|
2824 @deffn Method ede-proj-makefile-insert-source-variables :AFTER this &optional moresource
|
|
2825 Insert the source variables needed by @var{THIS}.
|
|
2826 Optional argument @var{MORESOURCE} is a list of additional sources to add to the
|
|
2827 sources variable.
|
|
2828 @end deffn
|
|
2829
|
|
2830
|
|
2831 @node ede-proj-target-makefile-miscelaneous
|
|
2832 @subsection ede-proj-target-makefile-miscelaneous
|
|
2833 @tgindex ede-proj-target-makefile-miscelaneous
|
|
2834
|
|
2835 @table @asis
|
|
2836 @item Inheritance Tree:
|
|
2837 @table @code
|
|
2838 @item eieio-speedbar
|
|
2839 @table @code
|
|
2840 @item eieio-speedbar-directory-button
|
|
2841 @table @code
|
|
2842 @item @w{@xref{ede-target}.}
|
|
2843 @table @code
|
|
2844 @item @w{@xref{ede-proj-target}.}
|
|
2845 @table @code
|
|
2846 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2847 @table @code
|
|
2848 @item ede-proj-target-makefile-miscelaneous
|
|
2849 No children
|
|
2850 @end table
|
|
2851 @end table
|
|
2852 @end table
|
|
2853 @end table
|
|
2854 @end table
|
|
2855 @end table
|
|
2856 @end table
|
|
2857
|
|
2858 @table @asis
|
|
2859 @item Slots:
|
|
2860
|
|
2861 @table @code
|
|
2862 @item :submakefile
|
|
2863 Type: @code{string} @*
|
|
2864 Default Value: @code{""}
|
|
2865
|
|
2866 Miscellaneous sources which have a specialized makefile.
|
|
2867 The sub-makefile is used to build this target.
|
|
2868 @refill
|
|
2869
|
|
2870 @end table
|
|
2871
|
|
2872 @end table
|
|
2873 @subsubsection Specialized Methods
|
|
2874
|
|
2875 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
2876 Create the make rule needed to create an archive for @var{THIS}.
|
|
2877 @end deffn
|
|
2878
|
|
2879 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2880 Return the variable name for @var{THIS}'s sources.
|
|
2881 @end deffn
|
|
2882
|
|
2883 @deffn Method ede-proj-makefile-dependency-files :AFTER this
|
|
2884 Return a list of files which @var{THIS} target depends on.
|
|
2885 @end deffn
|
|
2886
|
|
2887
|
|
2888 @node ede-proj-target-makefile-info
|
|
2889 @subsection ede-proj-target-makefile-info
|
|
2890 @tgindex ede-proj-target-makefile-info
|
|
2891
|
|
2892 @table @asis
|
|
2893 @item Inheritance Tree:
|
|
2894 @table @code
|
|
2895 @item eieio-speedbar
|
|
2896 @table @code
|
|
2897 @item eieio-speedbar-directory-button
|
|
2898 @table @code
|
|
2899 @item @w{@xref{ede-target}.}
|
|
2900 @table @code
|
|
2901 @item @w{@xref{ede-proj-target}.}
|
|
2902 @table @code
|
|
2903 @item @w{@xref{ede-proj-target-makefile}.}
|
|
2904 @table @code
|
|
2905 @item ede-proj-target-makefile-info
|
|
2906 No children
|
|
2907 @end table
|
|
2908 @end table
|
|
2909 @end table
|
|
2910 @end table
|
|
2911 @end table
|
|
2912 @end table
|
|
2913 @end table
|
|
2914
|
|
2915 @table @asis
|
|
2916 @item Slots:
|
|
2917
|
|
2918 @table @code
|
|
2919 @item :mainmenu
|
|
2920 Type: @code{string} @*
|
|
2921 Default Value: @code{""}
|
|
2922
|
|
2923 The main menu resides in this file.
|
|
2924 All other sources should be included independently.
|
|
2925 @refill
|
|
2926
|
|
2927 @end table
|
|
2928
|
|
2929 @end table
|
|
2930 @subsubsection Specialized Methods
|
|
2931
|
|
2932 @deffn Method ede-proj-configure-add-missing :AFTER this
|
|
2933 Query if any files needed by @var{THIS} provided by automake are missing.
|
|
2934 Results in --add-missing being passed to automake.
|
|
2935 @end deffn
|
|
2936
|
|
2937 @deffn Method object-write :AFTER this
|
|
2938 Before committing any change to @var{THIS}, make sure the mainmenu is first.
|
|
2939 @end deffn
|
|
2940
|
|
2941 @deffn Method ede-proj-makefile-sourcevar :AFTER this
|
|
2942 Return the variable name for @var{THIS}'s sources.
|
|
2943 @end deffn
|
|
2944
|
|
2945 @deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
|
|
2946 Insert any symbols that the DIST rule should depend on.
|
|
2947 Texinfo files want to insert generated `.info' files.
|
|
2948 Argument @var{THIS} is the target which needs to insert an info file.
|
|
2949 @end deffn
|
|
2950
|
|
2951 @deffn Method ede-proj-makefile-target-name :AFTER this
|
|
2952 Return the name of the main target for @var{THIS} target.
|
|
2953 @end deffn
|
|
2954
|
|
2955 @deffn Method ede-documentation :AFTER this
|
|
2956 Return a list of files that provides documentation.
|
|
2957 Documentation is not for object @var{THIS}, but is provided by @var{THIS} for other
|
|
2958 files in the project.
|
|
2959 @end deffn
|
|
2960
|
|
2961 @deffn Method ede-proj-makefile-insert-dist-filepatterns :AFTER this
|
|
2962 Insert any symbols that the DIST rule should depend on.
|
|
2963 Texinfo files want to insert generated `.info' files.
|
|
2964 Argument @var{THIS} is the target which needs to insert an info file.
|
|
2965 @end deffn
|
|
2966
|
|
2967 @deffn Method ede-proj-makefile-insert-source-variables :AFTER this &optional moresource
|
|
2968 Insert the source variables needed by @var{THIS} info target.
|
|
2969 Optional argument @var{MORESOURCE} is a list of additional sources to add to the
|
|
2970 sources variable.
|
|
2971 Does the usual for Makefile mode, but splits source into two variables
|
|
2972 when working in Automake mode.
|
|
2973 @end deffn
|
|
2974
|
|
2975 @node ede-proj-target-scheme
|
|
2976 @subsection ede-proj-target-scheme
|
|
2977 @tgindex ede-proj-target-scheme
|
|
2978
|
|
2979 @table @asis
|
|
2980 @item Inheritance Tree:
|
|
2981 @table @code
|
|
2982 @item eieio-speedbar
|
|
2983 @table @code
|
|
2984 @item eieio-speedbar-directory-button
|
|
2985 @table @code
|
|
2986 @item @w{@xref{ede-target}.}
|
|
2987 @table @code
|
|
2988 @item @w{@xref{ede-proj-target}.}
|
|
2989 @table @code
|
|
2990 @item ede-proj-target-scheme
|
|
2991 No children
|
|
2992 @end table
|
|
2993 @end table
|
|
2994 @end table
|
|
2995 @end table
|
|
2996 @end table
|
|
2997 @end table
|
|
2998
|
|
2999 @table @asis
|
|
3000 @item Slots:
|
|
3001
|
|
3002 @table @code
|
|
3003 @item :interpreter
|
|
3004 Type: @code{string} @*
|
|
3005 Default Value: @code{"guile"}
|
|
3006
|
|
3007 The preferred interpreter for this code.
|
|
3008 @refill
|
|
3009
|
|
3010 @end table
|
|
3011
|
|
3012 @end table
|
|
3013 @subsubsection Specialized Methods
|
|
3014
|
|
3015 @deffn Method ede-proj-tweak-autoconf :AFTER this
|
|
3016 Tweak the configure file (current buffer) to accomodate @var{THIS}.
|
|
3017 @end deffn
|
|
3018
|
|
3019
|
|
3020 @node project-am-target
|
|
3021 @subsection project-am-target
|
|
3022 @tgindex project-am-target
|
|
3023
|
|
3024 @table @asis
|
|
3025 @item Inheritance Tree:
|
|
3026 @table @code
|
|
3027 @item eieio-speedbar
|
|
3028 @table @code
|
|
3029 @item eieio-speedbar-directory-button
|
|
3030 @table @code
|
|
3031 @item @w{@xref{ede-target}.}
|
|
3032 @table @code
|
|
3033 @item project-am-target
|
|
3034 @table @asis
|
|
3035 @item Children:
|
|
3036 @w{@xref{project-am-objectcode},} @w{project-am-header,} @w{@xref{project-am-lisp},} @w{@xref{project-am-texinfo},} @w{@xref{project-am-man}.}
|
|
3037 @end table
|
|
3038 @end table
|
|
3039 @end table
|
|
3040 @end table
|
|
3041 @end table
|
|
3042 @end table
|
|
3043
|
|
3044 @subsubsection Specialized Methods
|
|
3045
|
|
3046 @deffn Method project-compile-target-command :AFTER this
|
|
3047 Default target to use when compiling a given target.
|
|
3048 @end deffn
|
|
3049
|
|
3050 @deffn Method project-make-dist :AFTER this
|
|
3051 Run the current project in the debugger.
|
|
3052 @end deffn
|
|
3053
|
|
3054 @deffn Method project-edit-file-target :AFTER obj
|
|
3055 Edit the target associated w/ this file.
|
|
3056 @end deffn
|
|
3057
|
|
3058 @node project-am-objectcode
|
|
3059 @subsection project-am-objectcode
|
|
3060 @tgindex project-am-objectcode
|
|
3061
|
|
3062 @table @asis
|
|
3063 @item Inheritance Tree:
|
|
3064 @table @code
|
|
3065 @item eieio-speedbar
|
|
3066 @table @code
|
|
3067 @item eieio-speedbar-directory-button
|
|
3068 @table @code
|
|
3069 @item @w{@xref{ede-target}.}
|
|
3070 @table @code
|
|
3071 @item @w{@xref{project-am-target}.}
|
|
3072 @table @code
|
|
3073 @item project-am-objectcode
|
|
3074 @table @asis
|
|
3075 @item Children:
|
|
3076 @w{@xref{project-am-program},} @w{project-am-lib.}
|
|
3077 @end table
|
|
3078 @end table
|
|
3079 @end table
|
|
3080 @end table
|
|
3081 @end table
|
|
3082 @end table
|
|
3083 @end table
|
|
3084
|
|
3085 @subsubsection Specialized Methods
|
|
3086
|
|
3087 @deffn Method project-am-macro :AFTER this
|
|
3088 Return the default macro to 'edit' for this object type.
|
|
3089 @end deffn
|
|
3090
|
|
3091 @deffn Method project-debug-target :AFTER obj
|
|
3092 Run the current project target in a debugger.
|
|
3093 @end deffn
|
|
3094
|
|
3095 @deffn Method project-compile-target-command :AFTER this
|
|
3096 Default target to use when compiling an object code target.
|
|
3097 @end deffn
|
|
3098
|
|
3099 @deffn Method ede-buffer-header-file :AFTER this buffer
|
|
3100 There are no default header files.
|
|
3101 @end deffn
|
|
3102
|
|
3103 @node project-am-program
|
|
3104 @subsection project-am-program
|
|
3105 @tgindex project-am-program
|
|
3106
|
|
3107 @table @asis
|
|
3108 @item Inheritance Tree:
|
|
3109 @table @code
|
|
3110 @item eieio-speedbar
|
|
3111 @table @code
|
|
3112 @item eieio-speedbar-directory-button
|
|
3113 @table @code
|
|
3114 @item @w{@xref{ede-target}.}
|
|
3115 @table @code
|
|
3116 @item @w{@xref{project-am-target}.}
|
|
3117 @table @code
|
|
3118 @item @w{@xref{project-am-objectcode}.}
|
|
3119 @table @code
|
|
3120 @item project-am-program
|
|
3121 No children
|
|
3122 @end table
|
|
3123 @end table
|
|
3124 @end table
|
|
3125 @end table
|
|
3126 @end table
|
|
3127 @end table
|
|
3128 @end table
|
|
3129
|
|
3130 @table @asis
|
|
3131 @item Slots:
|
|
3132
|
|
3133 @table @code
|
|
3134 @item :ldadd @*
|
|
3135 Default Value: @code{nil}
|
|
3136
|
|
3137 Additional LD args.
|
|
3138 @refill
|
|
3139 @end table
|
|
3140 @end table
|
|
3141
|
|
3142 @node project-am-header-noinst
|
|
3143 @subsection project-am-header-noinst
|
|
3144 @tgindex project-am-header-noinst
|
|
3145
|
|
3146 @table @asis
|
|
3147 @item Inheritance Tree:
|
|
3148 @table @code
|
|
3149 @item eieio-speedbar
|
|
3150 @table @code
|
|
3151 @item eieio-speedbar-directory-button
|
|
3152 @table @code
|
|
3153 @item @w{@xref{ede-target}.}
|
|
3154 @table @code
|
|
3155 @item @w{@xref{project-am-target}.}
|
|
3156 @table @code
|
|
3157 @item @w{project-am-header.}
|
|
3158 @table @code
|
|
3159 @item project-am-header-noinst
|
|
3160 No children
|
|
3161 @end table
|
|
3162 @end table
|
|
3163 @end table
|
|
3164 @end table
|
|
3165 @end table
|
|
3166 @end table
|
|
3167 @end table
|
|
3168
|
|
3169 @subsubsection Specialized Methods
|
|
3170
|
|
3171 @deffn Method project-am-macro :AFTER this
|
|
3172 Return the default macro to 'edit' for this object.
|
|
3173 @end deffn
|
|
3174
|
|
3175 @node project-am-header-inst
|
|
3176 @subsection project-am-header-inst
|
|
3177 @tgindex project-am-header-inst
|
|
3178
|
|
3179 @table @asis
|
|
3180 @item Inheritance Tree:
|
|
3181 @table @code
|
|
3182 @item eieio-speedbar
|
|
3183 @table @code
|
|
3184 @item eieio-speedbar-directory-button
|
|
3185 @table @code
|
|
3186 @item @w{@xref{ede-target}.}
|
|
3187 @table @code
|
|
3188 @item @w{@xref{project-am-target}.}
|
|
3189 @table @code
|
|
3190 @item @w{project-am-header.}
|
|
3191 @table @code
|
|
3192 @item project-am-header-inst
|
|
3193 No children
|
|
3194 @end table
|
|
3195 @end table
|
|
3196 @end table
|
|
3197 @end table
|
|
3198 @end table
|
|
3199 @end table
|
|
3200 @end table
|
|
3201
|
|
3202 @subsubsection Specialized Methods
|
|
3203
|
|
3204 @deffn Method project-am-macro :AFTER this
|
|
3205 Return the default macro to 'edit' for this object.
|
|
3206 @end deffn
|
|
3207
|
|
3208 @node project-am-lisp
|
|
3209 @subsection project-am-lisp
|
|
3210 @tgindex project-am-lisp
|
|
3211
|
|
3212 @table @asis
|
|
3213 @item Inheritance Tree:
|
|
3214 @table @code
|
|
3215 @item eieio-speedbar
|
|
3216 @table @code
|
|
3217 @item eieio-speedbar-directory-button
|
|
3218 @table @code
|
|
3219 @item @w{@xref{ede-target}.}
|
|
3220 @table @code
|
|
3221 @item @w{@xref{project-am-target}.}
|
|
3222 @table @code
|
|
3223 @item project-am-lisp
|
|
3224 No children
|
|
3225 @end table
|
|
3226 @end table
|
|
3227 @end table
|
|
3228 @end table
|
|
3229 @end table
|
|
3230 @end table
|
|
3231
|
|
3232 @subsubsection Specialized Methods
|
|
3233
|
|
3234 @deffn Method project-am-macro :AFTER this
|
|
3235 Return the default macro to 'edit' for this object.
|
|
3236 @end deffn
|
|
3237
|
|
3238 @node project-am-texinfo
|
|
3239 @subsection project-am-texinfo
|
|
3240 @tgindex project-am-texinfo
|
|
3241
|
|
3242 @table @asis
|
|
3243 @item Inheritance Tree:
|
|
3244 @table @code
|
|
3245 @item eieio-speedbar
|
|
3246 @table @code
|
|
3247 @item eieio-speedbar-directory-button
|
|
3248 @table @code
|
|
3249 @item @w{@xref{ede-target}.}
|
|
3250 @table @code
|
|
3251 @item @w{@xref{project-am-target}.}
|
|
3252 @table @code
|
|
3253 @item project-am-texinfo
|
|
3254 No children
|
|
3255 @end table
|
|
3256 @end table
|
|
3257 @end table
|
|
3258 @end table
|
|
3259 @end table
|
|
3260 @end table
|
|
3261
|
|
3262 @table @asis
|
|
3263 @item Slots:
|
|
3264
|
|
3265 @table @code
|
|
3266 @item :include @*
|
|
3267 Default Value: @code{nil}
|
|
3268
|
|
3269 Additional texinfo included in this one.
|
|
3270 @refill
|
|
3271
|
|
3272 @end table
|
|
3273 @end table
|
|
3274 @subsubsection Specialized Methods
|
|
3275
|
|
3276 @deffn Method project-am-macro :AFTER this
|
|
3277 Return the default macro to 'edit' for this object type.
|
|
3278 @end deffn
|
|
3279
|
|
3280 @deffn Method project-compile-target-command :AFTER this
|
|
3281 Default target t- use when compling a texinfo file.
|
|
3282 @end deffn
|
|
3283
|
|
3284 @deffn Method ede-documentation :AFTER this
|
|
3285 Return a list of files that provides documentation.
|
|
3286 Documentation is not for object @var{THIS}, but is provided by @var{THIS} for other
|
|
3287 files in the project.
|
|
3288 @end deffn
|
|
3289
|
|
3290 @node project-am-man
|
|
3291 @comment node-name, next, previous, up
|
|
3292 @subsection project-am-man
|
|
3293 @tgindex project-am-man
|
|
3294
|
|
3295 @table @asis
|
|
3296 @item Inheritance Tree:
|
|
3297 @table @code
|
|
3298 @item eieio-speedbar
|
|
3299 @table @code
|
|
3300 @item eieio-speedbar-directory-button
|
|
3301 @table @code
|
|
3302 @item @w{@xref{ede-target}.}
|
|
3303 @table @code
|
|
3304 @item @w{@xref{project-am-target}.}
|
|
3305 @table @code
|
|
3306 @item project-am-man
|
|
3307 No children
|
|
3308 @end table
|
|
3309 @end table
|
|
3310 @end table
|
|
3311 @end table
|
|
3312 @end table
|
|
3313 @end table
|
|
3314
|
|
3315 @subsubsection Specialized Methods
|
|
3316
|
|
3317 @deffn Method project-am-macro :AFTER this
|
|
3318 Return the default macro to 'edit' for this object type.
|
|
3319 @end deffn
|
|
3320
|
|
3321 @node Sourcecode
|
|
3322 @section Sourcecode
|
|
3323
|
|
3324 The source code type is an object designed to associated files with
|
|
3325 targets.
|
|
3326
|
|
3327 @menu
|
|
3328 * ede-sourcecode ::
|
|
3329 @end menu
|
|
3330
|
|
3331
|
|
3332 @node ede-sourcecode
|
|
3333 @subsection ede-sourcecode
|
|
3334 @scindex ede-sourcecode
|
|
3335
|
|
3336 @table @asis
|
|
3337 @item Inheritance Tree:
|
|
3338 @table @code
|
|
3339 @item eieio-instance-inheritor
|
|
3340 @table @code
|
|
3341 @item ede-sourcecode
|
|
3342 No children
|
|
3343 @end table
|
|
3344 @end table
|
|
3345 @end table
|
|
3346
|
|
3347 @table @asis
|
|
3348 @item Slots:
|
|
3349
|
|
3350 @table @code
|
|
3351 @item :parent-instance
|
|
3352 Type: @code{eieio-instance-inheritor-child}
|
|
3353
|
|
3354 The parent of this instance.
|
|
3355 If a slot of this class is reference, and is unbound, then the parent
|
|
3356 is checked for a value.
|
|
3357 @refill
|
|
3358
|
|
3359 @item :name
|
|
3360 Type: @code{string}
|
|
3361
|
|
3362 The name of this type of source code.
|
|
3363 Such as "C" or "Emacs Lisp"
|
|
3364 @refill
|
|
3365
|
|
3366 @item :sourcepattern
|
|
3367 Type: @code{string} @*
|
|
3368 Default Value: @code{".*"}
|
|
3369
|
|
3370 Emacs regex matching sourcecode this target accepts.
|
|
3371 @refill
|
|
3372
|
|
3373 @item :auxsourcepattern
|
|
3374 Type: @code{(or null string)} @*
|
|
3375 Default Value: @code{nil}
|
|
3376
|
|
3377 Emacs regex matching auxiliary source code this target accepts.
|
|
3378 Aux source are source code files needed for compilation, which are not comiled
|
|
3379 themselves.
|
|
3380 @refill
|
|
3381
|
|
3382 @item :enable-subdirectories
|
|
3383 Type: @code{boolean} @*
|
|
3384 Default Value: @code{nil}
|
|
3385
|
|
3386 Non @code{nil} if this sourcecode type uses subdirectores.
|
|
3387 If sourcecode always lives near the target creating it, this should be nil.
|
|
3388 If sourcecode can, or typically lives in a subdirectory of the owning
|
|
3389 target, set this to t.
|
|
3390 @refill
|
|
3391
|
|
3392 @item :garbagepattern
|
|
3393 Type: @code{list} @*
|
|
3394 Default Value: @code{nil}
|
|
3395
|
|
3396 Shell file regex matching files considered as garbage.
|
|
3397 This is a list of items added to an @code{rm} command when executing a @code{clean}
|
|
3398 type directive.
|
|
3399 @refill
|
|
3400
|
|
3401 @end table
|
|
3402
|
|
3403 @end table
|
|
3404 @subsubsection Specialized Methods
|
|
3405
|
|
3406 @deffn Method ede-want-any-files-p :AFTER this filenames
|
|
3407 Return non-@code{nil} if @var{THIS} will accept any files in @var{FILENAMES}.
|
|
3408 @end deffn
|
|
3409
|
|
3410 @deffn Method ede-want-any-source-files-p :AFTER this filenames
|
|
3411 Return non-@code{nil} if @var{THIS} will accept any source files in @var{FILENAMES}.
|
|
3412 @end deffn
|
|
3413
|
|
3414 @deffn Method ede-want-any-auxiliary-files-p :AFTER this filenames
|
|
3415 Return non-@code{nil} if @var{THIS} will accept any aux files in @var{FILENAMES}.
|
|
3416 @end deffn
|
|
3417
|
|
3418 @deffn Method ede-buffer-header-file :AFTER this filename
|
|
3419 Return a list of file names of header files for @var{THIS} with @var{FILENAME}.
|
|
3420 Used to guess header files, but uses the auxsource regular expression.
|
|
3421 @end deffn
|
|
3422
|
|
3423 @deffn Method ede-want-file-p :AFTER this filename
|
|
3424 Return non-@code{nil} if sourcecode definition @var{THIS} will take @var{FILENAME}.
|
|
3425 @end deffn
|
|
3426
|
|
3427 @deffn Method ede-want-file-source-p :AFTER this filename
|
|
3428 Return non-@code{nil} if @var{THIS} will take @var{FILENAME} as an auxiliary .
|
|
3429 @end deffn
|
|
3430
|
|
3431 @deffn Method ede-want-file-auxiliary-p :AFTER this filename
|
|
3432 Return non-@code{nil} if @var{THIS} will take @var{FILENAME} as an auxiliary .
|
|
3433 @end deffn
|
|
3434
|
|
3435 @node Compilers
|
|
3436 @section Compilers
|
|
3437
|
|
3438 The compiler object is designed to associate source code with
|
|
3439 compilers. The target then references the compilers it can use.
|
|
3440 When the makefile is created, this object type knows how to create
|
|
3441 compile commands.
|
|
3442
|
|
3443 @menu
|
|
3444 * ede-compilation-program ::
|
|
3445 * ede-compiler ::
|
|
3446 * ede-object-compiler ::
|
|
3447 * ede-linker ::
|
|
3448 @end menu
|
|
3449
|
|
3450
|
|
3451 @node ede-compilation-program
|
|
3452 @subsection ede-compilation-program
|
|
3453 @cmindex ede-compilation-program
|
|
3454
|
|
3455 @table @asis
|
|
3456 @item Inheritance Tree:
|
|
3457 @table @code
|
|
3458 @item eieio-instance-inheritor
|
|
3459 @table @code
|
|
3460 @item ede-compilation-program
|
|
3461 @table @asis
|
|
3462 @item Children:
|
|
3463 @w{@xref{ede-compiler},} @w{@xref{ede-linker}.}
|
|
3464 @end table
|
|
3465 @end table
|
|
3466 @end table
|
|
3467 @end table
|
|
3468
|
|
3469 @table @asis
|
|
3470 @item Slots:
|
|
3471
|
|
3472 @table @code
|
|
3473 @item :parent-instance
|
|
3474 Type: @code{eieio-instance-inheritor-child}
|
|
3475
|
|
3476 The parent of this instance.
|
|
3477 If a slot of this class is reference, and is unbound, then the parent
|
|
3478 is checked for a value.
|
|
3479 @refill
|
|
3480
|
|
3481 @item :name
|
|
3482 Type: @code{string}
|
|
3483
|
|
3484 Name of this type of compiler.
|
|
3485 @refill
|
|
3486
|
|
3487 @item :variables
|
|
3488 Type: @code{list}
|
|
3489
|
|
3490 Variables needed in the Makefile for this compiler.
|
|
3491 An assoc list where each element is (VARNAME . VALUE) where VARNAME
|
|
3492 is a string, and VALUE is either a string, or a list of strings.
|
|
3493 For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.
|
|
3494 @refill
|
|
3495
|
|
3496 @item :sourcetype
|
|
3497 Type: @code{list}
|
|
3498
|
|
3499 A list of @code{ede-sourcecode} @xref{ede-sourcecode}. objects this class will handle.
|
|
3500 This is used to match target objects with the compilers and linkers
|
|
3501 they can use, and which files this object is interested in.
|
|
3502 @refill
|
|
3503
|
|
3504 @item :rules
|
|
3505 Type: @code{list} @*
|
|
3506 Default Value: @code{nil}
|
|
3507
|
|
3508 Auxiliary rules needed for this compiler to run.
|
|
3509 For example, yacc/lex files need additional chain rules, or inferences.
|
|
3510 @refill
|
|
3511
|
|
3512 @item :commands
|
|
3513 Type: @code{list}
|
|
3514
|
|
3515 The commands used to execute this compiler.
|
|
3516 The object which uses this compiler will place these commands after
|
|
3517 it's rule definition.
|
|
3518 @refill
|
|
3519
|
|
3520 @item :autoconf
|
|
3521 Type: @code{list} @*
|
|
3522 Default Value: @code{nil}
|
|
3523
|
|
3524 Autoconf function to call if this type of compiler is used.
|
|
3525 When a project is in Automake mode, this defines the autoconf function to
|
|
3526 call to initialize automake to use this compiler.
|
|
3527 For example, there may be multiple C compilers, but they all probably
|
|
3528 use the same autoconf form.
|
|
3529 @refill
|
|
3530
|
|
3531 @item :objectextention
|
|
3532 Type: @code{string}
|
|
3533
|
|
3534 A string which is the extention used for object files.
|
|
3535 For example, C code uses .o on unix, and Emacs Lisp uses .elc.
|
|
3536 @refill
|
|
3537
|
|
3538 @end table
|
|
3539
|
|
3540 @end table
|
|
3541 @subsubsection Specialized Methods
|
|
3542
|
|
3543 @deffn Method ede-proj-flush-autoconf :AFTER this
|
|
3544 Flush the configure file (current buffer) to accomodate @var{THIS}.
|
|
3545 @end deffn
|
|
3546
|
|
3547 @deffn Method ede-proj-makefile-insert-rules :AFTER this
|
|
3548 Insert rules needed for @var{THIS} compiler object.
|
|
3549 @end deffn
|
|
3550
|
|
3551 @deffn Method ede-proj-makefile-insert-variables :AFTER this
|
|
3552 Insert variables needed by the compiler @var{THIS}.
|
|
3553 @end deffn
|
|
3554
|
|
3555 @deffn Method ede-proj-makefile-insert-commands :AFTER this
|
|
3556 Insert the commands needed to use compiler @var{THIS}.
|
|
3557 The object creating makefile rules must call this method for the
|
|
3558 compiler it decides to use after inserting in the rule.
|
|
3559 @end deffn
|
|
3560
|
|
3561 @deffn Method ede-object-sourcecode :AFTER this
|
|
3562 Retrieves the slot @code{sourcetype} from an object of class @code{ede-compilation-program}
|
|
3563 @end deffn
|
|
3564
|
|
3565 @deffn Method ede-proj-tweak-autoconf :AFTER this
|
|
3566 Tweak the configure file (current buffer) to accomodate @var{THIS}.
|
|
3567 @end deffn
|
|
3568
|
|
3569
|
|
3570 @node ede-compiler
|
|
3571 @subsection ede-compiler
|
|
3572 @cmindex ede-compiler
|
|
3573
|
|
3574 @table @asis
|
|
3575 @item Inheritance Tree:
|
|
3576 @table @code
|
|
3577 @item eieio-instance-inheritor
|
|
3578 @table @code
|
|
3579 @item @w{@xref{ede-compilation-program}.}
|
|
3580 @table @code
|
|
3581 @item ede-compiler
|
|
3582 @table @asis
|
|
3583 @item Children:
|
|
3584 @w{@xref{ede-object-compiler},} @w{semantic-ede-grammar-compiler-class.}
|
|
3585 @end table
|
|
3586
|
|
3587 @end table
|
|
3588
|
|
3589 @end table
|
|
3590
|
|
3591 @end table
|
|
3592 @end table
|
|
3593
|
|
3594 Create a new object with name NAME of class type ede-compiler
|
|
3595
|
|
3596 @table @asis
|
|
3597 @item Slots:
|
|
3598
|
|
3599 @table @code
|
|
3600 @item :parent-instance
|
|
3601 Type: @code{eieio-instance-inheritor-child}
|
|
3602
|
|
3603 The parent of this instance.
|
|
3604 If a slot of this class is reference, and is unbound, then the parent
|
|
3605 is checked for a value.
|
|
3606 @refill
|
|
3607
|
|
3608 @item :name
|
|
3609 Type: @code{string}
|
|
3610
|
|
3611 Name of this type of compiler.
|
|
3612 @refill
|
|
3613
|
|
3614 @item :variables
|
|
3615 Type: @code{list}
|
|
3616
|
|
3617 Variables needed in the Makefile for this compiler.
|
|
3618 An assoc list where each element is (VARNAME . VALUE) where VARNAME
|
|
3619 is a string, and VALUE is either a string, or a list of strings.
|
|
3620 For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.
|
|
3621 @refill
|
|
3622
|
|
3623 @item :sourcetype
|
|
3624 Type: @code{list}
|
|
3625
|
|
3626 A list of @code{ede-sourcecode} @xref{ede-sourcecode}. objects this class will handle.
|
|
3627 This is used to match target objects with the compilers and linkers
|
|
3628 they can use, and which files this object is interested in.
|
|
3629 @refill
|
|
3630
|
|
3631 @item :commands
|
|
3632 Type: @code{list}
|
|
3633
|
|
3634 The commands used to execute this compiler.
|
|
3635 The object which uses this compiler will place these commands after
|
|
3636 it's rule definition.
|
|
3637 @refill
|
|
3638
|
|
3639 @item :objectextention
|
|
3640 Type: @code{string}
|
|
3641
|
|
3642 A string which is the extention used for object files.
|
|
3643 For example, C code uses .o on unix, and Emacs Lisp uses .elc.
|
|
3644 @refill
|
|
3645
|
|
3646 @item :makedepends
|
|
3647 Type: @code{boolean} @*
|
|
3648 Default Value: @code{nil}
|
|
3649
|
|
3650 Non-@code{nil} if this compiler can make dependencies.
|
|
3651 @refill
|
|
3652
|
|
3653 @item :uselinker
|
|
3654 Type: @code{boolean} @*
|
|
3655 Default Value: @code{nil}
|
|
3656
|
|
3657 Non-@code{nil} if this compiler creates code that can be linked.
|
|
3658 This requires that the containing target also define a list of available
|
|
3659 linkers that can be used.
|
|
3660 @refill
|
|
3661
|
|
3662 @end table
|
|
3663
|
|
3664 @end table
|
|
3665 @subsubsection Specialized Methods
|
|
3666
|
|
3667 @deffn Method ede-proj-makefile-insert-object-variables :AFTER this targetname sourcefiles
|
|
3668 Insert an OBJ variable to specify object code to be generated for @var{THIS}.
|
|
3669 The name of the target is @var{TARGETNAME} as a string. @var{SOURCEFILES} is the list of
|
|
3670 files to be objectified.
|
|
3671 Not all compilers do this.
|
|
3672 @end deffn
|
|
3673
|
|
3674 @deffn Method ede-compiler-intermediate-objects-p :AFTER this
|
|
3675 Return non-@code{nil} if @var{THIS} has intermediate object files.
|
|
3676 If this compiler creates code that can be linked together,
|
|
3677 then the object files created by the compiler are considered intermediate.
|
|
3678 @end deffn
|
|
3679
|
|
3680 @deffn Method ede-compiler-intermediate-object-variable :AFTER this targetname
|
|
3681 Return a string based on @var{THIS} representing a make object variable.
|
|
3682 @var{TARGETNAME} is the name of the target that these objects belong to.
|
|
3683 @end deffn
|
|
3684
|
|
3685
|
|
3686 @node ede-object-compiler
|
|
3687 @subsection ede-object-compiler
|
|
3688 @cmindex ede-object-compiler
|
|
3689
|
|
3690 @table @asis
|
|
3691 @item Inheritance Tree:
|
|
3692 @table @code
|
|
3693 @item eieio-instance-inheritor
|
|
3694 @table @code
|
|
3695 @item @w{@xref{ede-compilation-program}.}
|
|
3696 @table @code
|
|
3697 @item @w{@xref{ede-compiler}.}
|
|
3698 @table @code
|
|
3699 @item ede-object-compiler
|
|
3700 No children
|
|
3701 @end table
|
|
3702 @end table
|
|
3703 @end table
|
|
3704 @end table
|
|
3705 @end table
|
|
3706
|
|
3707 @table @asis
|
|
3708 @item Slots:
|
|
3709
|
|
3710 @table @code
|
|
3711 @item :uselinker
|
|
3712 Type: @code{boolean} @*
|
|
3713 Default Value: @code{t}
|
|
3714
|
|
3715 @xref{ede-compiler}.
|
|
3716 @item :dependencyvar
|
|
3717 Type: @code{list}
|
|
3718
|
|
3719 A variable dedicated to dependency generation.
|
|
3720 @refill
|
|
3721 @end table
|
|
3722 @end table
|
|
3723
|
|
3724 @subsubsection Specialized Methods
|
|
3725
|
|
3726 @deffn Method ede-proj-makefile-insert-variables :AFTER this
|
|
3727 Insert variables needed by the compiler @var{THIS}.
|
|
3728 @end deffn
|
|
3729
|
|
3730 @node ede-linker
|
|
3731 @subsection ede-linker
|
|
3732 @cmindex ede-linker
|
|
3733
|
|
3734 @table @asis
|
|
3735 @item Inheritance Tree:
|
|
3736 @table @code
|
|
3737 @item eieio-instance-inheritor
|
|
3738 @table @code
|
|
3739 @item @w{@xref{ede-compilation-program}.}
|
|
3740 @table @code
|
|
3741 @item ede-linker
|
|
3742 No children
|
|
3743 @end table
|
|
3744
|
|
3745 @end table
|
|
3746
|
|
3747 @end table
|
|
3748 @end table
|
|
3749
|
|
3750 Create a new object with name NAME of class type ede-linker
|
|
3751
|
|
3752 @table @asis
|
|
3753 @item Slots:
|
|
3754
|
|
3755 @table @code
|
|
3756 @item :name
|
|
3757 Type: @code{string}
|
|
3758
|
|
3759 Name of this type of compiler.
|
|
3760 @refill
|
|
3761
|
|
3762 @item :variables
|
|
3763 Type: @code{list}
|
|
3764
|
|
3765 Variables needed in the Makefile for this compiler.
|
|
3766 An assoc list where each element is (VARNAME . VALUE) where VARNAME
|
|
3767 is a string, and VALUE is either a string, or a list of strings.
|
|
3768 For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.
|
|
3769 @refill
|
|
3770
|
|
3771 @item :sourcetype
|
|
3772 Type: @code{list}
|
|
3773
|
|
3774 A list of @code{ede-sourcecode} @xref{ede-sourcecode}. objects this class will handle.
|
|
3775 This is used to match target objects with the compilers and linkers
|
|
3776 they can use, and which files this object is interested in.
|
|
3777 @refill
|
|
3778
|
|
3779 @item :commands
|
|
3780 Type: @code{list}
|
|
3781
|
|
3782 The commands used to execute this compiler.
|
|
3783 The object which uses this compiler will place these commands after
|
|
3784 it's rule definition.
|
|
3785 @refill
|
|
3786
|
|
3787 @item :objectextention
|
|
3788 Type: @code{string}
|
|
3789
|
|
3790 A string which is the extention used for object files.
|
|
3791 For example, C code uses .o on unix, and Emacs Lisp uses .elc.
|
|
3792 @refill
|
|
3793
|
|
3794 @end table
|
|
3795 @end table
|
|
3796
|
|
3797 @bye
|
105754
|
3798
|
|
3799 @ignore
|
|
3800 arch-tag: c9bfdc6e-e6e9-4e87-97f7-d8348342fbf4
|
|
3801 @end ignore
|