diff options
author | 1994-10-26 01:56:09 +0000 | |
---|---|---|
committer | 1994-10-26 01:56:09 +0000 | |
commit | 3dbe801c58450f1acc0135bc66debaa8af848a26 (patch) | |
tree | f9039736130490714cea4692a11acad698d57713 /util | |
parent | 08be7e2f80ccdfff742ce30c924c71ddc9ed8702 (diff) |
Initial revision
Diffstat (limited to 'util')
-rw-r--r-- | util/autoconf/ChangeLog.1 | 1920 | ||||
-rw-r--r-- | util/autoconf/TODO | 102 | ||||
-rw-r--r-- | util/autoconf/acfunctions | 58 | ||||
-rw-r--r-- | util/autoconf/acheaders | 27 | ||||
-rw-r--r-- | util/autoconf/acidentifiers | 22 | ||||
-rw-r--r-- | util/autoconf/acmakevars | 11 | ||||
-rw-r--r-- | util/autoconf/acoldnames.m4 | 79 | ||||
-rw-r--r-- | util/autoconf/acprograms | 18 | ||||
-rw-r--r-- | util/autoconf/autoconf.info-5 | 607 | ||||
-rw-r--r-- | util/autoconf/autoconf.m4 | 27 | ||||
-rw-r--r-- | util/autoconf/autoheader.m4 | 84 | ||||
-rw-r--r-- | util/autoconf/autoupdate.sh | 112 | ||||
-rw-r--r-- | util/autoconf/ifnames.sh | 93 | ||||
-rwxr-xr-x | util/autoconf/install-sh | 238 | ||||
-rw-r--r-- | util/autoconf/install.texi | 193 | ||||
-rw-r--r-- | util/autoconf/standards.info-1 | 1188 | ||||
-rw-r--r-- | util/autoconf/standards.info-2 | 1691 |
17 files changed, 6470 insertions, 0 deletions
diff --git a/util/autoconf/ChangeLog.1 b/util/autoconf/ChangeLog.1 new file mode 100644 index 0000000..5e2f017 --- /dev/null +++ b/util/autoconf/ChangeLog.1 @@ -0,0 +1,1920 @@ +Thu May 12 15:55:40 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 1.11. + + * autoconf.texi: Document filename restriction on CPP. + +Thu May 12 10:11:20 1994 David J. MacKenzie (djm@hill.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Treat "./Makefile" like "Makefile". + From Karl Berry. + +Tue May 10 00:08:19 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Set prefix and exec_prefix if they + weren't set already. + +Sat May 7 20:06:59 1994 Noah Friedman (friedman@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL): If using install.sh, add `-c' + to INSTALL. + +Sat May 7 15:36:22 1994 David J. MacKenzie (djm@aria.eng.umd.edu) + + * acgeneral.m4 (AC_OUTPUT): If configuring in the source tree, + don't end top_srcdir with "/.". + * acspecific.m4 (AC_SET_MAKE): Remove temp file. + From John Interrante <interran@uluru.stanford.edu>. + +Fri May 6 15:26:48 1994 David J. MacKenzie (djm@aria.eng.umd.edu) + + * acgeneral.m4 (AC_SIZEOF_TYPE): Fatal error if test program fails. + +Fri May 6 12:52:19 1994 David J. MacKenzie (djm@gamera.eng.umd.edu) + + * acgeneral.m4 (AC_OUTPUT): Run "./config.status", not "config.status". + From Kevin Gallagher <kgallagh@spd.dsccc.com>. + +Fri May 6 00:45:29 1994 David J. MacKenzie (djm@aria.eng.umd.edu) + + * acspecific.m4 (AC_WAIT3): Sleep in the parent to avoid rm + problems on fast machines. From david d zuhn. + +Thu May 5 12:51:32 1994 David J. MacKenzie (djm@gamera.eng.umd.edu) + + * Version 1.10. + + * Makefile.in (install): Don't install INSTALL. + (installcheck, install-info): New targets. + +Mon May 2 16:31:33 1994 David J. MacKenzie (djm@aria.eng.umd.edu) + + * autoconf.sh, autoheader.sh: If M4 is an absolute file name that + no longer exists, use M4=m4. + +Mon May 2 13:06:06 1994 David J. MacKenzie (djm@burnout.eng.umd.edu) + + * acspecific.m4 (AC_HAVE_POUNDBANG): Quote # in message. + From schwab@issan.informatik.uni-dortmund.de (Andreas Schwab). + + * autoconf.texi: Document config.h.bot. Fix typo in AC_HAVE_POUNDBANG. + + * acspecific.m4 (AC_PROG_CXX): Look for "cxx" (DEC C++ compiler) too. + + * autoheader.sh: Fix tr string for Solaris tr. + Add config.h.bot if present. + From richard@sol.kbsi.com (Richard Henderson). + +Fri Apr 29 12:53:53 1994 David J. MacKenzie (djm@burnout.eng.umd.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Use install.sh from srcdir + or srcdir/.. or srcdir/../.. and never default to cp. + +Thu Apr 28 12:01:01 1994 David J. MacKenzie (djm@burnout.eng.umd.edu) + + * acconfig.h: Add HAVE_MMAP entry. + * acspecific.m4 (AC_MMAP): If NBPC is not defined, use PAGESIZE. + From "Kaveh R. Ghazi" <ghazi@eden.rutgers.edu>. + + * acgeneral.m4 (AC_OUTPUT_HEADER): For each file being created, + munge a copy of conftest.sed rather than the original. + From brook@trillium.botany.utexas.edu (Brook Milligan). + +Tue Apr 26 00:27:21 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_LANG_C, AC_LANG_CPLUSPLUS): Remove CFLAGS and + CXXFLAGS from ac_cpp. + +Thu Apr 21 19:43:20 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 1.9. + + * autoconf.texi: Document special AC_FIND_XTRA ordering + dependencies. + + * acspecific.m4 (AC_FIND_XTRA): Reorder AC_REQUIREs. + + * acspecific.m4 (AC_FIND_X): AC_REQUIRE_CPP. + + * acspecific.m4 (AC_PROG_LEX): Say what we set LEXLIB to. + +Wed Apr 20 13:17:05 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Allow . in hostnames. Use string + comparison on them. + (AC_HAVE_LIBRARY): namespace cleanup. + + * autoconf.texi: Describe changes to AC_FIND_X, AC_FIND_XTRA, and + AC_YYTEXT_POINTER. + + * acconfig.h: Replace DECLARE_YYTEXT with YYTEXT_POINTER. + + * acgeneral.m4 (AC_PARSEARGS): --gas and --x set with_gas and + with_x to yes, not 1. + + * acspecific.m4 (AC_YYTEXT_POINTER): New macro, replacing + AC_DECLARE_YYTEXT. + (AC_FIND_X): Assume no X if --without-x was given. + (AC_FIND_XTRA): Quotes AC_REQUIRE args. Run uname in a subshell in + case it's missing. Put -l options in X_EXTRA_LIBS. Print values + of the variables we set if verbose. + +Tue Apr 19 14:14:25 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Note GNU m4 1.0 bugs. + + * acspecific.m4 (AC_FIND_X_XMKMF): Set variables correctly. + + * autoconf.texi: Don't @setchapternewpage odd by default. Mention + autoheader AC_SIZEOF_TYPE symbol generation. + + * acgeneral.m4 (AC_SIZEOF_TYPE): Fix typo. + + * Makefile.in (install): Don't install aclocal.m4. + + * autoheader.sh: Generate entries for AC_SIZEOF_TYPE + automatically. + +Mon Apr 18 22:14:59 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_SIZEOF_TYPE): Remove second arg, and generate a + symbol name automatically. + + * autoconf.texi: Document new AC_SIZEOF_TYPE usage. + + * acspecific.m4 (AC_PROG_INSTALL): Only filter out "install" + containing "dspmsg". + (AC_FIND_X_XMKMF): Fix variable names to not conflict with grep -v. + + * autoconf.texi: Various small fixes. + + * INSTALL: Say configure takes "awhile". + +Sat Apr 16 15:05:31 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4: Call AC_LANG_C in AC_PREPARE, not AC_INIT. + +Fri Apr 15 07:00:37 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 1.8. + + * acgeneral.m4: Rename ac_configure_args back to configure_args, + since some people have been using it. + +Thu Apr 14 14:45:29 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Note that AC_ENABLE and AC_WITH arguments + shouldn't contain blanks, for now. + +Wed Apr 13 17:26:36 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_SET_MAKE): Use $MAKE if defined, else "make". + + * autoconf.texi: Add missing files to diagram. + + * acgeneral.m4 (AC_TEST_CPP): Propogate comment about Coherent + lossage into configures. + +Sat Apr 9 17:34:29 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Unknown option is a fatal error. + + * acgeneral.m4: Remove ac_ prefix from some variables set by + options, for consistency and backward compatibility. + +Fri Apr 8 13:24:29 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_XTRA): Don't test for -lsocket on IRIX. + From Karl Berry. + + * acspecific.m4 (AC_FIND_X_XMKMF, AC_FIND_X_DIRECT): Don't + override --x-includes and --x-libraries. Check openwin last due + to its bugs. + + * acgeneral.m4: Add --x-includes, --x-libraries options. Document + them and --build, --host, --target. + + * autoconf.texi: Mention --x-includes and --x-libraries. + + * INSTALL: Mention --x-includes and --x-libraries. + +Tue Apr 5 12:46:47 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Document top_srcdir substitution. + + * acspecific.m4 (AC_PROG_INSTALL): Look for install.sh in + @top_srcdir@, not $srcdir. + + * acgeneral.m4 (AC_OUTPUT): AC_SUBST top_srcdir. Set it. + +Mon Apr 4 20:13:08 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Fix dependencies examples. + + * Makefile.in: Update configuration dependencies. + + * acgeneral.m4: Add back --no-create option. Make config.status + --recheck use it. + + * autoheader.sh: Go back to doing move-if-change. (Work around in + dependencies by using stamp files.) + +Thu Mar 31 11:34:50 1994 David J. MacKenzie (djm@hill.gnu.ai.mit.edu) + + * Makefile.in (autoconf, autoheader, configure): Write to $@.tmp + instead of to $@ directly so that after a disk full error, the + targets to not exist. Otherwise, a subsequent make could install + a corrupt (but not executable) script. From Jim Meyering. + +Thu Mar 31 08:22:29 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Re-document --with argument. + + * acgeneral.m4 (AC_PARSEARGS): --with can take an argument again. + +Wed Mar 30 20:01:57 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Document --disable- options. + + * acgeneral.m4 (AC_PARSEARGS): Add --disable-FEATURE. + + * INSTALL: Mention --enable- options. + +Mon Mar 28 17:43:22 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Make multiple non-option args a + fatal error. + + * acspecific.m4: Change all occurrences of $(MAKE_VAR) to + ${MAKE_VAR}. + + * autoconf.texi (Command Line): New node. Move some descriptions + here from General Feature Tests. Describe --without- options. + + * acgeneral.m4 (AC_PARSEARGS): Rewrite again, using ideas from the + GNU libc configure.in. All options that take an argument set + shell variables. + (AC_COMPILE_CHECK): Add `return' in `int' function. + + * INSTALL: Fix typo. + +Sun Mar 27 00:44:07 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_NOTICE): Don't save original args or initialize + options here. + (AC_PARSEARGS): Do them here. + (AC_PREPARE): Save a copy of original args here, if it hasn't been + done yet. + +Sat Mar 26 01:32:40 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * acgeneral.m4: Omit obsolete options from usage message. + Quote args to AC_CHECKING that contain m4 variables. + + * INSTALL: Note that env can be used to set env vars. + + * autoconf.texi: Document AC_SET_MAKE. + Note that vsprintf and vfprintf come with vprintf. + Note that env can be used to set env vars. + + * acspecific.m4 (AC_SET_MAKE): New macro. + (AC_PROG_INSTALL): Find scoinst as a good install program. + + * acgeneral.m4: Initialize variables set by options. + (AC_HAVE_HEADERS): Require cpp. + + * autoconf.texi: Document AC_ENABLE and @prefix@ and @exec_prefix@ + substitutions. + + * acgeneral.m4: Recognize all the Cygnus configure options; warn + about other arguments. Make default value for --with "yes", not + "1". AC_SUBST for prefix and exec_prefix. + (AC_ENABLE): New macro. + +Thu Mar 24 18:11:00 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * INSTALL: Describe recently added configure options. + + * autoconf.texi: Style cleanups. Mention config.h.top. + + * autoheader.sh: Add ${config_h}.top to the output, if it's + present. + +Thu Mar 24 13:36:19 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.sh: Remove all temp files when exiting. If m4 fails, + produce no output and exit with the m4 exit status. + + * autoconf.texi: Document AC_PREREQ. + + * acgeneral.m4 (AC_PREREQ): New macro, with some helper macros. + +Thu Mar 24 01:20:49 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * Makefile.in (acdatadir): New variable based on datadir, giving + Autoconf lib files their own subdirectory. Use it instead of + datadir. + +Wed Mar 23 22:41:54 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * autoconf.texi: Change names of nodes that describe invoking + configure and config.status to conform to coding standards. + Document --version, --help, --silent/--quiet, --verbose options to + configure and config.status. + + * acgeneral.m4 (AC_PARSEARGS): Add --help and --version to + configure. Simplify getting option arguments. Complain about + impossible host arguments. + (AC_OUTPUT): Add --help and --version to config.status. + +Wed Mar 23 00:16:28 1994 Roland McGrath (roland@mole.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_CHECKING): Do nothing if $ac_silent is set. + (AC_PARSEARGS): Grok -q/--quiet/--silent and set $ac_silent. + +Tue Mar 22 18:28:30 1994 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi: Document AC_SIZEOF_TYPE. + + * acspecific.m4 (AC_INT_16_BITS, AC_LONG_64_BITS): Mark obsolete + with advice to use AC_SIZEOF_TYPE instead. + + * acgeneral.m4 (AC_SIZEOF_TYPE): New macro. + +Tue Mar 22 08:44:40 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * autoconf.texi: Describe AC_CHECKING et al. + + * acspecific.m4: Use AC_CHECKING et al. where appropriate. + + * acgeneral.m4 (AC_CHECKING, AC_VERBOSE, AC_ERROR, AC_WARN): New + macros. Use them where appropriate. + (AC_LANG_C, AC_LANG_CPLUSPLUS): Fix quoting of ac_cpp. + + * acspecific.m4 (AC_PROG_CPP): Don't add $CFLAGS to CPP. + (AC_PROG_CXXCPP): Don't add $CXXFLAGS to CXXCPP. + + * acgeneral.m4 (AC_OUTPUT): Don't remove VPATH lines containing + colons. From Jim Meyering (meyering@comco.com). + (AC_LANG_C): Add CFLAGS to ac_cpp. + (AC_LANG_CPLUSPLUS): Add CXXFLAGS to ac_cpp. + +Sat Mar 19 16:38:03 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_LANG_RESTORE): Only emit shell code to change + the current language if it actually changed. + + * autoconf.texi: Add info dir entry. Describe new C++ macros and + AC_MMAP. + (Language Choice): New section. + Add another example of dependencies. + + * acspecific.m4 (AC_PROG_CXX, AC_PROG_CXXCPP, AC_REQUIRE_CPP): New + macros based on work by zoo@aggregate.com (david d zuhn). + (AC_DECLARE_YYTEXT): Use AC_REQUIRE_CPP. Warn that it's broken. + (AC_STDC_HEADERS): Use AC_REQUIRE_CPP. + (AC_MMAP): New macro from Mike Haertel and Jim Avera. + + * acgeneral.m4 (AC_PARSEARGS): Check for missing arguments to + options. Recognize --target. Save the original args before + modifying them. + (AC_INIT): Call AC_LANG_C. + (AC_PREPARE): Don't save the original args here (too late). + (AC_LANG_C, AC_LANG_CPLUSPLUS, AC_LANG_SAVE, AC_LANG_RESTORE): + New macros based on work by zoo@aggregate.com (david d zuhn). + (AC_HEADER_EGREP, AC_PROGRAM_EGREP, AC_COMPILE_CHECK, + AC_TEST_PROGRAM, AC_TEST_CPP): Use AC_REQUIRE_CPP and ac_ext and + ac_cpp. + + * autoheader.sh: Update the file even if it is unchanged, to avoid + foiling a Makefile rule that makes it from configure.in. If you + let the rule for making config.status from configure create + config.h from config.h.in, then an unnecessary update here will + not cause unneeded recompilation. Recompilation should only + happen if config.h is updated, which won't occur if config.h.in + had the same contents, even if its timestamp changed. (Ick.) + + * Makefile.in (Makefile): Don't depend on config.status, to avoid + running config.status too many times. + +Fri Mar 18 00:43:21 1994 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * autoconf.texi: Document AC_FIND_XTRA. + + * acgeneral.m4 (AC_OUTPUT): Remove VPATH lines if srcdir=., to + work around Sun make bug. From Karl Berry. + + Rename internal use shell variables to start with "ac_". + + Trap signal 2 (SIGINT), not signal 3 (SIGQUIT), which means stop + without cleaning up. From eggert@twinsun.com (Paul Eggert). + + * acspecific.m4 (AC_FIND_XTRA): New macro from Karl Berry + (karl@cs.umb.edu). + (AC_FIND_X, AC_ISC_POSIX): Provide self. + + (AC_DECLARE_YYTEXT): Move AC_SUBST. Don't quote value of + DECLARE_YYTEXT. From Karl Berry. + + (AC_PROG_CPP): Include $CFLAGS in CPP. + + Rename internal use shell variables to start with "ac_". + + * autoconf.sh, autoheader.sh: Trap signal 2 (SIGINT), not signal 3 + (SIGQUIT), which means stop without cleaning up. From + eggert@twinsun.com (Paul Eggert). + + * autoconf.texi: Mention shell variable prefixes. + + * autoconf.texi: Work around RCS substitution in AC_REVISION + example. + +Wed Mar 16 19:55:17 1994 Noah Friedman (friedman@prep.ai.mit.edu) + + * acgeneral.m4 (compile): Include $LDFLAGS. + +Thu Mar 10 01:27:20 1994 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): Don't absolutize relative paths. + (AC_OUTPUT): For relative paths, prepend to $srcdir as many + "../" as the number of subdirectories deep the file being created is. + +Tue Feb 15 16:02:19 1994 Noah Friedman (friedman@prep.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Reject /sbin/install. + +Sun Feb 13 21:15:45 1994 Noah Friedman (friedman@prep.ai.mit.edu) + + * autoconf.texi (Setting Variables, Sample configure.in): Replace + references to AC_UNISTD_H with AC_HAVE_HEADERS(unistd.h). + +Thu Feb 10 21:39:43 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_SYS_SIGLIST_DECLARED): New macro. + +Sat Feb 5 13:35:52 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Check for -lkvm separately after + -lutil check. + +Fri Feb 4 17:17:11 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT_HEADER): Move creation of conftest.sed + outside of `for' loop. We need only do this once for all the + output files. + +Fri Jan 21 16:35:00 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL_INSTALL_SH): New macro for + INSTALL value to use install.sh. + (AC_PROG_INSTALL): Use it. + +Thu Jan 6 16:22:25 1994 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE): Use AC_QUOTE_SQUOTE instead of + AC_DEFINE_QUOTE on AC_VAL. From Bruno Haible + <haible@ma2s2.mathematik.uni-karlsruhe.de>. + * acgeneral.m4 (AC_DEFINE_UNQUOTED): pushdef/popdef + AC_QUOTE_SQUOTE instead of AC_DEFINE_QUOTE. + +Wed Dec 22 03:51:53 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE): in verbose strings, put + AC_DEFINE_QUOTE exprs in double quotes to avoid shell wildcard + expansion. + + * acgeneral.m4 (AC_PROGRAM_PATH, AC_PROGRAMS_PATH): New macros. + * autoconf.texi (General Tests): Document them. + + * configure.in: Use AC_PROGRAMS_PATH to find m4, not AC_PROGRAMS_CHECK. + Put `m4' in the list of progs-to-check, since we want the absolute + pathname for that too if we can get it. + +Fri Dec 17 13:44:24 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_ALLOCA): define HAVE_ALLOCA if alloca is + present in system libraries. + +Tue Dec 14 14:53:55 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): Remove $ac_clean_files in traps. + + * acspecific.m4 (AC_STDC_HEADERS): Check that free appears in stdlib.h. + +Fri Dec 10 06:35:25 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Don't look for install in `.'. + +Wed Dec 8 12:10:59 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X_XMKMF): Redirect stderr to /dev/null in + eval'd make pipeline. + + * acgeneral.m4 (AC_QUOTE_SED): Quote ! as well. + +Mon Dec 6 23:41:05 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_CPP): Try 'cc -E -traditional-cpp' for NeXT. + +Thu Dec 2 02:25:39 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): use rm -r to remove conftest* both in + exit traps and at start of script. + +Wed Dec 1 03:22:21 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X_DIRECT): Search for includes and libs + in more places. + +Sun Nov 28 21:57:31 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acgeneral.m4 (AC_NOTICE): Replace "this program" with "this + configure script" to disambiguate between configure and the + program it is distributed with (which can have different terms). + +Tue Nov 23 19:41:53 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X_DIRECT): Use the shell variable + `x_direct_test_include' to choose the include file to search for. + +Sat Nov 20 17:58:09 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X_DIRECT): Search for R6 includes & libs + in various places. Look for /usr/athena/include & /usr/athena/lib. + Make AC_HAVE_LIBRARY check for the library specified by the shell + variable `x_direct_test_library', rather than hardcoding Xt (to + which the shell variable now defaults). + +Thu Nov 18 18:17:21 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT_HEADER): Use ! instead of @ as the + sed substitution separator. + + * install.sh: New file. + * Makefile.in (DISTFILES): Add it. + * acspecific.m4 (AC_PROG_INSTALL): Use it as the default + instead of cp, if it's there. + +Sat Nov 13 12:24:57 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Extend that last change to also + happen for .C, .cc, and .m (objc) files. + +Wed Nov 10 09:26:35 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): When substituting .c or .h files, put + autoconf-added comments in '/* ... */'. + +Mon Nov 8 16:22:48 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_NOTICE): Put autoconf version number in configure. + +Fri Nov 5 23:31:28 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X_XMKMF): properly quote `acfindx' rule. + +Fri Oct 29 21:46:57 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (HAVE_LONG_DOUBLE): Add code to detect Stardent + Vistra lossage. From Kaveh R. Ghazi (ghazi@noc.rutgers.edu). + +Tue Oct 26 15:24:33 1993 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu) + + * Version 1.7. + +Tue Oct 19 23:49:50 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_TEST_PROGRAM): Don't remove conftest* before + running $2 or $3 or $4; just once at the end. + +Mon Oct 18 01:38:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): Echo a newline into confdefs.h so it + is never empty. + +Fri Oct 15 18:49:20 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_CONST): Added test of trivial use for broken + Ultrix-32 V3.1 Rev 9 vcc. + +Fri Oct 15 15:44:39 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OBSOLETE): New macro. + * acspecific.m4 (AC_UNISTD_H, AC_USG, AC_MEMORY_H): Call it. + + * acspecific.m4 (AC_LONG_FILE_NAMES): Try to create files in + ${prefix}/lib and ${exec_prefix}/lib instead of ${prefix} and + ${exec_prefix}; they are more likely to be writable. + + * Makefile.in (clean): Remove *.ma and *.mas, the macro index files. + +Tue Oct 12 16:02:52 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_RETSIGTYPE): AC_PROVIDE self. + +Mon Oct 11 19:09:20 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * Makefile.in (editsh): Obfuscate @M4@ and @datadir@ references so + configure doesn't edit them. + +Sun Oct 10 14:01:35 1993 Jim Meyering (meyering@comco.com) + + * autoconf.sh (--help): Exit successfully. + +Sat Oct 9 08:29:15 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * Version 1.6. + + * acconfig.h (inline): New entry. + + * acspecific.m4 (AC_DIR_HEADER_CHECK): Don't call opendir, in + case the needed libraries (e.g., -ldir on Xenix) aren't in + LIBS yet. From Jim Meyering (meyering@comco.com). + + * acspecific.m4 (AC_PROG_LEX): Fix typo. + + * acgeneral.m4 (AC_HEADER_EGREP, AC_PROGRAM_EGREP, + AC_COMPILE_CHECK, AC_TEST_PROGRAM, AC_TEST_CPP): Remove any + temporary files before doing the actions, in case they're + nested tests. From gray@antaire.com (Gray Watson). + + * configure.in: Check for GNU m4 under several names. + * Makefile.in: Use that value. + From Franc,ois Pinard. + + * acspecific.m4 (AC_STRUCT_TM): Use a member of struct tm, to + make sure the compiler complains if it's not defined. + From Bruno Haible (haible@ma2s2.mathematik.uni-karlsruhe.de). + + * acspecific.m4 (AC_FIND_X_XMKMF): If libX11.a isn't in + USRLIBDIR, check in LIBDIR. Filter out any make verbose messages. + +Tue Oct 05 19:21:29 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_LONG_DOUBLE): Announce that this feature is being + checked even if the test is simply whether $CC is gcc. + +Tue Oct 5 14:23:28 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh: Produce HAVE_LIBfoo for AC_HAVE_LIBRARY. + +Sun Oct 3 15:41:36 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Write assignment for `extrasub'; in sed + cmds, write "$extrasub" so configure.in can set it to do sed frobs. + Take second arg and write it to config.status before `exit 0'. + + * acspecific.m4 (AC_CONST): Say `checking for lack of working + const'. That is precisely accurate. + +Wed Sep 22 15:47:50 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4: If not using GNU m4, abort. + + * acgeneral.m4 (AC_PREPARE): Lose if we're not in the srcdir, + not if we're in it. But disable the check for now. + +Mon Sep 20 15:32:30 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): Check for $srcdir being configured, + diagnose and lose. + + * acgeneral.m4 (AC_QUOTE_SED): Quote @ and %. + + * acgeneral.m4 (AC_OUTPUT): Say "$file is unchanged" when it is. + +Sat Sep 18 14:32:04 1993 Ian Lance Taylor (ian@airs.com) + + * acgeneral.m4: Substitute for CONFIG_FILES and CONFIG_HEADERS + before using them, in case they have multiple values. + +Fri Sep 17 14:40:20 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_WAIT3): wait3 works if ru_stime is + nonzero, too. + +Thu Sep 16 15:39:53 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X_XMKMF): Code moved from AC_FIND_X. + (AC_FIND_X_DIRECT): New function, derived from code by Karl + Berry and Rob Savoye. + (AC_FIND_X): Call them. + +Wed Sep 15 19:06:46 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): Remove confdefs* on exit with trap 0. + (AC_OUTPUT): Don't bother removing it. + + * acgeneral.m4: Remove --no-create option; not useful. + +Mon Sep 13 21:54:46 1993 Paul Eggert (eggert@twinsun.com) + + * autoheader.sh: Rename the temporary output to the real + output if their contents differ, not if their contents are identical. + This fixes bug introduced in Aug 30 change. + +Mon Sep 13 16:50:30 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Run config.status with + CONFIG_SHELL if defined. Same for configure run from config.status. + Rename gen_files to CONFIG_FILES and gen_config to CONFIG_HEADERS. + + * acgeneral.m4 (AC_PREPARE): Remove confdefs* in trap. + +Fri Sep 10 00:29:20 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_LONG_FILE_NAMES): Test /var/tmp as well. + In loop, skip past nonexistent dirs. + + * acspecific.m4 (AC_CONST): Say "working", not "broken". We are + checking for a working const as opposed to a broken or absent + const, not for a broken const as opposed to a working one. + +Thu Sep 9 09:25:49 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4, acconfig.h (AC_LONG_64_BITS): New macro. + +Wed Sep 1 18:54:12 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PROGRAM_CHECK): Use && instead of test -a. + +Tue Aug 31 19:21:35 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT_HEADER): Support generating multiple + .h files. From gray@antaire.com (Gray Watson). + + * acspecific.m4 (AC_ALLOCA): If using alloca.o, define C_ALLOCA. + + * acgeneral.m4 (compile, AC_HEADER_EGREP, AC_PROGRAM_EGREP, + AC_COMPILE_CHECK, AC_TEST_PROGRAM, AC_TEST_CPP): Remove $DEFS + from cc and cpp command lines; include "confdefs.h" in test + files. + (AC_DEFINE): Append a #define to confdefs.h. + Reduce duplicated code by introducing a temp variable, AC_VAL. + +Mon Aug 30 17:36:54 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh: Don't write output if it is the same as output file. + +Wed Aug 25 14:14:33 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_VFORK): Check for SunOS 5.2 bug with ignoring + signal in parent before vfork. From eggert. + +Fri Aug 20 10:14:42 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Support giving values to --with + options. Go back to using sed for invalid test, but without + using '*' in the regex. + +Thu Aug 19 14:53:29 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_LONG_FILE_NAMES): eval the args. + + * acgeneral.m4 (AC_PARSEARGS): Use case instead of sed and + test to detect invalid package names. Remove =value from + --with options until we support it. + +Wed Aug 11 18:52:41 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X): Don't set x_includes if it's + /usr/include or x_libraries if it's /lib or /usr/lib. + +Wed Aug 11 13:00:18 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_LONG_FILE_NAMES): If we cannot write $dir, echo + a warning msg and continue the loop to skip that directory. + + * acgeneral.m4 (AC_REVISION): Also eat double quotes. + +Thu Aug 5 14:55:59 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acconfig.h: Add TIME_WITH_SYS_TIME. + +Mon Aug 2 14:55:16 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_DECLARE_YYTEXT): \-escape "s in rhs of + AC_DEFINE_UNQUOTED. + Remove gratuitous second arg to AC_SUBST. + +Sun Aug 1 19:13:08 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Define HAVE_GETLOADAVG if we find + one and don't use our own getloadavg.c. + * acconfig.h: Add HAVE_GETLOADAVG. + +Sat Jul 31 17:28:48 1993 Karl Berry (karl@cs.umb.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Report results under -v. + +Fri Jul 30 18:08:30 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh (syms, headers, funcs, libs): Run values through + sort|uniq to remove duplicates. + +Wed Jul 28 00:02:34 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * Makefile.in (config.status): Run config.status --recheck, + not configure. + (install): Remove refs to install-info until it's released, + because people are getting confused. + + * acgeneral.m4 (AC_OUTPUT): For config.status --recheck, echo + the configure command line that we run. + + * acspecific.m4 (AC_PROG_FLEX): Use AC_HAVE_LIBRARY. + +Mon Jul 26 19:11:01 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Check that both -lutil and -lkvm + exist before choosing them in hopes they will define getloadavg. + + * autoheader.sh (frob): Put $2 and $3 in the expansion of + AC_HAVE_LIBRARY, so AC_DEFINE there is noticed. + +Mon Jul 26 14:21:33 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * acspecific.m4 (INT_16_BITS): Check the obvious way, so it + doesn't pick up machines with 64 bit longs. + +Mon Jul 26 14:01:38 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Check for -lelf with + AC_HAVE_LIBRARY instead of checking for <elf.h> with AC_HEADER_CHECK. + +Mon Jul 26 13:58:39 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * acspecific.m4 (AC_SCO_INTL, AC_IRIX_SUN, AC_DYNIX_SEQ): Use + AC_HAVE_LIBRARY. + +Mon Jul 26 13:55:17 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh (eval frob): Restore hairy sed use; we need it to + handle multi-line macro invocations. + +Mon Jul 26 00:50:43 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * acspecific.m4 (AC_FIND_X): Quote the Imakefile. + +Sun Jul 25 08:17:11 1993 Jim Meyering (meyering@comco.com) + + * acconfig.h (CRAY_STACKSEG_END): New #undef. + +Thu Jul 22 20:26:12 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Version 1.5. + + * acspecific.m4 (AC_FIND_X): Let make substitute any variables + in INCROOT and USRLIBDIR, instead of using sed. + From wojo@veritas.com (Jack Woychowski). + + * acgeneral.m4 (AC_DEFINE): When printing value verbosely, use + double quotes and AC_DEFINE_QUOTE, like we do when assigning + the value, so shell variables get expanded the same way. + + * acgeneral.m4 (AC_REVISION): New macro. + From wollman@uvm-gen.EMBA.UVM.EDU (Garrett Wollman). + + * acgeneral.m4 (AC_DEFINE): Add newline before open brace. + +Thu Jul 22 17:07:15 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_STAT_MACROS_BROKEN): New macro. + * acconfig.h (STAT_MACROS_BROKEN): New #undef. + +Wed Jul 21 15:44:32 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_DECLARE_YYTEXT): Use AC_DEFINE_UNQUOTED so + shell var is replaced in rhs. + +Wed Jul 21 13:31:38 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acconfig.h (size_t, mode_t, off_t): Added. + * acspecific.m4 (AC_OFF_T): New macro. + +Tue Jul 20 15:39:44 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * autoheader.sh: Put header-file.in in comment at top. + + * acconfig.h (NDIR): Added. + +Mon Jul 19 22:10:49 1993 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu) + + * Makefile.in (info, dvi): New targets. + +Sun Jul 18 22:36:33 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh (frob): Use `#' as the first line of each definition. + (eval frob): Totally simplify sed use to just handle "^@@@.*@@@$". + +Wed Jul 14 22:44:25 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acconfig.h: Restore blank lines between paragraphs. + + * autoheader.sh (libs): New variable and frob to set it from + AC_HAVE_LIBRARY uses. Produce #undef HAVE_* for each $libs. + +Tue Jul 13 19:03:46 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acconfig.h: Sort the entries, like the comment says. + + * acspecific.m4 (AC_GETLOADAVG): Only check for the AIX library + once, looking in both local and system dirs. + Consolidate SVR4 and Solaris cases. + +Mon Jul 12 20:33:36 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): If we find sys/dg_sys_info.h, do + AC_HAVE_LIBRARY on -ldgc. + +Sun Jul 11 00:43:51 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): BSD library is -lutil, not + -lutils, and requires -lkvm too. + Check for local AIX library using AC_HAVE_LIBRARY, not + AC_COMPILE_CHECK. + Un-nest some conditionals. Stop checking once we've + found a way to get getloadavg. + +Thu Jul 8 20:21:28 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Makefile.in: Remove rules for making *.conf; make + Autoconf's configure script semi-normally. + +Wed Jul 7 14:37:35 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * autoheader.sh (--help): Print help message to stdout and exit 0. + (--version): Exit after printing version number. + * autoconf.sh (--version): Exit after printing version number. + + * acspecific.m4 (AC_LONG_DOUBLE): Make sure that long double + isn't smaller than double, as in Ultrix 4.[23] cc. + + * acgeneral.m4 (AC_REPLACE_FUNCS): Include ctype.h in the test + program to get stubs. + + * acspecific.m4 (AC_FIND_X): New macro. + +Tue Jul 6 19:15:17 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Try ls -L first, in case + /dev/kmem is a symlink (as on Solaris). + +Wed Jun 30 22:08:22 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_MINUS_C_MINUS_O): Remove spurious `then'. + +Fri Jun 25 23:16:42 1993 Paul Eggert (eggert@twinsun.com) + + * acspecific.m4 (AC_CONST): Replace `p = <const char** expr>' + with `ccp = <const char** expr>'; the former wasn't ANSI C, and + was causing working compilers to be rejected. + +Fri Jun 25 13:26:34 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_LONG_FILE_NAMES): Redirect rm's stderr to + /dev/null. + +Thu Jun 24 15:58:04 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * autoconf.sh, autoheader.sh, acgeneral.m4 (AC_PREPARE): Undo + change of Jun 16 1993. Only set `LANG' and `LC_ALL' to "C" if + already set. + +Sat Jun 19 00:01:51 1993 Jim Meyering (meyering@comco.com) + + * acgeneral.m4: Undefine m4's `format' builtin. + * acspecific.m4 (AC_HAVE_POUNDBANG): Make conftest executable, + but not necessarily writable by group or other. + +Thu Jun 17 21:10:33 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_CPP): Put double quotes around ${CC-cc}, + not single quotes. + If --verbose option given, say what CPP is being set to. + +Wed Jun 16 17:50:00 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_CPP): Make sure that `cc -E` doesn't + run the program through the C compiler too. Bob Olson + <olson@mcs.anl.gov> says it does on the NeXT. + +Wed Jun 16 16:17:05 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * autoconf.sh, autoheader.sh, acgeneral.m4 (AC_PREPARE): Always set + `LANG' and `LC_ALL' environment variables to `C'. + +Fri Jun 11 14:29:31 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_MINUS_C_MINUS_O): Test that cc works at all, + and only test it for -c -o if it does. + +Tue Jun 8 01:47:22 1993 Paul Eggert (eggert@twinsun.com) + + * acgeneral.m4 (AC_OUTPUT): The line + DEFS="`echo \"$DEFS\" | sed 's%[&\\\]%\\\&%g'`" + doesn't work in some shells, which don't allow nesting + \"\" inside `` inside "", and which don't unescape \\\& in the + expected (?) way. Also, some versions of echo interpret + backslashes inside $DEFS. Put $DEFS into a temporary file + to avoid these portability minefields. + +Mon Jun 7 20:11:50 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): In setting KMEM_GROUP, use new sed + magic from friedman which should win with both meanings of ls -lg. + +Mon Jun 7 06:48:49 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * Makefile.in (dist): Change gzipped tar file extension to `.gz'. + Use explicit --gzip option to tar to make sure tar uses the right + compression program (or else exits from failure to understand the + option). + + * acgeneral.m4 (AC_OUTPUT): Don't split sed expr for exec_prefix + across two lines, since not all versions of sed understand that. + + * acspecific.m4 (AC_HAVE_POUNDBANG): Complete rewrite which doesn't + depend on csh. + +Tue Jun 1 03:06:28 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * Version 1.4.1 (not announced to the general public, but + a snapshot was put on the June '93 GNU CDROM). + + * Makefile.in (dist): If ln fails (e.g. because of cross-device + links), mention on stdout that file is being copied. + + * acgeneral.m4 (AC_PREPARE): Use `[$]*' in assignment to + configure_args to get shell positional args, rather than m4 args to + AC_PREPARE. + (AC_OUTPUT): Use `configure_args' in config.status + when invoked with --recheck, rather than $*. + +Mon May 31 13:12:56 1993 Paul Eggert (eggert@twinsun.com) + + * acspecific.m4 (AC_LONG_FILE_NAMES): rm $dir/conftest*, + not conftest*. + +Mon May 31 04:18:18 1993 Roland McGrath (friedman@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_HAVE_LIBRARY): Quote libname in define. + +Sun May 30 19:52:24 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_SETVBUF_REVERSED): Pass (char *) main to + setvbuf instead of zero. + +Thu May 27 20:30:53 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREPARE): Save $* in shell var `configure_args'. + (AC_OUTPUT): Use $configure_args in place of $*. + +Wed May 26 16:19:51 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * autoconf.texi (AC_PROG_INSTALL): Doc fix. + (Automatic Remaking): Put code fragment in @example ... @end example. + +Mon May 24 15:46:47 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh (frob): Redefine AC_CONFIG_HEADER to set shell + variable `config_h'. + (config_h): New variable, initialize to "config.h" before frobbing. + (final output): Write ${config_h}.in. + +Sat May 22 17:45:19 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * Version 1.4 released. + +Thu May 20 20:25:45 1993 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_IDENTITY): New function. + (AC_DEFINE_UNQUOTED): Use it to fix this; due to a + misunderstanding of m4, this was using its first argument as + the definition. + +Thu May 20 09:21:55 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_ALLOCA) [find_stack_direction]: Return the + value from the recursive call. If it worked before, it was by luck. + From Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de>. + +Tue May 18 23:40:21 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_STDC_HEADERS): Require AC_PROG_CPP. + +Mon May 17 18:01:09 1993 Karl Berry (karl@hal.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Use variables gen_files and + gen_config in the loop that generates the output (Make)files, + instead of hardwiring the filenames. + +Sat May 15 17:23:19 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * autoconf.sh: Accept `-' to mean read stdin as input. + * autoheader.sh: Likewise. + +Fri May 14 12:41:02 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * autoheader.sh, acspecific.m4 (AC_PREPARE): If `LANG' environment + variable is set, reset its value to `C'. This is so `tr [...]' + works more portably. + +Thu May 13 22:56:20 1993 Paul Eggert (eggert@twinsun.com) + + * acspecific.m4 (VOID_CLOSEDIR): Test closedir instead of assuming + that it works. E.g. dynix closedir yields garbage, but has no + prototype. Presumably Xenix closedir had the same problem, so + stop special-casing it. + +Wed May 12 20:25:36 1993 Jim Meyering (meyering@comco.com) + + * acconfig.h: Add HAVE_LONG_DOUBLE. + +Wed May 12 15:07:36 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE_UNQUOTED): New macro. + + * acgeneral.m4 (AC_FUNC_CHECK): Include ctype.h instead of stdio.h. + We want it only to define __stub_* in glibc. Using stdio.h lost + when it contained a conflicting prototype for $1; ctype.h has fewer + prototypes. + + * acconfig.h: Add GETGROUPS_T. + + * acspecific.m4 (AC_PROG_RANLIB): Use : instead of @: for no-op. + Some braindead make does bizarre magical things with @ in variables. + +Mon May 10 14:24:27 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_HAVE_POUNDBANG): New feature. + + * acgeneral.m4 (AC_OUTPUT): Add more backslashes to character class + in DEFS filter (sigh). + +Sun May 9 14:04:31 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE_QUOTE): No AC_QUOTE_SED (was innermost). + (AC_HEADER_EGREP, AC_PROGRAM_EGREP, AC_TEST_CPP): Put a \ before + $DEFS in string to be evalled. + (AC_OUTPUT): Run DEFS through a sed filter that quotes things in it + from sed (woo woo!) before writing it into config.status. + + * acspecific.m4 (AC_ALLOCA): Use AC_PROGRAM_EGREP to test for [CRAY + && !CRAY2], instead of AC_TEST_PROGRAM. No need to run a program + for this. + + * acgeneral.m4 (AC_PROGRAM_CHECK): Extract the first word of $2 + when looking for it in PATH, so it can be a program name with args. + Omit default assignment if $4 is empty. + Only write verbose msg if $1 was set nonempty. + * acspecific.m4 (AC_PROG_YACC): Pass 'bison -y' (quoted like that) + in list to AC_PROGRAMS_CHECK. Don't test for bison later to add -y + flag. + +Sat May 8 00:23:58 1993 Jim Meyering (meyering@comco.com) + + * acgeneral.m4 (AC_REPLACE_FUNCS): Add a trailing newline in + code for AC_COMPILE_CHECK. Otherwise it got spurious failures. + + * acspecific.m4 (TIME_WITH_SYS_TIME): New macro. + + * Makefile.in (dist): Depend on Makefile. Use gzip instead + of compress. Link files individually instead of en masse; + if a link fails, use `cp -f' on the losing file. + + * acspecific.m4 (AC_ALLOCA): Define CRAY_STACKSEG_END (the + name of a function used in alloca.c) for CRAY-1, CRAY X-MP, + and CRAY Y-MP. + +Fri May 7 15:56:26 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Check for mach/mach.h, but don't + disable nlist checks if found. + +Fri May 7 04:59:25 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Don't look for `install' in + /usr/ucb. + +Thu May 6 20:41:35 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_FUNC_CHECK): The test program should choke on + #ifdef __stub___$1 as well. + (AC_REPLACE_FUNCS): Make the test program choke on stubs. + +Wed May 5 20:43:13 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoconf.sh ($infile existence check): Fixed test for + nonemptiness of $print_version to not always be true. + +Wed May 5 17:22:42 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PREFIX, AC_PROGRAM_CHECK), acspecific.m4 + (AC_PROG_INSTALL): If IFS wasn't set initially, give it a + normal default value. Happens on LynxOS (x86), says + Pete Klammer <PKLAMMER@cudnvr.denver.colorado.edu>. + +Wed May 5 13:22:52 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4: Undefine the `shift' builtin. + + * acspecific.m4 (AC_PROG_YACC): Use AC_PROGRAMS_CHECK to check for + both bison and yacc, instead of two AC_PROGRAM_CHECK uses. + + * autoheader.sh ($# -eq 0): Set var $tmpout to name of temp file, + send stdout there instead of config.h.in. + (just before exit): If $# -eq 0, then move $tmpout to config.h.in + if $status -eq 0, or remove $tmpout otherwise. + + * acspecific.m4 (AC_STRCOLL): Rewritten to use a test program that + verifies that `strcoll' does vaguely reasonable ordering. + +Tue May 4 19:59:00 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_LONG_DOUBLE): Don't explicitely echo + `checking for long double'. + +Mon May 3 22:04:35 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_GETGROUPS_T): New macro. + +Sat May 1 22:37:55 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_LONG_DOUBLE): New macro. + +Wed Apr 28 15:52:42 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PROGRAM_CHECK): Write msg under --verbose. + +Thu Apr 22 18:24:40 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_FUNC_CHECK): Remove spurious `#endif' line at end. + + * acgeneral.m4 (AC_WITH): Fix reversed args to patsubst. + Test $with_FOO, not $FOO. + +Wed Apr 21 18:14:19 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_QUOTE_TOKEN): New macro. + (AC_DEFINE_QUOTE): Use it. + +Tue Apr 20 18:02:46 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_DECLARE_YYTEXT): Guess name of lex output file + and do AC_SUBST of `LEX_OUTPUT_ROOT'. + Add `dnl' after calling some autoconf macros. + +Mon Apr 19 15:46:24 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_MINUS_C_MINUS_O): Do each compile a second time + after testing for the existence of the output. Some compilers + refuse to overwrite an existing .o file with -o, though they will + create one. + + * acspecific.m4 (AC_DECLARE_YYTEXT): Changed lex input to two lines + of "%%", not just one. + +Sat Apr 17 17:26:12 1993 Jim Meyering (meyering@comco.com) + + * acgeneral.m4 (AC_COMPILE_CHECK): Don't print `checking for ...' + message if first argument is empty. + +Sat Apr 17 01:18:41 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PID_T): provide self. + (AC_VFORK): Require AC_PID_T. + +Fri Apr 16 11:57:35 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PROGRAMS_CHECK): Take optional third arg; if + given, use it as the default value. + +Thu Apr 15 16:43:45 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_REPLACE_FUNCS): Print a message under --verbose. + + * acgeneral.m4 (AC_HAVE_LIBRARY): Use m4's patsubst and translit + instead of running sed and tr at runtime. + + * acconfig.h: Add STACK_DIRECTION. + +Wed Apr 14 17:08:47 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_ALLOCA): If we chose alloca.c, run a test + program to define STACK_DIRECTION. + +Mon Apr 5 19:02:52 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_LONG_FILE_NAMES): Put test inside a for loop on + several directories: . /tmp $prefix $exec_prefix. Define + HAVE_LONG_FILE_NAMES iff long names win in all those directories. + +Sun Apr 4 18:38:23 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * Makefile.in (%.info): Removed pattern rule. + (autoconf.info, standards.info): New rules. + + * autoconf.sh (version_only): New variable, set nonempty for + `autoconf --version' with no input file. + (output writing): No output if $version_only is set. + +Wed Mar 31 17:33:57 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_CONST): Uncomment and fix second AIX test. + +Wed Mar 31 16:58:12 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acspecific.m4 (AC_CONST): Rewrite first AIX XL C 1.02.0.0 test. + Comment out bogosity in second AIX test. + +Wed Mar 31 12:45:59 1993 Jim Meyering (meyering@comco.com) + + * acgeneral.m4 (AC_DEFINE): Put single quotes around definition + that is echoed with --verbose. AC_DEFINE(MVDIR, "$(libdir)/mvdir") + was generating losing code. + +Mon Mar 29 15:44:24 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_STDC_HEADERS): Add a missing pair of [quotes]. + +Mon Mar 29 14:54:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_DECLARE_YYTEXT): Change sed regexp so it won't + match other identifiers beginning with `yytext'. + +Sat Mar 27 00:11:16 1993 Paul Eggert (eggert@twinsun.com) + + * acspecific.m4 (AC_CONST): Detect broken AIX XL C 1.2.0.0 compiler. + +Thu Mar 25 19:54:50 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_CONST): Remove single quotes from the C + program; they produce shell syntax errors. + + * acgeneral.m4 (AC_DEFINE): Add a newline after "}" to prevent + commands following on the same line of configure.in from + generating shell syntax errors. + + * acgeneral.m4 (AC_COMPILE_CHECK): Use explicit return types + to avoid warnings. + (AC_TEST_CPP): Add parens to force redirection order. + (AC_OUTPUT): Allow hostname to return bogus exit status. + From Jean-loup Gailly <jloup@chorus.fr>. + +Mon Mar 22 16:53:01 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoconf.sh: Use $M4, not m4 explicitly. + (M4): If unset in env, initialize to @m4@. + * autoheader.sh: Likewise. + * Makefile.in (M4): Define new variable. + (autoconf.conf, %.conf): Use it. + (editsh): New variable: sed command to replace @datadir@; also + replace @M4@ with $(M4). + (autoconf, autoheader): Use $(editsh) instead of explicit sed command. + +Mon Mar 22 13:08:10 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_CONST): IBM's /bin/cc under AIX-3.2 on an rs6000 + rejects attempts to modify *any* member of a struct that has a + member declared like `const int *ap[2]'. + +Wed Mar 17 18:08:30 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * autoconf.sh, autoheader.sh (MACRODIR): Variable renamed to + AC_MACRODIR. Don't initialize it at runtime if it is already set + in the environment. + (MACROFILES): Don't set until after options are processed. + (print_version): New temp variable. + + * autoconf.sh, autoheader.sh: Rewrote argument parsing. + Added `-m', `--macrodir', `-h', `--help', and `--' options. + Updated usage string. + + * autoconf.texi: Documented --macrodir option and its effects for + both scripts. + +Tue Mar 16 09:10:48 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_CONST): Sun's SC1.0 ANSI compiler (acc) won't + increment a `const int *' pointer declared through a typedef. + +Mon Mar 15 16:08:42 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Grok `--verbose' flag; set verbose=yes. + (AC_DEFINE): Only echo "defining $1" if $verbose is set. + +Sun Mar 14 18:19:21 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Choose `installbsd' if we find + it, in preference to `install'. + + * acspecific.m4 (AC_CONST): Add a check for `const int *foo' not + allowing modification of FOO (not *FOO). + +Fri Mar 12 15:27:53 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT_HEADER): Remove conftest.sh before + creating it. + +Thu Mar 11 12:57:53 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE): Surround defn with { and }. + + * acgeneral.m4 (AC_OUTPUT_HEADER): Split up $SEDDEFS into smaller + chunks, since some shells can't handle large here documents. + We write several commands in config.status to create conftest.sed + in pieces. + +Mon Mar 8 14:40:53 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_WITH): Don't echo anything. + Use the m4 patsubst fn instead of a run-time sed invocation to + massage $1. + + * acspecific.m4 (AC_DIR_HEADER_CHECK): #include <sys/types.h> + before the header we are testing. + + * acgeneral.m4 (AC_DEFINE): If $2 is empty, echo "defining $1 to be + empty", rather than "defining $1 to be ". + + * acspecific.m4 (AC_DIR_HEADER_CHECK): New; subr of AC_DIR_HEADER. + (AC_DIR_HEADER): Use it to test for each possible header file. + +Tue Mar 2 01:06:25 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * autoheader.sh: Don't use /p1/,/p2/ construct with sed---it's not + portable. Handle broken AIX sed that strips \n from hold space + when it shouldn't. From Jun Hamano <junio@twinsun.com>. + +Tue Mar 02 00:08:39 1993 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_CONST): Fix typo that caused spurious lossage + with /bin/cc from Irix-4. From Karl Berry. + +Fri Feb 26 17:14:58 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acspecific.m4 (AC_CONST): Add bizarre case that loses on SCO 3.2v4. + +Mon Feb 22 13:02:27 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_QUOTE_HERE, AC_QUOTE_SED): Change the quote + chars to { and } instead of nothing. Then use {} (empty quotes) to + separate the patsubst forms from the following dnl. Otherwise the + result of patsubst is pasted together with dnl and the result is + seen as a single token. + + * acspecific.m4 (AC_MINUS_C_MINUS_O): Print msg saying what we are + doing before we do it. + + * acgeneral.m4 (AC_PREFIX): Print out the choice made. + (AC_DEFINE): Print out the definition being done. + + * acgeneral.m4 (AC_DEFINE_QUOTE): Add dnl at end of line. + + * acspecific.m4 (AC_GETLOADAVG): Do changequote around listing of + /dev/kmem and sed frobbing which needs to use [ and ]. + +Sun Feb 21 13:57:55 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh: Use brackets in tr range args. + + * acspecific.m4 (AC_SETVBUF_REVERSED): Make the test fail if + setvbuf returns nonzero. + + * acspecific.m4 (AC_GETLOADAVG): If we need to install setgid, + figure out what group owns /dev/kmem, and set KMEM_GROUP to that. + + * acspecific.m4 (AC_MINUS_C_MINUS_O): Test plain `cc' after testing + $CC. We want to make sure both compilers grok -c -o. + +Thu Feb 18 18:05:14 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_QUOTE_{DQUOTE,SQUOTE,HERE,SED}): New macros. + (AC_DEFINE_{QUOTE,SEDQUOTE}): New macros; subrs of AC_DEFINE. + (AC_DEFINE): Use them to quote $2. + +Wed Feb 17 14:49:14 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_TIMEZONE): Fixed quoting in tzname check. + changequote inside quotes lost. + +Mon Feb 8 14:22:11 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acconfig.h (_ALL_SOURCE): Use #ifndef; AIX compiler way too dumb. + +Sun Jan 31 16:39:46 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acspecific.m4 (AC_TIMEZONE): Put newlines before `#include ...' + in $defs value. + +Thu Jan 28 18:06:53 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acconfig.h (_ALL_SOURCE): Use "!defined (_ALL_SOURCE) || + _ALL_SOURCE == 0" rather than "!_ALL_SOURCE", which bombs on the + AIX compiler. + +Mon Jan 25 12:09:43 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acconfig.h (HAVE_UNION_WAIT, SYS_SIGLIST_DECLARED): New #undef's. + + * acconfig.h (_ALL_SOURCE): Surround with #if !_ALL_SOURCE. + +Fri Jan 22 15:08:33 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): If /usr/local/lib/libgetloadavg.a + exists, add -L/usr/local/lib to LDFLAGS. + +Fri Jan 22 12:49:11 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT_HEADER): Only comment out the #undef NAME + part of the line, to avoid causing errors from existing comments. + +Thu Jan 21 14:50:20 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_HAVE_LIBRARY): Use $libname in "checking for" + message, not $1, to avoid "checking for -l-lfoo". + + * acgeneral.m4 (AC_PREPARE): In compile defn, include $CFLAGS. + + * acgeneral.m4 (AC_OUTPUT): Broke AC_CONFIG_NAME writing out into: + (AC_OUTPUT_HEADER): New macro broken out of AC_OUTPUT. + Add to conftest.sed a new sed command to turn #undef's into comments. + + * acgeneral.m4 (AC_OUTPUT): Use new shell variable, $maxsedlines, + for max number of lines to feed to one sed invocation. + Lower this limit to 20; UTekV 3.2e can't cope with 40. + +Tue Jan 19 13:21:02 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * Version 1.3. + +Fri Jan 15 16:28:18 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_CONFIG_HEADER, AC_HEADER_EGREP, + AC_TEST_PROGRAM): Make DEFS always contain -D commands, + not C code. + +Thu Jan 14 17:05:17 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Check for -lkvm; don't assume it. + +Thu Jan 14 16:46:41 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh (selecting $syms from $TEMPLATES): Use sed to + replace lines containing only blanks with empty lines. + +Thu Jan 14 15:15:31 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_MODE_T): New macro. + + * acgeneral.m4 (AC_OUTPUT): Check for grep -c returning + nothing (AIX 3.1) as well as returning 0. + +Wed Jan 13 16:05:59 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_FUNC_CHECK): Add missing #endif. + + * acgeneral.m4 (AC_OUTPUT): Use sed, not basename. + From Francois Pinard. + +Wed Jan 13 15:49:18 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Set exec_prefix to ${prefix}, not + $(prefix); it now works in both makefiles and shell scripts. + +Wed Jan 13 15:29:04 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * autoheader.sh: If input is empty, don't print all of + acconfig.h. From Francois Pinard. + + * acgeneral.m4 (AC_OUTPUT): Have config.status check all of its + args for validity. + +Tue Jan 12 11:11:45 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Preserve whitespace around = in prefix + and exec_prefix assignments. + + * acspecific.m4 (AC_GETLOADAVG): Values for getloadavg_missing were + reversed. + +Fri Jan 8 18:45:59 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Make config.status not complain with + usage msg when given no args. + + * acgeneral.m4 (AC_HAVE_LIBRARY): Say "checking for -lfoo", not + just "checking for foo". + + * acgeneral.m4 (AC_HAVE_LIBRARY): Remove excess quoting around $2 + and $3. + + * acspecific.m4 (AC_GETLOADAVG): Check for getloadavg library, both + a normally installed one, and one in /usr/local/lib. + After figuring out params for getloadavg.c, figure out whether it + defined LDAV_PRIVILEGED, and if so, set NEED_SETGID to true, and + define GETLOADAVG_PRIVILEGED. + * acconfig.h: Added GETLOADAVG_PRIVILEGED. + +Fri Jan 8 16:16:35 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE, AC_OUTPUT): Restore the third sed string. + + * acgeneral.m4 (AC_FUNC_CHECK): Use __stub_funcname. + + * autoheader.sh: Use Autoconf version number. + + * acgeneral.m4 (AC_OUTPUT): Diagnose usage errors for + config.status. Use grep -c to count nonempty lines instead of + test -s. + + * acspecific.m4 (AC_GETLOADAVG): Use AC_HAVE_LIBRARY. + +Wed Jan 6 19:54:47 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * autoheader.sh (coverage check): Use $TEMPLATES in error msg, not + hard-wired "config.h". + +Wed Jan 6 18:24:41 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): If AC_CONFIG_NAME, change + @DEFS@ to -DHAVE_CONFIG_H in Makefiles etc. Idea from Roland McGrath. + + * acgeneral.m4 (AC_FUNC_CHECK): If __STUB_funcname is defined, + assume the function isn't present. + + * acgeneral.m4 (AC_OUTPUT): Make no args to AC_OUTPUT work + again. From Ian Lance Taylor. + + * acspecific.m4 (AC_CONST): Fix quoting problem. + + * acconfig.h [const]: New addition. + +Thu Dec 31 17:56:18 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_HAVE_LIBRARY): New macro from Noah Friedman. + + * acconfig.h: Renamed from config.h. + + * autoheader.sh: Renamed from autohead.sh. + Support a local acconfig.h. + Use \\012 instead of \\n for tr for portability. + +Thu Dec 31 12:30:34 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * config.h: Added #undef vfork. + +Tue Dec 29 14:26:43 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_COMPILE_CHECK): Use cat rather than echo to + create conftest.c, to avoid " problems. + +Fri Dec 25 15:07:06 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_CONST): Don't define HAVE_CONST. + + * acgeneral.m4 (AC_OUTPUT, AC_DEFINE): Combine the two sed + commands for #undef lines. + * acgeneral.m4 (AC_PROGRAM_EGREP, AC_TEST_PROGRAM, + AC_TEST_CPP, AC_OUTPUT), acspecific.m4 (AC_PROG_CC): Put > + before << when using both, to avoid HP-UX sh bug. + +Wed Dec 23 20:47:53 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Use if, not &&, for --with. + From Jan Brittenson. + +Mon Dec 21 17:13:57 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Use sed instead of head and tail. + Trap to remove the temp files. + + * acgeneral.m4 (AC_OUTPUT): Quote DEFS assignment. + From Ian Lance Taylor. + +Mon Dec 21 14:27:44 1992 Jim Meyering (meyering@comco.com) + + * acspecific.m4 (AC_STDC_HEADERS): Make sure ctype.h macros + are ANSI. Nest tests so we don't need shell temporary variable. + +Sun Dec 20 18:12:33 1992 Roland McGrath (roland@albert.gnu.ai.mit.edu) + + * Makefile.in (%.h: %.in): New rule using autohead. + (all): Do autohead. + (install): Install autohead and config.h. + (autohead): New rule. + (DISTFILES): Added autohead.sh. + * autohead: New script. + +Fri Dec 18 00:21:23 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_HAVE_FUNCS, AC_HAVE_HEADERS): Change method + of tr quoting to keep old shells happy. From Ian Lance Taylor. + + * acgeneral.m4 (AC_DEFINE): Add to SEDDEFS. + (AC_OUTPUT): Use sed instead of awk. + From Ian Lance Taylor. + +Mon Dec 14 14:33:29 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_STDC_HEADERS): Check for string.h + declaring memchr. + + * acgeneral.m4 (AC_NOTICE): Fix comment. + +Fri Dec 11 17:59:23 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * acspecific.m4 (AC_ALLOCA): Don't use libPW; it causes too + much trouble. + +Wed Dec 9 14:04:30 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * config.h: Added HAVE_SYS_WAIT, HAVE_WAITPID, SVR4, UMAX, + [ugp]id_t, UMAX4_3, DGUX. + +Thu Dec 3 13:37:17 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_INSTALL): Ignore AFS install. + From James Clark, jjc@jclark.com. + +Tue Nov 24 07:47:45 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_LEX, AC_DECLARE_YYTEXT, AC_VFORK, AC_WAIT3, + AC_INT_16_BITS, AC_WORDS_BIGENDIAN, AC_ARG_ARRAY): End with a newline. + + * acspecific.m4 (AC_DIR_HEADER): If ndir.h exists and the other + choices don't, define NDIR. + +Sat Nov 21 00:14:51 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_RETSIGTYPE): Instead of grepping for the signal + declaration, try redeclaring it and see if we get an error. + Always define RETSIGTYPE, not just if it's int. + From Ian Lance Taylor. + +Fri Nov 20 17:06:09 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE): Only put -D option in quotes if it + actually contains blanks. + +Thu Nov 19 17:18:40 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): Set a shell var for --with-*. + (AC_WITH): New macro. + + * acspecific.m4 (AC_CONST): If const works, define HAVE_CONST. + + * acspecific.m4 (AC_ALLOCA): Don't use libPW on HP-UX. + +Wed Nov 18 17:36:08 1992 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_DEFINE): When writing a -D with a value, + surround it with 's so the value can contain spaces. + +Thu Nov 12 22:49:35 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_PROG_CC): Don't add -O to CC if GNU C. + (-O2, or nothing, might be more appropriate.) + +Sun Nov 8 23:33:23 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * acspecific.m4 (AC_GETLOADAVG): Check for dwarf.h for general + svr4, then elf.h for Solaris 2, which needs additional libraries. + +Thu Nov 12 22:18:54 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS): --exec_prefix -> --exec-prefix. + +Tue Nov 10 16:15:10 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4: undef m4 `include' builtin. + + * acspecific.m4 (AC_STDC_HEADERS): Don't test for limits.h + due to Ultrix conflict with float.h. + +Thu Oct 29 16:16:11 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_PARSEARGS, AC_PREPARE): New macros, broken out + parts of AC_INIT. + (AC_INIT): Use them. + +Thu Oct 22 20:48:12 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_INSTALL): Comment out arg to `:'. + AIX doesn't like it. + +Wed Oct 14 12:41:02 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Version 1.2. + + * acspecific.m4 (AC_INSTALL): Avoid the AIX install script. + + * acspecific.m4 (AC_RESTARTABLE_SYSCALLS): Wait for child if + sys calls are not restarted, to avoid leaving the child still + running. From Ian Lance Taylor. + +Tue Oct 13 15:43:56 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acspecific.m4 (AC_CONST): Add more tests for brokenness. + From Jim Meyering. + + * acgeneral.m4: Use % instead of ? to avoid shell variable expansion. + +Fri Oct 2 06:55:05 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * acgeneral.m4: Use ? instead of , to separate parts of sed arg. + +Mon Sep 14 12:33:41 1992 David J. MacKenzie (djm@apple-gunkies.gnu.ai.mit.edu) + + * acspecific.m4 (AC_STDC_HEADERS): Also check for float.h. + + * acspecific.m4 (AC_TIMEZONE): Protect [] from being quotes. + +Thu Sep 10 17:12:10 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_OUTPUT): Include the hostname in config.status. + + * acgeneral.m4 (AC_OUTPUT): Use a separate flag in the awk + script instead of checking for non-empty values, so things + like defining const as empty work. From + Steve Emmerson <steve@unidata.ucar.edu>. + +Fri Aug 28 18:51:13 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_INIT): If there's no path on $0, use '.'. + +Thu Aug 27 16:15:14 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * config.h: New file. + + * acgeneral.m4 (AC_INIT): Look for source files in the + directory containing `configure', if not given explicitly. + + * acspecific.m4 (AC_TIMEZONE): Adjust tzname decl for RS6000. + + * acspecific.m4 (AC_GETLOADAVG): Don't use double quotes in + the test program. + +Thu Aug 27 15:26:49 1992 Roland McGrath (roland@wookumz.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): Don't check nlist.h if we found + one of specific things. + +Mon Aug 24 16:22:45 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 1.1. + + * acspecific.m4 (AC_TIMEZONE): Include time.h. Don't + declare tzname if it's a macro. From Jim Meyering. + +Fri Aug 21 14:12:35 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acspecific.m4 (AC_ALLOCA): Check whether the alloca defined by + alloca.h works when given a non-constant argument. + + * acspecific.m4 (AC_GETLOADAVG): Define NLIST_STRUCT and + NLIST_NAME_UNION if appropriate. + + * acgeneral.m4 (AC_OUTPUT): If no args are given, omit the loop to + produce output files. + + * acgeneral.m4 (AC_TEST_PROGRAM): Add a call to exit to try to + suppress core dumped message. From Ian Lance Taylor. + + * acgeneral.m4 (AC_PREFIX): Only print the message if prefix + hasn't been set. From James Clark. + + * acspecific.m4 (AC_SIZE_T, AC_UID_T, AC_PID_T, + AC_RETSIGTYPE): Print a message saying what it's checking for. + (AC_SIZE_T): Define size_t to be unsigned, not int, for + ANSI-friendliness. + + * acspecific.m4 (AC_GETLOADAVG): Just check for elf.h, not + dwarf.h too. + + * autoconf.sh: Exit with status 1 if there are unresolved macros. + Isolate the pattern to make adding other prefixes easy. + Look for aclocal.m4 in . as well as MACRODIR. + +Tue Aug 18 16:35:46 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acspecific.m4 (AC_STRCOLL): New macro. + +Tue Aug 18 15:22:45 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * acspecific.m4 (AC_GETLOADAVG): elf.h implies SVR4. + +Mon Jul 27 14:20:32 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_TEST_PROGRAM): Check for cross-compiling + was missing "test -n". From Ian Lance Taylor. + +Sun Jul 26 16:25:19 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * acgeneral.m4 (AC_SUBST): Support multiple substitutions in a + line. + +Mon Jul 20 01:08:01 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 1.0. diff --git a/util/autoconf/TODO b/util/autoconf/TODO new file mode 100644 index 0000000..89c3229 --- /dev/null +++ b/util/autoconf/TODO @@ -0,0 +1,102 @@ +-*- outline -*- + +Things it might be nice to do someday: + +------------------------------------------------------------------------------ + +* Make AC_CHECK_LIB check whether the function is already available + before checking for the library. This might involve adding another + kind of cache variable to indicate whether a given function needs a + given library. The current ac_cv_func_ variables are intended to + indicate whether the function is in the default libraries, but + actually also take into account whatever value LIBS had when they + were checked for. + +------------------------------------------------------------------------------ + +* Add AC_PROG_CC_POSIX to replace the current ad-hoc macros for AIX, + Minix, ISC, etc. + +------------------------------------------------------------------------------ + +* Use AC_EGREP_CPP instead of AC_TRY_LINK to detect structures and members. + +------------------------------------------------------------------------------ + +* Make AC_CHECK_FUNC[S] automatically use any particular macros for the + listed functions. + +------------------------------------------------------------------------------ + +* Support creating both config.h and DEFS in the same configure. + +------------------------------------------------------------------------------ + +* Select the right CONFIG_SHELL automatically (for Ultrix, Lynx especially.) + +------------------------------------------------------------------------------ + +* Doc: Add concept index. + +------------------------------------------------------------------------------ + +* Doc: Centralize information on POSIX, MS-DOS, cross-compiling, and + other important topics. + +------------------------------------------------------------------------------ + +* Split up AC_SUBST substitutions using a loop to accomodate shells + with severely limited here document sizes, if it turns out to be a problem. + I'm not sure whether the limit is on lines or bytes; if bytes, it + will be less of a problem than it was with the long lines used for + creating a header file. + There has also been a report that HPUX and OSF/1 seds only allow 100 + commands. + +------------------------------------------------------------------------------ + +* Allow [ and ] in egrep patterns and AC_DEFINE args. + +------------------------------------------------------------------------------ + +* Add a Makefile generator that supports the standard GNU targets. + (Being worked on.) + +------------------------------------------------------------------------------ + +* Mike Haertel's suggestions: + +** Provide files containing decls for alloca, strings, etc. + +** Cross compiling: + +*** Error messages include instructions for overriding defaults using +config.site. + +*** Distribute a config.site corresponding to a hypothetical bare POSIX system with c89. + +*** Cache consistency checking: ignore cache if environment +(CC or PATH) differs. + +** Site defaults: + +*** 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. + +------------------------------------------------------------------------------ + +* autoscan: Tell the files that caused inclusion of each macro, +in a dnl comment. (Seems to be hard.) + +------------------------------------------------------------------------------ + +* Look at user contributed macros: prototypes, IEEE double precision math, +shared libraries, various other things. + +------------------------------------------------------------------------------ + +* Test suite: more things to test: +** That the shell scripts produce correct output on some simple data. +** Configuration header files. That autoheader does the right thing, + and so does AC_CONFIG_HEADER when autoconf is run. + +------------------------------------------------------------------------------ diff --git a/util/autoconf/acfunctions b/util/autoconf/acfunctions new file mode 100644 index 0000000..5947ba6 --- /dev/null +++ b/util/autoconf/acfunctions @@ -0,0 +1,58 @@ +# Ones that have their own macros. +major AC_HEADER_MAJOR +minor AC_HEADER_MAJOR +makedev AC_HEADER_MAJOR +bcopy AC_HEADER_STDC +bcmp AC_HEADER_STDC +bzero AC_HEADER_STDC +ioctl AC_PROG_GCC_TRADITIONAL +memchr AC_HEADER_STDC +memcpy AC_HEADER_STDC +memcmp AC_FUNC_MEMCMP +memmove AC_HEADER_STDC +memset AC_HEADER_STDC +index AC_HEADER_STDC +rindex AC_HEADER_STDC +getgroups AC_TYPE_GETGROUPS +signal AC_TYPE_SIGNAL +alloca AC_FUNC_ALLOCA +getloadavg AC_FUNC_GETLOADAVG +mmap AC_FUNC_MMAP +setvbuf AC_FUNC_SETVBUF_REVERSED +strcoll AC_FUNC_STRCOLL +utime AC_FUNC_UTIME_NULL +vfork AC_FUNC_VFORK +vprintf AC_FUNC_VPRINTF +vfprintf AC_FUNC_VPRINTF +vsprintf AC_FUNC_VPRINTF +wait3 AC_FUNC_WAIT3 + +# Others. +fnmatch AC_CHECK_FUNCS +ftime AC_CHECK_FUNCS +gethostname AC_CHECK_FUNCS +gettimeofday AC_CHECK_FUNCS +getusershell AC_CHECK_FUNCS +getcwd AC_CHECK_FUNCS +getwd AC_CHECK_FUNCS +mkdir AC_CHECK_FUNCS +mkfifo AC_CHECK_FUNCS +mktime AC_CHECK_FUNCS +putenv AC_CHECK_FUNCS +re_comp AC_CHECK_FUNCS +regcmp AC_CHECK_FUNCS +regcomp AC_CHECK_FUNCS +rmdir AC_CHECK_FUNCS +select AC_CHECK_FUNCS +socket AC_CHECK_FUNCS +stime AC_CHECK_FUNCS +strcspn AC_CHECK_FUNCS +strdup AC_CHECK_FUNCS +strerror AC_CHECK_FUNCS +strftime AC_CHECK_FUNCS +strspn AC_CHECK_FUNCS +strstr AC_CHECK_FUNCS +strtod AC_CHECK_FUNCS +strtol AC_CHECK_FUNCS +strtoul AC_CHECK_FUNCS +uname AC_CHECK_FUNCS diff --git a/util/autoconf/acheaders b/util/autoconf/acheaders new file mode 100644 index 0000000..0363a38 --- /dev/null +++ b/util/autoconf/acheaders @@ -0,0 +1,27 @@ +# Ones that have their own macros. +dirent.h AC_HEADER_DIRENT +sys/ndir.h AC_HEADER_DIRENT +sys/dir.h AC_HEADER_DIRENT +ndir.h AC_HEADER_DIRENT +sys/mkdev.h AC_HEADER_MAJOR +string.h AC_HEADER_STDC +strings.h AC_HEADER_STDC +stdlib.h AC_HEADER_STDC +stddef.h AC_HEADER_STDC +stdarg.h AC_HEADER_STDC +float.h AC_HEADER_STDC +sys/wait.h AC_HEADER_SYS_WAIT +X11/Xlib.h AC_PATH_X + +# Others. +fcntl.h AC_CHECK_HEADERS +limits.h AC_CHECK_HEADERS +paths.h AC_CHECK_HEADERS +sgtty.h AC_CHECK_HEADERS +sys/file.h AC_CHECK_HEADERS +sys/ioctl.h AC_CHECK_HEADERS +sys/time.h AC_CHECK_HEADERS +sys/window.h AC_CHECK_HEADERS +syslog.h AC_CHECK_HEADERS +termio.h AC_CHECK_HEADERS +unistd.h AC_CHECK_HEADERS diff --git a/util/autoconf/acidentifiers b/util/autoconf/acidentifiers new file mode 100644 index 0000000..a7979c0 --- /dev/null +++ b/util/autoconf/acidentifiers @@ -0,0 +1,22 @@ +sys_siglist AC_DECL_SYS_SIGLIST +mode_t AC_TYPE_MODE_T +off_t AC_TYPE_OFF_T +pid_t AC_TYPE_PID_T +size_t AC_TYPE_SIZE_T +uid_t AC_TYPE_UID_T +gid_t AC_TYPE_UID_T +S_ISDIR AC_HEADER_STAT +S_ISREG AC_HEADER_STAT +S_ISCHR AC_HEADER_STAT +S_ISBLK AC_HEADER_STAT +S_ISFIFO AC_HEADER_STAT +S_ISLNK AC_HEADER_STAT +S_ISSOCK AC_HEADER_STAT +st_blksize AC_STRUCT_ST_BLKSIZE +st_blocks AC_STRUCT_ST_BLOCKS +st_rdev AC_STRUCT_ST_RDEV +timeval AC_HEADER_TIME +tm AC_STRUCT_TM +tm_zone AC_STRUCT_TIMEZONE +const AC_C_CONST +inline AC_C_INLINE diff --git a/util/autoconf/acmakevars b/util/autoconf/acmakevars new file mode 100644 index 0000000..721b79b --- /dev/null +++ b/util/autoconf/acmakevars @@ -0,0 +1,11 @@ +LN AC_PROG_LN_S +AWK AC_PROG_AWK +CC AC_PROG_CC +CPP AC_PROG_CPP +CXX AC_PROG_CXX +INSTALL AC_PROG_INSTALL +LEX AC_PROG_LEX +RANLIB AC_PROG_RANLIB +YACC AC_PROG_YACC +BISON AC_PROG_YACC +MAKE AC_PROG_MAKE_SET diff --git a/util/autoconf/acoldnames.m4 b/util/autoconf/acoldnames.m4 new file mode 100644 index 0000000..39e20b7 --- /dev/null +++ b/util/autoconf/acoldnames.m4 @@ -0,0 +1,79 @@ +dnl Map old names of Autoconf macros to new regularized names. +dnl This file is part of Autoconf. +dnl Copyright (C) 1994 Free Software Foundation, Inc. +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +dnl +dnl General macros. +dnl +define(AC_WARN, [indir([AC_MSG_WARN], $@)])dnl +define(AC_ERROR, [indir([AC_MSG_ERROR], $@)])dnl +AC_DEFUN(AC_PROGRAM_CHECK, [indir([AC_CHECK_PROG], $@)])dnl +AC_DEFUN(AC_PROGRAM_PATH, [indir([AC_PATH_PROG], $@)])dnl +AC_DEFUN(AC_PROGRAMS_CHECK, [indir([AC_CHECK_PROGS], $@)])dnl +AC_DEFUN(AC_PROGRAMS_PATH, [indir([AC_PATH_PROGS], $@)])dnl +AC_DEFUN(AC_PREFIX, [indir([AC_PREFIX_PROGRAM], $@)])dnl +AC_DEFUN(AC_HEADER_EGREP, [indir([AC_EGREP_HEADER], $@)])dnl +AC_DEFUN(AC_PROGRAM_EGREP, [indir([AC_EGREP_CPP], $@)])dnl +AC_DEFUN(AC_TEST_PROGRAM, [indir([AC_TRY_RUN], $@)])dnl +AC_DEFUN(AC_TEST_CPP, [indir([AC_TRY_CPP], $@)])dnl +AC_DEFUN(AC_HEADER_CHECK, [indir([AC_CHECK_HEADER], $@)])dnl +AC_DEFUN(AC_FUNC_CHECK, [indir([AC_CHECK_FUNC], $@)])dnl +AC_DEFUN(AC_HAVE_FUNCS, [indir([AC_CHECK_FUNCS], $@)])dnl +AC_DEFUN(AC_HAVE_HEADERS, [indir([AC_CHECK_HEADERS], $@)])dnl +AC_DEFUN(AC_SIZEOF_TYPE, [indir([AC_CHECK_SIZEOF], $@)])dnl +dnl +dnl Specific macros. +dnl +AC_DEFUN(AC_GCC_TRADITIONAL, [indir([AC_PROG_GCC_TRADITIONAL])])dnl +AC_DEFUN(AC_MINUS_C_MINUS_O, [indir([AC_PROG_CC_C_O])])dnl +AC_DEFUN(AC_SET_MAKE, [indir([AC_PROG_MAKE_SET])])dnl +AC_DEFUN(AC_YYTEXT_POINTER, [indir([AC_DECL_YYTEXT])])dnl +AC_DEFUN(AC_LN_S, [indir([AC_PROG_LN_S])])dnl +AC_DEFUN(AC_STDC_HEADERS, [indir([AC_HEADER_STDC])])dnl +AC_DEFUN(AC_MAJOR_HEADER, [indir([AC_HEADER_MAJOR])])dnl +AC_DEFUN(AC_STAT_MACROS_BROKEN, [indir([AC_HEADER_STAT])])dnl +AC_DEFUN(AC_SYS_SIGLIST_DECLARED, [indir([AC_DECL_SYS_SIGLIST])])dnl +AC_DEFUN(AC_GETGROUPS_T, [indir([AC_TYPE_GETGROUPS])])dnl +AC_DEFUN(AC_UID_T, [indir([AC_TYPE_UID_T])])dnl +AC_DEFUN(AC_SIZE_T, [indir([AC_TYPE_SIZE_T])])dnl +AC_DEFUN(AC_PID_T, [indir([AC_TYPE_PID_T])])dnl +AC_DEFUN(AC_OFF_T, [indir([AC_TYPE_OFF_T])])dnl +AC_DEFUN(AC_MODE_T, [indir([AC_TYPE_MODE_T])])dnl +AC_DEFUN(AC_RETSIGTYPE, [indir([AC_TYPE_SIGNAL])])dnl +AC_DEFUN(AC_MMAP, [indir([AC_FUNC_MMAP])])dnl +AC_DEFUN(AC_VPRINTF, [indir([AC_FUNC_VPRINTF])])dnl +AC_DEFUN(AC_VFORK, [indir([AC_FUNC_VFORK])])dnl +AC_DEFUN(AC_WAIT3, [indir([AC_FUNC_WAIT3])])dnl +AC_DEFUN(AC_ALLOCA, [indir([AC_FUNC_ALLOCA])])dnl +AC_DEFUN(AC_GETLOADAVG, [indir([AC_FUNC_GETLOADAVG])])dnl +AC_DEFUN(AC_UTIME_NULL, [indir([AC_FUNC_UTIME_NULL])])dnl +AC_DEFUN(AC_STRCOLL, [indir([AC_FUNC_STRCOLL])])dnl +AC_DEFUN(AC_SETVBUF_REVERSED, [indir([AC_FUNC_SETVBUF_REVERSED])])dnl +AC_DEFUN(AC_TIME_WITH_SYS_TIME, [indir([AC_HEADER_TIME])])dnl +AC_DEFUN(AC_TIMEZONE, [indir([AC_STRUCT_TIMEZONE])])dnl +AC_DEFUN(AC_ST_BLOCKS, [indir([AC_STRUCT_ST_BLOCKS])])dnl +AC_DEFUN(AC_ST_BLKSIZE, [indir([AC_STRUCT_ST_BLKSIZE])])dnl +AC_DEFUN(AC_ST_RDEV, [indir([AC_STRUCT_ST_RDEV])])dnl +AC_DEFUN(AC_CROSS_CHECK, [indir([AC_C_CROSS])])dnl +AC_DEFUN(AC_CHAR_UNSIGNED, [indir([AC_C_CHAR_UNSIGNED])])dnl +AC_DEFUN(AC_LONG_DOUBLE, [indir([AC_C_LONG_DOUBLE])])dnl +AC_DEFUN(AC_WORDS_BIGENDIAN, [indir([AC_C_BIGENDIAN])])dnl +AC_DEFUN(AC_INLINE, [indir([AC_C_INLINE])])dnl +AC_DEFUN(AC_CONST, [indir([AC_C_CONST])])dnl +AC_DEFUN(AC_LONG_FILE_NAMES, [indir([AC_SYS_LONG_FILE_NAMES])])dnl +AC_DEFUN(AC_RESTARTABLE_SYSCALLS, [indir([AC_SYS_RESTARTABLE_SYSCALLS])])dnl +AC_DEFUN(AC_FIND_X, [indir([AC_PATH_X])])dnl +AC_DEFUN(AC_FIND_XTRA, [indir([AC_PATH_XTRA])])dnl diff --git a/util/autoconf/acprograms b/util/autoconf/acprograms new file mode 100644 index 0000000..be237e3 --- /dev/null +++ b/util/autoconf/acprograms @@ -0,0 +1,18 @@ +ln AC_PROG_LN_S +awk AC_PROG_AWK +nawk AC_PROG_AWK +gawk AC_PROG_AWK +mawk AC_PROG_AWK +cc AC_PROG_CC +gcc AC_PROG_CC +cpp AC_PROG_CPP +CC AC_PROG_CXX +g++ AC_PROG_CXX +install AC_PROG_INSTALL +lex AC_PROG_LEX +flex AC_PROG_LEX +ranlib AC_PROG_RANLIB +yacc AC_PROG_YACC +byacc AC_PROG_YACC +bison AC_PROG_YACC +make AC_PROG_MAKE_SET diff --git a/util/autoconf/autoconf.info-5 b/util/autoconf/autoconf.info-5 new file mode 100644 index 0000000..b18e2b3 --- /dev/null +++ b/util/autoconf/autoconf.info-5 @@ -0,0 +1,607 @@ +This is Info file autoconf.info, produced by Makeinfo-1.55 from the +input file ./autoconf.texi. + +START-INFO-DIR-ENTRY +* Autoconf: (autoconf). Create source code configuration scripts. +END-INFO-DIR-ENTRY + + This file documents the GNU Autoconf package for creating scripts to +configure source code packages using templates and an `m4' macro +package. + + Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + + Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be stated in a +translation approved by the Foundation. + + +File: autoconf.info, Node: Old Macro Names, Next: Environment Variable Index, Prev: History, Up: Top + +Old Macro Names +*************** + + In version 2 of Autoconf, most of the macros were renamed to use a +more uniform and descriptive naming scheme. Here are the old names of +the macros that were renamed, followed by the current names of those +macros. Although the old names are still accepted by the `autoconf' +program for backward compatibility, the old names are considered +obsolete. *Note Macro Names::, for a description of the new naming +scheme. + +`AC_ALLOCA' + `AC_FUNC_ALLOCA' + +`AC_ARG_ARRAY' + removed because of limited usefulness + +`AC_CHAR_UNSIGNED' + `AC_C_CHAR_UNSIGNED' + +`AC_CONST' + `AC_C_CONST' + +`AC_CROSS_CHECK' + `AC_C_CROSS' + +`AC_ERROR' + `AC_MSG_ERROR' + +`AC_FIND_X' + `AC_PATH_X' + +`AC_FIND_XTRA' + `AC_PATH_XTRA' + +`AC_FUNC_CHECK' + `AC_CHECK_FUNC' + +`AC_GCC_TRADITIONAL' + `AC_PROG_GCC_TRADITIONAL' + +`AC_GETGROUPS_T' + `AC_TYPE_GETGROUPS' + +`AC_GETLOADAVG' + `AC_FUNC_GETLOADAVG' + +`AC_HAVE_FUNCS' + `AC_CHECK_FUNCS' + +`AC_HAVE_HEADERS' + `AC_CHECK_HEADERS' + +`AC_HAVE_POUNDBANG' + `AC_SYS_INTERPRETER' (different calling convention) + +`AC_HEADER_CHECK' + `AC_CHECK_HEADER' + +`AC_HEADER_EGREP' + `AC_EGREP_HEADER' + +`AC_INLINE' + `AC_C_INLINE' + +`AC_LN_S' + `AC_PROG_LN_S' + +`AC_LONG_DOUBLE' + `AC_C_LONG_DOUBLE' + +`AC_LONG_FILE_NAMES' + `AC_SYS_LONG_FILE_NAMES' + +`AC_MAJOR_HEADER' + `AC_HEADER_MAJOR' + +`AC_MINUS_C_MINUS_O' + `AC_PROG_CC_C_O' + +`AC_MMAP' + `AC_FUNC_MMAP' + +`AC_MODE_T' + `AC_TYPE_MODE_T' + +`AC_OFF_T' + `AC_TYPE_OFF_T' + +`AC_PID_T' + `AC_TYPE_PID_T' + +`AC_PREFIX' + `AC_PREFIX_PROGRAM' + +`AC_PROGRAMS_CHECK' + `AC_CHECK_PROGS' + +`AC_PROGRAMS_PATH' + `AC_PATH_PROGS' + +`AC_PROGRAM_CHECK' + `AC_CHECK_PROG' + +`AC_PROGRAM_EGREP' + `AC_EGREP_CPP' + +`AC_PROGRAM_PATH' + `AC_PATH_PROG' + +`AC_REMOTE_TAPE' + removed because of limited usefulness + +`AC_RESTARTABLE_SYSCALLS' + `AC_SYS_RESTARTABLE_SYSCALLS' + +`AC_RETSIGTYPE' + `AC_TYPE_SIGNAL' + +`AC_RSH' + removed because of limited usefulness + +`AC_SETVBUF_REVERSED' + `AC_FUNC_SETVBUF_REVERSED' + +`AC_SET_MAKE' + `AC_PROG_MAKE_SET' + +`AC_SIZEOF_TYPE' + `AC_CHECK_SIZEOF' + +`AC_SIZE_T' + `AC_TYPE_SIZE_T' + +`AC_STAT_MACROS_BROKEN' + `AC_HEADER_STAT' + +`AC_STDC_HEADERS' + `AC_HEADER_STDC' + +`AC_STRCOLL' + `AC_FUNC_STRCOLL' + +`AC_ST_BLKSIZE' + `AC_STRUCT_ST_BLKSIZE' + +`AC_ST_BLOCKS' + `AC_STRUCT_ST_BLOCKS' + +`AC_ST_RDEV' + `AC_STRUCT_ST_RDEV' + +`AC_SYS_SIGLIST_DECLARED' + `AC_DECL_SYS_SIGLIST' + +`AC_TEST_CPP' + `AC_TRY_CPP' + +`AC_TEST_PROGRAM' + `AC_TRY_RUN' + +`AC_TIMEZONE' + `AC_STRUCT_TIMEZONE' + +`AC_TIME_WITH_SYS_TIME' + `AC_HEADER_TIME' + +`AC_UID_T' + `AC_TYPE_UID_T' + +`AC_UTIME_NULL' + `AC_FUNC_UTIME_NULL' + +`AC_VFORK' + `AC_FUNC_VFORK' + +`AC_VPRINTF' + `AC_FUNC_VPRINTF' + +`AC_WAIT3' + `AC_FUNC_WAIT3' + +`AC_WARN' + `AC_MSG_WARN' + +`AC_WORDS_BIGENDIAN' + `AC_C_BIGENDIAN' + +`AC_YYTEXT_POINTER' + `AC_DECL_YYTEXT' + + +File: autoconf.info, Node: Environment Variable Index, Next: Output Variable Index, Prev: Old Macro Names, Up: Top + +Environment Variable Index +************************** + + This is an alphabetical list of the environment variables that +Autoconf checks. + +* Menu: + +* AC_MACRODIR: Invoking autoupdate. +* AC_MACRODIR: Invoking autoscan. +* AC_MACRODIR: Invoking autoreconf. +* AC_MACRODIR: Invoking ifnames. +* AC_MACRODIR: Invoking autoheader. +* AC_MACRODIR: Invoking autoconf. +* CONFIG_FILES: Invoking config.status. +* CONFIG_HEADERS: Invoking config.status. +* CONFIG_SHELL: Invoking config.status. +* CONFIG_SITE: Site Defaults. +* CONFIG_STATUS: Invoking config.status. +* SIMPLE_BACKUP_SUFFIX: Invoking autoupdate. + + +File: autoconf.info, Node: Output Variable Index, Next: Preprocessor Symbol Index, Prev: Environment Variable Index, Up: Top + +Output Variable Index +********************* + + This is an alphabetical list of the variables that Autoconf can +substitute into files that it creates, typically one or more +`Makefile's. *Note Setting Output Variables::, for more information on +how this is done. + +* Menu: + +* ALLOCA: Particular Functions. +* AWK: Particular Programs. +* build: System Type Variables. +* build_alias: System Type Variables. +* build_cpu: System Type Variables. +* build_os: System Type Variables. +* build_vendor: System Type Variables. +* CC: Particular Programs. +* CC: UNIX Variants. +* CC: Particular Programs. +* CFLAGS: Preset Output Variables. +* CFLAGS: Particular Programs. +* configure_input: Preset Output Variables. +* CPP: Particular Programs. +* CPPFLAGS: Preset Output Variables. +* CXX: Particular Programs. +* CXXCPP: Particular Programs. +* CXXFLAGS: Preset Output Variables. +* CXXFLAGS: Particular Programs. +* DEFS: Preset Output Variables. +* exec_prefix: Preset Output Variables. +* host: System Type Variables. +* host_alias: System Type Variables. +* host_cpu: System Type Variables. +* host_os: System Type Variables. +* host_vendor: System Type Variables. +* INSTALL: Particular Programs. +* INSTALL_DATA: Particular Programs. +* INSTALL_PROGRAM: Particular Programs. +* KMEM_GROUP: Particular Functions. +* LDFLAGS: Preset Output Variables. +* LEX: Particular Programs. +* LEXLIB: Particular Programs. +* LEX_OUTPUT_ROOT: Particular Programs. +* LIBOBJS: Particular Functions. +* LIBOBJS: Particular Functions. +* LIBOBJS: Generic Functions. +* LIBOBJS: Structures. +* LIBS: UNIX Variants. +* LIBS: UNIX Variants. +* LIBS: Preset Output Variables. +* LN_S: Particular Programs. +* NEED_SETGID: Particular Functions. +* prefix: Preset Output Variables. +* program_transform_name: Transforming Names. +* RANLIB: Particular Programs. +* SET_MAKE: Output. +* srcdir: Preset Output Variables. +* subdirs: Subdirectories. +* target: System Type Variables. +* target_alias: System Type Variables. +* target_cpu: System Type Variables. +* target_os: System Type Variables. +* target_vendor: System Type Variables. +* top_srcdir: Preset Output Variables. +* X_CFLAGS: System Services. +* X_EXTRA_LIBS: System Services. +* X_LIBS: System Services. +* X_PRE_LIBS: System Services. +* YACC: Particular Programs. + + +File: autoconf.info, Node: Preprocessor Symbol Index, Next: Macro Index, Prev: Output Variable Index, Up: Top + +Preprocessor Symbol Index +************************* + + This is an alphabetical list of the C preprocessor symbols that the +Autoconf macros define. To work with Autoconf, C source code needs to +use these names in `#if' directives. + +* Menu: + +* CLOSEDIR_VOID: Particular Functions. +* const: Compiler Characteristics. +* C_ALLOCA: Particular Functions. +* DGUX: Particular Functions. +* DIRENT: Particular Headers. +* GETGROUPS_T: Particular Typedefs. +* GETLODAVG_PRIVILEGED: Particular Functions. +* gid_t: Particular Typedefs. +* HAVE_FUNCTION: Generic Functions. +* HAVE_HEADER: Generic Headers. +* HAVE_ALLOCA_H: Particular Functions. +* HAVE_CONFIG_H: Configuration Headers. +* HAVE_DIRENT_H: Particular Headers. +* HAVE_DOPRNT: Particular Functions. +* HAVE_GETMNTENT: Particular Functions. +* HAVE_LONG_DOUBLE: Compiler Characteristics. +* HAVE_LONG_FILE_NAMES: System Services. +* HAVE_MMAP: Particular Functions. +* HAVE_NDIR_H: Particular Headers. +* HAVE_RESTARTABLE_SYSCALLS: System Services. +* HAVE_STRCOLL: Particular Functions. +* HAVE_STRFTIME: Particular Functions. +* HAVE_ST_BLKSIZE: Structures. +* HAVE_ST_BLOCKS: Structures. +* HAVE_ST_RDEV: Structures. +* HAVE_SYS_DIR_H: Particular Headers. +* HAVE_SYS_NDIR_H: Particular Headers. +* HAVE_SYS_WAIT_H: Particular Headers. +* HAVE_TM_ZONE: Structures. +* HAVE_TZNAME: Structures. +* HAVE_UNISTD_H: Particular Headers. +* HAVE_UTIME_NULL: Particular Functions. +* HAVE_VFORK_H: Particular Functions. +* HAVE_VPRINTF: Particular Functions. +* HAVE_WAIT3: Particular Functions. +* inline: Compiler Characteristics. +* INT_16_BITS: Compiler Characteristics. +* LONG_64_BITS: Compiler Characteristics. +* MAJOR_IN_MKDEV: Particular Headers. +* MAJOR_IN_SYSMACROS: Particular Headers. +* mode_t: Particular Typedefs. +* NDIR: Particular Headers. +* NEED_MEMORY_H: Particular Headers. +* NEED_SETGID: Particular Functions. +* NLIST_NAME_UNION: Particular Functions. +* NLIST_STRUCT: Particular Functions. +* NO_MINUS_C_MINUS_O: Particular Programs. +* off_t: Particular Typedefs. +* pid_t: Particular Typedefs. +* RETSIGTYPE: Particular Typedefs. +* SETVBUF_REVERSED: Particular Functions. +* size_t: Particular Typedefs. +* STDC_HEADERS: Particular Headers. +* SVR4: Particular Functions. +* SYSDIR: Particular Headers. +* SYSNDIR: Particular Headers. +* SYS_SIGLIST_DECLARED: Particular Headers. +* TIME_WITH_SYS_TIME: Structures. +* TM_IN_SYS_TIME: Structures. +* uid_t: Particular Typedefs. +* UMAX: Particular Functions. +* UMAX4_3: Particular Functions. +* USG: Particular Headers. +* vfork: Particular Functions. +* VOID_CLOSEDIR: Particular Headers. +* WORDS_BIGENDIAN: Compiler Characteristics. +* YYTEXT_POINTER: Particular Programs. +* _ALL_SOURCE: UNIX Variants. +* _MINIX: UNIX Variants. +* _POSIX_1_SOURCE: UNIX Variants. +* _POSIX_SOURCE: UNIX Variants. +* _POSIX_SOURCE: UNIX Variants. +* _POSIX_VERSION: Particular Headers. +* __CHAR_UNSIGNED__: Compiler Characteristics. + + +File: autoconf.info, Node: Macro Index, Prev: Preprocessor Symbol Index, Up: Top + +Macro Index +*********** + + This is an alphabetical list of the Autoconf macros. To make the +list easier to use, the macros are listed without their preceding `AC_'. + +* Menu: + +* AIX: UNIX Variants. +* ALLOCA: Old Macro Names. +* ARG_ARRAY: Old Macro Names. +* ARG_ENABLE: Package Options. +* ARG_PROGRAM: Transforming Names. +* ARG_WITH: External Software. +* BEFORE: Suggested Ordering. +* CACHE_VAL: Caching Results. +* CANONICAL_HOST: Canonicalizing. +* CANONICAL_SYSTEM: Canonicalizing. +* CHAR_UNSIGNED: Old Macro Names. +* CHECKING: Printing Messages. +* CHECK_FUNC: Generic Functions. +* CHECK_FUNCS: Generic Functions. +* CHECK_HEADER: Generic Headers. +* CHECK_HEADERS: Generic Headers. +* CHECK_LIB: Libraries. +* CHECK_PROG: Generic Programs. +* CHECK_PROGS: Generic Programs. +* CHECK_SIZEOF: Compiler Characteristics. +* CHECK_TYPE: Generic Typedefs. +* COMPILE_CHECK: Examining Libraries. +* CONFIG_AUX_DIR: Input. +* CONFIG_HEADER: Configuration Headers. +* CONFIG_SUBDIRS: Subdirectories. +* CONST: Old Macro Names. +* CROSS_CHECK: Old Macro Names. +* C_BIGENDIAN: Compiler Characteristics. +* C_CHAR_UNSIGNED: Compiler Characteristics. +* C_CONST: Compiler Characteristics. +* C_CROSS: Test Programs. +* C_INLINE: Compiler Characteristics. +* C_LONG_DOUBLE: Compiler Characteristics. +* DECL_SYS_SIGLIST: Particular Headers. +* DECL_YYTEXT: Particular Programs. +* DEFINE: Defining Symbols. +* DEFINE_UNQUOTED: Defining Symbols. +* DEFUN: Macro Definitions. +* DIR_HEADER: Particular Headers. +* DYNIX_SEQ: UNIX Variants. +* EGREP_CPP: Examining Declarations. +* EGREP_HEADER: Examining Declarations. +* ENABLE: Package Options. +* ERROR: Old Macro Names. +* FIND_X: Old Macro Names. +* FIND_XTRA: Old Macro Names. +* FUNC_ALLOCA: Particular Functions. +* FUNC_CHECK: Old Macro Names. +* FUNC_CLOSEDIR_VOID: Particular Functions. +* FUNC_GETLOADAVG: Particular Functions. +* FUNC_GETMNTENT: Particular Functions. +* FUNC_MEMCMP: Particular Functions. +* FUNC_MMAP: Particular Functions. +* FUNC_SETVBUF_REVERSED: Particular Functions. +* FUNC_STRCOLL: Particular Functions. +* FUNC_STRFTIME: Particular Functions. +* FUNC_UTIME_NULL: Particular Functions. +* FUNC_VFORK: Particular Functions. +* FUNC_VPRINTF: Particular Functions. +* FUNC_WAIT3: Particular Functions. +* GCC_TRADITIONAL: Old Macro Names. +* GETGROUPS_T: Old Macro Names. +* GETLOADAVG: Old Macro Names. +* HAVE_FUNCS: Old Macro Names. +* HAVE_HEADERS: Old Macro Names. +* HAVE_LIBRARY: Libraries. +* HAVE_POUNDBANG: Old Macro Names. +* HEADER_CHECK: Old Macro Names. +* HEADER_DIRENT: Particular Headers. +* HEADER_EGREP: Old Macro Names. +* HEADER_MAJOR: Particular Headers. +* HEADER_STAT: Structures. +* HEADER_STDC: Particular Headers. +* HEADER_SYS_WAIT: Particular Headers. +* HEADER_TIME: Structures. +* INIT: Input. +* INLINE: Old Macro Names. +* INT_16_BITS: Compiler Characteristics. +* IRIX_SUN: UNIX Variants. +* ISC_POSIX: UNIX Variants. +* LANG_C: Language Choice. +* LANG_CPLUSPLUS: Language Choice. +* LANG_RESTORE: Language Choice. +* LANG_SAVE: Language Choice. +* LINK_FILES: Using System Type. +* LN_S: Old Macro Names. +* LONG_64_BITS: Compiler Characteristics. +* LONG_DOUBLE: Old Macro Names. +* LONG_FILE_NAMES: Old Macro Names. +* MAJOR_HEADER: Old Macro Names. +* MEMORY_H: Particular Headers. +* MINIX: UNIX Variants. +* MINUS_C_MINUS_O: Old Macro Names. +* MMAP: Old Macro Names. +* MODE_T: Old Macro Names. +* MSG_CHECKING: Printing Messages. +* MSG_ERROR: Printing Messages. +* MSG_RESULT: Printing Messages. +* MSG_WARN: Printing Messages. +* OBSOLETE: Obsolete Macros. +* OFF_T: Old Macro Names. +* OUTPUT: Output. +* PATH_PROG: Generic Programs. +* PATH_PROGS: Generic Programs. +* PATH_X: System Services. +* PATH_XTRA: System Services. +* PID_T: Old Macro Names. +* PREFIX: Old Macro Names. +* PREFIX_PROGRAM: Default Prefix. +* PREREQ: Versions. +* PROGRAMS_CHECK: Old Macro Names. +* PROGRAMS_PATH: Old Macro Names. +* PROGRAM_CHECK: Old Macro Names. +* PROGRAM_EGREP: Old Macro Names. +* PROGRAM_PATH: Old Macro Names. +* PROG_AWK: Particular Programs. +* PROG_CC: Particular Programs. +* PROG_CC_C_O: Particular Programs. +* PROG_CPP: Particular Programs. +* PROG_CXX: Particular Programs. +* PROG_CXXCPP: Particular Programs. +* PROG_GCC_TRADITIONAL: Particular Programs. +* PROG_INSTALL: Particular Programs. +* PROG_LEX: Particular Programs. +* PROG_LN_S: Particular Programs. +* PROG_MAKE_SET: Output. +* PROG_RANLIB: Particular Programs. +* PROG_YACC: Particular Programs. +* PROVIDE: Prerequisite Macros. +* REMOTE_TAPE: Old Macro Names. +* REPLACE_FUNCS: Generic Functions. +* REQUIRE: Prerequisite Macros. +* REQUIRE_CPP: Language Choice. +* RESTARTABLE_SYSCALLS: Old Macro Names. +* RETSIGTYPE: Old Macro Names. +* REVISION: Versions. +* RSH: Old Macro Names. +* SCO_INTL: UNIX Variants. +* SETVBUF_REVERSED: Old Macro Names. +* SET_MAKE: Old Macro Names. +* SIZEOF_TYPE: Old Macro Names. +* SIZE_T: Old Macro Names. +* STAT_MACROS_BROKEN: Structures. +* STAT_MACROS_BROKEN: Old Macro Names. +* STDC_HEADERS: Old Macro Names. +* STRCOLL: Old Macro Names. +* STRUCT_ST_BLKSIZE: Structures. +* STRUCT_ST_BLOCKS: Structures. +* STRUCT_ST_RDEV: Structures. +* STRUCT_TIMEZONE: Structures. +* STRUCT_TM: Structures. +* ST_BLKSIZE: Old Macro Names. +* ST_BLOCKS: Old Macro Names. +* ST_RDEV: Old Macro Names. +* SUBST: Setting Output Variables. +* SUBST_FILE: Setting Output Variables. +* SYS_INTERPRETER: System Services. +* SYS_LONG_FILE_NAMES: System Services. +* SYS_RESTARTABLE_SYSCALLS: System Services. +* SYS_SIGLIST_DECLARED: Old Macro Names. +* TEST_CPP: Old Macro Names. +* TEST_PROGRAM: Old Macro Names. +* TIMEZONE: Old Macro Names. +* TIME_WITH_SYS_TIME: Old Macro Names. +* TRY_COMPILE: Examining Syntax. +* TRY_CPP: Examining Declarations. +* TRY_LINK: Examining Libraries. +* TRY_RUN: Test Programs. +* TYPE_GETGROUPS: Particular Typedefs. +* TYPE_MODE_T: Particular Typedefs. +* TYPE_OFF_T: Particular Typedefs. +* TYPE_PID_T: Particular Typedefs. +* TYPE_SIGNAL: Particular Typedefs. +* TYPE_SIZE_T: Particular Typedefs. +* TYPE_UID_T: Particular Typedefs. +* UID_T: Old Macro Names. +* UNISTD_H: Particular Headers. +* USG: Particular Headers. +* UTIME_NULL: Old Macro Names. +* VERBOSE: Printing Messages. +* VFORK: Old Macro Names. +* VPRINTF: Old Macro Names. +* WAIT3: Old Macro Names. +* WARN: Old Macro Names. +* WITH: External Software. +* WORDS_BIGENDIAN: Old Macro Names. +* XENIX_DIR: UNIX Variants. +* YYTEXT_POINTER: Old Macro Names. + + diff --git a/util/autoconf/autoconf.m4 b/util/autoconf/autoconf.m4 new file mode 100644 index 0000000..2b17435 --- /dev/null +++ b/util/autoconf/autoconf.m4 @@ -0,0 +1,27 @@ +dnl Driver that loads the Autoconf macro files. +dnl Requires GNU m4. +dnl This file is part of Autoconf. +dnl Copyright (C) 1994 Free Software Foundation, Inc. +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +dnl +dnl Written by David MacKenzie. +dnl +include(acgeneral.m4)dnl +builtin(include, acspecific.m4)dnl +builtin(include, acoldnames.m4)dnl +dnl Do not sinclude acsite.m4 here, because it may not be installed +dnl yet when Autoconf is frozen. +dnl Do not sinclude ./aclocal.m4 here, to prevent it from being frozen. diff --git a/util/autoconf/autoheader.m4 b/util/autoconf/autoheader.m4 new file mode 100644 index 0000000..62427d9 --- /dev/null +++ b/util/autoconf/autoheader.m4 @@ -0,0 +1,84 @@ +dnl Driver and redefinitions of some Autoconf macros for autoheader. +dnl This file is part of Autoconf. +dnl Copyright (C) 1994 Free Software Foundation, Inc. +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +dnl +dnl Written by Roland McGrath. +dnl +include(acgeneral.m4)dnl +builtin(include, acspecific.m4)dnl +builtin(include, acoldnames.m4)dnl + +dnl These are alternate definitions of some macros, which produce +dnl strings in the output marked with "@@@" so we can easily extract +dnl the information we want. The `#' at the end of the first line of +dnl each definition seems to be necessary to prevent m4 from eating +dnl the newline, which makes the @@@ not always be at the beginning of +dnl a line. + +define([AC_CHECK_FUNCS], [# +@@@funcs="$funcs $1"@@@ +]) + +define([AC_CHECK_HEADERS], [# +@@@headers="$headers $1"@@@ +]) + +define([AC_CHECK_HEADERS_DIRENT], [# +@@@headers="$headers $1"@@@ +]) + +define([AC_CHECK_LIB], [# + ifelse([$3], , [ +@@@libs="$libs $1"@@@ +], [ +# If it was found, we do: +$3 +# If it was not found, we do: +$4 +]) +]) + +define([AC_HAVE_LIBRARY], [# +changequote(<<, >>)dnl +define(<<AC_LIB_NAME>>, dnl +patsubst(patsubst($1, <<lib\([^\.]*\)\.a>>, <<\1>>), <<-l>>, <<>>))dnl +changequote([, ])dnl + ifelse([$2], , [ +@@@libs="$libs AC_LIB_NAME"@@@ +], [ +# If it was found, we do: +$2 +# If it was not found, we do: +$3 +]) +]) + +define([AC_CHECK_SIZEOF], [# +@@@types="$types,$1"@@@ +]) + +define([AC_CONFIG_HEADER], [# +@@@config_h=$1@@@ +]) + +define([AC_DEFINE], [# +@@@syms="$syms $1"@@@ +]) + +define([AC_DEFINE_UNQUOTED], [# +@@@syms="$syms $1"@@@ +]) diff --git a/util/autoconf/autoupdate.sh b/util/autoconf/autoupdate.sh new file mode 100644 index 0000000..8fd1442 --- /dev/null +++ b/util/autoconf/autoupdate.sh @@ -0,0 +1,112 @@ +#!/bin/sh +# autoupdate - modernize a configure.in +# Copyright (C) 1994 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# If given no args, update `configure.in'; +# With one arg, write on the standard output from the given template file. +# +# Written by David MacKenzie <djm@gnu.ai.mit.edu> + +usage="\ +Usage: autoupdate [-h] [--help] [-m dir] [--macrodir=dir] + [--version] [template-file]" + +sedtmp=/tmp/acups.$$ +# For debugging. +#sedtmp=/tmp/acups +show_version=no +test -z "${AC_MACRODIR}" && AC_MACRODIR=@datadir@ + +while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) + echo "${usage}" 1>&2; exit 0 ;; + --macrodir=* | --m*=* ) + AC_MACRODIR="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" + shift ;; + -m | --macrodir | --m* ) + shift + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } + AC_MACRODIR="${1}" + shift ;; + --version | --versio | --versi | --vers) + show_version=yes; shift ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "${usage}" 1>&2; exit 1 ;; + * ) + break ;; + esac +done + +if test $show_version = yes; then + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" + exit 0 +fi + +: ${SIMPLE_BACKUP_SUFFIX='~'} + +tmpout=acupo.$$ +trap 'rm -f $sedtmp $tmpout; exit 1' 1 2 15 +case $# in + 0) infile=configure.in; out="> $tmpout" + # Make sure $infile can be read, and $tmpout has the same permissions. + cp $infile $tmpout || exit + + # Make sure $infile can be written. + if test ! -w $infile; then + rm -f $tmpout + echo "$0: $infile: cannot write" >&2 + exit 1 + fi + ;; + 1) infile="$1"; out= ;; + *) echo "$usage" >&2; exit 1 ;; +esac + +# Turn the m4 macro file into a sed script. +# For each old macro name, make one substitution command to replace it +# at the end of a line, and one when followed by ( or whitespace. +# That is easier than splitting the macros up into those that take +# arguments and those that don't. +sed -n -e ' +/^AC_DEFUN(/ { + s//s%/ + s/, *\[indir(\[/$%/ + s/\].*/%/ + p + s/\$// + s/%/^/ + s/%/\\([( ]\\)^/ + s/%/\\1^/ + s/\^/%/g + p +}' ${AC_MACRODIR}/acoldnames.m4 > $sedtmp +eval sed -f $sedtmp $infile $out + +case $# in + 0) mv configure.in configure.in${SIMPLE_BACKUP_SUFFIX} && + mv $tmpout configure.in ;; +esac + +rm -f $sedtmp $tmpout +exit 0 diff --git a/util/autoconf/ifnames.sh b/util/autoconf/ifnames.sh new file mode 100644 index 0000000..cd95da8 --- /dev/null +++ b/util/autoconf/ifnames.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# ifnames - print the identifiers used in C preprocessor conditionals +# Copyright (C) 1994 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Reads from stdin if no files are given. +# Writes to stdout. + +# Written by David MacKenzie <djm@gnu.ai.mit.edu> + +usage="\ +Usage: ifnames [-h] [--help] [-m dir] [--macrodir=dir] [--version] [file...]" +show_version=no + +test -z "$AC_MACRODIR" && AC_MACRODIR=@datadir@ + +while test $# -gt 0; do + case "$1" in + -h | --help | --h* ) + echo "$usage"; exit 0 ;; + --macrodir=* | --m*=* ) + AC_MACRODIR="`echo \"$1\" | sed -e 's/^[^=]*=//'`" + shift ;; + -m | --macrodir | --m* ) + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + AC_MACRODIR="$1" + shift ;; + --version | --versio | --versi | --vers) + show_version=yes; shift ;; + --) # Stop option processing. + shift; break ;; + -*) echo "$usage" 1>&2; exit 1 ;; + *) break ;; + esac +done + +if test $show_version = yes; then + version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ + $AC_MACRODIR/acgeneral.m4` + echo "Autoconf version $version" + exit 0 +fi + +if test $# -eq 0; then + cat > stdin + set stdin + trap 'rm -f stdin' 0 + trap 'rm -f stdin; exit 1' 1 3 15 +fi + +for arg +do +# The first two substitutions remove comments. Not perfect, but close enough. +# The second is for comments that end on a later line. The others do: +# Enclose identifiers in @ and a space. +# Handle "#if 0" -- there are no @s to trigger removal. +# Remove non-identifiers. +# Remove any spaces at the end. +# Translate any other spaces to newlines. +sed -n ' +s%/\*[^/]*\*/%%g +s%/\*[^/]*%%g +/^[ ]*#[ ]*ifn*def[ ][ ]*\([A-Za-z0-9_]*\).*/s//\1/p +/^[ ]*#[ ]*e*l*if[ ]/{ + s/// + s/@//g + s/\([A-Za-z_][A-Za-z_0-9]*\)/@\1 /g + s/$/@ / + s/@defined //g + s/[^@]*@\([^ ]* \)[^@]*/\1/g + s/ *$// + s/ /\ +/g + p +} +' $arg | sort -u | sed 's%$% '$arg'%' +done | awk ' +{ files[$1] = files[$1] " " $2 } +END { for (sym in files) print sym files[sym] }' | sort diff --git a/util/autoconf/install-sh b/util/autoconf/install-sh new file mode 100755 index 0000000..ab74c88 --- /dev/null +++ b/util/autoconf/install-sh @@ -0,0 +1,238 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. +# + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +tranformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/util/autoconf/install.texi b/util/autoconf/install.texi new file mode 100644 index 0000000..bff0738 --- /dev/null +++ b/util/autoconf/install.texi @@ -0,0 +1,193 @@ +@c This file is included by autoconf.texi and is used to produce +@c the INSTALL file. + +@node Basic Installation +@section Basic Installation + +These are generic installation instructions. + +The @code{configure} shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a @file{Makefile} in each directory of the +package. It may also create one or more @file{.h} files containing +system-dependent definitions. Finally, it creates a shell script +@file{config.status} that you can run in the future to recreate the +current configuration, a file @file{config.cache} that saves the results +of its tests to speed up reconfiguring, and a file @file{config.log} +containing compiler output (useful mainly for debugging +@code{configure}). + +If you need to do unusual things to compile the package, please try to +figure out how @code{configure} could check whether to do them, and mail +diffs or instructions to the address given in the @file{README} so they +can be considered for the next release. If at some point +@file{config.cache} contains results you don't want to keep, you may +remove or edit it. + +The file @file{configure.in} is used to create @file{configure} by a +program called @code{autoconf}. You only need @file{configure.in} if +you want to change it or regenerate @file{configure} using a newer +version of @code{autoconf}. + +@noindent +The simplest way to compile this package is: + +@enumerate +@item +@code{cd} to the directory containing the package's source code and type +@samp{./configure} to configure the package for your system. If you're +using @code{csh} on an old version of System V, you might need to type +@samp{sh ./configure} instead to prevent @code{csh} from trying to +execute @code{configure} itself. + +Running @code{configure} takes awhile. While running, it prints some +messages telling which features it is checking for. + +@item +Type @samp{make} to compile the package. + +@item +Optionally, type @samp{make check} to run any self-tests that come with +the package. + +@item +Type @samp{make install} to install the programs and any data files and +documentation. + +@item +You can remove the program binaries and object files from the source +directory by typing @samp{make clean}. To also remove the files that +@code{configure} created (so you can compile the package for a different +kind of computer), type @samp{make distclean}. +@end enumerate + +@node Compilers and Options +@section Compilers and Options + +Some systems require unusual options for compilation or linking that +the @code{configure} script does not know about. You can give +@code{configure} initial values for variables by setting them in the +environment. Using a Bourne-compatible shell, you can do that on the +command line like this: +@example +CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure +@end example + +@noindent +Or on systems that have the @code{env} program, you can do it like this: +@example +env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure +@end example + +@node Build Directory +@section Using a Different Build Directory + +You can compile the package in a different directory from the one +containing the source code. Doing so allows you to compile it on more +than one kind of computer at the same time. To do this, you must use a +version of @code{make} that supports the @code{VPATH} variable, such as +GNU @code{make}. @code{cd} to the directory where you want the object +files and executables to go and run the @code{configure} script. +@code{configure} automatically checks for the source code in the +directory that @code{configure} is in and in @file{..}. + +@node Installation Names +@section Installation Names + +By default, @samp{make install} will install the package's files in +@file{/usr/local/bin}, @file{/usr/local/man}, etc. You can specify an +installation prefix other than @file{/usr/local} by giving +@code{configure} the option @samp{--prefix=@var{path}}. + +You can specify separate installation prefixes for architecture-specific +files and architecture-independent files. If you give @code{configure} +the option @samp{--exec-prefix=@var{path}}, the package will use +@var{path} as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + +If the package supports it, you can cause programs to be installed with +an extra prefix or suffix on their names by giving @code{configure} the +option @samp{--program-prefix=@var{PREFIX}} or +@samp{--program-suffix=@var{SUFFIX}}. + +@node Optional Features +@section Optional Features + +Some packages pay attention to @samp{--enable-@var{feature}} options to +@code{configure}, where @var{feature} indicates an optional part of the +package. They may also pay attention to @samp{--with-@var{package}} +options, where @var{package} is something like @samp{gnu-as} or @samp{x} +(for the X Window System). The @file{README} should mention any +@samp{--enable-} and @samp{--with-} options that the package recognizes. + +For packages that use the X Window System, @code{configure} can usually +find the X include and library files automatically, but if it doesn't, +you can use the @code{configure} options @samp{--x-includes=@var{dir}} +and @samp{--x-libraries=@var{dir}} to specify their locations. + +@node System Type +@section Specifying the System Type + +There may be some features @code{configure} can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually @code{configure} can figure that out, but if it +prints a message saying it can not guess the host type, give it the +@samp{--host=@var{type}} option. @var{type} can either be a short name +for the system type, such as @samp{sun4}, or a canonical name with three +fields: +@example +@var{cpu}-@var{company}-@var{system} +@end example +@noindent +See the file @file{config.sub} for the possible values of each field. +If @file{config.sub} isn't included in this package, then this package +doesn't need to know the host type. + +If you are building compiler tools for cross-compiling, you can also use +the @samp{--target=@var{type}} option to select the type of system +they will produce code for and the @samp{--build=@var{type}} option +to select the type of system on which you are compiling the package. + +@node Sharing Defaults +@section Sharing Defaults + +If you want to set default values for @code{configure} scripts to share, +you can create a site shell script called @file{config.site} that gives +default values for variables like @code{CC}, @code{cache_file}, and +@code{prefix}. @code{configure} looks for +@file{@var{prefix}/share/config.site} if it exists, then +@file{@var{prefix}/etc/config.site} if it exists. Or, you can set +the @code{CONFIG_SITE} environment variable to the location of the site +script. A warning: not all @code{configure} scripts look for a site script. + +@node Operation Controls +@section Operation Controls + +@code{configure} recognizes the following options to control how it +operates. + +@table @code +@item --cache-file=@var{file} +Save the results of the tests in @var{file} instead of +@file{config.cache}. Set @var{file} to @file{/dev/null} to disable +caching, for debugging @code{configure}. + +@item --help +Print a summary of the options to @code{configure}, and exit. + +@item --quiet +@itemx --silent +@itemx -q +Do not print messages saying which checks are being made. + +@item --srcdir=@var{dir} +Look for the package's source code in directory @var{dir}. Usually +@code{configure} can determine that directory automatically. + +@item --version +Print the version of Autoconf used to generate the @code{configure} +script, and exit. +@end table + +@noindent +@code{configure} also accepts some other, not widely useful, options. diff --git a/util/autoconf/standards.info-1 b/util/autoconf/standards.info-1 new file mode 100644 index 0000000..05178a0 --- /dev/null +++ b/util/autoconf/standards.info-1 @@ -0,0 +1,1188 @@ +This is Info file ../standards.info, produced by Makeinfo-1.55 from the +input file ../standards.texi. + +START-INFO-DIR-ENTRY +* Standards: (standards). GNU coding standards. +END-INFO-DIR-ENTRY + + GNU Coding Standards Copyright (C) 1992, 1993, 1994 Free Software +Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + + Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be stated in a +translation approved by the Free Software Foundation. + + +File: standards.info, Node: Top, Next: Preface, Prev: (dir), Up: (dir) + +Version +******* + + Last updated 21 September 1994. + +* Menu: + +* Preface:: About the GNU Coding Standards +* Reading Non-Free Code:: Referring to Proprietary Programs +* Contributions:: Accepting Contributions +* Change Logs:: Recording Changes +* Compatibility:: Compatibility with Other Implementations +* Makefile Conventions:: Makefile Conventions +* Configuration:: How Configuration Should Work +* Source Language:: Using Languages Other Than C +* Formatting:: Formatting Your Source Code +* Comments:: Commenting Your Work +* Syntactic Conventions:: Clean Use of C Constructs +* Names:: Naming Variables and Functions +* Using Extensions:: Using Non-standard Features +* System Functions:: Portability and "standard" library functions +* Semantics:: Program Behavior for All Programs +* Errors:: Formatting Error Messages +* Libraries:: Library Behavior +* Portability:: Portability As It Applies to GNU +* User Interfaces:: Standards for Command Line Interfaces +* Documentation:: Documenting Programs +* Releases:: Making Releases + + +File: standards.info, Node: Preface, Next: Reading Non-Free Code, Prev: Top, Up: Top + +About the GNU Coding Standards +****************************** + + The GNU Coding Standards were written by Richard Stallman and other +GNU Project volunteers. Their purpose is to make the GNU system clean, +consistent, and easy to install. This document can also be read as a +guide to write portable, robust and reliable programs. It focuses on +programs written in C, but many of the rules and principles are useful +even if you write in another programming language. The rules often +state reasons for writing in a certain way. + + Corrections or suggestions regarding this document should be sent to +`gnu@prep.ai.mit.edu'. If you make a suggestion, please include a +suggested new wording for it; our time is limited. We prefer a context +diff to the `standards.texi' or `make-stds.texi' files, but if you +don't have those files, please mail your suggestion anyway. + + This release of the GNU Coding Standards was last updated 21 +September 1994. + + +File: standards.info, Node: Reading Non-Free Code, Next: Contributions, Prev: Preface, Up: Top + +Referring to Proprietary Programs +********************************* + + Don't in any circumstances refer to Unix source code for or during +your work on GNU! (Or to any other proprietary programs.) + + If you have a vague recollection of the internals of a Unix program, +this does not absolutely mean you can't write an imitation of it, but +do try to organize the imitation internally along different lines, +because this is likely to make the details of the Unix version +irrelevant and dissimilar to your results. + + For example, Unix utilities were generally optimized to minimize +memory use; if you go for speed instead, your program will be very +different. You could keep the entire input file in core and scan it +there instead of using stdio. Use a smarter algorithm discovered more +recently than the Unix program. Eliminate use of temporary files. Do +it in one pass instead of two (we did this in the assembler). + + Or, on the contrary, emphasize simplicity instead of speed. For some +applications, the speed of today's computers makes simpler algorithms +adequate. + + Or go for generality. For example, Unix programs often have static +tables or fixed-size strings, which make for arbitrary limits; use +dynamic allocation instead. Make sure your program handles NULs and +other funny characters in the input files. Add a programming language +for extensibility and write part of the program in that language. + + Or turn some parts of the program into independently usable +libraries. Or use a simple garbage collector instead of tracking +precisely when to free memory, or use a new GNU facility such as +obstacks. + + +File: standards.info, Node: Contributions, Next: Change Logs, Prev: Reading Non-Free Code, Up: Top + +Accepting Contributions +*********************** + + If someone else sends you a piece of code to add to the program you +are working on, we need legal papers to use it--the same sort of legal +papers we will need to get from you. *Each* significant contributor to +a program must sign some sort of legal papers in order for us to have +clear title to the program. The main author alone is not enough. + + So, before adding in any contributions from other people, tell us so +we can arrange to get the papers. Then wait until we tell you that we +have received the signed papers, before you actually use the +contribution. + + This applies both before you release the program and afterward. If +you receive diffs to fix a bug, and they make significant change, we +need legal papers for it. + + You don't need papers for changes of a few lines here or there, since +they are not significant for copyright purposes. Also, you don't need +papers if all you get from the suggestion is some ideas, not actual code +which you use. For example, if you write a different solution to the +problem, you don't need to get papers. + + I know this is frustrating; it's frustrating for us as well. But if +you don't wait, you are going out on a limb--for example, what if the +contributor's employer won't sign a disclaimer? You might have to take +that code out again! + + The very worst thing is if you forget to tell us about the other +contributor. We could be very embarrassed in court some day as a +result. + + +File: standards.info, Node: Change Logs, Next: Compatibility, Prev: Contributions, Up: Top + +Change Logs +*********** + + Keep a change log for each directory, describing the changes made to +source files in that directory. The purpose of this is so that people +investigating bugs in the future will know about the changes that might +have introduced the bug. Often a new bug can be found by looking at +what was recently changed. More importantly, change logs can help +eliminate conceptual inconsistencies between different parts of a +program; they can give you a history of how the conflicting concepts +arose. + + Use the Emacs command `M-x add-change' to start a new entry in the +change log. An entry should have an asterisk, the name of the changed +file, and then in parentheses the name of the changed functions, +variables or whatever, followed by a colon. Then describe the changes +you made to that function or variable. + + Separate unrelated entries with blank lines. When two entries +represent parts of the same change, so that they work together, then +don't put blank lines between them. Then you can omit the file name +and the asterisk when successive entries are in the same file. + + Here are some examples: + + * register.el (insert-register): Return nil. + (jump-to-register): Likewise. + + * sort.el (sort-subr): Return nil. + + * tex-mode.el (tex-bibtex-file, tex-file, tex-region): + Restart the tex shell if process is gone or stopped. + (tex-shell-running): New function. + + * expr.c (store_one_arg): Round size up for move_block_to_reg. + (expand_call): Round up when emitting USE insns. + * stmt.c (assign_parms): Round size up for move_block_from_reg. + + It's important to name the changed function or variable in full. +Don't abbreviate them; don't combine them. Subsequent maintainers will +often search for a function name to find all the change log entries that +pertain to it; if you abbreviate the name, they won't find it when they +search. For example, some people are tempted to abbreviate groups of +function names by writing `* register.el ({insert,jump-to}-register)'; +this is not a good idea, since searching for `jump-to-register' or +`insert-register' would not find the entry. + + There's no need to describe the full purpose of the changes or how +they work together. It is better to put such explanations in comments +in the code. That's why just "New function" is enough; there is a +comment with the function in the source to explain what it does. + + However, sometimes it is useful to write one line to describe the +overall purpose of a large batch of changes. + + You can think of the change log as a conceptual "undo list" which +explains how earlier versions were different from the current version. +People can see the current version; they don't need the change log to +tell them what is in it. What they want from a change log is a clear +explanation of how the earlier version differed. + + When you change the calling sequence of a function in a simple +fashion, and you change all the callers of the function, there is no +need to make individual entries for all the callers. Just write in the +entry for the function being called, "All callers changed." + + When you change just comments or doc strings, it is enough to write +an entry for the file, without mentioning the functions. Write just, +"Doc fix." There's no need to keep a change log for documentation +files. This is because documentation is not susceptible to bugs that +are hard to fix. Documentation does not consist of parts that must +interact in a precisely engineered fashion; to correct an error, you +need not know the history of the erroneous passage. + + +File: standards.info, Node: Compatibility, Next: Makefile Conventions, Prev: Change Logs, Up: Top + +Compatibility with Other Implementations +**************************************** + + With certain exceptions, utility programs and libraries for GNU +should be upward compatible with those in Berkeley Unix, and upward +compatible with ANSI C if ANSI C specifies their behavior, and upward +compatible with POSIX if POSIX specifies their behavior. + + When these standards conflict, it is useful to offer compatibility +modes for each of them. + + ANSI C and POSIX prohibit many kinds of extensions. Feel free to +make the extensions anyway, and include a `--ansi' or `--compatible' +option to turn them off. However, if the extension has a significant +chance of breaking any real programs or scripts, then it is not really +upward compatible. Try to redesign its interface. + + Many GNU programs suppress extensions that conflict with POSIX if the +environment variable `POSIXLY_CORRECT' is defined (even if it is +defined with a null value). Please make your program recognize this +variable if appropriate. + + When a feature is used only by users (not by programs or command +files), and it is done poorly in Unix, feel free to replace it +completely with something totally different and better. (For example, +vi is replaced with Emacs.) But it is nice to offer a compatible +feature as well. (There is a free vi clone, so we offer it.) + + Additional useful features not in Berkeley Unix are welcome. +Additional programs with no counterpart in Unix may be useful, but our +first priority is usually to duplicate what Unix already has. + + +File: standards.info, Node: Makefile Conventions, Next: Configuration, Prev: Compatibility, Up: Top + +Makefile Conventions +******************** + + This chapter describes conventions for writing the Makefiles for GNU +programs. + +* Menu: + +* Makefile Basics:: +* Utilities in Makefiles:: +* Standard Targets:: +* Command Variables:: +* Directory Variables:: + + +File: standards.info, Node: Makefile Basics, Next: Utilities in Makefiles, Up: Makefile Conventions + +General Conventions for Makefiles +================================= + + Every Makefile should contain this line: + + SHELL = /bin/sh + +to avoid trouble on systems where the `SHELL' variable might be +inherited from the environment. (This is never a problem with GNU +`make'.) + + Different `make' programs have incompatible suffix lists and +implicit rules, and this sometimes creates confusion or misbehavior. So +it is a good idea to set the suffix list explicitly using only the +suffixes you need in the particular Makefile, like this: + + .SUFFIXES: + .SUFFIXES: .c .o + +The first line clears out the suffix list, the second introduces all +suffixes which may be subject to implicit rules in this Makefile. + + Don't assume that `.' is in the path for command execution. When +you need to run programs that are a part of your package during the +make, please make sure that it uses `./' if the program is built as +part of the make or `$(srcdir)/' if the file is an unchanging part of +the source code. Without one of these prefixes, the current search +path is used. + + The distinction between `./' and `$(srcdir)/' is important when +using the `--srcdir' option to `configure'. A rule of the form: + + foo.1 : foo.man sedscript + sed -e sedscript foo.man > foo.1 + +will fail when the current directory is not the source directory, +because `foo.man' and `sedscript' are not in the current directory. + + When using GNU `make', relying on `VPATH' to find the source file +will work in the case where there is a single dependency file, since +the `make' automatic variable `$<' will represent the source file +wherever it is. (Many versions of `make' set `$<' only in implicit +rules.) A makefile target like + + foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o + +should instead be written as + + foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@ + +in order to allow `VPATH' to work correctly. When the target has +multiple dependencies, using an explicit `$(srcdir)' is the easiest way +to make the rule work well. For example, the target above for `foo.1' +is best written as: + + foo.1 : foo.man sedscript + sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@ + + +File: standards.info, Node: Utilities in Makefiles, Next: Standard Targets, Prev: Makefile Basics, Up: Makefile Conventions + +Utilities in Makefiles +====================== + + Write the Makefile commands (and any shell scripts, such as +`configure') to run in `sh', not in `csh'. Don't use any special +features of `ksh' or `bash'. + + The `configure' script and the Makefile rules for building and +installation should not use any utilities directly except these: + + cat cmp cp echo egrep expr grep + ln mkdir mv pwd rm rmdir sed test touch + + Stick to the generally supported options for these programs. For +example, don't use `mkdir -p', convenient as it may be, because most +systems don't support it. + + The Makefile rules for building and installation can also use +compilers and related programs, but should do so via `make' variables +so that the user can substitute alternatives. Here are some of the +programs we mean: + + ar bison cc flex install ld lex + make makeinfo ranlib texi2dvi yacc + + Use the following `make' variables: + + $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LEX) + $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC) + + When you use `ranlib', you should make sure nothing bad happens if +the system does not have `ranlib'. Arrange to ignore an error from +that command, and print a message before the command to tell the user +that failure of the `ranlib' command does not mean a problem. + + If you use symbolic links, you should implement a fallback for +systems that don't have symbolic links. + + It is ok to use other utilities in Makefile portions (or scripts) +intended only for particular systems where you know those utilities to +exist. + + +File: standards.info, Node: Standard Targets, Next: Command Variables, Prev: Utilities in Makefiles, Up: Makefile Conventions + +Standard Targets for Users +========================== + + All GNU programs should have the following targets in their +Makefiles: + +`all' + Compile the entire program. This should be the default target. + This target need not rebuild any documentation files; Info files + should normally be included in the distribution, and DVI files + should be made only when explicitly asked for. + +`install' + Compile the program and copy the executables, libraries, and so on + to the file names where they should reside for actual use. If + there is a simple test to verify that a program is properly + installed, this target should run that test. + + The commands should create all the directories in which files are + to be installed, if they don't already exist. This includes the + directories specified as the values of the variables `prefix' and + `exec_prefix', as well as all subdirectories that are needed. One + way to do this is by means of an `installdirs' target as described + below. + + Use `-' before any command for installing a man page, so that + `make' will ignore any errors. This is in case there are systems + that don't have the Unix man page documentation system installed. + + The way to install Info files is to copy them into `$(infodir)' + with `$(INSTALL_DATA)' (*note Command Variables::.), and then run + the `install-info' program if it is present. `install-info' is a + script that edits the Info `dir' file to add or update the menu + entry for the given Info file; it will be part of the Texinfo + package. Here is a sample rule to install an Info file: + + $(infodir)/foo.info: foo.info + # There may be a newer info file in . than in srcdir. + -if test -f foo.info; then d=.; \ + else d=$(srcdir); fi; \ + $(INSTALL_DATA) $$d/foo.info $@; \ + # Run install-info only if it exists. + # Use `if' instead of just prepending `-' to the + # line so we notice real errors from install-info. + # We use `$(SHELL) -c' because some shells do not + # fail gracefully when there is an unknown command. + if $(SHELL) -c 'install-info --version' \ + >/dev/null 2>&1; then \ + install-info --infodir=$(infodir) $$d/foo.info; \ + else true; fi + +`uninstall' + Delete all the installed files that the `install' target would + create (but not the noninstalled files such as `make all' would + create). + +`clean' + Delete all files from the current directory that are normally + created by building the program. Don't delete the files that + record the configuration. Also preserve files that could be made + by building, but normally aren't because the distribution comes + with them. + + Delete `.dvi' files here if they are not part of the distribution. + +`distclean' + Delete all files from the current directory that are created by + configuring or building the program. If you have unpacked the + source and built the program without creating any other files, + `make distclean' should leave only the files that were in the + distribution. + +`mostlyclean' + Like `clean', but may refrain from deleting a few files that people + normally don't want to recompile. For example, the `mostlyclean' + target for GCC does not delete `libgcc.a', because recompiling it + is rarely necessary and takes a lot of time. + +`realclean' + Delete everything from the current directory that can be + reconstructed with this Makefile. This typically includes + everything deleted by `distclean', plus more: C source files + produced by Bison, tags tables, Info files, and so on. + + One exception, however: `make realclean' should not delete + `configure' even if `configure' can be remade using a rule in the + Makefile. More generally, `make realclean' should not delete + anything that needs to exist in order to run `configure' and then + begin to build the program. + +`TAGS' + Update a tags table for this program. + +`info' + Generate any Info files needed. The best way to write the rules + is as follows: + + info: foo.info + + foo.info: foo.texi chap1.texi chap2.texi + $(MAKEINFO) $(srcdir)/foo.texi + + You must define the variable `MAKEINFO' in the Makefile. It should + run the `makeinfo' program, which is part of the Texinfo + distribution. + +`dvi' + Generate DVI files for all TeXinfo documentation. For example: + + dvi: foo.dvi + + foo.dvi: foo.texi chap1.texi chap2.texi + $(TEXI2DVI) $(srcdir)/foo.texi + + You must define the variable `TEXI2DVI' in the Makefile. It should + run the program `texi2dvi', which is part of the Texinfo + distribution. Alternatively, write just the dependencies, and + allow GNU Make to provide the command. + +`dist' + Create a distribution tar file for this program. The tar file + should be set up so that the file names in the tar file start with + a subdirectory name which is the name of the package it is a + distribution for. This name can include the version number. + + For example, the distribution tar file of GCC version 1.40 unpacks + into a subdirectory named `gcc-1.40'. + + The easiest way to do this is to create a subdirectory + appropriately named, use `ln' or `cp' to install the proper files + in it, and then `tar' that subdirectory. + + The `dist' target should explicitly depend on all non-source files + that are in the distribution, to make sure they are up to date in + the distribution. *Note Making Releases: (standards)Releases. + +`check' + Perform self-tests (if any). The user must build the program + before running the tests, but need not install the program; you + should write the self-tests so that they work when the program is + built but not installed. + + The following targets are suggested as conventional names, for +programs in which they are useful. + +`installcheck' + Perform installation tests (if any). The user must build and + install the program before running the tests. You should not + assume that `$(bindir)' is in the search path. + +`installdirs' + It's useful to add a target named `installdirs' to create the + directories where files are installed, and their parent + directories. There is a script called `mkinstalldirs' which is + convenient for this; find it in the Texinfo package.You can use a + rule like this: + + # Make sure all installation directories (e.g. $(bindir)) + # actually exist by making them if necessary. + installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs $(bindir) $(datadir) \ + $(libdir) $(infodir) \ + $(mandir) + + +File: standards.info, Node: Command Variables, Next: Directory Variables, Prev: Standard Targets, Up: Makefile Conventions + +Variables for Specifying Commands +================================= + + Makefiles should provide variables for overriding certain commands, +options, and so on. + + In particular, you should run most utility programs via variables. +Thus, if you use Bison, have a variable named `BISON' whose default +value is set with `BISON = bison', and refer to it with `$(BISON)' +whenever you need to use Bison. + + File management utilities such as `ln', `rm', `mv', and so on, need +not be referred to through variables in this way, since users don't +need to replace them with other programs. + + Each program-name variable should come with an options variable that +is used to supply options to the program. Append `FLAGS' to the +program-name variable name to get the options variable name--for +example, `BISONFLAGS'. (The name `CFLAGS' is an exception to this +rule, but we keep it because it is standard.) Use `CPPFLAGS' in any +compilation command that runs the preprocessor, and use `LDFLAGS' in +any compilation command that does linking as well as in any direct use +of `ld'. + + If there are C compiler options that *must* be used for proper +compilation of certain files, do not include them in `CFLAGS'. Users +expect to be able to specify `CFLAGS' freely themselves. Instead, +arrange to pass the necessary options to the C compiler independently +of `CFLAGS', by writing them explicitly in the compilation commands or +by defining an implicit rule, like this: + + CFLAGS = -g + ALL_CFLAGS = -I. $(CFLAGS) + .c.o: + $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< + + Do include the `-g' option in `CFLAGS', because that is not +*required* for proper compilation. You can consider it a default that +is only recommended. If the package is set up so that it is compiled +with GCC by default, then you might as well include `-O' in the default +value of `CFLAGS' as well. + + Put `CFLAGS' last in the compilation command, after other variables +containing compiler options, so the user can use `CFLAGS' to override +the others. + + Every Makefile should define the variable `INSTALL', which is the +basic command for installing a file into the system. + + Every Makefile should also define the variables `INSTALL_PROGRAM' +and `INSTALL_DATA'. (The default for each of these should be +`$(INSTALL)'.) Then it should use those variables as the commands for +actual installation, for executables and nonexecutables respectively. +Use these variables as follows: + + $(INSTALL_PROGRAM) foo $(bindir)/foo + $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a + +Always use a file name, not a directory name, as the second argument of +the installation commands. Use a separate command for each file to be +installed. + + +File: standards.info, Node: Directory Variables, Prev: Command Variables, Up: Makefile Conventions + +Variables for Installation Directories +====================================== + + Installation directories should always be named by variables, so it +is easy to install in a nonstandard place. The standard names for these +variables are as follows. + + These two variables set the root for the installation. All the other +installation directories should be subdirectories of one of these two, +and nothing should be directly installed into these two directories. + +`prefix' + A prefix used in constructing the default values of the variables + listed below. The default value of `prefix' should be `/usr/local' + (at least for now). + +`exec_prefix' + A prefix used in constructing the default values of some of the + variables listed below. The default value of `exec_prefix' should + be `$(prefix)'. + + Generally, `$(exec_prefix)' is used for directories that contain + machine-specific files (such as executables and subroutine + libraries), while `$(prefix)' is used directly for other + directories. + + Executable programs are installed in one of the following +directories. + +`bindir' + The directory for installing executable programs that users can + run. This should normally be `/usr/local/bin', but write it as + `$(exec_prefix)/bin'. + +`sbindir' + The directory for installing executable programs that can be run + from the shell, but are only generally useful to system + administrators. This should normally be `/usr/local/sbin', but + write it as `$(exec_prefix)/sbin'. + +`libexecdir' + The directory for installing executable programs to be run by other + programs rather than by users. This directory should normally be + `/usr/local/libexec', but write it as `$(exec_prefix)/libexec'. + + Data files used by the program during its execution are divided into +categories in two ways. + + * Some files are normally modified by programs; others are never + normally modified (though users may edit some of these). + + * Some files are architecture-independent and can be shared by all + machines at a site; some are architecture-dependent and can be + shared only by machines of the same kind and operating system; + others may never be shared between two machines. + + This makes for six different possibilities. However, we want to +discourage the use of architecture-dependent files, aside from of object +files and libraries. It is much cleaner to make other data files +architecture-independent, and it is generally not hard. + + Therefore, here are the variables makefiles should use to specify +directories: + +`datadir' + The directory for installing read-only architecture independent + data files. This should normally be `/usr/local/share', but write + it as `$(prefix)/share'. As a special exception, see `$(infodir)' + and `$(includedir)' below. + +`sysconfdir' + The directory for installing read-only data files that pertain to a + single machine-that is to say, files for configuring a host. + Mailer and network configuration files, `/etc/passwd', and so + forth belong here. All the files in this directory should be + ordinary ASCII text files. This directory should normally be + `/usr/local/etc', but write it as `$(prefix)/etc'. + + Do not install executables in this directory (they probably belong + in `$(libexecdir)' or `$(sbindir))'. Also do not install files + that are modified in the normal course of their use (programs + whose purpose is to change the configuration of the system + excluded). Those probably belong in `$(localstatedir)'. + +`sharedstatedir' + The directory for installing architecture-independent data files + which the programs modify while they run. This should normally be + `/usr/local/com', but write it as `$(prefix)/com'. + +`localstatedir' + The directory for installing data files which the programs modify + while they run, and that pertain to one specific machine. Users + should never need to modify files in this directory to configure + the package's operation; put such configuration information in + separate files that go in `datadir' or `$(sysconfdir)'. + `$(localstatedir)' should normally be `/usr/local/var', but write + it as `$(prefix)/var'. + +`libdir' + The directory for object files and libraries of object code. Do + not install executables here, they probably belong in + `$(libexecdir)' instead. The value of `libdir' should normally be + `/usr/local/lib', but write it as `$(exec_prefix)/lib'. + +`infodir' + The directory for installing the Info files for this package. By + default, it should be `/usr/local/info', but it should be written + as `$(prefix)/info'. + +`includedir' + The directory for installing header files to be included by user + programs with the C `#include' preprocessor directive. This + should normally be `/usr/local/include', but write it as + `$(prefix)/include'. + + Most compilers other than GCC do not look for header files in + `/usr/local/include'. So installing the header files this way is + only useful with GCC. Sometimes this is not a problem because some + libraries are only really intended to work with GCC. But some + libraries are intended to work with other compilers. They should + install their header files in two places, one specified by + `includedir' and one specified by `oldincludedir'. + +`oldincludedir' + The directory for installing `#include' header files for use with + compilers other than GCC. This should normally be `/usr/include'. + + The Makefile commands should check whether the value of + `oldincludedir' is empty. If it is, they should not try to use + it; they should cancel the second installation of the header files. + + A package should not replace an existing header in this directory + unless the header came from the same package. Thus, if your Foo + package provides a header file `foo.h', then it should install the + header file in the `oldincludedir' directory if either (1) there + is no `foo.h' there or (2) the `foo.h' that exists came from the + Foo package. + + To tell whether `foo.h' came from the Foo package, put a magic + string in the file--part of a comment--and grep for that string. + + Unix-style man pages are installed in one of the following: + +`mandir' + The directory for installing the man pages (if any) for this + package. It should include the suffix for the proper section of + the manual--usually `1' for a utility. It will normally be + `/usr/local/man/man1', but you should write it as + `$(prefix)/man/man1'. + +`man1dir' + The directory for installing section 1 man pages. + +`man2dir' + The directory for installing section 2 man pages. + +`...' + Use these names instead of `mandir' if the package needs to + install man pages in more than one section of the manual. + + *Don't make the primary documentation for any GNU software be a + man page. Write a manual in Texinfo instead. Man pages are just + for the sake of people running GNU software on Unix, which is a + secondary application only.* + +`manext' + The file name extension for the installed man page. This should + contain a period followed by the appropriate digit; it should + normally be `.1'. + +`man1ext' + The file name extension for installed section 1 man pages. + +`man2ext' + The file name extension for installed section 2 man pages. + +`...' + Use these names instead of `manext' if the package needs to + install man pages in more than one section of the manual. + + And finally, you should set the following variable: + +`srcdir' + The directory for the sources being compiled. The value of this + variable is normally inserted by the `configure' shell script. + + For example: + + # Common prefix for installation directories. + # NOTE: This directory must exist when you start the install. + prefix = /usr/local + exec_prefix = $(prefix) + # Where to put the executable for the command `gcc'. + bindir = $(exec_prefix)/bin + # Where to put the directories used by the compiler. + libexecdir = $(exec_prefix)/libexec + # Where to put the Info files. + infodir = $(prefix)/info + + If your program installs a large number of files into one of the +standard user-specified directories, it might be useful to group them +into a subdirectory particular to that program. If you do this, you +should write the `install' rule to create these subdirectories. + + Do not expect the user to include the subdirectory name in the value +of any of the variables listed above. The idea of having a uniform set +of variable names for installation directories is to enable the user to +specify the exact same values for several different GNU packages. In +order for this to be useful, all the packages must be designed so that +they will work sensibly when the user does so. + + +File: standards.info, Node: Configuration, Next: Source Language, Prev: Makefile Conventions, Up: Top + +How Configuration Should Work +***************************** + + Each GNU distribution should come with a shell script named +`configure'. This script is given arguments which describe the kind of +machine and system you want to compile the program for. + + The `configure' script must record the configuration options so that +they affect compilation. + + One way to do this is to make a link from a standard name such as +`config.h' to the proper configuration file for the chosen system. If +you use this technique, the distribution should *not* contain a file +named `config.h'. This is so that people won't be able to build the +program without configuring it first. + + Another thing that `configure' can do is to edit the Makefile. If +you do this, the distribution should *not* contain a file named +`Makefile'. Instead, include a file `Makefile.in' which contains the +input used for editing. Once again, this is so that people won't be +able to build the program without configuring it first. + + If `configure' does write the `Makefile', then `Makefile' should +have a target named `Makefile' which causes `configure' to be rerun, +setting up the same configuration that was set up last time. The files +that `configure' reads should be listed as dependencies of `Makefile'. + + All the files which are output from the `configure' script should +have comments at the beginning explaining that they were generated +automatically using `configure'. This is so that users won't think of +trying to edit them by hand. + + The `configure' script should write a file named `config.status' +which describes which configuration options were specified when the +program was last configured. This file should be a shell script which, +if run, will recreate the same configuration. + + The `configure' script should accept an option of the form +`--srcdir=DIRNAME' to specify the directory where sources are found (if +it is not the current directory). This makes it possible to build the +program in a separate directory, so that the actual source directory is +not modified. + + If the user does not specify `--srcdir', then `configure' should +check both `.' and `..' to see if it can find the sources. If it finds +the sources in one of these places, it should use them from there. +Otherwise, it should report that it cannot find the sources, and should +exit with nonzero status. + + Usually the easy way to support `--srcdir' is by editing a +definition of `VPATH' into the Makefile. Some rules may need to refer +explicitly to the specified source directory. To make this possible, +`configure' can add to the Makefile a variable named `srcdir' whose +value is precisely the specified directory. + + The `configure' script should also take an argument which specifies +the type of system to build the program for. This argument should look +like this: + + CPU-COMPANY-SYSTEM + + For example, a Sun 3 might be `m68k-sun-sunos4.1'. + + The `configure' script needs to be able to decode all plausible +alternatives for how to describe a machine. Thus, `sun3-sunos4.1' +would be a valid alias. So would `sun3-bsd4.2', since SunOS is +basically BSD and no other BSD system is used on a Sun. For many +programs, `vax-dec-ultrix' would be an alias for `vax-dec-bsd', simply +because the differences between Ultrix and BSD are rarely noticeable, +but a few programs might need to distinguish them. + + There is a shell script called `config.sub' that you can use as a +subroutine to validate system types and canonicalize aliases. + + Other options are permitted to specify in more detail the software +or hardware present on the machine, and include or exclude optional +parts of the package: + +`--enable-FEATURE[=PARAMETER]' + Configure the package to build and install an optional user-level + facility called FEATURE. This allows users to choose which + optional features to include. Giving an optional PARAMETER of + `no' should omit FEATURE, if it is built by default. + + No `--enable' option should *ever* cause one feature to replace + another. No `--enable' option should ever substitute one useful + behavior for another useful behavior. The only proper use for + `--enable' is for questions of whether to build part of the program + or exclude it. + +`--with-PACKAGE' + The package PACKAGE will be installed, so configure this package + to work with PACKAGE. + + Possible values of PACKAGE include `x', `x-toolkit', `gnu-as' (or + `gas'), `gnu-ld', `gnu-libc', and `gdb'. + + Do not use a `--with' option to specify the file name to use to + find certain files. That is outside the scope of what `--with' + options are for. + +`--nfp' + The target machine has no floating point processor. + +`--gas' + The target machine assembler is GAS, the GNU assembler. This is + obsolete; users should use `--with-gnu-as' instead. + +`--x' + The target machine has the X Window System installed. This is + obsolete; users should use `--with-x' instead. + + All `configure' scripts should accept all of these "detail" options, +whether or not they make any difference to the particular package at +hand. In particular, they should accept any option that starts with +`--with-' or `--enable-'. This is so users will be able to configure +an entire GNU source tree at once with a single set of options. + + You will note that the categories `--with-' and `--enable-' are +narrow: they *do not* provide a place for any sort of option you might +think of. That is deliberate. We want to limit the possible +configuration options in GNU software. We do not want GNU programs to +have idiosyncratic configuration options. + + Packages that perform part of compilation may support +cross-compilation. In such a case, the host and target machines for +the program may be different. The `configure' script should normally +treat the specified type of system as both the host and the target, +thus producing a program which works for the same type of machine that +it runs on. + + The way to build a cross-compiler, cross-assembler, or what have +you, is to specify the option `--host=HOSTTYPE' when running +`configure'. This specifies the host system without changing the type +of target system. The syntax for HOSTTYPE is the same as described +above. + + Bootstrapping a cross-compiler requires compiling it on a machine +other than the host it will run on. Compilation packages accept a +configuration option `--build=HOSTTYPE' for specifying the +configuration on which you will compile them, in case that is different +from the host. + + Programs for which cross-operation is not meaningful need not accept +the `--host' option, because configuring an entire operating system for +cross-operation is not a meaningful thing. + + Some programs have ways of configuring themselves automatically. If +your program is set up to do this, your `configure' script can simply +ignore most of its arguments. + + +File: standards.info, Node: Source Language, Next: Formatting, Prev: Configuration, Up: Top + +Using Languages Other Than C +**************************** + + Using a language other than C is like using a non-standard feature: +it will cause trouble for users. Even if GCC supports the other +language, users may find it inconvenient to have to install the +compiler for that other language in order to build your program. So +please write in C. + + There are three exceptions for this rule: + + * It is okay to use a special language if the same program contains + an interpreter for that language. + + Thus, it is not a problem that GNU Emacs contains code written in + Emacs Lisp, because it comes with a Lisp interpreter. + + * It is okay to use another language in a tool specifically intended + for use with that language. + + This is okay because the only people who want to build the tool + will be those who have installed the other language anyway. + + * If an application is not of extremely widespread interest, then + perhaps it's not important if the application is inconvenient to + install. + + +File: standards.info, Node: Formatting, Next: Comments, Prev: Source Language, Up: Top + +Formatting Your Source Code +*************************** + + It is important to put the open-brace that starts the body of a C +function in column zero, and avoid putting any other open-brace or +open-parenthesis or open-bracket in column zero. Several tools look +for open-braces in column zero to find the beginnings of C functions. +These tools will not work on code not formatted that way. + + It is also important for function definitions to start the name of +the function in column zero. This helps people to search for function +definitions, and may also help certain tools recognize them. Thus, the +proper format is this: + + static char * + concat (s1, s2) /* Name starts in column zero here */ + char *s1, *s2; + { /* Open brace in column zero here */ + ... + } + +or, if you want to use ANSI C, format the definition like this: + + static char * + concat (char *s1, char *s2) + { + ... + } + + In ANSI C, if the arguments don't fit nicely on one line, split it +like this: + + int + lots_of_args (int an_integer, long a_long, short a_short, + double a_double, float a_float) + ... + + For the body of the function, we prefer code formatted like this: + + if (x < foo (y, z)) + haha = bar[4] + 5; + else + { + while (z) + { + haha += foo (z, z); + z--; + } + return ++x + bar (); + } + + We find it easier to read a program when it has spaces before the +open-parentheses and after the commas. Especially after the commas. + + When you split an expression into multiple lines, split it before an +operator, not after one. Here is the right way: + + if (foo_this_is_long && bar > win (x, y, z) + && remaining_condition) + + Try to avoid having two operators of different precedence at the same +level of indentation. For example, don't write this: + + mode = (inmode[j] == VOIDmode + || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j]) + ? outmode[j] : inmode[j]); + + Instead, use extra parentheses so that the indentation shows the +nesting: + + mode = ((inmode[j] == VOIDmode + || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j]))) + ? outmode[j] : inmode[j]); + + Insert extra parentheses so that Emacs will indent the code properly. +For example, the following indentation looks nice if you do it by hand, +but Emacs would mess it up: + + v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000 + + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000; + + But adding a set of parentheses solves the problem: + + v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000 + + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000); + + Format do-while statements like this: + + do + { + a = foo (a); + } + while (a > 0); + + Please use formfeed characters (control-L) to divide the program into +pages at logical places (but not within a function). It does not matter +just how long the pages are, since they do not have to fit on a printed +page. The formfeeds should appear alone on lines by themselves. + + +File: standards.info, Node: Comments, Next: Syntactic Conventions, Prev: Formatting, Up: Top + +Commenting Your Work +******************** + + Every program should start with a comment saying briefly what it is +for. Example: `fmt - filter for simple filling of text'. + + Please put a comment on each function saying what the function does, +what sorts of arguments it gets, and what the possible values of +arguments mean and are used for. It is not necessary to duplicate in +words the meaning of the C argument declarations, if a C type is being +used in its customary fashion. If there is anything nonstandard about +its use (such as an argument of type `char *' which is really the +address of the second character of a string, not the first), or any +possible values that would not work the way one would expect (such as, +that strings containing newlines are not guaranteed to work), be sure +to say so. + + Also explain the significance of the return value, if there is one. + + Please put two spaces after the end of a sentence in your comments, +so that the Emacs sentence commands will work. Also, please write +complete sentences and capitalize the first word. If a lower-case +identifer comes at the beginning of a sentence, don't capitalize it! +Changing the spelling makes it a different identifier. If you don't +like starting a sentence with a lower case letter, write the sentence +differently (e.g., "The identifier lower-case is ..."). + + The comment on a function is much clearer if you use the argument +names to speak about the argument values. The variable name itself +should be lower case, but write it in upper case when you are speaking +about the value rather than the variable itself. Thus, "the inode +number NODE_NUM" rather than "an inode". + + There is usually no purpose in restating the name of the function in +the comment before it, because the reader can see that for himself. +There might be an exception when the comment is so long that the +function itself would be off the bottom of the screen. + + There should be a comment on each static variable as well, like this: + + /* Nonzero means truncate lines in the display; + zero means continue them. */ + int truncate_lines; + + Every `#endif' should have a comment, except in the case of short +conditionals (just a few lines) that are not nested. The comment should +state the condition of the conditional that is ending, *including its +sense*. `#else' should have a comment describing the condition *and +sense* of the code that follows. For example: + + #ifdef foo + ... + #else /* not foo */ + ... + #endif /* not foo */ + +but, by contrast, write the comments this way for a `#ifndef': + + #ifndef foo + ... + #else /* foo */ + ... + #endif /* foo */ + diff --git a/util/autoconf/standards.info-2 b/util/autoconf/standards.info-2 new file mode 100644 index 0000000..25570a0 --- /dev/null +++ b/util/autoconf/standards.info-2 @@ -0,0 +1,1691 @@ +This is Info file ../standards.info, produced by Makeinfo-1.55 from the +input file ../standards.texi. + +START-INFO-DIR-ENTRY +* Standards: (standards). GNU coding standards. +END-INFO-DIR-ENTRY + + GNU Coding Standards Copyright (C) 1992, 1993, 1994 Free Software +Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + + Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be stated in a +translation approved by the Free Software Foundation. + + +File: standards.info, Node: Syntactic Conventions, Next: Names, Prev: Comments, Up: Top + +Clean Use of C Constructs +************************* + + Please explicitly declare all arguments to functions. Don't omit +them just because they are `int's. + + Declarations of external functions and functions to appear later in +the source file should all go in one place near the beginning of the +file (somewhere before the first function definition in the file), or +else should go in a header file. Don't put `extern' declarations inside +functions. + + It used to be common practice to use the same local variables (with +names like `tem') over and over for different values within one +function. Instead of doing this, it is better declare a separate local +variable for each distinct purpose, and give it a name which is +meaningful. This not only makes programs easier to understand, it also +facilitates optimization by good compilers. You can also move the +declaration of each local variable into the smallest scope that includes +all its uses. This makes the program even cleaner. + + Don't use local variables or parameters that shadow global +identifiers. + + Don't declare multiple variables in one declaration that spans lines. +Start a new declaration on each line, instead. For example, instead of +this: + + int foo, + bar; + +write either this: + + int foo, bar; + +or this: + + int foo; + int bar; + +(If they are global variables, each should have a comment preceding it +anyway.) + + When you have an `if'-`else' statement nested in another `if' +statement, always put braces around the `if'-`else'. Thus, never write +like this: + + if (foo) + if (bar) + win (); + else + lose (); + +always like this: + + if (foo) + { + if (bar) + win (); + else + lose (); + } + + If you have an `if' statement nested inside of an `else' statement, +either write `else if' on one line, like this, + + if (foo) + ... + else if (bar) + ... + +with its `then'-part indented like the preceding `then'-part, or write +the nested `if' within braces like this: + + if (foo) + ... + else + { + if (bar) + ... + } + + Don't declare both a structure tag and variables or typedefs in the +same declaration. Instead, declare the structure tag separately and +then use it to declare the variables or typedefs. + + Try to avoid assignments inside `if'-conditions. For example, don't +write this: + + if ((foo = (char *) malloc (sizeof *foo)) == 0) + fatal ("virtual memory exhausted"); + +instead, write this: + + foo = (char *) malloc (sizeof *foo); + if (foo == 0) + fatal ("virtual memory exhausted"); + + Don't make the program ugly to placate `lint'. Please don't insert +any casts to `void'. Zero without a cast is perfectly fine as a null +pointer constant. + + +File: standards.info, Node: Names, Next: Using Extensions, Prev: Syntactic Conventions, Up: Top + +Naming Variables and Functions +****************************** + + Please use underscores to separate words in a name, so that the Emacs +word commands can be useful within them. Stick to lower case; reserve +upper case for macros and `enum' constants, and for name-prefixes that +follow a uniform convention. + + For example, you should use names like `ignore_space_change_flag'; +don't use names like `iCantReadThis'. + + Variables that indicate whether command-line options have been +specified should be named after the meaning of the option, not after +the option-letter. A comment should state both the exact meaning of +the option and its letter. For example, + + /* Ignore changes in horizontal whitespace (-b). */ + int ignore_space_change_flag; + + When you want to define names with constant integer values, use +`enum' rather than `#define'. GDB knows about enumeration constants. + + Use file names of 14 characters or less, to avoid creating gratuitous +problems on System V. You can use the program `doschk' to test for +this. `doschk' also tests for potential name conflicts if the files +were loaded onto an MS-DOS file system--something you may or may not +care about. + + +File: standards.info, Node: Using Extensions, Next: System Functions, Prev: Names, Up: Top + +Using Non-standard Features +*************************** + + Many GNU facilities that already exist support a number of convenient +extensions over the comparable Unix facilities. Whether to use these +extensions in implementing your program is a difficult question. + + On the one hand, using the extensions can make a cleaner program. +On the other hand, people will not be able to build the program unless +the other GNU tools are available. This might cause the program to +work on fewer kinds of machines. + + With some extensions, it might be easy to provide both alternatives. +For example, you can define functions with a "keyword" `INLINE' and +define that as a macro to expand into either `inline' or nothing, +depending on the compiler. + + In general, perhaps it is best not to use the extensions if you can +straightforwardly do without them, but to use the extensions if they +are a big improvement. + + An exception to this rule are the large, established programs (such +as Emacs) which run on a great variety of systems. Such programs would +be broken by use of GNU extensions. + + Another exception is for programs that are used as part of +compilation: anything that must be compiled with other compilers in +order to bootstrap the GNU compilation facilities. If these require +the GNU compiler, then no one can compile them without having them +installed already. That would be no good. + + Since most computer systems do not yet implement ANSI C, using the +ANSI C features is effectively using a GNU extension, so the same +considerations apply. (Except for ANSI features that we discourage, +such as trigraphs--don't ever use them.) + + +File: standards.info, Node: System Functions, Next: Semantics, Prev: Using Extensions, Up: Top + +Calling System Functions +************************ + + C implementations differ substantially. ANSI C reduces but does not +eliminate the incompatibilities; meanwhile, many users wish to compile +GNU software with pre-ANSI compilers. This chapter gives +recommendations for how to use the more or less standard C library +functions to avoid unnecessary loss of portability. + + * Don't use the value of `sprintf'. It returns the number of + characters written on some systems, but not on all systems. + + * Don't declare system functions explicitly. + + Almost any declaration for a system function is wrong on some + system. To minimize conflicts, leave it to the system header + files to declare system functions. If the headers don't declare a + function, let it remain undeclared. + + While it may seem unclean to use a function without declaring it, + in practice this works fine for most system library functions on + the systems where this really happens. The problem is only + theoretical. By contrast, actual declarations have frequently + caused actual conflicts. + + * If you must declare a system function, don't specify the argument + types. Use an old-style declaration, not an ANSI prototype. The + more you specify about the function, the more likely a conflict. + + * In particular, don't unconditionally declare `malloc' or `realloc'. + + Most GNU programs use those functions just once, in functions + conventionally named `xmalloc' and `xrealloc'. These functions + call `malloc' and `realloc', respectively, and check the results. + + Because `xmalloc' and `xrealloc' are defined in your program, you + can declare them in other files without any risk of type conflict. + + On most systems, `int' is the same length as a pointer; thus, the + calls to `malloc' and `realloc' work fine. For the few + exceptional systems (mostly 64-bit machines), you can use + *conditionalized* declarations of `malloc' and `realloc'--or put + these declarations in configuration files specific to those + systems. + + * The string functions require special treatment. Some Unix systems + have a header file `string.h'; other have `strings.h'. Neither + file name is portable. There are two things you can do: use + Autoconf to figure out which file to include, or don't include + either file. + + * If you don't include either strings file, you can't get + declarations for the string functions from the header file in the + usual way. + + That causes less of a problem than you might think. The newer ANSI + string functions are off-limits anyway because many systems still + don't support them. The string functions you can use are these: + + strcpy strncpy strcat strncat + strlen strcmp strncmp + strchr strrchr + + The copy and concatenate functions work fine without a declaration + as long as you don't use their values. Using their values without + a declaration fails on systems where the width of a pointer + differs from the width of `int', and perhaps in other cases. It + is trivial to avoid using their values, so do that. + + The compare functions and `strlen' work fine without a declaration + on most systems, possibly all the ones that GNU software runs on. + You may find it necessary to declare them *conditionally* on a few + systems. + + The search functions must be declared to return `char *'. Luckily, + there is no variation in the data type they return. But there is + variation in their names. Some systems give these functions the + names `index' and `rindex'; other systems use the names `strchr' + and `strrchr'. Some systems support both pairs of names, but + neither pair works on all systems. + + You should pick a single pair of names and use it throughout your + program. (Nowadays, it is better to choose `strchr' and + `strrchr'.) Declare both of those names as functions returning + `char *'. On systems which don't support those names, define them + as macros in terms of the other pair. For example, here is what + to put at the beginning of your file (or in a header) if you want + to use the names `strchr' and `strrchr' throughout: + + #ifndef HAVE_STRCHR + #define strchr index + #endif + #ifndef HAVE_STRRCHR + #define strrchr rindex + #endif + + char *strchr (); + char *strrchr (); + + Here we assume that `HAVE_STRCHR' and `HAVE_STRRCHR' are macros +defined in systems where the corresponding functions exist. One way to +get them properly defined is to use Autoconf. + + +File: standards.info, Node: Semantics, Next: Errors, Prev: System Functions, Up: Top + +Program Behavior for All Programs +********************************* + + Avoid arbitrary limits on the length or number of *any* data +structure, including filenames, lines, files, and symbols, by allocating +all data structures dynamically. In most Unix utilities, "long lines +are silently truncated". This is not acceptable in a GNU utility. + + Utilities reading files should not drop NUL characters, or any other +nonprinting characters *including those with codes above 0177*. The +only sensible exceptions would be utilities specifically intended for +interface to certain types of printers that can't handle those +characters. + + Check every system call for an error return, unless you know you +wish to ignore errors. Include the system error text (from `perror' or +equivalent) in *every* error message resulting from a failing system +call, as well as the name of the file if any and the name of the +utility. Just "cannot open foo.c" or "stat failed" is not sufficient. + + Check every call to `malloc' or `realloc' to see if it returned +zero. Check `realloc' even if you are making the block smaller; in a +system that rounds block sizes to a power of 2, `realloc' may get a +different block if you ask for less space. + + In Unix, `realloc' can destroy the storage block if it returns zero. +GNU `realloc' does not have this bug: if it fails, the original block +is unchanged. Feel free to assume the bug is fixed. If you wish to +run your program on Unix, and wish to avoid lossage in this case, you +can use the GNU `malloc'. + + You must expect `free' to alter the contents of the block that was +freed. Anything you want to fetch from the block, you must fetch before +calling `free'. + + If `malloc' fails in a noninteractive program, make that a fatal +error. In an interactive program (one that reads commands from the +user), it is better to abort the command and return to the command +reader loop. This allows the user to kill other processes to free up +virtual memory, and then try the command again. + + Use `getopt_long' to decode arguments, unless the argument syntax +makes this unreasonable. + + When static storage is to be written in during program execution, use +explicit C code to initialize it. Reserve C initialized declarations +for data that will not be changed. + + Try to avoid low-level interfaces to obscure Unix data structures +(such as file directories, utmp, or the layout of kernel memory), since +these are less likely to work compatibly. If you need to find all the +files in a directory, use `readdir' or some other high-level interface. +These will be supported compatibly by GNU. + + By default, the GNU system will provide the signal handling +functions of BSD and of POSIX. So GNU software should be written to use +these. + + In error checks that detect "impossible" conditions, just abort. +There is usually no point in printing any message. These checks +indicate the existence of bugs. Whoever wants to fix the bugs will have +to read the source code and run a debugger. So explain the problem with +comments in the source. The relevant data will be in variables, which +are easy to examine with the debugger, so there is no point moving them +elsewhere. + + +File: standards.info, Node: Errors, Next: Libraries, Prev: Semantics, Up: Top + +Formatting Error Messages +************************* + + Error messages from compilers should look like this: + + SOURCE-FILE-NAME:LINENO: MESSAGE + + Error messages from other noninteractive programs should look like +this: + + PROGRAM:SOURCE-FILE-NAME:LINENO: MESSAGE + +when there is an appropriate source file, or like this: + + PROGRAM: MESSAGE + +when there is no relevant source file. + + In an interactive program (one that is reading commands from a +terminal), it is better not to include the program name in an error +message. The place to indicate which program is running is in the +prompt or with the screen layout. (When the same program runs with +input from a source other than a terminal, it is not interactive and +would do best to print error messages using the noninteractive style.) + + The string MESSAGE should not begin with a capital letter when it +follows a program name and/or filename. Also, it should not end with a +period. + + Error messages from interactive programs, and other messages such as +usage messages, should start with a capital letter. But they should not +end with a period. + + +File: standards.info, Node: Libraries, Next: Portability, Prev: Errors, Up: Top + +Library Behavior +**************** + + Try to make library functions reentrant. If they need to do dynamic +storage allocation, at least try to avoid any nonreentrancy aside from +that of `malloc' itself. + + Here are certain name conventions for libraries, to avoid name +conflicts. + + Choose a name prefix for the library, more than two characters long. +All external function and variable names should start with this prefix. +In addition, there should only be one of these in any given library +member. This usually means putting each one in a separate source file. + + An exception can be made when two external symbols are always used +together, so that no reasonable program could use one without the +other; then they can both go in the same file. + + External symbols that are not documented entry points for the user +should have names beginning with `_'. They should also contain the +chosen name prefix for the library, to prevent collisions with other +libraries. These can go in the same files with user entry points if +you like. + + Static functions and variables can be used as you like and need not +fit any naming convention. + + +File: standards.info, Node: Portability, Next: User Interfaces, Prev: Libraries, Up: Top + +Portability As It Applies to GNU +******************************** + + Much of what is called "portability" in the Unix world refers to +porting to different Unix versions. This is a secondary consideration +for GNU software, because its primary purpose is to run on top of one +and only one kernel, the GNU kernel, compiled with one and only one C +compiler, the GNU C compiler. The amount and kinds of variation among +GNU systems on different cpu's will be like the variation among Berkeley +4.3 systems on different cpu's. + + All users today run GNU software on non-GNU systems. So supporting a +variety of non-GNU systems is desirable; simply not paramount. The +easiest way to achieve portability to a reasonable range of systems is +to use Autoconf. It's unlikely that your program needs to know more +information about the host machine than Autoconf can provide, simply +because most of the programs that need such knowledge have already been +written. + + It is difficult to be sure exactly what facilities the GNU kernel +will provide, since it isn't finished yet. Therefore, assume you can +use anything in 4.3; just avoid using the format of semi-internal data +bases (e.g., directories) when there is a higher-level alternative +(`readdir'). + + You can freely assume any reasonably standard facilities in the C +language, libraries or kernel, because we will find it necessary to +support these facilities in the full GNU system, whether or not we have +already done so. The fact that there may exist kernels or C compilers +that lack these facilities is irrelevant as long as the GNU kernel and +C compiler support them. + + It remains necessary to worry about differences among cpu types, such +as the difference in byte ordering and alignment restrictions. It's +unlikely that 16-bit machines will ever be supported by GNU, so there +is no point in spending any time to consider the possibility that an +int will be less than 32 bits. + + You can assume that all pointers have the same format, regardless of +the type they point to, and that this is really an integer. There are +some weird machines where this isn't true, but they aren't important; +don't waste time catering to them. Besides, eventually we will put +function prototypes into all GNU programs, and that will probably make +your program work even on weird machines. + + Since some important machines (including the 68000) are big-endian, +it is important not to assume that the address of an `int' object is +also the address of its least-significant byte. Thus, don't make the +following mistake: + + int c; + ... + while ((c = getchar()) != EOF) + write(file_descriptor, &c, 1); + + You can assume that it is reasonable to use a meg of memory. Don't +strain to reduce memory usage unless it can get to that level. If your +program creates complicated data structures, just make them in core and +give a fatal error if malloc returns zero. + + If a program works by lines and could be applied to arbitrary +user-supplied input files, it should keep only a line in memory, because +this is not very hard and users will want to be able to operate on input +files that are bigger than will fit in core all at once. + + +File: standards.info, Node: User Interfaces, Next: Documentation, Prev: Portability, Up: Top + +Standards for Command Line Interfaces +************************************* + + Please don't make the behavior of a utility depend on the name used +to invoke it. It is useful sometimes to make a link to a utility with +a different name, and that should not change what it does. + + Instead, use a run time option or a compilation switch or both to +select among the alternate behaviors. + + Likewise, please don't make the behavior of the program depend on the +type of output device it is used with. Device independence is an +important principle of the system's design; do not compromise it merely +to save someone from typing an option now and then. + + If you think one behavior is most useful when the output is to a +terminal, and another is most useful when the output is a file or a +pipe, then it is usually best to make the default behavior the one that +is useful with output to a terminal, and have an option for the other +behavior. + + Compatibility requires certain programs to depend on the type of +output device. It would be disastrous if `ls' or `sh' did not do so in +the way all users expect. In some of these cases, we supplement the +program with a preferred alternate version that does not depend on the +output device type. For example, we provide a `dir' program much like +`ls' except that its default output format is always multi-column +format. + + It is a good idea to follow the POSIX guidelines for the +command-line options of a program. The easiest way to do this is to use +`getopt' to parse them. Note that the GNU version of `getopt' will +normally permit options anywhere among the arguments unless the special +argument `--' is used. This is not what POSIX specifies; it is a GNU +extension. + + Please define long-named options that are equivalent to the +single-letter Unix-style options. We hope to make GNU more user +friendly this way. This is easy to do with the GNU function +`getopt_long'. + + One of the advantages of long-named options is that they can be +consistent from program to program. For example, users should be able +to expect the "verbose" option of any GNU program which has one, to be +spelled precisely `--verbose'. To achieve this uniformity, look at the +table of common long-option names when you choose the option names for +your program. The table appears below. + + If you use names not already in the table, please send +`gnu@prep.ai.mit.edu' a list of them, with their meanings, so we can +update the table. + + It is usually a good idea for file names given as ordinary arguments +to be input files only; any output files would be specified using +options (preferably `-o'). Even if you allow an output file name as an +ordinary argument for compatibility, try to provide a suitable option +as well. This will lead to more consistency among GNU utilities, so +that there are fewer idiosyncracies for users to remember. + + Programs should support an option `--version' which prints the +program's version number on standard output and exits successfully, and +an option `--help' which prints option usage information on standard +output and exits successfully. These options should inhibit the normal +function of the command; they should do nothing except print the +requested information. + +`auto-check' + `-a' in `recode'. + +`auto-reference' + `-A' in `ptx'. + +`after-date' + `-N' in `tar'. + +`all' + `-a' in `du', `ls', `nm', `stty', `uname', and `unexpand'. + +`all-text' + `-a' in `diff'. + +`almost-all' + `-A' in `ls'. + +`append' + `-a' in `etags', `tee', `time'; `-r' in `tar'. + +`archive' + `-a' in `cp'. + +`archive-name' + `-n' in `shar'. + +`arglength' + `-l' in `m4'. + +`ascii' + `-a' in `diff'. + +`assume-new' + `-W' in Make. + +`assume-old' + `-o' in Make. + +`backward-search' + `-B' in etags. + +`basename' + `-f' in `shar'. + +`batch' + Used in GDB. + +`baud' + Used in GDB. + +`before' + `-b' in `tac'. + +`binary' + `-b' in `cpio' and `diff'. + +`bits-per-code' + `-b' in `shar'. + +`block-size' + Used in `cpio' and `tar'. + +`blocks' + `-b' in `head' and `tail'. + +`break-file' + `-b' in `ptx'. + +`brief' + Used in various programs to make output shorter. + +`bytes' + `-c' in `head', `split', and `tail'. + +`c++' + `-C' in `etags'. + +`catenate' + `-A' in `tar'. + +`cd' + Used in various programs to specify the directory to use. + +`changes' + `-c' in `chgrp' and `chown'. + +`classify' + `-F' in `ls'. + +`colons' + `-c' in `recode'. + +`command' + `-c' in `su'; `-x' in GDB. + +`compare' + `-d' in `tar'. + +`compress' + `-Z' in `tar' and `shar'. + +`concatenate' + `-A' in `tar'. + +`confirmation' + `-w' in `tar'. + +`context' + Used in `diff'. + +`copyright' + `-C' in `ptx' and `recode'. + +`core' + Used in GDB. + +`count' + `-q' in `who'. + +`count-links' + `-l' in `du'. + +`create' + Used in `tar' and `cpio'. + +`cut-mark' + `-c' in `shar'. + +`cxref' + `-x' in `etags'. + +`date' + `-d' in `touch'. + +`debug' + `-d' in Make and `m4'; `-t' in Bison. + +`define' + `-D' in `m4'. + +`defines' + `-d' in Bison and `etags'. + +`delete' + `-D' in `tar'. + +`dereference' + `-L' in `chgrp', `chown', `cpio', `du', `ls', and `tar'. + +`dereference-args' + `-D' in `du'. + +`diacritics' + `-d' in `recode'. + +`dictionary-order' + `-d' in `look'. + +`diff' + `-d' in `tar'. + +`digits' + `-n' in `csplit'. + +`directory' + Specify the directory to use, in various programs. In `ls', it + means to show directories themselves rather than their contents. + In `rm' and `ln', it means to not treat links to directories + specially. + +`discard-all' + `-x' in `strip'. + +`discard-locals' + `-X' in `strip'. + +`diversions' + `-N' in `m4'. + +`dry-run' + `-n' in Make. + +`ed' + `-e' in `diff'. + +`elide-empty-files' + `-z' in `csplit'. + +`entire-new-file' + `-N' in `diff'. + +`environment-overrides' + `-e' in Make. + +`eof' + `-e' in `xargs'. + +`epoch' + Used in GDB. + +`error-limit' + Used in Makeinfo. + +`error-output' + `-o' in `m4'. + +`escape' + `-b' in `ls'. + +`exclude-from' + `-X' in `tar'. + +`exec' + Used in GDB. + +`exit' + `-x' in `xargs'. + +`exit-0' + `-e' in `unshar'. + +`expand-tabs' + `-t' in `diff'. + +`expression' + `-e' in `sed'. + +`extern-only' + `-g' in `nm'. + +`extract' + `-i' in `cpio'; `-x' in `tar'. + +`faces' + `-f' in `finger'. + +`fast' + `-f' in `su'. + +`fatal-warnings' + `-E' in `m4'. + +`file' + `-f' in `info', Make, `mt', and `tar'; `-n' in `sed'; `-r' in + `touch'. + +`file-prefix' + `-b' in Bison. + +`file-type' + `-F' in `ls'. + +`files-from' + `-T' in `tar'. + +`fill-column' + Used in Makeinfo. + +`flag-truncation' + `-F' in `ptx'. + +`fixed-output-files' + `-y' in Bison. + +`follow' + `-f' in `tail'. + +`footnote-style' + Used in Makeinfo. + +`force' + `-f' in `cp', `ln', `mv', and `rm'. + +`force-prefix' + `-F' in `shar'. + +`format' + Used in `ls', `time', and `ptx'. + +`forward-search' + `-F' in `etags'. + +`fullname' + Used in GDB. + +`gap-size' + `-g' in `ptx'. + +`get' + `-x' in `tar'. + +`graphic' + `-i' in `ul'. + +`graphics' + `-g' in `recode'. + +`group' + `-g' in `install'. + +`gzip' + `-z' in `tar' and `shar'. + +`hashsize' + `-H' in `m4'. + +`header' + `-h' in `objdump' and `recode' + +`heading' + `-H' in `who'. + +`help' + Used to ask for brief usage information. + +`here-delimiter' + `-d' in `shar'. + +`hide-control-chars' + `-q' in `ls'. + +`idle' + `-u' in `who'. + +`ifdef' + `-D' in `diff'. + +`ignore' + `-I' in `ls'; `-x' in `recode'. + +`ignore-all-space' + `-w' in `diff'. + +`ignore-backups' + `-B' in `ls'. + +`ignore-blank-lines' + `-B' in `diff'. + +`ignore-case' + `-f' in `look' and `ptx'; `-i' in `diff'. + +`ignore-errors' + `-i' in Make. + +`ignore-file' + `-i' in `ptx'. + +`ignore-indentation' + `-S' in `etags'. + +`ignore-init-file' + `-f' in Oleo. + +`ignore-interrupts' + `-i' in `tee'. + +`ignore-matching-lines' + `-I' in `diff'. + +`ignore-space-change' + `-b' in `diff'. + +`ignore-zeros' + `-i' in `tar'. + +`include' + `-i' in `etags'; `-I' in `m4'. + +`include-dir' + `-I' in Make. + +`incremental' + `-G' in `tar'. + +`info' + `-i', `-l', and `-m' in Finger. + +`initial' + `-i' in `expand'. + +`initial-tab' + `-T' in `diff'. + +`inode' + `-i' in `ls'. + +`interactive' + `-i' in `cp', `ln', `mv', `rm'; `-e' in `m4'; `-p' in `xargs'; + `-w' in `tar'. + +`intermix-type' + `-p' in `shar'. + +`jobs' + `-j' in Make. + +`just-print' + `-n' in Make. + +`keep-going' + `-k' in Make. + +`keep-files' + `-k' in `csplit'. + +`kilobytes' + `-k' in `du' and `ls'. + +`level-for-gzip' + `-g' in `shar'. + +`line-bytes' + `-C' in `split'. + +`lines' + Used in `split', `head', and `tail'. + +`link' + `-l' in `cpio'. + +`list' + `-t' in `cpio'; `-l' in `recode'. + +`list' + `-t' in `tar'. + +`literal' + `-N' in `ls'. + +`load-average' + `-l' in Make. + +`login' + Used in `su'. + +`machine' + No listing of which programs already use this; someone should + check to see if any actually do and tell `gnu@prep.ai.mit.edu'. + +`macro-name' + `-M' in `ptx'. + +`mail' + `-m' in `hello' and `uname'. + +`make-directories' + `-d' in `cpio'. + +`makefile' + `-f' in Make. + +`mapped' + Used in GDB. + +`max-args' + `-n' in `xargs'. + +`max-chars' + `-n' in `xargs'. + +`max-lines' + `-l' in `xargs'. + +`max-load' + `-l' in Make. + +`max-procs' + `-P' in `xargs'. + +`mesg' + `-T' in `who'. + +`message' + `-T' in `who'. + +`minimal' + `-d' in `diff'. + +`mixed-uuencode' + `-M' in `shar'. + +`mode' + `-m' in `install', `mkdir', and `mkfifo'. + +`modification-time' + `-m' in `tar'. + +`multi-volume' + `-M' in `tar'. + +`name-prefix' + `-a' in Bison. + +`nesting-limit' + `-L' in `m4'. + +`net-headers' + `-a' in `shar'. + +`new-file' + `-W' in Make. + +`no-builtin-rules' + `-r' in Make. + +`no-character-count' + `-w' in `shar'. + +`no-check-existing' + `-x' in `shar'. + +`no-create' + `-c' in `touch'. + +`no-defines' + `-D' in `etags'. + +`no-dereference' + `-d' in `cp'. + +`no-keep-going' + `-S' in Make. + +`no-lines' + `-l' in Bison. + +`no-piping' + `-P' in `shar'. + +`no-prof' + `-e' in `gprof'. + +`no-sort' + `-p' in `nm'. + +`no-split' + Used in Makeinfo. + +`no-static' + `-a' in `gprof'. + +`no-time' + `-E' in `gprof'. + +`no-timestamp' + `-m' in `shar'. + +`no-validate' + Used in Makeinfo. + +`no-verbose' + `-v' in `shar'. + +`no-warn' + Used in various programs to inhibit warnings. + +`node' + `-n' in `info'. + +`nodename' + `-n' in `uname'. + +`nonmatching' + `-f' in `cpio'. + +`nstuff' + `-n' in `objdump'. + +`null' + `-0' in `xargs'. + +`number' + `-n' in `cat'. + +`number-nonblank' + `-b' in `cat'. + +`numeric-sort' + `-n' in `nm'. + +`numeric-uid-gid' + `-n' in `cpio' and `ls'. + +`nx' + Used in GDB. + +`old-archive' + `-o' in `tar'. + +`old-file' + `-o' in Make. + +`one-file-system' + `-l' in `tar', `cp', and `du'. + +`only-file' + `-o' in `ptx'. + +`only-prof' + `-f' in `gprof'. + +`only-time' + `-F' in `gprof'. + +`output' + In various programs, specify the output file name. + +`output-prefix' + `-o' in `shar'. + +`override' + `-o' in `rm'. + +`overwrite' + `-c' in `unshar'. + +`owner' + `-o' in `install'. + +`paginate' + `-l' in `diff'. + +`paragraph-indent' + Used in Makeinfo. + +`parents' + `-p' in `mkdir' and `rmdir'. + +`pass-all' + `-p' in `ul'. + +`pass-through' + `-p' in `cpio'. + +`port' + `-P' in `finger'. + +`portability' + `-c' in `cpio' and `tar'. + +`prefix-builtins' + `-P' in `m4'. + +`prefix' + `-f' in `csplit'. + +`preserve' + Used in `tar' and `cp'. + +`preserve-environment' + `-p' in `su'. + +`preserve-modification-time' + `-m' in `cpio'. + +`preserve-order' + `-s' in `tar'. + +`preserve-permissions' + `-p' in `tar'. + +`print' + `-l' in `diff'. + +`print-chars' + `-L' in `cmp'. + +`print-data-base' + `-p' in Make. + +`print-directory' + `-w' in Make. + +`print-file-name' + `-o' in `nm'. + +`print-symdefs' + `-s' in `nm'. + +`query-user' + `-X' in `shar'. + +`question' + `-q' in Make. + +`quiet' + Used in many programs to inhibit the usual output. *Note:* every + program accepting `--quiet' should accept `--silent' as a synonym. + +`quote-name' + `-Q' in `ls'. + +`rcs' + `-n' in `diff'. + +`read-full-blocks' + `-B' in `tar'. + +`readnow' + Used in GDB. + +`recon' + `-n' in Make. + +`record-number' + `-R' in `tar'. + +`recursive' + Used in `chgrp', `chown', `cp', `ls', `diff', and `rm'. + +`reference-limit' + Used in Makeinfo. + +`references' + `-r' in `ptx'. + +`regex' + `-r' in `tac'. + +`release' + `-r' in `uname'. + +`relocation' + `-r' in `objdump'. + +`rename' + `-r' in `cpio'. + +`replace' + `-i' in `xargs'. + +`report-identical-files' + `-s' in `diff'. + +`reset-access-time' + `-a' in `cpio'. + +`reverse' + `-r' in `ls' and `nm'. + +`reversed-ed' + `-f' in `diff'. + +`right-side-defs' + `-R' in `ptx'. + +`same-order' + `-s' in `tar'. + +`same-permissions' + `-p' in `tar'. + +`save' + `-g' in `stty'. + +`se' + Used in GDB. + +`sentence-regexp' + `-S' in `ptx'. + +`separate-dirs' + `-S' in `du'. + +`separator' + `-s' in `tac'. + +`sequence' + Used by `recode' to chose files or pipes for sequencing passes. + +`shell' + `-s' in `su'. + +`show-all' + `-A' in `cat'. + +`show-c-function' + `-p' in `diff'. + +`show-ends' + `-E' in `cat'. + +`show-function-line' + `-F' in `diff'. + +`show-tabs' + `-T' in `cat'. + +`silent' + Used in many programs to inhibit the usual output. *Note:* every + program accepting `--silent' should accept `--quiet' as a synonym. + +`size' + `-s' in `ls'. + +`sort' + Used in `ls'. + +`sparse' + `-S' in `tar'. + +`speed-large-files' + `-H' in `diff'. + +`split-at' + `-E' in `unshar'. + +`split-size-limit' + `-L' in `shar'. + +`squeeze-blank' + `-s' in `cat'. + +`starting-file' + Used in `tar' and `diff' to specify which file within a directory + to start processing with. + +`stdin-file-list' + `-S' in `shar'. + +`stop' + `-S' in Make. + +`strict' + `-s' in `recode'. + +`strip' + `-s' in `install'. + +`strip-all' + `-s' in `strip'. + +`strip-debug' + `-S' in `strip'. + +`submitter' + `-s' in `shar'. + +`suffix' + `-S' in `cp', `ln', `mv'. + +`suffix-format' + `-b' in `csplit'. + +`sum' + `-s' in `gprof'. + +`summarize' + `-s' in `du'. + +`symbolic' + `-s' in `ln'. + +`symbols' + Used in GDB and `objdump'. + +`synclines' + `-s' in `m4'. + +`sysname' + `-s' in `uname'. + +`tabs' + `-t' in `expand' and `unexpand'. + +`tabsize' + `-T' in `ls'. + +`terminal' + `-T' in `tput' and `ul'. + +`text' + `-a' in `diff'. + +`text-files' + `-T' in `shar'. + +`time' + Used in `ls' and `touch'. + +`to-stdout' + `-O' in `tar'. + +`total' + `-c' in `du'. + +`touch' + `-t' in Make, `ranlib', and `recode'. + +`trace' + `-t' in `m4'. + +`traditional' + `-t' in `hello'; `-G' in `m4' and `ptx'. + +`tty' + Used in GDB. + +`typedefs' + `-t' in `etags'. + +`typedefs-and-c++' + `-T' in `etags'. + +`typeset-mode' + `-t' in `ptx'. + +`uncompress' + `-z' in `tar'. + +`unconditional' + `-u' in `cpio'. + +`undefine' + `-U' in `m4'. + +`undefined-only' + `-u' in `nm'. + +`update' + `-u' in `cp', `etags', `mv', `tar'. + +`uuencode' + `-B' in `shar'. + +`vanilla-operation' + `-V' in `shar'. + +`verbose' + Print more information about progress. Many programs support this. + +`verify' + `-W' in `tar'. + +`version' + Print the version number. + +`version-control' + `-V' in `cp', `ln', `mv'. + +`vgrind' + `-v' in `etags'. + +`volume' + `-V' in `tar'. + +`what-if' + `-W' in Make. + +`whole-size-limit' + `-l' in `shar'. + +`width' + `-w' in `ls' and `ptx'. + +`word-regexp' + `-W' in `ptx'. + +`writable' + `-T' in `who'. + +`zeros' + `-z' in `gprof'. + + +File: standards.info, Node: Documentation, Next: Releases, Prev: User Interfaces, Up: Top + +Documenting Programs +******************** + + Please use Texinfo for documenting GNU programs. See the Texinfo +manual, either the hardcopy or the version in the GNU Emacs Info +subsystem (`C-h i'). See existing GNU Texinfo files (e.g., those under +the `man/' directory in the GNU Emacs distribution) for examples. + + The title page of the manual should state the version of the program +which the manual applies to. The Top node of the manual should also +contain this information. If the manual is changing more frequently +than or independent of the program, also state a version number for the +manual in both of these places. + + The manual should document all command-line arguments and all +commands. It should give examples of their use. But don't organize +the manual as a list of features. Instead, organize it by the concepts +a user will have before reaching that point in the manual. Address the +goals that a user will have in mind, and explain how to accomplish +them. Don't use Unix man pages as a model for how to write GNU +documentation; they are a bad example to follow. + + The manual should have a node named `PROGRAM Invocation' or +`Invoking PROGRAM', where PROGRAM stands for the name of the program +being described, as you would type it in the shell to run the program. +This node (together with its subnodes, if any) should describe the +program's command line arguments and how to run it (the sort of +information people would look in a man page for). Start with an +`@example' containing a template for all the options and arguments that +the program uses. + + Alternatively, put a menu item in some menu whose item name fits one +of the above patterns. This identifies the node which that item points +to as the node for this purpose, regardless of the node's actual name. + + There will be automatic features for specifying a program name and +quickly reading just this part of its manual. + + If one manual describes several programs, it should have such a node +for each program described. + + In addition to its manual, the package should have a file named +`NEWS' which contains a list of user-visible changes worth mentioning. +In each new release, add items to the front of the file and identify +the version they pertain to. Don't discard old items; leave them in +the file after the newer items. This way, a user upgrading from any +previous version can see what is new. + + If the `NEWS' file gets very long, move some of the older items into +a file named `ONEWS' and put a note at the end referring the user to +that file. + + Please do not use the term "pathname" that is used in Unix +documentation; use "file name" (two words) instead. We use the term +"path" only for search paths, which are lists of file names. + + It is ok to supply a man page for the program as well as a Texinfo +manual if you wish to. But keep in mind that supporting a man page +requires continual effort, each time the program is changed. Any time +you spend on the man page is time taken away from more useful things you +could contribute. + + Thus, even if a user volunteers to donate a man page, you may find +this gift costly to accept. Unless you have time on your hands, it may +be better to refuse the man page unless the same volunteer agrees to +take full responsibility for maintaining it--so that you can wash your +hands of it entirely. If the volunteer ceases to do the job, then +don't feel obliged to pick it up yourself; it may be better to withdraw +the man page until another volunteer offers to carry on with it. + + Alternatively, if you expect the discrepancies to be small enough +that the man page remains useful, put a prominent note near the +beginning of the man page explaining that you don't maintain it and +that the Texinfo manual is more authoritative, and describing how to +access the Texinfo documentation. + + +File: standards.info, Node: Releases, Prev: Documentation, Up: Top + +Making Releases +*************** + + Package the distribution of Foo version 69.96 in a gzipped tar file +named `foo-69.96.tar.gz'. It should unpack into a subdirectory named +`foo-69.96'. + + Building and installing the program should never modify any of the +files contained in the distribution. This means that all the files +that form part of the program in any way must be classified into "source +files" and "non-source files". Source files are written by humans and +never changed automatically; non-source files are produced from source +files by programs under the control of the Makefile. + + Naturally, all the source files must be in the distribution. It is +okay to include non-source files in the distribution, provided they are +up-to-date and machine-independent, so that building the distribution +normally will never modify them. We commonly include non-source files +produced by Bison, Lex, TeX, and Makeinfo; this helps avoid unnecessary +dependencies between our distributions, so that users can install +whichever packages they want to install. + + Non-source files that might actually be modified by building and +installing the program should *never* be included in the distribution. +So if you do distribute non-source files, always make sure they are up +to date when you make a new distribution. + + Make sure that the directory into which the distribution unpacks (as +well as any subdirectories) are all world-writable (octal mode 777). +This is so that old versions of `tar' which preserve the ownership and +permissions of the files from the tar archive will be able to extract +all the files even if the user is unprivileged. + + Make sure that all the files in the distribution are world-readable. + + Make sure that no file name in the distribution is more than 14 +characters long. Likewise, no file created by building the program +should have a name longer than 14 characters. The reason for this is +that some systems adhere to a foolish interpretation of the POSIX +standard, and refuse to open a longer name, rather than truncating as +they did in the past. + + Don't include any symbolic links in the distribution itself. If the +tar file contains symbolic links, then people cannot even unpack it on +systems that don't support symbolic links. Also, don't use multiple +names for one file in different directories, because certain file +systems cannot handle this and that prevents unpacking the distribution. + + Try to make sure that all the file names will be unique on MS-DOG. A +name on MS-DOG consists of up to 8 characters, optionally followed by a +period and up to three characters. MS-DOG will truncate extra +characters both before and after the period. Thus, `foobarhacker.c' +and `foobarhacker.o' are not ambiguous; they are truncated to +`foobarha.c' and `foobarha.o', which are distinct. + + Include in your distribution a copy of the `texinfo.tex' you used to +test print any `*.texinfo' files. + + Likewise, if your program uses small GNU software packages like +regex, getopt, obstack, or termcap, include them in the distribution +file. Leaving them out would make the distribution file a little +smaller at the expense of possible inconvenience to a user who doesn't +know what other files to get. + + |