autoconf.info: Obsolete Macros

Go forward to Autoconf 1
Go backward to autoupdate Invocation
Go up to Obsolete Constructs
Go to the top op autoconf

Obsolete Macros

Several macros are obsoleted in Autoconf, for various reasons (typically
they failed to quote properly, couldn't be extended for more recent
issues etc.).  They are still supported, but deprecated: their use
should be avoided.
   During the jump from Autoconf version 1 to version 2, most of the
macros were renamed to use a more uniform and descriptive naming scheme,
but their signature did not change.  *Note Macro Names::, for a
description of the new naming scheme.  Below, if there is just the
mapping from old names to new names for these macros, the reader is
invited to refer to the definition of the new macro for the signature
and the description.
 - Macro: AC_ALLOCA
     `AC_FUNC_ALLOCA'
 - Macro: AC_ARG_ARRAY
     removed because of limited usefulness
 - Macro: AC_C_CROSS
     This macro is obsolete; it does nothing.
 - Macro: AC_CANONICAL_SYSTEM
     Determine the system type and set output variables to the names of
     the canonical system types.  *Note Canonicalizing::, for details
     about the variables this macro sets.
     The user is encouraged to use either `AC_CANONICAL_BUILD', or
     `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
     needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
     macros.
 - Macro: AC_CHAR_UNSIGNED
     `AC_C_CHAR_UNSIGNED'
 - Macro: AC_CHECK_TYPE (TYPE, DEFAULT)
     Autoconf, up to 2.13, used to provide this version of
     `AC_CHECK_TYPE', deprecated because of its flaws.  Firstly,
     although it is a member of the `CHECK' clan, singular sub-family,
     it does more than just checking.  Secondly, missing types are not
     `typedef''d, they are `#define''d, which can lead to incompatible
     code in the case of pointer types.
     This use of `AC_CHECK_TYPE' is obsolete and discouraged; see *Note
     Generic Types::, for the description of the current macro.
     If the type TYPE is not defined, define it to be the C (or C++)
     builtin type DEFAULT, e.g., `short' or `unsigned'.
     This macro is equivalent to:

