Don't use ${
[automake.git] / TODO
blob4a9aad41eb0d8874581eb3abeb5900554051af2d
1 Top priorities:
2 * Use info_TEXINFOS
3 * Figure out how to handle MANS
6 * am_error should use printf-style arguments (for eventual gettext scheme)
8 uninstall and pkg-dirs should rm -rf the dir.
10 Merge dist*.am files into automake itself; replication is bad.
12 Clean up the output:
13 * Order rules sensibly
14 * Ensure every line has a purpose.  Omit unused stuff
15 * Eliminate extraneous rules when possible (eg 'install-am' stuff)
16 * Make sure vertical spacing is correct
17 * pretty-print targets
19 Need OTHER_SOURCES to hold sources whose objects end up in eg LIBOBJS.
20 Dependency tracking should work here.  Maybe if it doesn't exist it
21 should be generated automatically by scanning the directory.  (yes)
23 "@kr@" is a hack that should be fixed.  And it should be possible to
24 have ansi2knr in just one place in a package.  Jim Meyering says just
25 rely on configure to make symlinks as appropriate.  Not sure how I
26 feel about this.
28 Consider automatic support for ".y" files.
29   [ not right now; it is nice to be able to print the number of
30     expected conflicts, and we can't handle that ]
32 install-info doesn't have to look in build directory for info files;
33 just don't support this mode.
35 Write autoconf macro to do all work necessary for automake.  Eg define
36 PACKAGE, VERSION, etc.
38 Change glob pattern to look for to '*/Makefile*.am', so that gettext's
39 po directory can use a Makefile.in.am (and generate Makefile.in.in)
41 Should 'distclean' remove $(SCRIPTS)?
42 Should 'maintainer-clean' do "rm -rf .deps"?
43 Should look for clean-local targets in Makefile.am.
45 Think about writing a small tool to guess what the local Makefile.am
46 should look like.
48 Prettyprint macro definitions, eg:
49         DIST_COMMON = Makefile.in Makefile.am \
50         foo bar baz
52 It might be cool to generate .texi dependencies by grepping for
53 @include.  (If done, it should be done the same way C dependency is
54 done)
56 Rename --include-deps to --insert-deps?
58 It would be good to check some parts of GNU standards.  Already check
59 for install-sh and mkinstalldirs.  What else is required to be in
60 package by GNU standards or by automake?
61 Some things for --strictness=gnits:
62 * "cd $(foo); something" is an error in a rule.  Should be:
63   "cd $(foo) && something"
65 Maybe it should be possible to disable all GNU-specific things with
66 --no-gnu? --ignore-standards?  But what?  And why?
68 Allow ".h" files to appear in blah_SOURCES; just write them out of
69 existence.  [ This is nixed for now because of the auto-dependency
70 tracking stuff ]
72 automake.in: should ".cc" really -> ".${kr}o"?  This doesn't really
73 seem right, but maybe it is so names can be rewritten uniformly?  Must
74 check
76 look in configure.in's AC_OUTPUT command and include those files in
77 distribution.  Or consider new CONFIGURED_FILES macro that lists files
78 generated by config.status.
80 Auto-distribute "ChangeLog.[0-9]+"?
82 consider auto-including any file that matches "*.in".
83   [ no: po/Makefile.in shouldn't be included ]
85 must look at mkid to see how it works (for subdir usage)
86   [ right now, it doesn't.  i don't see a simple fix right now ]
88 Internationalize. [ gettext doesn't have the necessary machinery yet ]
90 ================================================================
92 For CONFIG_HEADER,
93   automatically add its input file to the distribution.
95 Don't hardcode the name of the configuration header.  Get it from
96 configure.in (AC_CONFIG_HEADER).
98 Get the list of Makefiles to create from configure.in AC_OUTPUT
99 if none are given.
100         [ right now we look for any Makefile.am's lying around
101           I think this is better, because it allows use of subdirs
102           which don't use automake -- eg, stuff from gettext ]
104 Should libexec programs have the name transform done on them?
106 Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are
107 together and rules are in the usual order.
109 Make the output minimal: only output definitions for variables that
110 are used.
112 Look at dist's jmake for ideas.  [what is this?]
114 Should handle directory hierarchies deeper than 2.  Right now there is
115 no support for this at all.
117 ================================================================
119 Known Bugs:
121 version.texi handling is broken -- it assumes you only have one .texi
122 file per directory.
123    (*) In any case, the UPDATED information would be different for
124    each .texi file included in a package -- that is my problem.
125    Now, if no package will ever have more than one .texi file
126    (in a given directory), I can just stop worrying about it.
128 If there is ever more than one, we will need to change the name of
129 'version.texi' to be based on the name of the primary .texi file.
130 Will have to be careful here not to violate MS-DOS name limits.  Also
131 will need more than one stamp-vti.
133 [ actually, we could just number them.  version0.texi, version1.texi,
134 etc ] [ actually, we can't, because the user could be reasonably
135 expected to want to make dependencies using the name of the .texi file
136 ] [ actually, the real reason we can't is because it wouldn't be
137 obvious what name to include in the primary .texi file.  Duh ]
139 ================================================================
141 Document:
144 Defined variables, their meanings, and their effects:
146 DEFS           cpp definitions
147 INCLUDES       -I options to cpp
148 CPPFLAGS       more cpp flags
149 CFLAGS         flags to cc
150 COMPILE        how to compile a C program
151 LINK           how to link a C program
153 DIST_SUBDIRS   directories which are copied verbatim into the
154                distribution.  Used eg for directories holding
155                only example code (which don't have their own
156                makefile).  This variable might be a bad idea.
158 lib_LIBADD      code conditionally included in a library
159                 This probably needs to be redone anyway.
161 AM_TEXINFOS     override form
162 SUFFIXES        additional suffixes
164 Document customary ordering of Makefile.am.  From Franc,ois.
166 ================================================================
168 Libraries:
170 X Need a way to specify library should be installed
171 * Should support standalone library along with subdir library in same
172   Makefile.am.  Maybe: turn off "standalone" mode if library's Makefile.am
173   is not only one specd?
174 X Need a way to install library header files.
175 * Need a way to handle shared libraries.
176   It would be really interesting to be able to easily (as the end-user)
177   make many different versions of the library: shared, static, profiling,
178   debug, optimized...
179 X Must ranlib libraries after installing
181 Some examples to keep in mind while doing this:
182 * readline
183 * kpathsea
185 ================================================================
187 Have a program that generates a Makefile on stdout, passes it through
188 a "config.status" style filter, and thence into make.  Why bother,
189 other than the gee-whiz factor?
191 Would it be useful to integrate in some way with the Debian package
192 building utility?  Must check.