| 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 ]
|
|---|