AC_CHECK_TYPE([TYPE],,
[AC_DEFINE_UNQUOTED([TYPE], [DEFAULT],
[Define to `DEFAULT' if
<sys/types.h> does not define.])])

     In order to keep backward compatibility, the two versions of
     `AC_CHECK_TYPE' are implemented, selected by a simple heuristics:
       1. If there are three or four arguments, the modern version is
          used.
       2. If the second argument appears to be a C or C++ type, then the
          obsolete version is used.  This happens if the argument is a
          C or C++ _builtin_ type or a C identifier ending in `_t',
          optionally followed by one of `[(* ' and then by a string of
          zero or more characters taken from the set `[]()* _a-zA-Z0-9'.
       3. If the second argument is spelled with the alphabet of valid
          C and C++ types, the user is warned and the modern version is
          used.
       4. Otherwise, the modern version is used.
     You are encouraged either to use a valid builtin type, or to use
     the equivalent modern code (see above), or better yet, to use
     `AC_CHECK_TYPES' together with
          #if !HAVE_LOFF_T
          typedef loff_t off_t;
          #endif
 - Macro: AC_CHECKING (FEATURE-DESCRIPTION)
     Same as `AC_MSG_NOTICE([checking FEATURE-DESCRIPTION...]'.
 - Macro: AC_COMPILE_CHECK (ECHO-TEXT, INCLUDES, FUNCTION-BODY,
          ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND])
     This is an obsolete version of `AC_TRY_COMPILE' itself replaced by
     `AC_COMPILE_IFELSE' (*note Running the Compiler::), with the
     addition that it prints `checking for ECHO-TEXT' to the standard
     output first, if ECHO-TEXT is non-empty.  Use `AC_MSG_CHECKING'
     and `AC_MSG_RESULT' instead to print messages (*note Printing
     Messages::).
 - Macro: AC_CONST
     `AC_C_CONST'
 - Macro: AC_CROSS_CHECK
     Same as `AC_C_CROSS', which is obsolete too, and does nothing
     `:-)'.
 - Macro: AC_CYGWIN
     Check for the Cygwin environment in which case the shell variable
     `CYGWIN' is set to `yes'.  Don't use this macro, the dignified
     means to check the nature of the host is using
     `AC_CANONICAL_HOST'.  As a matter of fact this macro is defined as:
          AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
          case $host_os in
            *cygwin* ) CYGWIN=yes;;
                   * ) CYGWIN=no;;
          esac
     Beware that the variable `CYGWIN' has a very special meaning when
     running CygWin32, and should not be changed.  That's yet another
     reason not to use this macro.
 - Macro: AC_DECL_SYS_SIGLIST
     Same as:
          AC_CHECK_DECLS([sys_siglist],,,
          [#include <signal.h>
          /* NetBSD declares sys_siglist in unistd.h.  */
          #if HAVE_UNISTD_H
          # include <unistd.h>
          #endif
          ])
 - Macro: AC_DECL_YYTEXT
     Does nothing, now integrated in `AC_PROG_LEX'.
 - Macro: AC_DIR_HEADER
     Like calling `AC_FUNC_CLOSEDIR_VOID' and`AC_HEADER_DIRENT', but
     defines a different set of C preprocessor macros to indicate which
     header file is found:
     Header         Old Symbol   New Symbol
     `dirent.h'     `DIRENT'     `HAVE_DIRENT_H'
     `sys/ndir.h'   `SYSNDIR'    `HAVE_SYS_NDIR_H'
     `sys/dir.h'    `SYSDIR'     `HAVE_SYS_DIR_H'
     `ndir.h'       `NDIR'       `HAVE_NDIR_H'
 - Macro: AC_DYNIX_SEQ
     If on DYNIX/ptx, add `-lseq' to output variable `LIBS'.  This
     macro used to be defined as
          AC_CHECK_LIB(seq, getmntent, LIBS="-lseq $LIBS")
     now it is just `AC_FUNC_GETMNTENT'.
 - Macro: AC_EXEEXT
     Defined the output variable `EXEEXT' based on the output of the
     compiler, which is now done automatically.  Typically set to empty
     string if Unix and `.exe' if Win32 or OS/2.
 - Macro: AC_EMXOS2
     Similar to `AC_CYGWIN' but checks for the EMX environment on OS/2
     and sets `EMXOS2'.
 - Macro: AC_ERROR
     `AC_MSG_ERROR'
 - Macro: AC_FIND_X
     `AC_PATH_X'
 - Macro: AC_FIND_XTRA
     `AC_PATH_XTRA'
 - Macro: AC_FUNC_CHECK
     `AC_CHECK_FUNC'
 - Macro: AC_FUNC_WAIT3
     If `wait3' is found and fills in the contents of its third argument
     (a `struct rusage *'), which HP-UX does not do, define
     `HAVE_WAIT3'.
     These days portable programs should use `waitpid', not `wait3', as
     `wait3' is being removed from the Open Group standards, and will
     not appear in the next revision of POSIX.
 - Macro: AC_GCC_TRADITIONAL
     `AC_PROG_GCC_TRADITIONAL'
 - Macro: AC_GETGROUPS_T
     `AC_TYPE_GETGROUPS'
 - Macro: AC_GETLOADAVG
     `AC_FUNC_GETLOADAVG'
 - Macro: AC_HAVE_FUNCS
     `AC_CHECK_FUNCS'
 - Macro: AC_HAVE_HEADERS
     `AC_CHECK_HEADERS'
 - Macro: AC_HAVE_LIBRARY (LIBRARY, [ACTION-IF-FOUND],
          [ACTION-IF-NOT-FOUND], [OTHER-LIBRARIES])
     This macro is equivalent to calling `AC_CHECK_LIB' with a FUNCTION
     argument of `main'.  In addition, LIBRARY can be written as any of
     `foo', `-lfoo', or `libfoo.a'.  In all of those cases, the
     compiler is passed `-lfoo'.  However, LIBRARY cannot be a shell
     variable; it must be a literal name.
 - Macro: AC_HAVE_POUNDBANG
     `AC_SYS_INTERPRETER' (different calling convention)
 - Macro: AC_HEADER_CHECK
     `AC_CHECK_HEADER'
 - Macro: AC_HEADER_EGREP
     `AC_EGREP_HEADER'
 - Macro: AC_HELP_STRING
     `AS_HELP_STRING'
 - Macro: AC_INIT (UNIQUE-FILE-IN-SOURCE-DIR)
     Formerly `AC_INIT' used to have a single argument, and was
     equivalent to:
          AC_INIT
          AC_CONFIG_SRCDIR(UNIQUE-FILE-IN-SOURCE-DIR)
 - Macro: AC_INLINE
     `AC_C_INLINE'
 - Macro: AC_INT_16_BITS
     If the C type `int' is 16 bits wide, define `INT_16_BITS'.  Use
     `AC_CHECK_SIZEOF(int)' instead.
 - Macro: AC_IRIX_SUN
     If on IRIX (Silicon Graphics UNIX), add `-lsun' to output `LIBS'.
     If you were using it to get `getmntent', use `AC_FUNC_GETMNTENT'
     instead.  If you used it for the NIS versions of the password and
     group functions, use `AC_CHECK_LIB(sun, getpwnam)'.  Up to
     Autoconf 2.13, it used to be
          AC_CHECK_LIB(sun, getmntent, LIBS="-lsun $LIBS")
     now it is defined as
          AC_FUNC_GETMNTENT
          AC_CHECK_LIB(sun, getpwnam)
 - Macro: AC_LANG_C
     Same as `AC_LANG(C)'.
 - Macro: AC_LANG_CPLUSPLUS
     Same as `AC_LANG(C++)'.
 - Macro: AC_LANG_FORTRAN77
     Same as `AC_LANG(Fortran 77)'.
 - Macro: AC_LANG_RESTORE
     Select the LANGUAGE that is saved on the top of the stack, as set
     by `AC_LANG_SAVE', remove it from the stack, and call
     `AC_LANG(LANGUAGE)'.
 - Macro: AC_LANG_SAVE
     Remember the current language (as set by `AC_LANG') on a stack.
     The current language does not change.  `AC_LANG_PUSH' is preferred.
 - Macro: AC_LINK_FILES (SOURCE..., DEST...)
     This is an obsolete version of `AC_CONFIG_LINKS'.  An updated
     version of:
          AC_LINK_FILES(config/$machine.h config/$obj_format.h,
                        host.h            object.h)

is:

          AC_CONFIG_LINKS(host.h:config/$machine.h
                          object.h:config/$obj_format.h)
 - Macro: AC_LN_S
     `AC_PROG_LN_S'
 - Macro: AC_LONG_64_BITS
     Define `LONG_64_BITS' if the C type `long int' is 64 bits wide.
     Use the generic macro `AC_CHECK_SIZEOF([long int])' instead.
 - Macro: AC_LONG_DOUBLE
     `AC_C_LONG_DOUBLE'
 - Macro: AC_LONG_FILE_NAMES
     `AC_SYS_LONG_FILE_NAMES'
 - Macro: AC_MAJOR_HEADER
     `AC_HEADER_MAJOR'
 - Macro: AC_MEMORY_H
     Used to define `NEED_MEMORY_H' if the `mem' functions were defined
     in `memory.h'.  Today it is equivalent to
     `AC_CHECK_HEADERS(memory.h)'.  Adjust your code to depend upon
     `HAVE_MEMORY_H', not `NEED_MEMORY_H'; see *Note Standard Symbols::.
 - Macro: AC_MINGW32
     Similar to `AC_CYGWIN' but checks for the MingW32 compiler
     environment and sets `MINGW32'.
 - Macro: AC_MINUS_C_MINUS_O
     `AC_PROG_CC_C_O'
 - Macro: AC_MMAP
     `AC_FUNC_MMAP'
 - Macro: AC_MODE_T
     `AC_TYPE_MODE_T'
 - Macro: AC_OBJEXT
     Defined the output variable `OBJEXT' based on the output of the
     compiler, after .c files have been excluded.  Typically set to `o'
     if Unix, `obj' if Win32.  Now the compiler checking macros handle
     this automatically.
 - Macro: AC_OBSOLETE (THIS-MACRO-NAME, [SUGGESTION])
     Make M4 print a message to the standard error output warning that
     THIS-MACRO-NAME is obsolete, and giving the file and line number
     where it was called.  THIS-MACRO-NAME should be the name of the
     macro that is calling `AC_OBSOLETE'.  If SUGGESTION is given, it
     is printed at the end of the warning message; for example, it can
     be a suggestion for what to use instead of THIS-MACRO-NAME.
     For instance
          AC_OBSOLETE([$0], [; use AC_CHECK_HEADERS(unistd.h) instead])dnl
     You are encouraged to use `AU_DEFUN' instead, since it gives better
     services to the user.
 - Macro: AC_OFF_T
     `AC_TYPE_OFF_T'
 - Macro: AC_OUTPUT ([FILE]..., [EXTRA-CMDS], [INIT-CMDS])
     The use of `AC_OUTPUT' with argument is deprecated.  This obsoleted
     interface is equivalent to:
          AC_CONFIG_FILES(FILE...)
          AC_CONFIG_COMMANDS([default],
                             EXTRA-CMDS, INIT-CMDS)
          AC_OUTPUT
 - Macro: AC_OUTPUT_COMMANDS (EXTRA-CMDS, [INIT-CMDS])
     Specify additional shell commands to run at the end of
     `config.status', and shell commands to initialize any variables
     from `configure'.  This macro may be called multiple times.  It is
     obsolete, replaced by `AC_CONFIG_COMMANDS'.
     Here is an unrealistic example:
          fubar=27
          AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.],
                             [fubar=$fubar])
          AC_OUTPUT_COMMANDS([echo this is another, extra, bit],
                             [echo init bit])
     Aside from the fact that `AC_CONFIG_COMMANDS' requires an
     additional key, an important difference is that
     `AC_OUTPUT_COMMANDS' is quoting its arguments twice, unlike
     `AC_CONFIG_COMMANDS'.  This means that `AC_CONFIG_COMMANDS' can
     safely be given macro calls as arguments:
          AC_CONFIG_COMMANDS(foo, [my_FOO()])
     Conversely, where one level of quoting was enough for literal
     strings with `AC_OUTPUT_COMMANDS', you need two with
     `AC_CONFIG_COMMANDS'.  The following lines are equivalent:
          AC_OUTPUT_COMMANDS([echo "Square brackets: []"])
          AC_CONFIG_COMMANDS([default], [[echo "Square brackets: []"]])
 - Macro: AC_PID_T
     `AC_TYPE_PID_T'
 - Macro: AC_PREFIX
     `AC_PREFIX_PROGRAM'
 - Macro: AC_PROG_CC_STDC
     This macro has been integrated into `AC_PROG_CC'.
 - Macro: AC_PROGRAMS_CHECK
     `AC_CHECK_PROGS'
 - Macro: AC_PROGRAMS_PATH
     `AC_PATH_PROGS'
 - Macro: AC_PROGRAM_CHECK
     `AC_CHECK_PROG'
 - Macro: AC_PROGRAM_EGREP
     `AC_EGREP_CPP'
 - Macro: AC_PROGRAM_PATH
     `AC_PATH_PROG'
 - Macro: AC_REMOTE_TAPE
     removed because of limited usefulness
 - Macro: AC_RESTARTABLE_SYSCALLS
     `AC_SYS_RESTARTABLE_SYSCALLS'
 - Macro: AC_RETSIGTYPE
     `AC_TYPE_SIGNAL'
 - Macro: AC_RSH
     removed because of limited usefulness
 - Macro: AC_SCO_INTL
     If on SCO UNIX, add `-lintl' to output variable `LIBS'.  This
     macro used to
          AC_CHECK_LIB(intl, strftime, LIBS="-lintl $LIBS")
     Now it just calls `AC_FUNC_STRFTIME' instead.
 - Macro: AC_SETVBUF_REVERSED
     `AC_FUNC_SETVBUF_REVERSED'
 - Macro: AC_SET_MAKE
     `AC_PROG_MAKE_SET'
 - Macro: AC_SIZEOF_TYPE
     `AC_CHECK_SIZEOF'
 - Macro: AC_SIZE_T
     `AC_TYPE_SIZE_T'
 - Macro: AC_STAT_MACROS_BROKEN
     `AC_HEADER_STAT'
 - Macro: AC_STDC_HEADERS
     `AC_HEADER_STDC'
 - Macro: AC_STRCOLL
     `AC_FUNC_STRCOLL'
 - Macro: AC_ST_BLKSIZE
     `AC_CHECK_MEMBERS'
 - Macro: AC_ST_BLOCKS
     `AC_STRUCT_ST_BLOCKS'
 - Macro: AC_ST_RDEV
     `AC_CHECK_MEMBERS'
 - Macro: AC_SYS_RESTARTABLE_SYSCALLS
     If the system automatically restarts a system call that is
     interrupted by a signal, define `HAVE_RESTARTABLE_SYSCALLS'.  This
     macro does not check if system calls are restarted in general-it
     tests whether a signal handler installed with `signal' (but not
     `sigaction') causes system calls to be restarted.  It does not
     test if system calls can be restarted when interrupted by signals
     that have no handler.
     These days portable programs should use `sigaction' with
     `SA_RESTART' if they want restartable system calls.  They should
     not rely on `HAVE_RESTARTABLE_SYSCALLS', since nowadays whether a
     system call is restartable is a dynamic issue, not a
     configuration-time issue.
 - Macro: AC_SYS_SIGLIST_DECLARED
     `AC_DECL_SYS_SIGLIST'
 - Macro: AC_TEST_CPP
     `AC_TRY_CPP', replaced by `AC_PREPROC_IFELSE'.
 - Macro: AC_TEST_PROGRAM
     `AC_TRY_RUN', replaced by `AC_RUN_IFELSE'.
 - Macro: AC_TIMEZONE
     `AC_STRUCT_TIMEZONE'
 - Macro: AC_TIME_WITH_SYS_TIME
     `AC_HEADER_TIME'
 - Macro: AC_TRY_COMPILE (INCLUDES, FUNCTION-BODY, [ACTION-IF-FOUND],
          [ACTION-IF-NOT-FOUND])
     Same as `AC_COMPILE_IFELSE([AC_LANG_SOURCE([[INCLUDES]],
     [[FUNCTION-BODY]])], [ACTION-IF-TRUE], [ACTION-IF-FALSE])' (*note
     Running the Compiler::).
     This macro double quotes both INCLUDES and FUNCTION-BODY.
     For C and C++, INCLUDES is any `#include' statements needed by the
     code in FUNCTION-BODY (INCLUDES will be ignored if the currently
     selected language is Fortran or Fortran 77).  The compiler and
     compilation flags are determined by the current language (*note
     Language Choice::).
 - Macro: AC_TRY_CPP (INPUT, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
     Same as `AC_PREPROC_IFELSE([AC_LANG_SOURCE([[INPUT]])],
     [ACTION-IF-TRUE], [ACTION-IF-FALSE])' (*note Running the
     Preprocessor::).
     This macro double quotes the INPUT.
 - Macro: AC_TRY_LINK (INCLUDES, FUNCTION-BODY, [ACTION-IF-FOUND],
          [ACTION-IF-NOT-FOUND])
     Same as `AC_LINK_IFELSE([AC_LANG_SOURCE([[INCLUDES]],
     [[FUNCTION-BODY]])], [ACTION-IF-TRUE], [ACTION-IF-FALSE])' (*note
     Running the Compiler::).
     This macro double quotes both INCLUDES and FUNCTION-BODY.
     Depending on the current language (*note Language Choice::),
     create a test program to see whether a function whose body
     consists of FUNCTION-BODY can be compiled and linked.  If the file
     compiles and links successfully, run shell commands
     ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.
     This macro double quotes both INCLUDES and FUNCTION-BODY.
     For C and C++, INCLUDES is any `#include' statements needed by the
     code in FUNCTION-BODY (INCLUDES will be ignored if the currently
     selected language is Fortran or Fortran 77).  The compiler and
     compilation flags are determined by the current language (*note
     Language Choice::), and in addition `LDFLAGS' and `LIBS' are used
     for linking.
 - Macro: AC_TRY_LINK_FUNC (FUNCTION, [ACTION-IF-FOUND],
          [ACTION-IF-NOT-FOUND])
     This macro is equivalent to
     `AC_LINK_IFELSE([AC_LANG_CALL([[INCLUDES]], [[FUNCTION-BODY]])],
     [ACTION-IF-TRUE], [ACTION-IF-FALSE])'.
 - Macro: AC_TRY_RUN (PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE],
          [ACTION-IF-CROSS-COMPILING])
     Same as `AC_RUN_IFELSE([AC_LANG_SOURCE([[PROGRAM]],
     [ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-CROSS-COMPILING])'
     (*note Run Time::).
 - Macro: AC_UID_T
     `AC_TYPE_UID_T'
 - Macro: AC_UNISTD_H
     Same as `AC_CHECK_HEADERS(unistd.h)'.
 - Macro: AC_USG
     Define `USG' if the BSD string functions are defined in
     `strings.h'.  You should no longer depend upon `USG', but on
     `HAVE_STRING_H'; see *Note Standard Symbols::.
 - Macro: AC_UTIME_NULL
     `AC_FUNC_UTIME_NULL'
 - Macro: AC_VALIDATE_CACHED_SYSTEM_TUPLE ([CMD])
     If the cache file is inconsistent with the current host, target and
     build system types, it used to execute CMD or print a default
     error message.  This is now handled by default.
 - Macro: AC_VERBOSE (RESULT-DESCRIPTION)
     `AC_MSG_RESULT'.
 - Macro: AC_VFORK
     `AC_FUNC_VFORK'
 - Macro: AC_VPRINTF
     `AC_FUNC_VPRINTF'
 - Macro: AC_WAIT3
     `AC_FUNC_WAIT3'
 - Macro: AC_WARN
     `AC_MSG_WARN'
 - Macro: AC_WORDS_BIGENDIAN
     `AC_C_BIGENDIAN'
 - Macro: AC_XENIX_DIR
     This macro used to add `-lx' to output variable `LIBS' if on
     Xenix.  Also, if `dirent.h' is being checked for, added `-ldir' to
     `LIBS'.  Now it is merely an alias of `AC_HEADER_DIRENT' instead,
     plus some code to detect whether running XENIX on which you should
     not depend:
          AC_MSG_CHECKING([for Xenix])
          AC_EGREP_CPP(yes,
          [#if defined M_XENIX && !defined M_UNIX
            yes
          #endif],
                       [AC_MSG_RESULT([yes]); XENIX=yes],
                       [AC_MSG_RESULT([no]); XENIX=])
 - Macro: AC_YYTEXT_POINTER
     `AC_DECL_YYTEXT'