[Top][All Lists]
[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