1 | * Run automake before libtool. It will report an error but
|
---|
2 | still won't put the file into the disty. This is wrong.
|
---|
3 | From Mark H Wilkinson <mhw@kremvax.demon.co.uk>
|
---|
4 |
|
---|
5 | * AM_CONFIG_HEADER might generate the wrong stamp file names
|
---|
6 | when given multiple headers. Write a test.
|
---|
7 |
|
---|
8 | * Currently don't correctly handle multiple inputs to a config header.
|
---|
9 |
|
---|
10 | * header stamp files still in wrong dirs.
|
---|
11 | stamp-h.in must be in dir with h.in file
|
---|
12 | stamp-h must be in dir with output file
|
---|
13 |
|
---|
14 | * foo=bar
|
---|
15 | if cond
|
---|
16 | foo += joe
|
---|
17 | endif
|
---|
18 | ... this ought to work. The fix is probably complicated
|
---|
19 |
|
---|
20 | * `distcheck' and `dist' should depend on `all'
|
---|
21 |
|
---|
22 | * Document why putting @FOO@ in _SOURCES doesn't work.
|
---|
23 |
|
---|
24 | * Add code to generate foo-config script like gnome, gtk
|
---|
25 |
|
---|
26 | * right now automake sets `TAR' when automake is configured
|
---|
27 | this loses in some situations.
|
---|
28 | however, checking for it in every configure.in also seems lame.
|
---|
29 | probably should just give in on this; meanwhile people can
|
---|
30 | override TAR themselves.
|
---|
31 |
|
---|
32 | * `DEFS += foo' won't work.
|
---|
33 | That's because DEFS is defined in header-vars.am, which is read
|
---|
34 | after the user's Makefile.am.
|
---|
35 | This will be a problem for any macro defined internally
|
---|
36 | [ fixing this will probabl fix the nasty `exeext redefines
|
---|
37 | foo_PROGRAMS' hack that is in there right now ]
|
---|
38 |
|
---|
39 | * document user namespace for macro/target names
|
---|
40 | adopt some conventions and use uniformly
|
---|
41 | [ this is a good thing for the rewrite ]
|
---|
42 |
|
---|
43 | * make distcheck uses directories like `=build'.
|
---|
44 | Some (very rare) POSIX systems don't support `=' in filenames.
|
---|
45 | If this ever becomes a problem, fix it
|
---|
46 |
|
---|
47 | * distclean must remove config.status
|
---|
48 | can't this cause problems for maintainer-clean?
|
---|
49 | shouldn't maintainer-clean print the message before running
|
---|
50 | any part of the make? (just to slow things down long enough
|
---|
51 | for the user to stop it)
|
---|
52 | (maybe doesn't matter since people who even know about
|
---|
53 | maintainer-clean already have a clue)
|
---|
54 |
|
---|
55 | * There are probably more bugs in variable_conditions_sub along
|
---|
56 | the lines of the one that caused cond4.test to fail.
|
---|
57 |
|
---|
58 | * give user more control over -I flags
|
---|
59 | in particular document a way to override the defaults
|
---|
60 |
|
---|
61 | * reintroduce AM_FUNC_FNMATCH which sets LIBOBJS
|
---|
62 | Then have automake know about fnmatch.h.
|
---|
63 | [ probably should wait for autoconf to get right functionality ]
|
---|
64 |
|
---|
65 | * Add a conditional for dependency tracking
|
---|
66 | (what to name it is the biggest problem here)
|
---|
67 | (because we want it to flag dist/no-dist -- not just deps)
|
---|
68 | [ this might not really be correctly doable.
|
---|
69 | instead we need a compile-time conditional for this
|
---|
70 | yuck ]
|
---|
71 |
|
---|
72 | * Allow per-object cflags:
|
---|
73 | bin_PROGRAMS = foo
|
---|
74 | foo_CFLAGS = -DFOO
|
---|
75 | * At the same time, allow sources in subdirs:
|
---|
76 | foo_SOURCES = x/y.c
|
---|
77 | This requires `mkdir x' at build time
|
---|
78 | [ both of these require per-file rules, and not pattern rules ]
|
---|
79 | [ use user-written suffix rules to generate the per-file rules in
|
---|
80 | an automatic way -- this would be mucho cool ]
|
---|
81 |
|
---|
82 | * Allow for multiple translations of a texinfo file:
|
---|
83 | LL_info_TEXINFOS = ...
|
---|
84 | will put info files for language LL into $(infodir)/LL.
|
---|
85 |
|
---|
86 | * If you suppress an internal variable by specifying a variable
|
---|
87 | in a Makefile.am, but the variable is conditional, then automake
|
---|
88 | should generate the internal variable conditionally.
|
---|
89 | You have to scan the map of all conditions and fill in the holes here
|
---|
90 |
|
---|
91 | * Every program foo has FOOFLAGS right now.
|
---|
92 | It should also have AM_FOOFLAGS, which can be set in Makefile.am.
|
---|
93 | DONE: but needs to be documented
|
---|
94 |
|
---|
95 | * Should be able to update files that would be installed with -a
|
---|
96 | (--force?)
|
---|
97 |
|
---|
98 | * "make diff" capability
|
---|
99 | look at gcc's Makefile.in to see what to do
|
---|
100 | or look at maint program
|
---|
101 |
|
---|
102 | * Karl wants to be able to set LIBS and LDFLAGS at build time, like CFLAGS
|
---|
103 | maybe we need something more general?
|
---|
104 |
|
---|
105 | * add $(srcdir)/ before some dependencies?
|
---|
106 |
|
---|
107 | * define LINK if a program is mentioned, even if no C sources appear
|
---|
108 |
|
---|
109 | * BUILT_SOURCES should not be distributed, even when they appear in
|
---|
110 | another _SOURCES line. [? or maybe just leave this up to the
|
---|
111 | to-be-defined generic distribution method ]
|
---|
112 | must completely revisit the entire BUILT_SOURCES idea
|
---|
113 |
|
---|
114 | * in --cygnus, clean-info not generated at top level
|
---|
115 |
|
---|
116 | * what if an element of a scanned variable looks like
|
---|
117 | $(FOO).$(BAR) ?
|
---|
118 | or some other arbitrary thing?
|
---|
119 | right now we try to cope, but not very well
|
---|
120 |
|
---|
121 | * if `interlock' exists, that should be an error (?)
|
---|
122 | should also warn about using new ylwrap and not old one
|
---|
123 | only do this when looking for ylwrap
|
---|
124 |
|
---|
125 | ** make sure every variable that is used is also defined
|
---|
126 |
|
---|
127 | * make sure `missing' defines are generated
|
---|
128 | * if no AM_INIT_AUTOMAKE, then don't handle `missing' stuff.
|
---|
129 | Yuck!
|
---|
130 | * missing should handle install -d and rmdir -p (for uninstall)
|
---|
131 |
|
---|
132 | * a couple ways to be smarter:
|
---|
133 | - notice when a .c file is a target somewhere, and auto-add it to
|
---|
134 | BUILT_SOURCES
|
---|
135 | - notice a target of the form `.x.y:' and assume it is a suffix rule
|
---|
136 |
|
---|
137 |
|
---|
138 | * NORMAL_INSTALL / NORMAL_UNINSTALL -vs- recursive rules
|
---|
139 | [ requires changes to the standard ]
|
---|
140 |
|
---|
141 | * cross-compilation support:
|
---|
142 | programs built and used by the build process need to be
|
---|
143 | built for CC_FOR_BUILD
|
---|
144 | introduce a new variable for this
|
---|
145 |
|
---|
146 | * if foo.y is a source, foo.h isn't auto-distributed?
|
---|
147 |
|
---|
148 | * copyrights on m4 files, aclocal output
|
---|
149 |
|
---|
150 | * is there a way to add a directory and then have "make" do all the
|
---|
151 | updating? think.
|
---|
152 |
|
---|
153 | * put standards.texi into distribution
|
---|
154 |
|
---|
155 |
|
---|
156 | * should not put texiname_TEXINFOS into distribution
|
---|
157 | should rename this macro anyway, to foo_texi_DEPENDENCIES
|
---|
158 |
|
---|
159 | * *all* installed scripts should support --version, --help
|
---|
160 |
|
---|
161 | For now I guess I'll just have automake give an error if it encounters
|
---|
162 | non-C source in a libtool library specification.
|
---|
163 |
|
---|
164 | * must split $obj into two parts: one for libtool and one for
|
---|
165 | deansification. Otherwise .S files will be deansified!
|
---|
166 |
|
---|
167 | * ansi2knr must currently appear in a directory that has some source
|
---|
168 |
|
---|
169 | * if program has the same name as a target, do something sensible:
|
---|
170 | - if the target is internal, rename it
|
---|
171 | - if the target is mandated (eg, "info"), tell the user
|
---|
172 | consider auto-modifying the program name to work around this
|
---|
173 |
|
---|
174 | * should separate actual options from strictness levels
|
---|
175 | strictness should only cover requirements
|
---|
176 | You should be able to pick and choose options
|
---|
177 |
|
---|
178 | should clean up texinfos.am; one rule is repeated 3 times, but
|
---|
179 | shouldn't be
|
---|
180 |
|
---|
181 | should always use perl -w
|
---|
182 |
|
---|
183 | rewrite in guile (RMS request)
|
---|
184 | at the same time, consider adding a GUI
|
---|
185 | could use the same parsing code for the GUI and the standalone version
|
---|
186 | that means figuring out a better representation of internal state
|
---|
187 | [ that's easy -- anything is better than what we have now ]
|
---|
188 |
|
---|
189 | having just one Makefile for a project would give a big speed increase
|
---|
190 | for a project with many directories, eg glibc. ideally (?) you'd
|
---|
191 | still be able to have a Makefile.am in each directory somehow; this
|
---|
192 | might make editing conceptually easier.
|
---|
193 |
|
---|
194 | * finish up TAGS work
|
---|
195 | * `acinstall'
|
---|
196 | * put parser.h into distribution if "yacc -d" is used
|
---|
197 |
|
---|
198 | * only remove libtool at top level?
|
---|
199 |
|
---|
200 | * clean up source directory by moving stuff into subdirs
|
---|
201 |
|
---|
202 | * consider adding pkglibexecdir, maybe others?
|
---|
203 | requests for pkg-dirs with version included
|
---|
204 |
|
---|
205 | Avoid loops when installing; instead unroll them in automake
|
---|
206 |
|
---|
207 | * for new autoconf:
|
---|
208 | * completely handle multi-":" mode for AC_CONFIG_HEADER
|
---|
209 | * Scan multiple input files when Makefile is generated?
|
---|
210 | This would provide flexibility for large projects; subsumes
|
---|
211 | the "Makefile.tmpl" idea
|
---|
212 |
|
---|
213 | [ can't do this. must explain why in manual.
|
---|
214 | basically, solving all the problems is too hard
|
---|
215 | like: how to remove redundancies between generated .in files
|
---|
216 | instead should implement `include' directive for Makefile.am ]
|
---|
217 | * for multi-":" mode and AC_OUTPUT, it might be good to pick the
|
---|
218 | first input file that has a corresponding .am file.
|
---|
219 |
|
---|
220 | Some long-term projects:
|
---|
221 | * if $(FOO) is used somewhere, ensure FOO is defined, either by
|
---|
222 | user or by automake if possible
|
---|
223 |
|
---|
224 | [ include, += support ]
|
---|
225 | * even better would be allowing targets in different included
|
---|
226 | fragments to be merged. e.g., `install-local'.
|
---|
227 |
|
---|
228 | consider putting all check-* targets onto @check?
|
---|
229 | To support --help/--version checking?
|
---|
230 |
|
---|
231 | take diff-n-query code from libit
|
---|
232 |
|
---|
233 | Per Bothner says:
|
---|
234 | Per> 1) Being able to build a set of non-source programs
|
---|
235 | Per> from source programs, without necessarily linking them together.
|
---|
236 | Per> I.e. one should be able to say something like:
|
---|
237 | Per> dummy_SOURCES=foo.c bar.c
|
---|
238 | Per> and automake should realize that it needs to build foo.o and bar.o.
|
---|
239 | Per> 2) Being intelligent about new kinds of suffixes.
|
---|
240 | Per> If it sees:
|
---|
241 | Per> SUFFIXES = .class .java
|
---|
242 | Per> and a suffix rule of the form:
|
---|
243 | Per> .java.class:
|
---|
244 | Per> then it should be able to realize it can build .class files from
|
---|
245 | Per> .java files, and thus be able to generate a list of
|
---|
246 | Per> .class files from a list of .java source files.
|
---|
247 |
|
---|
248 | !! Must fix require_file stuff. It is really gross, and I don't
|
---|
249 | understand it any more.
|
---|
250 |
|
---|
251 | * error messages should print ``[info blah blah]'' command when a
|
---|
252 | certain part of the standards apply. saw idea in message from
|
---|
253 | Craig Burley. wouldn't it be really cool if compile-mode in Emacs
|
---|
254 | understood this convention, and you could click on such text to
|
---|
255 | go to the appropriate info page? [ I think you can ]
|
---|
256 |
|
---|
257 | Jim's idea: should look for @setfilename and warn if filenames too long
|
---|
258 | * guess split size
|
---|
259 |
|
---|
260 | ** many requests for a way to omit a file from the distribution.
|
---|
261 | Should be done like `!foo' or `~foo' in _SOURCES, etc.
|
---|
262 | Such files should be removed explicitly after the copy step!
|
---|
263 | Doing this requires rewriting macros before generating Makefile.in.
|
---|
264 |
|
---|
265 | from joerg-martin schwarz:
|
---|
266 | -- If Makefile.am contains $(CC), $(COMPILE), $(YLWRAP), ....
|
---|
267 | in an explicitly written rule, you should emit the corresponding
|
---|
268 | Makefile variables automatically.
|
---|
269 |
|
---|
270 | Configuring in the large:
|
---|
271 | * allow hierarchy of dirs to share one aclocal.m4
|
---|
272 | How?
|
---|
273 |
|
---|
274 | consider printing full file name of Makefile.am or configure.in when
|
---|
275 | giving error. This would help for very large trees with many
|
---|
276 | configure.in scripts
|
---|
277 |
|
---|
278 | From the GNU Standards. These things could be checked, and probably
|
---|
279 | should be if --gnu.
|
---|
280 | * Make sure that the directory into which the distribution unpacks (as
|
---|
281 | well as any subdirectories) are all world-writable (octal mode 777).
|
---|
282 | * Make sure that no file name in the distribution is more than 14
|
---|
283 | characters long.
|
---|
284 | * Don't include any symbolic links in the distribution itself.
|
---|
285 | (ditto hard links)
|
---|
286 | * Make sure that all the files in the distribution are world-readable.
|
---|
287 | ** also, check --help output and --version output. Idea from François
|
---|
288 | * standards no longer prohibit ANSI C. What does this imply
|
---|
289 | for the de-ansi-fication feature? [ must keep it -- some users rely on it ]
|
---|
290 |
|
---|
291 | should be able to determine what is built by looking at rules (and
|
---|
292 | configure.in). Then built man pages (eg) could automatically be
|
---|
293 | omitted from the distribution.
|
---|
294 |
|
---|
295 | Idea from Joerg-Martin Schwarz: allow passing different -D flags to
|
---|
296 | different compiles. This can be done, but with the restriction that a
|
---|
297 | .c cannot appear in 2 different "objects" (programs/libraries)
|
---|
298 | compiled with different -D options (because -c and -o do not always
|
---|
299 | work together and parallel makes must work). This could be
|
---|
300 | implemented by noticing whenever a ".o" target with no rules is being
|
---|
301 | emitted, and adding the appropriate compilation rule as appropriate.
|
---|
302 | This should work with targets from Makefile.am as well as from .P
|
---|
303 | files, which means rewriting so that the Makefile.am contents aren't
|
---|
304 | copied into the output immediately.
|
---|
305 | [ this could be probably done more directly by examining the sources
|
---|
306 | as we scan Makefile.am ]
|
---|
307 |
|
---|
308 | Henrik Frystyk Nielsen says:
|
---|
309 | Henrik> 4) Flags like --include-deps are lost when you make changes to
|
---|
310 | Henrik> Makefile.am files and automake is run automatically. It would
|
---|
311 | Henrik> be nice to keep these flags as I now have to redo everything
|
---|
312 | Henrik> manually.
|
---|
313 | ... what about other options here too?
|
---|
314 |
|
---|
315 | Think about: maybe "make check" should just bomb if error occurs?
|
---|
316 | Then user must use "make -k check". This is probably more natural.
|
---|
317 |
|
---|
318 | Consider: "cvs" option adds some cvs-specific rules?
|
---|
319 |
|
---|
320 | Right now, targets generated internally (eg "install") are not
|
---|
321 | overridable by user code. This should probably be possible, even
|
---|
322 | though it isn't very important. This could be done by generating all
|
---|
323 | internal rules via a function call instead of just appending to
|
---|
324 | $output_rules.
|
---|
325 | [ this will be harder to implement when scanning a rule like all-recursive
|
---|
326 | from subdirs.am ]
|
---|
327 |
|
---|
328 | * Should be a way to have "nobuild_PROGRAMS" which aren't even built,
|
---|
329 | but which could be by running the magic make command.
|
---|
330 |
|
---|
331 | Other priorities:
|
---|
332 | * Must rewrite am_install_var. Should break into multiple functions.
|
---|
333 | This will allow the callers to be a little smarter.
|
---|
334 | * Rewrite clean targets.
|
---|
335 | * Must rewrite error handling code. Right now it is a real mess
|
---|
336 | Should fix up require_file junk at the same time
|
---|
337 |
|
---|
338 | djm wants ``LINKS'' variable; list of things to link together after
|
---|
339 | install. In BSD environment, use:
|
---|
340 | LINKS = from1 to1 from2 to2 ...
|
---|
341 |
|
---|
342 | Need way to say there are no suffixes in a Makefile (Franc,ois'
|
---|
343 | "override" idea suffices here)
|
---|
344 |
|
---|
345 | Check to make sure various scripts are executable (IE when looking for
|
---|
346 | them in a directory)
|
---|
347 |
|
---|
348 | Use recode in dist target when MAINT_CHARSET specified. Read caveats
|
---|
349 | in automake.in before doing this. Note the same problem used to apply
|
---|
350 | to the no-dependencies option; maybe it still should? Note also that
|
---|
351 | each Makefile.am must be rewritten at "make dist" time if
|
---|
352 | MAINT_CHARSET and DIST_CHARSET are not identical. NOTE: gettext must
|
---|
353 | arrange for all .po files not to be recoded. In the long term this
|
---|
354 | might be a problem (consider when some systems use Unicode but the
|
---|
355 | rest do not)
|
---|
356 | MAINT_CHARSET *must* be local to each Makefile.am, to enable
|
---|
357 | merged distributions.
|
---|
358 | DIST_CHARSET must be passed down to subdir makes during a "make dist"
|
---|
359 |
|
---|
360 | Handle dist-zoo. Generally add more DOS support. Maybe run "doschk"
|
---|
361 | (why isn't this merged with "pathchk"?) when doing a dist. Do
|
---|
362 | whatever else François says here...
|
---|
363 |
|
---|
364 | Add support for html via an option. Use texi2html. Use
|
---|
365 | "html_TEXINFOS", and htmldir = .../html. Include html files in
|
---|
366 | distribution. Also allow "html_DATA", for raw .html files.
|
---|
367 | [ when will texinfo directly support html? ]
|
---|
368 |
|
---|
369 | uninstall and pkg-dirs should rm -rf the dir.
|
---|
370 |
|
---|
371 | a potential bug: configure puts "blah.o" into LIBOBJS, thus implying
|
---|
372 | these files can't be de-ansified. Not a problem?
|
---|
373 | [ fix by using ansi2knr wrapper program ]
|
---|
374 |
|
---|
375 | In general most .am files should be merged into automake. For
|
---|
376 | instance all the "clean" targets could be merged by keeping lists of
|
---|
377 | things to be removed. This would be a lot nicer looking. Note that
|
---|
378 | the install targets probably should not be merged; it is sometimes
|
---|
379 | useful to only install a small part.
|
---|
380 |
|
---|
381 | Clean up the output:
|
---|
382 | * Order rules sensibly
|
---|
383 | * Ensure every line has a purpose. Omit unused stuff
|
---|
384 | * Eliminate extraneous rules when possible (eg 'install-am' stuff)
|
---|
385 | * Make sure vertical spacing is correct
|
---|
386 | Omit program transform vars from header if no program installed. This
|
---|
387 | is currently pretty hard to do. (But with beautification code it
|
---|
388 | would probably be easy)
|
---|
389 |
|
---|
390 | Lex, yacc support:
|
---|
391 | * It would be nice to automatically support using bison's better features
|
---|
392 | to rename the output files. This requires autoconf support
|
---|
393 | * Consider supporting syntax from autoconf "derived:source", eg:
|
---|
394 | y.tab.c:perly.y
|
---|
395 | for yacc and lex source
|
---|
396 | * what if you use flex and the option to avoid -lfl?
|
---|
397 | should support this?
|
---|
398 |
|
---|
399 | Multi-language support:
|
---|
400 | * should have mapping of file extensions to languages
|
---|
401 | * should automatically handle the linking issue (special-case C++)
|
---|
402 | * must get compile rules for various languages; FORTRAN probably
|
---|
403 | most important unimplemented language
|
---|
404 | This should be integrated in some way with Per's idea.
|
---|
405 | Eg .f.o rules should be recognized & auto-handled in _SOURCES
|
---|
406 | That way any random language can be treated with C/C++ on a first-class
|
---|
407 | basis (maybe)
|
---|
408 |
|
---|
409 | It might be cool to generate .texi dependencies by grepping for
|
---|
410 | @include. (If done, it should be done the same way C dependencies are
|
---|
411 | done)
|
---|
412 |
|
---|
413 | It would be good to check some parts of GNU standards. Already check
|
---|
414 | for install-sh and mkinstalldirs. What else is required to be in
|
---|
415 | package by GNU standards or by automake?
|
---|
416 | Some things for --strictness=gnits:
|
---|
417 | * "cd $(foo); something" is an error in a rule. Should be:
|
---|
418 | "cd $(foo) && something"
|
---|
419 | * Look for 'ln -s' and warn about using $(LN) and AC_PROG_LN_S
|
---|
420 | * Look for $(LN) and require AC_PROG_LN_S
|
---|
421 |
|
---|
422 | Auto-distribute "ChangeLog.[0-9]+"? "ChangeLog.[a-z]+"?
|
---|
423 |
|
---|
424 | Internationalize. [ gettext doesn't have the necessary machinery yet ]
|
---|
425 | am_error should use printf-style arguments (for eventual gettext scheme)
|
---|
426 |
|
---|
427 | François says the ordering of files in a distribution should be as follows:
|
---|
428 | * README
|
---|
429 | * source files
|
---|
430 | * derived files
|
---|
431 | I agree, but I don't see how to implement this yet.
|
---|
432 | It might be easier if "derived files" is limited to those that
|
---|
433 | Automake itself knows about, eg output of yacc.
|
---|
434 |
|
---|
435 | Check all source files to make sure that FSF address is up-to-date.
|
---|
436 | --gnits or --gnu only.
|
---|
437 |
|
---|
438 | Merge each -vars.am file with corresponding ".am" file. Can do this
|
---|
439 | because of changes to &file_contents.
|
---|
440 |
|
---|
441 | Should libexec programs have the name transform done on them?
|
---|
442 |
|
---|
443 | Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are
|
---|
444 | together and rules are in the usual order.
|
---|
445 |
|
---|
446 | Make the output minimal: only output definitions for variables that
|
---|
447 | are used.
|
---|
448 |
|
---|
449 | djm says:
|
---|
450 | David> To avoid comments like the one about subdirs getting buried in
|
---|
451 | David> the middle of a Makefile.in, how about pushing comments that
|
---|
452 | David> start with ### to the top of the Makefile.in (in order)? Sort
|
---|
453 | David> of like how Autoconf uses diversions to force initialization
|
---|
454 | David> code to the top of configure.
|
---|
455 |
|
---|
456 | Karl Berry says:
|
---|
457 | Karl> 2) Your Makefile variable names are generally uppercase, but GNU
|
---|
458 | Karl> generally uses lowercase. Not that it matters :-).
|
---|
459 |
|
---|
460 | ================================================================
|
---|
461 |
|
---|
462 | Stuff for aclocal:
|
---|
463 |
|
---|
464 | probably should put each group of m4 files into a subdir owned by the
|
---|
465 | containing application.
|
---|
466 |
|
---|
467 | ================================================================
|
---|
468 |
|
---|
469 | Document:
|
---|
470 |
|
---|
471 | AM_MISSING_PROG
|
---|
472 |
|
---|
473 | how to use the generated makefiles
|
---|
474 | - standard targets
|
---|
475 | - required targets
|
---|
476 | - NORMAL_INSTALL junk
|
---|
477 |
|
---|
478 | what goes in AC_CONFIG_AUX_DIR
|
---|
479 |
|
---|
480 | multi-":" mode in AC_OUTPUT -- automake only looks at the first file
|
---|
481 | also a note on how a .am file is found in this case
|
---|
482 |
|
---|
483 | rationale for avoiding
|
---|
484 | make CFLAGS="$CFLAGS" ...
|
---|
485 | in subdirs make rule
|
---|
486 |
|
---|
487 | a package that installs its own aclocal macros
|
---|
488 |
|
---|
489 | write example of using automake with dejagnu
|
---|
490 | follow calc example in dejagnu docs
|
---|
491 |
|
---|
492 | document which variables are actually scanned and which are not.
|
---|
493 |
|
---|
494 | Document customary ordering of Makefile.am. From François.
|
---|
495 |
|
---|
496 | Should include extended version of diagram from Autoconf (suggested by
|
---|
497 | Greg Woods)
|
---|
498 |
|
---|
499 | Make a definition of the term "source"
|
---|
500 |
|
---|
501 | document how to use Automake with CVS. Idea from Mark Galassi. Also
|
---|
502 | include Greg Woods' more sophisticated "cvs-dist" target.
|
---|
503 |
|
---|
504 | document rebuilding configure. CONFIGURE_DEPENDENCIES
|
---|
505 | CONFIG_STATUS_DEPENDENCIES
|
---|
506 |
|
---|
507 | -- must document all variables that are supposed
|
---|
508 | to be public knowledge
|
---|
509 |
|
---|
510 | must document the targets required for integration with
|
---|
511 | non-automake-using subdirs
|
---|
512 |
|
---|
513 | document the "make SHELL='/bin/sh -x'" trick for debugging
|
---|
514 |
|
---|
515 | section on relationship to GNU make. include notes on parallel makes
|
---|
516 |
|
---|
517 | add a concept index
|
---|
518 |
|
---|
519 | move discussion of cygwin32, etags, mkid under other gnu tools
|
---|
520 |
|
---|
521 | CCLD, CXXLD, FLD
|
---|
522 |
|
---|
523 | ================================================================
|
---|
524 |
|
---|
525 | Things to do for gcc:
|
---|
526 |
|
---|
527 | Regularize dependency generation. Add new flags:
|
---|
528 |
|
---|
529 | -MH Generate a dummy dependency for each header file mentioned.
|
---|
530 | -MT NAME
|
---|
531 | Set name of target
|
---|
532 | -MF NAME
|
---|
533 | Set name of output file
|
---|
534 |
|
---|
535 | Then automake can use -MD -MH -MT 'foo.o foo.lo' -MF .deps/...
|
---|
536 |
|
---|
537 | ================================================================
|
---|
538 |
|
---|
539 | Things to do for autoconf:
|
---|
540 |
|
---|
541 | * patch autoreconf to run automake and aclocal. I've done this but it is
|
---|
542 | not really available. It can't be made available until automake
|
---|
543 | is officially released
|
---|
544 |
|
---|
545 | ================================================================
|
---|
546 |
|
---|
547 | Libraries:
|
---|
548 |
|
---|
549 | * Should support standalone library along with subdir library in same
|
---|
550 | Makefile.am. Maybe: turn off "standalone" mode if library's Makefile.am
|
---|
551 | is not only one specd? [ add an option for this ]
|
---|
552 |
|
---|
553 | ================================================================
|
---|
554 |
|
---|
555 | Longer term:
|
---|
556 |
|
---|
557 | Would it be useful to integrate in some way with the Debian package
|
---|
558 | building utility? Must check. maybe it would be possible to deal
|
---|
559 | with all the different package utilities somehow. Lately I've been
|
---|
560 | hearing good things about the RedHat packaging utilities. Why are
|
---|
561 | there so many of these? Are they fun to write or something?
|
---|
562 | The RedHat package utility is called RPM; see
|
---|
563 | ftp://ftp.redhat.com/pub/code/rpm
|
---|
564 | It actually has problems, like no configure script and no documentation.
|
---|
565 |
|
---|
566 | For Cygnus it would probably be good to be able to handle the native
|
---|
567 | package utility on each platform. There are probably 3 or 4 of these
|
---|
568 | (sysv, solaris?, aix?)
|
---|
569 |
|
---|
570 | tcl/unix/Makefile.in has some code to generate a Solaris package.
|
---|
571 |
|
---|
572 | Automake probably can't do all of this on its own. A new tool might
|
---|
573 | be a better idea
|
---|
574 |
|
---|
575 | I have some notes from a Debian developer on how the integration
|
---|
576 | should work
|
---|
577 |
|
---|
578 | ================================================================
|
---|
579 |
|
---|
580 | A tool to guess what the local Makefile.am should look like:
|
---|
581 | (see Gord's Maint program!)
|
---|
582 |
|
---|
583 | * Probably integrate with autoscan
|
---|
584 | * Use various simple rules to determine what to do:
|
---|
585 | * get name of top directory, sans version info
|
---|
586 | * search for .c files with 'main' in them
|
---|
587 | * if in main.c, use directory name for program
|
---|
588 | * if in more than one, generate multiple programs
|
---|
589 | * if not found, generate a library named after directory
|
---|
590 | * order subdir searches correctly: lib first, src last
|
---|
591 | * assume 'testsuite' dir means we are using dejagnu
|
---|
592 | * maybe be smart about reading existing Makefile.am, so tool
|
---|
593 | can be run for incremental changes? You could imagine:
|
---|
594 |
|
---|
595 | Makefile.am:
|
---|
596 | autoproject --incremental
|
---|
597 |
|
---|
598 | ================================================================
|
---|
599 |
|
---|
600 | Stuff NOT to do, and why:
|
---|
601 |
|
---|
602 | consider auto-including any file that matches "*.in".
|
---|
603 | [ no: po/Makefile.in shouldn't be included ]
|
---|
604 |
|
---|
605 | must look at mkid to see how it works (for subdir usage)
|
---|
606 | [ right now, it doesn't. i don't see a simple fix right now ]
|
---|
607 |
|
---|
608 | if configure.in not found, move up a directory and try again? This
|
---|
609 | could eliminate a common source of problems.
|
---|
610 | [ this is just a bad idea ]
|
---|
611 |
|
---|
612 | * scripts are installed in $exec_prefix/bin, not $prefix/bin
|
---|
613 | Bug or feature?
|
---|
614 | [ the consensus on Gnits is that this isn't required.
|
---|
615 | doubters can work around it anyway ]
|
---|
616 |
|
---|
617 | * make the auto-dep code crash if GNU make not in use?
|
---|
618 | (doesn't it already?)
|
---|
619 |
|
---|
620 | Looked at a program called 'ezmake', which seems to do something
|
---|
621 | similar. The only idea there that is possibly worth stealing is using
|
---|
622 | globs in definitions. Also has negations. Eg in a directory with
|
---|
623 | files a.c, b.c and c.c, the line:
|
---|
624 | foo_SOURCES = *.c ~c.c
|
---|
625 | would be equivalent to:
|
---|
626 | foo_SOURCES = a.c b.c
|
---|
627 | Is this worth implementing?
|
---|
628 | [ No... it is more reliable to spell everything out. ]
|
---|
629 |
|
---|
630 | Scan source directories and warn about missing files, eg .c/.h files
|
---|
631 | that aren't mentioned?
|
---|
632 | [ distcheck makes this less useful ]
|
---|
633 |
|
---|
634 | * quoting bugs
|
---|
635 | - how to install file with a space in its name?
|
---|
636 | [ don't bother with this -- make is just too losing ]
|
---|