Think about modifications so automake can work with a standalone
library, eg readline
Allow ".h" files to appear in blah_SOURCES; just write them out of
existence.
should have "all:: info" in texinfos.am?
automake.in: should ".cc" really -> ".${kr}o"? This doesn't really
seem right, but maybe it is so names can be rewritten uniformly? Must
check
automake.in should disallow setting of LC_ALL and LANG variables by
Makefile.am.
must write rules to handle data files. They should be installed in
$(datadir)/$(PACKAGE). What to do if file in list is actually a
directory?
consider auto-including any file that matches "*.in".
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 ]
must fix install-info rule in texinfos.am. First must find out how
the mythical "install-info" program actually works.
clean.am: clean: if all the macros are empty, the rule expands to:
rm -rf
which should be fixed
Consider automating stamp-vti stuff. What does GNITS say about this?
Consider rewriting recursive rules to use static value of SUBDIRS:
SUBDIRS = x y z
all:: all-x all-y all-z
all-x: deps
(cd x; $(MAKE) all)
Not sure if this is a win or not. But it allows "make -k" to work
without hackery.
================================================================
For CONFIG_HEADER,
generate automatic dependencies for the object files.
automatically add its input file to the distribution.
Don't hardcode the name of the configuration header. Get it from
configure.in (AC_CONFIG_HEADER).
Get the list of Makefiles to create from configure.in AC_OUTPUT
if none are given.
[ right now we look for any Makefile.am's lying around
I think this is better, because it allows use of subdirs
which don't use automake -- eg, stuff from gettext ]
Should libexec programs have the name transform done on them?
[ No, but it is currently done ]
Order the output rules sensibly, so FOO_SOURCES and FOO_OBJECTS are
together and rules are in the usual order.
Make the output minimal: only output definitions for variables that
are used.
Rewrite in Perl. Look at dist's jmake for ideas.
Should handle directory hierarchies deeper than 2. Right now there is
no support for this at all.
================================================================
Document:
Defined variables, their meanings, and their effects:
DEFS cpp definitions
INCLUDES -I options to cpp
CPPFLAGS more cpp flags
CFLAGS flags to cc
SOURCES any sources (do not use)
HEADERS header files in this directory
CONFIG_HEADER path to config.h
SUBDIRS subdirectories to build in. means this is a "top level"
directory.
PROGRAMS list of programs to build. sources for program `foo' are
in foo_SOURCES. objects are auto-build. (only put .c
files in foo_SOURCES)
LIBPROGRAMS programs to build and install in libexec
SCRIPTS programs which are actually scripts (architecture
independent)
LIBSCRIPTS scripts to build and install in lib
LIBRARIES libraries to build. sources for library `foo' are
in foo_SOURCES. Only put .c file name in that variable.
TEXINFOS texinfo files to build. must end in ".texi"
MANS man pages to install
HEADERS All .h files in program
AM_PROGRAMS like PROGRAMS. If it exists, it is used by automake to
determine which programs to generate Makefile parts for.
Use this if PROGRAMS is computed at configure time
ETAGS_ARGS Extra arguments for etags. If this exists then tags are
made. Tags will also be made if either SOURCES or HEADERS
is not empty
If your Makefile.am includes "@kr@", then ansi->kr conversion is
assumed.
DIST_OTHER whatever files you want to include in the distribution.
Note that most common files (eg "configure.in") are
automatically found by automake.
DIST_SUBDIRS directories which are copied verbatim into the
distribution. Used eg for directories holding
only example code (which don't have their own
makefile). This variable might be a bad idea.
It is assumed that your configure script defines VERSION and PACKAGE.
These variables are used when making the distribution. The
distribution file will be a gzip'd tar file named
PACKAGE-VERSION.tar.gz.