-*- 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. -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. They have to be overridden by the command line arguments, just as for X includes and libraries. Should they be cached all in one variable, or three? In that case, what if only one or two of the cache variables are set? ------------------------------------------------------------------------------ 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" ------------------------------------------------------------------------------ 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 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 -> -> -> -> -> .) #define $ac_func __dummy_$ac_func #include #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" ------------------------------------------------------------------------------ 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" ------------------------------------------------------------------------------ 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 its 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_ ------------------------------------------------------------------------------ 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 dependent libraries and host dependent tools. So I don'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. ------------------------------------------------------------------------------ Testing for ANSI header files (AC_HEADER_STDC) fails under linux when using the latest libraries (libc-4.6.30, at least libc-4.6.27 works ok) when LC_CTYPE is set to ISO-8859-1. The islower/toupper test reports errors. Anyway, adding a line like if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi to the configure script can solve the problem. From: tom@vlsivie.tuwien.ac.AT (Thomas Winder) ------------------------------------------------------------------------------ * 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. ------------------------------------------------------------------------------