Re: how to force the caller of configure to pass arguments

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

On Mon, Sep 12, 2005 at 08:10:28PM +0200, Matthias Langer wrote:
> I couldn't find anything very valuable about AC_ARG_WITH in the autoconf
> manual nor by googling ...

the documentation of this has improved significanly a few months ago,
thanks to Gregorio Guidi from Gentoo.

Attached please find a copy of that node.  I believe all inforamtion is
valid for 2.59, too.

Stepan Kasal
File: autoconf.info,  Node: External Software,  Next: Package Options,  Up: Site Configuration

12.1 Working With External Software
===================================

Some packages require, or can optionally use, other software packages
that are already installed.  The user can give `configure' command line
options to specify which such external software to use.  The options
have one of these forms:

     --with-PACKAGE[=ARG]
     --without-PACKAGE

   For example, `--with-gnu-ld' means work with the GNU linker instead
of some other linker.  `--with-x' means work with The X Window System.

   The user can give an argument by following the package name with `='
and the argument.  Giving an argument of `no' is for packages that are
used by default; it says to _not_ use the package.  An argument that is
neither `yes' nor `no' could include a name or number of a version of
the other package, to specify more precisely which other package this
program is supposed to work with.  If no argument is given, it defaults
to `yes'.  `--without-PACKAGE' is equivalent to `--with-PACKAGE=no'.

   `configure' scripts do not complain about `--with-PACKAGE' options
that they do not support.  This behavior permits configuring a source
tree containing multiple packages with a top-level `configure' script
when the packages support different options, without spurious error
messages about options that some of the packages support.  An
unfortunate side effect is that option spelling errors are not
diagnosed.  No better approach to this problem has been suggested so
far.

   For each external software package that may be used, `configure.ac'
should call `AC_ARG_WITH' to detect whether the `configure' user asked
to use it.  Whether each package is used or not by default, and which
arguments are valid, is up to you.

 -- Macro: AC_ARG_WITH (PACKAGE, HELP-STRING, [ACTION-IF-GIVEN],
          [ACTION-IF-NOT-GIVEN])
     If the user gave `configure' the option `--with-PACKAGE' or
     `--without-PACKAGE', run shell commands ACTION-IF-GIVEN.  If
     neither option was given, run shell commands ACTION-IF-NOT-GIVEN.
     The name PACKAGE indicates another software package that this
     program should work with.  It should consist only of alphanumeric
     characters and dashes.

     The option's argument is available to the shell commands
     ACTION-IF-GIVEN in the shell variable `withval', which is actually
     just the value of the shell variable `with_PACKAGE', with any `-'
     characters changed into `_'.  You may use that variable instead,
     if you wish.

     The argument HELP-STRING is a description of the option that looks
     like this:
            --with-readline         support fancy command line editing

     HELP-STRING may be more than one line long, if more detail is
     needed.  Just make sure the columns line up in `configure --help'.
     Avoid tabs in the help string.  You'll need to enclose the help
     string in `[' and `]' in order to produce the leading blanks.

     You should format your HELP-STRING with the macro `AS_HELP_STRING'
     (*note Pretty Help Strings::).

     The following example shows how to use the `AC_ARG_WITH' macro in
     a common situation.  You want to let the user decide whether to
     enable support for an external library (e.g., the readline
     library); if the user specified neither `--with-readline' nor
     `--without-readline', you want to enable support for readline only
     if the library is available on the system.

          AC_ARG_WITH([readline],
            [AS_HELP_STRING([--with-readline],
              [support fancy command line editing @<:@default=check@:>@])],
            [],
            [with_readline=check])

          LIBREADLINE=
          AS_IF([test "x$with_readline" != xno],
            [AC_CHECK_LIB([readline], [main],
              [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
               AC_DEFINE([HAVE_LIBREADLINE], [1],
                         [Define if you have libreadline])
              ],
              [if test "x$with_readline" != xcheck; then
                 AC_MSG_FAILURE(
                   [--with-readline was given, but test for readline failed])
               fi
              ], -lncurses)])

     The next example shows how to use `AC_ARG_WITH' to give the user
     the possibility to enable support for the readline library, in
     case it is still experimental and not well tested, and is
     therefore disabled by default.

          AC_ARG_WITH([readline],
            [AS_HELP_STRING([--with-readline],
              [enable experimental support for readline])],
            [],
            [with_readline=no])

          LIBREADLINE=
          AS_IF([test "x$with_readline" != xno],
            [AC_CHECK_LIB([readline], [main],
              [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
               AC_DEFINE([HAVE_LIBREADLINE], [1],
                         [Define if you have libreadline])
              ],
              [AC_MSG_FAILURE(
                 [--with-readline was given, but test for readline failed])],
              [-lncurses])])

     The last example shows how to use `AC_ARG_WITH' to give the user
     the possibility to disable support for the readline library, given
     that it is an important feature and that it should be enabled by
     default.

          AC_ARG_WITH([readline],
            [AS_HELP_STRING([--without-readline],
              [disable support for readline])],
            [],
            [with_readline=yes])

          LIBREADLINE=
          AS_IF([test "x$with_readline" != xno],
            [AC_CHECK_LIB([readline], [main],
              [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
               AC_DEFINE([HAVE_LIBREADLINE], [1],
                         [Define if you have libreadline])
              ],
              [AC_MSG_FAILURE(
                 [readline test failed (--without-readline to disable)])],
              [-lncurses])])

     These three examples can be easily adapted to the case where
     `AC_ARG_ENABLE' should be preferred to `AC_ARG_WITH' (see *Note
     Package Options::).

 -- Macro: AC_WITH (PACKAGE, ACTION-IF-GIVEN, [ACTION-IF-NOT-GIVEN])
     This is an obsolete version of `AC_ARG_WITH' that does not support
     providing a help string.

_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux