autoconf
[Top][All Lists]
Advanced

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

Re: help setting LDFLAGS and CFLAGS within AC_ARG_ENABLE


From: Stepan Kasal
Subject: Re: help setting LDFLAGS and CFLAGS within AC_ARG_ENABLE
Date: Fri, 19 Aug 2005 15:02:34 +0200
User-agent: Mutt/1.4.1i

Hello Patrick,
  I haven't read your code snippet thouroughly either, but I have a few
comments, too:

> > AC_ARG_ENABLE(
> >   [certification],
> >   AC_HELP_STRING(
> >     [--enable-certification],
> >     [Include code for interfacing to an information currency server. 
> >     (default)]), ,
> >   [enable_certification=yes])

If the feature is enabled by default, then help should mention the
--disable variant, which switches it off.

The whole AC_HELP_STRING(...) should be quoted.  Otherwise m4 expands it
while it collects parameters for AC_ARG_ENABLE, before it expands
AC_ARG_ENABLE.  Similarly, the second parameter to AC_CHECK_HEADERS
must be quoted.

Please note that the second parameter of AC_CHECK_HEADERS is called as
soon as one of the headers is called.  This is probably not what you
meant.

And if the user says explicitely --enable-certification, and the feature
cannot be enabled, configure should report an error and give up.

So the code should look like this:

AC_ARG_ENABLE(
   [certification],
   [AC_HELP_STRING(
     [--disble-certification],
     [Do not innclude code for interfacing to an information currency 
server.])])

if test no != "$enable_certification"; then
  certification=yes
  AC_CHECK_HEADERS(
    [openssl/evp.h libxml/tree.h libcsoap/soap-client.h xmlsec/xmlsec.h],
    [],
    [certification=no])
  AC_CHECK_LIB(ssl,xyz,[LIBS="-lssl $LIBS"], [certification=no])
  AC_CHECK_LIB(xml2,xmlfoo,[LIBS="-lxml2 $LIBS"], [certification=no])
  AC_CHECK_LIB(xmlsec1,xmlSecCryptoInit,[LIBS="-lxmlsec1 $LIBS"], 
[certification=no])
  AC_CHECK_LIB(csoap,sapon_init,[LIBS="-lcsoap $LIBS"], [certification=no])
  CFLAGS="$CFLAGS -g `xmlsec1-config --cflags`" || certification=no
  LDFLAGS="$LDFLAGS -g `xmlsec1-config --libs`" || certification=no

  if test $certification = yes; then
    AC_DEFINE(
      [CERTIFICATION_SUPPORT], [1],
      [Define if you want CVS to be able to create information currency from
      submitted code.])
  else if test "$enable_certification" != ""; then
    AC_MSG_ERROR([Prerequisities for interfacing to an information currency 
server
        are not available.])
  fi
fi
  
On Fri, Aug 19, 2005 at 10:02:37AM +0200, Ralf Wildenhues wrote:
> but I think Autoconf sanitizes the $enable_* variables so that it is not
> necessary to do so (`-' is changed to `_').

No, this is not true.  

If the user, calls ./configure --enable-certification=-n, then variable
enable_certification="-n".

The documentation say that there are platforms which would be confused by
        test "-n" != no
so Autoconf traditionally uses
        test x"$enable_certification" != xno

I'm not sure whether
        test no != -n
can couse problems on some platforms...

> I see that several examples in the Autoconf manual do this differently.
> Below is a proposed patch to fix this.

Yes, Ralph, the patch looks good.

Stepan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]