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