autoconf/TODO
1995-03-07 00:19:27 +00:00

327 lines
12 KiB
Plaintext

-*- outline -*-
Things it might be nice to do someday. I haven't evaluated all of
these suggestions... their presence here doesn't imply my endorsement,
just that I haven't looked at them closely enough to reject them yet.
-djm
------------------------------------------------------------------------------
* Make AC_CHECK_LIB check whether the function is already available
before checking for the library. This might involve adding another
kind of cache variable to indicate whether a given function needs a
given library. The current ac_cv_func_ variables are intended to
indicate whether the function is in the default libraries, but
actually also take into account whatever value LIBS had when they
were checked for.
------------------------------------------------------------------------------
* Add AC_PROG_CC_POSIX to replace the current ad-hoc macros for AIX,
Minix, ISC, etc.
------------------------------------------------------------------------------
* Use AC_EGREP_CPP instead of AC_TRY_LINK to detect structures and members.
------------------------------------------------------------------------------
* Make AC_CHECK_FUNC[S] automatically use any particular macros for the
listed functions.
------------------------------------------------------------------------------
* Support creating both config.h and DEFS in the same configure.
------------------------------------------------------------------------------
* Select the right CONFIG_SHELL automatically (for Ultrix, Lynx especially.)
------------------------------------------------------------------------------
* Doc: Add concept index.
------------------------------------------------------------------------------
* Doc: Centralize information on POSIX, MS-DOS, cross-compiling, and
other important topics.
------------------------------------------------------------------------------
* Split up AC_SUBST substitutions using a loop to accomodate shells
with severely limited here document sizes, if it turns out to be a problem.
I'm not sure whether the limit is on lines or bytes; if bytes, it
will be less of a problem than it was with the long lines used for
creating a header file.
There has also been a report that HPUX and OSF/1 seds only allow 100
commands.
------------------------------------------------------------------------------
* Allow [ and ] in egrep patterns and AC_DEFINE args.
------------------------------------------------------------------------------
* Add a Makefile generator that supports the standard GNU targets.
(Being worked on.)
------------------------------------------------------------------------------
* Mike Haertel's suggestions:
** Provide header files containing decls for alloca, strings, etc.
** Cross compiling:
*** Error messages include instructions for overriding defaults using
config.site.
*** Distribute a config.site corresponding to a hypothetical bare POSIX system with c89.
*** Cache consistency checking: ignore cache if environment
(CC or PATH) differs.
** Site defaults:
*** Convention for consistency checking of env vars and options in config.site so config.site can print obnoxious messages if it doesn't like options or env vars that users use.
------------------------------------------------------------------------------
* autoscan: Tell the files that caused inclusion of each macro,
in a dnl comment. (Seems to be hard.)
------------------------------------------------------------------------------
* Look at user contributed macros:
prototypes
IEEE double precision math
shared libraries
------------------------------------------------------------------------------
For AC_TYPE_SIGNAL signal handlers, provide a way for code to know
whether to do "return 0" or "return" (int vs void) to avoid compiler
warnings. (Roland McGrath)
------------------------------------------------------------------------------
In config.status comment, put the host/target/build types, if used.
------------------------------------------------------------------------------
Support a way of including makefile fragments that then have @var@
substitutions done on them.
------------------------------------------------------------------------------
Have AC_CANONICAL_* cache the host/build/target types.
------------------------------------------------------------------------------
Look at contributions:
ac_include (Karl Berry)
aclocal.h tom@basil.icce.rug.NL (Tom R.Hageman)
------------------------------------------------------------------------------
The argument HELP-STRING is a description of the option which
...
Avoid tabs in the help string. You'll need to enclose it in `['
and `]' in order to produce the leading spaces.
Except that [...] is the convention for telling the user the default,
So I guess a changequote(`,') or something would be in order in some cases.
From: "K. Berry" <kb@cs.umb.edu>
------------------------------------------------------------------------------
I would find it a wonderful boon if config.log contained not just the
output from the compilers, but also the invocation. Almost all
the errors I've found are due to the wrong options getting passed for
one reason or another.
Saving the input test file(s) that failed would be useful, too.
From: "K. Berry" <kb@cs.umb.edu>
------------------------------------------------------------------------------
The default of unlimited permission is fine, but there should be some easy
way for configure to have copyright terms passed through from configure.in.
Maybe AC_LICENSE([...]).
From: roland@gnu.ai.mit.edu (Roland McGrath)
------------------------------------------------------------------------------
autoconf-2.1 AC_EGREP_HEADER does not work if [square brackets]
are used in the egrep pattern. This makes egrep fairly useless to
find, for example, a space or tab followed by something.
Putting changequotes around the PATTERN parameter makes no difference.
-Jim Avera (jima@netcom.com)
------------------------------------------------------------------------------
AC_MSG_CHECKING([checking for ANSI #stringize])
AC_REVISION([ #(@) revision 2.1 ])
causes bogus code to be generated for whatever immediately follows. The
problem goes away if the '#' is removed. Probably the macros are not
disabling the m4 "comment" feature when processing user-supplied strings.
-Jim Avera jima@netcom.com
------------------------------------------------------------------------------
on hal.gnu.ai.mit.edu, configure is getting the wrong answer for
AC_CHECK_FUNCS(select).
The problem here is that there's severe namespace pollution: when
conftest.c includes <ctype.h> to pick up any __stub macro definitions,
it's getting a prototype declaration for select(), which collides
with the dummy declaration in conftest.c. (The chain of includes
is conftest.c -> <ctype.h> -> <sys/localedef.h> -> <sys/lc_core.h>
-> <sys/types.h> -> <sys/select.h>.)
#define $ac_func __dummy_$ac_func
#include <ctype.h>
#undef $ac_func
From: kwzh@gnu.ai.mit.edu (Karl Heuer)
------------------------------------------------------------------------------
put all the config.* stuff somewhere like config/?
All these extraneous files sure clutter up a toplevel directory.
From: "Randall S. Winchester" <rsw@eng.umd.edu>
------------------------------------------------------------------------------
It would be nice if I could (in the Makefile.in files) set
the path to config.h. You have config.h ../config.h ../../config.h's all
over the place, in the findutils-4.1 directory.
From: "Randall S. Winchester" <rsw@eng.umd.edu>
------------------------------------------------------------------------------
In libc and make in aclocal.m4 I have AC_CHECK_SYMBOL, which checks for
sys_siglist et al. Using AC_CHECK_FUNC doesn't work on some system that
winds up caring that you reference it as a function and it is really a
variable. My version always declares the symbol as a char *[]; if that
ends up a bad idea, we can have it take an arg with the C decl, but that is
a bit verbose to write if it's actually superfluous.
From Roland McGrath.
[I'd call it AC_CHECK_VAR, I think. -djm]
------------------------------------------------------------------------------
In a future version (after 2.2), make AC_PROG_{CC,RANLIB,anything else}
use AC_CHECK_TOOL.
From Roland McGrath.
------------------------------------------------------------------------------
ls -lt configure configure.in | sort
doesn't work right if configure.in is from a symlink farm, where the
symlink has either a timestamp of it's own, or under BSD 4.4, it has
the timestamp of the current directory, neither of which
helps. Changing it to
ls -Llt configure configure.in | sort
works for me, though I don't know how portable that is
_Mark_ <eichin@cygnus.com>
------------------------------------------------------------------------------
Here is the thing I would like the most;
AC_PKG_WITH(PACKAGE, HELP_STRING, PACKAGE-ROOT, PACKAGE-LIBS, PACKAGE-DEFS,
PACKAGE-CCPFLAGS)
like
AC_PKG_WITH(kerberos,,/usr/local/athena,-lkrb -ldes,[KERBEROS KRB4
CRYPT],include)
AC_PKG_WITH(hesiod,
[if hesiod is not in kerberos-root add --with-hesiod-root=somewhere]
,,-lhesiod,HESIOD,,)
AC_PKG_WITH(glue,,,-lglue,GLUE,,)
AC_PKG_WITH(bind,,/usr/local/bind, [lib/resolv.a lib/lib44bsd.a], ,include)
After the apropriate checks, the existance of the paths, and libs and such
LIBS=$LIBS $PKG-LIBS
DEFS=$DEFS $PKG-DEFS
CPPFLAGS=$PKG-CPPFLAGS $CPPFLAGS
$PKG-ROOT=$PKG-ROOT
The cppflags should reverse the order so that you can have;
-I/usr/local/bind/include -I/usr/local/athena/include
and
-L/usr/local/athena/lib -lkrb -ldes /usr/local/bind/lib/libresolv.a
as order matters.
also an AC_PKG_CHK_HEADER
and an AC_PKG_CHK_FUNCTION
so one can give alternate paths to check for stuff ($PKG-ROOT/lib for
example)
From: Randall Winchester
------------------------------------------------------------------------------
AC_C_CROSS assumes that configure was
called like 'CC=target-gcc; ./configure'. I want to write a package
that has target dependend libraries and host dependend tools. So I
dont't like to lose the distinction between CC and [G]CC_FOR_TARGET.
AC_C_CROSS should check for equality of target and host.
It would be great if
GCC_FOR_TARGET
AR_FOR_TARGET
RANLIB_FOR_TARGET
would be set automatically if host != target.
AC_LANG_CROSS_C would be nice too, to check header files
etc. with GCC_FOR_TARGET instead of CC
Here is one simple test
if test "x$host" != "x$target"; then
AC_PROGRAMS_CHECK(AR_FOR_TARGET, $target-ar, $target-ar, ar)
AC_PROGRAMS_CHECK(RANLIB_FOR_TARGET, $target-ranlib, $target-ranlib, ranlib)
AC_PROGRAMS_CHECK(GCC_FOR_TARGET, $target-gcc, $target-gcc, gcc)
fi
This could be improved to also look for gcc in PATH, but require the
prefix to contain the target e.g.:
target=m68k-coff -->GCC_FOR_TARGET = /usr/gnu/m68k-coff/bin/gcc
From: nennker@cs.tu-berlin.DE (Axel Nennker)
------------------------------------------------------------------------------
The problem occurs with the following libc functions in SunOS 5.4:
fnmatch glob globfree regcomp regexec regerror regfree wordexp wordfree
It also occurs with a bunch more libposix4 functions that most people
probably aren't worried about yet, e.g. shm_open.
All these functions fail with errno set to ENOSYS (89)
``Operation not applicable''.
Perhaps autoconf should have a
specific macro for fnmatch, another for glob+globfree, another for
regcomp+regexec+regerror+regfree, and another for wordexp+wordfree.
This wouldn't solve the problem in general, but it should work for
Solaris 2.4. Or autoconf could limit itself to fnmatch and regcomp,
the only two functions that I know have been a problem so far.
From Paul Eggert.
------------------------------------------------------------------------------
Make easy macros for checking for X functions and libraries.
------------------------------------------------------------------------------
* Test suite: more things to test:
** That the shell scripts produce correct output on some simple data.
** Configuration header files. That autoheader does the right thing,
and so does AC_CONFIG_HEADER when autoconf is run.
------------------------------------------------------------------------------