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
------------------------------------------------------------------------------
12
** --target & AC_ARG_PROGRAM
13
Shouldn't *any* `program' be installed as `$target_alias-program' even
14
if AC_ARG_PROGRAM is not called? That would be much more predictable.
17
** RedHat's Autoconf page
21
Write a test that checks that it honors the values set by the user.
23
** autom4te and warnings.
24
Decide what must be done.
26
** AC_DEFINE(func, rpl_func)
27
This scheme causes problems: if for instance, #define malloc
28
rpl_malloc, then the rest of configure will use an undefined malloc.
29
Hence some tests fail. Up to now we simply #undef these functions
30
where we had a problem (cf. AC_FUNC_MKTIME and AC_FUNC_MMAP for
31
instance). This is _bad_. Maybe the #define func rpl_malloc should
32
be performed in another file than confdefs.h, say confh.h, which is
33
used for config.h generation, but not used in configure's own tests.
38
Decide with the Automake team whether this macro should list only `.c'
39
files, or it should include the `.h' too. For instance the
40
AC_FUNC_GNU_GETOPT macro could provide the three files, likewise for
41
the macro which allows to choose a regex engine.
44
It is AC_PROG_LIBTOOL that should tell Automake what are the files to
45
ship. We need something similar to AC_LIBOBJ_DECL for all these
52
Integrate other Fortrans etc.
54
** AC_CHECK_FUNCS and AC_TRY_LINK_FUNC
55
I have still not understood what's the difference between the two
56
which requires to have two different sources: AC_LANG_CALL and
57
AC_LANG_FUNC_LINK_TRY (which names seem to be inappropriate).
58
Wouldn't one be enough?
63
** Document AC_COMPILE_IFELSE, AC_LANG_PROGRAM etc.
64
And make AC_TRY_COMPILE etc. obsolete.
67
Define once for all the hooks they need, any redefinition of
68
AC_PROG_CC etc. is way too dangerous and too limiting. The GCC team
69
certainly has requirements too.
72
From: Tom Tromey <tromey@cygnus.com>
73
Subject: AC_SEARCH_LIBS
75
I think AC_SEARCH_LIBS has an unfortunate interface.
77
ACTION-IF-FOUND is run in addition to the default action. Most
78
autoconf macros don't work this way. This is confusing.
80
In my case I can't use this macro because it always appends to LIBS.
81
I don't want that. Instead I want to use ACTION-IF-FOUND to set my
84
Also there is no documentation on the format of library names expected
85
by the macro. Even a reference to some other function (e.g., "the
86
library name can have the same forms as with AC_HAVE_LIBRARY" (if that
87
is true, which I haven't looked up) would be fine.
89
** Revamp the language support
90
We should probably have a language for C89, and C99. We must give the
91
means to the users to specify some needs over the compilers, and
92
actually look for a good compiler, instead of stopping at the first
95
In fact, the AC_CHECK_PROG macro and variations have proved their
96
limitation: we really need something more powerful and simpler too.
98
We must take into account the specific problems of the GCC team. We
99
must extend AC_CHECK_FUNCS in order to use the headers instead of fake
100
declarations as we currently do. Default headers could be triggered
101
on when C99, but not with the other languages?
103
At the end, we should have a simple macro, such as AC_LANG_COMPILER
104
for instance, which is built over simpler macros. Each language
105
support should come with these simpler macros, but each language
106
should follow the same process.
108
We also need to check the srcext which are supported by the compiler.
109
In fact, this macro is also probably the right place to check for
113
Should be: AC_PROG_CC_ISO? Or even more specific for the ISO version?
114
Should include more tests (e.g., AC_C_CONST etc.)? See Peter for very
115
useful comments on the technology. Should we make this a new
116
language? AC_LANG(ISO C). It would be great to introduce
117
AC_LANG_COMPILER in this release too.
120
We should probably install the files which do not depend upon the
121
user, just the Autoconf library files. But conversely autoupdate must
122
be opened to user macros, i.e., for instance libtool itself must be
123
able to say that AM_PROG_LIBTOOL is now AC_PROG_LIBTOOL, and have
124
autoupdate do its job on old configure.ac.
129
Can be introduced even before specializing macros. It just means that
130
specializing macros will call them. OTOH, this doubles our work,
131
since specializing macros will save us from additional typing. But
132
the more powerful autoscan is, the better...
135
Heck, there is nothing after `Deuteronomy'! We're stuck, but we
136
_must_ update the `history' section. Can't go to `New testament', we
137
might hurt feelings? In addition, it means that the Messiah has come,
138
which might be slightly presumptuous :). Still, someone fluent in
139
English should write it.
141
** AC_FUNC_GETLOADAVG
142
We must find a solution for this macro which needs to find
148
> Hi, autoconf people. While packaging plotutils-2.2 (just released),
149
> I noticed what looks like a small error in the autoconf-2.13 texinfo
150
> documentation, the entry for AC_PATH_XTRA, in particular.
152
> The documentation says that AC_PATH_XTRA
153
> ... adds the C compiler flags that X needs to output variable
154
> `X_CFLAGS', and the X linker flags to `X_LIBS'. If X is not
155
> available, adds `-DX_DISPLAY_MISSING' to `X_CFLAGS'.
157
> It doesn't seem to add -DX_DISPLAY_MISSING to X_CFLAGS. X_DISPLAY_MISSING
158
> ends up defined in config.h, instead.
160
That's only because you're no doubt using AC_CONFIG_HEADER(..) to send
161
your defines to a config.h-style file. If you were to not use
162
AC_CONFIG_HEADER and X was not available, then you would see
163
-DX_DISPLAY_MISSING being added to @DEFS@ as your output files were being
166
But you are right--the documentation is not clear about this. I'll change
169
> In fact it looks to me as if right now, X_CFLAGS is used only for
170
> specifying directories where X include files are stored, via the `-I' option.
171
> Maybe it should really be called X_CPPFLAGS?
173
Well, perhaps. If you feel strongly about this, feel free to submit a
174
change-request. There is a hyperlink to the bug tracking database from
175
http://sourceware.cygnus.com/autoconf/. With the way it reads in the
176
manual right now, it's designed to allow the user to set additional flags
177
in the environment prior to running configure--and these don't need to be
178
limited to just -I flags. Nevertheless, I can see a few clean ways to
181
** AC_SYS_INTERPRETER
182
Defines $interpval. This is not a standard name. Do we want to keep
183
this? Clarify our policy on those names.
185
** Allow --recursive to config.status
186
So that --recheck does not pass --no-recursive to configure.
189
Move the specific macro documentation blocks into the source files,
190
and use a doc-block extraction/merge technique to get docuemntation
191
into texi-file. This should help avoid bit-rot in the doc, and make
192
the doc easier to update when people add/change macros. The name
193
"autodoc" is probably already taken so we probably need another one.
195
------------------------------------------------------------------------------
200
The test for a recent missing doesn't hide the error messages from the
204
The section for old macros is not completely up to date. For
205
instance, there is still AM_PROG_LIBTOOL. Anyway, since autoupdate
206
takes care of them, it is no longer the role of Automake to handle
207
this. Most should be removed.
209
** Macros now swallowed by Autoconf.
210
error.m4, obstack.m4, ptrdiff.m4, strtod.m4, termios.m4, winsz.m4.
212
------------------------------------------------------------------------------
217
The error messages for indir and dumpdef are uselessly different. Fix
218
this for translators.
221
F**k! --trace FOO does not catch indir([FOO], $@)!
224
GNU M4 1.4's tracing of builtins is buggy. When run on this input:
228
| define([m4_eval], defn([eval]))
236
| % m4 input.m4 -da -t eval
237
| m4trace: -1- eval(1)
238
| m4trace: -1- m4_eval(2)
239
| m4trace: -1- m4_eval(3)
244
| % m4 input.m4 -da -t m4_eval
247
------------------------------------------------------------------------------
251
** Cache name spaces.
252
Cf the discussion with Kaveh. One would like to
254
# Do something that changes the environment
258
in order not to erase the results of a check with another.
261
should depend upon the current language.
264
I think one sad decision in Autoconf was to use white space separated
265
lists for some arguments. For instance AC_CHECK_FUNCS(foo bar). I
266
tend to think that, even if it is not as nice, we should use m4 lists,
267
i.e., AC_CHECK_FUNCS((foo, bar)) in this case. This would ease
268
specializing loops, and more importantly, make them much more robust.
270
A typical example of things that can be performed if we use m4 lists
271
instead of white space separated lists is the case of things that have
272
a space in their names, eg, structures.
274
With the current scheme it would be extremely difficult to loop over
275
AC_CHECK_STRUCTS(struct foo struct bar), while it natural and well
276
defined for m4 lists: AC_CHECK_STRUCTS((struct foo, struct bar)).
278
I know that makes a huge difference in syntax, but a major release
279
should be ready to settle a new world. We *can* provide helping tools
280
for the transition. Considering the benefits, I really think it is
281
worth thinking. --akim
283
** Forbid shell variables as main arguments
284
The fact that we have to support shell variables as main argument
285
forbids many interesting constructions (specialization are not always
286
possible, equally for AC_REQUIRE'ing macros *with their arguments*).
287
Any loop should be handled by m4 itself, and nothing should be hidden
288
to it. As a consequence, shell variables on the main arguments become
289
useless (the main reason we support shell variables is to allow the
290
loop versions of single argument macros, eg, to go from AC_CHECK_FUNC
291
to AC_CHECK_FUNCS). --akim
293
** Use the @SUBST@ technology also for headers instead of #undef.
294
This requires that acconfig.h becomes completely obsolete: autoheader
295
should generate all the templates.
297
** Specializing loops.
298
For instance, make AC_CHECK_FUNC[S] automatically use any particular
299
macros for the listed functions.
300
This requires to obsolete the feature `break' in ACTION-IF, since all
301
the loops are to be handled by m4, not sh.
304
Each macro can potentially come with several faces: of course the
305
configure snippet (AC_foo), a config.h snippet (AH_foo), a system.h
306
snippet (AS_foo), documentation (AD_foo) and, why not, the some C code
307
for instance to replace a function.
309
The motivation for the `faces' is to encapsulate. It is abnormal that
310
once one has a configure macro, then she has to read somewhere to find
311
the piece of system.h to use etc. The macros should come in a
312
self-contained way, or, said it another way, PnP.
314
A major issue is that of specialization. AC_CHECK_HEADER (or another
315
name) for instance, will have as an effect, via system.h to include
316
the header. But if the test for the header is specific, the generic
317
AS_CHECK_HEADER will still be used. Conversely, some headers may not
318
require a specific AC_ tests, but a specialized AS_ macro.
320
------------------------------------------------------------------------------
322
* Make AC_CHECK_LIB check whether the function is already available
323
before checking for the library. This might involve adding another
324
kind of cache variable to indicate whether a given function needs a
325
given library. The current ac_cv_func_ variables are intended to
326
indicate whether the function is in the default libraries, but
327
actually also take into account whatever value LIBS had when they
330
Isn't this the issue of AC_SEARCH_LIB? --akim
331
How come the list of libraries to browse not an additional parameter
332
of AC_CHECK_FUNC, exactly like for the headers? --akim
334
------------------------------------------------------------------------------
336
* Add AC_PROG_CC_POSIX to replace the current ad-hoc macros for AIX,
339
------------------------------------------------------------------------------
341
* Support creating both config.h and DEFS in the same configure.
343
------------------------------------------------------------------------------
345
* Select the right CONFIG_SHELL automatically (for Ultrix, Lynx especially.)
347
------------------------------------------------------------------------------
349
* Doc: Centralize information on POSIX, MS-DOS, cross-compiling, and
350
other important topics.
352
------------------------------------------------------------------------------
354
* Mike Haertel's suggestions:
356
** Provide header files containing decls for alloca, strings, etc.
360
*** Error messages include instructions for overriding defaults using
363
*** Distribute a config.site corresponding to a hypothetical bare POSIX system with c89.
367
*** 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.
369
------------------------------------------------------------------------------
371
* Look at user contributed macros:
372
IEEE double precision math
375
------------------------------------------------------------------------------
377
For AC_TYPE_SIGNAL signal handlers, provide a way for code to know
378
whether to do "return 0" or "return" (int vs void) to avoid compiler
379
warnings. (Roland McGrath)
381
------------------------------------------------------------------------------
383
In config.status comment, put the host/target/build types, if used.
385
------------------------------------------------------------------------------
387
on hal.gnu.ai.mit.edu, configure is getting the wrong answer for
388
AC_CHECK_FUNCS(select).
390
The problem here is that there's severe name space pollution: when
391
conftest.c includes <ctype.h> to pick up any __stub macro definitions,
392
it's getting a prototype declaration for select(), which collides
393
with the dummy declaration in conftest.c. (The chain of includes
394
is conftest.c -> <ctype.h> -> <sys/localedef.h> -> <sys/lc_core.h>
395
-> <sys/types.h> -> <sys/select.h>.)
397
#define $ac_func __dummy_$ac_func
400
From: kwzh@gnu.ai.mit.edu (Karl Heuer)
402
The test for the isascii function was failing because that function is
403
also a macro. He proposed that the test file look like this:
405
/* Remove any macro definition. */
407
/* Override any gcc2 internal prototype to avoid an error. */
408
char isascii(); isascii();
412
------------------------------------------------------------------------------
414
It would be nice if I could (in the Makefile.in files) set
415
the path to config.h. You have config.h ../config.h ../../config.h's all
416
over the place, in the findutils-4.1 directory.
417
From: "Randall S. Winchester" <rsw@eng.umd.edu>
419
------------------------------------------------------------------------------
421
In a future version (after 2.2), make AC_PROG_{CC,RANLIB,anything else}
425
------------------------------------------------------------------------------
427
ls -lt configure configure.in | sort
428
doesn't work right if configure.in is from a symlink farm, where the
429
symlink has either a timestamp of its own, or under BSD 4.4, it has
430
the timestamp of the current directory, neither of which
431
helps. Changing it to
432
ls -Llt configure configure.in | sort
433
works for me, though I don't know how portable that is
434
_Mark_ <eichin@cygnus.com>
436
------------------------------------------------------------------------------
438
Here is the thing I would like the most;
439
AC_PKG_WITH(PACKAGE, HELP_STRING, PACKAGE-ROOT, PACKAGE-LIBS, PACKAGE-DEFS,
443
AC_PKG_WITH(kerberos,,/usr/local/athena,-lkrb -ldes,[KERBEROS KRB4
446
[if hesiod is not in kerberos-root add --with-hesiod-root=somewhere]
448
AC_PKG_WITH(glue,,,-lglue,GLUE,,)
449
AC_PKG_WITH(bind,,/usr/local/bind, [lib/resolv.a lib/lib44bsd.a], ,include)
450
After the appropriate checks, the existence of the paths, and libs and such
453
CPPFLAGS=$PKG-CPPFLAGS $CPPFLAGS
455
The cppflags should reverse the order so that you can have;
456
-I/usr/local/bind/include -I/usr/local/athena/include
458
-L/usr/local/athena/lib -lkrb -ldes /usr/local/bind/lib/libresolv.a
461
also an AC_PKG_CHK_HEADER
462
and an AC_PKG_CHK_FUNCTION
463
so one can give alternate paths to check for stuff ($PKG-ROOT/lib for
465
From: Randall Winchester
467
------------------------------------------------------------------------------
469
AC_C_CROSS assumes that configure was called like 'CC=target-gcc;
470
./configure'. I want to write a package that has target dependent
471
libraries and host dependent tools. So I don't like to lose the
472
distinction between CC and [G]CC_FOR_TARGET. AC_C_CROSS should check
473
for equality of target and host.
481
would be set automatically if host != target.
482
AC_LANG_CROSS_C would be nice too, to check header files
483
etc. with GCC_FOR_TARGET instead of CC
485
Here is one simple test
487
if test "x$host" != "x$target"; then
488
AC_PROGRAMS_CHECK(AR_FOR_TARGET, $target-ar, $target-ar, ar)
489
AC_PROGRAMS_CHECK(RANLIB_FOR_TARGET, $target-ranlib, $target-ranlib, ranlib)
490
AC_PROGRAMS_CHECK(GCC_FOR_TARGET, $target-gcc, $target-gcc, gcc)
493
This could be improved to also look for gcc in PATH, but require the
494
prefix to contain the target e.g.:
496
target=m68k-coff -->GCC_FOR_TARGET = /usr/gnu/m68k-coff/bin/gcc
498
From: nennker@cs.tu-berlin.DE (Axel Nennker)
500
------------------------------------------------------------------------------
502
The problem occurs with the following libc functions in SunOS 5.4:
504
fnmatch glob globfree regcomp regexec regerror regfree wordexp wordfree
506
It also occurs with a bunch more libposix4 functions that most people
507
probably aren't worried about yet, e.g. shm_open.
509
All these functions fail with errno set to ENOSYS (89)
510
``Operation not applicable''.
512
Perhaps Autoconf should have a specific macro for fnmatch, another for
513
glob+globfree, another for regcomp+regexec+regerror+regfree, and
514
another for wordexp+wordfree. This wouldn't solve the problem in
515
general, but it should work for Solaris 2.4. Or Autoconf could limit
516
itself to fnmatch and regcomp, the only two functions that I know have
517
been a problem so far.
521
------------------------------------------------------------------------------
523
Make easy macros for checking for X functions and libraries, such as Motif.
525
------------------------------------------------------------------------------
527
There are basically three ways to lock files
529
I'd be interested in adding a macro to pick the "right one" if you're
532
From: Rich Salz <rsalz@osf.org>
534
------------------------------------------------------------------------------
536
Timezone calculations checks.
538
------------------------------------------------------------------------------
540
Support different default filesystem layouts, e.g. SVR4, Linux.
541
Of course, this can be done locally with config.site.
543
------------------------------------------------------------------------------
545
I wonder if it is possible to get the path for X11's app-defaults
546
directory by autoconf. Moreover, I'd like to have a general way of
547
accessing imake variables by autoconf, something like
549
AC_DEFINE(WINE_APP_DEFAULTS, AC_IMAKE_VAR(XAPPLOADDIR))
551
Slaven Rezic <eserte@cabulja.herceg.de>
553
------------------------------------------------------------------------------
555
Cache consistency checking: ignore cache if environment
556
(CC or PATH) differs.
559
So we need a general mechanism for storing variables' values in the cache,
560
and checking if they are the same after reading the cache. Then we can add
561
to the list of variables as we come across the need. So far we want
562
LD_LIBRARY_PATH and the internal variables for some of (all?) the args.
563
From: roland@gnu.ai.mit.edu (Roland McGrath)
565
Hmm. That list might include LD_LIBRARY_PATH, LD_RUN_PATH (for solaris),
566
and PATH. I can't think of any others so far.
567
From: friedman@splode.com (Noah Friedman)
569
------------------------------------------------------------------------------
571
Every user running X11 usually has a directory like *X11* in his PATH
572
variable. By replacing bin by include, you can find good places to
573
look for the include files or libraries.
575
From: rcb5@win.tue.nl (Richard Verhoeven)
577
------------------------------------------------------------------------------
579
In most cases, when autoscan suggests something, using the search or
580
index command into the Info reader for autoconf manual quickly
581
explains me what the test is about. However, for header files and
582
functions, the search might fail, because the test is not of the
583
specific kind. The Autoconf manual should reflect somewhere all
584
header files or functions (non-specific features, generally)
585
triggering autoscan to generate tests, and tell in a few words what is
586
the problem, and the suggested approach for a solution; that is, how
587
one should use the result of testing the feature.
589
From: pinard@iro.umontreal.ca
591
------------------------------------------------------------------------------
593
It would be nice if the configure script would handle an option such as
594
--x-libraries="/usr/openwin/lib /usr/dt/lib".
596
Rick Boykin <rboykin@cscsun3.larc.nasa.gov>
598
Under Solaris 2.4, the regular X includes and libs and the Motif
599
includes and libs are in different places. The Emacs configure script
600
actually allows dir1:dir2:dir3 --
602
if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
603
LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
604
LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
606
if test "${x_includes}" != NONE && test -n "${x_includes}"; then
607
C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
610
------------------------------------------------------------------------------
612
What messages should be produced by default, if any?
614
Probably only the few most important ones, like which configuration
615
name was used, whether X or Xt are in use, etc. The specific
616
decisions, and progress messages, should be recorded on the terminal
617
only if --verbose is used.
619
--silent just supresses the "checking for...result"
620
messages, not the "creating FOO" messages.
622
I think the default should be to suppress both.
623
From: Richard Stallman <rms@gnu.ai.mit.edu>
625
There is no distinction now between
626
important decisions (we have X) vs minor decisions (we have lstat).
627
However, there are probably only a few things you deem important enough to
628
announce and only those few things will need to be changed.
629
Perhaps config.status could be written with comments saying what was
631
From: Roland McGrath <roland@gnu.ai.mit.edu>
633
------------------------------------------------------------------------------
635
Another thing I wish for is a macro which figures out which libraries are
636
needed for BSD-sytle sockets. AC_PATH_X already detects this
637
correctly...so it's just a matter of seperating out the socket-related code.
638
From: "Joel N. Weber II" <nemo@koa.iolani.honolulu.hi.us>
640
------------------------------------------------------------------------------
642
in order to use the AC_CANONICAL_SYSTEM macro, I have to have
643
install-sh somewhere nearby --- why is this? I have no real reason to
644
distribute install-sh, other than that its absence breaks this code.
646
Shouldn't the above loop be looking for config.sub and config.guess?
647
From: jimb@totoro.bio.indiana.edu (Jim Blandy)
649
adding AC_CANONICAL_HOST to my configure.in script caused
650
all sorts of odd/unexplained errors. Obviously, I had to go
651
get copies of config.guess, config.sub and install-sh from the
652
autoconf distribution, but the error messages and autoconf docs
653
didn't explain that very well.
654
From: bostic@bsdi.com (Keith Bostic)
656
------------------------------------------------------------------------------
658
Perhaps also have AC_TRY_COMPILER try to link an invalid program, and
659
die if the compiler seemed to succeed--in which case it's not usable
660
with autoconf scripts.
662
------------------------------------------------------------------------------
664
Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software
667
This file is part of GNU Autoconf.
669
GNU Autoconf is free software; you can redistribute it and/or modify
670
it under the terms of the GNU General Public License as published by
671
the Free Software Foundation; either version 2, or (at your option)
674
GNU Autoconf is distributed in the hope that it will be useful,
675
but WITHOUT ANY WARRANTY; without even the implied warranty of
676
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
677
GNU General Public License for more details.
679
You should have received a copy of the GNU General Public License
680
along with autoconf; see the file COPYING. If not, write to
681
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
682
Boston, MA 02111-1307, USA.