Bug fixes
[automake.git] / TODO
blob86e6fbd9fe891ebc887b5fed286bab102347a162
1 Top priorities:
2 * DOCUMENT
3 * Must rewrite am_install_var.  Should break into multiple functions.
4   This will allow the callers to be a little smarter.
5 * Rewrite clean targets.
6 * Expand test suite.
8 BUGS: 
10 NOTE: in handle_merge_targets, 'all' handling is still wrong wrt
11 subdirs.  'install' should always depend on "local all", whether 'all'
12 or 'all-am'.  Actually, something perplexing is going on.  Why does
13 "make install" in automake cause the recursion to happen twice??
14 ANSWER: install-binSCRIPTS depends on 'all'.  How to fix??
16 Check all require_file errors to see if any should reference a line in
17 Makefile.am or configure.in.
19 Makefile.in must now depend on configure.in
21 Consider using Ulrich's test suite idea
22 If so, also allow support for Cygnus-style dejagnu-based test suites
23 via an option
25 when in subdir that itself has subdirs, might need to do
26 include-by-reference TAGS file.
28 Think about ways to make automake fit better with Cygnus-style trees.
30 Use recode in dist target when MAIN_CHARSET specified.  Read caveats
31 in automake.in before doing this.  Note the same problem used to apply
32 to the no-dependencies option; maybe it still should?  Note also that
33 each Makefile.am must be rewritten at "make dist" time if
34 MAINT_CHARSET and DIST_CHARSET are not identical.  NOTE: gettext must
35 arrange for all .po files not to be recoded.  In the long term this
36 might be a problem (consider when some systems use Unicode but the
37 rest do not)
39 Handle dist-zoo and dist-zip.  Generally add more DOS support.  Maybe
40 run "doschk" (why isn't this merged with "pathchk"?) when doing a
41 dist.  Do whatever else François says here...
43 Add support for html via an option.  Use texi2html.  Use
44 "html_TEXINFOS", and htmldir = .../html.  Include html files in
45 distribution.  Also allow "html_DATA", for raw .html files.
46   [ when will texinfo support html? ]
48 if configure.in not found, move up a directory and try again?  This
49 could eliminate a common source of problems.
51 uninstall and pkg-dirs should rm -rf the dir.
53 a potential bug: configure puts "blah.o" into LIBOBJS, thus implying
54 these files can't be de-ansified.  Not a problem?
56 In general most .am files should be merged into automake.  For
57 instance all the "clean" targets could be merged by keeping lists of
58 things to be removed.  This would be a lot nicer looking.  Note that
59 the install targets probably should not be merged; it is sometimes
60 useful to only install a small part.
62 Clean up the output:
63 * Order rules sensibly
64 * Ensure every line has a purpose.  Omit unused stuff
65 * Eliminate extraneous rules when possible (eg 'install-am' stuff)
66 * Make sure vertical spacing is correct
67 * pretty-print targets
68 * regularize how backslash-newline is done.  Just one space between text
69   and backslash should be the rule.  Update makefile-mode to allow this.
70   (set column to 0, probably)
72 It should be possible to have ansi2knr in just one place in a package.
73 Jim Meyering says just rely on configure to make links as appropriate.
74 Maybe introduce syntax like this:
75         AUTOMAKE_OPTIONS = ../ansi2knr
78 Lex, yacc support:
79 * It would be nice to automatically support using bison's better features
80   to rename the output files.  This requires autoconf support
81 * Consider supporting syntax from autoconf "derived:source", eg:
82         y.tab.c:perly.y
83   for yacc and lex source
84 * if AC_PROG_LEX used, ensure LEXLIB is in foo_LDADD
86 Write autoconf macro to do all work necessary for automake.  Eg define
87 PACKAGE, VERSION, etc.
89 'maintainer-clean' should "rm -rf .deps".  Ditto distclean
90 Should look for clean-local targets in Makefile.am.
92 Think about writing a small tool to guess what the local Makefile.am
93 should look like.
95 It might be cool to generate .texi dependencies by grepping for
96 @include.  (If done, it should be done the same way C dependencies are
97 done)
99 It would be good to check some parts of GNU standards.  Already check
100 for install-sh and mkinstalldirs.  What else is required to be in
101 package by GNU standards or by automake?
102 Some things for --strictness=gnits:
103 * "cd $(foo); something" is an error in a rule.  Should be:
104   "cd $(foo) && something"
106 automake.in: should ".cc" really -> "$o"?  This doesn't really seem
107 right, but maybe it is so names can be rewritten uniformly?  Must
108 check
110 Auto-distribute "ChangeLog.[0-9]+"?  "ChangeLog.[a-z]+"?
112 Internationalize. [ gettext doesn't have the necessary machinery yet ]
113 am_error should use printf-style arguments (for eventual gettext scheme)
115 François says the ordering of files in a distribution should be as follows:
116 * README
117 * source files
118 * derived files
119 I agree, but I don't see how to implement this yet.
120 It might be easier if "derived files" is limited to those that
121 Automake itself knows about, eg output of yacc.
123 Should COPYING.LIB be distributed?
125 Check all source files to make sure that FSF address is up-to-date.
126 --gnits or --gnu only.
128 Merge each -vars.am file with corresponding ".am" file.  Can do this
129 because of changes to &file_contents.
131 Looked at a program called 'ezmake', which seems to do something
132 similar.  The only idea there that is possibly worth stealing is using
133 globs in definitions.  Also has negations.  Eg in a directory with
134 files a.c, b.c and c.c, the line:
135         foo_SOURCES = *.c ~c.c
136 would be equivalent to:
137         foo_SOURCES = a.c b.c
138 Is this worth implementing?
140 Should libexec programs have the name transform done on them?
142 Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are
143 together and rules are in the usual order.
145 Make the output minimal: only output definitions for variables that
146 are used.
148 Look at dist's jmake for ideas.  dist is the name of the distribution
149 including Metaconfig.  Perl uses it.
151 Should handle directory hierarchies deeper than 2.  Right now there is
152 some support for this.  Here are some of the issues:
153 * Should handle AC_CONFIG_SUBDIRS, ie must handle configure.in in subdirs
154 * Must handle SUBDIRS in subdir Makefile.am's
155 * Must handle AC_CONFIG_AUX_DIR
156   * FIXME must already look in .. and ../..
158 ================================================================
160 Document:
163 Defined variables, their meanings, and their effects:
165 DEFS           cpp definitions
166 INCLUDES       -I options to cpp
167 CPPFLAGS       more cpp flags
168 CFLAGS         flags to cc
169 COMPILE        how to compile a C program
170 LINK           how to link a C program
172 DIST_SUBDIRS   directories which are copied verbatim into the
173                distribution.  Used eg for directories holding
174                only example code (which don't have their own
175                makefile).  This variable might be a bad idea.
177 lib_LIBADD      code conditionally included in a library
178                 This probably needs to be redone anyway.
180 SUFFIXES        additional suffixes
182 Document customary ordering of Makefile.am.  From Franc,ois.
184 Must document BUILT_SOURCES variable.  See depend.am.
186 How to deal with @LIBOBJS@.
187 configure scanning
188 putting .h files into blah_SOURCES is ok now
189 version.texi handling
190 gettext support
191 all options
193 Should include extended version of diagram from Autoconf (suggested by
194 Greg Woods)
196 ================================================================
198 Libraries:
200 * Should support standalone library along with subdir library in same
201   Makefile.am.  Maybe: turn off "standalone" mode if library's Makefile.am
202   is not only one specd? [ add an option for this ]
203 * Need a way to handle shared libraries.
204   It would be really interesting to be able to easily (as the end-user)
205   make many different versions of the library: shared, static, profiling,
206   debug, optimized...
207   How does Perl handle this?  How does glibc handle this?
208   This needs autoconf support
210 Some examples to keep in mind while doing this:
211 * readline
212 * kpathsea
214 ================================================================
216 Have a program that generates a Makefile on stdout, passes it through
217 a "config.status"-style filter, and thence into make.  Why bother,
218 other than the gee-whiz factor?
220 Would it be useful to integrate in some way with the Debian package
221 building utility?  Must check.  maybe it would be possible to deal
222 with all the different package utilities somehow.
224 ================================================================
226 consider auto-including any file that matches "*.in".
227   [ no: po/Makefile.in shouldn't be included ]
229 must look at mkid to see how it works (for subdir usage)
230   [ right now, it doesn't.  i don't see a simple fix right now ]