autoconf
[Top][All Lists]
Advanced

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

Re: Configure help


From: Ralf Wildenhues
Subject: Re: Configure help
Date: Thu, 7 Jul 2005 17:32:07 +0200
User-agent: Mutt/1.4.1i

Hi Bob,

* Bob Rossi wrote on Thu, Jul 07, 2005 at 04:34:25PM CEST:
> > Something like a
> >   --with-readline[=included]
> > might be useful, although I don't know of an established convention for
> > the optional `=included' part.
> > 
> > > Also, AC_CHECK_LIB can not even look for libreadline.a until after the
> > > "make" is done. Is there a way to ./configure && make && make install
> > > the readline package, and then continue with CGDB's configure?
> > 
> > Well, if you use your prepackaged readline, there is no need to check
> > for either the headers nor the library -- you know they _will_ be there.
> > (Of course, in that case your configure.ac should set appropriate flags
> > for preprocessor and linker/libs.)  
> 
> Thanks for the general philosophy on how to accomplish this task, it's
> much needed. I have several questions though,
> 
> I understand how to set the libs flag,
>    LIBS="$LIBS -lreadline -lhistory"

Nope.  Most likely, you want
   LIBS="-lreadline -lhistory $LIBS"
instead.  New libraries go in front, as they might depend on libraries
already put in LIBS.

> however, I can't simply set the -I and -L flags because the path is
> relative to the current build directory, right?

Oh, well.  Not a trivial question here.
If readline libs are built by use of libtool, you should put
AC_PROG_LIBTOOL in your toplevel configure and put
  program_LDADD = relative/path/to/subpackage/libNAME.la
in the corresponding Makefile.am.  (In order to allow using installed
readline, you can make use of Automake conditionals in Makefile.am --
see Automake documentation about this.)

If not: I actually don't know how to portably do this so that rpath
issues are _really_ solved.  But see below.

> Is there a way to get the absolute path to the $srcdir/readline-5.0 in
> the configure.in, so that I can simply say
> -I$ABSOLUTE_srcdir/readline-5.0 -L$ABSOLUTE_srcdir/readline-5.0?
> 
> or do I have to have each Makefile.am specify the relatvie path back to
> $srcdir/readline-5.0, and only if the internal readline is chosen?

I don't think you'll want to use absolute paths if you can avoid it, for
rpath encoding reasons.  But you can use them like this (conveniently
abstracted out into separate Makefile variables):

  -I$(top_srcdir)/readline-5.0/include
  -L$(top_builddir)/readline-5.0/lib

Please don't destroy the possibility of having a build tree separate
from the source tree.  Thus, if readline has headers which are created
only during the build, then you should also add
  -I$(top_builddir)/readline-5.0/include
to the preprocessor search path.

> BTW, what's the appropriate way to set the CFLAGS, CPPFLAGS and LDFLAGS?
> This is what I have been doing,
> 
> LDFLAGS="-L$opt_with_readline_prefix/lib $LDFLAGS"
> CFLAGS="-I$opt_with_readline_prefix/include
> -I$opt_with_readline_prefix/include/readline $CFLAGS"
> CPPFLAGS="-I$opt_with_readline_prefix/include
> -I$opt_with_readline_prefix/include/readline $CPPFLAGS"

Don't set any of these at all -- they are supposed to be reserved for
the user.  If you use Automake, read
  info Automake 'Flag Variables Ordering'

(also be sure to have a look at
  info Autoconf 'Preset Output Variables'

anyway) for the supposed names you should use.  (Note there is a
difference here for the flags you might have to set for some of the
Autoconf tests and which are supposed for users to be set in the
resulting Makefile -- that's what snippets like
  save_CPPFLAGS=$CPPFLAGS
  CPPFLAGS="$CPPFLAGS -I..."
  # ... test
  CPPFLAGS=$save_CPPFLAGS

in the configure script are for.)  And preprocessor flags should go
in *CPPFLAGS only, not *CFLAGS.

I believe *CPPFLAGS and *LDFLAGS should be appended to.

Regards,
Ralf




reply via email to

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