John Calcote skrev:
David Sveningsson wrote:Hi, I am having some problems with conditional sources. This is what I have in Makefile.am:lib_LTLIBRARIES = libfoo.la libfoo_la_SOURCES = foo.cpp if WANT_BAR libfoo_la_SOURCES += a.cpp else libfoo_la_SOURCES += b.cpp endifAM_CPPFLAGS = -I${top_srcdir}/include libfoo_la_LDFLAGS = -version-info 0:0:0I have been reading both autoconf and automake manuals and as far as I can see the above should work. However the files (a.cpp or b.cpp) is always added at the bottom of the generated Makefile and are therefore not used in the compilation. No matter what I try I cannot get even the above code to generate a correct makefile but obviously I am doing something wrong.David, Make is a two-pass utility. The first pass completely assimilates all macro data specified in the Makefile. THEN, the second pass generates the rule dependency tree. AFTER the second pass, the tree is evaluated to see what needs to be rebuilt. Thus, it doesn't matter where macros are assigned, as value assignments to macros are managed in the first stage, before any macros are ever expanded when the dependency tree is evaluated. Yes, as you've noticed Makefile.am conditional (and non-conditional) macro assignments are added to the bottom of the generated Makefile.in (and consequently to the bottom of the Makefile itself), but the point is that it doesn't matter where they're added. The value of an expanded macro always takes into account the final assignment in the Makefile. Regards, John
Thanks for your reply.While that would make sense but my problem originates from the fact that the conditional files isn't compiled.
After some hacking into the generated Makefile I noticed that the files wouldn't be compiled even if I inserted them into libfoo_la_SOURCES manually. However, I found that I had to inserting them into am_libfoo_la_OBJECTS with the lo extension to make it work. Shouldn't automake manage this?
I am just learning autotools so it might be a very simple mistake. -- //*David Sveningsson [eXt]* Freelance coder | Game Development Student http://sidvind.com Thou shalt make thy program's purpose and structure clear to thy fellow man by using the One True Brace Style, even if thou likest it not, for thy creativity is better used in solving problems than in creating beautiful new impediments to understanding.
signature.asc
Description: OpenPGP digital signature