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.
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
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
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.
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
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:
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
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
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
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:
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
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 ================================================================
163 Defined variables, their meanings, and their effects:
166 INCLUDES -I options to cpp
167 CPPFLAGS more cpp flags
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@.
188 putting .h files into blah_SOURCES is ok now
189 version.texi handling
193 Should include extended version of diagram from Autoconf (suggested by
196 ================================================================
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,
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:
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 ]