(DIST_FILES): Include DIST_COMMON
[automake.git] / TODO
blobd49553962bbd1043bc21a887257e4cca82cd2f29
1 It would be good to check some parts of GNU standards:
2         install-sh must exist
3         mkinstalldirs must exist
5 Maybe it should be possible to disable all GNU-specific things with
6 --no-gnu? --ignore-standards?
8 Think about modifications so automake can work with a standalone
9 library, eg readline.  For instance we need a way to install a
10 library, and a way to install header files.  It would also be nice to
11 figure out some good way to deal with shared libs.
13 Allow ".h" files to appear in blah_SOURCES; just write them out of
14 existence.
16 should have "all:: info" in texinfos.am?
18 automake.in: should ".cc" really -> ".${kr}o"?  This doesn't really
19 seem right, but maybe it is so names can be rewritten uniformly?  Must
20 check
22 automake.in should disallow setting of LC_ALL and LANG variables by
23 Makefile.am.
25 must write rules to handle data files.  They should be installed in
26 $(datadir)/$(PACKAGE).  What to do if file in list is actually a
27 directory?
29 consider auto-including any file that matches "*.in".
31 must look at mkid to see how it works (for subdir usage)
32   [ right now, it doesn't.  i don't see a simple fix right now ]
34 clean.am: clean: if all the macros are empty, the rule expands to:
35         rm -rf
36 which should be fixed
38 Consider automating stamp-vti stuff.  What does GNITS say about this?
40 Consider rewriting recursive rules to use static value of SUBDIRS:
41         SUBDIRS = x y z
42         all:: all-x all-y all-z
43         all-x: deps
44                 (cd x; $(MAKE) all)
45 Not sure if this is a win or not.  But it allows "make -k" to work
46 without hackery.
48 ================================================================
50 For CONFIG_HEADER,
51   automatically add its input file to the distribution.
53 Don't hardcode the name of the configuration header.  Get it from
54 configure.in (AC_CONFIG_HEADER).  
56 Get the list of Makefiles to create from configure.in AC_OUTPUT
57 if none are given.
58         [ right now we look for any Makefile.am's lying around
59           I think this is better, because it allows use of subdirs
60           which don't use automake -- eg, stuff from gettext ]
62 Should libexec programs have the name transform done on them?
63         [ No, but it is currently done ]
65 Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are
66 together and rules are in the usual order.
68 Make the output minimal: only output definitions for variables that
69 are used.
71 Rewrite in Perl.  Look at dist's jmake for ideas.
73 Should handle directory hierarchies deeper than 2.  Right now there is
74 no support for this at all.
76 ================================================================
78 Document:
81 Defined variables, their meanings, and their effects:
83 DEFS           cpp definitions
84 INCLUDES       -I options to cpp
85 CPPFLAGS       more cpp flags
86 CFLAGS         flags to cc
87 SOURCES        any sources (do not use)
88 HEADERS        header files in this directory
89 CONFIG_HEADER  path to config.h
90 SUBDIRS        subdirectories to build in.  means this is a "top level"
91                directory.
92 PROGRAMS       list of programs to build.  sources for program `foo' are
93                in foo_SOURCES.  objects are auto-build.  (only put .c
94                files in foo_SOURCES)
95 LIBPROGRAMS    programs to build and install in libexec
96 SCRIPTS        programs which are actually scripts (architecture
97                independent)
98 LIBSCRIPTS     scripts to build and install in lib
99 LIBRARIES      libraries to build.  sources for library `foo' are
100                in foo_SOURCES.  Only put .c file name in that variable.
101 TEXINFOS       texinfo files to build.  must end in ".texi"
102 MANS           man pages to install
103 HEADERS        All .h files in program
104 AM_PROGRAMS    like PROGRAMS.  If it exists, it is used by automake to
105                determine which programs to generate Makefile parts for.
106                Use this if PROGRAMS is computed at configure time
107 ETAGS_ARGS     Extra arguments for etags.  If this exists then tags are
108                made.  Tags will also be made if either SOURCES or HEADERS
109                is not empty
111 If your Makefile.am includes "@kr@", then ansi->kr conversion is
112 assumed.
114 DIST_OTHER     whatever files you want to include in the distribution.
115                Note that most common files (eg "configure.in") are
116                automatically found by automake.
118 DIST_SUBDIRS   directories which are copied verbatim into the
119                distribution.  Used eg for directories holding
120                only example code (which don't have their own
121                makefile).  This variable might be a bad idea.
123 It is assumed that your configure script defines VERSION and PACKAGE.
124 These variables are used when making the distribution.  The
125 distribution file will be a gzip'd tar file named
126 PACKAGE-VERSION.tar.gz.
128 ================================================================
130 Automatic dependency generation:
132 * If a special flag is given to automake, and SOURCES exists, include
133   some auto-dep generating code.  This code can depend on gcc and GNU
134   make.  (Use gcc's -MMD or -MM option).  (--use-deps)
136 * When making distribution, first ensure all dependency files are up
137   to date.  Then re-run automake, with flag to include deps in
138   generated Makefile.in (--include-deps)
140 Maybe it would be nice to support dependency computation with tools
141 other than gcc.