bug-automake
[Top][All Lists]
Advanced

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

Re: Funny behavior from autoconf


From: Ralf Wildenhues
Subject: Re: Funny behavior from autoconf
Date: Tue, 25 Oct 2005 09:12:13 +0200
User-agent: Mutt/1.5.11

Hi Brian,

* Brian Lloyd wrote on Tue, Oct 25, 2005 at 07:34:14AM CEST:
> On Mon, 2005-10-24 at 09:53 +0200, Ralf Wildenhues wrote:
> > * Brian Lloyd wrote on Mon, Oct 24, 2005 at 04:44:32AM CEST:
> > 
> > > BOOSTSOURCES += \
> > >   "boost/1_33/src/list.cpp" \
> > >   "boost/1_33/src/module.cpp" \
> > >   "boost/1_33/src/tuple.cpp" 
> > > endif BOOST1_33
> >
> > Does it work if you remove all the double quotes from the source lists?
> > 
> > This is an Automake issue.  It's probably unsupported to have files
> > quoted; I'm not sure though, whether it should be supported or the
> > documentation updated to let you know about this.
> 
> Taking out the " does fix the problem.  However, they should be valid,
> shouldn't they?

I believe not.  The Cc: to bug-automake is to solicit an authoritative
answer.  :)

> Unnecessary in this case (no spaces in the names), but still valid.

Avoid file names with spaces, if at all possible.

> However, that leaves a slightly different problem.  The Makefile.in then
> can't be created because their are multiple files that generate the same
> object file.  (boost/src/1_33/list.cpp and boost/src/1_28/list.cpp both
> generate list.o)  I tried to work around the problem by using prog_LDADD
> instead of prog_SOURCES, and create an empty rule (so the default rule
> would be used) that makes .cpp to .o created in the same directory as
> the .cpp (boost/src/1_33/list.o:boost/src/1_33/list.cpp),

Hmm.  No, I think this would not work.  See below for two other
solutions that should work.

> but this fails
> because the dependencies file does not exist.  Is there an easy way to
> add the dependency files for these objects into the .deps folder under
> the top directory.  I am using (trying, at least) to use non-recursive
> make to build a multi-directory program.  The only problem I have is
> that we need to support multiple versions of a "VENDOR" supplied
> library, and so that library causes us to have some non-unique file
> names.

OK.  One possibility is to use the Automake option `subdir-objects'
which creates boost/src/1_33/*list.${OBJEXT} from
boost/src/1_33/list.cpp (the `*' indicates that there might happen some
more name mangling here).  This option is recommended for everybody that
uses non-recursive `make' with Automake.  Be sure to read the specific
documentation about it (and set either package-wide in configure.ac:
AM_INIT_AUTOMAKE or Makefile.am-wide in AUTOMAKE_OPTIONS).

The other possibility is to use per-target flags.  Since I believe the
first one will be best for you, I won't go into detail here -- again the
documentation and previous threads here contain the gory details.


> The following error is what I get from running make with my latest
> changes.
> 
> make[2]: Entering directory
> `/home/lloydbr/src/games/vegastrike/vegastrike'
*snip*
> boost/1_31/src/list.cpp:143: fatal error: opening dependency
> file .deps/boost/1_31/src/list.Tpo: No such file or directory
> compilation terminated.
> make[2]: *** [boost/1_31/src/list.o] Error 1

Oh, one thing you /might/ need to do after changing these issues:
wipe your build tree and configure again.  Automake cannot track
what needs updating after you changed this.

> It looks like multiple directory support in automake still has some
> issues.

Nono, these aren't (confirmed) issues (yet). :)

> Since I am not currently subscribed to address@hidden, please CC
> me on any replies to this message.

Certainly.

Cheers,
Ralf




reply via email to

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