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 6 7------------------------------------------------------------------------------ 8 9* Make AC_CHECK_LIB check whether the function is already available 10 before checking for the library. This might involve adding another 11 kind of cache variable to indicate whether a given function needs a 12 given library. The current ac_cv_func_ variables are intended to 13 indicate whether the function is in the default libraries, but 14 actually also take into account whatever value LIBS had when they 15 were checked for. 16 17------------------------------------------------------------------------------ 18 19* Add AC_PROG_CC_POSIX to replace the current ad-hoc macros for AIX, 20 Minix, ISC, etc. 21 22------------------------------------------------------------------------------ 23 24* Use AC_EGREP_CPP instead of AC_TRY_LINK to detect structures and members. 25 26------------------------------------------------------------------------------ 27 28* Make AC_CHECK_FUNC[S] automatically use any particular macros for the 29 listed functions. 30 31------------------------------------------------------------------------------ 32 33* Support creating both config.h and DEFS in the same configure. 34 35------------------------------------------------------------------------------ 36 37* Select the right CONFIG_SHELL automatically (for Ultrix, Lynx especially.) 38 39------------------------------------------------------------------------------ 40 41* Doc: Add a concept index. 42 43------------------------------------------------------------------------------ 44 45* Doc: Centralize information on POSIX, MS-DOS, cross-compiling, and 46 other important topics. 47 48------------------------------------------------------------------------------ 49 50* Split up AC_SUBST substitutions using a loop to accomodate shells 51 with severely limited here document sizes, if it turns out to be a problem. 52 I'm not sure whether the limit is on lines or bytes; if bytes, it 53 will be less of a problem than it was with the long lines used for 54 creating a header file. 55 56------------------------------------------------------------------------------ 57 58* Allow [ and ] in AC_DEFINE args. 59 60------------------------------------------------------------------------------ 61 62* Mike Haertel's suggestions: 63 64** Provide header files containing decls for alloca, strings, etc. 65 66** Cross compiling: 67 68*** Error messages include instructions for overriding defaults using 69config.site. 70 71*** Distribute a config.site corresponding to a hypothetical bare POSIX system with c89. 72 73** Site defaults: 74 75*** 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. 76 77------------------------------------------------------------------------------ 78 79* autoscan: Tell the files that caused inclusion of each macro, 80in a dnl comment. (Seems to be hard.) 81 82------------------------------------------------------------------------------ 83 84* Look at user contributed macros: 85 prototypes 86 IEEE double precision math 87 more 88 89------------------------------------------------------------------------------ 90 91For AC_TYPE_SIGNAL signal handlers, provide a way for code to know 92whether to do "return 0" or "return" (int vs void) to avoid compiler 93warnings. (Roland McGrath) 94 95------------------------------------------------------------------------------ 96 97In config.status comment, put the host/target/build types, if used. 98 99------------------------------------------------------------------------------ 100 101Have AC_CANONICAL_* cache the host/build/target types. 102They have to be overridden by the command line arguments, 103just as for X includes and libraries. Should they be cached 104all in one variable, or three? In that case, what if only one 105or two of the cache variables are set? 106 107------------------------------------------------------------------------------ 108 109 The argument HELP-STRING is a description of the option which 110 ... 111 Avoid tabs in the help string. You'll need to enclose it in `[' 112 and `]' in order to produce the leading spaces. 113 114Except that [...] is the convention for telling the user the default, 115So I guess a changequote(`,') or something would be in order in some cases. 116From: "K. Berry" <kb@cs.umb.edu> 117 118------------------------------------------------------------------------------ 119 120The default of unlimited permission is fine, but there should be some easy 121way for configure to have copyright terms passed through from configure.in. 122Maybe AC_LICENSE([...]). 123From: roland@gnu.ai.mit.edu (Roland McGrath) 124 125------------------------------------------------------------------------------ 126 127AC_MSG_CHECKING([checking for ANSI #stringize]) 128AC_REVISION([ #(@) revision 2.1 ]) 129 130causes bogus code to be generated for whatever immediately follows. The 131problem goes away if the '#' is removed. Probably the macros are not 132disabling the m4 "comment" feature when processing user-supplied strings. 133-Jim Avera jima@netcom.com 134 135------------------------------------------------------------------------------ 136 137on hal.gnu.ai.mit.edu, configure is getting the wrong answer for 138AC_CHECK_FUNCS(select). 139 140The problem here is that there's severe namespace pollution: when 141conftest.c includes <ctype.h> to pick up any __stub macro definitions, 142it's getting a prototype declaration for select(), which collides 143with the dummy declaration in conftest.c. (The chain of includes 144is conftest.c -> <ctype.h> -> <sys/localedef.h> -> <sys/lc_core.h> 145-> <sys/types.h> -> <sys/select.h>.) 146 147 #define $ac_func __dummy_$ac_func 148 #include <ctype.h> 149 #undef $ac_func 150From: kwzh@gnu.ai.mit.edu (Karl Heuer) 151 152The test for the isascii function was failing because that function is 153also a macro. He proposed that the test file look like this: 154 155/* Remove any macro definition. */ 156#undef isascii 157/* Override any gcc2 internal prototype to avoid an error. */ 158char isascii(); isascii(); 159 160Andreas Schwab 161 162------------------------------------------------------------------------------ 163 164put all the config.* stuff somewhere like config/? 165All these extraneous files sure clutter up a toplevel directory. 166From: "Randall S. Winchester" <rsw@eng.umd.edu> 167 168------------------------------------------------------------------------------ 169 170It would be nice if I could (in the Makefile.in files) set 171the path to config.h. You have config.h ../config.h ../../config.h's all 172over the place, in the findutils-4.1 directory. 173From: "Randall S. Winchester" <rsw@eng.umd.edu> 174 175------------------------------------------------------------------------------ 176 177In libc and make in aclocal.m4 I have AC_CHECK_SYMBOL, which checks for 178sys_siglist et al. Using AC_CHECK_FUNC doesn't work on some system that 179winds up caring that you reference it as a function and it is really a 180variable. My version always declares the symbol as a char *[]; if that 181ends up a bad idea, we can have it take an arg with the C decl, but that is 182a bit verbose to write if it's actually superfluous. 183From Roland McGrath. 184[I'd call it AC_CHECK_VAR, I think. -djm] 185 186------------------------------------------------------------------------------ 187 188In a future version (after 2.2), make AC_PROG_{CC,RANLIB,anything else} 189use AC_CHECK_TOOL. 190From Roland McGrath. 191 192------------------------------------------------------------------------------ 193 194 ls -lt configure configure.in | sort 195doesn't work right if configure.in is from a symlink farm, where the 196symlink has either a timestamp of its own, or under BSD 4.4, it has 197the timestamp of the current directory, neither of which 198helps. Changing it to 199 ls -Llt configure configure.in | sort 200works for me, though I don't know how portable that is 201_Mark_ <eichin@cygnus.com> 202 203------------------------------------------------------------------------------ 204 205Here is the thing I would like the most; 206AC_PKG_WITH(PACKAGE, HELP_STRING, PACKAGE-ROOT, PACKAGE-LIBS, PACKAGE-DEFS, 207 PACKAGE-CCPFLAGS) 208like 209 210AC_PKG_WITH(kerberos,,/usr/local/athena,-lkrb -ldes,[KERBEROS KRB4 211CRYPT],include) 212AC_PKG_WITH(hesiod, 213[if hesiod is not in kerberos-root add --with-hesiod-root=somewhere] 214,,-lhesiod,HESIOD,,) 215AC_PKG_WITH(glue,,,-lglue,GLUE,,) 216AC_PKG_WITH(bind,,/usr/local/bind, [lib/resolv.a lib/lib44bsd.a], ,include) 217After the apropriate checks, the existance of the paths, and libs and such 218LIBS=$LIBS $PKG-LIBS 219DEFS=$DEFS $PKG-DEFS 220CPPFLAGS=$PKG-CPPFLAGS $CPPFLAGS 221$PKG-ROOT=$PKG-ROOT 222The cppflags should reverse the order so that you can have; 223-I/usr/local/bind/include -I/usr/local/athena/include 224and 225-L/usr/local/athena/lib -lkrb -ldes /usr/local/bind/lib/libresolv.a 226as order matters. 227 228also an AC_PKG_CHK_HEADER 229and an AC_PKG_CHK_FUNCTION 230so one can give alternate paths to check for stuff ($PKG-ROOT/lib for 231example) 232From: Randall Winchester 233 234------------------------------------------------------------------------------ 235 236AC_C_CROSS assumes that configure was 237called like 'CC=target-gcc; ./configure'. I want to write a package 238that has target dependent libraries and host dependent tools. So I 239don't like to lose the distinction between CC and [G]CC_FOR_TARGET. 240AC_C_CROSS should check for equality of target and host. 241 242It would be great if 243 244GCC_FOR_TARGET 245AR_FOR_TARGET 246RANLIB_FOR_TARGET 247 248would be set automatically if host != target. 249AC_LANG_CROSS_C would be nice too, to check header files 250etc. with GCC_FOR_TARGET instead of CC 251 252Here is one simple test 253 254if test "x$host" != "x$target"; then 255AC_PROGRAMS_CHECK(AR_FOR_TARGET, $target-ar, $target-ar, ar) 256AC_PROGRAMS_CHECK(RANLIB_FOR_TARGET, $target-ranlib, $target-ranlib, ranlib) 257AC_PROGRAMS_CHECK(GCC_FOR_TARGET, $target-gcc, $target-gcc, gcc) 258fi 259 260This could be improved to also look for gcc in PATH, but require the 261prefix to contain the target e.g.: 262 263target=m68k-coff -->GCC_FOR_TARGET = /usr/gnu/m68k-coff/bin/gcc 264 265From: nennker@cs.tu-berlin.DE (Axel Nennker) 266 267------------------------------------------------------------------------------ 268 269The problem occurs with the following libc functions in SunOS 5.4: 270 271 fnmatch glob globfree regcomp regexec regerror regfree wordexp wordfree 272 273It also occurs with a bunch more libposix4 functions that most people 274probably aren't worried about yet, e.g. shm_open. 275 276All these functions fail with errno set to ENOSYS (89) 277``Operation not applicable''. 278 279Perhaps autoconf should have a 280specific macro for fnmatch, another for glob+globfree, another for 281regcomp+regexec+regerror+regfree, and another for wordexp+wordfree. 282This wouldn't solve the problem in general, but it should work for 283Solaris 2.4. Or autoconf could limit itself to fnmatch and regcomp, 284the only two functions that I know have been a problem so far. 285 286From Paul Eggert. 287 288------------------------------------------------------------------------------ 289 290Make easy macros for checking for X functions and libraries, such as Motif. 291 292------------------------------------------------------------------------------ 293 294* Test suite: more things to test: 295** That the shell scripts produce correct output on some simple data. 296** Configuration header files. That autoheader does the right thing, 297 and so does AC_CONFIG_HEADER when autoconf is run. 298 299------------------------------------------------------------------------------ 300 301Autoheader in autoconf-2.4 doesn't produce entries for: 302 303 AC_CHECK_TYPE(ssize_t, int) 304 305and it seems like it could easily do so. 306 307In general, it seems to me like autoconf isn't set up to 308let me periodically run autoheader, and then include my 309"local" tests -- autoheader gets most stuff right, I'd like 310to rerun it periodically without losing my local changes 311to config.h.in. 312 313One of the things that I need is to know is the type to use 314for a fixed size on disk, e.g., what is the system's name 315for an unsigned-32-bit integer? 316 317I can use: 318 319 AC_CHECK_SIZEOF(unsigned int) 320 321and, in fact, that's what I do. But I still have to build 322sets of #if tests to get from there to the name of the type. 323 324From: bostic@bsdi.com (Keith Bostic) 325 326------------------------------------------------------------------------------ 327 328There are basically three ways to lock files 329 lockf, fnctl, flock 330I'd be interested in adding a macro to pick the "right one" if you're 331interested. 332 333From: Rich Salz <rsalz@osf.org> 334 335------------------------------------------------------------------------------ 336 337It is IMHO a bug that `config.status' cannot handle multiple 338simultaneous invocations. It should include the process id (`$$' in sh) 339as part of the name of any temporary files it creates. 340 341From: fjh@kryten.cs.mu.oz.au (Fergus Henderson) 342 343------------------------------------------------------------------------------ 344 345Timezone calculations checks. 346 347------------------------------------------------------------------------------ 348 349Support different default filesystem layouts, e.g. SVR4, Linux. 350Of course, this can be done locally with config.site. 351 352------------------------------------------------------------------------------ 353 354Mention automake, libtool, etc. in the autoconf manual. 355 356------------------------------------------------------------------------------ 357 358I wonder if it is possible to get the path for X11's app-defaults 359directory by autoconf. Moreover, I'd like to have a general way of 360accessing imake variables by autoconf, something like 361 362AC_DEFINE(WINE_APP_DEFAULTS, AC_IMAKE_VAR(XAPPLOADDIR)) 363 364Slaven Rezic <eserte@cabulja.herceg.de> 365 366------------------------------------------------------------------------------ 367 368Question: at least one common UNIX variant has a "cc" that is old K&R 369and "c89" for ANSI C. Is there any reason why AC_PROG_CC couldn't 370check for c89 before cc if it can't find gcc? 371 372hpa@yggdrasil.com (H. Peter Anvin) 373 374------------------------------------------------------------------------------ 375 376Cache consistency checking: ignore cache if environment 377(CC or PATH) differs. 378From Mike Haertel 379 380So we need a general mechanism for storing variables' values in the cache, 381and checking if they are the same after reading the cache. Then we can add 382to the list of variables as we come across the need. So far we want 383LD_LIBRARY_PATH and the internal variables for some of (all?) the args. 384From: roland@gnu.ai.mit.edu (Roland McGrath) 385 386Hmm. That list might include LD_LIBRARY_PATH, LD_RUN_PATH (for solaris), 387and PATH. I can't think of any others so far. 388From: friedman@splode.com (Noah Friedman) 389 390------------------------------------------------------------------------------ 391 392So how about an option to configure --reset-cache, that says to ignore all 393existing cached values for tests that configure runs, and then update the 394cache normally. This should be utterly trivial to do in AC_CACHE_VAL; 395check the flag variable and always compute the value if it's set. 396 397------------------------------------------------------------------------------ 398 399A number of people have tried to fix configuration problems by editing 400acconfig.h. (Despite comments at the top of the file.) I think they're 401confused because anything.h looks like a regular source file name. 402Maybe acconfig.h could be called acconfig.extra or something? 403 404From: kb@cs.umb.edu (K. Berry) 405 406------------------------------------------------------------------------------ 407 408Every user running 409X11 usually has a directory like *X11* in his PATH variable. By replacing 410bin by include, you can find good places to look for the include files 411or libraries. 412 413From: rcb5@win.tue.nl (Richard Verhoeven) 414 415------------------------------------------------------------------------------ 416 417When using CONFIG_FILES= and CONFIG_HEADERS= for controlling 418partial configuration, any AC_LINK_FILES is repeated in each case 419(that is, usually, once for config.h and once per subdirectory). 420This is not elegant. 421 422Maybe Autoconf could use some kind of CONFIG_LINKS=<file-list>, 423having all such AC_LINK(ed)_FILES by default, but usable by each 424Makefile.in in rules for updating the particular links they need. 425 426From: pinard@iro.umontreal.ca 427 428------------------------------------------------------------------------------ 429 430Perhaps autoconf could have a single @magic@ frob that gets replaced with 431assignments for all the *dir variables? There is quite a plethora for each 432Makefile.in to have foodir = @foodir@. 433 434From: Roland McGrath <roland@gnu.ai.mit.edu> 435 436------------------------------------------------------------------------------ 437 438In most cases, when autoscan suggests something, using the search 439or index command into the Info reader for autoconf manual quickly 440explains me what the test is about. However, for header files 441and functions, the search might fail, because the test is not of 442the specific kind. The Autoconf manual should reflect somewhere 443all header files or functions (non-specific features, generally) 444triggering autoscan to generate tests, and tell in a few words 445what is the problem, and the suggested approach for a solution; 446that is, how one should use the result of testing the feature. 447 448From: pinard@iro.umontreal.ca 449 450------------------------------------------------------------------------------ 451 452It would be nice if the configure script would handle an option such as 453--x-libraries="/usr/openwin/lib /usr/dt/lib". 454 455Rick Boykin <rboykin@cscsun3.larc.nasa.gov> 456 457Under Solaris 2.4, the regular X includes and libs and the Motif 458includes and libs are in different places. The Emacs configure script 459actually allows dir1:dir2:dir3 -- 460 461 if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then 462 LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"` 463 LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"` 464 fi 465 if test "${x_includes}" != NONE && test -n "${x_includes}"; then 466 C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"` 467 fi 468 469------------------------------------------------------------------------------ 470 471 What messages should be produced by default, if any? 472 473Probably only the few most important ones, like which configuration 474name was used, whether X or Xt are in use, etc. The specific 475decisions, and progress messages, should be recorded on the terminal 476only if --verbose is used. 477 478 --silent just supresses the "checking for...result" 479 messages, not the "creating FOO" messages. 480 481I think the default should be to suppress both. 482From: Richard Stallman <rms@gnu.ai.mit.edu> 483 484There is no distinction now between 485important decisions (we have X) vs minor decisions (we have lstat). 486However, there are probably only a few things you deem important enough to 487announce and only those few things will need to be changed. 488Perhaps config.status could be written with comments saying what was 489decided. 490From: Roland McGrath <roland@gnu.ai.mit.edu> 491 492------------------------------------------------------------------------------ 493 494Use automake to generate autoconf's Makefile.in's? 495 496------------------------------------------------------------------------------ 497 498about the idea of using small configure.in/aclocal.m4 snippets: 499this is the one idea in metaconfig (the autoconf-like program used by 500Perl) that I like. metaconfig looks for a "U" directory, and includes 501each ".U" file into the generated Configure script (according to 502various complicated rules). 503From: Tom Tromey <tromey@creche.cygnus.com> 504 505------------------------------------------------------------------------------ 506 507I'd much prefer to see the absolute paths substituted for all the 508standard "dir" variables. It would be nice to have variables in 509configure that held the absolute paths. And it is nice to be able to 510substitute them into other files without relying on the destination 511file supporting ${...} syntax. (It works in Perl, sh, and make -- 512but not guile) 513 514From: Tom Tromey <tromey@creche.cygnus.com> 515 516------------------------------------------------------------------------------ 517 518Another thing I wish for is a macro which figures out which libraries are 519needed for BSD-sytle sockets. AC_PATH_X already detects this 520correctly...so it's just a matter of seperating out the socket-related code. 521From: "Joel N. Weber II" <nemo@koa.iolani.honolulu.hi.us> 522 523------------------------------------------------------------------------------ 524 525Merge the two lex macros, AC_PROG_LEX and AC_DECL_YYTEXT? 526 527------------------------------------------------------------------------------ 528 529in order to use the AC_CANONICAL_SYSTEM macro, I have to 530have install-sh somewhere nearby --- why is this? I have no real 531reason to distribute install-sh, other than that its absence breaks 532this code. 533 534Shouldn't the above loop be looking for config.sub and config.guess? 535From: jimb@totoro.bio.indiana.edu (Jim Blandy) 536 537adding AC_CANONICAL_HOST to my configure.in script caused 538all sorts of odd/unexplained errors. Obviously, I had to go 539get copies of config.guess, config.sub and install-sh from the 540autoconf distribution, but the error messages and autoconf docs 541didn't explain that very well. 542From: bostic@bsdi.com (Keith Bostic) 543 544------------------------------------------------------------------------------ 545 546Perhaps also have AC_TRY_COMPILER try to link an invalid program, and 547die if the compiler seemed to succeed--in which case it's not usable 548with autoconf scripts. 549 550------------------------------------------------------------------------------ 551 552there is absolutely no guarantee that 'a' to 'z' are 553contiguous, and the ISLOWER macro is not guaranteed to correctly 554reproduce the result of islower. In all variants of ASCII however, it 555will work correctly in the C locale. 556 557There is also no guarantee that toupper(i) - i is the same constant if 558non-zero. TOUPPER, hence, is not correct either. But, in all variants 559of ASCII in the C locale, it works. 560 561Tanmoy Bhattacharya (tanmoy@qcd.lanl.gov> 562 563------------------------------------------------------------------------------ 564 565autoreconf doesn't support having (in the same tree) both directories 566that are parts of a larger package (sharing aclocal.m4 and acconfig.h), 567and directories that are independent packages (each with their own ac*). 568It assumes that they are all part of the same package, if you use --localdir, 569or that each directory is a separate package, if you don't use it. 570 571autoreconf should automatically figure out which ac* files to use--the 572closest ones up the tree from each directory, probably, unless 573overridden by --localdir. 574 575Also, autoreconf recurses on all subdirectories containing a 576configure.in, not just those given by an AC_CONFIG_SUBDIRS directive. 577This may not be a problem in practice. 578 579------------------------------------------------------------------------------ 580 581