3 Things it might be nice to do someday. I haven't evaluated all of
4 these suggestions... their presence here doesn't imply my endorsement.
8 ------------------------------------------------------------------------------
13 and the like, don't have a consistent way to handle multi-line
14 arguments. Fix, test, and document.
17 This test should be extended to check that install supports the GNU
18 Install syntax: install FILES... DIR. This will relieve everybody
19 form having to use mkinstalldirs to create the directories, as install
20 does it itself. install-sh is already handling this case. This also
21 makes it simple not to create the directories where nothing will be
22 installed because of configuration options, which is next to
23 impossible using the current setting.
25 In other words: everything is ready (install-sh and Automake), we just
26 need a good reimplementation of AC_PROG_INSTALL.
28 ** --target & AC_ARG_PROGRAM
29 Shouldn't *any* `program' be installed as `$target_alias-program' even
30 if AC_ARG_PROGRAM is not called? That would be much more predictable.
34 Write a test that checks that it honors the values set by the user.
36 ** autom4te and warnings.
37 Decide what must be done.
39 ** AC_DEFINE(func, rpl_func)
40 This scheme causes problems: if for instance, #define malloc
41 rpl_malloc, then the rest of configure will use an undefined malloc.
42 Hence some tests fail. Up to now we simply #undef these functions
43 where we had a problem (cf. AC_FUNC_MKTIME and AC_FUNC_MMAP for
44 instance). This is _bad_. Maybe the #define func rpl_malloc should
45 be performed in another file than confdefs.h, say confh.h, which is
46 used for config.h generation, but not used in configure's own tests.
49 Currently it tries to put the C compiler in ANSI C mode by default.
50 We should change this spec so that AC_PROG_CC tries to change the
51 compiler to be the "nicest" mode, i.e. support for the latest standard
52 features (currently ISO C99) plus support for all vendor extensions,
53 even if they are slightly incompatible with C99. The basic idea here
54 is that AC_PROG_CC should disable pedanticisms and should enable
57 ** AC_GNU_SOURCE, AC_AIX, and AC_MINIX
58 Deprecate these, as they will be superseded by the AC_PROG_CC changes.
64 This guy is really a problem. It's contents should be read before
65 handling the options, so that the latter properly override the latter,
66 but most people would want a means to have a config.site that depends
67 on $prefix for instance.
69 Some other would like config.site to be looked for in the current
76 I'd like to see several layers of config.site available.
78 I'm starting to use "modules" at more places to handle software
79 installation, and it would be helpful to set general things like:
81 prefix=/opt/pkg/@PACKAGE@/@VERSION@
83 once at a global level, and then, for example, have things like:
85 --with-etcdir=$prefix/etc
87 stuffed "above" the various versions of SSH so I wouldn't have to hunt for
88 these things every time it was time to recompile a new version of a
89 previously installed package.
93 src/config.site Global stuff
95 src/ssh/config.site package-specific stuff
96 src/ssh/ssh-1.2.27/ the actual source code
98 I'd like to see automake/autoconf better support packaging tools (like
99 modules, the *BSD ports/ stuff, and others would like hooks for RPMs).
103 Integrate other Fortrans etc.
105 ** AC_CHECK_FUNCS and AC_TRY_LINK_FUNC
106 I have still not understood what's the difference between the two
107 which requires to have two different sources: AC_LANG_CALL and
108 AC_LANG_FUNC_LINK_TRY (which names seem to be inappropriate).
109 Wouldn't one be enough?
111 ** Document AC_COMPILE_IFELSE, AC_LANG_PROGRAM etc.
112 And make AC_TRY_COMPILE etc. obsolete.
115 Define once for all the hooks they need, any redefinition of
116 AC_PROG_CC etc. is way too dangerous and too limiting. The GCC team
117 certainly has requirements too.
120 From: Tom Tromey <tromey@cygnus.com>
121 Subject: AC_SEARCH_LIBS
123 I think AC_SEARCH_LIBS has an unfortunate interface.
125 ACTION-IF-FOUND is run in addition to the default action. Most
126 autoconf macros don't work this way. This is confusing.
128 In my case I can't use this macro because it always appends to LIBS.
129 I don't want that. Instead I want to use ACTION-IF-FOUND to set my
132 Also there is no documentation on the format of library names expected
133 by the macro. Even a reference to some other function (e.g., "the
134 library name can have the same forms as with AC_HAVE_LIBRARY" (if that
135 is true, which I haven't looked up) would be fine.
137 ** Revamp the language support
138 We should probably have a language for C89, and C99. We must give the
139 means to the users to specify some needs over the compilers, and
140 actually look for a good compiler, instead of stopping at the first
143 In fact, the AC_CHECK_PROG macro and variations have proved their
144 limitation: we really need something more powerful and simpler too.
146 We must take into account the specific problems of the GCC team. We
147 must extend AC_CHECK_FUNCS in order to use the headers instead of fake
148 declarations as we currently do. Default headers could be triggered
149 on when C99, but not with the other languages?
151 At the end, we should have a simple macro, such as AC_LANG_COMPILER
152 for instance, which is built over simpler macros. Each language
153 support should come with these simpler macros, but each language
154 should follow the same process.
156 We also need to check the srcext which are supported by the compiler.
157 In fact, this macro is also probably the right place to check for
161 Should be: AC_PROG_CC_ISO? Or even more specific for the ISO version?
162 Should include more tests (e.g., AC_C_CONST etc.)? See Peter for very
163 useful comments on the technology. Should we make this a new
164 language? AC_LANG(ISO C). It would be great to introduce
165 AC_LANG_COMPILER in this release too.
168 We should probably install the files which do not depend upon the
169 user, just the Autoconf library files. But conversely autoupdate must
170 be opened to user macros, i.e., for instance libtool itself must be
171 able to say that AM_PROG_LIBTOOL is now AC_PROG_LIBTOOL, and have
172 autoupdate do its job on old configure.ac.
177 Heck, there is nothing after `Deuteronomy'! We're stuck, but we
178 _must_ update the `history' section. Can't go to `New testament', we
179 might hurt feelings? In addition, it means that the Messiah has come,
180 which might be slightly presumptuous :). Still, someone fluent in
181 English should write it.
186 > Hi, autoconf people. While packaging plotutils-2.2 (just released),
187 > I noticed what looks like a small error in the autoconf-2.13 texinfo
188 > documentation, the entry for AC_PATH_XTRA, in particular.
190 > The documentation says that AC_PATH_XTRA
191 > ... adds the C compiler flags that X needs to output variable
192 > `X_CFLAGS', and the X linker flags to `X_LIBS'. If X is not
193 > available, adds `-DX_DISPLAY_MISSING' to `X_CFLAGS'.
195 > It doesn't seem to add -DX_DISPLAY_MISSING to X_CFLAGS. X_DISPLAY_MISSING
196 > ends up defined in config.h, instead.
198 That's only because you're no doubt using AC_CONFIG_HEADER(..) to send
199 your defines to a config.h-style file. If you were to not use
200 AC_CONFIG_HEADER and X was not available, then you would see
201 -DX_DISPLAY_MISSING being added to @DEFS@ as your output files were being
204 But you are right--the documentation is not clear about this. I'll change
207 > In fact it looks to me as if right now, X_CFLAGS is used only for
208 > specifying directories where X include files are stored, via the `-I' option.
209 > Maybe it should really be called X_CPPFLAGS?
211 Well, perhaps. If you feel strongly about this, feel free to submit a
212 change-request. There is a hyperlink to the bug tracking database from
213 http://sourceware.cygnus.com/autoconf/. With the way it reads in the
214 manual right now, it's designed to allow the user to set additional flags
215 in the environment prior to running configure--and these don't need to be
216 limited to just -I flags. Nevertheless, I can see a few clean ways to
219 ** AC_SYS_INTERPRETER
220 Defines $interpval. This is not a standard name. Do we want to keep
221 this? Clarify our policy on those names.
223 ** Allow --recursive to config.status
224 So that --recheck does not pass --no-recursive to configure.
227 Move the specific macro documentation blocks into the source files,
228 and use a doc-block extraction/merge technique to get documentation
229 into texi-file. This should help avoid bit-rot in the doc, and make
230 the doc easier to update when people add/change macros. The name
231 "autodoc" is probably already taken so we probably need another one.
233 ------------------------------------------------------------------------------
238 The error messages for indir and dumpdef are uselessly different. Fix
239 this for translators.
242 F**k! --trace FOO does not catch indir([FOO], $@)!
245 GNU M4 1.4's tracing of builtins is buggy. When run on this input:
249 | define([m4_eval], defn([eval]))
257 | % m4 input.m4 -da -t eval
258 | m4trace: -1- eval(1)
259 | m4trace: -1- m4_eval(2)
260 | m4trace: -1- m4_eval(3)
265 | % m4 input.m4 -da -t m4_eval
268 ------------------------------------------------------------------------------
272 ** Cache name spaces.
273 Cf the discussion with Kaveh. One would like to
275 # Do something that changes the environment
279 in order not to erase the results of a check with another.
282 should depend upon the current language.
285 I think one sad decision in Autoconf was to use white space separated
286 lists for some arguments. For instance AC_CHECK_FUNCS(foo bar). I
287 tend to think that, even if it is not as nice, we should use m4 lists,
288 i.e., AC_CHECK_FUNCS((foo, bar)) in this case. This would ease
289 specializing loops, and more importantly, make them much more robust.
291 A typical example of things that can be performed if we use m4 lists
292 instead of white space separated lists is the case of things that have
293 a space in their names, eg, structures.
295 With the current scheme it would be extremely difficult to loop over
296 AC_CHECK_STRUCTS(struct foo struct bar), while it natural and well
297 defined for m4 lists: AC_CHECK_STRUCTS((struct foo, struct bar)).
299 I know that makes a huge difference in syntax, but a major release
300 should be ready to settle a new world. We *can* provide helping tools
301 for the transition. Considering the benefits, I really think it is
302 worth thinking. --akim
304 ** Forbid shell variables as main arguments
305 The fact that we have to support shell variables as main argument
306 forbids many interesting constructions (specialization are not always
307 possible, equally for AC_REQUIRE'ing macros *with their arguments*).
308 Any loop should be handled by m4 itself, and nothing should be hidden
309 to it. As a consequence, shell variables on the main arguments become
310 useless (the main reason we support shell variables is to allow the
311 loop versions of single argument macros, eg, to go from AC_CHECK_FUNC
312 to AC_CHECK_FUNCS). --akim
314 ** Use the @SUBST@ technology also for headers instead of #undef.
315 This requires that acconfig.h becomes completely obsolete: autoheader
316 should generate all the templates.
318 ** Specializing loops.
319 For instance, make AC_CHECK_FUNC[S] automatically use any particular
320 macros for the listed functions.
321 This requires to obsolete the feature `break' in ACTION-IF, since all
322 the loops are to be handled by m4, not sh.
325 Each macro can potentially come with several faces: of course the
326 configure snippet (AC_foo), a config.h snippet (AH_foo), a system.h
327 snippet (AS_foo), documentation (AD_foo) and, why not, the some C code
328 for instance to replace a function.
330 The motivation for the `faces' is to encapsulate. It is abnormal that
331 once one has a configure macro, then she has to read somewhere to find
332 the piece of system.h to use etc. The macros should come in a
333 self-contained way, or, said it another way, PnP.
335 A major issue is that of specialization. AC_CHECK_HEADER (or another
336 name) for instance, will have as an effect, via system.h to include
337 the header. But if the test for the header is specific, the generic
338 AS_CHECK_HEADER will still be used. Conversely, some headers may not
339 require a specific AC_ tests, but a specialized AS_ macro.
341 ------------------------------------------------------------------------------
343 * Make AC_CHECK_LIB check whether the function is already available
344 before checking for the library. This might involve adding another
345 kind of cache variable to indicate whether a given function needs a
346 given library. The current ac_cv_func_ variables are intended to
347 indicate whether the function is in the default libraries, but
348 actually also take into account whatever value LIBS had when they
351 Isn't this the issue of AC_SEARCH_LIB? --akim
352 How come the list of libraries to browse not an additional parameter
353 of AC_CHECK_FUNC, exactly like for the headers? --akim
355 ------------------------------------------------------------------------------
357 * Add AC_PROG_CC_POSIX to replace the current ad-hoc macros for AIX,
360 ------------------------------------------------------------------------------
362 * Select the right CONFIG_SHELL automatically (for Ultrix, Lynx especially.)
364 ------------------------------------------------------------------------------
366 * Doc: Centralize information on POSIX, MS-DOS, cross-compiling, and
367 other important topics.
369 ------------------------------------------------------------------------------
371 * Mike Haertel's suggestions:
373 ** Provide header files containing decls for alloca, strings, etc.
377 *** Error messages include instructions for overriding defaults using
380 *** Distribute a config.site corresponding to a hypothetical bare POSIX system with c89.
384 *** 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.
386 ------------------------------------------------------------------------------
388 * Look at user contributed macros:
389 IEEE double precision math
392 ------------------------------------------------------------------------------
394 * Provide a way to create a config.h *and* set the DEFS variable from within
395 the same configure script.
397 ------------------------------------------------------------------------------
399 For AC_TYPE_SIGNAL signal handlers, provide a way for code to know
400 whether to do "return 0" or "return" (int vs void) to avoid compiler
401 warnings. (Roland McGrath)
403 ------------------------------------------------------------------------------
405 In config.status comment, put the host/target/build types, if used.
407 ------------------------------------------------------------------------------
409 It would be nice if I could (in the Makefile.in files) set
410 the path to config.h. You have config.h ../config.h ../../config.h's all
411 over the place, in the findutils-4.1 directory.
412 From: "Randall S. Winchester" <rsw@eng.umd.edu>
414 ------------------------------------------------------------------------------
416 ls -lt configure configure.in | sort
417 doesn't work right if configure.in is from a symlink farm, where the
418 symlink has either a timestamp of its own, or under BSD 4.4, it has
419 the timestamp of the current directory, neither of which
420 helps. Changing it to
421 ls -Llt configure configure.in | sort
422 works for me, though I don't know how portable that is
423 _Mark_ <eichin@cygnus.com>
425 ------------------------------------------------------------------------------
427 Here is the thing I would like the most;
428 AC_PKG_WITH(PACKAGE, HELP_STRING, PACKAGE-ROOT, PACKAGE-LIBS, PACKAGE-DEFS,
432 AC_PKG_WITH(kerberos,,/usr/local/athena,-lkrb -ldes,[KERBEROS KRB4
435 [if hesiod is not in kerberos-root add --with-hesiod-root=somewhere]
437 AC_PKG_WITH(glue,,,-lglue,GLUE,,)
438 AC_PKG_WITH(bind,,/usr/local/bind, [lib/resolv.a lib/lib44bsd.a], ,include)
439 After the appropriate checks, the existence of the paths, and libs and such
442 CPPFLAGS=$PKG-CPPFLAGS $CPPFLAGS
444 The cppflags should reverse the order so that you can have;
445 -I/usr/local/bind/include -I/usr/local/athena/include
447 -L/usr/local/athena/lib -lkrb -ldes /usr/local/bind/lib/libresolv.a
450 also an AC_PKG_CHK_HEADER
451 and an AC_PKG_CHK_FUNCTION
452 so one can give alternate paths to check for stuff ($PKG-ROOT/lib for
454 From: Randall Winchester
456 ------------------------------------------------------------------------------
458 AC_C_CROSS assumes that configure was called like 'CC=target-gcc;
459 ./configure'. I want to write a package that has target dependent
460 libraries and host dependent tools. So I don't like to lose the
461 distinction between CC and [G]CC_FOR_TARGET. AC_C_CROSS should check
462 for equality of target and host.
470 would be set automatically if host != target.
471 AC_LANG_CROSS_C would be nice too, to check header files
472 etc. with GCC_FOR_TARGET instead of CC
474 Here is one simple test
476 if test "x$host" != "x$target"; then
477 AC_CHECK_PROGS(AR_FOR_TARGET,
478 [$target-ar, $prefix/$target/bin/ar], $target-ar)
479 AC_CHECK_PROGS(RANLIB_FOR_TARGET, $target-ranlib, $target-ranlib)
480 [$target-ranlib, $prefix/$target/bin/ranlib], $target-ranlib)
481 AC_CHECK_PROGS(GCC_FOR_TARGET, $target-gcc, $target-gcc)
482 [$target-gcc, $prefix/$target/bin/gcc], $target-gcc)
485 From: nennker@cs.tu-berlin.DE (Axel Nennker)
487 (also look in the autoconf mailing list archives for the proposed
488 CHECK_TARGET_TOOL macro from Natanael Nerode, a gcc configury guru).
490 ------------------------------------------------------------------------------
492 The problem occurs with the following libc functions in SunOS 5.4:
494 fnmatch glob globfree regcomp regexec regerror regfree wordexp wordfree
496 It also occurs with a bunch more libposix4 functions that most people
497 probably aren't worried about yet, e.g. shm_open.
499 All these functions fail with errno set to ENOSYS (89)
500 ``Operation not applicable''.
502 Perhaps Autoconf should have a specific macro for fnmatch, another for
503 glob+globfree, another for regcomp+regexec+regerror+regfree, and
504 another for wordexp+wordfree. This wouldn't solve the problem in
505 general, but it should work for Solaris 2.4. Or Autoconf could limit
506 itself to fnmatch and regcomp, the only two functions that I know have
507 been a problem so far.
511 ------------------------------------------------------------------------------
513 Make easy macros for checking for X functions and libraries, such as Motif.
515 ------------------------------------------------------------------------------
517 There are basically three ways to lock files
519 I'd be interested in adding a macro to pick the "right one" if you're
522 From: Rich Salz <rsalz@osf.org>
524 ------------------------------------------------------------------------------
526 Timezone calculations checks.
528 ------------------------------------------------------------------------------
530 Support different default filesystem layouts, e.g. SVR4, Linux.
531 Of course, this can be done locally with config.site.
533 ------------------------------------------------------------------------------
535 I wonder if it is possible to get the path for X11's app-defaults
536 directory by autoconf. Moreover, I'd like to have a general way of
537 accessing imake variables by autoconf, something like
539 AC_DEFINE(WINE_APP_DEFAULTS, AC_IMAKE_VAR(XAPPLOADDIR))
541 Slaven Rezic <eserte@cabulja.herceg.de>
543 ------------------------------------------------------------------------------
545 Cache consistency checking: ignore cache if environment
546 (CC or PATH) differs.
549 So we need a general mechanism for storing variables' values in the cache,
550 and checking if they are the same after reading the cache. Then we can add
551 to the list of variables as we come across the need. So far we want
552 LD_LIBRARY_PATH and the internal variables for some of (all?) the args.
553 From: roland@gnu.ai.mit.edu (Roland McGrath)
555 Hmm. That list might include LD_LIBRARY_PATH, LD_RUN_PATH (for solaris),
556 and PATH. I can't think of any others so far.
557 From: friedman@splode.com (Noah Friedman)
559 ------------------------------------------------------------------------------
561 Every user running X11 usually has a directory like *X11* in his PATH
562 variable. By replacing bin by include, you can find good places to
563 look for the include files or libraries.
565 From: rcb5@win.tue.nl (Richard Verhoeven)
567 ------------------------------------------------------------------------------
569 In most cases, when autoscan suggests something, using the search or
570 index command into the Info reader for autoconf manual quickly
571 explains me what the test is about. However, for header files and
572 functions, the search might fail, because the test is not of the
573 specific kind. The Autoconf manual should reflect somewhere all
574 header files or functions (non-specific features, generally)
575 triggering autoscan to generate tests, and tell in a few words what is
576 the problem, and the suggested approach for a solution; that is, how
577 one should use the result of testing the feature.
579 From: pinard@iro.umontreal.ca
581 ------------------------------------------------------------------------------
583 It would be nice if the configure script would handle an option such as
584 --x-libraries="/usr/openwin/lib /usr/dt/lib".
586 Rick Boykin <rboykin@cscsun3.larc.nasa.gov>
588 Under Solaris 2.4, the regular X includes and libs and the Motif
589 includes and libs are in different places. The Emacs configure script
590 actually allows dir1:dir2:dir3 --
592 if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
593 LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
594 LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
596 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
597 C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
600 ------------------------------------------------------------------------------
602 What messages should be produced by default, if any?
604 Probably only the few most important ones, like which configuration
605 name was used, whether X or Xt are in use, etc. The specific
606 decisions, and progress messages, should be recorded on the terminal
607 only if --verbose is used.
609 --silent just suppresses the "checking for...result"
610 messages, not the "creating FOO" messages.
612 I think the default should be to suppress both.
613 From: Richard Stallman <rms@gnu.ai.mit.edu>
615 There is no distinction now between
616 important decisions (we have X) vs minor decisions (we have lstat).
617 However, there are probably only a few things you deem important enough to
618 announce and only those few things will need to be changed.
619 Perhaps config.status could be written with comments saying what was
621 From: Roland McGrath <roland@gnu.ai.mit.edu>
623 ------------------------------------------------------------------------------
625 Another thing I wish for is a macro which figures out which libraries are
626 needed for BSD-style sockets. AC_PATH_X already detects this
627 correctly...so it's just a matter of separating out the socket-related code.
628 From: "Joel N. Weber II" <nemo@koa.iolani.honolulu.hi.us>
630 ------------------------------------------------------------------------------
632 in order to use the AC_CANONICAL_SYSTEM macro, I have to have
633 install-sh somewhere nearby --- why is this? I have no real reason to
634 distribute install-sh, other than that its absence breaks this code.
636 Shouldn't the above loop be looking for config.sub and config.guess?
637 From: jimb@totoro.bio.indiana.edu (Jim Blandy)
639 adding AC_CANONICAL_HOST to my configure.in script caused
640 all sorts of odd/unexplained errors. Obviously, I had to go
641 get copies of config.guess, config.sub and install-sh from the
642 autoconf distribution, but the error messages and autoconf docs
643 didn't explain that very well.
644 From: bostic@bsdi.com (Keith Bostic)
646 ------------------------------------------------------------------------------
648 Perhaps also have AC_TRY_COMPILER try to link an invalid program, and
649 die if the compiler seemed to succeed--in which case it's not usable
650 with autoconf scripts.
652 ------------------------------------------------------------------------------
654 Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
657 This file is part of GNU Autoconf.
659 GNU Autoconf is free software; you can redistribute it and/or modify
660 it under the terms of the GNU General Public License as published by
661 the Free Software Foundation; either version 2, or (at your option)
664 GNU Autoconf is distributed in the hope that it will be useful,
665 but WITHOUT ANY WARRANTY; without even the implied warranty of
666 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
667 GNU General Public License for more details.
669 You should have received a copy of the GNU General Public License
670 along with autoconf; see the file COPYING. If not, write to
671 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
672 Boston, MA 02111-1307, USA.