📄 todo
字号:
-*- outline -*-Things it might be nice to do someday. I haven't evaluated all ofthese suggestions... their presence here doesn't imply my endorsement.-djm & his successors.------------------------------------------------------------------------------* Soon** AC_CHECK_HEADERSand the like, don't have a consistent way to handle multi-linearguments. Fix, test, and document.** AC_PROG_INSTALLThis test should be extended to check that install supports the GNUInstall syntax: install FILES... DIR. This will relieve everybodyform having to use mkinstalldirs to create the directories, as installdoes it itself. install-sh is already handling this case. This alsomakes it simple not to create the directories where nothing will beinstalled because of configuration options, which is next toimpossible using the current setting.In other words: everything is ready (install-sh and Automake), we justneed a good reimplementation of AC_PROG_INSTALL.** --target & AC_ARG_PROGRAMShouldn't *any* `program' be installed as `$target_alias-program' evenif AC_ARG_PROGRAM is not called? That would be much more predictable.Ian?** AC_CHECK_TOOL...Write a test that checks that it honors the values set by the user.** autom4te and warnings.Decide what must be done.** AC_DEFINE(func, rpl_func)This scheme causes problems: if for instance, #define mallocrpl_malloc, then the rest of configure will use an undefined malloc.Hence some tests fail. Up to now we simply #undef these functionswhere we had a problem (cf. AC_FUNC_MKTIME and AC_FUNC_MMAP forinstance). This is _bad_. Maybe the #define func rpl_malloc shouldbe performed in another file than confdefs.h, say confh.h, which isused for config.h generation, but not used in configure's own tests.** AC_PROG_CCCurrently it tries to put the C compiler in ANSI C mode by default.We should change this spec so that AC_PROG_CC tries to change thecompiler to be the "nicest" mode, i.e. support for the latest standardfeatures (currently ISO C99) plus support for all vendor extensions,even if they are slightly incompatible with C99. The basic idea hereis that AC_PROG_CC should disable pedanticisms and should enableextensions.** AC_GNU_SOURCE, AC_AIX, and AC_MINIXDeprecate these, as they will be superseded by the AC_PROG_CC changes.* Later** config.siteThis guy is really a problem. It's contents should be read beforehandling the options, so that the latter properly override the latter,but most people would want a means to have a config.site that dependson $prefix for instance.Some other would like config.site to be looked for in the currentdirectory.Harlan: I'll go further. I'd like to see several layers of config.site available. I'm starting to use "modules" at more places to handle software installation, and it would be helpful to set general things like: prefix=/opt/pkg/@PACKAGE@/@VERSION@ once at a global level, and then, for example, have things like: --with-etcdir=$prefix/etc stuffed "above" the various versions of SSH so I wouldn't have to hunt for these things every time it was time to recompile a new version of a previously installed package. Something like: src/config.site Global stuff ... src/ssh/config.site package-specific stuff src/ssh/ssh-1.2.27/ the actual source code I'd like to see automake/autoconf better support packaging tools (like modules, the *BSD ports/ stuff, and others would like hooks for RPMs).** LanguagesIntegrate other Fortrans etc.** AC_CHECK_FUNCS and AC_TRY_LINK_FUNCI have still not understood what's the difference between the twowhich requires to have two different sources: AC_LANG_CALL andAC_LANG_FUNC_LINK_TRY (which names seem to be inappropriate).Wouldn't one be enough?** Document AC_COMPILE_IFELSE, AC_LANG_PROGRAM etc.And make AC_TRY_COMPILE etc. obsolete.** LibtoolDefine once for all the hooks they need, any redefinition ofAC_PROG_CC etc. is way too dangerous and too limiting. The GCC teamcertainly has requirements too.** AC_SEARCH_LIBSFrom: Tom Tromey <tromey@cygnus.com>Subject: AC_SEARCH_LIBSI think AC_SEARCH_LIBS has an unfortunate interface.ACTION-IF-FOUND is run in addition to the default action. Mostautoconf macros don't work this way. This is confusing.In my case I can't use this macro because it always appends to LIBS.I don't want that. Instead I want to use ACTION-IF-FOUND to set myown macro.Also there is no documentation on the format of library names expectedby the macro. Even a reference to some other function (e.g., "thelibrary name can have the same forms as with AC_HAVE_LIBRARY" (if thatis true, which I haven't looked up) would be fine.** Revamp the language supportWe should probably have a language for C89, and C99. We must give themeans to the users to specify some needs over the compilers, andactually look for a good compiler, instead of stopping at the firstcompiler we find.In fact, the AC_CHECK_PROG macro and variations have proved theirlimitation: we really need something more powerful and simpler too.We must take into account the specific problems of the GCC team. Wemust extend AC_CHECK_FUNCS in order to use the headers instead of fakedeclarations as we currently do. Default headers could be triggeredon when C99, but not with the other languages?At the end, we should have a simple macro, such as AC_LANG_COMPILERfor instance, which is built over simpler macros. Each languagesupport should come with these simpler macros, but each languageshould follow the same process.We also need to check the srcext which are supported by the compiler.In fact, this macro is also probably the right place to check forobjext and exeext.** AC_PROG_CC_STDCShould be: AC_PROG_CC_ISO? Or even more specific for the ISO version?Should include more tests (e.g., AC_C_CONST etc.)? See Peter for veryuseful comments on the technology. Should we make this a newlanguage? AC_LANG(ISO C). It would be great to introduceAC_LANG_COMPILER in this release too.** autoupdateWe should probably install the files which do not depend upon theuser, just the Autoconf library files. But conversely autoupdate mustbe opened to user macros, i.e., for instance libtool itself must beable to say that AM_PROG_LIBTOOL is now AC_PROG_LIBTOOL, and haveautoupdate do its job on old configure.ac.* Even later** PentateuchHeck, there is nothing after `Deuteronomy'! We're stuck, but we_must_ update the `history' section. Can't go to `New testament', wemight hurt feelings? In addition, it means that the Messiah has come,which might be slightly presumptuous :). Still, someone fluent inEnglish should write it.** AC_PATH_XHi Robert,> Hi, autoconf people. While packaging plotutils-2.2 (just released),> I noticed what looks like a small error in the autoconf-2.13 texinfo> documentation, the entry for AC_PATH_XTRA, in particular.> The documentation says that AC_PATH_XTRA> ... adds the C compiler flags that X needs to output variable> `X_CFLAGS', and the X linker flags to `X_LIBS'. If X is not> available, adds `-DX_DISPLAY_MISSING' to `X_CFLAGS'.> It doesn't seem to add -DX_DISPLAY_MISSING to X_CFLAGS. X_DISPLAY_MISSING> ends up defined in config.h, instead.That's only because you're no doubt using AC_CONFIG_HEADER(..) to sendyour defines to a config.h-style file. If you were to not useAC_CONFIG_HEADER and X was not available, then you would see-DX_DISPLAY_MISSING being added to @DEFS@ as your output files were beinggenerated.But you are right--the documentation is not clear about this. I'll changeit.> In fact it looks to me as if right now, X_CFLAGS is used only for> specifying directories where X include files are stored, via the `-I' option.> Maybe it should really be called X_CPPFLAGS?Well, perhaps. If you feel strongly about this, feel free to submit achange-request. There is a hyperlink to the bug tracking database fromhttp://sourceware.cygnus.com/autoconf/. With the way it reads in themanual right now, it's designed to allow the user to set additional flagsin the environment prior to running configure--and these don't need to belimited to just -I flags. Nevertheless, I can see a few clean ways toimprove this.** AC_SYS_INTERPRETERDefines $interpval. This is not a standard name. Do we want to keepthis? Clarify our policy on those names.** Allow --recursive to config.statusSo that --recheck does not pass --no-recursive to configure.* autoconf.texiMove the specific macro documentation blocks into the source files,and use a doc-block extraction/merge technique to get documentationinto texi-file. This should help avoid bit-rot in the doc, and makethe doc easier to update when people add/change macros. The name"autodoc" is probably already taken so we probably need another one.------------------------------------------------------------------------------* m4** I18nThe error messages for indir and dumpdef are uselessly different. Fixthis for translators.** Tracing `builtin'F**k! --trace FOO does not catch indir([FOO], $@)!** Tracing builtinsGNU M4 1.4's tracing of builtins is buggy. When run on this input:| divert(-1)| changequote([, ])| define([m4_eval], defn([eval]))| eval(1)| m4_eval(2)| undefine([eval])| m4_eval(3)it behaves this way:| % m4 input.m4 -da -t eval| m4trace: -1- eval(1)| m4trace: -1- m4_eval(2)| m4trace: -1- m4_eval(3)| %Conversely:| % m4 input.m4 -da -t m4_eval| %------------------------------------------------------------------------------* Autoconf 3** Cache name spaces.Cf the discussion with Kaveh. One would like toAC_CHECK_FUNCS(bar)# Do something that changes the environmentAC_CACHE_PUSH(foo)AC_CHECK_FUNCS(bar)AC_CACHE_POPin order not to erase the results of a check with another.** Cache var namesshould depend upon the current language.** Use m4 lists?I think one sad decision in Autoconf was to use white space separatedlists for some arguments. For instance AC_CHECK_FUNCS(foo bar). Itend to think that, even if it is not as nice, we should use m4 lists,i.e., AC_CHECK_FUNCS((foo, bar)) in this case. This would easespecializing loops, and more importantly, make them much more robust.A typical example of things that can be performed if we use m4 listsinstead of white space separated lists is the case of things that havea space in their names, eg, structures.With the current scheme it would be extremely difficult to loop overAC_CHECK_STRUCTS(struct foo struct bar), while it natural and welldefined for m4 lists: AC_CHECK_STRUCTS((struct foo, struct bar)).I know that makes a huge difference in syntax, but a major releaseshould be ready to settle a new world. We *can* provide helping toolsfor the transition. Considering the benefits, I really think it isworth thinking. --akim** Forbid shell variables as main argumentsThe fact that we have to support shell variables as main argumentforbids many interesting constructions (specialization are not alwayspossible, equally for AC_REQUIRE'ing macros *with their arguments*).Any loop should be handled by m4 itself, and nothing should be hiddento it. As a consequence, shell variables on the main arguments becomeuseless (the main reason we support shell variables is to allow theloop versions of single argument macros, eg, to go from AC_CHECK_FUNCto AC_CHECK_FUNCS). --akim** Use the @SUBST@ technology also for headers instead of #undef.This requires that acconfig.h becomes completely obsolete: autoheadershould generate all the templates.** Specializing loops.For instance, make AC_CHECK_FUNC[S] automatically use any particularmacros for the listed functions.This requires to obsolete the feature `break' in ACTION-IF, since allthe loops are to be handled by m4, not sh.** Faces of a testEach macro can potentially come with several faces: of course theconfigure snippet (AC_foo), a config.h snippet (AH_foo), a system.hsnippet (AS_foo), documentation (AD_foo) and, why not, the some C codefor instance to replace a function.The motivation for the `faces' is to encapsulate. It is abnormal thatonce one has a configure macro, then she has to read somewhere to findthe piece of system.h to use etc. The macros should come in aself-contained way, or, said it another way, PnP.A major issue is that of specialization. AC_CHECK_HEADER (or anothername) for instance, will have as an effect, via system.h to includethe header. But if the test for the header is specific, the generic
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -