Avoid extra side effects in m4sugar list expansion.
[autoconf.git] / TODO
blob368268c6391a2e66f99cc64351f9c9c3271d3ece
1 -*- outline -*-
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.
5 -djm & his successors.
8 ------------------------------------------------------------------------------
10 * Soon
12 ** AC_CHECK_HEADERS
13 and the like, don't have a consistent way to handle multi-line
14 arguments.  Fix, test, and document.
16 ** --target & AC_ARG_PROGRAM
17 Shouldn't *any* `program' be installed as `$target_alias-program' even
18 if AC_ARG_PROGRAM is not called?  That would be much more predictable.
19 Ian?
21 ** AC_CHECK_TOOL...
22 Write a test that checks that it honors the values set by the user.
24 ** autom4te and warnings.
25 Decide what must be done.
27 ** AC_DEFINE(func, rpl_func)
28 This scheme causes problems: if for instance, #define malloc
29 rpl_malloc, then the rest of configure will use an undefined malloc.
30 Hence some tests fail.  Up to now we simply #undef these functions
31 where we had a problem (cf. AC_FUNC_MKTIME and AC_FUNC_MMAP for
32 instance).  This is _bad_.  Maybe the #define func rpl_malloc should
33 be performed in another file than confdefs.h, say confh.h, which is
34 used for config.h generation, but not used in configure's own tests.
36 ** AC_PROG_CC
37 Currently it tries to put the C compiler in ANSI C mode by default.
38 We should change this spec so that AC_PROG_CC tries to change the
39 compiler to be the "nicest" mode, i.e. support for the latest standard
40 features (currently ISO C99) plus support for all vendor extensions,
41 even if they are slightly incompatible with C99.  The basic idea here
42 is that AC_PROG_CC should disable pedanticisms and should enable
43 extensions.
45 Have a way to specify different default flags to try; see this thread
46 for more information:
47 <http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00009.html>.
50 * Later
52 ** config.site
53 This guy is really a problem.  It's contents should be read before
54 handling the options, so that the latter properly override the latter,
55 but most people would want a means to have a config.site that depends
56 on $prefix for instance.
58 Some other would like config.site to be looked for in the current
59 directory.
61 Harlan:
63    I'll go further.
65    I'd like to see several layers of config.site available.
67    I'm starting to use "modules" at more places to handle software
68    installation, and it would be helpful to set general things like:
70         prefix=/opt/pkg/@PACKAGE@/@VERSION@
72    once at a global level, and then, for example, have things like:
74         --with-etcdir=$prefix/etc
76    stuffed "above" the various versions of SSH so I wouldn't have to hunt for
77    these things every time it was time to recompile a new version of a
78    previously installed package.
80    Something like:
82      src/config.site            Global stuff
83      ...
84      src/ssh/config.site                package-specific stuff
85      src/ssh/ssh-1.2.27/                the actual source code
87    I'd like to see automake/autoconf better support packaging tools (like
88    modules, the *BSD ports/ stuff, and others would like hooks for RPMs).
91 ** Languages
92 Integrate other Fortrans etc.
94 ** AC_CHECK_FUNCS and AC_TRY_LINK_FUNC
95 I have still not understood what's the difference  between the two
96 which requires to have two different sources: AC_LANG_CALL and
97 AC_LANG_FUNC_LINK_TRY (which names seem to be inappropriate).
98 Wouldn't one be enough?
100 ** Libtool
101 Define once for all the hooks they need, any redefinition of
102 AC_PROG_CC etc. is way too dangerous and too limiting.  The GCC team
103 certainly has requirements too.
105 ** AC_SEARCH_LIBS
106 From: Tom Tromey <tromey@cygnus.com>
107 Subject: AC_SEARCH_LIBS
109 I think AC_SEARCH_LIBS has an unfortunate interface.
111 ACTION-IF-FOUND is run in addition to the default action.  Most
112 autoconf macros don't work this way.  This is confusing.
114 In my case I can't use this macro because it always appends to LIBS.
115 I don't want that.  Instead I want to use ACTION-IF-FOUND to set my
116 own macro.
118 Also there is no documentation on the format of library names expected
119 by the macro.  Even a reference to some other function (e.g., "the
120 library name can have the same forms as with AC_HAVE_LIBRARY" (if that
121 is true, which I haven't looked up) would be fine.
123 ** Revamp the language support
124 We should probably have a language for C89, and C99.  We must give the
125 means to the users to specify some needs over the compilers, and
126 actually look for a good compiler, instead of stopping at the first
127 compiler we find.
129 In fact, the AC_CHECK_PROG macro and variations have proved their
130 limitation: we really need something more powerful and simpler too.
132 We must take into account the specific problems of the GCC team.  We
133 must extend AC_CHECK_FUNCS in order to use the headers instead of fake
134 declarations as we currently do.  Default headers could be triggered
135 on when C99, but not with the other languages?
137 At the end, we should have a simple macro, such as AC_LANG_COMPILER
138 for instance, which is built over simpler macros.  Each language
139 support should come with these simpler macros, but each language
140 should follow the same process.
142 We also need to check the srcext which are supported by the compiler.
143 In fact, this macro is also probably the right place to check for
144 objext and exeext.
146 ** AC_PROG_CC_STDC
147 Should be: AC_PROG_CC_ISO?  Or even more specific for the ISO version?
148 Should include more tests (e.g., AC_C_CONST etc.)?  See Peter for very
149 useful comments on the technology.  Should we make this a new
150 language?  AC_LANG(ISO C).  It would be great to introduce
151 AC_LANG_COMPILER in this release too.
153 ** autoupdate
154 We should probably install the files which do not depend upon the
155 user, just the Autoconf library files.  But conversely autoupdate must
156 be opened to user macros, i.e., for instance libtool itself must be
157 able to say that AM_PROG_LIBTOOL is now AC_PROG_LIBTOOL, and have
158 autoupdate do its job on old configure.ac.
160 * Even later
162 ** Pentateuch
163 Heck, there is nothing after `Deuteronomy'!  We're stuck, but we
164 _must_ update the `history' section.  Can't go to `New testament', we
165 might hurt feelings?  In addition, it means that the Messiah has come,
166 which might be slightly presumptuous :).  Still, someone fluent in
167 English should write it.
169 ** AC_PATH_X
170 Hi Robert,
172 > Hi, autoconf people.  While packaging plotutils-2.2 (just released),
173 > I noticed what looks like a small error in the autoconf-2.13 texinfo
174 > documentation, the entry for AC_PATH_XTRA, in particular.
176 > The documentation says that AC_PATH_XTRA
177 >       ... adds the C compiler flags that X needs to output variable
178 >       `X_CFLAGS', and the X linker flags to `X_LIBS'.  If X is not
179 >       available, adds `-DX_DISPLAY_MISSING' to `X_CFLAGS'.
181 > It doesn't seem to add -DX_DISPLAY_MISSING to X_CFLAGS.  X_DISPLAY_MISSING
182 > ends up defined in config.h, instead.
184 That's only because you're no doubt using AC_CONFIG_HEADER(..) to send
185 your defines to a config.h-style file.  If you were to not use
186 AC_CONFIG_HEADER and X was not available, then you would see
187 -DX_DISPLAY_MISSING being added to @DEFS@ as your output files were being
188 generated.
190 But you are right--the documentation is not clear about this.  I'll change
193 > In fact it looks to me as if right now, X_CFLAGS is used only for
194 > specifying directories where X include files are stored, via the `-I' option.
195 > Maybe it should really be called X_CPPFLAGS?
197 Well, perhaps.  If you feel strongly about this, feel free to submit a
198 change-request.  There is a hyperlink to the bug tracking database from
199 http://sourceware.cygnus.com/autoconf/.  With the way it reads in the
200 manual right now, it's designed to allow the user to set additional flags
201 in the environment prior to running configure--and these don't need to be
202 limited to just -I flags.  Nevertheless, I can see a few clean ways to
203 improve this.
205 ** AC_SYS_INTERPRETER
206 Defines $interpval.  This is not a standard name.  Do we want to keep
207 this?  Clarify our policy on those names.
209 ** Allow --recursive to config.status
210 So that --recheck does not pass --no-recursive to configure.
212 * autoconf.texi
213 Move the specific macro documentation blocks into the source files,
214 and use a doc-block extraction/merge technique to get documentation
215 into texi-file.  This should help avoid bit-rot in the doc, and make
216 the doc easier to update when people add/change macros.  The name
217 "autodoc" is probably already taken so we probably need another one.
219 ------------------------------------------------------------------------------
221 * m4
223 ** I18n
224 The error messages for indir and dumpdef are uselessly different.  Fix
225 this for translators.
227 ** Tracing `builtin'
228 F**k!  --trace FOO does not catch indir([FOO], $@)!
229 Fixed in M4 1.6, but we can't rely on it yet.
231 * Autoconf 3
233 ** Cache name spaces.
234 Cf the discussion with Kaveh.  One would like to
235 AC_CHECK_FUNCS(bar)
236 # Do something that changes the environment
237 AC_CACHE_PUSH(foo)
238 AC_CHECK_FUNCS(bar)
239 AC_CACHE_POP
240 in order not to erase the results of a check with another.
242 ** Cache var names
243 should depend upon the current language.
245 ** Use m4 lists?
246 I think one sad decision in Autoconf was to use white space separated
247 lists for some arguments.  For instance AC_CHECK_FUNCS(foo bar).  I
248 tend to think that, even if it is not as nice, we should use m4 lists,
249 i.e., AC_CHECK_FUNCS((foo, bar)) in this case.  This would ease
250 specializing loops, and more importantly, make them much more robust.
252 A typical example of things that can be performed if we use m4 lists
253 instead of white space separated lists is the case of things that have
254 a space in their names, eg, structures.
256 With the current scheme it would be extremely difficult to loop over
257 AC_CHECK_STRUCTS(struct foo struct bar), while it natural and well
258 defined for m4 lists: AC_CHECK_STRUCTS((struct foo, struct bar)).
260 I know that makes a huge difference in syntax, but a major release
261 should be ready to settle a new world.  We *can* provide helping tools
262 for the transition.  Considering the benefits, I really think it is
263 worth thinking. --akim
265 ** Forbid shell variables as main arguments
266 The fact that we have to support shell variables as main argument
267 forbids many interesting constructions (specialization are not always
268 possible, equally for AC_REQUIRE'ing macros *with their arguments*).
269 Any loop should be handled by m4 itself, and nothing should be hidden
270 to it.  As a consequence, shell variables on the main arguments become
271 useless (the main reason we support shell variables is to allow the
272 loop versions of single argument macros, eg, to go from AC_CHECK_FUNC
273 to AC_CHECK_FUNCS). --akim
275 ** Use the @SUBST@ technology also for headers instead of #undef.
276 This requires that acconfig.h becomes completely obsolete: autoheader
277 should generate all the templates.
279 ** Specializing loops.
280 For instance, make AC_CHECK_FUNC[S] automatically use any particular
281 macros for the listed functions.
282 This requires to obsolete the feature `break' in ACTION-IF, since all
283 the loops are to be handled by m4, not sh.
285 ** Faces of a test
286 Each macro can potentially come with several faces: of course the
287 configure snippet (AC_foo), a config.h snippet (AH_foo), a system.h
288 snippet (AS_foo), documentation (AD_foo) and, why not, the some C code
289 for instance to replace a function.
291 The motivation for the `faces' is to encapsulate.  It is abnormal that
292 once one has a configure macro, then she has to read somewhere to find
293 the piece of system.h to use etc.  The macros should come in a
294 self-contained way, or, said it another way, PnP.
296 A major issue is that of specialization.  AC_CHECK_HEADER (or another
297 name) for instance, will have as an effect, via system.h to include
298 the header.  But if the test for the header is specific, the generic
299 AS_CHECK_HEADER will still be used.  Conversely, some headers may not
300 require a specific AC_ tests, but a specialized AS_ macro.
302 ------------------------------------------------------------------------------
304 * Make AC_CHECK_LIB check whether the function is already available
305   before checking for the library.  This might involve adding another
306   kind of cache variable to indicate whether a given function needs a
307   given library.  The current ac_cv_func_ variables are intended to
308   indicate whether the function is in the default libraries, but
309   actually also take into account whatever value LIBS had when they
310   were checked for.
312   Isn't this the issue of AC_SEARCH_LIB? --akim
313   How come the list of libraries to browse not an additional parameter
314   of AC_CHECK_FUNC, exactly like for the headers? --akim
316 ------------------------------------------------------------------------------
318 * Select the right CONFIG_SHELL automatically (for Ultrix, Lynx especially.)
320 ------------------------------------------------------------------------------
322 * Doc: Centralize information on POSIX, MS-DOS, cross-compiling, and
323   other important topics.
325 ------------------------------------------------------------------------------
327 * Mike Haertel's suggestions:
329 ** Cross compiling:
331 *** Error messages include instructions for overriding defaults using
332 config.site.
334 *** Distribute a config.site corresponding to a hypothetical bare POSIX system with c89.
336 ** Site defaults:
338 *** 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.
340 ------------------------------------------------------------------------------
342 * Look at user contributed macros:
343         IEEE double precision math
344         more
346 ------------------------------------------------------------------------------
348 * Provide a way to create a config.h *and* set the DEFS variable from within
349 the same configure script.
351 ------------------------------------------------------------------------------
353 In config.status comment, put the host/target/build types, if used.
355 ------------------------------------------------------------------------------
357 It would be nice if I could (in the Makefile.in files) set the
358 relative name of config.h. You have config.h ../config.h
359 ../../config.h's all over the place, in the findutils-4.1 directory.
360 From: "Randall S. Winchester" <rsw@eng.umd.edu>
362 ------------------------------------------------------------------------------
364         ls -lt configure configure.in | sort
365 doesn't work right if configure.in is from a symlink farm, where the
366 symlink has either a timestamp of its own, or under BSD 4.4, it has
367 the timestamp of the current directory, neither of which
368 helps. Changing it to
369         ls -Llt configure configure.in | sort
370 works for me, though I don't know how portable that is
371 _Mark_ <eichin@cygnus.com>
373 ------------------------------------------------------------------------------
375 Here is the thing I would like the most;
376 AC_PKG_WITH(PACKAGE, HELP_STRING, PACKAGE-ROOT, PACKAGE-LIBS, PACKAGE-DEFS,
377         PACKAGE-CCPFLAGS)
378 like
380 AC_PKG_WITH(kerberos,,/usr/local/athena,-lkrb -ldes,[KERBEROS KRB4
381 CRYPT],include)
382 AC_PKG_WITH(hesiod,
383 [if hesiod is not in kerberos-root add --with-hesiod-root=somewhere]
384 ,,-lhesiod,HESIOD,,)
385 AC_PKG_WITH(glue,,,-lglue,GLUE,,)
386 AC_PKG_WITH(bind,,/usr/local/bind, [lib/resolv.a lib/lib44bsd.a], ,include)
387 After the appropriate checks, the existence of the files, and libs and such
388 LIBS=$LIBS $PKG-LIBS
389 DEFS=$DEFS $PKG-DEFS
390 CPPFLAGS=$PKG-CPPFLAGS $CPPFLAGS
391 $PKG-ROOT=$PKG-ROOT
392 The cppflags should reverse the order so that you can have;
393 -I/usr/local/bind/include -I/usr/local/athena/include
395 -L/usr/local/athena/lib -lkrb -ldes /usr/local/bind/lib/libresolv.a
396 as order matters.
398 also an AC_PKG_CHK_HEADER
399 and an AC_PKG_CHK_FUNCTION
400 so one can give alternate names to check for stuff ($PKG-ROOT/lib for
401 example)
402 From: Randall Winchester
404 ------------------------------------------------------------------------------
406 AC_C_CROSS assumes that configure was called like 'CC=target-gcc;
407 ./configure'. I want to write a package that has target dependent
408 libraries and host dependent tools. So I don't like to lose the
409 distinction between CC and [G]CC_FOR_TARGET.  AC_C_CROSS should check
410 for equality of target and host.
412 It would be great if
414 GCC_FOR_TARGET
415 AR_FOR_TARGET
416 RANLIB_FOR_TARGET
418 would be set automatically if host != target.
419 AC_LANG_CROSS_C would be nice too, to check header files
420 etc. with GCC_FOR_TARGET instead of CC
422 Here is one simple test
424 if test "x$host" != "x$target"; then
425 AC_CHECK_PROGS(AR_FOR_TARGET,
426                [$target-ar, $prefix/$target/bin/ar], $target-ar)
427 AC_CHECK_PROGS(RANLIB_FOR_TARGET, $target-ranlib, $target-ranlib)
428                [$target-ranlib, $prefix/$target/bin/ranlib], $target-ranlib)
429 AC_CHECK_PROGS(GCC_FOR_TARGET, $target-gcc, $target-gcc)
430                [$target-gcc, $prefix/$target/bin/gcc], $target-gcc)
433 From: nennker@cs.tu-berlin.DE (Axel Nennker)
435 (also look in the autoconf mailing list archives for the proposed
436 CHECK_TARGET_TOOL macro from Natanael Nerode, a gcc configury guru).
438 ------------------------------------------------------------------------------
440 The problem occurs with the following libc functions in SunOS 5.4:
442         fnmatch glob globfree regcomp regexec regerror regfree wordexp wordfree
444 It also occurs with a bunch more libposix4 functions that most people
445 probably aren't worried about yet, e.g. shm_open.
447 All these functions fail with errno set to ENOSYS (89)
448 ``Operation not applicable''.
450 Perhaps Autoconf should have a specific macro for fnmatch, another for
451 glob+globfree, another for regcomp+regexec+regerror+regfree, and
452 another for wordexp+wordfree.  This wouldn't solve the problem in
453 general, but it should work for Solaris 2.4.  Or Autoconf could limit
454 itself to fnmatch and regcomp, the only two functions that I know have
455 been a problem so far.
457 From Paul Eggert.
459 ------------------------------------------------------------------------------
461 Make easy macros for checking for X functions and libraries, such as Motif.
463 ------------------------------------------------------------------------------
465 There are basically three ways to lock files
466         lockf, fnctl, flock
467 I'd be interested in adding a macro to pick the "right one" if you're
468 interested.
470 From:    Rich Salz <rsalz@osf.org>
472 ------------------------------------------------------------------------------
474 Timezone calculations checks.
476 ------------------------------------------------------------------------------
478 Support different default file system layouts, e.g. SVR4, Linux.
479 Of course, this can be done locally with config.site.
481 ------------------------------------------------------------------------------
483 I wonder if it is possible to get the name of X11's app-defaults
484 directory by autoconf. Moreover, I'd like to have a general way of
485 accessing imake variables by autoconf, something like
487 AC_DEFINE(WINE_APP_DEFAULTS, AC_IMAKE_VAR(XAPPLOADDIR))
489 Slaven Rezic <eserte@cabulja.herceg.de>
491 ------------------------------------------------------------------------------
493 Every user running X11 usually has a directory like *X11* in his PATH
494 variable. By replacing bin by include, you can find good places to
495 look for the include files or libraries.
497 From: rcb5@win.tue.nl (Richard Verhoeven)
499 ------------------------------------------------------------------------------
501 In most cases, when autoscan suggests something, using the search or
502 index command into the Info reader for autoconf manual quickly
503 explains me what the test is about.  However, for header files and
504 functions, the search might fail, because the test is not of the
505 specific kind.  The Autoconf manual should reflect somewhere all
506 header files or functions (non-specific features, generally)
507 triggering autoscan to generate tests, and tell in a few words what is
508 the problem, and the suggested approach for a solution; that is, how
509 one should use the result of testing the feature.
511 From: pinard@iro.umontreal.ca
513 ------------------------------------------------------------------------------
515 It would be nice if the configure script would handle an option such as
516 --x-libraries="/usr/openwin/lib /usr/dt/lib".
518 Rick Boykin <rboykin@cscsun3.larc.nasa.gov>
520 Under Solaris 2.4, the regular X includes and libs and the Motif
521 includes and libs are in different places.  The Emacs configure script
522 actually allows dir1:dir2:dir3 --
524     if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
525       LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
526       LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
527     fi
528     if test "${x_includes}" != NONE && test -n "${x_includes}"; then
529       C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
530     fi
532 ------------------------------------------------------------------------------
534     What messages should be produced by default, if any?
536 Probably only the few most important ones, like which configuration
537 name was used, whether X or Xt are in use, etc. The specific
538 decisions, and progress messages, should be recorded on the terminal
539 only if --verbose is used.
541     --silent just suppresses the "checking for...result"
542     messages, not the "creating FOO" messages.
544 I think the default should be to suppress both.
545 From: Richard Stallman <rms@gnu.ai.mit.edu>
547 There is no distinction now between
548 important decisions (we have X) vs minor decisions (we have lstat).
549 However, there are probably only a few things you deem important enough to
550 announce and only those few things will need to be changed.
551 Perhaps config.status could be written with comments saying what was
552 decided.
553 From: Roland McGrath <roland@gnu.ai.mit.edu>
555 ------------------------------------------------------------------------------
557 Another thing I wish for is a macro which figures out which libraries are
558 needed for BSD-style sockets.  AC_PATH_X already detects this
559 correctly...so it's just a matter of separating out the socket-related code.
560 From: "Joel N. Weber II" <nemo@koa.iolani.honolulu.hi.us>
562 ------------------------------------------------------------------------------
564 in order to use the AC_CANONICAL_SYSTEM macro, I have to have
565 install-sh somewhere nearby --- why is this?  I have no real reason to
566 distribute install-sh, other than that its absence breaks this code.
568 Shouldn't the above loop be looking for config.sub and config.guess?
569 From: jimb@totoro.bio.indiana.edu (Jim Blandy)
571 adding AC_CANONICAL_HOST to my configure.in script caused
572 all sorts of odd/unexplained errors.  Obviously, I had to go
573 get copies of config.guess, config.sub and install-sh from the
574 autoconf distribution, but the error messages and autoconf docs
575 didn't explain that very well.
576 From: bostic@bsdi.com (Keith Bostic)
578 ------------------------------------------------------------------------------
580 Perhaps also have AC_TRY_COMPILER try to link an invalid program, and
581 die if the compiler seemed to succeed--in which case it's not usable
582 with autoconf scripts.
584 ------------------------------------------------------------------------------
586 Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2007, 2008
587 Free Software Foundation, Inc.
589 This program is free software: you can redistribute it and/or modify
590 it under the terms of the GNU General Public License as published by
591 the Free Software Foundation, either version 3 of the License, or
592 (at your option) any later version.
594 This program is distributed in the hope that it will be useful,
595 but WITHOUT ANY WARRANTY; without even the implied warranty of
596 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
597 GNU General Public License for more details.
599 You should have received a copy of the GNU General Public License
600 along with this program.  If not, see <http://www.gnu.org/licenses/>.