diff options
Diffstat (limited to 'old/TODO')
-rw-r--r-- | old/TODO | 504 |
1 files changed, 504 insertions, 0 deletions
diff --git a/old/TODO b/old/TODO new file mode 100644 index 000000000..f8e4754df --- /dev/null +++ b/old/TODO @@ -0,0 +1,504 @@ +the new YFLAGS code doesn't correctly handle srcdir + +allow foo_NAME to rename an object (library or program) +at build/install time + +remove _LTLIBRARIES and just use _LIBRARIES +then use this for zip/jar as well + +add an error if the user makefile.am violates our + namespace rules + +we need a document describing automake from the end user's point of view +eg describe INSTALL_HEADER there, among other things + +* maintainer-clean + +Akim: +> @@ -31,5 +31,9 @@ +> DISTCLEAN -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) +> +> maintainer-clean-generic: +> +## FIXME: shouldn't we really print these messages before running +> +## the dependencies? +> + @echo "This command is intended for maintainers to use" +> + @echo "it deletes files that may require special tools to rebuild." +> -rm -f Makefile.in + +Tom: +> I'd like to eventually fix the FIXME comment by having +> maintainer-clean look like: +> +> maintainer-clean: +> @echo ... +> $(MAKE) whatever +> +> We're left with the question of whether we should repeat them in every +> subdir. + +* +Alexandre Oliva: +> Hmm... Interesting. It must have been a side effect of the enabling +> of forced `relink' on GNU/Linux/x86. Anyway, on platforms that +> actually require relinking, this problem remains, and I see no way to +> overcome it other than arranging for automake to install libraries +> before executables, as you suggest. This shouldn't be a big problem, +> anyway. +> +> A bigger problem could show up if two libraries in the same directory, +> one dependent on the other, are installed concurrently. If relinking +> is needed for the dependent library, we have a problem. It appears to +> me that user will have to live without `make -j install', in this +> case. + +Alex Hornby +> Here's an Automake patch and changelog entry allow make -j install on +> such degenerate systems (and Linux with buggy libtool <g>) +> +> If you install to locations other that bin_ and lib_ then a larger fix +> is necessary, but this should fix the 90% case. + +* think about how per-object flags should work. in particular: + * how should they be specified? + using the object name is confusing when .lo/.obj in use + however, the object name provides a nice interaction with + per-exe flags + * how should they interact with per-executable flags? + [ this is probably a feature in search of a problem ] + +* cross-compilation support: + programs built and used by the build process need to be + built for CC_FOR_BUILD + introduce a new prefxi for this, e.g. `build_PROGRAMS' + [ we can do this in an automatic way I think. + unfortunately it isn't that useful until autoconf has support + for this sort of thing as well ] + +* one performance enhancement would be to have autoconf write + a single file containing all the macro assignments. + then read this file via `include' + unfortunately this can't be done because of conditionals + -- but it could be made to work if we also changed: + * automake to rewrite @FOO@ to $(FOO), and + * the implementation of conditionals to rely on some new + config.status magic + +* support prog_LIBS as override for LIBS + +* Test subdir-objects option with yacc, lex, ansi2knr + Our locking scheme won't prevent a parallel make from losing + if there are two `bar.o' files and the timing is just right + This only happens with parallel make and no-`-c -o' compiler, + so it probably isn't very important + `-c -o' when doing libtool + try to find a losing compiler and see if it really works. + (actually: hack config.cache and do it) + +* per-exe flags +** LIBOBJS shouldn't be used when there are per-exe flags (?) + +* Allow creation of Java .zip/.jar files in natural way + If you are building a compiled Java library, then the .zip/.jar + ought to be made automatically. + +* examine possibility of using any character in a macro name + and rewriting names automatically. this means we must rewrite + all references as well. + [ this is a 2.0-style feature ] + +* `distcheck' and `dist' should depend on `all' + +* Add code to generate foo-config script like gnome, gtk + +* document user namespace for macro/target names + adopt some conventions and use uniformly + [ this is a good thing for the rewrite ] + +* distclean must remove config.status + can't this cause problems for maintainer-clean? + shouldn't maintainer-clean print the message before running + any part of the make? (just to slow things down long enough + for the user to stop it) + (maybe doesn't matter since people who even know about + maintainer-clean already have a clue) + +* reintroduce AM_FUNC_FNMATCH which sets LIBOBJS + Then have automake know about fnmatch.h. + [ probably should wait for autoconf to get right functionality ] + +* "make diff" capability + look at gcc's Makefile.in to see what to do + or look at maint program + +* in --cygnus, clean-info not generated at top level + +* what if an element of a scanned variable looks like + $(FOO).$(BAR) ? + or some other arbitrary thing? + right now we try to cope, but not very well + [ this is only of theoretical interest for now ] + [ We now have an 'inner_expand' option to traverse_recursively, + but it is not yet used. ] + +* make sure every variable that is used is also defined + [ we don't really look at variable uses in detail. + 2.0 thing ] + +* make sure `missing' defines are generated + +* missing should handle install -d and rmdir -p (for uninstall) + +* NORMAL_INSTALL / NORMAL_UNINSTALL -vs- recursive rules + [ requires changes to the standard ] + +* should not put texiname_TEXINFOS into distribution + should rename this macro anyway, to foo_texi_DEPENDENCIES + +* For now I guess I'll just have automake give an error if it encounters +non-C source in a libtool library specification. + +* if program has the same name as a target, do something sensible: + - if the target is internal, rename it + - if the target is mandated (eg, "info"), tell the user + consider auto-modifying the program name to work around this + +* should separate actual options from strictness levels + strictness should only cover requirements + You should be able to pick and choose options + +having just one Makefile for a project would give a big speed increase +for a project with many directories, eg glibc. ideally (?) you'd +still be able to have a Makefile.am in each directory somehow; this +might make editing conceptually easier. + +* finish up TAGS work + +* only remove libtool at top level? + +* clean up source directory by moving stuff into subdirs + +* consider adding other variables similar to pkglibexecdir? + requests for pkg-dirs with version included + +Avoid loops when installing; instead unroll them in automake +[ Impossible when @AC_SUBST@ values are used. ] + +Some long-term projects: +* if $(FOO) is used somewhere, ensure FOO is defined, either by + user or by automake if possible + +[ include, += support ] +* even better would be allowing targets in different included + fragments to be merged. e.g., `install-local'. + +consider putting all check-* targets onto @check? + +take diff-n-query code from libit + +Per Bothner says: +Per> 1) Being able to build a set of non-source programs +Per> from source programs, without necessarily linking them together. +Per> I.e. one should be able to say something like: +Per> dummy_SOURCES=foo.c bar.c +Per> and automake should realize that it needs to build foo.o and bar.o. +Per> 2) Being intelligent about new kinds of suffixes. +Per> If it sees: +Per> SUFFIXES = .class .java +Per> and a suffix rule of the form: +Per> .java.class: +Per> then it should be able to realize it can build .class files from +Per> .java files, and thus be able to generate a list of +Per> .class files from a list of .java source files. +[What Per wanted here was a way to have automate automatically follow +suffix rules. So for instance if you had a `.x.y:' rule, and automake +saw a `.x' file, it would automatically build and install the +corresponding `.y' file.] + +Jim's idea: should look for @setfilename and warn if filenames too long +* guess split size + +from joerg-martin schwarz: + -- If Makefile.am contains $(CC), $(COMPILE), $(YLWRAP), .... + in an explicitly written rule, you should emit the corresponding + Makefile variables automatically. + +From the GNU Standards. These things could be checked, and probably +should be if --gnu. +* Make sure that the directory into which the distribution unpacks (as +well as any subdirectories) are all world-writable (octal mode 777). +* Make sure that no file name in the distribution is more than 14 +characters long. +* Don't include any symbolic links in the distribution itself. + (ditto hard links) +* Make sure that all the files in the distribution are world-readable. + +should be able to determine what is built by looking at rules (and +configure.in). Then built man pages (eg) could automatically be +omitted from the distribution. + +Right now, targets generated internally (eg "install") are not +overridable by user code. This should probably be possible, even +though it isn't very important. This could be done by generating all +internal rules via a function call instead of just appending to +$output_rules. + [ this will be harder to implement when scanning a rule like all-recursive + from subdirs.am ] + +Other priorities: +* Must rewrite am_install_var. Should break into multiple functions. + This will allow the callers to be a little smarter. +* Rewrite clean targets. +* Fix up require_file junk. + +djm wants ``LINKS'' variable; list of things to link together after +install. In BSD environment, use: + LINKS = from1 to1 from2 to2 ... + +Need way to say there are no suffixes in a Makefile (Franc,ois' +"override" idea suffices here) + +Check to make sure various scripts are executable (IE when looking for +them in a directory) + +Add support for html via an option. Use texi2html. Use +"html_TEXINFOS", and htmldir = .../html. Include html files in +distribution. Also allow "html_DATA", for raw .html files. + [ when will texinfo directly support html? ] +See also Karl Berry's message on a roadmap for a "info -> html" +transition: +<http://lists.gnu.org/archive/html/texinfo-devel/2012-03/msg00018.html> + +uninstall and pkg-dirs should rm -rf the dir. + +In general most .am files should be merged into automake. For +instance all the "clean" targets could be merged by keeping lists of +things to be removed. This would be a lot nicer looking. Note that +the install targets probably should not be merged; it is sometimes +useful to only install a small part. + +* Lex, yacc support: +** It would be nice to automatically support using bison's better features + to rename the output files. This requires autoconf support +** Consider supporting syntax from autoconf "derived:source", eg: + y.tab.c:perly.y + for yacc and lex source +** what if you use flex and the option to avoid -lfl? + should support this? + +* Multi-language support: +** should have mapping of file extensions to languages +** should automatically handle the linking issue (special-case C++) +** must get compile rules for various languages; FORTRAN probably + most important unimplemented language +This should be integrated in some way with Per's idea. +Eg .f.o rules should be recognized & auto-handled in _SOURCES +That way any random language can be treated with C/C++ on a first-class +basis (maybe) + +It might be cool to generate .texi dependencies by grepping for +@include. (If done, it should be done the same way C dependencies are +done) +[ Ask Karl Berry for a -M option to makeinfo and texi2dvi? ] + +It would be good to check some parts of GNU standards. Already check +for install-sh and mkinstalldirs. What else is required to be in +package by GNU standards or by automake? +Some things for --strictness=gnits: +* "cd $(foo); something" is an error in a rule. Should be: + "cd $(foo) && something" +* Look for 'ln -s' and warn about using $(LN_S) and AC_PROG_LN_S +* Look for $(LN_S) and require AC_PROG_LN_S + +Auto-distribute "ChangeLog.[0-9]+"? "ChangeLog.[a-z]+"? + +Check all source files to make sure that FSF address is up-to-date. +--gnits or --gnu only. + +Merge each -vars.am file with corresponding ".am" file. Can do this +because of changes to &file_contents. + +Should libexec programs have the name transform done on them? + +Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are +together and rules are in the usual order. + +djm says: +David> To avoid comments like the one about subdirs getting buried in +David> the middle of a Makefile.in, how about pushing comments that +David> start with ### to the top of the Makefile.in (in order)? Sort +David> of like how Autoconf uses diversions to force initialization +David> code to the top of configure. + +================================================================ + +Stuff for aclocal: + +probably should put each group of m4 files into a subdir owned by the +containing application. + +================================================================ + +Document: + +AM_MISSING_PROG + +how to use the generated makefiles + - standard targets + - required targets + - NORMAL_INSTALL junk + +rationale for avoiding + make CFLAGS="$CFLAGS" ... +in subdirs make rule + +write example of using automake with dejagnu +follow calc example in dejagnu docs + +document which variables are actually scanned and which are not. + +Document customary ordering of Makefile.am. From François. + +Should include extended version of diagram from Autoconf (suggested by +Greg Woods) + +Make a definition of the term "source" + +document how to use Automake with CVS. Idea from Mark Galassi. Also +include Greg Woods' more sophisticated "cvs-dist" target. + +-- must document all variables that are supposed + to be public knowledge + +must document the targets required for integration with +non-automake-using subdirs + +document the "make SHELL='/bin/sh -x'" trick for debugging + +section on relationship to GNU make. include notes on parallel makes + +add a concept index + +move discussion of cygwin32, etags, mkid under other gnu tools + +CCLD, CXXLD, FLD + +================================================================ + +Libraries: + +* Should support standalone library along with subdir library in same + Makefile.am. Maybe: turn off "standalone" mode if library's Makefile.am + is not only one specd? [ add an option for this ] + +================================================================ + +Longer term: + +Would it be useful to integrate in some way with the Debian package +building utility? Must check. maybe it would be possible to deal +with all the different package utilities somehow. Lately I've been +hearing good things about the RedHat packaging utilities. Why are +there so many of these? Are they fun to write or something? +The RedHat package utility is called RPM; see + ftp://ftp.redhat.com/pub/code/rpm +It actually has problems, like no configure script and no documentation. + +For Cygnus it would probably be good to be able to handle the native +package utility on each platform. There are probably 3 or 4 of these +(sysv, solaris?, aix?) + +tcl/unix/Makefile.in has some code to generate a Solaris package. + +Automake probably can't do all of this on its own. A new tool might +be a better idea + +I have some notes from a Debian developer on how the integration +should work + +================================================================ + +A tool to guess what the local Makefile.am should look like: +(see Gord's Maint program!) + +* Probably integrate with autoscan +* Use various simple rules to determine what to do: + * get name of top directory, sans version info + * search for .c files with 'main' in them + * if in main.c, use directory name for program + * if in more than one, generate multiple programs + * if not found, generate a library named after directory + * order subdir searches correctly: lib first, src last + * assume 'testsuite' dir means we are using dejagnu +* maybe be smart about reading existing Makefile.am, so tool + can be run for incremental changes? You could imagine: + + Makefile.am: + autoproject --incremental + +================================================================ + +Stuff NOT to do, and why: + +consider auto-including any file that matches "*.in". + [ no: po/Makefile.in shouldn't be included ] + +must look at mkid to see how it works (for subdir usage) + [ right now, it doesn't. i don't see a simple fix right now ] + +if configure.in not found, move up a directory and try again? This +could eliminate a common source of problems. + [ this is just a bad idea ] + +* scripts are installed in $exec_prefix/bin, not $prefix/bin + Bug or feature? + [ the consensus on Gnits is that this isn't required. + doubters can work around it anyway ] + +Scan source directories and warn about missing files, eg .c/.h files +that aren't mentioned? + [ distcheck makes this less useful ] + +* quoting bugs + - how to install file with a space in its name? + [ don't bother with this -- make is just too losing ] + +* notice when a .c file is a target somewhere, and auto-add it to + BUILT_SOURCES + [ BUILT_SOURCES are for files that need to be built before anything + else because of hidden dependencies (something .c files are + unlikely to be) ] + +* Scan multiple input files when Makefile is generated? + This would provide flexibility for large projects; subsumes + the "Makefile.tmpl" idea + [ can't do this. must explain why in manual. + basically, solving all the problems is too hard + like: how to remove redundancies between generated .in files + instead should implement `include' directive for Makefile.am ] + +* Should be a way to have "nobuild_PROGRAMS" which aren't even built, + but which could be by running the magic make command. + [ We already have EXTRA_PROGRAMS for this. ] + + +* copyright notice + +Copyright 1994-2012 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + + +Local Variables: +mode: outline +End: |